From 155ae65a4e5c32fd8116593005a8ccfaf947d114 Mon Sep 17 00:00:00 2001
From: Sam Hocevar <sam@hocevar.net>
Date: Sat, 22 Feb 2020 09:28:08 +0100
Subject: [PATCH] Start working on the header-only part of the framework.

This implies creating a trimmed down branch that contains almost
nothing. It will then be usable by projects that do not need the
complex build system, and by the engine itself as a submodule from
the same repository.
---
 .gitignore                                    |  147 -
 .gitmodules                                   |   23 +-
 .travis.yml                                   |   35 -
 .vscode/c_cpp_properties.json                 |   28 -
 .ycm_extra_conf.py                            |   37 -
 Makefile.am                                   |   16 -
 README.md                                     |   11 +-
 TODO                                          |   38 -
 TODO.md                                       |   71 +
 binaries/Makefile.am                          |    3 -
 bootstrap                                     |  136 -
 build.config                                  |   15 -
 build/Makefile.am                             |   21 -
 build/android/AndroidManifest.xml             |   22 -
 build/android/LolActivity.java                |   68 -
 build/android/icon.png                        |  Bin 1215 -> 0 bytes
 build/android/strings.xml                     |    4 -
 build/autotools/common.am                     |  124 -
 build/autotools/m4/lol-conf.m4                |  287 --
 build/autotools/m4/lol-ffmpeg.m4              |   63 -
 build/autotools/m4/lol-gl.m4                  |  156 --
 build/autotools/m4/lol-misc.m4                |   59 -
 build/autotools/m4/lol-sdl.m4                 |  126 -
 build/autotools/m4/lol-subproject.m4          |   55 -
 build/bitten/config-trunk-private.xml         |   22 -
 build/bitten/config-trunk-public.xml          |   22 -
 build/build-android                           |   10 -
 build/build-html                              |   10 -
 build/build-js                                |   10 -
 build/build-linux                             |   11 -
 build/build-mingw                             |   10 -
 build/build-mingw64                           |   10 -
 build/build-raspi                             |   10 -
 build/check-source.sh                         |  209 --
 build/lol-build                               |  344 ---
 build/msbuild/lol-bullet.props                |   10 -
 build/msbuild/lol-core.props                  |   10 -
 build/msbuild/lol-lua.props                   |   10 -
 build/msbuild/lol.config.props                |   61 -
 build/msbuild/lol.props                       |   20 -
 build/msbuild/lol.rules.props                 |  123 -
 build/msbuild/lol.vars.props                  |  176 --
 build/msbuild/lolfx.props                     |   37 -
 build/msbuild/lolfx.targets                   |   80 -
 build/msbuild/lolfx.xml                       |   79 -
 build/run-bitten.sh                           |  240 --
 configure.ac                                  |  280 --
 doc/Makefile.am                               |   68 -
 doc/doxygen.cfg.in                            | 2469 -----------------
 doc/doxygen.css                               | 1180 --------
 doc/footer.html                               |    2 -
 doc/grammar/README                            |    1 -
 doc/grammar/easymesh-parser.y                 |  328 ---
 doc/grammar/easymesh-scanner.l                |  208 --
 doc/grammar/lolfx-parser.y                    | 1311 ---------
 doc/grammar/lolfx-scanner.l                   |  799 ------
 doc/header.html                               |    8 -
 doc/lolengine.1                               |   10 -
 doc/lolengine.dox                             |   18 -
 doc/samples/Makefile.am                       |   48 -
 doc/samples/benchmark/half.cpp                |  127 -
 doc/samples/benchmark/real.cpp                |   82 -
 doc/samples/benchmark/vector.cpp              |   91 -
 doc/samples/benchsuite.cpp                    |   57 -
 doc/samples/benchsuite.vcxproj                |   69 -
 doc/samples/bluenoise.cpp                     |   39 -
 doc/samples/btphystest.cpp                    |  754 -----
 doc/samples/btphystest.h                      |  115 -
 doc/samples/btphystest.vcxproj                |   88 -
 doc/samples/btphystest.vcxproj.filters        |   54 -
 doc/samples/data/CatsSheet.png                |  Bin 930330 -> 0 bytes
 doc/samples/data/CatsSheet.xcf                |  Bin 950143 -> 0 bytes
 doc/samples/data/mesh-buffer.txt              |  110 -
 doc/samples/data/meshviewer.easymesh.lua      |   17 -
 doc/samples/data/meshviewer.init.lua          |   19 -
 doc/samples/data/test-texture.png             |  Bin 2570 -> 0 bytes
 doc/samples/front_camera_sprite.lolfx         |  115 -
 doc/samples/math/Makefile.am                  |   15 -
 doc/samples/math/pi.cpp                       |   55 -
 doc/samples/math/poly.cpp                     |   31 -
 doc/samples/physicobject.h                    |  446 ---
 .../physics/bulletcharactercontroller.cpp     |  241 --
 .../physics/bulletcharactercontroller.h       |  285 --
 .../physics/easycharactercontroller.cpp       |  150 -
 doc/samples/physics/easycharactercontroller.h |  108 -
 doc/samples/physics/easyconstraint.cpp        |   43 -
 doc/samples/physics/easyconstraint.h          |  184 --
 doc/samples/physics/easyphysics.cpp           |  430 ---
 doc/samples/physics/easyphysics.h             |  159 --
 doc/samples/physics/lolbtphysicsintegration.h |   47 -
 doc/samples/physics/lolphysics.h              |  425 ---
 doc/samples/sandbox/Makefile.am               |   11 -
 doc/samples/sandbox/sample.cpp                |   44 -
 doc/samples/simplex.cpp                       |  147 -
 doc/shitlolbotsays.txt                        |   46 -
 doc/tutorial/01_triangle.cpp                  |   88 -
 doc/tutorial/01_triangle.lolfx                |   35 -
 doc/tutorial/01_triangle.vcxproj              |   69 -
 doc/tutorial/02_cube.cpp                      |  190 --
 doc/tutorial/02_cube.lolfx                    |   32 -
 doc/tutorial/02_cube.vcxproj                  |   69 -
 doc/tutorial/03_noise.cpp                     |   95 -
 doc/tutorial/03_noise.lolfx                   |  147 -
 doc/tutorial/03_noise.vcxproj                 |   69 -
 doc/tutorial/04_texture.cpp                   |  128 -
 doc/tutorial/04_texture.lolfx                 |   81 -
 doc/tutorial/04_texture.vcxproj               |   69 -
 doc/tutorial/05_easymesh.cpp                  |  176 --
 doc/tutorial/05_easymesh.lua                  |   81 -
 doc/tutorial/05_easymesh.vcxproj              |   72 -
 doc/tutorial/06_sprite.cpp                    |  109 -
 doc/tutorial/06_sprite.png                    |  Bin 155434 -> 0 bytes
 doc/tutorial/06_sprite.vcxproj                |   66 -
 doc/tutorial/07_input.cpp                     |  217 --
 doc/tutorial/07_input.lolfx                   |   32 -
 doc/tutorial/07_input.vcxproj                 |   69 -
 doc/tutorial/08_fbo.cpp                       |  146 -
 doc/tutorial/08_fbo.lolfx                     |   52 -
 doc/tutorial/08_fbo.vcxproj                   |   69 -
 doc/tutorial/09_sound.cpp                     |  116 -
 doc/tutorial/09_sound.vcxproj                 |   66 -
 doc/tutorial/11_fractal.cpp                   |  576 ----
 doc/tutorial/11_fractal.lolfx                 |  129 -
 doc/tutorial/11_fractal.vcxproj               |   69 -
 doc/tutorial/12_distance.lolfx                |   52 -
 doc/tutorial/12_texture_to_screen.lolfx       |   44 -
 doc/tutorial/12_voronoi.cpp                   |  393 ---
 doc/tutorial/12_voronoi.lolfx                 |   66 -
 doc/tutorial/12_voronoi.vcxproj               |   73 -
 doc/tutorial/12_voronoi_distance.lolfx        |   52 -
 doc/tutorial/12_voronoi_setup.lolfx           |   43 -
 doc/tutorial/13_shader_builder.cpp            |  135 -
 doc/tutorial/13_shader_builder.vcxproj        |   66 -
 doc/tutorial/14_lua.cpp                       |  236 --
 doc/tutorial/14_lua.lua                       |   16 -
 doc/tutorial/14_lua.vcxproj                   |   72 -
 doc/tutorial/15_gui.cpp                       |  108 -
 doc/tutorial/15_gui.vcxproj                   |   66 -
 doc/tutorial/16_movie.cpp                     |   62 -
 doc/tutorial/16_movie.vcxproj                 |   66 -
 doc/tutorial/17_net.cpp                       |   63 -
 doc/tutorial/17_net.vcxproj                   |   66 -
 doc/tutorial/Makefile.am                      |   87 -
 external                                      |    1 -
 .../lol}/3rdparty/mingw-std-threads           |    0
 {src => include/lol}/3rdparty/pegtl           |    0
 {src => legacy}/lol/algorithm/aabb_tree.h     |    0
 {src => legacy}/lol/algorithm/all.h           |    0
 {src => legacy}/lol/base/all.h                |    0
 {src => legacy}/lol/base/assert.h             |    0
 {src => legacy}/lol/base/avl_tree.h           |    0
 {src => legacy}/lol/base/features.h           |    0
 {src => legacy}/lol/base/map.h                |    0
 {src => legacy}/lol/base/string.h             |    0
 {src => legacy}/lol/base/types.h              |    0
 {src => legacy}/lol/image/all.h               |    0
 {src => legacy}/lol/image/color.h             |    0
 {src => legacy}/lol/image/pixel.h             |    0
 {src => legacy}/lol/math/all.h                |    0
 {src => legacy}/lol/math/arraynd.h            |    0
 {src => legacy}/lol/math/bigint.h             |    0
 {src => legacy}/lol/math/constants.h          |    0
 {src => legacy}/lol/math/functions.h          |    0
 {src => legacy}/lol/math/geometry.h           |    0
 {src => legacy}/lol/math/half.h               |    0
 {src => legacy}/lol/math/interp.h             |    0
 {src => legacy}/lol/math/matrix.h             |    0
 {src => legacy}/lol/math/noise/gradient.h     |    0
 {src => legacy}/lol/math/noise/perlin.h       |    0
 {src => legacy}/lol/math/noise/simplex.h      |    0
 {src => legacy}/lol/math/ops.h                |    0
 {src => legacy}/lol/math/polynomial.h         |    0
 {src => legacy}/lol/math/rand.h               |    0
 {src => legacy}/lol/math/real.h               |    0
 {src => legacy}/lol/math/transform.h          |    0
 {src => legacy}/lol/math/vector.h             |    0
 {src => legacy}/lol/net/all.h                 |    0
 {src => legacy}/lol/sys/all.h                 |    0
 {src => legacy}/lol/sys/getopt.h              |    0
 {src => legacy}/lol/sys/thread.h              |    0
 {src => legacy}/lol/sys/timer.h               |    0
 {tools => legacy}/lolunit/lolunit.h           |    0
 {src => legacy}/math/geometry.cpp             |    0
 {src => legacy}/math/half.cpp                 |    0
 {src => legacy}/math/matrix.cpp               |    0
 {src => legacy}/math/real.cpp                 |    0
 {src => legacy}/math/transform.cpp            |    0
 {src => legacy}/math/vector.cpp               |    0
 {src => legacy}/numeric.h                     |    0
 {src => legacy}/sys/getopt.cpp                |    0
 lol.sln                                       |  490 ----
 src/3rdparty/Makefile.am                      |   26 -
 src/3rdparty/bullet3                          |    1 -
 src/3rdparty/cpp-httplib                      |    1 -
 src/3rdparty/imgui                            |    1 -
 src/3rdparty/lol-bullet.vcxproj               |  755 -----
 src/3rdparty/lol-bullet.vcxproj.filters       | 1119 --------
 src/3rdparty/lol-cpp-httplib.am               |    5 -
 src/3rdparty/lol-imgui.am                     |   16 -
 src/3rdparty/lol-lua.am                       |   43 -
 src/3rdparty/lol-lua.vcxproj                  |  142 -
 src/3rdparty/lol-lua.vcxproj.filters          |  192 --
 src/3rdparty/lol-mingw-std-threads.am         |   10 -
 src/3rdparty/lol-pegtl.am                     |  169 --
 src/3rdparty/lua                              |    1 -
 src/Makefile.am                               |  161 --
 src/application/android-app.cpp               |  405 ---
 src/application/android-app.h                 |   39 -
 src/application/application.cpp               |  211 --
 src/application/application.h                 |   67 -
 src/application/egl-app.cpp                   |  290 --
 src/application/egl-app.h                     |   39 -
 src/application/sdl-app.cpp                   |  194 --
 src/application/sdl-app.h                     |   73 -
 src/audio/audio.cpp                           |  246 --
 src/audio/sample.cpp                          |  147 -
 src/base/assert.cpp                           |   92 -
 src/base/features.cpp                         |   30 -
 src/base/log.cpp                              |  131 -
 src/base/string.cpp                           |  123 -
 src/camera.cpp                                |  246 --
 src/camera.h                                  |  110 -
 src/commandstack.h                            |   88 -
 src/data/Makefile.am                          |    5 -
 src/data/font/Makefile.am                     |   15 -
 src/data/font/ascii.png                       |  Bin 4836 -> 0 bytes
 src/debug/fps.cpp                             |  111 -
 src/debug/fps.h                               |   41 -
 src/debug/lines.cpp                           |  402 ---
 src/debug/record.cpp                          |  107 -
 src/debug/record.h                            |   42 -
 src/debug/stats.cpp                           |   65 -
 src/debug/stats.h                             |   41 -
 src/easymesh/csgbsp.cpp                       |  545 ----
 src/easymesh/csgbsp.h                         |   70 -
 src/easymesh/easymesh.cpp                     |   62 -
 src/easymesh/easymesh.h                       |  440 ---
 src/easymesh/easymeshbuild.cpp                |  208 --
 src/easymesh/easymeshbuild.h                  |  556 ----
 src/easymesh/easymeshcsg.cpp                  |  219 --
 src/easymesh/easymeshcursor.cpp               |  178 --
 src/easymesh/easymeshinternal.cpp             |  501 ----
 src/easymesh/easymeshlua.cpp                  |  316 ---
 src/easymesh/easymeshlua.h                    |  156 --
 src/easymesh/easymeshprimitive.cpp            | 1027 -------
 src/easymesh/easymeshrender.cpp               |  458 ---
 src/easymesh/easymeshrender.h                 |  142 -
 src/easymesh/easymeshtransform.cpp            |  440 ---
 src/easymesh/shiny.lolfx                      |  135 -
 src/easymesh/shiny_SK.lolfx                   |  159 --
 src/easymesh/shinydebugUV.lolfx               |   93 -
 src/easymesh/shinydebuglighting.lolfx         |   93 -
 src/easymesh/shinydebugnormal.lolfx           |   55 -
 src/easymesh/shinydebugwireframe.lolfx        |   51 -
 src/easymesh/shinyflat.lolfx                  |  137 -
 src/emitter.cpp                               |   95 -
 src/emitter.h                                 |   45 -
 src/engine/entity.cpp                         |   70 -
 src/engine/entity.h                           |  124 -
 src/engine/tickable.cpp                       |   49 -
 src/engine/ticker.cpp                         |  645 -----
 src/engine/ticker.h                           |   65 -
 src/engine/world.cpp                          |   45 -
 src/engine/world.h                            |   31 -
 src/engine/worldentity.cpp                    |   53 -
 src/engine/worldentity.h                      |   48 -
 src/font.cpp                                  |  124 -
 src/font.h                                    |   51 -
 src/gpu/blit.lolfx                            |   33 -
 src/gpu/debug.cpp                             |  121 -
 src/gpu/default-material.lolfx                |    2 -
 src/gpu/empty-material.lolfx                  |    2 -
 src/gpu/framebuffer.cpp                       |  332 ---
 src/gpu/indexbuffer.cpp                       |  108 -
 src/gpu/line.lolfx                            |   37 -
 src/gpu/lolfx.cpp                             |   40 -
 src/gpu/palette.lolfx                         |   43 -
 src/gpu/postprocess.lolfx                     |   49 -
 src/gpu/rendercontext.cpp                     |  291 --
 src/gpu/renderer.cpp                          |  570 ----
 src/gpu/shader.cpp                            | 1056 -------
 src/gpu/test-material.lolfx                   |   94 -
 src/gpu/texture.cpp                           |  182 --
 src/gpu/tile.lolfx                            |   41 -
 src/gpu/vertexbuffer.cpp                      |  403 ---
 src/gradient.cpp                              |  118 -
 src/gradient.h                                |   46 -
 src/gradient.lolfx                            |   80 -
 src/image/codec/android-image.cpp             |  157 --
 src/image/codec/dummy-image.cpp               |   71 -
 src/image/codec/gdiplus-image.cpp             |  231 --
 src/image/codec/imlib2-image.cpp              |  134 -
 src/image/codec/ios-image.cpp                 |  106 -
 src/image/codec/oric-image.cpp                |  538 ----
 src/image/codec/sdl-image.cpp                 |  130 -
 src/image/codec/zed-image.cpp                 |  306 --
 src/image/codec/zed-palette-image.cpp         |   94 -
 src/image/color/cie1931.cpp                   |  595 ----
 src/image/color/color.cpp                     |  140 -
 src/image/combine.cpp                         |  153 -
 src/image/crop.cpp                            |   68 -
 src/image/dither/dbs.cpp                      |  186 --
 src/image/dither/ediff.cpp                    |   76 -
 src/image/dither/ordered.cpp                  |   72 -
 src/image/dither/ostromoukhov.cpp             |  114 -
 src/image/dither/random.cpp                   |   40 -
 src/image/filter/colors.cpp                   |  189 --
 src/image/filter/convolution.cpp              |  299 --
 src/image/filter/dilate.cpp                   |  142 -
 src/image/filter/median.cpp                   |  239 --
 src/image/filter/yuv.cpp                      |   49 -
 src/image/image-private.h                     |   74 -
 src/image/image.cpp                           |  209 --
 src/image/kernel.cpp                          |  350 ---
 src/image/movie.cpp                           |  229 --
 src/image/noise.cpp                           |   39 -
 src/image/pixel.cpp                           |  354 ---
 src/image/resample.cpp                        |  210 --
 src/image/resource-private.h                  |   58 -
 src/image/resource.cpp                        |  125 -
 src/image/todo/bezier.cpp                     |   56 -
 src/image/todo/blit.cpp                       |   87 -
 src/image/todo/blur.cpp                       |  221 --
 src/image/todo/context.cpp                    |  734 -----
 src/image/todo/coreimage.cpp                  |  178 --
 src/image/todo/coreimage.h                    |   36 -
 src/image/todo/floodfill.cpp                  |  316 ---
 src/image/todo/jpeg.cpp                       |  247 --
 src/image/todo/line.cpp                       |  468 ----
 src/image/todo/measure.cpp                    |  100 -
 src/image/todo/reduce.cpp                     |  507 ----
 src/image/todo/rgb.cpp                        |  133 -
 src/image/todo/rotate.cpp                     |   98 -
 src/image/todo/sequence.cpp                   |  344 ---
 src/image/todo/transform.cpp                  |  250 --
 src/image/todo/wave.cpp                       |  175 --
 src/light.cpp                                 |   78 -
 src/light.h                                   |  103 -
 src/lol-core.vcxproj                          |  424 ---
 src/lol-core.vcxproj.filters                  |  791 ------
 src/lol/algorithm/portal.h                    |  390 ---
 src/lol/algorithm/sort.h                      |  128 -
 src/lol/audio/all.h                           |   17 -
 src/lol/audio/audio.h                         |   63 -
 src/lol/audio/sample.h                        |   55 -
 src/lol/base/array.h                          |  586 ----
 src/lol/base/enum.h                           |  127 -
 src/lol/base/log.h                            |   48 -
 src/lol/base/tuple.h                          |   92 -
 src/lol/debug/all.h                           |   14 -
 src/lol/debug/lines.h                         |  180 --
 src/lol/engine-internal.h                     |   43 -
 src/lol/engine.h                              |   38 -
 src/lol/engine/all.h                          |   16 -
 src/lol/engine/tickable.h                     |  116 -
 src/lol/extras.h                              |   57 -
 src/lol/gpu/all.h                             |   22 -
 src/lol/gpu/debug.h                           |   27 -
 src/lol/gpu/framebuffer.h                     |  116 -
 src/lol/gpu/indexbuffer.h                     |   54 -
 src/lol/gpu/lolfx.h                           |   45 -
 src/lol/gpu/rendercontext.h                   |   70 -
 src/lol/gpu/renderer.h                        |  189 --
 src/lol/gpu/shader.h                          |  470 ----
 src/lol/gpu/texture.h                         |   78 -
 src/lol/gpu/vertexbuffer.h                    |  260 --
 src/lol/image/image.h                         |  180 --
 src/lol/image/movie.h                         |   53 -
 src/lol/image/resource.h                      |   74 -
 src/lol/legacy.h                              |   26 -
 src/lol/lua.h                                 |   23 -
 src/lol/net/http.h                            |   62 -
 src/lol/public.h                              |   30 -
 src/lol/sys/file.h                            |  124 -
 src/lol/sys/init.h                            |   81 -
 src/loldebug.h                                |   21 -
 src/lolgl.h                                   |   73 -
 src/lolua/baselua.cpp                         |  179 --
 src/lolua/baselua.h                           |  656 -----
 src/mesh/mesh.cpp                             |  154 -
 src/mesh/mesh.h                               |  115 -
 src/mesh/primitivemesh.cpp                    |   98 -
 src/mesh/primitivemesh.h                      |   38 -
 src/messageservice.cpp                        |  142 -
 src/messageservice.h                          |  112 -
 src/net/http.cpp                              |  184 --
 src/platform.cpp                              |   30 -
 src/platform.h                                |   34 -
 src/profiler.cpp                              |   76 -
 src/profiler.h                                |   56 -
 src/scene.cpp                                 |  760 -----
 src/scene.h                                   |  341 ---
 src/sprite.cpp                                |   60 -
 src/sprite.h                                  |   41 -
 src/sys/file.cpp                              |  619 -----
 src/sys/hacks.cpp                             |   50 -
 src/sys/init.cpp                              |  189 --
 src/t/Makefile.am                             |   60 -
 src/t/base/array.cpp                          |  273 --
 src/t/base/avl_tree.cpp                       |  282 --
 src/t/base/enum.cpp                           |   64 -
 src/t/base/map.cpp                            |   38 -
 src/t/base/string.cpp                         |   84 -
 src/t/base/types.cpp                          |  117 -
 src/t/data/gradient.png                       |  Bin 196 -> 0 bytes
 src/t/entity/camera.cpp                       |  196 --
 src/t/image/color.cpp                         |  135 -
 src/t/image/image.cpp                         |   48 -
 src/t/math/array2d.cpp                        |   71 -
 src/t/math/array3d.cpp                        |   90 -
 src/t/math/arraynd.cpp                        |  116 -
 src/t/math/bigint.cpp                         |  242 --
 src/t/math/box.cpp                            |   54 -
 src/t/math/cmplx.cpp                          |  105 -
 src/t/math/half.cpp                           |  290 --
 src/t/math/interp.cpp                         |   39 -
 src/t/math/matrix.cpp                         |  345 ---
 src/t/math/noise/simplex.cpp                  |   26 -
 src/t/math/numbers.cpp                        |   51 -
 src/t/math/polynomial.cpp                     |  355 ---
 src/t/math/quat.cpp                           |  540 ----
 src/t/math/rand.cpp                           |  111 -
 src/t/math/real.cpp                           |  489 ----
 src/t/math/rotation.cpp                       |  214 --
 src/t/math/sqt.cpp                            |  107 -
 src/t/math/trig.cpp                           |   66 -
 src/t/math/vector.cpp                         |  394 ---
 src/t/sys/thread.cpp                          |   63 -
 src/t/sys/timer.cpp                           |   49 -
 src/t/test-base.vcxproj                       |   71 -
 src/t/test-common.cpp                         |   28 -
 src/t/test-entity.vcxproj                     |   67 -
 src/t/test-image.vcxproj                      |   68 -
 src/t/test-math.vcxproj                       |   85 -
 src/t/test-sys.vcxproj                        |   67 -
 src/text.cpp                                  |  123 -
 src/text.h                                    |   69 -
 src/textureimage-private.h                    |   41 -
 src/textureimage.cpp                          |  202 --
 src/textureimage.h                            |   74 -
 src/tileset.cpp                               |  298 --
 src/tileset.h                                 |   90 -
 src/ui/buttons.inc                            |   42 -
 src/ui/d3d9-input.cpp                         |  129 -
 src/ui/d3d9-input.h                           |   42 -
 src/ui/gui.cpp                                |  432 ---
 src/ui/gui.h                                  |  102 -
 src/ui/input.cpp                              |  161 --
 src/ui/input.h                                |  273 --
 src/ui/keys.inc                               |  293 --
 src/ui/sdl-input.cpp                          |  323 ---
 src/ui/sdl-input.h                            |   64 -
 src/utils.h                                   |   75 -
 src/video.cpp                                 |  134 -
 src/video.h                                   |   63 -
 tools/Makefile.am                             |   20 -
 tools/lolunit/Makefile.am                     |    5 -
 tools/make-font.cpp                           |   32 -
 tools/vimlol/Makefile.am                      |    6 -
 tools/vimlol/vimlol.vim                       |   91 -
 tools/vslol/CppKeywordClassifier.cs           |  390 ---
 tools/vslol/GlobalSuppressions.cs             |    1 -
 tools/vslol/LolFxLanguageService.cs           |  150 -
 tools/vslol/Makefile.am                       |   18 -
 tools/vslol/MenuGenerateCompilers.cs          |  259 --
 tools/vslol/Properties/AssemblyInfo.cs        |   33 -
 tools/vslol/VsLol.Designer.cs                 |   72 -
 tools/vslol/VsLol.cs                          |  164 --
 tools/vslol/VsLol.csproj                      |  171 --
 tools/vslol/VsLol.resx                        |  123 -
 tools/vslol/VsLol.sln                         |   20 -
 tools/vslol/VsLol.vsct                        |   92 -
 tools/vslol/gear.bmp                          |  Bin 1078 -> 0 bytes
 tools/vslol/source.extension.vsixmanifest     |   31 -
 474 files changed, 74 insertions(+), 66142 deletions(-)
 delete mode 100644 .travis.yml
 delete mode 100644 .vscode/c_cpp_properties.json
 delete mode 100644 .ycm_extra_conf.py
 delete mode 100644 Makefile.am
 delete mode 100644 TODO
 create mode 100644 TODO.md
 delete mode 100644 binaries/Makefile.am
 delete mode 100755 bootstrap
 delete mode 100644 build.config
 delete mode 100644 build/Makefile.am
 delete mode 100644 build/android/AndroidManifest.xml
 delete mode 100644 build/android/LolActivity.java
 delete mode 100644 build/android/icon.png
 delete mode 100644 build/android/strings.xml
 delete mode 100644 build/autotools/common.am
 delete mode 100644 build/autotools/m4/lol-conf.m4
 delete mode 100644 build/autotools/m4/lol-ffmpeg.m4
 delete mode 100644 build/autotools/m4/lol-gl.m4
 delete mode 100644 build/autotools/m4/lol-misc.m4
 delete mode 100644 build/autotools/m4/lol-sdl.m4
 delete mode 100644 build/autotools/m4/lol-subproject.m4
 delete mode 100644 build/bitten/config-trunk-private.xml
 delete mode 100644 build/bitten/config-trunk-public.xml
 delete mode 100755 build/build-android
 delete mode 100755 build/build-html
 delete mode 100755 build/build-js
 delete mode 100755 build/build-linux
 delete mode 100755 build/build-mingw
 delete mode 100755 build/build-mingw64
 delete mode 100755 build/build-raspi
 delete mode 100755 build/check-source.sh
 delete mode 100755 build/lol-build
 delete mode 100644 build/msbuild/lol-bullet.props
 delete mode 100644 build/msbuild/lol-core.props
 delete mode 100644 build/msbuild/lol-lua.props
 delete mode 100644 build/msbuild/lol.config.props
 delete mode 100644 build/msbuild/lol.props
 delete mode 100644 build/msbuild/lol.rules.props
 delete mode 100644 build/msbuild/lol.vars.props
 delete mode 100644 build/msbuild/lolfx.props
 delete mode 100644 build/msbuild/lolfx.targets
 delete mode 100644 build/msbuild/lolfx.xml
 delete mode 100755 build/run-bitten.sh
 delete mode 100644 configure.ac
 delete mode 100644 doc/Makefile.am
 delete mode 100644 doc/doxygen.cfg.in
 delete mode 100644 doc/doxygen.css
 delete mode 100644 doc/footer.html
 delete mode 100644 doc/grammar/README
 delete mode 100644 doc/grammar/easymesh-parser.y
 delete mode 100644 doc/grammar/easymesh-scanner.l
 delete mode 100644 doc/grammar/lolfx-parser.y
 delete mode 100644 doc/grammar/lolfx-scanner.l
 delete mode 100644 doc/header.html
 delete mode 100644 doc/lolengine.1
 delete mode 100644 doc/lolengine.dox
 delete mode 100644 doc/samples/Makefile.am
 delete mode 100644 doc/samples/benchmark/half.cpp
 delete mode 100644 doc/samples/benchmark/real.cpp
 delete mode 100644 doc/samples/benchmark/vector.cpp
 delete mode 100644 doc/samples/benchsuite.cpp
 delete mode 100644 doc/samples/benchsuite.vcxproj
 delete mode 100644 doc/samples/bluenoise.cpp
 delete mode 100644 doc/samples/btphystest.cpp
 delete mode 100644 doc/samples/btphystest.h
 delete mode 100644 doc/samples/btphystest.vcxproj
 delete mode 100644 doc/samples/btphystest.vcxproj.filters
 delete mode 100644 doc/samples/data/CatsSheet.png
 delete mode 100644 doc/samples/data/CatsSheet.xcf
 delete mode 100644 doc/samples/data/mesh-buffer.txt
 delete mode 100644 doc/samples/data/meshviewer.easymesh.lua
 delete mode 100644 doc/samples/data/meshviewer.init.lua
 delete mode 100644 doc/samples/data/test-texture.png
 delete mode 100644 doc/samples/front_camera_sprite.lolfx
 delete mode 100644 doc/samples/math/Makefile.am
 delete mode 100644 doc/samples/math/pi.cpp
 delete mode 100644 doc/samples/math/poly.cpp
 delete mode 100644 doc/samples/physicobject.h
 delete mode 100644 doc/samples/physics/bulletcharactercontroller.cpp
 delete mode 100644 doc/samples/physics/bulletcharactercontroller.h
 delete mode 100644 doc/samples/physics/easycharactercontroller.cpp
 delete mode 100644 doc/samples/physics/easycharactercontroller.h
 delete mode 100644 doc/samples/physics/easyconstraint.cpp
 delete mode 100644 doc/samples/physics/easyconstraint.h
 delete mode 100644 doc/samples/physics/easyphysics.cpp
 delete mode 100644 doc/samples/physics/easyphysics.h
 delete mode 100644 doc/samples/physics/lolbtphysicsintegration.h
 delete mode 100644 doc/samples/physics/lolphysics.h
 delete mode 100644 doc/samples/sandbox/Makefile.am
 delete mode 100644 doc/samples/sandbox/sample.cpp
 delete mode 100644 doc/samples/simplex.cpp
 delete mode 100644 doc/shitlolbotsays.txt
 delete mode 100644 doc/tutorial/01_triangle.cpp
 delete mode 100644 doc/tutorial/01_triangle.lolfx
 delete mode 100644 doc/tutorial/01_triangle.vcxproj
 delete mode 100644 doc/tutorial/02_cube.cpp
 delete mode 100644 doc/tutorial/02_cube.lolfx
 delete mode 100644 doc/tutorial/02_cube.vcxproj
 delete mode 100644 doc/tutorial/03_noise.cpp
 delete mode 100644 doc/tutorial/03_noise.lolfx
 delete mode 100644 doc/tutorial/03_noise.vcxproj
 delete mode 100644 doc/tutorial/04_texture.cpp
 delete mode 100644 doc/tutorial/04_texture.lolfx
 delete mode 100644 doc/tutorial/04_texture.vcxproj
 delete mode 100644 doc/tutorial/05_easymesh.cpp
 delete mode 100644 doc/tutorial/05_easymesh.lua
 delete mode 100644 doc/tutorial/05_easymesh.vcxproj
 delete mode 100644 doc/tutorial/06_sprite.cpp
 delete mode 100644 doc/tutorial/06_sprite.png
 delete mode 100644 doc/tutorial/06_sprite.vcxproj
 delete mode 100644 doc/tutorial/07_input.cpp
 delete mode 100644 doc/tutorial/07_input.lolfx
 delete mode 100644 doc/tutorial/07_input.vcxproj
 delete mode 100644 doc/tutorial/08_fbo.cpp
 delete mode 100644 doc/tutorial/08_fbo.lolfx
 delete mode 100644 doc/tutorial/08_fbo.vcxproj
 delete mode 100644 doc/tutorial/09_sound.cpp
 delete mode 100644 doc/tutorial/09_sound.vcxproj
 delete mode 100644 doc/tutorial/11_fractal.cpp
 delete mode 100644 doc/tutorial/11_fractal.lolfx
 delete mode 100644 doc/tutorial/11_fractal.vcxproj
 delete mode 100644 doc/tutorial/12_distance.lolfx
 delete mode 100644 doc/tutorial/12_texture_to_screen.lolfx
 delete mode 100644 doc/tutorial/12_voronoi.cpp
 delete mode 100644 doc/tutorial/12_voronoi.lolfx
 delete mode 100644 doc/tutorial/12_voronoi.vcxproj
 delete mode 100644 doc/tutorial/12_voronoi_distance.lolfx
 delete mode 100644 doc/tutorial/12_voronoi_setup.lolfx
 delete mode 100644 doc/tutorial/13_shader_builder.cpp
 delete mode 100644 doc/tutorial/13_shader_builder.vcxproj
 delete mode 100644 doc/tutorial/14_lua.cpp
 delete mode 100644 doc/tutorial/14_lua.lua
 delete mode 100644 doc/tutorial/14_lua.vcxproj
 delete mode 100644 doc/tutorial/15_gui.cpp
 delete mode 100644 doc/tutorial/15_gui.vcxproj
 delete mode 100644 doc/tutorial/16_movie.cpp
 delete mode 100644 doc/tutorial/16_movie.vcxproj
 delete mode 100644 doc/tutorial/17_net.cpp
 delete mode 100644 doc/tutorial/17_net.vcxproj
 delete mode 100644 doc/tutorial/Makefile.am
 delete mode 160000 external
 rename {src => include/lol}/3rdparty/mingw-std-threads (100%)
 rename {src => include/lol}/3rdparty/pegtl (100%)
 rename {src => legacy}/lol/algorithm/aabb_tree.h (100%)
 rename {src => legacy}/lol/algorithm/all.h (100%)
 rename {src => legacy}/lol/base/all.h (100%)
 rename {src => legacy}/lol/base/assert.h (100%)
 rename {src => legacy}/lol/base/avl_tree.h (100%)
 rename {src => legacy}/lol/base/features.h (100%)
 rename {src => legacy}/lol/base/map.h (100%)
 rename {src => legacy}/lol/base/string.h (100%)
 rename {src => legacy}/lol/base/types.h (100%)
 rename {src => legacy}/lol/image/all.h (100%)
 rename {src => legacy}/lol/image/color.h (100%)
 rename {src => legacy}/lol/image/pixel.h (100%)
 rename {src => legacy}/lol/math/all.h (100%)
 rename {src => legacy}/lol/math/arraynd.h (100%)
 rename {src => legacy}/lol/math/bigint.h (100%)
 rename {src => legacy}/lol/math/constants.h (100%)
 rename {src => legacy}/lol/math/functions.h (100%)
 rename {src => legacy}/lol/math/geometry.h (100%)
 rename {src => legacy}/lol/math/half.h (100%)
 rename {src => legacy}/lol/math/interp.h (100%)
 rename {src => legacy}/lol/math/matrix.h (100%)
 rename {src => legacy}/lol/math/noise/gradient.h (100%)
 rename {src => legacy}/lol/math/noise/perlin.h (100%)
 rename {src => legacy}/lol/math/noise/simplex.h (100%)
 rename {src => legacy}/lol/math/ops.h (100%)
 rename {src => legacy}/lol/math/polynomial.h (100%)
 rename {src => legacy}/lol/math/rand.h (100%)
 rename {src => legacy}/lol/math/real.h (100%)
 rename {src => legacy}/lol/math/transform.h (100%)
 rename {src => legacy}/lol/math/vector.h (100%)
 rename {src => legacy}/lol/net/all.h (100%)
 rename {src => legacy}/lol/sys/all.h (100%)
 rename {src => legacy}/lol/sys/getopt.h (100%)
 rename {src => legacy}/lol/sys/thread.h (100%)
 rename {src => legacy}/lol/sys/timer.h (100%)
 rename {tools => legacy}/lolunit/lolunit.h (100%)
 rename {src => legacy}/math/geometry.cpp (100%)
 rename {src => legacy}/math/half.cpp (100%)
 rename {src => legacy}/math/matrix.cpp (100%)
 rename {src => legacy}/math/real.cpp (100%)
 rename {src => legacy}/math/transform.cpp (100%)
 rename {src => legacy}/math/vector.cpp (100%)
 rename {src => legacy}/numeric.h (100%)
 rename {src => legacy}/sys/getopt.cpp (100%)
 delete mode 100644 lol.sln
 delete mode 100644 src/3rdparty/Makefile.am
 delete mode 160000 src/3rdparty/bullet3
 delete mode 160000 src/3rdparty/cpp-httplib
 delete mode 160000 src/3rdparty/imgui
 delete mode 100644 src/3rdparty/lol-bullet.vcxproj
 delete mode 100644 src/3rdparty/lol-bullet.vcxproj.filters
 delete mode 100644 src/3rdparty/lol-cpp-httplib.am
 delete mode 100644 src/3rdparty/lol-imgui.am
 delete mode 100644 src/3rdparty/lol-lua.am
 delete mode 100644 src/3rdparty/lol-lua.vcxproj
 delete mode 100644 src/3rdparty/lol-lua.vcxproj.filters
 delete mode 100644 src/3rdparty/lol-mingw-std-threads.am
 delete mode 100644 src/3rdparty/lol-pegtl.am
 delete mode 160000 src/3rdparty/lua
 delete mode 100644 src/Makefile.am
 delete mode 100644 src/application/android-app.cpp
 delete mode 100644 src/application/android-app.h
 delete mode 100644 src/application/application.cpp
 delete mode 100644 src/application/application.h
 delete mode 100644 src/application/egl-app.cpp
 delete mode 100644 src/application/egl-app.h
 delete mode 100644 src/application/sdl-app.cpp
 delete mode 100644 src/application/sdl-app.h
 delete mode 100644 src/audio/audio.cpp
 delete mode 100644 src/audio/sample.cpp
 delete mode 100644 src/base/assert.cpp
 delete mode 100644 src/base/features.cpp
 delete mode 100644 src/base/log.cpp
 delete mode 100644 src/base/string.cpp
 delete mode 100644 src/camera.cpp
 delete mode 100644 src/camera.h
 delete mode 100644 src/commandstack.h
 delete mode 100644 src/data/Makefile.am
 delete mode 100644 src/data/font/Makefile.am
 delete mode 100644 src/data/font/ascii.png
 delete mode 100644 src/debug/fps.cpp
 delete mode 100644 src/debug/fps.h
 delete mode 100644 src/debug/lines.cpp
 delete mode 100644 src/debug/record.cpp
 delete mode 100644 src/debug/record.h
 delete mode 100644 src/debug/stats.cpp
 delete mode 100644 src/debug/stats.h
 delete mode 100644 src/easymesh/csgbsp.cpp
 delete mode 100644 src/easymesh/csgbsp.h
 delete mode 100644 src/easymesh/easymesh.cpp
 delete mode 100644 src/easymesh/easymesh.h
 delete mode 100644 src/easymesh/easymeshbuild.cpp
 delete mode 100644 src/easymesh/easymeshbuild.h
 delete mode 100644 src/easymesh/easymeshcsg.cpp
 delete mode 100644 src/easymesh/easymeshcursor.cpp
 delete mode 100644 src/easymesh/easymeshinternal.cpp
 delete mode 100644 src/easymesh/easymeshlua.cpp
 delete mode 100644 src/easymesh/easymeshlua.h
 delete mode 100644 src/easymesh/easymeshprimitive.cpp
 delete mode 100644 src/easymesh/easymeshrender.cpp
 delete mode 100644 src/easymesh/easymeshrender.h
 delete mode 100644 src/easymesh/easymeshtransform.cpp
 delete mode 100644 src/easymesh/shiny.lolfx
 delete mode 100644 src/easymesh/shiny_SK.lolfx
 delete mode 100644 src/easymesh/shinydebugUV.lolfx
 delete mode 100644 src/easymesh/shinydebuglighting.lolfx
 delete mode 100644 src/easymesh/shinydebugnormal.lolfx
 delete mode 100644 src/easymesh/shinydebugwireframe.lolfx
 delete mode 100644 src/easymesh/shinyflat.lolfx
 delete mode 100644 src/emitter.cpp
 delete mode 100644 src/emitter.h
 delete mode 100644 src/engine/entity.cpp
 delete mode 100644 src/engine/entity.h
 delete mode 100644 src/engine/tickable.cpp
 delete mode 100644 src/engine/ticker.cpp
 delete mode 100644 src/engine/ticker.h
 delete mode 100644 src/engine/world.cpp
 delete mode 100644 src/engine/world.h
 delete mode 100644 src/engine/worldentity.cpp
 delete mode 100644 src/engine/worldentity.h
 delete mode 100644 src/font.cpp
 delete mode 100644 src/font.h
 delete mode 100644 src/gpu/blit.lolfx
 delete mode 100644 src/gpu/debug.cpp
 delete mode 100644 src/gpu/default-material.lolfx
 delete mode 100644 src/gpu/empty-material.lolfx
 delete mode 100644 src/gpu/framebuffer.cpp
 delete mode 100644 src/gpu/indexbuffer.cpp
 delete mode 100644 src/gpu/line.lolfx
 delete mode 100644 src/gpu/lolfx.cpp
 delete mode 100644 src/gpu/palette.lolfx
 delete mode 100644 src/gpu/postprocess.lolfx
 delete mode 100644 src/gpu/rendercontext.cpp
 delete mode 100644 src/gpu/renderer.cpp
 delete mode 100644 src/gpu/shader.cpp
 delete mode 100644 src/gpu/test-material.lolfx
 delete mode 100644 src/gpu/texture.cpp
 delete mode 100644 src/gpu/tile.lolfx
 delete mode 100644 src/gpu/vertexbuffer.cpp
 delete mode 100644 src/gradient.cpp
 delete mode 100644 src/gradient.h
 delete mode 100644 src/gradient.lolfx
 delete mode 100644 src/image/codec/android-image.cpp
 delete mode 100644 src/image/codec/dummy-image.cpp
 delete mode 100644 src/image/codec/gdiplus-image.cpp
 delete mode 100644 src/image/codec/imlib2-image.cpp
 delete mode 100644 src/image/codec/ios-image.cpp
 delete mode 100644 src/image/codec/oric-image.cpp
 delete mode 100644 src/image/codec/sdl-image.cpp
 delete mode 100644 src/image/codec/zed-image.cpp
 delete mode 100644 src/image/codec/zed-palette-image.cpp
 delete mode 100644 src/image/color/cie1931.cpp
 delete mode 100644 src/image/color/color.cpp
 delete mode 100644 src/image/combine.cpp
 delete mode 100644 src/image/crop.cpp
 delete mode 100644 src/image/dither/dbs.cpp
 delete mode 100644 src/image/dither/ediff.cpp
 delete mode 100644 src/image/dither/ordered.cpp
 delete mode 100644 src/image/dither/ostromoukhov.cpp
 delete mode 100644 src/image/dither/random.cpp
 delete mode 100644 src/image/filter/colors.cpp
 delete mode 100644 src/image/filter/convolution.cpp
 delete mode 100644 src/image/filter/dilate.cpp
 delete mode 100644 src/image/filter/median.cpp
 delete mode 100644 src/image/filter/yuv.cpp
 delete mode 100644 src/image/image-private.h
 delete mode 100644 src/image/image.cpp
 delete mode 100644 src/image/kernel.cpp
 delete mode 100644 src/image/movie.cpp
 delete mode 100644 src/image/noise.cpp
 delete mode 100644 src/image/pixel.cpp
 delete mode 100644 src/image/resample.cpp
 delete mode 100644 src/image/resource-private.h
 delete mode 100644 src/image/resource.cpp
 delete mode 100644 src/image/todo/bezier.cpp
 delete mode 100644 src/image/todo/blit.cpp
 delete mode 100644 src/image/todo/blur.cpp
 delete mode 100644 src/image/todo/context.cpp
 delete mode 100644 src/image/todo/coreimage.cpp
 delete mode 100644 src/image/todo/coreimage.h
 delete mode 100644 src/image/todo/floodfill.cpp
 delete mode 100644 src/image/todo/jpeg.cpp
 delete mode 100644 src/image/todo/line.cpp
 delete mode 100644 src/image/todo/measure.cpp
 delete mode 100644 src/image/todo/reduce.cpp
 delete mode 100644 src/image/todo/rgb.cpp
 delete mode 100644 src/image/todo/rotate.cpp
 delete mode 100644 src/image/todo/sequence.cpp
 delete mode 100644 src/image/todo/transform.cpp
 delete mode 100644 src/image/todo/wave.cpp
 delete mode 100644 src/light.cpp
 delete mode 100644 src/light.h
 delete mode 100644 src/lol-core.vcxproj
 delete mode 100644 src/lol-core.vcxproj.filters
 delete mode 100644 src/lol/algorithm/portal.h
 delete mode 100644 src/lol/algorithm/sort.h
 delete mode 100644 src/lol/audio/all.h
 delete mode 100644 src/lol/audio/audio.h
 delete mode 100644 src/lol/audio/sample.h
 delete mode 100644 src/lol/base/array.h
 delete mode 100644 src/lol/base/enum.h
 delete mode 100644 src/lol/base/log.h
 delete mode 100644 src/lol/base/tuple.h
 delete mode 100644 src/lol/debug/all.h
 delete mode 100644 src/lol/debug/lines.h
 delete mode 100644 src/lol/engine-internal.h
 delete mode 100644 src/lol/engine.h
 delete mode 100644 src/lol/engine/all.h
 delete mode 100644 src/lol/engine/tickable.h
 delete mode 100644 src/lol/extras.h
 delete mode 100644 src/lol/gpu/all.h
 delete mode 100644 src/lol/gpu/debug.h
 delete mode 100644 src/lol/gpu/framebuffer.h
 delete mode 100644 src/lol/gpu/indexbuffer.h
 delete mode 100644 src/lol/gpu/lolfx.h
 delete mode 100644 src/lol/gpu/rendercontext.h
 delete mode 100644 src/lol/gpu/renderer.h
 delete mode 100644 src/lol/gpu/shader.h
 delete mode 100644 src/lol/gpu/texture.h
 delete mode 100644 src/lol/gpu/vertexbuffer.h
 delete mode 100644 src/lol/image/image.h
 delete mode 100644 src/lol/image/movie.h
 delete mode 100644 src/lol/image/resource.h
 delete mode 100644 src/lol/legacy.h
 delete mode 100644 src/lol/lua.h
 delete mode 100644 src/lol/net/http.h
 delete mode 100644 src/lol/public.h
 delete mode 100644 src/lol/sys/file.h
 delete mode 100644 src/lol/sys/init.h
 delete mode 100644 src/loldebug.h
 delete mode 100644 src/lolgl.h
 delete mode 100644 src/lolua/baselua.cpp
 delete mode 100644 src/lolua/baselua.h
 delete mode 100644 src/mesh/mesh.cpp
 delete mode 100644 src/mesh/mesh.h
 delete mode 100644 src/mesh/primitivemesh.cpp
 delete mode 100644 src/mesh/primitivemesh.h
 delete mode 100644 src/messageservice.cpp
 delete mode 100644 src/messageservice.h
 delete mode 100644 src/net/http.cpp
 delete mode 100644 src/platform.cpp
 delete mode 100644 src/platform.h
 delete mode 100644 src/profiler.cpp
 delete mode 100644 src/profiler.h
 delete mode 100644 src/scene.cpp
 delete mode 100644 src/scene.h
 delete mode 100644 src/sprite.cpp
 delete mode 100644 src/sprite.h
 delete mode 100644 src/sys/file.cpp
 delete mode 100644 src/sys/hacks.cpp
 delete mode 100644 src/sys/init.cpp
 delete mode 100644 src/t/Makefile.am
 delete mode 100644 src/t/base/array.cpp
 delete mode 100644 src/t/base/avl_tree.cpp
 delete mode 100644 src/t/base/enum.cpp
 delete mode 100644 src/t/base/map.cpp
 delete mode 100644 src/t/base/string.cpp
 delete mode 100644 src/t/base/types.cpp
 delete mode 100644 src/t/data/gradient.png
 delete mode 100644 src/t/entity/camera.cpp
 delete mode 100644 src/t/image/color.cpp
 delete mode 100644 src/t/image/image.cpp
 delete mode 100644 src/t/math/array2d.cpp
 delete mode 100644 src/t/math/array3d.cpp
 delete mode 100644 src/t/math/arraynd.cpp
 delete mode 100644 src/t/math/bigint.cpp
 delete mode 100644 src/t/math/box.cpp
 delete mode 100644 src/t/math/cmplx.cpp
 delete mode 100644 src/t/math/half.cpp
 delete mode 100644 src/t/math/interp.cpp
 delete mode 100644 src/t/math/matrix.cpp
 delete mode 100644 src/t/math/noise/simplex.cpp
 delete mode 100644 src/t/math/numbers.cpp
 delete mode 100644 src/t/math/polynomial.cpp
 delete mode 100644 src/t/math/quat.cpp
 delete mode 100644 src/t/math/rand.cpp
 delete mode 100644 src/t/math/real.cpp
 delete mode 100644 src/t/math/rotation.cpp
 delete mode 100644 src/t/math/sqt.cpp
 delete mode 100644 src/t/math/trig.cpp
 delete mode 100644 src/t/math/vector.cpp
 delete mode 100644 src/t/sys/thread.cpp
 delete mode 100644 src/t/sys/timer.cpp
 delete mode 100644 src/t/test-base.vcxproj
 delete mode 100644 src/t/test-common.cpp
 delete mode 100644 src/t/test-entity.vcxproj
 delete mode 100644 src/t/test-image.vcxproj
 delete mode 100644 src/t/test-math.vcxproj
 delete mode 100644 src/t/test-sys.vcxproj
 delete mode 100644 src/text.cpp
 delete mode 100644 src/text.h
 delete mode 100644 src/textureimage-private.h
 delete mode 100644 src/textureimage.cpp
 delete mode 100644 src/textureimage.h
 delete mode 100644 src/tileset.cpp
 delete mode 100644 src/tileset.h
 delete mode 100644 src/ui/buttons.inc
 delete mode 100644 src/ui/d3d9-input.cpp
 delete mode 100644 src/ui/d3d9-input.h
 delete mode 100644 src/ui/gui.cpp
 delete mode 100644 src/ui/gui.h
 delete mode 100644 src/ui/input.cpp
 delete mode 100644 src/ui/input.h
 delete mode 100644 src/ui/keys.inc
 delete mode 100644 src/ui/sdl-input.cpp
 delete mode 100644 src/ui/sdl-input.h
 delete mode 100644 src/utils.h
 delete mode 100644 src/video.cpp
 delete mode 100644 src/video.h
 delete mode 100644 tools/Makefile.am
 delete mode 100644 tools/lolunit/Makefile.am
 delete mode 100644 tools/make-font.cpp
 delete mode 100644 tools/vimlol/Makefile.am
 delete mode 100644 tools/vimlol/vimlol.vim
 delete mode 100644 tools/vslol/CppKeywordClassifier.cs
 delete mode 100644 tools/vslol/GlobalSuppressions.cs
 delete mode 100644 tools/vslol/LolFxLanguageService.cs
 delete mode 100644 tools/vslol/Makefile.am
 delete mode 100644 tools/vslol/MenuGenerateCompilers.cs
 delete mode 100644 tools/vslol/Properties/AssemblyInfo.cs
 delete mode 100644 tools/vslol/VsLol.Designer.cs
 delete mode 100644 tools/vslol/VsLol.cs
 delete mode 100644 tools/vslol/VsLol.csproj
 delete mode 100644 tools/vslol/VsLol.resx
 delete mode 100644 tools/vslol/VsLol.sln
 delete mode 100644 tools/vslol/VsLol.vsct
 delete mode 100644 tools/vslol/gear.bmp
 delete mode 100644 tools/vslol/source.extension.vsixmanifest

diff --git a/.gitignore b/.gitignore
index 61a66690..4abed329 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,150 +1,3 @@
-# Autotools cruft
-*.o
-*.lo
-*.a
-*.la
-*.exe
-*.so
-*.elf
-*.self
-*.nexe
-*.userprefs
-*.usertasks
-*.pidb
-.auto
-.libs
-.deps
-.dirstamp
-.*.androiddir
-.*.androidstamp
-Makefile
-Makefile.in
-aclocal.m4
-build/autotools/m4/libtool.m4
-build/autotools/m4/ltoptions.m4
-build/autotools/m4/ltsugar.m4
-build/autotools/m4/ltversion.m4
-build/autotools/m4/lt~obsolete.m4
-autom4te.cache
-config.h.in
-config.h
-config.log
-config.status
-configure
-libtool
-stamp-*
-*-stamp
-lolengine-*.tar.*
-test-suite.log
-# Personal stuff
-patch-*.diff
-# Debugging cruft
-core
-!core/
-core.*
-vgcore.*
-callgrind.out.*
-perf.data*
-*.gcda
-*.gcno
 # Editor cruft
 .*.swp
 *~
-.ycm_extra_conf.pyc
-# Visual Studio cruft
-.vs
-*.vcxproj.user
-*.csproj.user
-binaries/*Debug
-binaries/*Release
-build/*.VC.VC.opendb
-build/*.VC.db
-build/*.sdf
-build/*.suo
-build/*.opensdf
-build/visualstudio/ipch
-build/visualstudio/*.log
-build/visualstudio/*.XGD
-# Emscripten cruft
-a.out*
-doc/samples/*.html
-doc/samples/*.wasm
-doc/samples/*.wasm.*
-doc/samples/*.js
-doc/samples/*/*.html
-doc/samples/*/*.wasm
-doc/samples/*/*.wasm.*
-doc/samples/*/*.js
-doc/tutorial/*.html
-doc/tutorial/*.wasm
-doc/tutorial/*.wasm.*
-doc/tutorial/*.js
-src/t/*.html
-src/t/*.wasm
-src/t/*.wasm.*
-src/t/*.js
-# ReSharper cruft
-_ReSharper.*
-# Do not exclude anything in external. There is no way to do this recursively
-# but the nesting below is currently one level more than our current max.
-!external/*
-!external/*/*
-!external/*/*/*
-!external/*/*/*/*
-!external/*/*/*/*/*
-!external/*/*/*/*/*/*
-!external/*/*/*/*/*/*/*
-# Our private repositories
-src/private
-# Our binaries
-demos/lol.js/lol.js
-doc/samples/benchsuite
-doc/samples/bluenoise
-doc/samples/btphystest
-doc/samples/sandbox/sample
-doc/samples/math/pi
-doc/samples/math/poly
-doc/samples/simplex
-doc/tutorial/01_triangle
-doc/tutorial/02_cube
-doc/tutorial/03_noise
-doc/tutorial/04_texture
-doc/tutorial/05_easymesh
-doc/tutorial/06_sprite
-doc/tutorial/07_input
-doc/tutorial/08_fbo
-doc/tutorial/09_sound
-doc/tutorial/11_fractal
-doc/tutorial/12_voronoi
-doc/tutorial/13_shader_builder
-doc/tutorial/14_lua
-doc/tutorial/15_gui
-doc/tutorial/16_movie
-doc/tutorial/16_movie.gif
-tools/make-font
-# Our data
-doc/doxygen.cfg
-doc/doxygen.log
-doc/html
-doc/latex
-doc/man
-# Our test suites
-build/check-*.log
-build/check-*.trs
-src/t/test-base
-src/t/test-math
-src/t/test-sys
-src/t/test-image
-src/t/test-entity
-src/t/test-*.log
-src/t/test-*.trs
-# Our tools
-tools/vslol/bin/*/*
-tools/vslol/obj/*/*
-tools/vslol/obj/*/*/*
-tools/vslol/obj/*/*/*
-tools/vslol/*.suo
-# ImGui cruft
-imgui.ini
-# Built stuff
-binaries/
diff --git a/.gitmodules b/.gitmodules
index cfaadc49..82b1ecc9 100644
--- a/.gitmodules
+++ b/.gitmodules
@@ -1,27 +1,8 @@
-[submodule "external"]
-	path = external
-	url = ../../lolengine/ext-binaries.git
-	branch = master
-[submodule "imgui"]
-	path = src/3rdparty/imgui
-	url = ../../lolengine/ext-imgui.git
-	branch = master
-[submodule "bullet3"]
-	path = src/3rdparty/bullet3
-	url = ../../lolengine/ext-bullet3.git
-	branch = lol
-[submodule "lua"]
-	path = src/3rdparty/lua
-	url = ../../lolengine/ext-lua.git
-	branch = lol
 [submodule "pegtl"]
-	path = src/3rdparty/pegtl
+	path = include/lol/3rdparty/pegtl
 	url = ../../lolengine/ext-pegtl.git
 	branch = lol
 [submodule "mingw-std-threads"]
-	path = src/3rdparty/mingw-std-threads
+	path = include/lol/3rdparty/mingw-std-threads
 	url = ../../lolengine/ext-mingw-std-threads.git
 	branch = master
-[submodule "cpp-httplib"]
-	path = src/3rdparty/cpp-httplib
-	url = ../../lolengine/ext-cpp-httplib.git
diff --git a/.travis.yml b/.travis.yml
deleted file mode 100644
index 3e2b0320..00000000
--- a/.travis.yml
+++ /dev/null
@@ -1,35 +0,0 @@
-sudo: required
-dist: trusty
-language: c++
-env: VERBOSE=1
-
-addons:
-  apt:
-    packages:
-      - build-essential
-      - automake
-      - autoconf
-      - libtool
-      - pkg-config
-      - libsdl2-dev
-      - libsdl2-image-dev
-      - libsdl2-mixer-dev
-      - libglew-dev
-      # this can fix clang compilation
-      - clang-3.8
-      - libc++-dev
-
-before_install:
-#  - .travis/before_install.sh
-  - if [ "$CC" = "clang" ]; then export CC="clang-3.8"; fi
-  - if [ "$CXX" = "clang++" ]; then export CXX="clang++-3.8 -stdlib=libc++"; fi
-  - ./bootstrap
-
-os:
-  - linux
-#  - osx
-
-compiler:
-  - gcc
-  - clang
-
diff --git a/.vscode/c_cpp_properties.json b/.vscode/c_cpp_properties.json
deleted file mode 100644
index 972446b0..00000000
--- a/.vscode/c_cpp_properties.json
+++ /dev/null
@@ -1,28 +0,0 @@
-{
-    "configurations": [
-        {
-            "name": "Mac",
-            "includePath": ["/usr/include"],
-            "browse" : {
-                "limitSymbolsToIncludedHeaders" : true,
-                "databaseFilename" : ""
-            }
-        },
-        {
-            "name": "Linux",
-            "includePath": ["/usr/include"],
-            "browse" : {
-                "limitSymbolsToIncludedHeaders" : true,
-                "databaseFilename" : ""
-            }
-        },
-        {
-            "name": "Win32",
-            "includePath": ["c:/Program Files (x86)/Microsoft Visual Studio 14.0/VC/include", "src"],
-            "browse" : {
-                "limitSymbolsToIncludedHeaders" : true,
-                "databaseFilename" : ""
-            }
-        }
-    ]
-}
diff --git a/.ycm_extra_conf.py b/.ycm_extra_conf.py
deleted file mode 100644
index 0952eeba..00000000
--- a/.ycm_extra_conf.py
+++ /dev/null
@@ -1,37 +0,0 @@
-
-# The following line might come handy in ~/.vimrc:
-#   let g:ycm_extra_conf_globlist = ['~/lol/*','!~/*']
-
-import os
-import ycm_core
-
-flags = [
-    '-xc++',
-    '-std=c++11',
-    # Engine includes
-    '-I.',
-    '-I..',
-    '-Isrc',
-    # System includes
-    '-I/usr/include/SDL2',
-    '-I/usr/include/GL',
-    '-I/usr/include/libdrm',
-    '-I/usr/include/libpng15',
-    # Macros
-    '-DHAVE_CONFIG_H',
-    '-D_REENTRANT',
-]
-
-def FlagsForFile(filename, **kwargs):
-
-    extension = os.path.splitext(filename)[1]
-    if extension not in [ '.c', '.cpp', '.h' ]:
-        return None
-
-    final_flags = flags
-
-    return {
-        'flags': final_flags,
-        'do_cache': True
-    }
-
diff --git a/Makefile.am b/Makefile.am
deleted file mode 100644
index 5884b55b..00000000
--- a/Makefile.am
+++ /dev/null
@@ -1,16 +0,0 @@
-
-include $(top_srcdir)/build/autotools/common.am
-
-# Put "people" at the end because they're more likely to break builds.
-SUBDIRS = build src tools doc
-DIST_SUBDIRS = $(SUBDIRS) binaries
-
-EXTRA_DIST += bootstrap COPYING TODO \
-              .gitignore .gitattributes .gitmodules \
-              .travis.yml lol.sln build.config
-AUTOMAKE_OPTIONS = dist-bzip2
-ACLOCAL_AMFLAGS = -I build/autotools/m4
-
-test: lolcheck
-check: lolcheck
-
diff --git a/README.md b/README.md
index 60f70e3d..9aabbf2c 100644
--- a/README.md
+++ b/README.md
@@ -1,13 +1,4 @@
 
 # About
 
-A collection of scripts and C++ code to make games, demos and tools.
-
-## Notes
-
-### Nintendo Switch support
-
-That code is private, it needs to be activated manually:
-
-> `git clone https://github.com/samhocevar/lol-nx.git src/private/nx`
-
+The header-only part of the Lol Engine framework.
diff --git a/TODO b/TODO
deleted file mode 100644
index 0e12e985..00000000
--- a/TODO
+++ /dev/null
@@ -1,38 +0,0 @@
-
- Large projects
-----------------
-
-  - Scripting support.
-	  - Lua is supported, check if CPP -> LUA ticking/updating is supported
-	  - Lua needs more than one-shot-script
-	  - Lua classes may still be a little bit obfuscated, a class renaming/revamping may be needed
-  - Tiler and Forge are almost the same, try to refactor them.
-
- Engine classes
-----------------
-
-Scene:
-  - Remove uses of g_scene
-  - Maybe make Camera a world object instead?
-
-Image:
-  - Handle pitch in SDL codec (and all others, actually)
-  - Fix the Floyd-Steinberg code in pixels.cpp
-  - Add gamma handling in pixels.cpp
-  - Port remaining libpipi files from src/image/todo/:
-
-Thread:
-  - Solidify "Threaded-update" objects support
-  - AsyncImageLoader: "File modified update" is supported by OS, it should use that instead of doing it by hand
-  - Thread usage may still be a little bit awkward
-
-Debug:
-  - Add history support. And layer-like sub-section ? (with imGUI support ?)
-  - ::DrawSetup* is fricking awkward, even I (Touky) get confused by it
-  
-Shaders:
-  - Creation/Setup is still a bit complicated, should look into making it more readable (compatibility with lua ?)
-  
-Frame Buffer Object:
-  - They were working at some point , check if it's still the case, but are still very awkward to use
-  
\ No newline at end of file
diff --git a/TODO.md b/TODO.md
new file mode 100644
index 00000000..d34c5921
--- /dev/null
+++ b/TODO.md
@@ -0,0 +1,71 @@
+
+## `lol` headers to keep
+
+    src/lol/base/map.h (map utilities)
+    src/lol/base/types.h (vec_t shortcuts eg. vec2, ivec2, u8vec3 etc.)
+    src/lol/math/bigint.h
+    src/lol/math/constants.h
+    src/lol/math/functions.h
+    src/lol/math/half.h (needs half.cpp)
+    src/lol/math/matrix.h
+    src/lol/math/noise/*
+    src/lol/math/ops.h
+    src/lol/math/polynomial.h
+    src/lol/math/rand.h
+    src/lol/math/real.h (needs real.cpp)
+    src/lol/math/transform.h (needs matrix.cpp and transform.cpp)
+    src/lol/math/vector.h (needs vector.cpp)
+    src/lol/sys/thread.h
+    src/lol/sys/timer.h
+
+
+## other headers to keep
+
+    tools/lolunit/lolunit.h
+
+## headers we could clean up and keep
+
+    src/lol/algorithm/aabb_tree.h
+    src/lol/base/assert.h (could be useful)
+    src/lol/base/avl_tree.h
+    src/lol/base/string.h (string utilities)
+    src/lol/image/color.h
+    src/lol/image/pixel.h (but is it useful?)
+    src/lol/math/arraynd.h (but do we really want to keep it?)
+    src/lol/math/geometry.h
+    src/lol/math/interp.h (but what is it?)
+
+    src/numeric.h
+
+
+## headers to keep in the engine
+
+    src/lol/algorithm/portal.h
+    src/lol/audio/*
+    src/lol/base/features.h (a bit dangerous to ship)
+    src/lol/base/log.h
+    src/lol/debug/*
+    src/lol/engine.h
+    src/lol/engine/*
+    src/lol/engine-internal.h
+    src/lol/extras.h
+    src/lol/gpu/*
+    src/lol/image/image.h
+    src/lol/image/movie.h
+    src/lol/image/resource.h
+    src/lol/legacy.h
+    src/lol/lua.h
+    src/lol/net/http.h
+    src/lol/public.h
+    src/lol/sys/file.h
+    src/lol/sys/getopt.h
+    src/lol/sys/init.h
+
+
+## headers to remove one day
+
+    src/lol/algorithm/sort.h (there’s plenty of stuff in libc++)
+    src/lol/base/array.h (use std::vector)
+    src/lol/base/enum.h (can’t see the point)
+    src/lol/base/tuple.h (use std::tuple)
+
diff --git a/binaries/Makefile.am b/binaries/Makefile.am
deleted file mode 100644
index aa65ad58..00000000
--- a/binaries/Makefile.am
+++ /dev/null
@@ -1,3 +0,0 @@
-
-# Everything in this directory is temporary.
-
diff --git a/bootstrap b/bootstrap
deleted file mode 100755
index 278d0fd9..00000000
--- a/bootstrap
+++ /dev/null
@@ -1,136 +0,0 @@
-#! /bin/sh
-
-# bootstrap: generic bootstrap/autogen.sh script for autotools projects
-#
-# Copyright (c) 2002-2010 Sam Hocevar <sam@hocevar.net>
-#
-#    This program is free software. It comes without any warranty, to
-#    the extent permitted by applicable law. You can redistribute it
-#    and/or modify it under the terms of the Do What The Fuck You Want
-#    To Public License, Version 2, as published by Sam Hocevar. See
-#    http://www.wtfpl.net/ for more details.
-#
-# The latest version of this script can be found at the following place:
-#    http://caca.zoy.org/wiki/build
-
-# Die if an error occurs
-set -e
-
-# Guess whether we are using configure.ac or configure.in
-if test -f configure.ac; then
-  conffile="configure.ac"
-elif test -f configure.in; then
-  conffile="configure.in"
-else
-  echo "$0: could not find configure.ac or configure.in"
-  exit 1
-fi
-
-# Check for needed features
-auxdir="`sed -ne 's/^[ \t]*A._CONFIG_AUX_DIR *([[ ]*\([^] )]*\).*/\1/p' $conffile`"
-pkgconfig="`grep '^[ \t]*PKG_PROG_PKG_CONFIG' $conffile >/dev/null 2>&1 && echo yes || echo no`"
-libtool="`grep '^[ \t]*A._PROG_LIBTOOL' $conffile >/dev/null 2>&1 && echo yes || echo no`"
-makefile="`[ -f Makefile.am ] && echo yes || echo no`"
-aclocalflags="`sed -ne 's/^[ \t]*ACLOCAL_AMFLAGS[ \t]*=//p' Makefile.am 2>/dev/null || :`"
-
-# Check for automake
-amvers="no"
-for v in "" "-1.15" "-1.14" "-1.13" "-1.12" "-1.11"; do
-  if automake${v} --version > /dev/null 2>&1; then
-    amvers=${v}
-    break
-  fi
-done
-
-if test "$amvers" = "no"; then
-  echo "$0: automake not found"
-  exit 1
-fi
-
-# Check for autoconf
-acvers="no"
-for v in "" "259" "253"; do
-  if autoconf${v} --version >/dev/null 2>&1; then
-    acvers="${v}"
-    break
-  fi
-done
-
-if test "$acvers" = "no"; then
-  echo "$0: autoconf not found"
-  exit 1
-fi
-
-# Check for libtool
-if test "$libtool" = "yes"; then
-  libtoolize="no"
-  if glibtoolize --version >/dev/null 2>&1; then
-    libtoolize="glibtoolize"
-  else
-    for v in "16" "15" "" "14"; do
-      if libtoolize${v} --version >/dev/null 2>&1; then
-        libtoolize="libtoolize${v}"
-        break
-      fi
-    done
-  fi
-
-  if test "$libtoolize" = "no"; then
-    echo "$0: libtool not found"
-    exit 1
-  fi
-fi
-
-# Check for pkg-config
-if test "$pkgconfig" = "yes"; then
-  if ! pkg-config --version >/dev/null 2>&1; then
-    echo "$0: pkg-config not found"
-    exit 1
-  fi
-fi
-
-# Remove old cruft
-for x in aclocal.m4 configure config.guess config.log config.sub config.cache config.h.in config.h compile libtool.m4 ltoptions.m4 ltsugar.m4 ltversion.m4 ltmain.sh libtool ltconfig missing mkinstalldirs depcomp install-sh; do rm -f $x autotools/$x; if test -n "$auxdir"; then rm -f "$auxdir/$x"; fi; done
-rm -Rf autom4te.cache
-if test -n "$auxdir"; then
-  if test ! -d "$auxdir"; then
-    mkdir "$auxdir"
-  fi
-  aclocalflags="-I $auxdir -I . ${aclocalflags}"
-fi
-
-# Honour M4PATH because sometimes M4 doesn't
-save_IFS=$IFS
-IFS=:
-tmp="$M4PATH"
-for x in $tmp; do
-  if test -n "$x"; then
-    aclocalflags="-I $x ${aclocalflags}"
-  fi
-done
-IFS=$save_IFS
-
-# Explain what we are doing from now
-set -x
-
-# Bootstrap package
-if test "$libtool" = "yes"; then
-  ${libtoolize} --copy --force
-  if test -n "$auxdir" -a ! "$auxdir" = "." -a -f "ltmain.sh"; then
-    echo "$0: working around a minor libtool issue"
-    mv ltmain.sh "$auxdir/"
-  fi
-fi
-
-aclocal${amvers} ${aclocalflags}
-autoconf${acvers}
-autoheader${acvers}
-if test "$makefile" = "yes"; then
-  #add --include-deps if you want to bootstrap with any other compiler than gcc
-  #automake${amvers} --add-missing --copy --include-deps
-  automake${amvers} --foreign --add-missing --copy
-fi
-
-# Remove cruft that we no longer want
-rm -Rf autom4te.cache
-
diff --git a/build.config b/build.config
deleted file mode 100644
index 09f85460..00000000
--- a/build.config
+++ /dev/null
@@ -1,15 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <PropertyGroup Label="Configuration">
-
-    <!-- yes/no values -->
-    <enable_bullet>yes</enable_bullet>
-    <enable_ffmpeg>yes</enable_ffmpeg>
-    <enable_gl>yes</enable_gl>
-    <enable_sdl>yes</enable_sdl>
-    <enable_imlib2>yes</enable_imlib2>
-    <!-- not available yet -->
-    <enable_png>no</enable_png>
-
-  </PropertyGroup>
-</Project>
diff --git a/build/Makefile.am b/build/Makefile.am
deleted file mode 100644
index fd9f021f..00000000
--- a/build/Makefile.am
+++ /dev/null
@@ -1,21 +0,0 @@
-
-include $(top_srcdir)/build/autotools/common.am
-
-# FIXME: can't include "Lol (vs2015).sln" because of the spaces
-
-EXTRA_DIST += lol-build \
-              check-source.sh run-bitten.sh \
-              build-linux build-mingw build-mingw64 \
-              build-android build-html \
-              \
-              msbuild/lolfx.targets \
-              msbuild/lolfx.xml \
-              msbuild/lolfx.props \
-              msbuild/lol.config.props \
-              msbuild/lol.vars.props \
-              msbuild/lol.rules.props \
-              \
-              autotools/common.am
-
-TESTS = check-source.sh
-
diff --git a/build/android/AndroidManifest.xml b/build/android/AndroidManifest.xml
deleted file mode 100644
index 52e8ba5e..00000000
--- a/build/android/AndroidManifest.xml
+++ /dev/null
@@ -1,22 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<manifest xmlns:android="http://schemas.android.com/apk/res/android"
-      package="net.lolengine.lol_@PROGRAM@"
-      android:versionCode="1"
-      android:versionName="1.0">
-    <application android:label="@string/app_name"
-                 android:icon="@drawable/icon">
-        <activity android:name="net.lolengine.LolActivity"
-                  android:theme="@android:style/Theme.NoTitleBar.Fullscreen"
-                  android:screenOrientation="landscape"
-                  android:label="@string/app_name"
-                  android:launchMode="singleTask">
-            <meta-data android:name="android.app.lib_name"
-                    android:value="@PROGRAM@" />
-            <intent-filter>
-                <action android:name="android.intent.action.MAIN" />
-                <category android:name="android.intent.category.LAUNCHER" />
-            </intent-filter>
-        </activity>
-    </application>
-    <uses-sdk android:minSdkVersion="13" />
-</manifest>
diff --git a/build/android/LolActivity.java b/build/android/LolActivity.java
deleted file mode 100644
index ddb8c606..00000000
--- a/build/android/LolActivity.java
+++ /dev/null
@@ -1,68 +0,0 @@
-//
-// Lol Engine
-//
-// Copyright: (c) 2010-2013 Sam Hocevar <sam@hocevar.net>
-//   This program is free software; you can redistribute it and/or
-//   modify it under the terms of the Do What The Fuck You Want To
-//   Public License, Version 2, as published by Sam Hocevar. See
-//   http://www.wtfpl.net/ for more details.
-//
-
-package net.lolengine;
-
-import android.app.NativeActivity; /* NativeActivity */
-import android.os.Bundle; /* Bundle */
-
-import android.content.res.AssetManager; /* getAssets() */
-import android.graphics.Bitmap;
-import android.graphics.BitmapFactory;
-
-public class LolActivity extends NativeActivity
-{
-    static
-    {
-        /* Need to preload libstlport_shared.so somewhere; also need to
-         * preload lib@PROGRAM@.so otherwise nativeInit() can’t be found. */
-        System.loadLibrary("stlport_shared");
-        System.loadLibrary("@PROGRAM@");
-    }
-
-    @Override
-    protected void onCreate(Bundle saved_instance)
-    {
-        super.onCreate(saved_instance);
-        m_assets = getAssets();
-    }
-
-    private AssetManager m_assets;
-
-    /*
-     * Bitmap loading helpers
-     */
-
-    public Bitmap openImage(String name)
-    {
-        try
-        {
-            return BitmapFactory.decodeStream(m_assets.open(name));
-        }
-        catch (Exception e) { }
-        return null;
-    }
-
-    public int getWidth(Bitmap bmp) { return bmp.getWidth(); }
-    public int getHeight(Bitmap bmp) { return bmp.getHeight(); }
-
-    public void getPixels(Bitmap bmp, int[] pixels)
-    {
-        int w = bmp.getWidth();
-        int h = bmp.getHeight();
-        bmp.getPixels(pixels, 0, w, 0, 0, w, h);
-    }
-
-    public void closeImage(Bitmap bmp)
-    {
-        bmp.recycle();
-    }
-}
-
diff --git a/build/android/icon.png b/build/android/icon.png
deleted file mode 100644
index b04184c31495055ab5fa2a83b91ba52cda50d820..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 1215
zcmV;w1VH<VP)<h;3K|Lk000e1NJLTq001xm001xu1^@s6R|5Hm00001b5ch_0Itp)
z=>Px#24YJ`L;wu{2mk~Kt?F+8000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2ipSz
z7YzXQLqD$o00citL_t(&-tAhia~e?)-eW*uB8ZD7;t(~snA3=gp6NdTCN2&US42c+
za2U{;sUZS^s3`^)6A?tvnW+e(CIXR)&R+KRcHiz}+G#t}H^Tt$-j8qh?S8v&Az9qs
zz`xvTe-oICLI3q)(0`4YQ}-@RzmKQ0M0?Jk@iC$2%gZ(Z0Q3g^S8ZIh0CZt&JpnM?
zoc1Gd4IF<S+Y-wMP=MCi4tDES(Z8BE007|XVFMh%YTgk03k8g}#phus1pt67-&e+P
zB}k`IkCC=@wgUiw-MR%?zK7MkQ2<!Y-$49)PYWUFd{hF?lfd)S!Lb*DX}O&kH>RhM
z<$HDWEZ>*3kHT}UYx8jo74%>y?v1vvylj`ibFf|oc*o-@((zXh4gn+@8+Ou?iJ+ZN
zns3_q+`Er<z>mv!#pm;vO+_$|pmmFJ(7r1hH>-VLK7AE6Zh;2?m^4$EEUSv(<Z+M*
zNt)mqqc+aJO8^ikvKc*1ZOteF_+$z~(vrnqmj7gM9}T|3LgVQyL5}7dh8EndTgA(A
z;2660%oPI}^@Y$$c!0!$_b?)j1@##E(-`RdWh45E2A<CkF%eh7^0Hk@M=B?vF_Fd|
z9uU&}yT!EB-+ez2eM~baJc)WtQboaY00=^(!w`7vLm^i4Mxlh=x)t=l8iF5oQg=ou
z0pR`GNojNGvq>{8=#`R$<Oelwo3Tgl1t_h3dU6b>C&%hqe9mg#sPxs4J~4B|K_Owh
zAiQgY8pm_>uqm-njm7|;{>BL6ZPZyGpPu3I>DfJ(gBJrC7a{~876j5QUqf5l0v`-y
z!%kYELyLtd2q`vb{I3b>5kO6+wFC|UgtTQPfgvF%c$^<H<KhIQI3NWPx|kMCLjrhx
zD$Dn!D=gl#`6(oe+nY-C)dGhkgr$87!Yc>`&-dj*hyr+o2!Y`MJoyn7RGO;=vO4Xg
zmu))1%FRO;8*i$Nz^zo8mSjX9;8g(4j-{;e&=yL$dHspkhibf23T9Sf_bb3lLDK>+
z1~N$q&17(cLoO{eLBsf9RUx7R8Jd%}C=E(Togc2h6}D_SBfrdBWf`=6kw(2mUCTa?
zy15udY25gJ_g169@t*pRCWK1>jmxFLh5(Pcc?m3SR8R{%T|dkB6(QW0ddtoa$yz;{
zm)6A-FI_1$)A2f}CvWkB_bN@TN=Q8K-NX_^3VNZSiDi7wjG_r)8tu`T6fwP;v!X3u
zhezM2x{!1#A@DJQEw++p-Ur6hS)!HKt&Jo>V#<@8Z9L$EG)e<nD5&AaUM`o+%<>mr
zPE=C~OKRK*^A>8GS^=Op+7>UV#)A%uuUKkMJipXS&P_MdOiaqDkfNnTO*32VK5U+V
z1_l?T$sY$ogALuhH`<Dt<>PR^l~^X;|4LZD#!Jp08aM2uB_XZ#4szn()jWSq@V4at
dzg7Nl`vET3eHLTtG<*O6002ovPDHLkV1ko~9QObK

diff --git a/build/android/strings.xml b/build/android/strings.xml
deleted file mode 100644
index 69e4c338..00000000
--- a/build/android/strings.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
-    <string name="app_name">@PROGRAM@</string>
-</resources>
diff --git a/build/autotools/common.am b/build/autotools/common.am
deleted file mode 100644
index 9ecc1ab0..00000000
--- a/build/autotools/common.am
+++ /dev/null
@@ -1,124 +0,0 @@
-# -*- coding: utf-8 -*-
-# vi:syntax=python
-
-#
-# Define these variables from the beginning
-#
-
-CLEANFILES =
-SUFFIXES =
-EXTRA_DIST =
-NULL =
-
-
-#
-# Miscellaneous rules
-#
-
-lol_recursive_rule = \
-	@if test -n "$(SUBDIRS)"; then for subdir in $(SUBDIRS); do \
-	  if test "$$subdir" != "."; then \
-	    ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $(patsubst %-recursive, %, $@)) || exit 1; \
-	fi; done; fi
-
-bench: bench-recursive
-bench-recursive:
-	$(lol_recursive_rule)
-
-lolcheck: lolcheck-recursive
-lolcheck-recursive:
-	$(lol_recursive_rule)
-
-#
-# Make tests verbose
-# FIXME: this does not seem to work as documented
-#
-
-AM_TESTS_FD_REDIRECT = 9>&2
-
-
-#
-# .lolfx build rule
-#
-
-lolfx_gen = $(lolfx_gen_$(V))
-lolfx_gen_ = $(lolfx_gen_$(AM_DEFAULT_VERBOSITY))
-lolfx_gen_0 = @echo "  LOLFX " $@;
-
-SUFFIXES += .lolfx
-.lolfx.o:
-	$(lolfx_gen)
-	$(AM_V_at)(echo "char const *"; \
-         echo "lolfx_resource_$(basename $(filter %.lolfx, $^))" | $(SED) 's/[^a-zA-Z0-9_]/_/g'; \
-	 echo "="; \
-	 $(SED) 's/"/\\"/g' $(filter %.lolfx, $^) | $(SED) 's/\([^\r]*\).*/"\1\\n"/'; \
-	 echo ";") \
-	> $@.lolfx.cpp && \
-	$(CXXCOMPILE) -xc++ -c $@.lolfx.cpp -o $@ && \
-	exit=0 || exit=1; rm -f $@.lolfx.cpp ; exit "$$exit"
-
-# Disable on the fly compilation because emscripten doesn't support it
-#	| $(CXXCOMPILE) -xc++ -c - -o $@
-
-
-#
-# Win32 rules
-#
-
-# This is here in case we forget to make clean after a Windows build
-CLEANFILES += $(PROGRAMS:%$(EXEEXT)=%.exe) \
-              $(noinst_PROGRAMS:%$(EXEEXT)=%.exe)
-
-
-#
-# Emscripten rules
-#
-
-CLEANFILES += $(PROGRAMS:%$(EXEEXT)=%.data) \
-              $(noinst_PROGRAMS:%$(EXEEXT)=%.data)
-
-#
-# Android rules
-#
-
-all-local: all-local-android
-clean-local: clean-local-android
-
-if LOL_USE_ANDROID
-all-local-android: $(foreach p, $(PROGRAMS:%$(EXEEXT)=%), .$(p).androidstamp)
-.%.androidstamp: %$(EXEEXT)
-	$(eval p := $(^:%$(EXEEXT)=%))
-	$(eval d := .$(p).androiddir)
-	rm -rf "$(d)"
-	$(MKDIR_P) "$(d)" $(sort $(foreach f, $($(p)_DATA), "$(d)/assets/$(dir $(f))"))
-	$(foreach f, $($(p)_DATA), $(LN_S) "$(abs_srcdir)/$(f)" "$(d)/assets/$(f)" &&) true
-	$(SED) -e 's,@PROGRAM@,$(subst -,_,$(p)),' "$(lol_srcdir)/build/android/AndroidManifest.xml" > "$(d)/AndroidManifest.xml"
-	$(MKDIR_P) "$(d)/src/net/lolengine"
-	$(SED) -e 's,@PROGRAM@,$(subst -,_,$(p)),' "$(lol_srcdir)/build/android/LolActivity.java" > "$(d)/src/net/lolengine/LolActivity.java"
-	$(MKDIR_P) "$(d)/res/values"
-	$(SED) -e 's,@PROGRAM@,$(subst -,_,$(p)),' "$(lol_srcdir)/build/android/strings.xml" > "$(d)/res/values/strings.xml"
-	$(MKDIR_P) "$(d)/res/drawable"
-	cp "$(lol_srcdir)/build/android/icon.png" "$(d)/res/drawable/"
-	$(MKDIR_P) "$(d)/libs/armeabi"
-	$(LN_S) "$(abs_builddir)/$(p)$(EXEEXT)" "$(d)/libs/armeabi/lib$(p).so"
-	android update project -t android-19 -n "$(p)" -p "$(d)"
-	ant debug -f "$(d)/build.xml"
-	touch $@
-else
-all-local-android:
-endif
-
-clean-local-android:
-	$(foreach p, $(PROGRAMS:%$(EXEEXT)=%), rm -rf ".$(p).androiddir";)
-	$(foreach p, $(PROGRAMS:%$(EXEEXT)=%), rm -f ".$(p).androidstamp";)
-
-
-#
-# Additional rules
-#
-
-EXTRA_DIST += $(foreach p, $(PROGRAMS), $($(p)_DATA))
-
-
-.PHONY: bench lolcheck
-
diff --git a/build/autotools/m4/lol-conf.m4 b/build/autotools/m4/lol-conf.m4
deleted file mode 100644
index ce7729c0..00000000
--- a/build/autotools/m4/lol-conf.m4
+++ /dev/null
@@ -1,287 +0,0 @@
-dnl
-dnl  Lol Engine
-dnl
-dnl  Copyright © 2010—2020 Sam Hocevar <sam@hocevar.net>
-dnl
-dnl  Lol Engine is free software. It comes without any warranty, to
-dnl  the extent permitted by applicable law. You can redistribute it
-dnl  and/or modify it under the terms of the Do What the Fuck You Want
-dnl  to Public License, Version 2, as published by the WTFPL Task Force.
-dnl  See http://www.wtfpl.net/ for more details.
-dnl
-
-
-# LOL_AC_INIT()
-# ---------------------
-AC_DEFUN([LOL_AC_INIT], [
-
-dnl  Silent rules by default
-AM_SILENT_RULES([yes])
-
-dnl  C++11 and later mode. Checked early so that we don't run into surprises.
-version_flag=''
-LOL_TRY_CXXFLAGS(-std=c++0x, [version_flag='-std=c++0x'])
-LOL_TRY_CXXFLAGS(-std=c++11, [version_flag='-std=c++11'])
-LOL_TRY_CXXFLAGS(-std=c++14, [version_flag='-std=c++14'])
-LOL_TRY_CXXFLAGS(-std=c++17, [version_flag='-std=c++17'])
-AM_CXXFLAGS="${AM_CXXFLAGS} ${version_flag}"
-CXXFLAGS="${CXXFLAGS} ${version_flag}"
-
-AC_LANG_PUSH(C++)
-AC_MSG_CHECKING(for C++11 enum class support)
-AC_TRY_LINK([], [enum class Foo : int { Bar, Baz };],
- [AC_MSG_RESULT(yes)],
- [AC_MSG_RESULT(no)
-  AC_MSG_ERROR([[C++ compiler does not support C++11 enum classes]])])
-AC_LANG_POP(C++)
-
-]) # LOL_AC_INIT
-
-
-# LOL_AC_CHECK()
-# ---------------------
-AC_DEFUN([LOL_AC_CHECK], [
-
-dnl  Check that the C++ compiler really works
-AC_LANG_PUSH(C++)
-AC_MSG_CHECKING(for a fully working C++ compiler)
-AC_TRY_LINK([], [],
- [AC_MSG_RESULT(yes)],
- [AC_MSG_RESULT(no)
-  AC_MSG_ERROR([[C++ compiler cannot link executables]])])
-AC_LANG_POP(C++)
-
-
-AC_C_CONST
-AC_C_INLINE
-
-dnl
-dnl  Common libraries
-dnl
-
-AC_CHECK_LIB(m, sin, LIBS="${LIBS} -lm")
-AC_CHECK_LIB(pthread, main, LIBS="${LIBS} -lpthread")
-
-
-dnl
-dnl  Activate some header-only libraries
-dnl
-
-LOL_CFLAGS="$LOL_CFLAGS -I\$(lol_srcdir)/src/3rdparty/cpp-httplib"
-LOL_CFLAGS="$LOL_CFLAGS -I\$(lol_srcdir)/src/3rdparty/pegtl/include"
-LOL_CFLAGS="$LOL_CFLAGS -I\$(lol_srcdir)/src/3rdparty/imgui"
-
-dnl  Use system-provided getopt_long?
-ac_cv_have_getopt_long="no"
-AC_CHECK_HEADERS(getopt.h unistd.h)
-AC_CHECK_FUNCS(getopt_long,
- [ac_cv_have_getopt_long="yes"],
- [AC_CHECK_LIB(gnugetopt, getopt_long,
-   [ac_cv_have_getopt_long="yes"
-    LIBS="${LIBS} -lgnugetopt"])])
-if test "$ac_cv_have_getopt_long" != "no"; then
-  AC_DEFINE(HAVE_GETOPT_LONG, 1, Define to 1 if you have the ‘getopt_long’ function.)
-fi
-
-
-dnl  Use OpenSSL?
-ac_cv_have_openssl=no
-AC_CHECK_LIB(ssl, OPENSSL_init_ssl,
- [ac_cv_have_openssl=yes
-  AC_DEFINE(LOL_USE_OPENSSL, 1, Define to 1 to use OpenSSL)
-  LOL_LIBS="${LOL_LIBS} -lssl -lcrypto"])
-AM_CONDITIONAL(LOL_USE_OPENSSL, test "${ac_cv_have_openssl}" = "yes")
-
-
-dnl  Use Bullet Physics?
-ac_cv_my_have_bullet="no"
-if test "${enable_bullet}" != "no"; then
-  PKG_CHECK_MODULES(BULLET, bullet, [ac_cv_my_have_bullet="yes"], [:])
-  if test "${ac_cv_my_have_bullet}" != "no"; then
-    AC_DEFINE(LOL_USE_BULLET, 1, Define to 1 to use Bullet Physics)
-    LOL_CFLAGS="${LOL_CFLAGS} ${BULLET_CFLAGS}"
-    LOL_LIBS="${LOL_LIBS} ${BULLET_LIBS}"
-  fi
-fi
-AM_CONDITIONAL(LOL_USE_BULLET, test "${ac_cv_my_have_bullet}" = "yes")
-
-
-dnl  Use Android? FIXME: super hacks!
-ac_cv_my_have_android="no"
-AC_CHECK_LIB(log, __android_log_vprint,
- [ac_cv_my_have_android="yes"
-  LOL_LIBS="${LOL_LIBS} -llog -landroid -module -lEGL -lGLESv2"])
-AM_CONDITIONAL(LOL_USE_ANDROID, test "${ac_cv_my_have_android}" != "no")
-
-
-dnl  Use EGL? (autodetect unless GL is disabled)
-ac_cv_my_have_egl="no"
-if test "${enable_gl}" != "no"; then
-  PKG_CHECK_MODULES(EGL, egl, [ac_cv_my_have_egl="yes"], [:])
-  if test "${ac_cv_my_have_egl}" != "no"; then
-    AC_DEFINE(LOL_USE_EGL, 1, Define to 1 to use libegl)
-    EGL_LIBS="${EGL_LIBS} -lX11"
-  fi
-  AC_CHECK_HEADERS(EGL/egl.h,
-   [AC_CHECK_LIB(EGL, eglInitialize,
-     [ac_cv_my_have_egl="yes"
-      AC_DEFINE(LOL_USE_EGL, 1, Define to 1 to use libegl)
-      EGL_LIBS="-lEGL"])
-    dnl  Raspberry Pi is different, check for it with extra libs; also we
-    dnl  look for a different function to bypass autoconf caching
-    AC_CHECK_LIB(EGL, eglGetDisplay,
-     [ac_cv_my_have_egl="yes"
-      AC_DEFINE(LOL_USE_EGL, 1, Define to 1 to use libegl)
-      EGL_LIBS="-lEGL -lvcos -lvchiq_arm -lbcm_host -lGLESv2"],
-     [:],
-     [-lvcos -lvchiq_arm -lbcm_host -lGLESv2])])
-fi
-AM_CONDITIONAL(LOL_USE_EGL, test "${ac_cv_my_have_egl}" != "no")
-
-
-dnl Use libpng? (replacement for SDL_image)
-ac_cv_my_have_libpng="no"
-if test "${enable_png}" != "no"; then
-  PKG_CHECK_MODULES(LIBPNG, libpng, [ac_cv_my_have_libpng="yes"], [:])
-  if test "${ac_cv_my_have_libpng}" != "no"; then
-    AC_DEFINE(LOL_USE_LIBPNG, 1, Define to 1 to use libpng)
-  fi
-fi
-AM_CONDITIONAL(LOL_USE_LIBPNG, test "${ac_cv_my_have_libpng}" != "no")
-
-
-dnl  Use Imlib2?
-ac_cv_my_have_imlib2="no"
-if test "${enable_imlib2}" != "no"; then
-  PKG_CHECK_MODULES(IMLIB2, imlib2, [ac_cv_my_have_imlib2="yes"], [:])
-  if test "${ac_cv_my_have_imlib2}" != "no"; then
-    AC_DEFINE(LOL_USE_IMLIB2, 1, Define to 1 to use Imlib2)
-    LOL_CFLAGS="${LOL_CFLAGS} ${IMLIB2_CFLAGS}"
-    LOL_LIBS="${LOL_LIBS} ${IMLIB2_LIBS}"
-  fi
-fi
-AM_CONDITIONAL(LOL_USE_IMLIB2, test "${ac_cv_my_have_imlib2}" = "yes")
-
-
-dnl Use Windows GDI+?
-ac_cv_my_have_gdiplus="no"
-AC_LANG_PUSH(C++)
-AC_CHECK_HEADERS(gdiplus.h,
- [ac_cv_my_have_gdiplus="yes"
-  LOL_LIBS="${LOL_LIBS} -lgdiplus"],
- [ac_cv_my_have_gdiplus="no"],
- [#include <algorithm>
-  using std::min;
-  using std::max;
-  #include <windows.h>])
-AC_LANG_POP(C++)
-if test "${ac_cv_my_have_gdiplus}" != "no"; then
-  AC_DEFINE(LOL_USE_GDIPLUS, 1, Define to 1 to use GDI+)
-fi
-AM_CONDITIONAL(LOL_USE_GDIPLUS, test "${ac_cv_my_have_gdiplus}" = "yes")
-
-
-dnl  Are we building using MinGW?
-LOL_TRY_CXXFLAGS(-mwindows -mwin32,
- [AM_CXXFLAGS="${AM_CXXFLAGS} -mwindows -mwin32"
-  LOL_CFLAGS="${LOL_CFLAGS} -I\$(lol_srcdir)/src/3rdparty/mingw-std-threads"
-  LOL_CFLAGS="${LOL_CFLAGS} -D__STDC_FORMAT_MACROS"
-  LOL_LIBS="${LOL_LIBS} -uWinMain -u_WinMain@16"])
-
-
-dnl  Are we building using Emscripten?
-ac_cv_my_have_emscripten="no"
-AC_CHECK_HEADERS(emscripten.h,
- [ac_cv_my_have_emscripten="yes"
-  AC_CHECK_HEADERS(emscripten/html5.h)
-  dnl  XXX: activate this if memory heap is too small
-  #AM_CXXFLAGS="${AM_CXXFLAGS} -s ALLOW_MEMORY_GROWTH=1"
-  dnl  See https://github.com/emscripten-core/emscripten/pull/7977 for more details
-  CPPFLAGS="${CPPFLAGS} -s DISABLE_DEPRECATED_FIND_EVENT_TARGET_BEHAVIOR=1"
-  dnl  HACK: until emcc properly adds these to EMSDK_OPTS
-  CPPFLAGS="${CPPFLAGS} -U__i386__ -U__x86_64__ -U__i386 -U__x86_64 -Ui386 -Ux86_64"
-  CPPFLAGS="${CPPFLAGS} -U__SSE__ -U__SSE2__ -U__MMX__ -UX87_DOUBLE_ROUNDING"
-  CPPFLAGS="${CPPFLAGS} -UHAVE_GCC_ASM_FOR_X87 -U__STRICT_ANSI__ -U__CYGWIN__"])
-AM_CONDITIONAL(LOL_USE_EMSCRIPTEN, test "${ac_cv_my_have_emscripten}" != "no")
-
-
-dnl  Are we on an OS X or iOS platform?
-LOL_TRY_LDFLAGS(-framework Foundation,
- [LOL_LIBS="${LOL_LIBS} -framework Foundation"])
-LOL_TRY_LDFLAGS(-framework CoreGraphics,
- [LOL_LIBS="${LOL_LIBS} -framework CoreGraphics"])
-LOL_TRY_LDFLAGS(-framework CoreData,
- [LOL_LIBS="${LOL_LIBS} -framework CoreData"])
-LOL_TRY_LDFLAGS(-framework UIKit,
- [LOL_LIBS="${LOL_LIBS} -framework UIKit"])
-
-
-dnl  Other complex checks
-LOL_AC_CHECK_OPENGL()
-LOL_AC_CHECK_SDL()
-LOL_AC_CHECK_FFMPEG()
-
-
-dnl  Debug symbols
-dnl  We use --export-dynamic instead of -rdynamic because the latter causes
-dnl  emscripten to emit wasm even when html is asked…
-LOL_TRY_LDFLAGS(--export-dynamic, [AM_LDFLAGS="${AM_LDFLAGS} --export-dynamic"])
-
-
-dnl  Code qui fait des warnings == code de porc == deux baffes dans ta gueule
-LOL_TRY_CXXFLAGS(-Wall, [AM_CPPFLAGS="${AM_CPPFLAGS} -Wall"])
-LOL_TRY_CXXFLAGS(-Wextra, [AM_CPPFLAGS="${AM_CPPFLAGS} -Wextra"])
-LOL_TRY_CXXFLAGS(-Wpointer-arith, [AM_CPPFLAGS="${AM_CPPFLAGS} -Wpointer-arith"])
-LOL_TRY_CXXFLAGS(-Wcast-align, [AM_CPPFLAGS="${AM_CPPFLAGS} -Wcast-align"])
-LOL_TRY_CXXFLAGS(-Wcast-qual, [AM_CPPFLAGS="${AM_CPPFLAGS} -Wcast-qual"])
-LOL_TRY_CXXFLAGS(-Wshadow, [AM_CPPFLAGS="${AM_CPPFLAGS} -Wshadow"])
-LOL_TRY_CXXFLAGS(-Wsign-compare, [AM_CPPFLAGS="${AM_CPPFLAGS} -Wsign-compare"])
-LOL_TRY_CXXFLAGS(-Wstrict-overflow=1, [AM_CPPFLAGS="${AM_CPPFLAGS} -Wstrict-overflow=1"])
-
-dnl  Add these even though they're implicitly set, so that we can safely
-dnl  remove them from within a Makefile.
-LOL_TRY_CXXFLAGS(-Wuninitialized, [AM_CPPFLAGS="${AM_CPPFLAGS} -Wuninitialized"])
-LOL_TRY_CXXFLAGS(-Wnarrowing, [AM_CPPFLAGS="${AM_CPPFLAGS} -Wnarrowing"])
-LOL_TRY_CXXFLAGS(-Wunused, [AM_CPPFLAGS="${AM_CPPFLAGS} -Wunused"])
-LOL_TRY_CXXFLAGS(-Wcast-align, [AM_CPPFLAGS="${AM_CPPFLAGS} -Wcast-align"])
-LOL_TRY_CXXFLAGS(-Wunused-parameter, [AM_CPPFLAGS="${AM_CPPFLAGS} -Wunused-parameter"])
-LOL_TRY_CXXFLAGS(-Wstrict-aliasing, [AM_CPPFLAGS="${AM_CPPFLAGS} -Wstrict-aliasing"])
-LOL_TRY_CXXFLAGS(-Wparentheses, [AM_CPPFLAGS="${AM_CPPFLAGS} -Wparentheses"])
-LOL_TRY_CXXFLAGS(-Wreorder, [AM_CXXFLAGS="${AM_CXXFLAGS} -Wreorder"])
-
-dnl  Disable these warnings because they're annoyingly verbose
-LOL_TRY_CXXFLAGS(-Wno-psabi, [AM_CPPFLAGS="${AM_CPPFLAGS} -Wno-psabi"])
-
-]) # LOL_AC_CHECK
-
-
-# LOL_AC_FINI()
-# ---------------------
-AC_DEFUN([LOL_AC_FINI], [
-
-dnl  How to use the Lol Engine outside this tree
-LOL_CFLAGS="$LOL_CFLAGS $SDL_CFLAGS $GL_CFLAGS $EGL_CFLAGS $LIBPNG_CFLAGS"
-LOL_LIBS="$LOL_LIBS $SDL_LIBS $GL_LIBS $EGL_LIBS $LIBPNG_LIBS $D3D_LIBS"
-LOL_DEPS="${LOL_DEPS} \$(lol_builddir)/src/liblol-core.a"
-LOL_LUA_DEPS="${LOL_LUA_DEPS} \$(lol_builddir)/src/3rdparty/liblol-lua.a"
-
-dnl  How to use the Lol Engine inside this tree
-AM_CPPFLAGS="${AM_CPPFLAGS} -I\$(lol_srcdir)/src"
-AM_CPPFLAGS="${AM_CPPFLAGS} -DLOL_CONFIG_SOURCESUBDIR=\\\"\$(subdir)\\\""
-AM_CPPFLAGS="${AM_CPPFLAGS} ${LOL_CFLAGS}"
-AM_LDFLAGS="${AM_LDFLAGS} ${LOL_DEPS}"
-AM_LDFLAGS="${AM_LDFLAGS} ${LOL_LIBS}"
-
-dnl  Extra flags
-AC_SUBST(LOL_CFLAGS)
-AC_SUBST(LOL_LIBS)
-AC_SUBST(LOL_DEPS)
-AC_SUBST(LOL_LUA_DEPS)
-
-AC_SUBST(AM_CFLAGS)
-AC_SUBST(AM_CPPFLAGS)
-AC_SUBST(AM_CXXFLAGS)
-AC_SUBST(AM_LDFLAGS)
-
-]) # LOL_AC_FINI
-
diff --git a/build/autotools/m4/lol-ffmpeg.m4 b/build/autotools/m4/lol-ffmpeg.m4
deleted file mode 100644
index 79771811..00000000
--- a/build/autotools/m4/lol-ffmpeg.m4
+++ /dev/null
@@ -1,63 +0,0 @@
-dnl
-dnl  Lol Engine
-dnl
-dnl  Copyright © 2010—2017 Sam Hocevar <sam@hocevar.net>
-dnl
-dnl  Lol Engine is free software. It comes without any warranty, to
-dnl  the extent permitted by applicable law. You can redistribute it
-dnl  and/or modify it under the terms of the Do What the Fuck You Want
-dnl  to Public License, Version 2, as published by the WTFPL Task Force.
-dnl  See http://www.wtfpl.net/ for more details.
-dnl
-
-
-# LOL_AC_CHECK_FFMPEG()
-# ---------------------
-AC_DEFUN([LOL_AC_CHECK_FFMPEG],
-[
-ac_cv_my_have_ffmpeg="no"
-if test "${enable_ffmpeg}" != "no"; then
-  LOL_AC_CHECK_FFMPEG_INNER()
-fi
-AM_CONDITIONAL(LOL_USE_FFMPEG, test "${ac_cv_my_have_ffmpeg}" != "no")
-])
-
-# LOL_AC_CHECK_FFMPEG_INNER()
-# ---------------------------
-AC_DEFUN([LOL_AC_CHECK_FFMPEG_INNER],
-[
-ac_cv_my_have_ffmpeg="yes"
-PKG_CHECK_MODULES([LIBAVCODEC], [libavcodec], [:], [ac_cv_my_have_ffmpeg=no])
-PKG_CHECK_MODULES([LIBAVUTIL], [libavutil], [:], [ac_cv_my_have_ffmpeg=no])
-PKG_CHECK_MODULES([LIBAVFORMAT], [libavformat], [:], [ac_cv_my_have_ffmpeg=no])
-PKG_CHECK_MODULES([LIBSWSCALE], [libswscale], [:], [ac_cv_my_have_ffmpeg=no])
-LOL_FFMPEG_EXTRA_LIBS=""
-if test "${ac_cv_my_have_ffmpeg}" != "yes"; then
-  ac_cv_my_have_ffmpeg="yes"
-  AC_CHECK_HEADERS(libavcodec/avcodec.h, [:], [ac_cv_my_have_ffmpeg=no])
-  AC_CHECK_HEADERS(libavformat/avformat.h, [:], [ac_cv_my_have_ffmpeg=no])
-  AC_CHECK_HEADERS(libswscale/swscale.h, [:], [ac_cv_my_have_ffmpeg=no])
-  if test "${ac_cv_my_have_ffmpeg}" = "yes"; then
-    LIBAVCODEC_LIBS="-lavcodec"
-    LIBAVUTIL_LIBS="-lavutil"
-    LIBAVFORMAT_LIBS="-lavformat"
-    LIBSWSCALE_LIBS="-lswscale"
-    LIBSWRESAMPLE_LIBS="-lswresample"
-    dnl  Required by avformat/network.c
-    AC_CHECK_LIB(ws2_32, main, LOL_FFMPEG_EXTRA_LIBS="${LOL_FFMPEG_EXTRA_LIBS} -lws2_32")
-    dnl  Required by avformat/tls_schannel.c
-    AC_CHECK_LIB(secur32, main, LOL_FFMPEG_EXTRA_LIBS="${LOL_FFMPEG_EXTRA_LIBS} -lsecur32")
-    dnl  Required by avutil/random_seed.c
-    AC_CHECK_LIB(bcrypt, main, LOL_FFMPEG_EXTRA_LIBS="${LOL_FFMPEG_EXTRA_LIBS} -lbcrypt")
-    dnl  Required by avcodec/dxva2.c
-    AC_CHECK_LIB(ole32, main, LOL_FFMPEG_EXTRA_LIBS="${LOL_FFMPEG_EXTRA_LIBS} -lole32")
-  fi
-fi
-if test "${ac_cv_my_have_ffmpeg}" = "yes"; then
-  AC_DEFINE(LOL_USE_FFMPEG, 1, Define to 1 to use FFmpeg)
-  LOL_CFLAGS="${LOL_CFLAGS} ${LIBAVFORMAT_CFLAGS} ${LIBAVUTIL_CFLAGS} ${LIBAVCODEC_CFLAGS} ${LIBSWSCALE_CFLAGS}"
-  LOL_LIBS="${LOL_LIBS} ${LIBAVFORMAT_LIBS} ${LIBAVCODEC_LIBS} ${LIBAVUTIL_LIBS} ${LIBSWSCALE_LIBS} ${LIBSWRESAMPLE_LIBS} ${LOL_FFMPEG_EXTRA_LIBS}"
-fi
-
-]) # LOL_AC_CHECK_FFMPEG_INNER
-
diff --git a/build/autotools/m4/lol-gl.m4 b/build/autotools/m4/lol-gl.m4
deleted file mode 100644
index 50286988..00000000
--- a/build/autotools/m4/lol-gl.m4
+++ /dev/null
@@ -1,156 +0,0 @@
-dnl
-dnl  Lol Engine
-dnl
-dnl  Copyright © 2010—2017 Sam Hocevar <sam@hocevar.net>
-dnl
-dnl  Lol Engine is free software. It comes without any warranty, to
-dnl  the extent permitted by applicable law. You can redistribute it
-dnl  and/or modify it under the terms of the Do What the Fuck You Want
-dnl  to Public License, Version 2, as published by the WTFPL Task Force.
-dnl  See http://www.wtfpl.net/ for more details.
-dnl
-
-
-# LOL_AC_CHECK_OPENGL()
-# ---------------------
-AC_DEFUN([LOL_AC_CHECK_OPENGL],
-[
-ac_cv_my_have_gl="no"
-ac_cv_my_have_glew="no"
-if test "${enable_gl}" != "no"; then
-  LOL_AC_CHECK_OPENGL_INNER()
-fi
-AM_CONDITIONAL(LOL_USE_GL, test "${ac_cv_my_have_gl}" != "no")
-AM_CONDITIONAL(LOL_USE_GLEW, test "${ac_cv_my_have_glew}" != "no")
-])
-
-# LOL_AC_CHECK_OPENGL_INNER()
-# ---------------------------
-AC_DEFUN([LOL_AC_CHECK_OPENGL_INNER],
-[
-dnl  Find which version of OpenGL to use
-ac_cv_my_have_gl="no"
-ac_cv_my_stop_looking_for_gl="no"
-
-if test "x${ac_cv_my_stop_looking_for_gl}" = "xno"; then
-  LIBS_save="$LIBS"
-  LIBS="$LIBS -Wl,-framework -Wl,OpenGL"
-  AC_MSG_CHECKING(for -framework OpenGL)
-  AC_TRY_LINK([], [],
-   [AC_MSG_RESULT(yes)
-    ac_cv_my_have_gl="yes"
-    GL_LIBS="${GL_LIBS} -framework OpenGL"
-    LOL_TRY_CXXFLAGS(-ObjC++, [CXXFLAGS="${CXXFLAGS} -ObjC++"])
-    AC_DEFINE(HAVE_GL_2X, 1, Define to 1 if GL 2.x is available)],
-   [AC_MSG_RESULT(no)])
-  LIBS="$LIBS_save"
-fi
-
-if test "x${ac_cv_my_stop_looking_for_gl}" = "xno"; then
-  LIBS_save="$LIBS"
-  LIBS="$LIBS -Wl,-framework -Wl,OpenGLES"
-  AC_MSG_CHECKING(for -framework OpenGLES)
-  AC_TRY_LINK([], [],
-   [AC_MSG_RESULT(yes)
-    ac_cv_my_have_gl="yes"
-    GL_LIBS="${GL_LIBS} -framework OpenGLES"
-    LOL_TRY_CXXFLAGS(-ObjC++, [CXXFLAGS="${CXXFLAGS} -ObjC++"])
-    AC_DEFINE(HAVE_GLES_2X, 1, Define to 1 if GLES 2.x is available)],
-   [AC_MSG_RESULT(no)])
-  LIBS="$LIBS_save"
-fi
-
-dnl  Use the Raspberry Pi libraries?
-if test "x${ac_cv_my_stop_looking_for_gl}" = "xno"; then
-  AC_CHECK_HEADERS(bcm_host.h,
-   [AC_CHECK_LIB(vcos, main,
-     [ac_cv_my_have_gl="yes"
-      ac_cv_my_stop_looking_for_gl="yes"
-      AC_DEFINE(HAVE_GLES_2X, 1, Define to 1 if GLES 2.x is available)
-      dnl  FIXME: -lEGL does not belong here but the configure test fails
-      dnl  when cross-compiling, so we add it manually here.
-      GL_LIBS="${GL_LIBS} -lGLESv2 -lEGL -lvcos -lvchiq_arm -lbcm_host"])])
-fi
-
-if test "x${ac_cv_my_stop_looking_for_gl}" = "xno"; then
-  PKG_CHECK_MODULES(GLES2, glesv2,
-   [ac_cv_my_have_gl="yes"
-    AC_DEFINE(HAVE_GLES_2X, 1, Define to 1 if GLES 2.x is available)
-    GL_CFLAGS="${GL_CFLAGS} ${GLES2_CFLAGS}"
-    GL_LIBS="${GL_LIBS} ${GLES2_LIBS}"],
-   [:])
-fi
-
-if test "x${ac_cv_my_stop_looking_for_gl}" = "xno"; then
-  AC_CHECK_HEADER(GLES2/gl2.h,
-   [ac_cv_my_have_gl="yes"
-    AC_DEFINE(HAVE_GLES_2X, 1, Define to 1 if GLES 2.x is available)
-    AC_CHECK_LIB(GLESv2, glEnable,
-     [GL_LIBS="${GL_LIBS} -lGLESv2"])])
-fi
-
-if test "x${ac_cv_my_stop_looking_for_gl}" = "xno"; then
-  PKG_CHECK_MODULES(GL, gl,
-   [ac_cv_my_have_gl="yes"
-    AC_DEFINE(HAVE_GL_2X, 1, Define to 1 if GL 2.x is available)],
-   [:])
-fi
-
-if test "x${ac_cv_my_stop_looking_for_gl}" = "xno"; then
-  AC_CHECK_LIB(GL, glEnable,
-   [ac_cv_my_have_gl="yes"
-    AC_DEFINE(HAVE_GL_2X, 1, Define to 1 if GL 2.x is available) # FIXME: hackish
-    GL_LIBS="-lGL"])
-fi
-
-if test "x${ac_cv_my_stop_looking_for_gl}" = "xno"; then
-  AC_CHECK_HEADER(GL/gl.h,
-   [LIBS_save="$LIBS"
-    LIBS="$LIBS -lopengl32"
-    AC_MSG_CHECKING(for glLoadIdentity in -lopengl32)
-    AC_TRY_LINK([#include <GL/gl.h>],
-     [glLoadIdentity();],
-     [ac_cv_my_have_gl="yes"
-      AC_DEFINE(HAVE_GL_2X, 1, Define to 1 if GL 2.x is available) # FIXME: hack
-      AC_MSG_RESULT(yes)
-      GL_LIBS="-lopengl32"],
-     [AC_MSG_RESULT(no)])
-    LIBS="$LIBS_save"])
-fi
-
-dnl  Use Glew?
-PKG_CHECK_MODULES(GLEW, glew,
- [ac_cv_my_have_glew="yes"
-  GL_CFLAGS="${GLEW_CFLAGS} ${GL_CFLAGS}"
-  GL_LIBS="${GLEW_LIBS} ${GL_LIBS}"],
- [:])
-AC_CHECK_HEADER(GL/glew.h,
- [LIBS_save="${LIBS}"
-  LIBS="${LIBS} -lglew32s ${GL_LIBS}"
-  AC_MSG_CHECKING(for glewInit in -lglew32s)
-  AC_TRY_LINK(
-   [#include <GL/glew.h>],
-   [glewInit();],
-   [ac_cv_my_have_glew="yes"
-    GL_LIBS="-lglew32s ${GL_LIBS}"
-    AC_MSG_RESULT(yes)],
-   [AC_MSG_RESULT(no)])
-  LIBS="${LIBS_save}"])
-if test "${ac_cv_my_have_glew}" != "no"; then
-  AC_DEFINE(HAVE_GLES_2X, 1, Define to 1 if GLES 2.x is available)
-  AC_DEFINE(LOL_USE_GLEW, 1, Define to 1 to use libglew)
-fi
-
-dnl  Poor man's GL feature detection if all else failed.
-save_LIBS="${LIBS}"
-LIBS="${LIBS} ${GL_LIBS} ${GLES2_LIBS}"
-AC_CHECK_FUNCS(glBegin)
-LIBS="${save_LIBS}"
-
-dnl  Warn if we couldn't find an OpenGL-like API
-if test "${ac_cv_my_have_gl}" = "no"; then
-  AC_MSG_WARN([[No OpenGL or OpenGL ES implementation found]])
-fi
-
-]) # LOL_AC_CHECK_OPENGL_INNER
-
diff --git a/build/autotools/m4/lol-misc.m4 b/build/autotools/m4/lol-misc.m4
deleted file mode 100644
index 4c89bad6..00000000
--- a/build/autotools/m4/lol-misc.m4
+++ /dev/null
@@ -1,59 +0,0 @@
-dnl
-dnl  Lol Engine
-dnl
-dnl  Copyright © 2010—2016 Sam Hocevar <sam@hocevar.net>
-dnl
-dnl  Lol Engine is free software. It comes without any warranty, to
-dnl  the extent permitted by applicable law. You can redistribute it
-dnl  and/or modify it under the terms of the Do What the Fuck You Want
-dnl  to Public License, Version 2, as published by the WTFPL Task Force.
-dnl  See http://www.wtfpl.net/ for more details.
-dnl
-
-
-dnl LOL_TRY_CFLAGS (CFLAGS, [ACTION-IF-WORKS], [ACTION-IF-FAILS])
-dnl check if $CC supports a given set of cflags
-AC_DEFUN([LOL_TRY_CFLAGS],
-    [AC_MSG_CHECKING([if $CC supports $1 flags])
-    save_CFLAGS="$CFLAGS"
-    CFLAGS="$1 -Werror"
-    AC_TRY_COMPILE([],[],[ac_cv_try_cflags_ok=yes],[ac_cv_try_cflags_ok=no])
-    CFLAGS="$save_CFLAGS"
-    AC_MSG_RESULT([$ac_cv_try_cflags_ok])
-    if test x"$ac_cv_try_cflags_ok" = x"yes"; then
-        ifelse([$2],[],[:],[$2])
-    else
-        ifelse([$3],[],[:],[$3])
-    fi])
-
-dnl LOL_TRY_CXXFLAGS (CXXFLAGS, [ACTION-IF-WORKS], [ACTION-IF-FAILS])
-dnl check if $CXX supports a given set of cxxflags
-AC_DEFUN([LOL_TRY_CXXFLAGS],
-    [AC_MSG_CHECKING([if $CXX supports $1 flags])
-    AC_LANG_PUSH(C++)
-    save_CXXFLAGS="$CXXFLAGS"
-    CXXFLAGS="$1 -Werror"
-    AC_TRY_COMPILE([],[],[ac_cv_try_cxxflags_ok=yes],[ac_cv_try_cxxflags_ok=no])
-    CXXFLAGS="$save_CXXFLAGS"
-    AC_MSG_RESULT([$ac_cv_try_cxxflags_ok])
-    if test x"$ac_cv_try_cxxflags_ok" = x"yes"; then
-        ifelse([$2],[],[:],[$2])
-    else
-        ifelse([$3],[],[:],[$3])
-    fi
-    AC_LANG_POP(C++)])
-
-dnl LOL_TRY_LDFLAGS (LDFLAGS, [ACTION-IF-WORKS], [ACTION-IF-FAILS])
-dnl check if $CC supports a given set of ldflags
-AC_DEFUN([LOL_TRY_LDFLAGS],
-    [AC_MSG_CHECKING([if $CC supports $1 flags])
-    save_LDFLAGS="$LDFLAGS"
-    LDFLAGS="$1 -Werror"
-    AC_TRY_LINK([],[],[ac_cv_try_ldflags_ok=yes],[ac_cv_try_ldflags_ok=no])
-    LDFLAGS="$save_LDFLAGS"
-    AC_MSG_RESULT([$ac_cv_try_ldflags_ok])
-    if test x"$ac_cv_try_ldflags_ok" = x"yes"; then
-        ifelse([$2],[],[:],[$2])
-    else
-        ifelse([$3],[],[:],[$3])
-    fi])
diff --git a/build/autotools/m4/lol-sdl.m4 b/build/autotools/m4/lol-sdl.m4
deleted file mode 100644
index 840ef564..00000000
--- a/build/autotools/m4/lol-sdl.m4
+++ /dev/null
@@ -1,126 +0,0 @@
-dnl
-dnl  Lol Engine
-dnl
-dnl  Copyright © 2010—2017 Sam Hocevar <sam@hocevar.net>
-dnl
-dnl  Lol Engine is free software. It comes without any warranty, to
-dnl  the extent permitted by applicable law. You can redistribute it
-dnl  and/or modify it under the terms of the Do What the Fuck You Want
-dnl  to Public License, Version 2, as published by the WTFPL Task Force.
-dnl  See http://www.wtfpl.net/ for more details.
-dnl
-
-
-# LOL_AC_CHECK_SDL()
-# ------------------
-AC_DEFUN([LOL_AC_CHECK_SDL],
-[
-ac_cv_my_have_sdl="no"
-ac_cv_my_have_sdl_image="no"
-ac_cv_my_have_sdl_mixer="no"
-if test "${enable_sdl}" != "no"; then
-  LOL_AC_CHECK_SDL_INNER()
-fi
-AM_CONDITIONAL(LOL_USE_SDL, test "${ac_cv_my_have_sdl}" != "no")
-AM_CONDITIONAL(LOL_USE_SDL_MIXER, test "${ac_cv_my_have_sdl_mixer}" != "no")
-AM_CONDITIONAL(LOL_USE_SDL_IMAGE, test "${ac_cv_my_have_sdl_image}" != "no")
-])
-
-# LOL_AC_CHECK_SDL_INNER()
-# ------------------------
-AC_DEFUN([LOL_AC_CHECK_SDL_INNER],
-[
-dnl  Find which version of SDL to use (always required on Linux or Win32)
-dnl
-dnl  Defined C/C++ macros:
-dnl    LOL_USE_SDL         -- whether SDL v2 was found
-dnl    LOL_USE_SDL_IMAGE   -- whether SDL_image was found
-dnl    LOL_USE_SDL_MIXER   -- whether SDL_mixer was found
-dnl    HAVE_SDL_H      -- whether to include <SDL.h>
-dnl    HAVE_SDL2_SDL_H -- whether to include <SDL2/SDL.h>
-dnl  Generated automake conditionals:
-dnl    LOL_USE_SDL         -- whether SDL v2 was found
-dnl    LOL_USE_SDL_IMAGE   -- whether SDL_image was found
-dnl    LOL_USE_SDL_MIXER   -- whether SDL_mixer was found
-dnl  Generated shell variables:
-dnl    SDL_CFLAGS      -- flags for SDL compilation
-dnl    SDL_LIBS        -- flags for SDL linking
-
-
-dnl  First, try the proper pkg-config check for SDL2
-
-if test "x${ac_cv_my_have_sdl}" = xno; then
-  PKG_CHECK_MODULES(SDL2, sdl2,
-   [ac_cv_my_have_sdl="yes"
-    PKG_CHECK_MODULES(SDL2MIXER, SDL2_mixer,
-     [ac_cv_my_have_sdl_mixer="yes"
-      AC_DEFINE(HAVE_SDL_MIXER_H, 1, Define to 1 to use SDL_mixer.h)],
-     [:])
-    PKG_CHECK_MODULES(SDL2IMAGE, SDL2_image,
-     [ac_cv_my_have_sdl_image="yes"
-      AC_DEFINE(HAVE_SDL_IMAGE_H, 1, Define to 1 to use SDL_image.h)],
-     [:])
-    SDL_CFLAGS="${SDL2_CFLAGS} ${SDL2MIXER_CFLAGS} ${SDL2IMAGE_CFLAGS}"
-    SDL_LIBS="${SDL2_LIBS} ${SDL2MIXER_LIBS} ${SDL2IMAGE_LIBS}"
-    AC_DEFINE(HAVE_SDL_H, 1, Define to 1 to use SDL.h)],
-   [:])
-fi
-
-
-dnl  Maybe all this has failed, try direct inclusion instead
-
-if test "x${ac_cv_my_have_sdl}" = xno; then
-  save_CPPFLAGS="${CPPFLAGS}"
-  save_LIBS="${LIBS}"
-  CPPFLAGS="${CPPFLAGS} ${SDL_CFLAGS}"
-  LIBS="${LIBS} ${SDL_LIBS}"
-  AC_CHECK_HEADERS(SDL.h SDL2/SDL.h,
-   [ac_cv_my_have_sdl="yes"])
-  if test "x${ac_cv_my_have_sdl}" != xno; then
-    AC_CHECK_HEADERS(SDL_mixer.h SDL2/SDL_mixer.h,
-     [ac_cv_my_have_sdl_mixer="yes"])
-    AC_CHECK_HEADERS(SDL_image.h SDL2/SDL_image.h,
-     [ac_cv_my_have_sdl_image="yes"])
-    AC_CHECK_LIB(SDL2, main,
-     [SDL_LIBS="${SDL_LIBS} -lSDL2"],
-     [ac_cv_my_have_sdl="no"])
-    AC_CHECK_LIB(SDL2main, main,
-     [SDL_LIBS="${SDL_LIBS} -lSDL2main -lSDL2"])
-    AC_CHECK_LIB(SDL2_mixer, main,
-     [SDLMIXER_LIBS="${SDLMIXER_LIBS} -lSDL2_mixer"],
-     [ac_cv_my_have_sdl_mixer="no"])
-    AC_CHECK_LIB(SDL2_image, main,
-     [SDLIMAGE_LIBS="${SDLIMAGE_LIBS} -lSDL2_image"],
-     [AC_CHECK_LIB(SDL2_image_bmp-jpg-png, main,
-       [SDLIMAGE_LIBS="${SDLIMAGE_LIBS} -lSDL2_image_bmp-jpg-png"],
-       [ac_cv_my_have_sdl_image="no"])])
-    SDL_CFLAGS="${SDL_CFLAGS} ${SDLMIXER_CFLAGS} ${SDLIMAGE_CFLAGS}"
-    SDL_LIBS="${SDL_LIBS} ${SDLMIXER_LIBS} ${SDLIMAGE_LIBS}"
-  fi
-  CPPFLAGS="${save_CPPFLAGS}"
-  LIBS="${save_LIBS}"
-fi
-
-
-dnl  Convert all this into conditionals
-
-if test "x${ac_cv_my_have_sdl}" = xno; then
-  AC_MSG_WARN([SDL v2 not found])
-else
-  AC_DEFINE(LOL_USE_SDL, 1, Define to 1 to use SDL)
-fi
-
-if test "x${ac_cv_my_have_sdl_mixer}" = xno; then
-  AC_MSG_WARN([SDL_mixer not found])
-else
-  AC_DEFINE(LOL_USE_SDL_MIXER, 1, Define to 1 to use SDL_mixer)
-fi
-
-if test "x${ac_cv_my_have_sdl_image}" = xno; then
-  AC_MSG_WARN([SDL_image not found])
-else
-  AC_DEFINE(LOL_USE_SDL_IMAGE, 1, Define to 1 to use SDL_image)
-fi
-
-]) # LOL_AC_CHECK_SDL_INNER
-
diff --git a/build/autotools/m4/lol-subproject.m4 b/build/autotools/m4/lol-subproject.m4
deleted file mode 100644
index bef18e40..00000000
--- a/build/autotools/m4/lol-subproject.m4
+++ /dev/null
@@ -1,55 +0,0 @@
-dnl
-dnl  Lol Engine
-dnl
-dnl  Copyright © 2010—2016 Sam Hocevar <sam@hocevar.net>
-dnl
-dnl  Lol Engine is free software. It comes without any warranty, to
-dnl  the extent permitted by applicable law. You can redistribute it
-dnl  and/or modify it under the terms of the Do What the Fuck You Want
-dnl  to Public License, Version 2, as published by the WTFPL Task Force.
-dnl  See http://www.wtfpl.net/ for more details.
-dnl
-
-
-# LOL_AC_SUBPROJECT()
-# ---------------------
-AC_DEFUN([LOL_AC_SUBPROJECT], [
-
-dnl
-dnl  Parse build.config if present
-dnl
-
-AC_MSG_WARN([${srcdir}])
-ac_lol_configure_args=""
-if test -f ${srcdir}/build.config; then
-  for x in `sed -ne 's,.*<enable_\(@<:@^>@:>@*\)>\(@<:@^<@:>@*\)</enable_@<:@^>@:>@*>.*,\1=\2,p' ${srcdir}/build.config`; do
-    eval "enable_${x}"
-    case ${x} in
-      *=no)  arg="--disable-${x%=no}" ;;
-      *=yes) arg="--enable-${x%=yes}" ;;
-      *) arg="" ;;
-    esac
-    ac_lol_configure_args="${ac_lol_configure_args} ${arg}"
-  done
-fi
-
-dnl
-dnl  Build and configure Lol Engine before our repository
-dnl  Ensure $lol_srcdir and $lol_builddir are properly set
-dnl
-
-ac_configure_args="${ac_configure_args} --enable-subproject ${ac_lol_configure_args} $1"
-AC_CONFIG_SUBDIRS([lol])
-AC_SUBST(lol_srcdir, '${top_srcdir}/lol')
-AC_SUBST(lol_builddir, '${top_builddir}/lol')
-
-dnl
-dnl  Subprojects use the same macros as us
-dnl
-
-LOL_AC_INIT()
-LOL_AC_CHECK()
-LOL_AC_FINI()
-
-]) # LOL_AC_SUBPROJECT
-
diff --git a/build/bitten/config-trunk-private.xml b/build/bitten/config-trunk-private.xml
deleted file mode 100644
index cf689ff1..00000000
--- a/build/bitten/config-trunk-private.xml
+++ /dev/null
@@ -1,22 +0,0 @@
-<build xmlns:sh="http://bitten.edgewall.org/tools/sh"
-       xmlns:svn="http://bitten.edgewall.org/tools/svn"
-       xmlns:c="http://bitten.edgewall.org/tools/c">
-  <step id="checkout" description="Checkout source from repository">
-    <svn:checkout url="svn://svn.zoy.org/lolengine/" path="${path}" revision="${revision}" />
-  </step>
-  <step id="bootstrap" description="Bootstrap build system">
-    <sh:exec file="./build/lol-build" args="bootstrap ${platform}"/>
-  </step>
-  <step id="configure" description="Configure tree">
-    <sh:exec file="./build/lol-build" args="configure ${platform}"/>
-  </step>
-  <step id="build" description="Build tree">
-    <sh:exec file="./build/lol-build" args="build ${platform}"/>
-  </step>
-  <step id="check" description="Run tests">
-    <sh:exec file="./build/lol-build" args="check ${platform}"/>
-  </step>
-  <step id="clean" description="Clean tree">
-    <sh:exec file="./build/lol-build" args="clean ${platform}"/>
-  </step>
-</build>
diff --git a/build/bitten/config-trunk-public.xml b/build/bitten/config-trunk-public.xml
deleted file mode 100644
index fba0d566..00000000
--- a/build/bitten/config-trunk-public.xml
+++ /dev/null
@@ -1,22 +0,0 @@
-<build xmlns:sh="http://bitten.edgewall.org/tools/sh"
-       xmlns:svn="http://bitten.edgewall.org/tools/svn"
-       xmlns:c="http://bitten.edgewall.org/tools/c">
-  <step id="checkout" description="Checkout source from repository">
-    <svn:checkout url="svn://svn.zoy.org/lolengine/" path="${path}" revision="${revision}" username="anonymous" password="" no_auth_cache="true" />
-  </step>
-  <step id="bootstrap" description="Bootstrap build system">
-    <sh:exec file="./build/lol-build" args="bootstrap ${platform}"/>
-  </step>
-  <step id="configure" description="Configure tree">
-    <sh:exec file="./build/lol-build" args="configure ${platform}"/>
-  </step>
-  <step id="build" description="Build tree">
-    <sh:exec file="./build/lol-build" args="build ${platform}"/>
-  </step>
-  <step id="check" description="Run tests">
-    <sh:exec file="./build/lol-build" args="check ${platform}"/>
-  </step>
-  <step id="clean" description="Clean tree">
-    <sh:exec file="./build/lol-build" args="clean ${platform}"/>
-  </step>
-</build>
diff --git a/build/build-android b/build/build-android
deleted file mode 100755
index b96ab7ed..00000000
--- a/build/build-android
+++ /dev/null
@@ -1,10 +0,0 @@
-#!/bin/sh
-
-# This can't hurt
-make distclean
-
-set -e
-./build/lol-build "$@" bootstrap android-arm
-./build/lol-build "$@" configure android-arm
-./build/lol-build "$@" build android-arm
-
diff --git a/build/build-html b/build/build-html
deleted file mode 100755
index c1dc83b7..00000000
--- a/build/build-html
+++ /dev/null
@@ -1,10 +0,0 @@
-#!/bin/sh
-
-# This can't hurt
-make distclean
-
-set -e
-"$(dirname "$0")/lol-build" "$@" bootstrap web-html
-"$(dirname "$0")/lol-build" "$@" configure web-html
-"$(dirname "$0")/lol-build" "$@" build web-html
-
diff --git a/build/build-js b/build/build-js
deleted file mode 100755
index f35558c4..00000000
--- a/build/build-js
+++ /dev/null
@@ -1,10 +0,0 @@
-#!/bin/sh
-
-# This can't hurt
-make distclean
-
-set -e
-./build/lol-build "$@" bootstrap web-js
-./build/lol-build "$@" configure web-js
-./build/lol-build "$@" build web-js
-
diff --git a/build/build-linux b/build/build-linux
deleted file mode 100755
index 35fded75..00000000
--- a/build/build-linux
+++ /dev/null
@@ -1,11 +0,0 @@
-#!/bin/sh
-
-##  Native Linux compilation for Lol Engine -- Sam Hocevar <sam@hocevar.net>
-
-set -ex
-
-./bootstrap
-./configure
-make clean
-make -j6
-
diff --git a/build/build-mingw b/build/build-mingw
deleted file mode 100755
index 9598b38a..00000000
--- a/build/build-mingw
+++ /dev/null
@@ -1,10 +0,0 @@
-#!/bin/sh
-
-# This can't hurt
-make distclean
-
-set -e
-./build/lol-build "$@" bootstrap windows-i386
-./build/lol-build "$@" configure windows-i386
-./build/lol-build "$@" build windows-i386
-
diff --git a/build/build-mingw64 b/build/build-mingw64
deleted file mode 100755
index cdbf4e4a..00000000
--- a/build/build-mingw64
+++ /dev/null
@@ -1,10 +0,0 @@
-#!/bin/sh
-
-# This can't hurt
-make distclean
-
-set -e
-./build/lol-build "$@" bootstrap windows-amd64
-./build/lol-build "$@" configure windows-amd64
-./build/lol-build "$@" build windows-amd64
-
diff --git a/build/build-raspi b/build/build-raspi
deleted file mode 100755
index 4b1728ad..00000000
--- a/build/build-raspi
+++ /dev/null
@@ -1,10 +0,0 @@
-#!/bin/sh
-
-# This can't hurt
-make distclean
-
-set -e
-./build/lol-build "$@" bootstrap raspi-arm
-./build/lol-build "$@" configure raspi-arm
-./build/lol-build "$@" build raspi-arm
-
diff --git a/build/check-source.sh b/build/check-source.sh
deleted file mode 100755
index b41cf7b9..00000000
--- a/build/check-source.sh
+++ /dev/null
@@ -1,209 +0,0 @@
-#!/bin/sh
-
-set -e
-
-fix=false
-quiet=false
-while [ "$#" -gt 0 ]; do
-    case "$1" in
-      -q)
-        quiet=true
-        ;;
-      -w)
-        fix=true
-        ;;
-      -c)
-        commit=true
-        fix=true
-        quiet=true
-        ;;
-      *)
-        echo "E: invalid argument $1" >&2
-        exit 1
-        ;;
-    esac
-    shift
-done
-
-error() { if [ "$quiet" != true ]; then echo "E: $1" >&2; fi }
-info() { if [ "$quiet" != true ]; then echo "I: $1" >&2; fi }
-
-# Ensure the system tools do not attempt to perform multibyte conversions
-export LANG=C
-
-# Find out where the top directory is and go there
-top_srcdir="$(cd "$(dirname $0)"; cd ..; pwd)"
-cd "$top_srcdir"
-
-# Check for working tools
-if [ "$(echo foo | grep -c foo)" != 1 ]; then
-    error "grep -c does not appear to work, cancelling"
-    exit 0
-fi
-
-SED=sed
-if gsed --version >/dev/null 2>&1; then
-    SED=gsed
-fi
-if [ "$(echo 'x\x' | $SED 's/.*[^x\t]//')" != x ]; then
-    error "sed does not appear to work, cancelling"
-    exit 0
-fi
-
-if d2u -h >/dev/null 2>&1; then
-    d2u=d2u
-elif dos2unix -h >/dev/null 2>&1; then
-    d2u=dos2unix
-else
-    error "d2u or dos2unix not found, cancelling"
-    exit 0
-fi
-
-# Find out whether we need to care about CRLF
-case "$(uname 2>/dev/null)" in
-  MINGW*|MSYS*)
-    can_check_crlf=false
-    ;;
-  *)
-    can_check_crlf=true
-    ;;
-esac
-
-# Find out what kind of Vcs directory this is
-if [ -f "$top_srcdir/.git/index" ]; then
-    info "detected Git repository"
-    repo=git
-else
-    info "not in a Git directory, nothing to do"
-    exit 0
-fi
-
-total_crlfs=0
-total_spaces=0
-total_tabs=0
-
-OIFS="$IFS"
-IFS='
-'
-FILES="`git ls-files`"
-
-total_files=0
-for file in $FILES; do
-    if [ -f "$file" ]; then
-        total_files="$(($total_files + 1))"
-    fi
-done
-
-total_errors=0
-for file in $FILES; do
-    should_check_crlf=false
-    should_check_spaces=false
-    should_check_props=false
-
-    case "$file" in
-      # These files we know how to handle
-      *.c|*.cpp|*.m|*.mm|*.h|*.hh|*.lolfx|*.lua|*.l|*.y|*.sh|*.py)
-          should_check_crlf=true
-          should_check_spaces=true
-          should_check_props=true
-          ;;
-      *)
-          continue
-          ;;
-    esac
-
-    case "$file" in
-      # Don't harass these people, but fix their line endings
-      people/peeweek/*|\
-      people/touky/*|\
-      people/benlitz/*|\
-      people/sam/lua-*)
-          should_check_spaces=false
-          ;;
-    esac
-
-    clean=true
-
-    # Check for CR LF
-    if [ "$can_check_crlf" = true -a "$should_check_crlf" = true ]; then
-        ncrlfs="$(od -tx1 "$file" | cut -b8- | tr ' ' '\n' | grep -c 0d || true)"
-        total_crlfs="$(($total_crlfs + $ncrlfs))"
-        if [ "$ncrlfs" -gt 0 ]; then
-            clean=false
-            if [ "$fix" = true ]; then
-                $d2u -q "$file"
-                info "$file has $ncrlfs CR characters"
-            else
-                error "$file has $ncrlfs CR characters"
-            fi
-        fi
-    fi
-
-    # Check for trailing spaces
-    if [ "$should_check_spaces" = true ]; then
-        nspaces="$($SED 's/.*[^ \t]//' "$file" | tr -cd '\t ' | wc -c)"
-        total_spaces="$(($total_spaces + $nspaces))"
-        if [ "$nspaces" -gt 0 ]; then
-            clean=false
-            if [ "$fix" = true ]; then
-                $SED -i 's/[[:space:]][[:space:]]*$//g' "$file"
-                info "$file has $nspaces trailing spaces"
-            else
-                error "$file has $nspaces trailing spaces"
-            fi
-        fi
-    fi
-
-    # Check for tabs
-    if [ "$should_check_spaces" = true ]; then
-        ntabs="$(tr -cd '\t' < "$file" | wc -c)"
-        total_tabs="$(($total_tabs + $ntabs))"
-        if [ "$ntabs" -gt 0 ]; then
-            clean=false
-            if [ "$fix" = true ]; then
-                $SED -i 's/\t/    /g' "$file"
-                info "$file has $ntabs tabs"
-            else
-                error "$file has $ntabs tabs"
-            fi
-        fi
-    fi
-
-    if [ "$clean" != true ]; then
-        total_errors="$(($total_errors + 1))"
-    fi
-done
-IFS="$OIFS"
-
-if [ "$total_errors" -gt 0 ]; then
-    if [ "$commit" = "true" ]; then
-        # EITHER: commit all modified files
-        git commit --author 'Lolbot <lolbot@zoy.org>' -a -F - << EOF
-fixed $total_errors files out of $total_files:
- - removed $total_crlfs CR characters
- - removed $total_spaces trailing whitespaces
- - replaced $total_tabs tabs with spaces
-EOF
-    elif [ "$fix" = "true" ]; then
-        # OR: report in stdout
-        info "fixed $total_errors files out of $total_files:"
-        if [ "$total_crlfs" -gt 0 ]; then
-            info " - fixed $total_crlfs CR characters"
-        fi
-        if [ "$total_spaces" -gt 0 ]; then
-            info " - fixed $total_spaces trailing spaces"
-        fi
-        if [ "$total_tabs" -gt 0 ]; then
-            info " - fixed $total_tabs tabs"
-        fi
-        info "re-run with -c to commit fixes"
-    else
-        # OR: warn about how to fix errors
-        info "re-run with -w to fix errors"
-        exit 1
-    fi
-else
-    info "all $total_files source files appear to be OK, congratulations"
-fi
-
-
diff --git a/build/lol-build b/build/lol-build
deleted file mode 100755
index 51af5e90..00000000
--- a/build/lol-build
+++ /dev/null
@@ -1,344 +0,0 @@
-#!/bin/sh
-
-#
-# Lol Engine build script
-# Usage:
-#   lol-build [<flags>...] <action> [<platform>]
-#
-# Supported flags:
-#  --enable-debug
-#  --enable-devel
-#  --enable-release
-#
-# Where <action> is one of:
-#  - bootstrap
-#  - configure
-#  - build
-#  - check
-#  - clean
-#
-# And <platform> is one of:
-#  - linux-i386
-#  - linux-amd64
-#  - ios-arm
-#  - osx-amd64
-#  - android-arm
-#  - win*-i386
-#  - win*-amd64
-#  - raspi-arm
-#  - web-html
-#  - web-js
-#
-
-set -e
-
-###############################################################################
-# Commandline parsing
-#
-action=""
-platform=""
-configure_flags=""
-while [ "$#" -gt 0 ]; do
-    case "$1" in
-      --enable-debug|--enable-devel|--enable-release)
-        configure_flags="${configure_flags} $1"
-        ;;
-      --*)
-        echo "E: invalid flag $1"
-        exit 1
-        ;;
-      *)
-        if [ -z "$action" ]; then
-            action="$1"
-        else
-            platform="$1"
-        fi
-        ;;
-    esac
-    shift
-done
-
-###############################################################################
-# Initialisation code
-#
-#  - sets the top_srcdir variable
-#  - sets the LOL_PARALLEL variable
-#  - fix PATH and MKPATH if necessary
-#
-__init__()
-{
-    top_srcdir="$(dirname "$0")/.."
-    cd "$top_srcdir"
-    top_srcdir="`pwd`"
-
-    # Try to count CPU cores. First obvious try: /proc/cpuinfo on Linux
-    case "$cpu_count" in
-      [1-9]|[1-9][0-9]|[1-9][0-9][0-9]) ;;
-      *) if [ -r "/proc/cpuinfo" ]; then
-           cpu_count="$(grep -c '^processor\>' /proc/cpuinfo 2>/dev/null || true)"
-         fi ;;
-    esac
-    # If that didn't work, try sysctl (for OS X machines)
-    case "$cpu_count" in
-      [1-9]|[1-9][0-9]|[1-9][0-9][0-9]) ;;
-      *) cpu_count="$(sysctl -n hw.ncpu 2>/dev/null || true)" ;;
-    esac
-    # Otherwise, CPUInfo.exe (from Xoreax's XGE) may help on Windows
-    case "$cpu_count" in
-      [1-9]|[1-9][0-9]|[1-9][0-9][0-9]) ;;
-      *) cpu_count="$(CPUInfo.exe | sed -ne 's/CPU Cores.* \([0-9][0-9]*\)/\1/p')" ;;
-    esac
-    # Otherwise, Windows may define NUMBER_OF_PROCESSORS
-    case "$cpu_count" in
-      [1-9]|[1-9][0-9]|[1-9][0-9][0-9]) ;;
-      *) cpu_count="$NUMBER_OF_PROCESSORS" ;;
-    esac
-    # Otherwise, be conservative and assume 1 CPU core
-    case "$cpu_count" in
-      [1-9]|[1-9][0-9]|[1-9][0-9][0-9]) ;;
-      *) cpu_count=1 ;;
-    esac
-    # Now decide how many parallel threads to launch
-    case "$cpu_count" in
-      1) LOL_PARALLEL=1 ;;
-      2) LOL_PARALLEL=3 ;;
-      *) LOL_PARALLEL="$(expr $cpu_count '*' 3 / 2)" ;;
-    esac
-
-    case "${MSYSTEM}" in
-        MINGW32|MINGW64)
-            PATH="$PATH:./external/gtk-2.22.1/bin"
-            M4PATH="$M4PATH:./external/gtk-2.22.1/share/aclocal"
-            ;;
-    esac
-
-    # Ensure we don’t launch weird Windows binaries when cross-compiling
-    WINEDLLOVERRIDES="winemenubuilder.exe,wineboot.exe,explorer.exe,winedbg.exe=d"
-    export WINEDLLOVERRIDES
-
-    # Ensure SDL does not redirect stdout/stderr to local files
-    SDL_STDIO_REDIRECT=0
-    export SDL_STDIO_REDIRECT
-}
-
-bootstrap()
-{
-    cd "$top_srcdir"
-    case "$platform" in
-        *)
-            PATH="$PATH" M4PATH="$M4PATH" ./bootstrap
-            ;;
-    esac
-}
-
-do_configure()
-{
-    ./configure ${configure_flags} "$@"
-}
-
-configure()
-{
-    cd "$top_srcdir"
-    case "$platform" in
-        android-arm)
-            PKG_CONFIG_PATH="$PKG_CONFIG_PATH:$PWD/external/libcaca-0.99.beta18/lib/pkgconfig"
-            LDFLAGS="$LDFLAGS -L$PWD/external/libcaca-0.99.beta18/lib/arm-linux-androideabi -lz"
-            CPPFLAGS="$CPPFLAGS -I$PWD/external/libcaca-0.99.beta18/include -DCACA_STATIC"
-            ;;
-        win*-i386)
-            if test "x${MSYSTEM}" = xMINGW32; then
-                :
-            elif i586-mingw32msvc-g++ --version >/dev/null 2>&1; then
-                HOSTFLAGS=--host=i586-mingw32msvc
-                BUILDFLAGS=--build=none
-            elif i686-w64-mingw32-g++ --version >/dev/null 2>&1; then
-                HOSTFLAGS=--host=i686-w64-mingw32
-                BUILDFLAGS=--build=none
-            else
-                echo "Error: could not find win32 compiler" >&2
-                false
-            fi
-            if test "x${MSYSTEM}" = xMINGW64; then
-                # If using mingw64, we're not really cross-compiling
-                BUILDFLAGS=
-            fi
-            PKG_CONFIG_PATH="$PKG_CONFIG_PATH:$PWD/external/gtkglarea-2.0.1/lib/pkgconfig"
-            PKG_CONFIG_PATH="$PKG_CONFIG_PATH:$PWD/external/libcaca-0.99.beta18/lib/pkgconfig"
-            LDFLAGS="$LDFLAGS -L$PWD/external/ffmpeg-20190130/lib/i686-w64-mingw32"
-            LDFLAGS="$LDFLAGS -L$PWD/external/glew-2.1.0/lib/i686-w64-mingw32"
-            LDFLAGS="$LDFLAGS -L$PWD/external/sdl-2.0.9/lib/i686-w64-mingw32"
-            LDFLAGS="$LDFLAGS -L$PWD/external/sdl-image-2.0.4/lib/i686-w64-mingw32"
-            LDFLAGS="$LDFLAGS -L$PWD/external/sdl-mixer-2.0.4/lib/i686-w64-mingw32"
-            LDFLAGS="$LDFLAGS -L$PWD/external/gtk-2.22.1/lib"
-            LDFLAGS="$LDFLAGS -L$PWD/external/gtk-2.22.1/bin"
-            LDFLAGS="$LDFLAGS -L$PWD/external/gtkglarea-2.0.1/lib"
-            LDFLAGS="$LDFLAGS -L$PWD/external/libcaca-0.99.beta18/lib/i686-w64-mingw32"
-            ;;
-        win*-amd64)
-            if test "x${MSYSTEM}" = xMINGW64; then
-                :
-            elif x86_64-w64-mingw32-g++ --version >/dev/null 2>&1; then
-                HOSTFLAGS=--host=x86_64-w64-mingw32
-                BUILDFLAGS=--build=none
-            else
-                echo "Error: could not find win64 compiler" >&2
-                false
-            fi
-            if test "x${MSYSTEM}" = xMINGW32; then
-                # If using mingw32, we're not really cross-compiling
-                BUILDFLAGS=
-            fi
-            PKG_CONFIG_PATH="$PKG_CONFIG_PATH:$PWD/external/gtkglarea-2.0.1/lib/pkgconfig"
-            PKG_CONFIG_PATH="$PKG_CONFIG_PATH:$PWD/external/libcaca-0.99.beta18/lib/pkgconfig"
-            LDFLAGS="$LDFLAGS -L$PWD/external/ffmpeg-20190130/lib/x86_64-w64-mingw32"
-            LDFLAGS="$LDFLAGS -L$PWD/external/glew-2.1.0/lib/x86_64-w64-mingw32"
-            LDFLAGS="$LDFLAGS -L$PWD/external/sdl-2.0.9/lib/x86_64-w64-mingw32"
-            LDFLAGS="$LDFLAGS -L$PWD/external/sdl-image-2.0.4/lib/x86_64-w64-mingw32"
-            LDFLAGS="$LDFLAGS -L$PWD/external/sdl-mixer-2.0.4/lib/x86_64-w64-mingw32"
-            LDFLAGS="$LDFLAGS -L$PWD/external/libcaca-0.99.beta18/lib/x86_64-w64-mingw32"
-            ;;
-        *-i386)
-            # Ensure we're _really_ on i386
-            CXXFLAGS="$CXXFLAGS -m32"
-            ;;
-        *-amd64)
-            # Ensure we're _really_ on amd64
-            CXXFLAGS="$CXXFLAGS -m64"
-            ;;
-        web-*)
-            # Force cross-compilation because AC_TRY_LINK is going to check
-            # whether our binaries have the executable bit set.
-            HOSTFLAGS=--host=none
-            BUILDFLAGS=--build=`$top_srcdir/.auto/config.guess`
-            ;;
-    esac
-    case "$platform" in
-        ios-arm)
-            XCODE="/Applications/Xcode.app/Contents/Developer"
-            SDKVER="6.1"
-            DEVROOT="$XCODE/Platforms/iPhoneOS.platform/Developer"
-            SDKROOT="$DEVROOT/SDKs/iPhoneOS$SDKVER.sdk"
-            CC="$XCODE/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang"
-            CXX="$XCODE/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang++"
-            do_configure --host=armv7-apple-darwin10 CPPFLAGS="$CPPFLAGS" LDFLAGS="$LDFLAGS" CC="$CC" CXX="$CXX"
-            ;;
-        android-arm)
-            CPPFLAGS="$CPPFLAGS -I$ANDROID_NDK_ROOT/sources/android/native_app_glue -fpic -fomit-frame-pointer -fno-strict-aliasing"
-            CFLAGS="$CFLAGS"
-            CXXFLAGS="$CXXFLAGS"
-            LOL_LIBS="$LOL_LIBS -lm -fpic -XCClinker -shared -u ANativeActivity_onCreate"
-            HOST=armv7a-linux-androideabi27
-            PKG_CONFIG_PATH="$PKG_CONFIG_PATH" do_configure --host="$HOST" CC="$HOST-clang" CXX="$HOST-clang++" ac_cv_exeext=.so CPPFLAGS="$CPPFLAGS" CFLAGS="$CFLAGS" CXXFLAGS="$CXXFLAGS" LDFLAGS="$LDFLAGS" LOL_LIBS="$LOL_LIBS"
-            # FIXME: is this needed?
-            # ant debug
-            # ant debug install
-            # ant clean
-            ;;
-        raspi-arm)
-            do_configure --host=arm-bcm2708hardfp-linux-gnueabi CPPFLAGS="-I$RASPI_SDK_ROOT/firmware/opt/vc/include -I$RASPI_SDK_ROOT/firmware/opt/vc/include/interface/vmcs_host/linux -I$RASPI_SDK_ROOT/chroot/usr/include -I$RASPI_SDK_ROOT/chroot/usr/include/arm-linux-gnueabihf" LDFLAGS="-L$RASPI_SDK_ROOT/firmware/opt/vc/lib -L$RASPI_SDK_ROOT/chroot/lib/arm-linux-gnueabihf -Wl,-rpath-link -Wl,$RASPI_SDK_ROOT/chroot/lib/arm-linux-gnueabihf -L$RASPI_SDK_ROOT/chroot/usr/lib/arm-linux-gnueabihf -Wl,-rpath-link -Wl,$RASPI_SDK_ROOT/chroot/usr/lib/arm-linux-gnueabihf -Wl,--unresolved-symbols=ignore-in-shared-libs"
-            ;;
-        osx-amd64)
-            # HACK: use clang++ because of a memory leak in llvm-g++.
-            do_configure CXX=clang++ CC=clang
-            ;;
-        win*-i386|win*-amd64)
-            CPPFLAGS="$CPPFLAGS -I$PWD/external/sdl-2.0.9/include"
-            CPPFLAGS="$CPPFLAGS -I$PWD/external/sdl-image-2.0.4/include"
-            CPPFLAGS="$CPPFLAGS -I$PWD/external/sdl-mixer-2.0.4/include"
-            CPPFLAGS="$CPPFLAGS -I$PWD/external/ffmpeg-20190130/include"
-            CPPFLAGS="$CPPFLAGS -I$PWD/external/glew-2.1.0/include -DGLEW_STATIC"
-            CPPFLAGS="$CPPFLAGS -I$PWD/external/gtk-2.22.1/lib/glib-2.0/include"
-            CPPFLAGS="$CPPFLAGS -I$PWD/external/gtk-2.22.1/lib/gtk-2.0/include"
-            CPPFLAGS="$CPPFLAGS -I$PWD/external/gtk-2.22.1/include/glib-2.0"
-            CPPFLAGS="$CPPFLAGS -I$PWD/external/gtk-2.22.1/include/gtk-2.0"
-            CPPFLAGS="$CPPFLAGS -I$PWD/external/gtk-2.22.1/include/cairo"
-            CPPFLAGS="$CPPFLAGS -I$PWD/external/gtk-2.22.1/include/pango-1.0"
-            CPPFLAGS="$CPPFLAGS -I$PWD/external/gtk-2.22.1/include/gdk-pixbuf-2.0"
-            CPPFLAGS="$CPPFLAGS -I$PWD/external/gtk-2.22.1/include/atk-1.0"
-            CPPFLAGS="$CPPFLAGS -I$PWD/external/gtkglarea-2.0.1/include"
-            CPPFLAGS="$CPPFLAGS -I$PWD/src/3rdparty/imgui/include"
-            CPPFLAGS="$CPPFLAGS -mms-bitfields"
-            LDFLAGS="$LDFLAGS -static-libgcc -static-libstdc++"
-            GTK_LIBS="$GTK_LIBS -lgtkgl-2.0 -lopengl32 -lglew32 -lgdi32"
-            GTK_LIBS="$GTK_LIBS -lgtk-win32-2.0 -lgdk-win32-2.0"
-            GTK_LIBS="$GTK_LIBS -lglib-2.0 -lgthread-2.0 -lgobject-2.0"
-
-            CPPFLAGS="$CPPFLAGS -I$PWD/external/libcaca-0.99.beta18/include -DCACA_STATIC"
-
-            PATH="$PATH" PKG_CONFIG_PATH="$PKG_CONFIG_PATH" do_configure $HOSTFLAGS $BUILDFLAGS CPPFLAGS="$CPPFLAGS" LDFLAGS="$LDFLAGS" GTK_LIBS="$GTK_LIBS"
-            ;;
-        web-*)
-            # First do an emcc run so that dependent libraries are generated
-            emflags="-s USE_SDL=2 -s USE_SDL_IMAGE=2 -s USE_SDL_MIXER=2"
-            touch conftest.c ; emcc $(echo $emflags) conftest.c -c -o conftest.o ; rm -f conftest.c conftest.o
-            # We use --enable-release otherwise builds are really too slow
-            do_configure --enable-release $HOSTFLAGS $BUILDFLAGS CC=emcc CXX=em++ AR=emar RANLIB=emranlib PKG_CONFIG=/bin/false SDL_CONFIG=/bin/false ac_cv_exeext=".${platform##web-}" CPPFLAGS="$emflags" CXXFLAGS="$emflags" CFLAGS="$emflags"
-            ;;
-        *)
-            PATH="$PATH" do_configure CFLAGS="$CXXFLAGS" CXXFLAGS="$CXXFLAGS"
-            ;;
-    esac
-}
-
-build()
-{
-    cd "$top_srcdir"
-    case "$platform" in
-        win*-i386)
-            # Because of locking issues in Wine’s winepath.exe, we only
-            # build the static libraries in parallel.
-            make -j$LOL_PARALLEL -C src/3rdparty liblol-lua.a
-            make -j$LOL_PARALLEL -C src/ liblol-core.a
-            make
-            ;;
-        *)
-            make -j$LOL_PARALLEL
-            ;;
-    esac
-}
-
-check()
-{
-    cd "$top_srcdir"
-    case "$platform" in
-        ios-arm)
-            ;;
-        android-arm)
-            ;;
-        raspi-arm)
-            ;;
-        web-*)
-            ;;
-        win*-i386)
-            # If neither $MSYSTEM or $DISPLAY are set, and xvfb-run
-            # exists, use it to run the test suite.
-            if test "x${MSYSTEM}${DISPLAY}" = x \
-               && xvfb-run --help 2>&1 >/dev/null; then
-                xvfb-run -a make check VERBOSE=1
-            else
-                make check VERBOSE=1
-            fi
-            ;;
-        win*-amd64)
-            # No support for Wine64 yet
-            ;;
-        *)
-            make check VERBOSE=1
-            ;;
-    esac
-}
-
-clean()
-{
-    cd "$top_srcdir"
-    case "$platform" in
-        *)
-            make distclean
-            ;;
-    esac
-}
-
-__init__
-echo "lol-build: executing action '$action' on platform '$platform'" >&2
-eval "$action"
-
diff --git a/build/msbuild/lol-bullet.props b/build/msbuild/lol-bullet.props
deleted file mode 100644
index 13180415..00000000
--- a/build/msbuild/lol-bullet.props
+++ /dev/null
@@ -1,10 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-
-  <ItemGroup>
-    <ProjectReference Condition="'$(enable_bullet)'!='no'" Include="$(LolDir)\src\3rdparty\lol-bullet.vcxproj">
-      <Project>{83d3b207-c601-4025-8f41-01dedc354661}</Project>
-    </ProjectReference>
-  </ItemGroup>
-
-</Project>
diff --git a/build/msbuild/lol-core.props b/build/msbuild/lol-core.props
deleted file mode 100644
index bff2e956..00000000
--- a/build/msbuild/lol-core.props
+++ /dev/null
@@ -1,10 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-
-  <ItemGroup>
-    <ProjectReference Include="$(LolDir)\src\lol-core.vcxproj">
-      <Project>{9e62f2fe-3408-4eae-8238-fd84238ceeda}</Project>
-    </ProjectReference>
-  </ItemGroup>
-
-</Project>
diff --git a/build/msbuild/lol-lua.props b/build/msbuild/lol-lua.props
deleted file mode 100644
index 26338611..00000000
--- a/build/msbuild/lol-lua.props
+++ /dev/null
@@ -1,10 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-
-  <ItemGroup>
-    <ProjectReference Include="$(LolDir)\src\3rdparty\lol-lua.vcxproj">
-      <Project>{d84021ca-b233-4e0f-8a52-071b83bbccc4}</Project>
-    </ProjectReference>
-  </ItemGroup>
-
-</Project>
diff --git a/build/msbuild/lol.config.props b/build/msbuild/lol.config.props
deleted file mode 100644
index 3730ba7b..00000000
--- a/build/msbuild/lol.config.props
+++ /dev/null
@@ -1,61 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-
-  <!--
-     - Import settings that can be overridden by the user
-   -->
-  <Import Condition="Exists('$(SolutionDir)\lol\build.config')" Project="$(SolutionDir)\lol\build.config" />
-  <Import Condition="Exists('$(SolutionDir)\build.config')" Project="$(SolutionDir)\build.config" />
-
-  <!--
-     - Import defaults settings from Visual Studio
-   -->
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
-
-  <!--
-     - Default settings for Debug configurations
-   -->
-  <PropertyGroup Condition="'$(Configuration)'=='Debug'" Label="Configuration">
-    <UseDebugLibraries>true</UseDebugLibraries>
-  </PropertyGroup>
-
-  <!--
-     - Default settings for Release configurations
-   -->
-  <PropertyGroup Condition="'$(Configuration)'=='Release'" Label="Configuration">
-    <UseDebugLibraries>false</UseDebugLibraries>
-    <WholeProgramOptimization>true</WholeProgramOptimization>
-  </PropertyGroup>
-
-  <!--
-     - Default settings for any configuration
-   -->
-  <PropertyGroup Label="Configuration">
-    <CharacterSet>MultiByte</CharacterSet>
-    <UseOfMfc>false</UseOfMfc>
-    <ExceptionHandling>false</ExceptionHandling>
-    <FloatingPointModel>Fast</FloatingPointModel>
-  </PropertyGroup>
-
-  <!--
-     - Select the platform toolset depending on the platform
-   -->
-  <PropertyGroup Condition="'$(Platform)'=='Win32'" Label="Configuration">
-    <PlatformToolset>v141</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Platform)'=='x64'" Label="Configuration">
-    <PlatformToolset>v141</PlatformToolset>
-  </PropertyGroup>
-
-  <!--
-     - Secret stuff for platforms under NDA
-   -->
-  <Import Condition="Exists('$(LolDir)\src\private\nx\msbuild\nx.config.props')"
-          Project="$(LolDir)\src\private\nx\msbuild\nx.config.props" />
-
-  <!--
-     - Import final settings from Visual Studio
-   -->
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
-
-</Project>
diff --git a/build/msbuild/lol.props b/build/msbuild/lol.props
deleted file mode 100644
index 0474e308..00000000
--- a/build/msbuild/lol.props
+++ /dev/null
@@ -1,20 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-
-  <Import Project="$(LolDir)\build\msbuild\lol.config.props" />
-  <ImportGroup Label="ExtensionSettings">
-    <Import Project="$(LolDir)\build\msbuild\lolfx.props" />
-  </ImportGroup>
-  <ImportGroup Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(LolDir)\build\msbuild\lol.vars.props" />
-  </ImportGroup>
-  <PropertyGroup Label="UserMacros" />
-  <Import Project="$(LolDir)\build\msbuild\lol.rules.props" />
-  <ItemDefinitionGroup />
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
-  <ImportGroup Label="ExtensionTargets">
-    <Import Project="$(LolDir)\build\msbuild\lolfx.targets" />
-  </ImportGroup>
-
-</Project>
diff --git a/build/msbuild/lol.rules.props b/build/msbuild/lol.rules.props
deleted file mode 100644
index 31f4a054..00000000
--- a/build/msbuild/lol.rules.props
+++ /dev/null
@@ -1,123 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <PropertyGroup>
-    <LinkIncremental Condition="'$(Configuration)'=='Debug'">true</LinkIncremental>
-    <LinkIncremental Condition="'$(Configuration)'=='Release'">false</LinkIncremental>
-  </PropertyGroup>
-
-  <!--
-     - Secret stuff for platforms under NDA
-   -->
-  <Import Condition="Exists('$(LolDir)\src\private\nx\msbuild\nx.rules.props')"
-          Project="$(LolDir)\src\private\nx\msbuild\nx.rules.props" />
-
-  <ItemDefinitionGroup>
-    <ClCompile>
-      <WarningLevel>Level3</WarningLevel>
-
-      <!-- Use latest version of the C++ draft -->
-      <LanguageStandard>stdcpplatest</LanguageStandard>
-
-      <!-- Always multiprocessor, never minimal rebuild -->
-      <MultiProcessorCompilation>true</MultiProcessorCompilation>
-      <MinimalRebuild>false</MinimalRebuild>
-
-      <!-- We should use %(RelativeDir) here but for some reason it's an _absolute_ dir. WTF. -->
-      <ObjectFileName>$(IntDir)/%(Directory)/</ObjectFileName>
-
-      <AdditionalIncludeDirectories>
-          $(LolDir)\src;
-          $(LolDir)\src\3rdparty\bullet3\src;
-          $(LolDir)\tools\lolunit;
-          $(PegtlIncludes);
-          $(ImguiIncludes);
-          $(BtPhysIncludes);
-          $(GlIncludes);
-          %(AdditionalIncludeDirectories)
-      </AdditionalIncludeDirectories>
-
-      <AdditionalIncludeDirectories Condition="'$(Platform)'=='Win32' Or '$(Platform)'=='x64'">
-          $(SdlIncludes);
-          $(CppHttpIncludes);
-          $(FfmpegIncludes);
-          $(AssimpIncludes);
-          $(XinputIncludes);
-          %(AdditionalIncludeDirectories)
-      </AdditionalIncludeDirectories>
-
-      <AdditionalPreprocessorDefinitions>
-          NOMINMAX;
-          _CRT_SECURE_NO_WARNINGS;
-          B3_USE_CLEW;
-          LUA_ANSI;
-      </AdditionalPreprocessorDefinitions>
-
-      <PreprocessorDefinitions>$(AdditionalPreprocessorDefinitions.Replace('\n',''));%(PreprocessorDefinitions)</PreprocessorDefinitions>
-
-      <!-- Trim trailing backslashes and escape them for C++ -->
-      <PreprocessorDefinitions>LOL_CONFIG_PROJECTDIR="$(ProjectDir.Trim('\').Replace('\','/'))";%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <PreprocessorDefinitions>LOL_CONFIG_SOLUTIONDIR="$(SolutionDir.Trim('\').Replace('\','/'))";%(PreprocessorDefinitions)</PreprocessorDefinitions>
-
-      <PreprocessorDefinitions Condition="'$(Platform)'=='Win32'">WIN32;$(Win32Defines);%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <PreprocessorDefinitions Condition="'$(Platform)'=='x64'">WIN32;$(Win32Defines);%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <PreprocessorDefinitions Condition="'$(Platform)'=='Orbis'">$(OrbisDefines);%(PreprocessorDefinitions)</PreprocessorDefinitions>
-    </ClCompile>
-    <ClCompile Condition="'$(Configuration)'=='Debug'">
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-      <Optimization>Disabled</Optimization>
-      <RuntimeLibrary Condition="'$(Platform)'=='Win32' Or '$(Platform)'=='x64'">MultiThreadedDebugDLL</RuntimeLibrary>
-      <PreprocessorDefinitions>_DEBUG;LOL_BUILD_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-    </ClCompile>
-    <ClCompile Condition="'$(Configuration)'=='Release'">
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-      <!-- For Microsoft tools -->
-      <Optimization>MaxSpeed</Optimization>
-      <!-- For PlayStation tools -->
-      <OptimizationLevel>Level2</OptimizationLevel>
-
-      <RuntimeLibrary Condition="'$(Platform)'=='Win32' Or '$(Platform)'=='x64'">MultiThreadedDLL</RuntimeLibrary>
-      <FunctionLevelLinking>true</FunctionLevelLinking>
-      <IntrinsicFunctions>true</IntrinsicFunctions>
-      <FavorSizeOrSpeed>Speed</FavorSizeOrSpeed>
-      <PreprocessorDefinitions>NDEBUG;LOL_BUILD_RELEASE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-    </ClCompile>
-
-    <Link Condition="'$(Platform)'=='Win32' Or '$(Platform)'=='x64'">
-      <!-- FIXME: not for the static library! -->
-      <AdditionalDependencies>kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;$(SdlDeps);$(FfmpegDeps);$(AssimpDeps);$(LibGccDeps);$(GdiDeps);$(XinputDeps);$(GlDeps);$(CppHttpDeps);%(AdditionalDependencies)</AdditionalDependencies>
-      <AdditionalLibraryDirectories>$(LibGccLibs);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
-      <AdditionalLibraryDirectories>$(SdlLibs);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
-      <AdditionalLibraryDirectories>$(CppHttpLibs);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
-      <AdditionalLibraryDirectories>$(FfmpegLibs);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
-      <AdditionalLibraryDirectories>$(AssimpLibs);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
-      <AdditionalLibraryDirectories>$(GlLibs);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
-      <AdditionalLibraryDirectories>$(XinputLibs);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
-      <SubSystem Condition="'$(enable_sdl)'!='no'">Windows</SubSystem>
-      <SubSystem Condition="'$(enable_sdl)'=='no'">Console</SubSystem>
-    </Link>
-    <Link Condition="'$(Platform)'=='Orbis'">
-      <AdditionalLibraryDirectories>$(OrbisLibs);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
-      <AdditionalDependencies>$(OrbisDeps);%(AdditionalDependencies)</AdditionalDependencies>
-    </Link>
-    <Link Condition="'$(Configuration)'=='Debug'">
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-    </Link>
-    <Link Condition="'$(Configuration)'=='Release'">
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-      <EnableCOMDATFolding>true</EnableCOMDATFolding>
-      <OptimizeReferences>true</OptimizeReferences>
-    </Link>
-    <Link>
-      <AdditionalDependencies>%(AdditionalDependencies)</AdditionalDependencies>
-      <AdditionalLibraryDirectories>%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
-    </Link>
-
-    <!-- Post-build hook to run commands -->
-    <PostBuildEvent Condition="'$(Platform)'=='Win32' Or '$(Platform)'=='x64'">
-      <Command Condition="'$(enable_sdl)'!='no'">
-        rem do nothing
-      </Command>
-    </PostBuildEvent>
-
-  </ItemDefinitionGroup>
-</Project>
diff --git a/build/msbuild/lol.vars.props b/build/msbuild/lol.vars.props
deleted file mode 100644
index 692d5af7..00000000
--- a/build/msbuild/lol.vars.props
+++ /dev/null
@@ -1,176 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <ImportGroup Label="PropertySheets" />
-
-  <PropertyGroup Label="UserMacros">
-    <ExternalDir>$(LolDir)\external</ExternalDir>
-
-    <PlatformCode Condition="'$(Platform)'=='Win32'">i686</PlatformCode>
-    <PlatformCode Condition="'$(Platform)'=='x64'">x86_64</PlatformCode>
-
-    <!-- PEGTL -->
-    <PegtlDir>$(LolDir)\src/3rdparty\pegtl\include</PegtlDir>
-    <PegtlIncludes>$(PegtlDir)</PegtlIncludes>
-
-    <!-- imgui -->
-    <ImguiDir>$(LolDir)\src\3rdparty\imgui</ImguiDir>
-    <ImguiIncludes>$(ImguiDir)</ImguiIncludes>
-
-    <!-- OpenSSL -->
-    <OpenSslDir>$(ExternalDir)\openssl-1.1.1d</OpenSslDir>
-
-    <!-- cpp-httplib (depends on OpenSSL) -->
-    <CppHttpDir>$(LolDir)\src/3rdparty\cpp-httplib</CppHttpDir>
-    <CppHttpIncludes>$(CppHttpDir);$(OpenSslDir)\include</CppHttpIncludes>
-    <CppHttpLibs>$(OpenSslDir)\lib\$(PlatformCode)-msvc</CppHttpLibs>
-    <CppHttpDeps>libssl.lib;libcrypto.lib;crypt32.lib</CppHttpDeps>
-    <Win32Defines>CPPHTTPLIB_OPENSSL_SUPPORT;$(Win32Defines)</Win32Defines>
-
-    <!-- GTK+ & GtkGl -->
-    <GtkDir>$(ExternalDir)\gtk-2.22.1</GtkDir>
-    <GtkGlDir>$(ExternalDir)\gtkglarea-2.0.1</GtkGlDir>
-    <GtkIncludes>$(GtkDir)\lib\glib-2.0\include;$(GtkDir)\lib\gtk-2.0\include;$(GtkDir)\include\glib-2.0;$(GtkDir)\include\gtk-2.0;$(GtkDir)\include\cairo;$(GtkDir)\include\pango-1.0;$(GtkDir)\include\gdk-pixbuf-2.0;$(GtkDir)\include\atk-1.0;$(GtkGlDir)\include</GtkIncludes>
-    <GtkLibs>$(GtkDir)\lib;$(GtkDir)\bin;$(GtkGlDir)\lib</GtkLibs>
-    <GtkDeps>gobject-2.0.lib;gthread-2.0.lib;glib-2.0.lib;gdk-win32-2.0.lib;gtk-win32-2.0.lib;gtkgl-2.0.lib</GtkDeps>
-
-    <!-- Assimp -->
-<!--
-    <AssimpDir>$(ExternalDir)\assimp-3.1.1</AssimpDir>
-    <AssimpIncludes>$(AssimpDir)\include</AssimpIncludes>
-    <AssimpLibs Condition="'$(Platform)'=='Win32'">$(AssimpDir)\lib\win32</AssimpLibs>
-    <AssimpLibs Condition="'$(Platform)'=='x64'">$(AssimpDir)\lib\x64</AssimpLibs>
-    <AssimpDeps Condition="'$(Configuration)'=='Release'">zlibstatic.lib;assimp.lib</AssimpDeps>
-    <AssimpDeps Condition="'$(Configuration)'=='Debug'">zlibstatic.lib;assimp.lib</AssimpDeps>
-    <Win32Defines>LOL_USE_ASSIMP;$(Win32Defines)</Win32Defines>
--->
-
-    <!-- libcaca -->
-    <CacaDir>$(ExternalDir)\libcaca-0.99.beta18</CacaDir>
-    <CacaIncludes>$(CacaDir)\include</CacaIncludes>
-    <CacaLibs>$(CacaDir)\lib\$(PlatformCode)-w64-mingw32</CacaLibs>
-    <CacaDeps>caca.lib</CacaDeps>
-    <Win32Defines>CACA_STATIC;$(Win32Defines)</Win32Defines>
-
-    <!-- GDI+ -->
-    <GdiDeps>Gdiplus.lib</GdiDeps>
-    <Win32Defines>LOL_USE_GDIPLUS;$(Win32Defines)</Win32Defines>
-
-    <!-- Xinput -->
-    <XinputIncludes>$(DXSDK_DIR)\Include</XinputIncludes>
-    <XinputLibs Condition="'$(Platform)'=='Win32'">$(DXSDK_DIR)\Lib\x86</XinputLibs>
-    <XinputLibs Condition="'$(Platform)'=='x64'">$(DXSDK_DIR)\Lib\x64</XinputLibs>
-    <XinputDeps>xinput.lib</XinputDeps>
-    <Win32Defines>LOL_USE_XINPUT;$(Win32Defines)</Win32Defines>
-
-    <!-- Windows-specific -->
-    <Win32Defines>HAVE_STDIO_H;$(Win32Defines)</Win32Defines>
-
-    <!-- PS4-specific -->
-    <OrbisDefines>HAVE_STDIO_H;
-                  $(OrbisDefines)</OrbisDefines>
-  </PropertyGroup>
-
-  <!-- OpenGL & GLEW -->
-  <PropertyGroup Condition="'$(enable_gl)'!='no'" Label="UserMacros">
-    <GlewDir>$(ExternalDir)\glew-2.1.0</GlewDir>
-    <GlIncludes>$(GlewDir)\include</GlIncludes>
-    <GlLibs>$(GlewDir)\lib\$(PlatformCode)-w64-mingw32</GlLibs>
-    <GlDeps>opengl32.lib;glew32s.lib</GlDeps>
-    <Win32Defines>HAVE_GL_2X;LOL_USE_GLEW;GLEW_STATIC;$(Win32Defines)</Win32Defines>
-  </PropertyGroup>
-
-  <!-- SDL -->
-  <PropertyGroup Condition="'$(enable_sdl)'!='no'" Label="UserMacros">
-    <SdlDir>$(ExternalDir)\sdl-2.0.9</SdlDir>
-    <SdlImageDir>$(ExternalDir)\sdl-image-2.0.4</SdlImageDir>
-    <SdlMixerDir>$(ExternalDir)\sdl-mixer-2.0.4</SdlMixerDir>
-    <SdlLibDir>$(SdlDir)\lib\$(PlatformCode)-msvc</SdlLibDir>
-    <SdlImageLibDir>$(SdlImageDir)\lib\$(PlatformCode)-msvc</SdlImageLibDir>
-    <SdlMixerLibDir>$(SdlMixerDir)\lib\$(PlatformCode)-msvc</SdlMixerLibDir>
-    <SdlIncludes>$(SdlDir)\include;$(SdlImageDir)\include;$(SdlMixerDir)\include</SdlIncludes>
-    <SdlLibs>$(SdlLibDir);$(SdlImageLibDir);$(SdlMixerLibDir)</SdlLibs>
-    <SdlDeps>SDL2.lib;SDL2main.lib;SDL2_image.lib;SDL2_mixer.lib</SdlDeps>
-    <Win32Defines>HAVE_SDL_H;LOL_USE_SDL;$(Win32Defines)</Win32Defines>
-    <Win32Defines>LOL_USE_SDL_MIXER;LOL_USE_SDL_IMAGE;$(Win32Defines)</Win32Defines>
-  </PropertyGroup>
-
-  <!-- FFmpeg -->
-  <PropertyGroup Condition="'$(enable_ffmpeg)'!='no'" Label="UserMacros">
-    <FfmpegDir>$(ExternalDir)\ffmpeg-20190130</FfmpegDir>
-    <FfmpegIncludes>$(FfmpegDir)\include</FfmpegIncludes>
-    <FfmpegLibs>$(FfmpegDir)\lib\$(PlatformCode)-msvc</FfmpegLibs>
-    <FfmpegDeps>swscale.lib;avformat.lib;avcodec.lib;swresample.lib;avutil.lib;ws2_32.lib;secur32.lib;bcrypt.lib</FfmpegDeps>
-    <Win32Defines>LOL_USE_FFMPEG;$(Win32Defines)</Win32Defines>
-  </PropertyGroup>
-
-  <PropertyGroup />
-
-  <ItemDefinitionGroup />
-
-  <ItemGroup>
-    <BuildMacro Include="ExternalDir"><Value>$(ExternalDir)</Value></BuildMacro>
-    <BuildMacro Include="PlatformCode"><Value>$(PlatformCode)</Value></BuildMacro>
-  </ItemGroup>
-  <ItemGroup>
-    <BuildMacro Include="PegtlDir"><Value>$(PegtlDir)</Value></BuildMacro>
-    <BuildMacro Include="PegtlIncludes"><Value>$(PegtlIncludes)</Value></BuildMacro>
-    <BuildMacro Include="CppHttpDir"><Value>$(CppHttpDir)</Value></BuildMacro>
-    <BuildMacro Include="CppHttpIncludes"><Value>$(CppHttpIncludes)</Value></BuildMacro>
-    <BuildMacro Include="ImguiDir"><Value>$(ImguiDir)</Value></BuildMacro>
-    <BuildMacro Include="ImguiIncludes"><Value>$(ImguiIncludes)</Value></BuildMacro>
-    <BuildMacro Include="LibGccDir"><Value>$(LibGccDir)</Value></BuildMacro>
-    <BuildMacro Include="LibGccLibs"><Value>$(LibGccLibs)</Value></BuildMacro>
-    <BuildMacro Include="LibGccDeps"><Value>$(LibGccDeps)</Value></BuildMacro>
-    <BuildMacro Include="SdlDir"><Value>$(SdlDir)</Value></BuildMacro>
-    <BuildMacro Include="SdlImageDir"><Value>$(SdlImageDir)</Value></BuildMacro>
-    <BuildMacro Include="SdlMixerDir"><Value>$(SdlMixerDir)</Value></BuildMacro>
-    <BuildMacro Include="SdlIncludes"><Value>$(SdlIncludes)</Value></BuildMacro>
-    <BuildMacro Include="SdlLibs"><Value>$(SdlLibs)</Value></BuildMacro>
-    <BuildMacro Include="SdlDeps"><Value>$(SdlDeps)</Value></BuildMacro>
-    <BuildMacro Include="BtPhysDir"><Value>$(BtPhysDir)</Value></BuildMacro>
-    <BuildMacro Include="BtPhysIncludes"><Value>$(BtPhysIncludes)</Value></BuildMacro>
-    <BuildMacro Include="GtkDir"><Value>$(GtkDir)</Value></BuildMacro>
-    <BuildMacro Include="GtkGlDir"><Value>$(GtkGlDir)</Value></BuildMacro>
-    <BuildMacro Include="GtkIncludes"><Value>$(GtkIncludes)</Value></BuildMacro>
-    <BuildMacro Include="GtkLibs"><Value>$(GtkLibs)</Value></BuildMacro>
-    <BuildMacro Include="GtkDeps"><Value>$(GtkDeps)</Value></BuildMacro>
-    <BuildMacro Include="FfmpegDir"><Value>$(FfmpegDir)</Value></BuildMacro>
-    <BuildMacro Include="FfmpegIncludes"><Value>$(FfmpegIncludes)</Value></BuildMacro>
-    <BuildMacro Include="FfmpegLibs"><Value>$(FfmpegLibs)</Value></BuildMacro>
-    <BuildMacro Include="FfmpegDeps"><Value>$(FfmpegDeps)</Value></BuildMacro>
-    <BuildMacro Include="AssimpDir"><Value>$(AssimpDir)</Value></BuildMacro>
-    <BuildMacro Include="AssimpIncludes"><Value>$(AssimpIncludes)</Value></BuildMacro>
-    <BuildMacro Include="AssimpLibs"><Value>$(AssimpLibs)</Value></BuildMacro>
-    <BuildMacro Include="AssimpDeps"><Value>$(AssimpDeps)</Value></BuildMacro>
-    <BuildMacro Include="CacaDir"><Value>$(CacaDir)</Value></BuildMacro>
-    <BuildMacro Include="CacaIncludes"><Value>$(CacaIncludes)</Value></BuildMacro>
-    <BuildMacro Include="CacaLibs"><Value>$(CacaLibs)</Value></BuildMacro>
-    <BuildMacro Include="CacaDeps"><Value>$(CacaDeps)</Value></BuildMacro>
-    <BuildMacro Include="GdiDeps"><Value>$(GdiDeps)</Value></BuildMacro>
-    <BuildMacro Include="GlewDir"><Value>$(GlewDir)</Value></BuildMacro>
-    <BuildMacro Include="GlIncludes"><Value>$(GlIncludes)</Value></BuildMacro>
-    <BuildMacro Include="GlLibs"><Value>$(GlLibs)</Value></BuildMacro>
-    <BuildMacro Include="GlDeps"><Value>$(GlDeps)</Value></BuildMacro>
-    <BuildMacro Include="XinputIncludes"><Value>$(XinputIncludes)</Value></BuildMacro>
-    <BuildMacro Include="XinputLibs"><Value>$(XinputLibs)</Value></BuildMacro>
-    <BuildMacro Include="XinputDeps"><Value>$(XinputDeps)</Value></BuildMacro>
-    <BuildMacro Include="Win32Defines"><Value>$(Win32Defines)</Value></BuildMacro>
-    <BuildMacro Include="OrbisDeps"><Value>$(OrbisDeps)</Value></BuildMacro>
-    <BuildMacro Include="OrbisLibs"><Value>$(OrbisLibs)</Value></BuildMacro>
-    <BuildMacro Include="OrbisDefines"><Value>$(OrbisDefines)</Value></BuildMacro>
-  </ItemGroup>
-
-  <!--
-     - Secret stuff for platforms under NDA
-   -->
-  <Import Condition="Exists('$(LolDir)\src\private\nx\msbuild\nx.vars.props')"
-          Project="$(LolDir)\src\private\nx\msbuild\nx.vars.props" />
-
-  <PropertyGroup>
-    <BinDir Condition="Exists('$(SolutionDir)\lol')">$(SolutionDir)\binaries</BinDir>
-    <BinDir Condition="!Exists('$(SolutionDir)\lol')">$(LolDir)\binaries</BinDir>
-    <OutDir>$(BinDir)\$(Platform) $(PlatformToolset) $(Configuration)\</OutDir>
-    <IntDir>$(BinDir)\$(Platform) $(PlatformToolset) $(Configuration)\$(ProjectName)\</IntDir>
-  </PropertyGroup>
-
-</Project>
diff --git a/build/msbuild/lolfx.props b/build/msbuild/lolfx.props
deleted file mode 100644
index da2e9f18..00000000
--- a/build/msbuild/lolfx.props
+++ /dev/null
@@ -1,37 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <PropertyGroup
-    Condition="'$(LolFxCompileBeforeTargets)' == '' and '$(LolFxCompileAfterTargets)' == '' and '$(ConfigurationType)' != 'Makefile'">
-    <LolFxCompileBeforeTargets>Midl</LolFxCompileBeforeTargets>
-    <LolFxCompileAfterTargets>CustomBuild</LolFxCompileAfterTargets>
-  </PropertyGroup>
-  <PropertyGroup>
-    <LolFxCompileDependsOn
-      Condition="'$(ConfigurationType)' != 'Makefile'">_SelectedFiles;$(LolFxCompileDependsOn)</LolFxCompileDependsOn>
-  </PropertyGroup>
-  <ItemDefinitionGroup>
-    <LolFxCompile>
-      <CommandLineTemplate>@echo off
-set D=$(IntDir)%(Filename)%(Extension).cpp
-
-set "name=lolfx_resource_%(RelativeDir)%(Filename)"
-set "name=%name:\=_%"
-set "name=%name:-=_%"
-set "name=%name:.=_%"
-
-echo /* This file was autogenerated. DO NOT MODIFY IT. */ &gt; "%D%"
-echo extern "C" { char const *%name% = &gt;&gt; "%D%"
-setlocal disabledelayedexpansion
-for /F "tokens=1,* delims=`" %%L in ('type "%(Fullpath)"') do (
-  set "line=%%L"
-  setlocal enabledelayedexpansion
-  echo "!line:"=\"!\n" &gt;&gt; "%D%"
-  endlocal
-)
-endlocal
-echo ;} &gt;&gt; "%D%"</CommandLineTemplate>
-      <Outputs>$(IntDir)%(FileName)%(Extension).cpp</Outputs>
-      <ExecutionDescription>%(FileName)%(Extension)</ExecutionDescription>
-    </LolFxCompile>
-  </ItemDefinitionGroup>
-</Project>
diff --git a/build/msbuild/lolfx.targets b/build/msbuild/lolfx.targets
deleted file mode 100644
index 92e3a63a..00000000
--- a/build/msbuild/lolfx.targets
+++ /dev/null
@@ -1,80 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <ItemGroup>
-    <PropertyPageSchema Include="$(MSBuildThisFileDirectory)$(MSBuildThisFileName).xml" />
-    <AvailableItemName Include="LolFxCompile">
-      <Targets>LolFxCompile</Targets>
-    </AvailableItemName>
-  </ItemGroup>
-
-  <PropertyGroup>
-    <ComputeCompileInputsTargets>
-      $(ComputeCompileInputsTargets);
-      ComputeLolFxCompileOutput;
-    </ComputeCompileInputsTargets>
-  </PropertyGroup>
-
-  <UsingTask
-    TaskName="LolFxCompile"
-    TaskFactory="XamlTaskFactory"
-    AssemblyName="Microsoft.Build.Tasks.v4.0">
-    <Task>$(MSBuildThisFileDirectory)$(MSBuildThisFileName).xml</Task>
-  </UsingTask>
-
-  <Target
-    Name="LolFxCompile"
-    BeforeTargets="$(LolFxCompileBeforeTargets)"
-    AfterTargets="$(LolFxCompileAfterTargets)"
-    Condition="'@(LolFxCompile)' != ''"
-    DependsOnTargets="$(LolFxCompileDependsOn);ComputeLolFxCompileOutput"
-    Outputs="@(LolFxCompile-&gt;Metadata('CompileOut')-&gt;Distinct())"
-    Inputs="@(LolFxCompile);%(LolFxCompile.AdditionalDependencies);$(MSBuildProjectFile)">
-    <ItemGroup
-      Condition="'@(SelectedFiles)' != ''">
-      <LolFxCompile
-        Remove="@(LolFxCompile)"
-        Condition="'%(Identity)' != '@(SelectedFiles)'" />
-    </ItemGroup>
-    <ItemGroup>
-      <LolFxCompile_tlog
-        Include="%(LolFxCompile.Outputs)"
-        Condition="'%(LolFxCompile.Outputs)' != '' and '%(LolFxCompile.ExcludedFromBuild)' != 'true'">
-        <Source>@(LolFxCompile, '|')</Source>
-      </LolFxCompile_tlog>
-    </ItemGroup>
-    <Message
-      Importance="High"
-      Text="%(LolFxCompile.ExecutionDescription)" />
-    <WriteLinesToFile
-      Condition="'@(LolFxCompile_tlog)' != '' and '%(LolFxCompile_tlog.ExcludedFromBuild)' != 'true'"
-      File="$(IntDir)$(ProjectName).write.1.tlog"
-      Lines="^%(LolFxCompile_tlog.Source);@(LolFxCompile_tlog-&gt;'%(Fullpath)')" />
-    <ItemGroup>
-      <LolFxCompile>
-      </LolFxCompile>
-    </ItemGroup>
-    <LolFxCompile
-      Condition="'@(LolFxCompile)' != '' and '%(LolFxCompile.ExcludedFromBuild)' != 'true'"
-      CommandLineTemplate="%(LolFxCompile.CommandLineTemplate)"
-      Outputs="%(LolFxCompile.Outputs)"
-      IntDir="$(IntDir)"
-      FileName="%(FileName)"
-      Inputs="@(LolFxCompile)" />
-  </Target>
-
-
-  <Target Name="ComputeLolFxCompileOutput" Condition="'@(LolFxCompile)' != ''">
-    <ItemGroup>
-      <ClCompile Include="@(LolFxCompile->Metadata('CompileOut')->Distinct()->ClearMetadata())" Condition="'%(LolFxCompile.ExcludedFromBuild)' != 'true'">
-        <CompileAs>CompileAsC</CompileAs>
-      </ClCompile>
-      <ClCompile Include="%(LolFxCompile.Outputs)" />
-    </ItemGroup>
-    <ItemGroup>
-      <LolFxCompile>
-        <CompileOut>$(IntDir)\%(FileName).lolfx.cpp</CompileOut>
-      </LolFxCompile>
-    </ItemGroup>
-  </Target>
-
-</Project>
diff --git a/build/msbuild/lolfx.xml b/build/msbuild/lolfx.xml
deleted file mode 100644
index 04d034a1..00000000
--- a/build/msbuild/lolfx.xml
+++ /dev/null
@@ -1,79 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<ProjectSchemaDefinitions xmlns="clr-namespace:Microsoft.Build.Framework.XamlTypes;assembly=Microsoft.Build.Framework" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:sys="clr-namespace:System;assembly=mscorlib" xmlns:transformCallback="Microsoft.Cpp.Dev10.ConvertPropertyCallback">
-  <Rule
-    Name="LolFxCompile"
-    PageTemplate="tool"
-    DisplayName="Lol Fx Build Rule v0.0"
-    Order="200">
-    <Rule.DataSource>
-      <DataSource
-        Persistence="ProjectFile"
-        ItemType="LolFxCompile" />
-    </Rule.DataSource>
-    <Rule.Categories>
-      <Category
-        Name="General">
-        <Category.DisplayName>
-          <sys:String>General</sys:String>
-        </Category.DisplayName>
-      </Category>
-      <Category
-        Name="Command Line"
-        Subtype="CommandLine">
-        <Category.DisplayName>
-          <sys:String>Command Line</sys:String>
-        </Category.DisplayName>
-      </Category>
-    </Rule.Categories>
-    <StringListProperty
-      Name="Inputs"
-      Category="Command Line"
-      IsRequired="true"
-      Switch=" ">
-      <StringListProperty.DataSource>
-        <DataSource
-          Persistence="ProjectFile"
-          ItemType="LolFxCompile"
-          SourceType="Item" />
-      </StringListProperty.DataSource>
-    </StringListProperty>
-    <StringListProperty
-      Name="IntDir"
-      Category="Command Line"
-      IsRequired="true"
-      Switch=" ">
-      <StringListProperty.DataSource>
-        <DataSource
-          Persistence="ProjectFile"
-          ItemType="LolFxCompile"
-          SourceType="Item" />
-      </StringListProperty.DataSource>
-    </StringListProperty>
-    <StringListProperty
-      Name="FileName"
-      Category="Command Line"
-      IsRequired="true"
-      Switch=" ">
-    </StringListProperty>
-    <StringProperty
-      Name="Outputs"
-      Category="Command Line"
-      IsRequired="true"
-      Switch=" " />
-    <StringProperty
-      Name="CommandLineTemplate"
-      DisplayName="Command Line"
-      Visible="False"
-      IncludeInCommandLine="False" />
-  </Rule>
-  <ItemType
-    Name="LolFxCompile"
-    DisplayName="Lol Fx Build Rule v0.0" />
-  <FileExtension
-    Name="*.lolfx"
-    ContentType="LolFxCompile" />
-  <ContentType
-    Name="LolFxCompile"
-    DisplayName="Lol Fx Build Rule v0.0"
-    ItemType="LolFxCompile" />
-</ProjectSchemaDefinitions>
diff --git a/build/run-bitten.sh b/build/run-bitten.sh
deleted file mode 100755
index 92c7c9d7..00000000
--- a/build/run-bitten.sh
+++ /dev/null
@@ -1,240 +0,0 @@
-#!/bin/sh
-
-tmpdir="$TMPDIR"
-if [ -z "${tmpdir}" ]; then tmpdir="$TEMP"; fi
-if [ -z "${tmpdir}" ]; then tmpdir="$TEMPDIR"; fi
-if [ -z "${tmpdir}" ]; then tmpdir="$TMP"; fi
-if [ -z "${tmpdir}" ]; then tmpdir="/tmp"; fi
-
-conffile="`mktemp -q "${tmpdir}/lol-bitten-XXXXXXXX" 2>/dev/null`"
-if [ "${conffile}" = "" ]; then
-    conffile="`mktemp 2>/dev/null`"
-fi
-scriptfile=""
-builddir="${tmpdir}/lol-bitten-`whoami`"
-url="http://lolengine.net/builds"
-
-#
-# Utility functions
-#
-
-append() {
-    echo "$*" >> "${conffile}"
-}
-
-cleanup() {
-    rm -f "${conffile}" "${scriptfile}"
-    rm -rf "${builddir}"
-}
-
-bailout() {
-    cleanup
-    # Exit gracefully
-    exit 0
-}
-
-trap bailout EXIT HUP INT QUIT ABRT KILL ALRM TERM
-
-#
-# Fork if necessary
-#
-
-if [ "$1" = "--forked" ]; then
-    shift
-    scriptfile="$1"
-    shift
-else
-    cp "$0" "${conffile}"
-    chmod +x "${conffile}"
-    exec "${conffile}" --forked "${conffile}" "$@"
-    exit 0
-fi
-
-#
-# Check for command line
-#
-
-if [ "$#" != 2 ]; then
-    echo "Usage: run-bitten.sh <username> <password>"
-    exit 1
-fi
-
-#
-# Clean up working directory
-#
-cleanup
-if [ -e "${builddir}" ]; then
-    echo "Error: cannot get rid of ${builddir}"
-    exit 1
-fi
-
-#
-# Operating system information
-#
-
-append "[os]"
-append "name = `uname -srmo 2>/dev/null || uname -srm`"
-append "version = 0"
-family="`uname -s | tr A-Z a-z`"
-case "$family" in
-  mingw*) family="windows" ;;
-  darwin*) family="osx" ;;
-esac
-append "family = $family"
-# This random token prevents HTTP conflicts when several instances
-# are run from the same machine.
-append "token = $$$RANDOM"
-append ""
-
-#
-# Hardware information
-#
-
-append "[machine]"
-name="`uname -n | tr A-Z a-z | sed 's/[.].*//'`"
-case "$name" in
-  d*e*s*o*v*) name="putois" ;;
-esac
-append "name = $name"
-processor="`uname -m`"
-case "$processor" in
-  x86_64) processor="amd64"
-    if test "`getconf LONG_BIT 2>/dev/null`" = 32; then
-      processor="i386"
-    fi ;;
-  i*86) processor="i386" ;;
-esac
-# Windows defines a lot of crazy shit, try to make sense of it
-case "$PROCESSOR_ARCHITECTURE" in
-  amd64|AMD64) processor="amd64" ;;
-  x86|X86) processor="i386" ;;
-esac
-case "$PROCESSOR_ARCHITEW6432" in
-  amd64|AMD64) processor="amd64" ;;
-  x86|X86) processor="i386" ;;
-esac
-append "processor = $processor"
-append ""
-
-#
-# Authentication information
-#
-
-append "[authentication]"
-append "username = $1"
-append "password = $2"
-append ""
-
-#
-# Visual Studio configuration
-#
-
-# FIXME: we also need to check for the Visual Studio SDK
-append "[msvc]"
-if [ -n "$VS100COMNTOOLS" ]; then
-    append "version = 10"
-elif [ -n "$VS110COMNTOOLS" ]; then
-    append "version = 11"
-elif [ -n "$VS90COMNTOOLS" ]; then
-    append "version = 9"
-fi
-append ""
-
-#
-# iOS development kit
-#
-
-append "[ios]"
-if [ -d "/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS6.1.sdk" ]; then
-    append "version = 6.1"
-fi
-append ""
-
-#
-# mingw32 / mingw-w64
-#
-
-append "[mingw64]"
-if x86_64-w64-mingw32-g++ --version >/dev/null 2>&1; then
-    append "version = $(x86_64-w64-mingw32-g++ --version | sed -ne 's/.*g++ *([^)]*) *//p')"
-fi
-append ""
-
-append "[mingw32]"
-if i686-w64-mingw32-g++ --version >/dev/null 2>&1; then
-    append "version = $(i686-w64-mingw32-g++ --version | sed -ne 's/.*g++ *([^)]*) *//p')"
-fi
-append ""
-
-#
-# Emscripten
-#
-
-append "[emscripten]"
-if em++ --version >/dev/null 2>&1; then
-    append "version = $(em++ --version | sed -ne 's/.*emcc.* \([0-9.]\{1,\}\).*/\1/p')"
-fi
-append ""
-
-#
-# Android NDK
-#
-
-append "[ndk]"
-if [ "$family" != "windows" ]; then
-    if [ -f "$ANDROID_NDK_ROOT/RELEASE.TXT" ]; then
-        append "version = $(cat "$ANDROID_NDK_ROOT/RELEASE.TXT")"
-    fi
-fi
-append ""
-
-#
-# Raspberry Pi cross-compiler
-#
-
-append "[raspi]"
-if [ "$family" != "windows" ]; then
-    if [ -d "$RASPI_SDK_ROOT/tools" ]; then
-        append "version = 0"
-    fi
-fi
-append ""
-
-#
-# Show what we just did here
-#
-
-cat "${conffile}"
-
-#
-# Fix system
-#
-
-if [ "$family" = "osx" ]; then
-    # The version of Subversion shipped by Apple is antique; try to
-    # use the one in /usr/local/bin instead.
-    PATH="/usr/local/bin:$PATH"
-    export PATH
-    # HACK: the version of llvm-g++ shipped by Apple has an insane
-    # memory leak; use clang++ instead.
-    CC="clang"
-    export CC
-    CXX="clang++"
-    export CXX
-fi
-
-#
-# Launch everything
-#
-
-while : ; do
-    bitten-slave "$url" \
-        -f "${conffile}" \
-        --name "$name" \
-        --work-dir="${builddir}"
-    rm -rf "${builddir}"
-    sleep 10
-done
-
-exit 0
-
diff --git a/configure.ac b/configure.ac
deleted file mode 100644
index d0bd8bdb..00000000
--- a/configure.ac
+++ /dev/null
@@ -1,280 +0,0 @@
-dnl
-dnl  Lol Engine
-dnl
-dnl  Copyright © 2010—2017 Sam Hocevar <sam@hocevar.net>
-dnl
-dnl  Lol Engine is free software. It comes without any warranty, to
-dnl  the extent permitted by applicable law. You can redistribute it
-dnl  and/or modify it under the terms of the Do What the Fuck You Want
-dnl  to Public License, Version 2, as published by the WTFPL Task Force.
-dnl  See http://www.wtfpl.net/ for more details.
-dnl
-
-AC_INIT(lolengine, 0.0)
-AC_PREREQ(2.50)
-AC_CONFIG_AUX_DIR(.auto)
-AC_CANONICAL_SYSTEM
-AM_INIT_AUTOMAKE([subdir-objects no-define tar-ustar silent-rules])
-dnl AM_MAINTAINER_MODE
-
-dnl Versioning of the separate software we ship
-LOLUNIT_VERSION=0.1
-AC_SUBST(LOLUNIT_VERSION)
-
-AC_SUBST(lol_srcdir, '${top_srcdir}')
-AC_SUBST(lol_builddir, '${top_builddir}')
-
-AM_PROG_CC_C_O
-AC_PROG_CPP
-AC_PROG_CXX
-AC_PROG_CXXCPP
-AC_PROG_RANLIB
-
-LOL_AC_INIT()
-
-AC_LIBTOOL_WIN32_DLL
-AM_PROG_LIBTOOL
-AC_LIBTOOL_CXX
-
-dnl Ensure an error is thrown if pkg-config M4 files are not found.
-m4_pattern_allow([^PKG_CONFIG_LIBDIR$])
-m4_pattern_forbid([^PKG_CHECK_MODULES$])
-m4_pattern_forbid([^PKG_PROG_PKG_CONFIG$])
-
-dnl  Same for Lol Engine M4 files.
-m4_pattern_forbid([^LOL_AC_])
-
-
-dnl Do not use PKG_CONFIG_LIBDIR when cross-compiling.
-if test "${build}" != "${host}" -a "${PKG_CONFIG_LIBDIR}" = ""; then
-  export PKG_CONFIG_LIBDIR=/dev/null
-fi
-
-dnl AC_PROG_EGREP only exists in autoconf 2.54+, so we use AC_EGREP_CPP right
-dnl now otherwise it might be set in an obscure if statement. Same thing for
-dnl PKG_PROG_PKG_CONFIG which needs to be called first.
-AC_EGREP_CPP(yes, foo)
-PKG_PROG_PKG_CONFIG()
-
-
-dnl  Check for a working implementation of sed
-AC_PROG_SED
-AC_MSG_CHECKING(for a sed that understands \t)
-if test "$(echo 'x\x' | "${SED}" 's/.*@<:@^x\t@:>@//')" != x; then
-  AC_MSG_RESULT(no)
-  AC_MSG_ERROR([[consider installing GNU sed]])
-else
-  AC_MSG_RESULT(yes)
-fi
-
-
-dnl conditional builds
-AC_ARG_ENABLE(debug,
-  [  --enable-debug          build debug versions of the game (default no)])
-AC_ARG_ENABLE(release,
-  [  --enable-release        build final release of the game (default no)])
-AC_ARG_ENABLE(experimental,
-  [  --enable-experimental   experimental build (default no)])
-
-AC_ARG_ENABLE(subproject,
-  [  --enable-subproject     build as a subproject (default no)])
-
-AC_ARG_ENABLE(gl,
-  [  --enable-gl             build using OpenGL or OpenGL ES (default autodetected)])
-AC_ARG_ENABLE(ffmpeg,
-  [  --enable-ffmpeg         build using FFmpeg (default autodetected)])
-AC_ARG_ENABLE(sdl,
-  [  --enable-sdl            build using SDL (default autodetected)])
-AC_ARG_ENABLE(imlib2,
-  [  --enable-imlib2         build using Imlib2 (default autodetected)])
-AC_ARG_ENABLE(png,
-  [  --enable-png            build using libpng (default autodetected)])
-AC_ARG_ENABLE(bullet,
-  [  --enable-bullet         build using Bullet Physics (default yes)])
-
-AC_ARG_ENABLE(test,
-  [  --enable-test           build test suite (default yes)])
-AC_ARG_ENABLE(tools,
-  [  --enable-tools          build miscellaneous tools (default yes)])
-AC_ARG_ENABLE(tutorial,
-  [  --enable-tutorial       build tutorial applications (default yes)])
-AC_ARG_ENABLE(samples,
-  [  --enable-samples        build sample applications (default yes)])
-AC_ARG_ENABLE(doc,
-  [  --enable-doc            build documentation (needs doxygen and LaTeX)])
-
-
-dnl  Subproject builds
-if test "${enable_subproject}" = "yes"; then
-  AC_MSG_CHECKING(for a config-lol.h file in the parent project)
-  if test -f "../config-lol.h"; then
-    AC_MSG_RESULT(yes)
-    AC_DEFINE(HAVE_CONFIG_LOL_H, 1, Define to if parent project provides config-lol.h)
-    AH_BOTTOM([
-#if HAVE_CONFIG_LOL_H
-#include "../config-lol.h"
-#endif
-])
-  else
-    AC_MSG_RESULT(no)
-  fi
-fi
-
-
-dnl  Common C headers
-AC_CHECK_HEADERS(stdio.h stdarg.h inttypes.h stdint.h math.h)
-AC_CHECK_HEADERS(fastmath.h unistd.h io.h)
-AC_CHECK_HEADERS(execinfo.h)
-AC_CHECK_HEADERS(sys/ioctl.h sys/ptrace.h sys/stat.h sys/syscall.h sys/user.h)
-AC_CHECK_HEADERS(sys/wait.h sys/time.h sys/types.h)
-
-
-dnl  Common C++ headers
-AC_LANG_PUSH(C++)
-AC_CHECK_HEADERS(cxxabi.h)
-AC_LANG_POP(C++)
-
-dnl  Common C functions
-AC_CHECK_FUNCS(getenv system tmpfile tmpnam getcwd _getcwd)
-AC_CHECK_FUNCS(backtrace_symbols)
-AC_CHECK_FUNCS(gettimeofday usleep)
-
-
-dnl  Build mode
-ac_cv_my_build_mode="devel"
-if test "x${enable_release}" = "xyes"; then
-  ac_cv_my_build_mode="release"
-fi
-if test "x${enable_devel}" = "xyes"; then
-  ac_cv_my_build_mode="devel"
-fi
-if test "x${enable_debug}" = "xyes"; then
-  ac_cv_my_build_mode="debug"
-fi
-
-if test "x${ac_cv_my_build_mode}" = "xdebug"; then
-  AC_DEFINE(LOL_BUILD_DEBUG, 1, Define to 1 to activate debug build)
-  LOL_TRY_CXXFLAGS(-O, [AM_CXXFLAGS="${AM_CXXFLAGS} -O"])
-  LOL_TRY_CXXFLAGS(-g, [AM_CXXFLAGS="${AM_CXXFLAGS} -g"])
-elif test "x${ac_cv_my_build_mode}" = "xdevel"; then
-  AC_DEFINE(LOL_BUILD_DEVEL, 1, Define to 1 to activate development build)
-  LOL_TRY_CXXFLAGS(-Os, [AM_CXXFLAGS="${AM_CXXFLAGS} -Os"])
-  LOL_TRY_CXXFLAGS(-g, [AM_CXXFLAGS="${AM_CXXFLAGS} -g"])
-  LOL_TRY_CXXFLAGS(-ffast-math, [AM_CXXFLAGS="${AM_CXXFLAGS} -ffast-math"])
-else
-  AC_DEFINE(LOL_BUILD_RELEASE, 1, Define to 1 to activate final release)
-  LOL_TRY_CXXFLAGS(-Os, [AM_CXXFLAGS="${AM_CXXFLAGS} -Os"])
-  LOL_TRY_CXXFLAGS(-ffast-math, [AM_CXXFLAGS="${AM_CXXFLAGS} -ffast-math"])
-  LOL_TRY_CXXFLAGS(-fomit-frame-pointer, [AM_CXXFLAGS="${AM_CXXFLAGS} -fomit-frame-pointer"])
-  LOL_TRY_CXXFLAGS(-fno-strength-reduce, [AM_CXXFLAGS="${AM_CXXFLAGS} -fno-strength-reduce"])
-fi
-
-
-dnl  Build documentation?
-DOXYGEN="no"
-LATEX="no"
-if test "${enable_doc}" != "no" -a "${enable_subproject}" != "yes"; then
-  AC_PATH_PROG(DOXYGEN, doxygen, no)
-  if test "${DOXYGEN}" != "no"; then
-    # Build LaTeX documentation?
-    AC_PATH_PROG(LATEX, pdflatex, no)
-    AC_PATH_PROG(KPSEWHICH, kpsewhich, no)
-    AC_PATH_PROG(DVIPS, dvips, no)
-    if test "${DVIPS}" = "no" -o "${KPSEWHICH}" = "no"; then
-      LATEX="no"
-    fi
-    if test "${LATEX}" != "no"; then
-      AC_MSG_CHECKING(for a4.sty and a4wide.sty)
-      if "${KPSEWHICH}" a4.sty >/dev/null 2>&1; then
-        if "${KPSEWHICH}" a4wide.sty >/dev/null 2>&1; then
-          AC_MSG_RESULT(yes)
-        else
-          LATEX="no"
-          AC_MSG_RESULT(no)
-        fi
-      else
-        LATEX="no"
-        AC_MSG_RESULT(no)
-      fi
-    fi
-    AC_PATH_PROG(DOT, dot, no)
-    if test "${DOT}" != "no"; then
-      LOL_USE_DOT="YES"
-    else
-      LOL_USE_DOT="NO"
-    fi
-  fi
-fi
-dnl  XXX: disable LaTeX because we use too much memory
-LATEX=no
-AM_CONDITIONAL(BUILD_DOCUMENTATION, test "${DOXYGEN}" != "no")
-AM_CONDITIONAL(LOL_USE_LATEX, test "${LATEX}" != "no")
-AM_CONDITIONAL(LOL_USE_DOT, test "${DOT}" != "no")
-AC_SUBST(LOL_USE_DOT)
-
-
-dnl  GCC-specific symbol demangling
-AC_LANG_PUSH(C++)
-AC_TRY_LINK(
- [#include <cxxabi.h>],
- [abi::__cxa_demangle(NULL, 0, 0, NULL);],
- [AC_DEFINE(HAVE_CXA_DEMANGLE, 1, Define to 1 if abi::__cxa_demangle is available)])
-AC_LANG_POP(C++)
-
-
-LOL_AC_CHECK()
-
-
-dnl  Use libcaca? (required for font generation)
-ac_cv_my_have_caca="no"
-PKG_CHECK_MODULES(CACA, caca >= 0.99.beta17, [ac_cv_my_have_caca="yes"], [:])
-if test "${ac_cv_my_have_caca}" != "no"; then
-  AC_DEFINE(LOL_USE_CACA, 1, Define to 1 to use libcaca)
-fi
-AM_CONDITIONAL(LOL_USE_CACA, test "${ac_cv_my_have_caca}" != "no")
-
-
-dnl Use GTK+? (required for the deushax editor)
-ac_cv_my_have_gtkgl="no"
-PKG_CHECK_MODULES(GTK, gtk+-2.0, [ac_cv_my_have_gtkgl="yes"], [:])
-PKG_CHECK_MODULES(GTKGL, gtkgl-2.0, [:], [ac_cv_my_have_gtkgl="no"])
-if test "${ac_cv_my_have_gtkgl}" != "no"; then
-  AC_DEFINE(LOL_USE_GTKGL, 1, Define to 1 to use GtkGl)
-fi
-AM_CONDITIONAL(LOL_USE_GTKGL, test "${ac_cv_my_have_gtkgl}" != "no")
-
-
-dnl  Optional features
-AM_CONDITIONAL(BUILD_TEST, test "${enable_test}" != "no" -a "${enable_subproject}" != "yes")
-AM_CONDITIONAL(BUILD_TOOLS, test "${enable_tools}" != "no" -a "${enable_subproject}" != "yes")
-AM_CONDITIONAL(BUILD_TUTORIAL, test "${enable_tutorial}" != "no" -a "${enable_subproject}" != "yes")
-AM_CONDITIONAL(BUILD_SAMPLES, test "${enable_samples}" != "no" -a "${enable_subproject}" != "yes")
-
-
-LOL_AC_FINI()
-
-AC_CONFIG_HEADER(config.h)
-
-AC_CONFIG_FILES(
- [Makefile
-  src/Makefile
-  src/3rdparty/Makefile
-  src/data/Makefile
-  src/data/font/Makefile
-  src/t/Makefile
-  build/Makefile
-  binaries/Makefile
-  doc/Makefile
-  doc/doxygen.cfg
-  doc/samples/Makefile
-  doc/samples/math/Makefile
-  doc/samples/sandbox/Makefile
-  doc/tutorial/Makefile
-  tools/Makefile
-  tools/lolunit/Makefile
-  tools/vimlol/Makefile
-  tools/vslol/Makefile
-])
-
-AC_OUTPUT
-
diff --git a/doc/Makefile.am b/doc/Makefile.am
deleted file mode 100644
index a3a47be8..00000000
--- a/doc/Makefile.am
+++ /dev/null
@@ -1,68 +0,0 @@
-include $(top_srcdir)/build/autotools/common.am
-
-SUBDIRS =
-SUBDIRS += tutorial
-SUBDIRS += samples
-
-EXTRA_DIST += doxygen.cfg.in doxygen.css footer.html header.html \
-              $(man_MANS) $(doxygen_DOX)
-CLEANFILES += doxygen.log stamp-latex stamp-doxygen
-
-doxygen_DOX = lolengine.dox
-if BUILD_DOCUMENTATION
-man_MANS = lolengine.1
-endif
-
-if BUILD_DOCUMENTATION
-htmldoc_DATA = html/doxygen.css
-htmldocdir = $(datadir)/doc/lolengine-dev/html
-if LOL_USE_LATEX
-pdfdoc_DATA = latex/lolengine.pdf
-pdfdocdir = $(datadir)/doc/lolengine-dev/pdf
-endif
-endif
-
-html/doxygen.css html/doxygen.png: stamp-doxygen
-latex/lolengine.pdf: stamp-latex
-
-stamp-doxygen: $(doxygen_DOX)
-if BUILD_DOCUMENTATION
-	doxygen doxygen.cfg 2>&1 | tee doxygen.log
-	touch stamp-doxygen
-endif
-
-stamp-latex: stamp-doxygen
-if BUILD_DOCUMENTATION
-if LOL_USE_LATEX
-	rm -f latex/lolengine.tex latex/lolengine.pdf
-	$(SED) -i -e 's/setlength{/renewcommand{/' latex/refman.tex
-	$(SED) -i -e 's/.*usepackage.*times.*//' latex/refman.tex
-	$(SED) -i -e 's/latex refman/latex -file-line-error -halt-on-error refman/' latex/Makefile
-	cd latex && $(MAKE) $(AM_CFLAGS) refman.pdf || (cat refman.log; exit 1)
-	mv latex/refman.pdf latex/lolengine.pdf
-	touch stamp-latex
-endif
-endif
-
-clean-local:
-	-rm -Rf html latex man
-
-install-data-local:
-if BUILD_DOCUMENTATION
-	mkdir -p $(DESTDIR)$(datadir)/doc
-	$(mkinstalldirs) $(DESTDIR)$(datadir)/doc/lolengine-dev/html
-	cp `find html -name '*.html' -o -name '*.gif' -o -name '*.png'` \
-	  $(DESTDIR)$(datadir)/doc/lolengine-dev/html
-	$(mkinstalldirs) $(DESTDIR)$(mandir)/man3
-	for man in $$(find man -name '*.3lol'); do \
-	  sed -e 's/man3lol/man3/g' -e "s/fC'\([a-zA-Z0-9]*\)'/fC\"\1\"/g" \
-	    $$man >$(DESTDIR)$(mandir)/man3/$${man##*/}; \
-	done
-	$(mkinstalldirs) $(DESTDIR)$(mandir)/man1
-endif
-
-uninstall-local:
-	rmdir $(DESTDIR)$(datadir)/doc/lolengine-dev/html 2>/dev/null || true
-	rmdir $(DESTDIR)$(datadir)/doc/lolengine-dev 2>/dev/null || true
-	rmdir $(DESTDIR)$(datadir)/doc 2>/dev/null || true
-
diff --git a/doc/doxygen.cfg.in b/doc/doxygen.cfg.in
deleted file mode 100644
index 390226c5..00000000
--- a/doc/doxygen.cfg.in
+++ /dev/null
@@ -1,2469 +0,0 @@
-# Doxyfile 1.8.13
-
-# This file describes the settings to be used by the documentation system
-# doxygen (www.doxygen.org) for a project.
-#
-# All text after a double hash (##) is considered a comment and is placed in
-# front of the TAG it is preceding.
-#
-# All text after a single hash (#) is considered a comment and will be ignored.
-# The format is:
-# TAG = value [value, ...]
-# For lists, items can also be appended using:
-# TAG += value [value, ...]
-# Values that contain spaces should be placed between quotes (\" \").
-
-#---------------------------------------------------------------------------
-# Project related configuration options
-#---------------------------------------------------------------------------
-
-# This tag specifies the encoding used for all characters in the config file
-# that follow. The default is UTF-8 which is also the encoding used for all text
-# before the first occurrence of this tag. Doxygen uses libiconv (or the iconv
-# built into libc) for the transcoding. See http://www.gnu.org/software/libiconv
-# for the list of possible encodings.
-# The default value is: UTF-8.
-
-DOXYFILE_ENCODING      = UTF-8
-
-# The PROJECT_NAME tag is a single word (or a sequence of words surrounded by
-# double-quotes, unless you are using Doxywizard) that should identify the
-# project for which the documentation is generated. This name is used in the
-# title of most generated pages and in a few other places.
-# The default value is: My Project.
-
-PROJECT_NAME           = @PACKAGE@
-
-# The PROJECT_NUMBER tag can be used to enter a project or revision number. This
-# could be handy for archiving the generated documentation or if some version
-# control system is used.
-
-PROJECT_NUMBER         = @VERSION@
-
-# Using the PROJECT_BRIEF tag one can provide an optional one line description
-# for a project that appears at the top of each page and should give viewer a
-# quick idea about the purpose of the project. Keep the description short.
-
-PROJECT_BRIEF          =
-
-# With the PROJECT_LOGO tag one can specify a logo or an icon that is included
-# in the documentation. The maximum height of the logo should not exceed 55
-# pixels and the maximum width should not exceed 200 pixels. Doxygen will copy
-# the logo to the output directory.
-
-PROJECT_LOGO           =
-
-# The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute) path
-# into which the generated documentation will be written. If a relative path is
-# entered, it will be relative to the location where doxygen was started. If
-# left blank the current directory will be used.
-
-OUTPUT_DIRECTORY       = .
-
-# If the CREATE_SUBDIRS tag is set to YES then doxygen will create 4096 sub-
-# directories (in 2 levels) under the output directory of each output format and
-# will distribute the generated files over these directories. Enabling this
-# option can be useful when feeding doxygen a huge amount of source files, where
-# putting all generated files in the same directory would otherwise causes
-# performance problems for the file system.
-# The default value is: NO.
-
-CREATE_SUBDIRS         = NO
-
-# If the ALLOW_UNICODE_NAMES tag is set to YES, doxygen will allow non-ASCII
-# characters to appear in the names of generated files. If set to NO, non-ASCII
-# characters will be escaped, for example _xE3_x81_x84 will be used for Unicode
-# U+3044.
-# The default value is: NO.
-
-ALLOW_UNICODE_NAMES    = NO
-
-# The OUTPUT_LANGUAGE tag is used to specify the language in which all
-# documentation generated by doxygen is written. Doxygen will use this
-# information to generate all constant output in the proper language.
-# Possible values are: Afrikaans, Arabic, Armenian, Brazilian, Catalan, Chinese,
-# Chinese-Traditional, Croatian, Czech, Danish, Dutch, English (United States),
-# Esperanto, Farsi (Persian), Finnish, French, German, Greek, Hungarian,
-# Indonesian, Italian, Japanese, Japanese-en (Japanese with English messages),
-# Korean, Korean-en (Korean with English messages), Latvian, Lithuanian,
-# Macedonian, Norwegian, Persian (Farsi), Polish, Portuguese, Romanian, Russian,
-# Serbian, Serbian-Cyrillic, Slovak, Slovene, Spanish, Swedish, Turkish,
-# Ukrainian and Vietnamese.
-# The default value is: English.
-
-OUTPUT_LANGUAGE        = English
-
-# If the BRIEF_MEMBER_DESC tag is set to YES, doxygen will include brief member
-# descriptions after the members that are listed in the file and class
-# documentation (similar to Javadoc). Set to NO to disable this.
-# The default value is: YES.
-
-BRIEF_MEMBER_DESC      = YES
-
-# If the REPEAT_BRIEF tag is set to YES, doxygen will prepend the brief
-# description of a member or function before the detailed description
-#
-# Note: If both HIDE_UNDOC_MEMBERS and BRIEF_MEMBER_DESC are set to NO, the
-# brief descriptions will be completely suppressed.
-# The default value is: YES.
-
-REPEAT_BRIEF           = NO
-
-# This tag implements a quasi-intelligent brief description abbreviator that is
-# used to form the text in various listings. Each string in this list, if found
-# as the leading text of the brief description, will be stripped from the text
-# and the result, after processing the whole list, is used as the annotated
-# text. Otherwise, the brief description is used as-is. If left blank, the
-# following values are used ($name is automatically replaced with the name of
-# the entity):The $name class, The $name widget, The $name file, is, provides,
-# specifies, contains, represents, a, an and the.
-
-ABBREVIATE_BRIEF       =
-
-# If the ALWAYS_DETAILED_SEC and REPEAT_BRIEF tags are both set to YES then
-# doxygen will generate a detailed section even if there is only a brief
-# description.
-# The default value is: NO.
-
-ALWAYS_DETAILED_SEC    = NO
-
-# If the INLINE_INHERITED_MEMB tag is set to YES, doxygen will show all
-# inherited members of a class in the documentation of that class as if those
-# members were ordinary class members. Constructors, destructors and assignment
-# operators of the base classes will not be shown.
-# The default value is: NO.
-
-INLINE_INHERITED_MEMB  = NO
-
-# If the FULL_PATH_NAMES tag is set to YES, doxygen will prepend the full path
-# before files name in the file list and in the header files. If set to NO the
-# shortest path that makes the file name unique will be used
-# The default value is: YES.
-
-FULL_PATH_NAMES        = NO
-
-# The STRIP_FROM_PATH tag can be used to strip a user-defined part of the path.
-# Stripping is only done if one of the specified strings matches the left-hand
-# part of the path. The tag can be used to show relative paths in the file list.
-# If left blank the directory from which doxygen is run is used as the path to
-# strip.
-#
-# Note that you can specify absolute paths here, but also relative paths, which
-# will be relative from the directory where doxygen is started.
-# This tag requires that the tag FULL_PATH_NAMES is set to YES.
-
-STRIP_FROM_PATH        =
-
-# The STRIP_FROM_INC_PATH tag can be used to strip a user-defined part of the
-# path mentioned in the documentation of a class, which tells the reader which
-# header file to include in order to use a class. If left blank only the name of
-# the header file containing the class definition is used. Otherwise one should
-# specify the list of include paths that are normally passed to the compiler
-# using the -I flag.
-
-STRIP_FROM_INC_PATH    =
-
-# If the SHORT_NAMES tag is set to YES, doxygen will generate much shorter (but
-# less readable) file names. This can be useful is your file systems doesn't
-# support long names like on DOS, Mac, or CD-ROM.
-# The default value is: NO.
-
-SHORT_NAMES            = NO
-
-# If the JAVADOC_AUTOBRIEF tag is set to YES then doxygen will interpret the
-# first line (until the first dot) of a Javadoc-style comment as the brief
-# description. If set to NO, the Javadoc-style will behave just like regular Qt-
-# style comments (thus requiring an explicit @brief command for a brief
-# description.)
-# The default value is: NO.
-
-JAVADOC_AUTOBRIEF      = NO
-
-# If the QT_AUTOBRIEF tag is set to YES then doxygen will interpret the first
-# line (until the first dot) of a Qt-style comment as the brief description. If
-# set to NO, the Qt-style will behave just like regular Qt-style comments (thus
-# requiring an explicit \brief command for a brief description.)
-# The default value is: NO.
-
-QT_AUTOBRIEF           = NO
-
-# The MULTILINE_CPP_IS_BRIEF tag can be set to YES to make doxygen treat a
-# multi-line C++ special comment block (i.e. a block of //! or /// comments) as
-# a brief description. This used to be the default behavior. The new default is
-# to treat a multi-line C++ comment block as a detailed description. Set this
-# tag to YES if you prefer the old behavior instead.
-#
-# Note that setting this tag to YES also means that rational rose comments are
-# not recognized any more.
-# The default value is: NO.
-
-MULTILINE_CPP_IS_BRIEF = NO
-
-# If the INHERIT_DOCS tag is set to YES then an undocumented member inherits the
-# documentation from any documented member that it re-implements.
-# The default value is: YES.
-
-INHERIT_DOCS           = YES
-
-# If the SEPARATE_MEMBER_PAGES tag is set to YES then doxygen will produce a new
-# page for each member. If set to NO, the documentation of a member will be part
-# of the file/class/namespace that contains it.
-# The default value is: NO.
-
-SEPARATE_MEMBER_PAGES  = NO
-
-# The TAB_SIZE tag can be used to set the number of spaces in a tab. Doxygen
-# uses this value to replace tabs by spaces in code fragments.
-# Minimum value: 1, maximum value: 16, default value: 4.
-
-TAB_SIZE               = 8
-
-# This tag can be used to specify a number of aliases that act as commands in
-# the documentation. An alias has the form:
-# name=value
-# For example adding
-# "sideeffect=@par Side Effects:\n"
-# will allow you to put the command \sideeffect (or @sideeffect) in the
-# documentation, which will result in a user-defined paragraph with heading
-# "Side Effects:". You can put \n's in the value part of an alias to insert
-# newlines.
-
-ALIASES                =
-
-# This tag can be used to specify a number of word-keyword mappings (TCL only).
-# A mapping has the form "name=value". For example adding "class=itcl::class"
-# will allow you to use the command class in the itcl::class meaning.
-
-TCL_SUBST              =
-
-# Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of C sources
-# only. Doxygen will then generate output that is more tailored for C. For
-# instance, some of the names that are used will be different. The list of all
-# members will be omitted, etc.
-# The default value is: NO.
-
-OPTIMIZE_OUTPUT_FOR_C  = NO
-
-# Set the OPTIMIZE_OUTPUT_JAVA tag to YES if your project consists of Java or
-# Python sources only. Doxygen will then generate output that is more tailored
-# for that language. For instance, namespaces will be presented as packages,
-# qualified scopes will look different, etc.
-# The default value is: NO.
-
-OPTIMIZE_OUTPUT_JAVA   = NO
-
-# Set the OPTIMIZE_FOR_FORTRAN tag to YES if your project consists of Fortran
-# sources. Doxygen will then generate output that is tailored for Fortran.
-# The default value is: NO.
-
-OPTIMIZE_FOR_FORTRAN   = NO
-
-# Set the OPTIMIZE_OUTPUT_VHDL tag to YES if your project consists of VHDL
-# sources. Doxygen will then generate output that is tailored for VHDL.
-# The default value is: NO.
-
-OPTIMIZE_OUTPUT_VHDL   = NO
-
-# Doxygen selects the parser to use depending on the extension of the files it
-# parses. With this tag you can assign which parser to use for a given
-# extension. Doxygen has a built-in mapping, but you can override or extend it
-# using this tag. The format is ext=language, where ext is a file extension, and
-# language is one of the parsers supported by doxygen: IDL, Java, Javascript,
-# C#, C, C++, D, PHP, Objective-C, Python, Fortran (fixed format Fortran:
-# FortranFixed, free formatted Fortran: FortranFree, unknown formatted Fortran:
-# Fortran. In the later case the parser tries to guess whether the code is fixed
-# or free formatted code, this is the default for Fortran type files), VHDL. For
-# instance to make doxygen treat .inc files as Fortran files (default is PHP),
-# and .f files as C (default is Fortran), use: inc=Fortran f=C.
-#
-# Note: For files without extension you can use no_extension as a placeholder.
-#
-# Note that for custom extensions you also need to set FILE_PATTERNS otherwise
-# the files are not read by doxygen.
-
-EXTENSION_MAPPING      =
-
-# If the MARKDOWN_SUPPORT tag is enabled then doxygen pre-processes all comments
-# according to the Markdown format, which allows for more readable
-# documentation. See http://daringfireball.net/projects/markdown/ for details.
-# The output of markdown processing is further processed by doxygen, so you can
-# mix doxygen, HTML, and XML commands with Markdown formatting. Disable only in
-# case of backward compatibilities issues.
-# The default value is: YES.
-
-MARKDOWN_SUPPORT       = YES
-
-# When the TOC_INCLUDE_HEADINGS tag is set to a non-zero value, all headings up
-# to that level are automatically included in the table of contents, even if
-# they do not have an id attribute.
-# Note: This feature currently applies only to Markdown headings.
-# Minimum value: 0, maximum value: 99, default value: 0.
-# This tag requires that the tag MARKDOWN_SUPPORT is set to YES.
-
-TOC_INCLUDE_HEADINGS   = 0
-
-# When enabled doxygen tries to link words that correspond to documented
-# classes, or namespaces to their corresponding documentation. Such a link can
-# be prevented in individual cases by putting a % sign in front of the word or
-# globally by setting AUTOLINK_SUPPORT to NO.
-# The default value is: YES.
-
-AUTOLINK_SUPPORT       = YES
-
-# If you use STL classes (i.e. std::string, std::vector, etc.) but do not want
-# to include (a tag file for) the STL sources as input, then you should set this
-# tag to YES in order to let doxygen match functions declarations and
-# definitions whose arguments contain STL classes (e.g. func(std::string);
-# versus func(std::string) {}). This also make the inheritance and collaboration
-# diagrams that involve STL classes more complete and accurate.
-# The default value is: NO.
-
-BUILTIN_STL_SUPPORT    = NO
-
-# If you use Microsoft's C++/CLI language, you should set this option to YES to
-# enable parsing support.
-# The default value is: NO.
-
-CPP_CLI_SUPPORT        = NO
-
-# Set the SIP_SUPPORT tag to YES if your project consists of sip (see:
-# http://www.riverbankcomputing.co.uk/software/sip/intro) sources only. Doxygen
-# will parse them like normal C++ but will assume all classes use public instead
-# of private inheritance when no explicit protection keyword is present.
-# The default value is: NO.
-
-SIP_SUPPORT            = NO
-
-# For Microsoft's IDL there are propget and propput attributes to indicate
-# getter and setter methods for a property. Setting this option to YES will make
-# doxygen to replace the get and set methods by a property in the documentation.
-# This will only work if the methods are indeed getting or setting a simple
-# type. If this is not the case, or you want to show the methods anyway, you
-# should set this option to NO.
-# The default value is: YES.
-
-IDL_PROPERTY_SUPPORT   = YES
-
-# If member grouping is used in the documentation and the DISTRIBUTE_GROUP_DOC
-# tag is set to YES then doxygen will reuse the documentation of the first
-# member in the group (if any) for the other members of the group. By default
-# all members of a group must be documented explicitly.
-# The default value is: NO.
-
-DISTRIBUTE_GROUP_DOC   = NO
-
-# If one adds a struct or class to a group and this option is enabled, then also
-# any nested class or struct is added to the same group. By default this option
-# is disabled and one has to add nested compounds explicitly via \ingroup.
-# The default value is: NO.
-
-GROUP_NESTED_COMPOUNDS = NO
-
-# Set the SUBGROUPING tag to YES to allow class member groups of the same type
-# (for instance a group of public functions) to be put as a subgroup of that
-# type (e.g. under the Public Functions section). Set it to NO to prevent
-# subgrouping. Alternatively, this can be done per class using the
-# \nosubgrouping command.
-# The default value is: YES.
-
-SUBGROUPING            = YES
-
-# When the INLINE_GROUPED_CLASSES tag is set to YES, classes, structs and unions
-# are shown inside the group in which they are included (e.g. using \ingroup)
-# instead of on a separate page (for HTML and Man pages) or section (for LaTeX
-# and RTF).
-#
-# Note that this feature does not work in combination with
-# SEPARATE_MEMBER_PAGES.
-# The default value is: NO.
-
-INLINE_GROUPED_CLASSES = NO
-
-# When the INLINE_SIMPLE_STRUCTS tag is set to YES, structs, classes, and unions
-# with only public data fields or simple typedef fields will be shown inline in
-# the documentation of the scope in which they are defined (i.e. file,
-# namespace, or group documentation), provided this scope is documented. If set
-# to NO, structs, classes, and unions are shown on a separate page (for HTML and
-# Man pages) or section (for LaTeX and RTF).
-# The default value is: NO.
-
-INLINE_SIMPLE_STRUCTS  = NO
-
-# When TYPEDEF_HIDES_STRUCT tag is enabled, a typedef of a struct, union, or
-# enum is documented as struct, union, or enum with the name of the typedef. So
-# typedef struct TypeS {} TypeT, will appear in the documentation as a struct
-# with name TypeT. When disabled the typedef will appear as a member of a file,
-# namespace, or class. And the struct will be named TypeS. This can typically be
-# useful for C code in case the coding convention dictates that all compound
-# types are typedef'ed and only the typedef is referenced, never the tag name.
-# The default value is: NO.
-
-TYPEDEF_HIDES_STRUCT   = NO
-
-# The size of the symbol lookup cache can be set using LOOKUP_CACHE_SIZE. This
-# cache is used to resolve symbols given their name and scope. Since this can be
-# an expensive process and often the same symbol appears multiple times in the
-# code, doxygen keeps a cache of pre-resolved symbols. If the cache is too small
-# doxygen will become slower. If the cache is too large, memory is wasted. The
-# cache size is given by this formula: 2^(16+LOOKUP_CACHE_SIZE). The valid range
-# is 0..9, the default is 0, corresponding to a cache size of 2^16=65536
-# symbols. At the end of a run doxygen will report the cache usage and suggest
-# the optimal cache size from a speed point of view.
-# Minimum value: 0, maximum value: 9, default value: 0.
-
-LOOKUP_CACHE_SIZE      = 0
-
-#---------------------------------------------------------------------------
-# Build related configuration options
-#---------------------------------------------------------------------------
-
-# If the EXTRACT_ALL tag is set to YES, doxygen will assume all entities in
-# documentation are documented, even if no documentation was available. Private
-# class members and static file members will be hidden unless the
-# EXTRACT_PRIVATE respectively EXTRACT_STATIC tags are set to YES.
-# Note: This will also disable the warnings about undocumented members that are
-# normally produced when WARNINGS is set to YES.
-# The default value is: NO.
-
-EXTRACT_ALL            = NO
-
-# If the EXTRACT_PRIVATE tag is set to YES, all private members of a class will
-# be included in the documentation.
-# The default value is: NO.
-
-EXTRACT_PRIVATE        = NO
-
-# If the EXTRACT_PACKAGE tag is set to YES, all members with package or internal
-# scope will be included in the documentation.
-# The default value is: NO.
-
-EXTRACT_PACKAGE        = NO
-
-# If the EXTRACT_STATIC tag is set to YES, all static members of a file will be
-# included in the documentation.
-# The default value is: NO.
-
-EXTRACT_STATIC         = NO
-
-# If the EXTRACT_LOCAL_CLASSES tag is set to YES, classes (and structs) defined
-# locally in source files will be included in the documentation. If set to NO,
-# only classes defined in header files are included. Does not have any effect
-# for Java sources.
-# The default value is: YES.
-
-EXTRACT_LOCAL_CLASSES  = NO
-
-# This flag is only useful for Objective-C code. If set to YES, local methods,
-# which are defined in the implementation section but not in the interface are
-# included in the documentation. If set to NO, only methods in the interface are
-# included.
-# The default value is: NO.
-
-EXTRACT_LOCAL_METHODS  = NO
-
-# If this flag is set to YES, the members of anonymous namespaces will be
-# extracted and appear in the documentation as a namespace called
-# 'anonymous_namespace{file}', where file will be replaced with the base name of
-# the file that contains the anonymous namespace. By default anonymous namespace
-# are hidden.
-# The default value is: NO.
-
-EXTRACT_ANON_NSPACES   = NO
-
-# If the HIDE_UNDOC_MEMBERS tag is set to YES, doxygen will hide all
-# undocumented members inside documented classes or files. If set to NO these
-# members will be included in the various overviews, but no documentation
-# section is generated. This option has no effect if EXTRACT_ALL is enabled.
-# The default value is: NO.
-
-HIDE_UNDOC_MEMBERS     = NO
-
-# If the HIDE_UNDOC_CLASSES tag is set to YES, doxygen will hide all
-# undocumented classes that are normally visible in the class hierarchy. If set
-# to NO, these classes will be included in the various overviews. This option
-# has no effect if EXTRACT_ALL is enabled.
-# The default value is: NO.
-
-HIDE_UNDOC_CLASSES     = NO
-
-# If the HIDE_FRIEND_COMPOUNDS tag is set to YES, doxygen will hide all friend
-# (class|struct|union) declarations. If set to NO, these declarations will be
-# included in the documentation.
-# The default value is: NO.
-
-HIDE_FRIEND_COMPOUNDS  = NO
-
-# If the HIDE_IN_BODY_DOCS tag is set to YES, doxygen will hide any
-# documentation blocks found inside the body of a function. If set to NO, these
-# blocks will be appended to the function's detailed documentation block.
-# The default value is: NO.
-
-HIDE_IN_BODY_DOCS      = NO
-
-# The INTERNAL_DOCS tag determines if documentation that is typed after a
-# \internal command is included. If the tag is set to NO then the documentation
-# will be excluded. Set it to YES to include the internal documentation.
-# The default value is: NO.
-
-INTERNAL_DOCS          = NO
-
-# If the CASE_SENSE_NAMES tag is set to NO then doxygen will only generate file
-# names in lower-case letters. If set to YES, upper-case letters are also
-# allowed. This is useful if you have classes or files whose names only differ
-# in case and if your file system supports case sensitive file names. Windows
-# and Mac users are advised to set this option to NO.
-# The default value is: system dependent.
-
-CASE_SENSE_NAMES       = NO
-
-# If the HIDE_SCOPE_NAMES tag is set to NO then doxygen will show members with
-# their full class and namespace scopes in the documentation. If set to YES, the
-# scope will be hidden.
-# The default value is: NO.
-
-HIDE_SCOPE_NAMES       = NO
-
-# If the HIDE_COMPOUND_REFERENCE tag is set to NO (default) then doxygen will
-# append additional text to a page's title, such as Class Reference. If set to
-# YES the compound reference will be hidden.
-# The default value is: NO.
-
-HIDE_COMPOUND_REFERENCE= NO
-
-# If the SHOW_INCLUDE_FILES tag is set to YES then doxygen will put a list of
-# the files that are included by a file in the documentation of that file.
-# The default value is: YES.
-
-SHOW_INCLUDE_FILES     = NO
-
-# If the SHOW_GROUPED_MEMB_INC tag is set to YES then Doxygen will add for each
-# grouped member an include statement to the documentation, telling the reader
-# which file to include in order to use the member.
-# The default value is: NO.
-
-SHOW_GROUPED_MEMB_INC  = NO
-
-# If the FORCE_LOCAL_INCLUDES tag is set to YES then doxygen will list include
-# files with double quotes in the documentation rather than with sharp brackets.
-# The default value is: NO.
-
-FORCE_LOCAL_INCLUDES   = NO
-
-# If the INLINE_INFO tag is set to YES then a tag [inline] is inserted in the
-# documentation for inline members.
-# The default value is: YES.
-
-INLINE_INFO            = YES
-
-# If the SORT_MEMBER_DOCS tag is set to YES then doxygen will sort the
-# (detailed) documentation of file and class members alphabetically by member
-# name. If set to NO, the members will appear in declaration order.
-# The default value is: YES.
-
-SORT_MEMBER_DOCS       = NO
-
-# If the SORT_BRIEF_DOCS tag is set to YES then doxygen will sort the brief
-# descriptions of file, namespace and class members alphabetically by member
-# name. If set to NO, the members will appear in declaration order. Note that
-# this will also influence the order of the classes in the class list.
-# The default value is: NO.
-
-SORT_BRIEF_DOCS        = NO
-
-# If the SORT_MEMBERS_CTORS_1ST tag is set to YES then doxygen will sort the
-# (brief and detailed) documentation of class members so that constructors and
-# destructors are listed first. If set to NO the constructors will appear in the
-# respective orders defined by SORT_BRIEF_DOCS and SORT_MEMBER_DOCS.
-# Note: If SORT_BRIEF_DOCS is set to NO this option is ignored for sorting brief
-# member documentation.
-# Note: If SORT_MEMBER_DOCS is set to NO this option is ignored for sorting
-# detailed member documentation.
-# The default value is: NO.
-
-SORT_MEMBERS_CTORS_1ST = NO
-
-# If the SORT_GROUP_NAMES tag is set to YES then doxygen will sort the hierarchy
-# of group names into alphabetical order. If set to NO the group names will
-# appear in their defined order.
-# The default value is: NO.
-
-SORT_GROUP_NAMES       = NO
-
-# If the SORT_BY_SCOPE_NAME tag is set to YES, the class list will be sorted by
-# fully-qualified names, including namespaces. If set to NO, the class list will
-# be sorted only by class name, not including the namespace part.
-# Note: This option is not very useful if HIDE_SCOPE_NAMES is set to YES.
-# Note: This option applies only to the class list, not to the alphabetical
-# list.
-# The default value is: NO.
-
-SORT_BY_SCOPE_NAME     = NO
-
-# If the STRICT_PROTO_MATCHING option is enabled and doxygen fails to do proper
-# type resolution of all parameters of a function it will reject a match between
-# the prototype and the implementation of a member function even if there is
-# only one candidate or it is obvious which candidate to choose by doing a
-# simple string match. By disabling STRICT_PROTO_MATCHING doxygen will still
-# accept a match between prototype and implementation in such cases.
-# The default value is: NO.
-
-STRICT_PROTO_MATCHING  = NO
-
-# The GENERATE_TODOLIST tag can be used to enable (YES) or disable (NO) the todo
-# list. This list is created by putting \todo commands in the documentation.
-# The default value is: YES.
-
-GENERATE_TODOLIST      = YES
-
-# The GENERATE_TESTLIST tag can be used to enable (YES) or disable (NO) the test
-# list. This list is created by putting \test commands in the documentation.
-# The default value is: YES.
-
-GENERATE_TESTLIST      = YES
-
-# The GENERATE_BUGLIST tag can be used to enable (YES) or disable (NO) the bug
-# list. This list is created by putting \bug commands in the documentation.
-# The default value is: YES.
-
-GENERATE_BUGLIST       = YES
-
-# The GENERATE_DEPRECATEDLIST tag can be used to enable (YES) or disable (NO)
-# the deprecated list. This list is created by putting \deprecated commands in
-# the documentation.
-# The default value is: YES.
-
-GENERATE_DEPRECATEDLIST= YES
-
-# The ENABLED_SECTIONS tag can be used to enable conditional documentation
-# sections, marked by \if <section_label> ... \endif and \cond <section_label>
-# ... \endcond blocks.
-
-ENABLED_SECTIONS       =
-
-# The MAX_INITIALIZER_LINES tag determines the maximum number of lines that the
-# initial value of a variable or macro / define can have for it to appear in the
-# documentation. If the initializer consists of more lines than specified here
-# it will be hidden. Use a value of 0 to hide initializers completely. The
-# appearance of the value of individual variables and macros / defines can be
-# controlled using \showinitializer or \hideinitializer command in the
-# documentation regardless of this setting.
-# Minimum value: 0, maximum value: 10000, default value: 30.
-
-MAX_INITIALIZER_LINES  = 30
-
-# Set the SHOW_USED_FILES tag to NO to disable the list of files generated at
-# the bottom of the documentation of classes and structs. If set to YES, the
-# list will mention the files that were used to generate the documentation.
-# The default value is: YES.
-
-SHOW_USED_FILES        = NO
-
-# Set the SHOW_FILES tag to NO to disable the generation of the Files page. This
-# will remove the Files entry from the Quick Index and from the Folder Tree View
-# (if specified).
-# The default value is: YES.
-
-SHOW_FILES             = YES
-
-# Set the SHOW_NAMESPACES tag to NO to disable the generation of the Namespaces
-# page. This will remove the Namespaces entry from the Quick Index and from the
-# Folder Tree View (if specified).
-# The default value is: YES.
-
-SHOW_NAMESPACES        = YES
-
-# The FILE_VERSION_FILTER tag can be used to specify a program or script that
-# doxygen should invoke to get the current version for each file (typically from
-# the version control system). Doxygen will invoke the program by executing (via
-# popen()) the command command input-file, where command is the value of the
-# FILE_VERSION_FILTER tag, and input-file is the name of an input file provided
-# by doxygen. Whatever the program writes to standard output is used as the file
-# version. For an example see the documentation.
-
-FILE_VERSION_FILTER    =
-
-# The LAYOUT_FILE tag can be used to specify a layout file which will be parsed
-# by doxygen. The layout file controls the global structure of the generated
-# output files in an output format independent way. To create the layout file
-# that represents doxygen's defaults, run doxygen with the -l option. You can
-# optionally specify a file name after the option, if omitted DoxygenLayout.xml
-# will be used as the name of the layout file.
-#
-# Note that if you run doxygen from a directory containing a file called
-# DoxygenLayout.xml, doxygen will parse it automatically even if the LAYOUT_FILE
-# tag is left empty.
-
-LAYOUT_FILE            =
-
-# The CITE_BIB_FILES tag can be used to specify one or more bib files containing
-# the reference definitions. This must be a list of .bib files. The .bib
-# extension is automatically appended if omitted. This requires the bibtex tool
-# to be installed. See also http://en.wikipedia.org/wiki/BibTeX for more info.
-# For LaTeX the style of the bibliography can be controlled using
-# LATEX_BIB_STYLE. To use this feature you need bibtex and perl available in the
-# search path. See also \cite for info how to create references.
-
-CITE_BIB_FILES         =
-
-#---------------------------------------------------------------------------
-# Configuration options related to warning and progress messages
-#---------------------------------------------------------------------------
-
-# The QUIET tag can be used to turn on/off the messages that are generated to
-# standard output by doxygen. If QUIET is set to YES this implies that the
-# messages are off.
-# The default value is: NO.
-
-QUIET                  = NO
-
-# The WARNINGS tag can be used to turn on/off the warning messages that are
-# generated to standard error (stderr) by doxygen. If WARNINGS is set to YES
-# this implies that the warnings are on.
-#
-# Tip: Turn warnings on while writing the documentation.
-# The default value is: YES.
-
-WARNINGS               = YES
-
-# If the WARN_IF_UNDOCUMENTED tag is set to YES then doxygen will generate
-# warnings for undocumented members. If EXTRACT_ALL is set to YES then this flag
-# will automatically be disabled.
-# The default value is: YES.
-
-WARN_IF_UNDOCUMENTED   = YES
-
-# If the WARN_IF_DOC_ERROR tag is set to YES, doxygen will generate warnings for
-# potential errors in the documentation, such as not documenting some parameters
-# in a documented function, or documenting parameters that don't exist or using
-# markup commands wrongly.
-# The default value is: YES.
-
-WARN_IF_DOC_ERROR      = YES
-
-# This WARN_NO_PARAMDOC option can be enabled to get warnings for functions that
-# are documented, but have no documentation for their parameters or return
-# value. If set to NO, doxygen will only warn about wrong or incomplete
-# parameter documentation, but not about the absence of documentation.
-# The default value is: NO.
-
-WARN_NO_PARAMDOC       = NO
-
-# If the WARN_AS_ERROR tag is set to YES then doxygen will immediately stop when
-# a warning is encountered.
-# The default value is: NO.
-
-WARN_AS_ERROR          = NO
-
-# The WARN_FORMAT tag determines the format of the warning messages that doxygen
-# can produce. The string should contain the $file, $line, and $text tags, which
-# will be replaced by the file and line number from which the warning originated
-# and the warning text. Optionally the format may contain $version, which will
-# be replaced by the version of the file (if it could be obtained via
-# FILE_VERSION_FILTER)
-# The default value is: $file:$line: $text.
-
-WARN_FORMAT            = "$file:$line: $text  "
-
-# The WARN_LOGFILE tag can be used to specify a file to which warning and error
-# messages should be written. If left blank the output is written to standard
-# error (stderr).
-
-WARN_LOGFILE           =
-
-#---------------------------------------------------------------------------
-# Configuration options related to the input files
-#---------------------------------------------------------------------------
-
-# The INPUT tag is used to specify the files and/or directories that contain
-# documented source files. You may enter file names like myfile.cpp or
-# directories like /usr/src/myproject. Separate the files or directories with
-# spaces. See also FILE_PATTERNS and EXTENSION_MAPPING
-# Note: If this tag is empty the current directory is searched.
-
-INPUT                  = .. \
-                         ../doc \
-                         ../src \
-                         ../src/application \
-                         ../src/core \
-                         ../src/data \
-                         ../src/debug \
-                         ../src/easymesh \
-                         ../src/gpu \
-                         ../src/image \
-                         ../src/lol \
-                         ../src/lol/math \
-                         ../src/lol/core \
-                         ../src/math \
-                         ../src/mesh \
-                         ../src/platform \
-                         ../src/platform/android \
-                         ../src/platform/sdl \
-                         ../src/platform/xbox \
-                         ../src/thread \
-                         ../src/ui
-
-# This tag can be used to specify the character encoding of the source files
-# that doxygen parses. Internally doxygen uses the UTF-8 encoding. Doxygen uses
-# libiconv (or the iconv built into libc) for the transcoding. See the libiconv
-# documentation (see: http://www.gnu.org/software/libiconv) for the list of
-# possible encodings.
-# The default value is: UTF-8.
-
-INPUT_ENCODING         = UTF-8
-
-# If the value of the INPUT tag contains directories, you can use the
-# FILE_PATTERNS tag to specify one or more wildcard patterns (like *.cpp and
-# *.h) to filter out the source-files in the directories.
-#
-# Note that for custom extensions or not directly supported extensions you also
-# need to set EXTENSION_MAPPING for the extension otherwise the files are not
-# read by doxygen.
-#
-# If left blank the following patterns are tested:*.c, *.cc, *.cxx, *.cpp,
-# *.c++, *.java, *.ii, *.ixx, *.ipp, *.i++, *.inl, *.idl, *.ddl, *.odl, *.h,
-# *.hh, *.hxx, *.hpp, *.h++, *.cs, *.d, *.php, *.php4, *.php5, *.phtml, *.inc,
-# *.m, *.markdown, *.md, *.mm, *.dox, *.py, *.pyw, *.f90, *.f95, *.f03, *.f08,
-# *.f, *.for, *.tcl, *.vhd, *.vhdl, *.ucf and *.qsf.
-
-FILE_PATTERNS          = *.dox \
-                         *.cpp \
-                         *.h \
-                         AUTHORS \
-                         NEWS \
-                         README \
-                         THANKS
-
-# The RECURSIVE tag can be used to specify whether or not subdirectories should
-# be searched for input files as well.
-# The default value is: NO.
-
-RECURSIVE              = NO
-
-# The EXCLUDE tag can be used to specify files and/or directories that should be
-# excluded from the INPUT source files. This way you can easily exclude a
-# subdirectory from a directory tree whose root is specified with the INPUT tag.
-#
-# Note that relative paths are relative to the directory from which doxygen is
-# run.
-
-EXCLUDE                =
-
-# The EXCLUDE_SYMLINKS tag can be used to select whether or not files or
-# directories that are symbolic links (a Unix file system feature) are excluded
-# from the input.
-# The default value is: NO.
-
-EXCLUDE_SYMLINKS       = NO
-
-# If the value of the INPUT tag contains directories, you can use the
-# EXCLUDE_PATTERNS tag to specify one or more wildcard patterns to exclude
-# certain files from those directories.
-#
-# Note that the wildcards are matched against the file with absolute path, so to
-# exclude all test directories for example use the pattern */test/*
-
-EXCLUDE_PATTERNS       =
-
-# The EXCLUDE_SYMBOLS tag can be used to specify one or more symbol names
-# (namespaces, classes, functions, etc.) that should be excluded from the
-# output. The symbol name can be a fully qualified name, a word, or if the
-# wildcard * is used, a substring. Examples: ANamespace, AClass,
-# AClass::ANamespace, ANamespace::*Test
-#
-# Note that the wildcards are matched against the file with absolute path, so to
-# exclude all test directories use the pattern */test/*
-
-EXCLUDE_SYMBOLS        =
-
-# The EXAMPLE_PATH tag can be used to specify one or more files or directories
-# that contain example code fragments that are included (see the \include
-# command).
-
-EXAMPLE_PATH           =
-
-# If the value of the EXAMPLE_PATH tag contains directories, you can use the
-# EXAMPLE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp and
-# *.h) to filter out the source-files in the directories. If left blank all
-# files are included.
-
-EXAMPLE_PATTERNS       =
-
-# If the EXAMPLE_RECURSIVE tag is set to YES then subdirectories will be
-# searched for input files to be used with the \include or \dontinclude commands
-# irrespective of the value of the RECURSIVE tag.
-# The default value is: NO.
-
-EXAMPLE_RECURSIVE      = NO
-
-# The IMAGE_PATH tag can be used to specify one or more files or directories
-# that contain images that are to be included in the documentation (see the
-# \image command).
-
-IMAGE_PATH             =
-
-# The INPUT_FILTER tag can be used to specify a program that doxygen should
-# invoke to filter for each input file. Doxygen will invoke the filter program
-# by executing (via popen()) the command:
-#
-# <filter> <input-file>
-#
-# where <filter> is the value of the INPUT_FILTER tag, and <input-file> is the
-# name of an input file. Doxygen will then use the output that the filter
-# program writes to standard output. If FILTER_PATTERNS is specified, this tag
-# will be ignored.
-#
-# Note that the filter must not add or remove lines; it is applied before the
-# code is scanned, but not when the output code is generated. If lines are added
-# or removed, the anchors will not be placed correctly.
-#
-# Note that for custom extensions or not directly supported extensions you also
-# need to set EXTENSION_MAPPING for the extension otherwise the files are not
-# properly processed by doxygen.
-
-INPUT_FILTER           =
-
-# The FILTER_PATTERNS tag can be used to specify filters on a per file pattern
-# basis. Doxygen will compare the file name with each pattern and apply the
-# filter if there is a match. The filters are a list of the form: pattern=filter
-# (like *.cpp=my_cpp_filter). See INPUT_FILTER for further information on how
-# filters are used. If the FILTER_PATTERNS tag is empty or if none of the
-# patterns match the file name, INPUT_FILTER is applied.
-#
-# Note that for custom extensions or not directly supported extensions you also
-# need to set EXTENSION_MAPPING for the extension otherwise the files are not
-# properly processed by doxygen.
-
-FILTER_PATTERNS        =
-
-# If the FILTER_SOURCE_FILES tag is set to YES, the input filter (if set using
-# INPUT_FILTER) will also be used to filter the input files that are used for
-# producing the source files to browse (i.e. when SOURCE_BROWSER is set to YES).
-# The default value is: NO.
-
-FILTER_SOURCE_FILES    = NO
-
-# The FILTER_SOURCE_PATTERNS tag can be used to specify source filters per file
-# pattern. A pattern will override the setting for FILTER_PATTERN (if any) and
-# it is also possible to disable source filtering for a specific pattern using
-# *.ext= (so without naming a filter).
-# This tag requires that the tag FILTER_SOURCE_FILES is set to YES.
-
-FILTER_SOURCE_PATTERNS =
-
-# If the USE_MDFILE_AS_MAINPAGE tag refers to the name of a markdown file that
-# is part of the input, its contents will be placed on the main page
-# (index.html). This can be useful if you have a project on for instance GitHub
-# and want to reuse the introduction page also for the doxygen output.
-
-USE_MDFILE_AS_MAINPAGE =
-
-#---------------------------------------------------------------------------
-# Configuration options related to source browsing
-#---------------------------------------------------------------------------
-
-# If the SOURCE_BROWSER tag is set to YES then a list of source files will be
-# generated. Documented entities will be cross-referenced with these sources.
-#
-# Note: To get rid of all source code in the generated output, make sure that
-# also VERBATIM_HEADERS is set to NO.
-# The default value is: NO.
-
-SOURCE_BROWSER         = NO
-
-# Setting the INLINE_SOURCES tag to YES will include the body of functions,
-# classes and enums directly into the documentation.
-# The default value is: NO.
-
-INLINE_SOURCES         = NO
-
-# Setting the STRIP_CODE_COMMENTS tag to YES will instruct doxygen to hide any
-# special comment blocks from generated source code fragments. Normal C, C++ and
-# Fortran comments will always remain visible.
-# The default value is: YES.
-
-STRIP_CODE_COMMENTS    = YES
-
-# If the REFERENCED_BY_RELATION tag is set to YES then for each documented
-# function all documented functions referencing it will be listed.
-# The default value is: NO.
-
-REFERENCED_BY_RELATION = YES
-
-# If the REFERENCES_RELATION tag is set to YES then for each documented function
-# all documented entities called/used by that function will be listed.
-# The default value is: NO.
-
-REFERENCES_RELATION    = YES
-
-# If the REFERENCES_LINK_SOURCE tag is set to YES and SOURCE_BROWSER tag is set
-# to YES then the hyperlinks from functions in REFERENCES_RELATION and
-# REFERENCED_BY_RELATION lists will link to the source code. Otherwise they will
-# link to the documentation.
-# The default value is: YES.
-
-REFERENCES_LINK_SOURCE = YES
-
-# If SOURCE_TOOLTIPS is enabled (the default) then hovering a hyperlink in the
-# source code will show a tooltip with additional information such as prototype,
-# brief description and links to the definition and documentation. Since this
-# will make the HTML file larger and loading of large files a bit slower, you
-# can opt to disable this feature.
-# The default value is: YES.
-# This tag requires that the tag SOURCE_BROWSER is set to YES.
-
-SOURCE_TOOLTIPS        = YES
-
-# If the USE_HTAGS tag is set to YES then the references to source code will
-# point to the HTML generated by the htags(1) tool instead of doxygen built-in
-# source browser. The htags tool is part of GNU's global source tagging system
-# (see http://www.gnu.org/software/global/global.html). You will need version
-# 4.8.6 or higher.
-#
-# To use it do the following:
-# - Install the latest version of global
-# - Enable SOURCE_BROWSER and USE_HTAGS in the config file
-# - Make sure the INPUT points to the root of the source tree
-# - Run doxygen as normal
-#
-# Doxygen will invoke htags (and that will in turn invoke gtags), so these
-# tools must be available from the command line (i.e. in the search path).
-#
-# The result: instead of the source browser generated by doxygen, the links to
-# source code will now point to the output of htags.
-# The default value is: NO.
-# This tag requires that the tag SOURCE_BROWSER is set to YES.
-
-USE_HTAGS              = NO
-
-# If the VERBATIM_HEADERS tag is set the YES then doxygen will generate a
-# verbatim copy of the header file for each class for which an include is
-# specified. Set to NO to disable this.
-# See also: Section \class.
-# The default value is: YES.
-
-VERBATIM_HEADERS       = NO
-
-# If the CLANG_ASSISTED_PARSING tag is set to YES then doxygen will use the
-# clang parser (see: http://clang.llvm.org/) for more accurate parsing at the
-# cost of reduced performance. This can be particularly helpful with template
-# rich C++ code for which doxygen's built-in parser lacks the necessary type
-# information.
-# Note: The availability of this option depends on whether or not doxygen was
-# generated with the -Duse-libclang=ON option for CMake.
-# The default value is: NO.
-
-CLANG_ASSISTED_PARSING = NO
-
-# If clang assisted parsing is enabled you can provide the compiler with command
-# line options that you would normally use when invoking the compiler. Note that
-# the include paths will already be set by doxygen for the files and directories
-# specified with INPUT and INCLUDE_PATH.
-# This tag requires that the tag CLANG_ASSISTED_PARSING is set to YES.
-
-CLANG_OPTIONS          =
-
-#---------------------------------------------------------------------------
-# Configuration options related to the alphabetical class index
-#---------------------------------------------------------------------------
-
-# If the ALPHABETICAL_INDEX tag is set to YES, an alphabetical index of all
-# compounds will be generated. Enable this if the project contains a lot of
-# classes, structs, unions or interfaces.
-# The default value is: YES.
-
-ALPHABETICAL_INDEX     = NO
-
-# The COLS_IN_ALPHA_INDEX tag can be used to specify the number of columns in
-# which the alphabetical index list will be split.
-# Minimum value: 1, maximum value: 20, default value: 5.
-# This tag requires that the tag ALPHABETICAL_INDEX is set to YES.
-
-COLS_IN_ALPHA_INDEX    = 5
-
-# In case all classes in a project start with a common prefix, all classes will
-# be put under the same header in the alphabetical index. The IGNORE_PREFIX tag
-# can be used to specify a prefix (or a list of prefixes) that should be ignored
-# while generating the index headers.
-# This tag requires that the tag ALPHABETICAL_INDEX is set to YES.
-
-IGNORE_PREFIX          =
-
-#---------------------------------------------------------------------------
-# Configuration options related to the HTML output
-#---------------------------------------------------------------------------
-
-# If the GENERATE_HTML tag is set to YES, doxygen will generate HTML output
-# The default value is: YES.
-
-GENERATE_HTML          = YES
-
-# The HTML_OUTPUT tag is used to specify where the HTML docs will be put. If a
-# relative path is entered the value of OUTPUT_DIRECTORY will be put in front of
-# it.
-# The default directory is: html.
-# This tag requires that the tag GENERATE_HTML is set to YES.
-
-HTML_OUTPUT            = html
-
-# The HTML_FILE_EXTENSION tag can be used to specify the file extension for each
-# generated HTML page (for example: .htm, .php, .asp).
-# The default value is: .html.
-# This tag requires that the tag GENERATE_HTML is set to YES.
-
-HTML_FILE_EXTENSION    = .html
-
-# The HTML_HEADER tag can be used to specify a user-defined HTML header file for
-# each generated HTML page. If the tag is left blank doxygen will generate a
-# standard header.
-#
-# To get valid HTML the header file that includes any scripts and style sheets
-# that doxygen needs, which is dependent on the configuration options used (e.g.
-# the setting GENERATE_TREEVIEW). It is highly recommended to start with a
-# default header using
-# doxygen -w html new_header.html new_footer.html new_stylesheet.css
-# YourConfigFile
-# and then modify the file new_header.html. See also section "Doxygen usage"
-# for information on how to generate the default header that doxygen normally
-# uses.
-# Note: The header is subject to change so you typically have to regenerate the
-# default header when upgrading to a newer version of doxygen. For a description
-# of the possible markers and block names see the documentation.
-# This tag requires that the tag GENERATE_HTML is set to YES.
-
-HTML_HEADER            = @srcdir@/header.html
-
-# The HTML_FOOTER tag can be used to specify a user-defined HTML footer for each
-# generated HTML page. If the tag is left blank doxygen will generate a standard
-# footer. See HTML_HEADER for more information on how to generate a default
-# footer and what special commands can be used inside the footer. See also
-# section "Doxygen usage" for information on how to generate the default footer
-# that doxygen normally uses.
-# This tag requires that the tag GENERATE_HTML is set to YES.
-
-HTML_FOOTER            = @srcdir@/footer.html
-
-# The HTML_STYLESHEET tag can be used to specify a user-defined cascading style
-# sheet that is used by each HTML page. It can be used to fine-tune the look of
-# the HTML output. If left blank doxygen will generate a default style sheet.
-# See also section "Doxygen usage" for information on how to generate the style
-# sheet that doxygen normally uses.
-# Note: It is recommended to use HTML_EXTRA_STYLESHEET instead of this tag, as
-# it is more robust and this tag (HTML_STYLESHEET) will in the future become
-# obsolete.
-# This tag requires that the tag GENERATE_HTML is set to YES.
-
-HTML_STYLESHEET        = doxygen.css
-
-# The HTML_EXTRA_STYLESHEET tag can be used to specify additional user-defined
-# cascading style sheets that are included after the standard style sheets
-# created by doxygen. Using this option one can overrule certain style aspects.
-# This is preferred over using HTML_STYLESHEET since it does not replace the
-# standard style sheet and is therefore more robust against future updates.
-# Doxygen will copy the style sheet files to the output directory.
-# Note: The order of the extra style sheet files is of importance (e.g. the last
-# style sheet in the list overrules the setting of the previous ones in the
-# list). For an example see the documentation.
-# This tag requires that the tag GENERATE_HTML is set to YES.
-
-HTML_EXTRA_STYLESHEET  =
-
-# The HTML_EXTRA_FILES tag can be used to specify one or more extra images or
-# other source files which should be copied to the HTML output directory. Note
-# that these files will be copied to the base HTML output directory. Use the
-# $relpath^ marker in the HTML_HEADER and/or HTML_FOOTER files to load these
-# files. In the HTML_STYLESHEET file, use the file name only. Also note that the
-# files will be copied as-is; there are no commands or markers available.
-# This tag requires that the tag GENERATE_HTML is set to YES.
-
-HTML_EXTRA_FILES       =
-
-# The HTML_COLORSTYLE_HUE tag controls the color of the HTML output. Doxygen
-# will adjust the colors in the style sheet and background images according to
-# this color. Hue is specified as an angle on a colorwheel, see
-# http://en.wikipedia.org/wiki/Hue for more information. For instance the value
-# 0 represents red, 60 is yellow, 120 is green, 180 is cyan, 240 is blue, 300
-# purple, and 360 is red again.
-# Minimum value: 0, maximum value: 359, default value: 220.
-# This tag requires that the tag GENERATE_HTML is set to YES.
-
-HTML_COLORSTYLE_HUE    = 220
-
-# The HTML_COLORSTYLE_SAT tag controls the purity (or saturation) of the colors
-# in the HTML output. For a value of 0 the output will use grayscales only. A
-# value of 255 will produce the most vivid colors.
-# Minimum value: 0, maximum value: 255, default value: 100.
-# This tag requires that the tag GENERATE_HTML is set to YES.
-
-HTML_COLORSTYLE_SAT    = 100
-
-# The HTML_COLORSTYLE_GAMMA tag controls the gamma correction applied to the
-# luminance component of the colors in the HTML output. Values below 100
-# gradually make the output lighter, whereas values above 100 make the output
-# darker. The value divided by 100 is the actual gamma applied, so 80 represents
-# a gamma of 0.8, The value 220 represents a gamma of 2.2, and 100 does not
-# change the gamma.
-# Minimum value: 40, maximum value: 240, default value: 80.
-# This tag requires that the tag GENERATE_HTML is set to YES.
-
-HTML_COLORSTYLE_GAMMA  = 80
-
-# If the HTML_TIMESTAMP tag is set to YES then the footer of each generated HTML
-# page will contain the date and time when the page was generated. Setting this
-# to YES can help to show when doxygen was last run and thus if the
-# documentation is up to date.
-# The default value is: NO.
-# This tag requires that the tag GENERATE_HTML is set to YES.
-
-HTML_TIMESTAMP         = NO
-
-# If the HTML_DYNAMIC_SECTIONS tag is set to YES then the generated HTML
-# documentation will contain sections that can be hidden and shown after the
-# page has loaded.
-# The default value is: NO.
-# This tag requires that the tag GENERATE_HTML is set to YES.
-
-HTML_DYNAMIC_SECTIONS  = NO
-
-# With HTML_INDEX_NUM_ENTRIES one can control the preferred number of entries
-# shown in the various tree structured indices initially; the user can expand
-# and collapse entries dynamically later on. Doxygen will expand the tree to
-# such a level that at most the specified number of entries are visible (unless
-# a fully collapsed tree already exceeds this amount). So setting the number of
-# entries 1 will produce a full collapsed tree by default. 0 is a special value
-# representing an infinite number of entries and will result in a full expanded
-# tree by default.
-# Minimum value: 0, maximum value: 9999, default value: 100.
-# This tag requires that the tag GENERATE_HTML is set to YES.
-
-HTML_INDEX_NUM_ENTRIES = 100
-
-# If the GENERATE_DOCSET tag is set to YES, additional index files will be
-# generated that can be used as input for Apple's Xcode 3 integrated development
-# environment (see: http://developer.apple.com/tools/xcode/), introduced with
-# OSX 10.5 (Leopard). To create a documentation set, doxygen will generate a
-# Makefile in the HTML output directory. Running make will produce the docset in
-# that directory and running make install will install the docset in
-# ~/Library/Developer/Shared/Documentation/DocSets so that Xcode will find it at
-# startup. See http://developer.apple.com/tools/creatingdocsetswithdoxygen.html
-# for more information.
-# The default value is: NO.
-# This tag requires that the tag GENERATE_HTML is set to YES.
-
-GENERATE_DOCSET        = NO
-
-# This tag determines the name of the docset feed. A documentation feed provides
-# an umbrella under which multiple documentation sets from a single provider
-# (such as a company or product suite) can be grouped.
-# The default value is: Doxygen generated docs.
-# This tag requires that the tag GENERATE_DOCSET is set to YES.
-
-DOCSET_FEEDNAME        = "Doxygen generated docs"
-
-# This tag specifies a string that should uniquely identify the documentation
-# set bundle. This should be a reverse domain-name style string, e.g.
-# com.mycompany.MyDocSet. Doxygen will append .docset to the name.
-# The default value is: org.doxygen.Project.
-# This tag requires that the tag GENERATE_DOCSET is set to YES.
-
-DOCSET_BUNDLE_ID       = org.doxygen.Project
-
-# The DOCSET_PUBLISHER_ID tag specifies a string that should uniquely identify
-# the documentation publisher. This should be a reverse domain-name style
-# string, e.g. com.mycompany.MyDocSet.documentation.
-# The default value is: org.doxygen.Publisher.
-# This tag requires that the tag GENERATE_DOCSET is set to YES.
-
-DOCSET_PUBLISHER_ID    = org.doxygen.Publisher
-
-# The DOCSET_PUBLISHER_NAME tag identifies the documentation publisher.
-# The default value is: Publisher.
-# This tag requires that the tag GENERATE_DOCSET is set to YES.
-
-DOCSET_PUBLISHER_NAME  = Publisher
-
-# If the GENERATE_HTMLHELP tag is set to YES then doxygen generates three
-# additional HTML index files: index.hhp, index.hhc, and index.hhk. The
-# index.hhp is a project file that can be read by Microsoft's HTML Help Workshop
-# (see: http://www.microsoft.com/en-us/download/details.aspx?id=21138) on
-# Windows.
-#
-# The HTML Help Workshop contains a compiler that can convert all HTML output
-# generated by doxygen into a single compiled HTML file (.chm). Compiled HTML
-# files are now used as the Windows 98 help format, and will replace the old
-# Windows help format (.hlp) on all Windows platforms in the future. Compressed
-# HTML files also contain an index, a table of contents, and you can search for
-# words in the documentation. The HTML workshop also contains a viewer for
-# compressed HTML files.
-# The default value is: NO.
-# This tag requires that the tag GENERATE_HTML is set to YES.
-
-GENERATE_HTMLHELP      = NO
-
-# The CHM_FILE tag can be used to specify the file name of the resulting .chm
-# file. You can add a path in front of the file if the result should not be
-# written to the html output directory.
-# This tag requires that the tag GENERATE_HTMLHELP is set to YES.
-
-CHM_FILE               =
-
-# The HHC_LOCATION tag can be used to specify the location (absolute path
-# including file name) of the HTML help compiler (hhc.exe). If non-empty,
-# doxygen will try to run the HTML help compiler on the generated index.hhp.
-# The file has to be specified with full path.
-# This tag requires that the tag GENERATE_HTMLHELP is set to YES.
-
-HHC_LOCATION           =
-
-# The GENERATE_CHI flag controls if a separate .chi index file is generated
-# (YES) or that it should be included in the master .chm file (NO).
-# The default value is: NO.
-# This tag requires that the tag GENERATE_HTMLHELP is set to YES.
-
-GENERATE_CHI           = NO
-
-# The CHM_INDEX_ENCODING is used to encode HtmlHelp index (hhk), content (hhc)
-# and project file content.
-# This tag requires that the tag GENERATE_HTMLHELP is set to YES.
-
-CHM_INDEX_ENCODING     =
-
-# The BINARY_TOC flag controls whether a binary table of contents is generated
-# (YES) or a normal table of contents (NO) in the .chm file. Furthermore it
-# enables the Previous and Next buttons.
-# The default value is: NO.
-# This tag requires that the tag GENERATE_HTMLHELP is set to YES.
-
-BINARY_TOC             = NO
-
-# The TOC_EXPAND flag can be set to YES to add extra items for group members to
-# the table of contents of the HTML help documentation and to the tree view.
-# The default value is: NO.
-# This tag requires that the tag GENERATE_HTMLHELP is set to YES.
-
-TOC_EXPAND             = NO
-
-# If the GENERATE_QHP tag is set to YES and both QHP_NAMESPACE and
-# QHP_VIRTUAL_FOLDER are set, an additional index file will be generated that
-# can be used as input for Qt's qhelpgenerator to generate a Qt Compressed Help
-# (.qch) of the generated HTML documentation.
-# The default value is: NO.
-# This tag requires that the tag GENERATE_HTML is set to YES.
-
-GENERATE_QHP           = NO
-
-# If the QHG_LOCATION tag is specified, the QCH_FILE tag can be used to specify
-# the file name of the resulting .qch file. The path specified is relative to
-# the HTML output folder.
-# This tag requires that the tag GENERATE_QHP is set to YES.
-
-QCH_FILE               =
-
-# The QHP_NAMESPACE tag specifies the namespace to use when generating Qt Help
-# Project output. For more information please see Qt Help Project / Namespace
-# (see: http://qt-project.org/doc/qt-4.8/qthelpproject.html#namespace).
-# The default value is: org.doxygen.Project.
-# This tag requires that the tag GENERATE_QHP is set to YES.
-
-QHP_NAMESPACE          =
-
-# The QHP_VIRTUAL_FOLDER tag specifies the namespace to use when generating Qt
-# Help Project output. For more information please see Qt Help Project / Virtual
-# Folders (see: http://qt-project.org/doc/qt-4.8/qthelpproject.html#virtual-
-# folders).
-# The default value is: doc.
-# This tag requires that the tag GENERATE_QHP is set to YES.
-
-QHP_VIRTUAL_FOLDER     = doc
-
-# If the QHP_CUST_FILTER_NAME tag is set, it specifies the name of a custom
-# filter to add. For more information please see Qt Help Project / Custom
-# Filters (see: http://qt-project.org/doc/qt-4.8/qthelpproject.html#custom-
-# filters).
-# This tag requires that the tag GENERATE_QHP is set to YES.
-
-QHP_CUST_FILTER_NAME   =
-
-# The QHP_CUST_FILTER_ATTRS tag specifies the list of the attributes of the
-# custom filter to add. For more information please see Qt Help Project / Custom
-# Filters (see: http://qt-project.org/doc/qt-4.8/qthelpproject.html#custom-
-# filters).
-# This tag requires that the tag GENERATE_QHP is set to YES.
-
-QHP_CUST_FILTER_ATTRS  =
-
-# The QHP_SECT_FILTER_ATTRS tag specifies the list of the attributes this
-# project's filter section matches. Qt Help Project / Filter Attributes (see:
-# http://qt-project.org/doc/qt-4.8/qthelpproject.html#filter-attributes).
-# This tag requires that the tag GENERATE_QHP is set to YES.
-
-QHP_SECT_FILTER_ATTRS  =
-
-# The QHG_LOCATION tag can be used to specify the location of Qt's
-# qhelpgenerator. If non-empty doxygen will try to run qhelpgenerator on the
-# generated .qhp file.
-# This tag requires that the tag GENERATE_QHP is set to YES.
-
-QHG_LOCATION           =
-
-# If the GENERATE_ECLIPSEHELP tag is set to YES, additional index files will be
-# generated, together with the HTML files, they form an Eclipse help plugin. To
-# install this plugin and make it available under the help contents menu in
-# Eclipse, the contents of the directory containing the HTML and XML files needs
-# to be copied into the plugins directory of eclipse. The name of the directory
-# within the plugins directory should be the same as the ECLIPSE_DOC_ID value.
-# After copying Eclipse needs to be restarted before the help appears.
-# The default value is: NO.
-# This tag requires that the tag GENERATE_HTML is set to YES.
-
-GENERATE_ECLIPSEHELP   = NO
-
-# A unique identifier for the Eclipse help plugin. When installing the plugin
-# the directory name containing the HTML and XML files should also have this
-# name. Each documentation set should have its own identifier.
-# The default value is: org.doxygen.Project.
-# This tag requires that the tag GENERATE_ECLIPSEHELP is set to YES.
-
-ECLIPSE_DOC_ID         = org.doxygen.Project
-
-# If you want full control over the layout of the generated HTML pages it might
-# be necessary to disable the index and replace it with your own. The
-# DISABLE_INDEX tag can be used to turn on/off the condensed index (tabs) at top
-# of each HTML page. A value of NO enables the index and the value YES disables
-# it. Since the tabs in the index contain the same information as the navigation
-# tree, you can set this option to YES if you also set GENERATE_TREEVIEW to YES.
-# The default value is: NO.
-# This tag requires that the tag GENERATE_HTML is set to YES.
-
-DISABLE_INDEX          = YES
-
-# The GENERATE_TREEVIEW tag is used to specify whether a tree-like index
-# structure should be generated to display hierarchical information. If the tag
-# value is set to YES, a side panel will be generated containing a tree-like
-# index structure (just like the one that is generated for HTML Help). For this
-# to work a browser that supports JavaScript, DHTML, CSS and frames is required
-# (i.e. any modern browser). Windows users are probably better off using the
-# HTML help feature. Via custom style sheets (see HTML_EXTRA_STYLESHEET) one can
-# further fine-tune the look of the index. As an example, the default style
-# sheet generated by doxygen has an example that shows how to put an image at
-# the root of the tree instead of the PROJECT_NAME. Since the tree basically has
-# the same information as the tab index, you could consider setting
-# DISABLE_INDEX to YES when enabling this option.
-# The default value is: NO.
-# This tag requires that the tag GENERATE_HTML is set to YES.
-
-GENERATE_TREEVIEW      = NO
-
-# The ENUM_VALUES_PER_LINE tag can be used to set the number of enum values that
-# doxygen will group on one line in the generated HTML documentation.
-#
-# Note that a value of 0 will completely suppress the enum values from appearing
-# in the overview section.
-# Minimum value: 0, maximum value: 20, default value: 4.
-# This tag requires that the tag GENERATE_HTML is set to YES.
-
-ENUM_VALUES_PER_LINE   = 1
-
-# If the treeview is enabled (see GENERATE_TREEVIEW) then this tag can be used
-# to set the initial width (in pixels) of the frame in which the tree is shown.
-# Minimum value: 0, maximum value: 1500, default value: 250.
-# This tag requires that the tag GENERATE_HTML is set to YES.
-
-TREEVIEW_WIDTH         = 250
-
-# If the EXT_LINKS_IN_WINDOW option is set to YES, doxygen will open links to
-# external symbols imported via tag files in a separate window.
-# The default value is: NO.
-# This tag requires that the tag GENERATE_HTML is set to YES.
-
-EXT_LINKS_IN_WINDOW    = NO
-
-# Use this tag to change the font size of LaTeX formulas included as images in
-# the HTML documentation. When you change the font size after a successful
-# doxygen run you need to manually remove any form_*.png images from the HTML
-# output directory to force them to be regenerated.
-# Minimum value: 8, maximum value: 50, default value: 10.
-# This tag requires that the tag GENERATE_HTML is set to YES.
-
-FORMULA_FONTSIZE       = 10
-
-# Use the FORMULA_TRANPARENT tag to determine whether or not the images
-# generated for formulas are transparent PNGs. Transparent PNGs are not
-# supported properly for IE 6.0, but are supported on all modern browsers.
-#
-# Note that when changing this option you need to delete any form_*.png files in
-# the HTML output directory before the changes have effect.
-# The default value is: YES.
-# This tag requires that the tag GENERATE_HTML is set to YES.
-
-FORMULA_TRANSPARENT    = YES
-
-# Enable the USE_MATHJAX option to render LaTeX formulas using MathJax (see
-# http://www.mathjax.org) which uses client side Javascript for the rendering
-# instead of using pre-rendered bitmaps. Use this if you do not have LaTeX
-# installed or if you want to formulas look prettier in the HTML output. When
-# enabled you may also need to install MathJax separately and configure the path
-# to it using the MATHJAX_RELPATH option.
-# The default value is: NO.
-# This tag requires that the tag GENERATE_HTML is set to YES.
-
-USE_MATHJAX            = NO
-
-# When MathJax is enabled you can set the default output format to be used for
-# the MathJax output. See the MathJax site (see:
-# http://docs.mathjax.org/en/latest/output.html) for more details.
-# Possible values are: HTML-CSS (which is slower, but has the best
-# compatibility), NativeMML (i.e. MathML) and SVG.
-# The default value is: HTML-CSS.
-# This tag requires that the tag USE_MATHJAX is set to YES.
-
-MATHJAX_FORMAT         = HTML-CSS
-
-# When MathJax is enabled you need to specify the location relative to the HTML
-# output directory using the MATHJAX_RELPATH option. The destination directory
-# should contain the MathJax.js script. For instance, if the mathjax directory
-# is located at the same level as the HTML output directory, then
-# MATHJAX_RELPATH should be ../mathjax. The default value points to the MathJax
-# Content Delivery Network so you can quickly see the result without installing
-# MathJax. However, it is strongly recommended to install a local copy of
-# MathJax from http://www.mathjax.org before deployment.
-# The default value is: http://cdn.mathjax.org/mathjax/latest.
-# This tag requires that the tag USE_MATHJAX is set to YES.
-
-MATHJAX_RELPATH        = http://cdn.mathjax.org/mathjax/latest
-
-# The MATHJAX_EXTENSIONS tag can be used to specify one or more MathJax
-# extension names that should be enabled during MathJax rendering. For example
-# MATHJAX_EXTENSIONS = TeX/AMSmath TeX/AMSsymbols
-# This tag requires that the tag USE_MATHJAX is set to YES.
-
-MATHJAX_EXTENSIONS     =
-
-# The MATHJAX_CODEFILE tag can be used to specify a file with javascript pieces
-# of code that will be used on startup of the MathJax code. See the MathJax site
-# (see: http://docs.mathjax.org/en/latest/output.html) for more details. For an
-# example see the documentation.
-# This tag requires that the tag USE_MATHJAX is set to YES.
-
-MATHJAX_CODEFILE       =
-
-# When the SEARCHENGINE tag is enabled doxygen will generate a search box for
-# the HTML output. The underlying search engine uses javascript and DHTML and
-# should work on any modern browser. Note that when using HTML help
-# (GENERATE_HTMLHELP), Qt help (GENERATE_QHP), or docsets (GENERATE_DOCSET)
-# there is already a search function so this one should typically be disabled.
-# For large projects the javascript based search engine can be slow, then
-# enabling SERVER_BASED_SEARCH may provide a better solution. It is possible to
-# search using the keyboard; to jump to the search box use <access key> + S
-# (what the <access key> is depends on the OS and browser, but it is typically
-# <CTRL>, <ALT>/<option>, or both). Inside the search box use the <cursor down
-# key> to jump into the search results window, the results can be navigated
-# using the <cursor keys>. Press <Enter> to select an item or <escape> to cancel
-# the search. The filter options can be selected when the cursor is inside the
-# search box by pressing <Shift>+<cursor down>. Also here use the <cursor keys>
-# to select a filter and <Enter> or <escape> to activate or cancel the filter
-# option.
-# The default value is: YES.
-# This tag requires that the tag GENERATE_HTML is set to YES.
-
-SEARCHENGINE           = NO
-
-# When the SERVER_BASED_SEARCH tag is enabled the search engine will be
-# implemented using a web server instead of a web client using Javascript. There
-# are two flavors of web server based searching depending on the EXTERNAL_SEARCH
-# setting. When disabled, doxygen will generate a PHP script for searching and
-# an index file used by the script. When EXTERNAL_SEARCH is enabled the indexing
-# and searching needs to be provided by external tools. See the section
-# "External Indexing and Searching" for details.
-# The default value is: NO.
-# This tag requires that the tag SEARCHENGINE is set to YES.
-
-SERVER_BASED_SEARCH    = NO
-
-# When EXTERNAL_SEARCH tag is enabled doxygen will no longer generate the PHP
-# script for searching. Instead the search results are written to an XML file
-# which needs to be processed by an external indexer. Doxygen will invoke an
-# external search engine pointed to by the SEARCHENGINE_URL option to obtain the
-# search results.
-#
-# Doxygen ships with an example indexer (doxyindexer) and search engine
-# (doxysearch.cgi) which are based on the open source search engine library
-# Xapian (see: http://xapian.org/).
-#
-# See the section "External Indexing and Searching" for details.
-# The default value is: NO.
-# This tag requires that the tag SEARCHENGINE is set to YES.
-
-EXTERNAL_SEARCH        = NO
-
-# The SEARCHENGINE_URL should point to a search engine hosted by a web server
-# which will return the search results when EXTERNAL_SEARCH is enabled.
-#
-# Doxygen ships with an example indexer (doxyindexer) and search engine
-# (doxysearch.cgi) which are based on the open source search engine library
-# Xapian (see: http://xapian.org/). See the section "External Indexing and
-# Searching" for details.
-# This tag requires that the tag SEARCHENGINE is set to YES.
-
-SEARCHENGINE_URL       =
-
-# When SERVER_BASED_SEARCH and EXTERNAL_SEARCH are both enabled the unindexed
-# search data is written to a file for indexing by an external tool. With the
-# SEARCHDATA_FILE tag the name of this file can be specified.
-# The default file is: searchdata.xml.
-# This tag requires that the tag SEARCHENGINE is set to YES.
-
-SEARCHDATA_FILE        = searchdata.xml
-
-# When SERVER_BASED_SEARCH and EXTERNAL_SEARCH are both enabled the
-# EXTERNAL_SEARCH_ID tag can be used as an identifier for the project. This is
-# useful in combination with EXTRA_SEARCH_MAPPINGS to search through multiple
-# projects and redirect the results back to the right project.
-# This tag requires that the tag SEARCHENGINE is set to YES.
-
-EXTERNAL_SEARCH_ID     =
-
-# The EXTRA_SEARCH_MAPPINGS tag can be used to enable searching through doxygen
-# projects other than the one defined by this configuration file, but that are
-# all added to the same external search index. Each project needs to have a
-# unique id set via EXTERNAL_SEARCH_ID. The search mapping then maps the id of
-# to a relative location where the documentation can be found. The format is:
-# EXTRA_SEARCH_MAPPINGS = tagname1=loc1 tagname2=loc2 ...
-# This tag requires that the tag SEARCHENGINE is set to YES.
-
-EXTRA_SEARCH_MAPPINGS  =
-
-#---------------------------------------------------------------------------
-# Configuration options related to the LaTeX output
-#---------------------------------------------------------------------------
-
-# If the GENERATE_LATEX tag is set to YES, doxygen will generate LaTeX output.
-# The default value is: YES.
-
-GENERATE_LATEX         = YES
-
-# The LATEX_OUTPUT tag is used to specify where the LaTeX docs will be put. If a
-# relative path is entered the value of OUTPUT_DIRECTORY will be put in front of
-# it.
-# The default directory is: latex.
-# This tag requires that the tag GENERATE_LATEX is set to YES.
-
-LATEX_OUTPUT           = latex
-
-# The LATEX_CMD_NAME tag can be used to specify the LaTeX command name to be
-# invoked.
-#
-# Note that when enabling USE_PDFLATEX this option is only used for generating
-# bitmaps for formulas in the HTML output, but not in the Makefile that is
-# written to the output directory.
-# The default file is: latex.
-# This tag requires that the tag GENERATE_LATEX is set to YES.
-
-LATEX_CMD_NAME         = latex-file-line-error-halt-on-error
-
-# The MAKEINDEX_CMD_NAME tag can be used to specify the command name to generate
-# index for LaTeX.
-# The default file is: makeindex.
-# This tag requires that the tag GENERATE_LATEX is set to YES.
-
-MAKEINDEX_CMD_NAME     = makeindex
-
-# If the COMPACT_LATEX tag is set to YES, doxygen generates more compact LaTeX
-# documents. This may be useful for small projects and may help to save some
-# trees in general.
-# The default value is: NO.
-# This tag requires that the tag GENERATE_LATEX is set to YES.
-
-COMPACT_LATEX          = YES
-
-# The PAPER_TYPE tag can be used to set the paper type that is used by the
-# printer.
-# Possible values are: a4 (210 x 297 mm), letter (8.5 x 11 inches), legal (8.5 x
-# 14 inches) and executive (7.25 x 10.5 inches).
-# The default value is: a4.
-# This tag requires that the tag GENERATE_LATEX is set to YES.
-
-PAPER_TYPE             = a4wide
-
-# The EXTRA_PACKAGES tag can be used to specify one or more LaTeX package names
-# that should be included in the LaTeX output. The package can be specified just
-# by its name or with the correct syntax as to be used with the LaTeX
-# \usepackage command. To get the times font for instance you can specify :
-# EXTRA_PACKAGES=times or EXTRA_PACKAGES={times}
-# To use the option intlimits with the amsmath package you can specify:
-# EXTRA_PACKAGES=[intlimits]{amsmath}
-# If left blank no extra packages will be included.
-# This tag requires that the tag GENERATE_LATEX is set to YES.
-
-EXTRA_PACKAGES         =
-
-# The LATEX_HEADER tag can be used to specify a personal LaTeX header for the
-# generated LaTeX document. The header should contain everything until the first
-# chapter. If it is left blank doxygen will generate a standard header. See
-# section "Doxygen usage" for information on how to let doxygen write the
-# default header to a separate file.
-#
-# Note: Only use a user-defined header if you know what you are doing! The
-# following commands have a special meaning inside the header: $title,
-# $datetime, $date, $doxygenversion, $projectname, $projectnumber,
-# $projectbrief, $projectlogo. Doxygen will replace $title with the empty
-# string, for the replacement values of the other commands the user is referred
-# to HTML_HEADER.
-# This tag requires that the tag GENERATE_LATEX is set to YES.
-
-LATEX_HEADER           =
-
-# The LATEX_FOOTER tag can be used to specify a personal LaTeX footer for the
-# generated LaTeX document. The footer should contain everything after the last
-# chapter. If it is left blank doxygen will generate a standard footer. See
-# LATEX_HEADER for more information on how to generate a default footer and what
-# special commands can be used inside the footer.
-#
-# Note: Only use a user-defined footer if you know what you are doing!
-# This tag requires that the tag GENERATE_LATEX is set to YES.
-
-LATEX_FOOTER           =
-
-# The LATEX_EXTRA_STYLESHEET tag can be used to specify additional user-defined
-# LaTeX style sheets that are included after the standard style sheets created
-# by doxygen. Using this option one can overrule certain style aspects. Doxygen
-# will copy the style sheet files to the output directory.
-# Note: The order of the extra style sheet files is of importance (e.g. the last
-# style sheet in the list overrules the setting of the previous ones in the
-# list).
-# This tag requires that the tag GENERATE_LATEX is set to YES.
-
-LATEX_EXTRA_STYLESHEET =
-
-# The LATEX_EXTRA_FILES tag can be used to specify one or more extra images or
-# other source files which should be copied to the LATEX_OUTPUT output
-# directory. Note that the files will be copied as-is; there are no commands or
-# markers available.
-# This tag requires that the tag GENERATE_LATEX is set to YES.
-
-LATEX_EXTRA_FILES      =
-
-# If the PDF_HYPERLINKS tag is set to YES, the LaTeX that is generated is
-# prepared for conversion to PDF (using ps2pdf or pdflatex). The PDF file will
-# contain links (just like the HTML output) instead of page references. This
-# makes the output suitable for online browsing using a PDF viewer.
-# The default value is: YES.
-# This tag requires that the tag GENERATE_LATEX is set to YES.
-
-PDF_HYPERLINKS         = YES
-
-# If the USE_PDFLATEX tag is set to YES, doxygen will use pdflatex to generate
-# the PDF file directly from the LaTeX files. Set this option to YES, to get a
-# higher quality PDF documentation.
-# The default value is: YES.
-# This tag requires that the tag GENERATE_LATEX is set to YES.
-
-USE_PDFLATEX           = YES
-
-# If the LATEX_BATCHMODE tag is set to YES, doxygen will add the \batchmode
-# command to the generated LaTeX files. This will instruct LaTeX to keep running
-# if errors occur, instead of asking the user for help. This option is also used
-# when generating formulas in HTML.
-# The default value is: NO.
-# This tag requires that the tag GENERATE_LATEX is set to YES.
-
-LATEX_BATCHMODE        = YES
-
-# If the LATEX_HIDE_INDICES tag is set to YES then doxygen will not include the
-# index chapters (such as File Index, Compound Index, etc.) in the output.
-# The default value is: NO.
-# This tag requires that the tag GENERATE_LATEX is set to YES.
-
-LATEX_HIDE_INDICES     = YES
-
-# If the LATEX_SOURCE_CODE tag is set to YES then doxygen will include source
-# code with syntax highlighting in the LaTeX output.
-#
-# Note that which sources are shown also depends on other settings such as
-# SOURCE_BROWSER.
-# The default value is: NO.
-# This tag requires that the tag GENERATE_LATEX is set to YES.
-
-LATEX_SOURCE_CODE      = NO
-
-# The LATEX_BIB_STYLE tag can be used to specify the style to use for the
-# bibliography, e.g. plainnat, or ieeetr. See
-# http://en.wikipedia.org/wiki/BibTeX and \cite for more info.
-# The default value is: plain.
-# This tag requires that the tag GENERATE_LATEX is set to YES.
-
-LATEX_BIB_STYLE        = plain
-
-# If the LATEX_TIMESTAMP tag is set to YES then the footer of each generated
-# page will contain the date and time when the page was generated. Setting this
-# to NO can help when comparing the output of multiple runs.
-# The default value is: NO.
-# This tag requires that the tag GENERATE_LATEX is set to YES.
-
-LATEX_TIMESTAMP        = NO
-
-#---------------------------------------------------------------------------
-# Configuration options related to the RTF output
-#---------------------------------------------------------------------------
-
-# If the GENERATE_RTF tag is set to YES, doxygen will generate RTF output. The
-# RTF output is optimized for Word 97 and may not look too pretty with other RTF
-# readers/editors.
-# The default value is: NO.
-
-GENERATE_RTF           = NO
-
-# The RTF_OUTPUT tag is used to specify where the RTF docs will be put. If a
-# relative path is entered the value of OUTPUT_DIRECTORY will be put in front of
-# it.
-# The default directory is: rtf.
-# This tag requires that the tag GENERATE_RTF is set to YES.
-
-RTF_OUTPUT             = rtf
-
-# If the COMPACT_RTF tag is set to YES, doxygen generates more compact RTF
-# documents. This may be useful for small projects and may help to save some
-# trees in general.
-# The default value is: NO.
-# This tag requires that the tag GENERATE_RTF is set to YES.
-
-COMPACT_RTF            = NO
-
-# If the RTF_HYPERLINKS tag is set to YES, the RTF that is generated will
-# contain hyperlink fields. The RTF file will contain links (just like the HTML
-# output) instead of page references. This makes the output suitable for online
-# browsing using Word or some other Word compatible readers that support those
-# fields.
-#
-# Note: WordPad (write) and others do not support links.
-# The default value is: NO.
-# This tag requires that the tag GENERATE_RTF is set to YES.
-
-RTF_HYPERLINKS         = NO
-
-# Load stylesheet definitions from file. Syntax is similar to doxygen's config
-# file, i.e. a series of assignments. You only have to provide replacements,
-# missing definitions are set to their default value.
-#
-# See also section "Doxygen usage" for information on how to generate the
-# default style sheet that doxygen normally uses.
-# This tag requires that the tag GENERATE_RTF is set to YES.
-
-RTF_STYLESHEET_FILE    =
-
-# Set optional variables used in the generation of an RTF document. Syntax is
-# similar to doxygen's config file. A template extensions file can be generated
-# using doxygen -e rtf extensionFile.
-# This tag requires that the tag GENERATE_RTF is set to YES.
-
-RTF_EXTENSIONS_FILE    =
-
-# If the RTF_SOURCE_CODE tag is set to YES then doxygen will include source code
-# with syntax highlighting in the RTF output.
-#
-# Note that which sources are shown also depends on other settings such as
-# SOURCE_BROWSER.
-# The default value is: NO.
-# This tag requires that the tag GENERATE_RTF is set to YES.
-
-RTF_SOURCE_CODE        = NO
-
-#---------------------------------------------------------------------------
-# Configuration options related to the man page output
-#---------------------------------------------------------------------------
-
-# If the GENERATE_MAN tag is set to YES, doxygen will generate man pages for
-# classes and files.
-# The default value is: NO.
-
-GENERATE_MAN           = YES
-
-# The MAN_OUTPUT tag is used to specify where the man pages will be put. If a
-# relative path is entered the value of OUTPUT_DIRECTORY will be put in front of
-# it. A directory man3 will be created inside the directory specified by
-# MAN_OUTPUT.
-# The default directory is: man.
-# This tag requires that the tag GENERATE_MAN is set to YES.
-
-MAN_OUTPUT             = man
-
-# The MAN_EXTENSION tag determines the extension that is added to the generated
-# man pages. In case the manual section does not start with a number, the number
-# 3 is prepended. The dot (.) at the beginning of the MAN_EXTENSION tag is
-# optional.
-# The default value is: .3.
-# This tag requires that the tag GENERATE_MAN is set to YES.
-
-MAN_EXTENSION          = .3lol
-
-# The MAN_SUBDIR tag determines the name of the directory created within
-# MAN_OUTPUT in which the man pages are placed. If defaults to man followed by
-# MAN_EXTENSION with the initial . removed.
-# This tag requires that the tag GENERATE_MAN is set to YES.
-
-MAN_SUBDIR             =
-
-# If the MAN_LINKS tag is set to YES and doxygen generates man output, then it
-# will generate one additional man file for each entity documented in the real
-# man page(s). These additional files only source the real man page, but without
-# them the man command would be unable to find the correct page.
-# The default value is: NO.
-# This tag requires that the tag GENERATE_MAN is set to YES.
-
-MAN_LINKS              = YES
-
-#---------------------------------------------------------------------------
-# Configuration options related to the XML output
-#---------------------------------------------------------------------------
-
-# If the GENERATE_XML tag is set to YES, doxygen will generate an XML file that
-# captures the structure of the code including all documentation.
-# The default value is: NO.
-
-GENERATE_XML           = NO
-
-# The XML_OUTPUT tag is used to specify where the XML pages will be put. If a
-# relative path is entered the value of OUTPUT_DIRECTORY will be put in front of
-# it.
-# The default directory is: xml.
-# This tag requires that the tag GENERATE_XML is set to YES.
-
-XML_OUTPUT             = xml
-
-# If the XML_PROGRAMLISTING tag is set to YES, doxygen will dump the program
-# listings (including syntax highlighting and cross-referencing information) to
-# the XML output. Note that enabling this will significantly increase the size
-# of the XML output.
-# The default value is: YES.
-# This tag requires that the tag GENERATE_XML is set to YES.
-
-XML_PROGRAMLISTING     = YES
-
-#---------------------------------------------------------------------------
-# Configuration options related to the DOCBOOK output
-#---------------------------------------------------------------------------
-
-# If the GENERATE_DOCBOOK tag is set to YES, doxygen will generate Docbook files
-# that can be used to generate PDF.
-# The default value is: NO.
-
-GENERATE_DOCBOOK       = NO
-
-# The DOCBOOK_OUTPUT tag is used to specify where the Docbook pages will be put.
-# If a relative path is entered the value of OUTPUT_DIRECTORY will be put in
-# front of it.
-# The default directory is: docbook.
-# This tag requires that the tag GENERATE_DOCBOOK is set to YES.
-
-DOCBOOK_OUTPUT         = docbook
-
-# If the DOCBOOK_PROGRAMLISTING tag is set to YES, doxygen will include the
-# program listings (including syntax highlighting and cross-referencing
-# information) to the DOCBOOK output. Note that enabling this will significantly
-# increase the size of the DOCBOOK output.
-# The default value is: NO.
-# This tag requires that the tag GENERATE_DOCBOOK is set to YES.
-
-DOCBOOK_PROGRAMLISTING = NO
-
-#---------------------------------------------------------------------------
-# Configuration options for the AutoGen Definitions output
-#---------------------------------------------------------------------------
-
-# If the GENERATE_AUTOGEN_DEF tag is set to YES, doxygen will generate an
-# AutoGen Definitions (see http://autogen.sf.net) file that captures the
-# structure of the code including all documentation. Note that this feature is
-# still experimental and incomplete at the moment.
-# The default value is: NO.
-
-GENERATE_AUTOGEN_DEF   = NO
-
-#---------------------------------------------------------------------------
-# Configuration options related to the Perl module output
-#---------------------------------------------------------------------------
-
-# If the GENERATE_PERLMOD tag is set to YES, doxygen will generate a Perl module
-# file that captures the structure of the code including all documentation.
-#
-# Note that this feature is still experimental and incomplete at the moment.
-# The default value is: NO.
-
-GENERATE_PERLMOD       = NO
-
-# If the PERLMOD_LATEX tag is set to YES, doxygen will generate the necessary
-# Makefile rules, Perl scripts and LaTeX code to be able to generate PDF and DVI
-# output from the Perl module output.
-# The default value is: NO.
-# This tag requires that the tag GENERATE_PERLMOD is set to YES.
-
-PERLMOD_LATEX          = NO
-
-# If the PERLMOD_PRETTY tag is set to YES, the Perl module output will be nicely
-# formatted so it can be parsed by a human reader. This is useful if you want to
-# understand what is going on. On the other hand, if this tag is set to NO, the
-# size of the Perl module output will be much smaller and Perl will parse it
-# just the same.
-# The default value is: YES.
-# This tag requires that the tag GENERATE_PERLMOD is set to YES.
-
-PERLMOD_PRETTY         = YES
-
-# The names of the make variables in the generated doxyrules.make file are
-# prefixed with the string contained in PERLMOD_MAKEVAR_PREFIX. This is useful
-# so different doxyrules.make files included by the same Makefile don't
-# overwrite each other's variables.
-# This tag requires that the tag GENERATE_PERLMOD is set to YES.
-
-PERLMOD_MAKEVAR_PREFIX =
-
-#---------------------------------------------------------------------------
-# Configuration options related to the preprocessor
-#---------------------------------------------------------------------------
-
-# If the ENABLE_PREPROCESSING tag is set to YES, doxygen will evaluate all
-# C-preprocessor directives found in the sources and include files.
-# The default value is: YES.
-
-ENABLE_PREPROCESSING   = YES
-
-# If the MACRO_EXPANSION tag is set to YES, doxygen will expand all macro names
-# in the source code. If set to NO, only conditional compilation will be
-# performed. Macro expansion can be done in a controlled way by setting
-# EXPAND_ONLY_PREDEF to YES.
-# The default value is: NO.
-# This tag requires that the tag ENABLE_PREPROCESSING is set to YES.
-
-MACRO_EXPANSION        = YES
-
-# If the EXPAND_ONLY_PREDEF and MACRO_EXPANSION tags are both set to YES then
-# the macro expansion is limited to the macros specified with the PREDEFINED and
-# EXPAND_AS_DEFINED tags.
-# The default value is: NO.
-# This tag requires that the tag ENABLE_PREPROCESSING is set to YES.
-
-EXPAND_ONLY_PREDEF     = YES
-
-# If the SEARCH_INCLUDES tag is set to YES, the include files in the
-# INCLUDE_PATH will be searched if a #include is found.
-# The default value is: YES.
-# This tag requires that the tag ENABLE_PREPROCESSING is set to YES.
-
-SEARCH_INCLUDES        = YES
-
-# The INCLUDE_PATH tag can be used to specify one or more directories that
-# contain include files that are not input files but should be processed by the
-# preprocessor.
-# This tag requires that the tag SEARCH_INCLUDES is set to YES.
-
-INCLUDE_PATH           =
-
-# You can use the INCLUDE_FILE_PATTERNS tag to specify one or more wildcard
-# patterns (like *.h and *.hpp) to filter out the header-files in the
-# directories. If left blank, the patterns specified with FILE_PATTERNS will be
-# used.
-# This tag requires that the tag ENABLE_PREPROCESSING is set to YES.
-
-INCLUDE_FILE_PATTERNS  =
-
-# The PREDEFINED tag can be used to specify one or more macro names that are
-# defined before the preprocessor is started (similar to the -D option of e.g.
-# gcc). The argument of the tag is a list of macros of the form: name or
-# name=definition (no spaces). If the definition and the "=" are omitted, "=1"
-# is assumed. To prevent a macro definition from being undefined via #undef or
-# recursively expanded use the := operator instead of the = operator.
-# This tag requires that the tag ENABLE_PREPROCESSING is set to YES.
-
-PREDEFINED             = _DOXYGEN_SKIP_ME \
-                         __extern=
-
-# If the MACRO_EXPANSION and EXPAND_ONLY_PREDEF tags are set to YES then this
-# tag can be used to specify a list of macro names that should be expanded. The
-# macro definition that is found in the sources will be used. Use the PREDEFINED
-# tag if you want to use a different macro definition that overrules the
-# definition found in the source code.
-# This tag requires that the tag ENABLE_PREPROCESSING is set to YES.
-
-EXPAND_AS_DEFINED      = __extern \
-                         __class
-
-# If the SKIP_FUNCTION_MACROS tag is set to YES then doxygen's preprocessor will
-# remove all references to function-like macros that are alone on a line, have
-# an all uppercase name, and do not end with a semicolon. Such function macros
-# are typically used for boiler-plate code, and will confuse the parser if not
-# removed.
-# The default value is: YES.
-# This tag requires that the tag ENABLE_PREPROCESSING is set to YES.
-
-SKIP_FUNCTION_MACROS   = YES
-
-#---------------------------------------------------------------------------
-# Configuration options related to external references
-#---------------------------------------------------------------------------
-
-# The TAGFILES tag can be used to specify one or more tag files. For each tag
-# file the location of the external documentation should be added. The format of
-# a tag file without this location is as follows:
-# TAGFILES = file1 file2 ...
-# Adding location for the tag files is done as follows:
-# TAGFILES = file1=loc1 "file2 = loc2" ...
-# where loc1 and loc2 can be relative or absolute paths or URLs. See the
-# section "Linking to external documentation" for more information about the use
-# of tag files.
-# Note: Each tag file must have a unique name (where the name does NOT include
-# the path). If a tag file is not located in the directory in which doxygen is
-# run, you must also specify the path to the tagfile here.
-
-TAGFILES               =
-
-# When a file name is specified after GENERATE_TAGFILE, doxygen will create a
-# tag file that is based on the input files it reads. See section "Linking to
-# external documentation" for more information about the usage of tag files.
-
-GENERATE_TAGFILE       =
-
-# If the ALLEXTERNALS tag is set to YES, all external class will be listed in
-# the class index. If set to NO, only the inherited external classes will be
-# listed.
-# The default value is: NO.
-
-ALLEXTERNALS           = NO
-
-# If the EXTERNAL_GROUPS tag is set to YES, all external groups will be listed
-# in the modules index. If set to NO, only the current project's groups will be
-# listed.
-# The default value is: YES.
-
-EXTERNAL_GROUPS        = YES
-
-# If the EXTERNAL_PAGES tag is set to YES, all external pages will be listed in
-# the related pages index. If set to NO, only the current project's pages will
-# be listed.
-# The default value is: YES.
-
-EXTERNAL_PAGES         = YES
-
-# The PERL_PATH should be the absolute path and name of the perl script
-# interpreter (i.e. the result of 'which perl').
-# The default file (with absolute path) is: /usr/bin/perl.
-
-PERL_PATH              = /usr/bin/perl
-
-#---------------------------------------------------------------------------
-# Configuration options related to the dot tool
-#---------------------------------------------------------------------------
-
-# If the CLASS_DIAGRAMS tag is set to YES, doxygen will generate a class diagram
-# (in HTML and LaTeX) for classes with base or super classes. Setting the tag to
-# NO turns the diagrams off. Note that this option also works with HAVE_DOT
-# disabled, but it is recommended to install and use dot, since it yields more
-# powerful graphs.
-# The default value is: YES.
-
-CLASS_DIAGRAMS         = YES
-
-# You can define message sequence charts within doxygen comments using the \msc
-# command. Doxygen will then run the mscgen tool (see:
-# http://www.mcternan.me.uk/mscgen/)) to produce the chart and insert it in the
-# documentation. The MSCGEN_PATH tag allows you to specify the directory where
-# the mscgen tool resides. If left empty the tool is assumed to be found in the
-# default search path.
-
-MSCGEN_PATH            =
-
-# You can include diagrams made with dia in doxygen documentation. Doxygen will
-# then run dia to produce the diagram and insert it in the documentation. The
-# DIA_PATH tag allows you to specify the directory where the dia binary resides.
-# If left empty dia is assumed to be found in the default search path.
-
-DIA_PATH               =
-
-# If set to YES the inheritance and collaboration graphs will hide inheritance
-# and usage relations if the target is undocumented or is not a class.
-# The default value is: YES.
-
-HIDE_UNDOC_RELATIONS   = NO
-
-# If you set the HAVE_DOT tag to YES then doxygen will assume the dot tool is
-# available from the path. This tool is part of Graphviz (see:
-# http://www.graphviz.org/), a graph visualization toolkit from AT&T and Lucent
-# Bell Labs. The other options in this section have no effect if this option is
-# set to NO
-# The default value is: YES.
-
-HAVE_DOT               = @LOL_USE_DOT@
-
-# The DOT_NUM_THREADS specifies the number of dot invocations doxygen is allowed
-# to run in parallel. When set to 0 doxygen will base this on the number of
-# processors available in the system. You can set it explicitly to a value
-# larger than 0 to get control over the balance between CPU load and processing
-# speed.
-# Minimum value: 0, maximum value: 32, default value: 0.
-# This tag requires that the tag HAVE_DOT is set to YES.
-
-DOT_NUM_THREADS        = 0
-
-# When you want a differently looking font in the dot files that doxygen
-# generates you can specify the font name using DOT_FONTNAME. You need to make
-# sure dot is able to find the font, which can be done by putting it in a
-# standard location or by setting the DOTFONTPATH environment variable or by
-# setting DOT_FONTPATH to the directory containing the font.
-# The default value is: Helvetica.
-# This tag requires that the tag HAVE_DOT is set to YES.
-
-DOT_FONTNAME           = FreeSans
-
-# The DOT_FONTSIZE tag can be used to set the size (in points) of the font of
-# dot graphs.
-# Minimum value: 4, maximum value: 24, default value: 10.
-# This tag requires that the tag HAVE_DOT is set to YES.
-
-DOT_FONTSIZE           = 10
-
-# By default doxygen will tell dot to use the default font as specified with
-# DOT_FONTNAME. If you specify a different font using DOT_FONTNAME you can set
-# the path where dot can find it using this tag.
-# This tag requires that the tag HAVE_DOT is set to YES.
-
-DOT_FONTPATH           =
-
-# If the CLASS_GRAPH tag is set to YES then doxygen will generate a graph for
-# each documented class showing the direct and indirect inheritance relations.
-# Setting this tag to YES will force the CLASS_DIAGRAMS tag to NO.
-# The default value is: YES.
-# This tag requires that the tag HAVE_DOT is set to YES.
-
-CLASS_GRAPH            = YES
-
-# If the COLLABORATION_GRAPH tag is set to YES then doxygen will generate a
-# graph for each documented class showing the direct and indirect implementation
-# dependencies (inheritance, containment, and class references variables) of the
-# class with other documented classes.
-# The default value is: YES.
-# This tag requires that the tag HAVE_DOT is set to YES.
-
-COLLABORATION_GRAPH    = YES
-
-# If the GROUP_GRAPHS tag is set to YES then doxygen will generate a graph for
-# groups, showing the direct groups dependencies.
-# The default value is: YES.
-# This tag requires that the tag HAVE_DOT is set to YES.
-
-GROUP_GRAPHS           = YES
-
-# If the UML_LOOK tag is set to YES, doxygen will generate inheritance and
-# collaboration diagrams in a style similar to the OMG's Unified Modeling
-# Language.
-# The default value is: NO.
-# This tag requires that the tag HAVE_DOT is set to YES.
-
-UML_LOOK               = NO
-
-# If the UML_LOOK tag is enabled, the fields and methods are shown inside the
-# class node. If there are many fields or methods and many nodes the graph may
-# become too big to be useful. The UML_LIMIT_NUM_FIELDS threshold limits the
-# number of items for each type to make the size more manageable. Set this to 0
-# for no limit. Note that the threshold may be exceeded by 50% before the limit
-# is enforced. So when you set the threshold to 10, up to 15 fields may appear,
-# but if the number exceeds 15, the total amount of fields shown is limited to
-# 10.
-# Minimum value: 0, maximum value: 100, default value: 10.
-# This tag requires that the tag HAVE_DOT is set to YES.
-
-UML_LIMIT_NUM_FIELDS   = 10
-
-# If the TEMPLATE_RELATIONS tag is set to YES then the inheritance and
-# collaboration graphs will show the relations between templates and their
-# instances.
-# The default value is: NO.
-# This tag requires that the tag HAVE_DOT is set to YES.
-
-TEMPLATE_RELATIONS     = YES
-
-# If the INCLUDE_GRAPH, ENABLE_PREPROCESSING and SEARCH_INCLUDES tags are set to
-# YES then doxygen will generate a graph for each documented file showing the
-# direct and indirect include dependencies of the file with other documented
-# files.
-# The default value is: YES.
-# This tag requires that the tag HAVE_DOT is set to YES.
-
-INCLUDE_GRAPH          = YES
-
-# If the INCLUDED_BY_GRAPH, ENABLE_PREPROCESSING and SEARCH_INCLUDES tags are
-# set to YES then doxygen will generate a graph for each documented file showing
-# the direct and indirect include dependencies of the file with other documented
-# files.
-# The default value is: YES.
-# This tag requires that the tag HAVE_DOT is set to YES.
-
-INCLUDED_BY_GRAPH      = YES
-
-# If the CALL_GRAPH tag is set to YES then doxygen will generate a call
-# dependency graph for every global function or class method.
-#
-# Note that enabling this option will significantly increase the time of a run.
-# So in most cases it will be better to enable call graphs for selected
-# functions only using the \callgraph command. Disabling a call graph can be
-# accomplished by means of the command \hidecallgraph.
-# The default value is: NO.
-# This tag requires that the tag HAVE_DOT is set to YES.
-
-CALL_GRAPH             = NO
-
-# If the CALLER_GRAPH tag is set to YES then doxygen will generate a caller
-# dependency graph for every global function or class method.
-#
-# Note that enabling this option will significantly increase the time of a run.
-# So in most cases it will be better to enable caller graphs for selected
-# functions only using the \callergraph command. Disabling a caller graph can be
-# accomplished by means of the command \hidecallergraph.
-# The default value is: NO.
-# This tag requires that the tag HAVE_DOT is set to YES.
-
-CALLER_GRAPH           = NO
-
-# If the GRAPHICAL_HIERARCHY tag is set to YES then doxygen will graphical
-# hierarchy of all classes instead of a textual one.
-# The default value is: YES.
-# This tag requires that the tag HAVE_DOT is set to YES.
-
-GRAPHICAL_HIERARCHY    = YES
-
-# If the DIRECTORY_GRAPH tag is set to YES then doxygen will show the
-# dependencies a directory has on other directories in a graphical way. The
-# dependency relations are determined by the #include relations between the
-# files in the directories.
-# The default value is: YES.
-# This tag requires that the tag HAVE_DOT is set to YES.
-
-DIRECTORY_GRAPH        = YES
-
-# The DOT_IMAGE_FORMAT tag can be used to set the image format of the images
-# generated by dot. For an explanation of the image formats see the section
-# output formats in the documentation of the dot tool (Graphviz (see:
-# http://www.graphviz.org/)).
-# Note: If you choose svg you need to set HTML_FILE_EXTENSION to xhtml in order
-# to make the SVG files visible in IE 9+ (other browsers do not have this
-# requirement).
-# Possible values are: png, png:cairo, png:cairo:cairo, png:cairo:gd, png:gd,
-# png:gd:gd, jpg, jpg:cairo, jpg:cairo:gd, jpg:gd, jpg:gd:gd, gif, gif:cairo,
-# gif:cairo:gd, gif:gd, gif:gd:gd, svg, png:gd, png:gd:gd, png:cairo,
-# png:cairo:gd, png:cairo:cairo, png:cairo:gdiplus, png:gdiplus and
-# png:gdiplus:gdiplus.
-# The default value is: png.
-# This tag requires that the tag HAVE_DOT is set to YES.
-
-DOT_IMAGE_FORMAT       = png
-
-# If DOT_IMAGE_FORMAT is set to svg, then this option can be set to YES to
-# enable generation of interactive SVG images that allow zooming and panning.
-#
-# Note that this requires a modern browser other than Internet Explorer. Tested
-# and working are Firefox, Chrome, Safari, and Opera.
-# Note: For IE 9+ you need to set HTML_FILE_EXTENSION to xhtml in order to make
-# the SVG files visible. Older versions of IE do not have SVG support.
-# The default value is: NO.
-# This tag requires that the tag HAVE_DOT is set to YES.
-
-INTERACTIVE_SVG        = NO
-
-# The DOT_PATH tag can be used to specify the path where the dot tool can be
-# found. If left blank, it is assumed the dot tool can be found in the path.
-# This tag requires that the tag HAVE_DOT is set to YES.
-
-DOT_PATH               = @DOT@
-
-# The DOTFILE_DIRS tag can be used to specify one or more directories that
-# contain dot files that are included in the documentation (see the \dotfile
-# command).
-# This tag requires that the tag HAVE_DOT is set to YES.
-
-DOTFILE_DIRS           = .
-
-# The MSCFILE_DIRS tag can be used to specify one or more directories that
-# contain msc files that are included in the documentation (see the \mscfile
-# command).
-
-MSCFILE_DIRS           =
-
-# The DIAFILE_DIRS tag can be used to specify one or more directories that
-# contain dia files that are included in the documentation (see the \diafile
-# command).
-
-DIAFILE_DIRS           =
-
-# When using plantuml, the PLANTUML_JAR_PATH tag should be used to specify the
-# path where java can find the plantuml.jar file. If left blank, it is assumed
-# PlantUML is not used or called during a preprocessing step. Doxygen will
-# generate a warning when it encounters a \startuml command in this case and
-# will not generate output for the diagram.
-
-PLANTUML_JAR_PATH      =
-
-# When using plantuml, the PLANTUML_CFG_FILE tag can be used to specify a
-# configuration file for plantuml.
-
-PLANTUML_CFG_FILE      =
-
-# When using plantuml, the specified paths are searched for files specified by
-# the !include statement in a plantuml block.
-
-PLANTUML_INCLUDE_PATH  =
-
-# The DOT_GRAPH_MAX_NODES tag can be used to set the maximum number of nodes
-# that will be shown in the graph. If the number of nodes in a graph becomes
-# larger than this value, doxygen will truncate the graph, which is visualized
-# by representing a node as a red box. Note that doxygen if the number of direct
-# children of the root node in a graph is already larger than
-# DOT_GRAPH_MAX_NODES then the graph will not be shown at all. Also note that
-# the size of a graph can be further restricted by MAX_DOT_GRAPH_DEPTH.
-# Minimum value: 0, maximum value: 10000, default value: 50.
-# This tag requires that the tag HAVE_DOT is set to YES.
-
-DOT_GRAPH_MAX_NODES    = 50
-
-# The MAX_DOT_GRAPH_DEPTH tag can be used to set the maximum depth of the graphs
-# generated by dot. A depth value of 3 means that only nodes reachable from the
-# root by following a path via at most 3 edges will be shown. Nodes that lay
-# further from the root node will be omitted. Note that setting this option to 1
-# or 2 may greatly reduce the computation time needed for large code bases. Also
-# note that the size of a graph can be further restricted by
-# DOT_GRAPH_MAX_NODES. Using a depth of 0 means no depth restriction.
-# Minimum value: 0, maximum value: 1000, default value: 0.
-# This tag requires that the tag HAVE_DOT is set to YES.
-
-MAX_DOT_GRAPH_DEPTH    = 0
-
-# Set the DOT_TRANSPARENT tag to YES to generate images with a transparent
-# background. This is disabled by default, because dot on Windows does not seem
-# to support this out of the box.
-#
-# Warning: Depending on the platform used, enabling this option may lead to
-# badly anti-aliased labels on the edges of a graph (i.e. they become hard to
-# read).
-# The default value is: NO.
-# This tag requires that the tag HAVE_DOT is set to YES.
-
-DOT_TRANSPARENT        = NO
-
-# Set the DOT_MULTI_TARGETS tag to YES to allow dot to generate multiple output
-# files in one run (i.e. multiple -o and -T options on the command line). This
-# makes dot run faster, but since only newer versions of dot (>1.8.10) support
-# this, this feature is disabled by default.
-# The default value is: NO.
-# This tag requires that the tag HAVE_DOT is set to YES.
-
-DOT_MULTI_TARGETS      = NO
-
-# If the GENERATE_LEGEND tag is set to YES doxygen will generate a legend page
-# explaining the meaning of the various boxes and arrows in the dot generated
-# graphs.
-# The default value is: YES.
-# This tag requires that the tag HAVE_DOT is set to YES.
-
-GENERATE_LEGEND        = YES
-
-# If the DOT_CLEANUP tag is set to YES, doxygen will remove the intermediate dot
-# files that are used to generate the various graphs.
-# The default value is: YES.
-# This tag requires that the tag HAVE_DOT is set to YES.
-
-DOT_CLEANUP            = YES
diff --git a/doc/doxygen.css b/doc/doxygen.css
deleted file mode 100644
index de6fd810..00000000
--- a/doc/doxygen.css
+++ /dev/null
@@ -1,1180 +0,0 @@
-/* The standard CSS for doxygen $doxygenversion */
-
-body, table, div, p, dl {
-	font: 400 14px/19px Roboto,sans-serif;
-}
-
-/* @group Heading Levels */
-
-h1.groupheader {
-	font-size: 150%;
-}
-
-.title {
-	font-size: 150%;
-	font-weight: bold;
-	margin: 10px 2px;
-}
-
-h2.groupheader {
-	border-bottom: 1px solid ##99;
-	color: ##44;
-	font-size: 150%;
-	font-weight: normal;
-	margin-top: 1.75em;
-	padding-top: 8px;
-	padding-bottom: 4px;
-	width: 100%;
-}
-
-h3.groupheader {
-	font-size: 100%;
-}
-
-h1, h2, h3, h4, h5, h6 {
-	-webkit-transition: text-shadow 0.5s linear;
-	-moz-transition: text-shadow 0.5s linear;
-	-ms-transition: text-shadow 0.5s linear;
-	-o-transition: text-shadow 0.5s linear;
-	transition: text-shadow 0.5s linear;
-	margin-right: 15px;
-}
-
-h1.glow, h2.glow, h3.glow, h4.glow, h5.glow, h6.glow {
-	text-shadow: 0 0 15px cyan;
-}
-
-dt {
-	font-weight: bold;
-}
-
-div.multicol {
-	-moz-column-gap: 1em;
-	-webkit-column-gap: 1em;
-	-moz-column-count: 3;
-	-webkit-column-count: 3;
-}
-
-p.startli, p.startdd, p.starttd {
-	margin-top: 2px;
-}
-
-p.endli {
-	margin-bottom: 0px;
-}
-
-p.enddd {
-	margin-bottom: 4px;
-}
-
-p.endtd {
-	margin-bottom: 2px;
-}
-
-/* @end */
-
-caption {
-	font-weight: bold;
-}
-
-span.legend {
-        font-size: 70%;
-        text-align: center;
-}
-
-h3.version {
-        font-size: 90%;
-        text-align: center;
-}
-
-div.qindex, div.navtab{
-	background-color: ##ee;
-	border: 1px solid ##b0;
-	text-align: center;
-}
-
-div.qindex, div.navpath {
-	width: 100%;
-	line-height: 140%;
-}
-
-div.navtab {
-	margin-right: 15px;
-}
-
-/* @group Link Styling */
-
-a {
-	color: ##50;
-	font-weight: normal;
-	text-decoration: none;
-}
-
-.contents a:visited {
-	color: ##60;
-}
-
-a:hover {
-	text-decoration: underline;
-}
-
-a.qindex {
-	font-weight: bold;
-}
-
-a.qindexHL {
-	font-weight: bold;
-	background-color: ##AA;
-	color: #ffffff;
-	border: 1px double ##98;
-}
-
-.contents a.qindexHL:visited {
-        color: #ffffff;
-}
-
-a.el {
-	font-weight: bold;
-}
-
-a.elRef {
-}
-
-a.code, a.code:visited {
-	color: #4665A2; 
-}
-
-a.codeRef, a.codeRef:visited {
-	color: #4665A2; 
-}
-
-/* @end */
-
-dl.el {
-	margin-left: -1cm;
-}
-
-pre.fragment {
-        border: 1px solid #C4CFE5;
-        background-color: #FBFCFD;
-        padding: 4px 6px;
-        margin: 4px 8px 4px 2px;
-        overflow: auto;
-        word-wrap: break-word;
-        font-size:  9pt;
-        line-height: 125%;
-        font-family: monospace, fixed;
-        font-size: 105%;
-}
-
-div.fragment {
-        padding: 4px;
-        margin: 4px;
-	background-color: ##FC;
-	border: 1px solid ##CC;
-}
-
-div.line {
-	font-family: monospace, fixed;
-        font-size: 13px;
-	min-height: 13px;
-	line-height: 1.0;
-	text-wrap: unrestricted;
-	white-space: -moz-pre-wrap; /* Moz */
-	white-space: -pre-wrap;     /* Opera 4-6 */
-	white-space: -o-pre-wrap;   /* Opera 7 */
-	white-space: pre-wrap;      /* CSS3  */
-	word-wrap: break-word;      /* IE 5.5+ */
-	text-indent: -53px;
-	padding-left: 53px;
-	padding-bottom: 0px;
-	margin: 0px;
-	-webkit-transition-property: background-color, box-shadow;
-	-webkit-transition-duration: 0.5s;
-	-moz-transition-property: background-color, box-shadow;
-	-moz-transition-duration: 0.5s;
-	-ms-transition-property: background-color, box-shadow;
-	-ms-transition-duration: 0.5s;
-	-o-transition-property: background-color, box-shadow;
-	-o-transition-duration: 0.5s;
-	transition-property: background-color, box-shadow;
-	transition-duration: 0.5s;
-}
-
-div.line.glow {
-	background-color: cyan;
-	box-shadow: 0 0 10px cyan;
-}
-
-
-span.lineno {
-	padding-right: 4px;
-	text-align: right;
-	border-right: 2px solid #0F0;
-	background-color: #E8E8E8;
-        white-space: pre;
-}
-span.lineno a {
-	background-color: #D8D8D8;
-}
-
-span.lineno a:hover {
-	background-color: #C8C8C8;
-}
-
-div.ah {
-	background-color: black;
-	font-weight: bold;
-	color: #ffffff;
-	margin-bottom: 3px;
-	margin-top: 3px;
-	padding: 0.2em;
-	border: solid thin #333;
-	border-radius: 0.5em;
-	-webkit-border-radius: .5em;
-	-moz-border-radius: .5em;
-	box-shadow: 2px 2px 3px #999;
-	-webkit-box-shadow: 2px 2px 3px #999;
-	-moz-box-shadow: rgba(0, 0, 0, 0.15) 2px 2px 2px;
-	background-image: -webkit-gradient(linear, left top, left bottom, from(#eee), to(#000),color-stop(0.3, #444));
-	background-image: -moz-linear-gradient(center top, #eee 0%, #444 40%, #000);
-}
-
-div.groupHeader {
-	margin-left: 16px;
-	margin-top: 12px;
-	font-weight: bold;
-}
-
-div.groupText {
-	margin-left: 16px;
-	font-style: italic;
-}
-
-body {
-	background-color: white;
-	color: black;
-        margin: 0;
-}
-
-div.contents {
-	margin-top: 10px;
-	margin-left: 12px;
-	margin-right: 8px;
-}
-
-td.indexkey {
-	background-color: ##ee;
-	font-weight: bold;
-	border: 1px solid ##cc;
-	margin: 2px 0px 2px 0;
-	padding: 2px 10px;
-        white-space: nowrap;
-        vertical-align: top;
-}
-
-td.indexvalue {
-	background-color: ##ee;
-	border: 1px solid ##cc;
-	padding: 2px 10px;
-	margin: 2px 0px;
-}
-
-tr.memlist {
-	background-color: ##f0;
-}
-
-p.formulaDsp {
-	text-align: center;
-}
-
-img.formulaDsp {
-	
-}
-
-img.formulaInl {
-	vertical-align: middle;
-}
-
-div.center {
-	text-align: center;
-        margin-top: 0px;
-        margin-bottom: 0px;
-        padding: 0px;
-}
-
-div.center img {
-	border: 0px;
-}
-
-address.footer {
-	text-align: right;
-	padding-right: 12px;
-}
-
-img.footer {
-	border: 0px;
-	vertical-align: middle;
-}
-
-/* @group Code Colorization */
-
-span.keyword {
-	color: #008000
-}
-
-span.keywordtype {
-	color: #604020
-}
-
-span.keywordflow {
-	color: #e08000
-}
-
-span.comment {
-	color: #800000
-}
-
-span.preprocessor {
-	color: #806020
-}
-
-span.stringliteral {
-	color: #002080
-}
-
-span.charliteral {
-	color: #008080
-}
-
-span.vhdldigit { 
-	color: #ff00ff 
-}
-
-span.vhdlchar { 
-	color: #000000 
-}
-
-span.vhdlkeyword { 
-	color: #700070 
-}
-
-span.vhdllogic { 
-	color: #ff0000 
-}
-
-blockquote {
-        background-color: ##F8;
-        border-left: 2px solid ##AA;
-        margin: 0 24px 0 4px;
-        padding: 0 12px 0 16px;
-}
-
-/* @end */
-
-/*
-.search {
-	color: #003399;
-	font-weight: bold;
-}
-
-form.search {
-	margin-bottom: 0px;
-	margin-top: 0px;
-}
-
-input.search {
-	font-size: 75%;
-	color: #000080;
-	font-weight: normal;
-	background-color: #e8eef2;
-}
-*/
-
-td.tiny {
-	font-size: 75%;
-}
-
-.dirtab {
-	padding: 4px;
-	border-collapse: collapse;
-	border: 1px solid ##b0;
-}
-
-th.dirtab {
-	background: ##ee;
-	font-weight: bold;
-}
-
-hr {
-	height: 0px;
-	border: none;
-	border-top: 1px solid ##66;
-}
-
-hr.footer {
-	height: 1px;
-}
-
-/* @group Member Descriptions */
-
-table.memberdecls {
-	border-spacing: 0px;
-	padding: 0px;
-}
-
-.memberdecls td, .fieldtable tr {
-	-webkit-transition-property: background-color, box-shadow;
-	-webkit-transition-duration: 0.5s;
-	-moz-transition-property: background-color, box-shadow;
-	-moz-transition-duration: 0.5s;
-	-ms-transition-property: background-color, box-shadow;
-	-ms-transition-duration: 0.5s;
-	-o-transition-property: background-color, box-shadow;
-	-o-transition-duration: 0.5s;
-	transition-property: background-color, box-shadow;
-	transition-duration: 0.5s;
-}
-
-.memberdecls td.glow, .fieldtable tr.glow {
-	background-color: cyan;
-	box-shadow: 0 0 15px cyan;
-}
-
-.mdescLeft, .mdescRight,
-.memItemLeft, .memItemRight,
-.memTemplItemLeft, .memTemplItemRight, .memTemplParams {
-	background-color: ##FA;
-	border: none;
-	margin: 4px;
-	padding: 1px 0 0 8px;
-}
-
-.mdescLeft, .mdescRight {
-	padding: 0px 8px 4px 8px;
-	color: #555;
-}
-
-.memSeparator {
-        border-bottom: 1px solid #DEE4F0;
-        line-height: 1px;
-        margin: 0px;
-        padding: 0px;
-}
-
-.memItemLeft, .memTemplItemLeft {
-        white-space: nowrap;
-}
-
-.memItemRight {
-	width: 100%;
-}
-
-.memTemplParams {
-	color: ##60;
-        white-space: nowrap;
-	font-size: 80%;
-}
-
-/* @end */
-
-/* @group Member Details */
-
-/* Styles for detailed member documentation */
-
-.memtemplate {
-	font-size: 80%;
-	color: ##60;
-	font-weight: normal;
-	margin-left: 9px;
-}
-
-.memnav {
-	background-color: ##ee;
-	border: 1px solid ##b0;
-	text-align: center;
-	margin: 2px;
-	margin-right: 15px;
-	padding: 2px;
-}
-
-.mempage {
-	width: 100%;
-}
-
-.memitem {
-	padding: 0;
-	margin-bottom: 10px;
-	margin-right: 5px;
-        -webkit-transition: box-shadow 0.5s linear;
-        -moz-transition: box-shadow 0.5s linear;
-        -ms-transition: box-shadow 0.5s linear;
-        -o-transition: box-shadow 0.5s linear;
-        transition: box-shadow 0.5s linear;
-        display: table !important;
-        width: 100%;
-}
-
-.memitem.glow {
-         box-shadow: 0 0 15px cyan;
-}
-
-.memname {
-        font-weight: bold;
-        margin-left: 6px;
-}
-
-.memname td {
-	vertical-align: bottom;
-}
-
-.memproto, dl.reflist dt {
-        border-top: 1px solid ##B4;
-        border-left: 1px solid ##B4;
-        border-right: 1px solid ##B4;
-        padding: 6px 0px 6px 0px;
-        color: ##2b;
-        font-weight: bold;
-        text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9);
-        background-image:url('nav_f.png');
-        background-repeat:repeat-x;
-        background-color: ##E6;
-        /* opera specific markup */
-        box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15);
-        border-top-right-radius: 4px;
-        border-top-left-radius: 4px;
-        /* firefox specific markup */
-        -moz-box-shadow: rgba(0, 0, 0, 0.15) 5px 5px 5px;
-        -moz-border-radius-topright: 4px;
-        -moz-border-radius-topleft: 4px;
-        /* webkit specific markup */
-        -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15);
-        -webkit-border-top-right-radius: 4px;
-        -webkit-border-top-left-radius: 4px;
-
-}
-
-.memdoc, dl.reflist dd {
-        border-bottom: 1px solid ##B4;      
-        border-left: 1px solid ##B4;      
-        border-right: 1px solid ##B4; 
-        padding: 6px 10px 2px 10px;
-        background-color: ##FC;
-        border-top-width: 0;
-        background-image:url('nav_g.png');
-        background-repeat:repeat-x;
-        background-color: #FFFFFF;
-        /* opera specific markup */
-        border-bottom-left-radius: 4px;
-        border-bottom-right-radius: 4px;
-        box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15);
-        /* firefox specific markup */
-        -moz-border-radius-bottomleft: 4px;
-        -moz-border-radius-bottomright: 4px;
-        -moz-box-shadow: rgba(0, 0, 0, 0.15) 5px 5px 5px;
-        /* webkit specific markup */
-        -webkit-border-bottom-left-radius: 4px;
-        -webkit-border-bottom-right-radius: 4px;
-        -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15);
-}
-
-dl.reflist dt {
-        padding: 5px;
-}
-
-dl.reflist dd {
-        margin: 0px 0px 10px 0px;
-        padding: 5px;
-}
-
-.paramkey {
-	text-align: right;
-}
-
-.paramtype {
-	white-space: nowrap;
-}
-
-.paramname {
-	color: #602020;
-	white-space: nowrap;
-}
-.paramname em {
-	font-style: normal;
-}
-.paramname code {
-        line-height: 14px;
-}
-
-.params, .retval, .exception, .tparams {
-        margin-left: 0px;
-        padding-left: 0px;
-}       
-
-.params .paramname, .retval .paramname {
-        font-weight: bold;
-        vertical-align: top;
-}
-        
-.params .paramtype {
-        font-style: italic;
-        vertical-align: top;
-}       
-        
-.params .paramdir {
-        font-family: "courier new",courier,monospace;
-        vertical-align: top;
-}
-
-table.mlabels {
-	border-spacing: 0px;
-}
-
-td.mlabels-left {
-	width: 100%;
-	padding: 0px;
-}
-
-td.mlabels-right {
-	vertical-align: bottom;
-	padding: 0px;
-	white-space: nowrap;
-}
-
-span.mlabels {
-        margin-left: 8px;
-}
-
-span.mlabel {
-        background-color: ##88;
-        border-top:1px solid ##70;
-        border-left:1px solid ##70;
-        border-right:1px solid ##CC;
-        border-bottom:1px solid ##CC;
-	text-shadow: none;
-	color: white;
-	margin-right: 4px;
-	padding: 2px 3px;
-	border-radius: 3px;
-	font-size: 7pt;
-	white-space: nowrap;
-	vertical-align: middle;
-}
-
-
-
-/* @end */
-
-/* these are for tree view when not used as main index */
-
-div.directory {
-        margin: 10px 0px;
-        border-top: 1px solid #A8B8D9;
-        border-bottom: 1px solid #A8B8D9;
-        width: 100%;
-}
-
-.directory table {
-        border-collapse:collapse;
-}
-
-.directory td {
-        margin: 0px;
-        padding: 0px;
-	vertical-align: top;
-}
-
-.directory td.entry {
-        white-space: nowrap;
-        padding-right: 6px;
-}
-
-.directory td.entry a {
-        outline:none;
-}
-
-.directory td.entry a img {
-        border: none;
-}
-
-.directory td.desc {
-        width: 100%;
-        padding-left: 6px;
-	padding-right: 6px;
-	padding-top: 3px;
-	border-left: 1px solid rgba(0,0,0,0.05);
-}
-
-.directory tr.even {
-	padding-left: 6px;
-	background-color: ##F8;
-}
-
-.directory img {
-	vertical-align: -30%;
-}
-
-.directory .levels {
-        white-space: nowrap;
-        width: 100%;
-        text-align: right;
-        font-size: 9pt;
-}
-
-.directory .levels span {
-        cursor: pointer;
-        padding-left: 2px;
-        padding-right: 2px;
-	color: ##50;
-}
-
-div.dynheader {
-        margin-top: 8px;
-	-webkit-touch-callout: none;
-	-webkit-user-select: none;
-	-khtml-user-select: none;
-	-moz-user-select: none;
-	-ms-user-select: none;
-	user-select: none;
-}
-
-address {
-	font-style: normal;
-	color: ##33;
-}
-
-table.doxtable {
-	border-collapse:collapse;
-        margin-top: 4px;
-        margin-bottom: 4px;
-}
-
-table.doxtable td, table.doxtable th {
-	border: 1px solid ##37;
-	padding: 3px 7px 2px;
-}
-
-table.doxtable th {
-	background-color: ##47;
-	color: #FFFFFF;
-	font-size: 110%;
-	padding-bottom: 4px;
-	padding-top: 5px;
-}
-
-table.fieldtable {
-        width: 100%;
-        margin-bottom: 10px;
-        border: 1px solid ##B4;
-        border-spacing: 0px;
-        -moz-border-radius: 4px;
-        -webkit-border-radius: 4px;
-        border-radius: 4px;
-        -moz-box-shadow: rgba(0, 0, 0, 0.15) 2px 2px 2px;
-        -webkit-box-shadow: 2px 2px 2px rgba(0, 0, 0, 0.15);
-        box-shadow: 2px 2px 2px rgba(0, 0, 0, 0.15);
-}
-
-.fieldtable td, .fieldtable th {
-        padding: 3px 7px 2px;
-}
-
-.fieldtable td.fieldtype, .fieldtable td.fieldname {
-        white-space: nowrap;
-        border-right: 1px solid ##B4;
-        border-bottom: 1px solid ##B4;
-        vertical-align: top;
-}
-
-.fieldtable td.fielddoc {
-        border-bottom: 1px solid ##B4;
-        width: 100%;
-}
-
-.fieldtable td.fielddoc p:first-child {
-        margin-top: 2px;
-}       
-        
-.fieldtable td.fielddoc p:last-child {
-        margin-bottom: 2px;
-}
-
-.fieldtable tr:last-child td {
-        border-bottom: none;
-}
-
-.fieldtable th {
-        background-image:url('nav_f.png');
-        background-repeat:repeat-x;
-        background-color: ##E6;
-        font-size: 90%;
-        color: ##2B;
-        padding-bottom: 4px;
-        padding-top: 5px;
-        text-align:left;
-        -moz-border-radius-topleft: 4px;
-        -moz-border-radius-topright: 4px;
-        -webkit-border-top-left-radius: 4px;
-        -webkit-border-top-right-radius: 4px;
-        border-top-left-radius: 4px;
-        border-top-right-radius: 4px;
-        border-bottom: 1px solid ##B4;
-}
-
-
-.tabsearch {
-	top: 0px;
-	left: 10px;
-	height: 36px;
-	background-image: url('tab_b.png');
-	z-index: 101;
-	overflow: hidden;
-	font-size: 13px;
-}
-
-.navpath ul
-{
-	font-size: 11px;
-	background-image:url('tab_b.png');
-	background-repeat:repeat-x;
-	background-position: 0 -5px;
-	height:30px;
-	line-height:30px;
-	color:##9b;
-	border:solid 1px ##ca;
-	overflow:hidden;
-	margin:0px;
-	padding:0px;
-}
-
-.navpath li
-{
-	list-style-type:none;
-	float:left;
-	padding-left:10px;
-	padding-right:15px;
-	background-image:url('bc_s.png');
-	background-repeat:no-repeat;
-	background-position:right;
-	color:##45;
-}
-
-.navpath li.navelem a
-{
-	height:32px;
-	display:block;
-	text-decoration: none;
-	outline: none;
-	color: ##30;
-	font-family: 'Lucida Grande',Geneva,Helvetica,Arial,sans-serif;
-	text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9);
-	text-decoration: none;        
-}
-
-.navpath li.navelem a:hover
-{
-	color:##80;
-}
-
-.navpath li.footer
-{
-        list-style-type:none;
-        float:right;
-        padding-left:10px;
-        padding-right:15px;
-        background-image:none;
-        background-repeat:no-repeat;
-        background-position:right;
-        color:##45;
-        font-size: 8pt;
-}
-
-
-div.summary
-{
-	float: right;
-	font-size: 8pt;
-	padding-right: 5px;
-	width: 50%;
-	text-align: right;
-}       
-
-div.summary a
-{
-	white-space: nowrap;
-}
-
-div.ingroups
-{
-	font-size: 8pt;
-	width: 50%;
-	text-align: left;
-}
-
-div.ingroups a
-{
-	white-space: nowrap;
-}
-
-div.header
-{
-        background-image:url('nav_h.png');
-        background-repeat:repeat-x;
-	background-color: ##FA;
-	margin:  0px;
-	border-bottom: 1px solid ##CC;
-}
-
-div.headertitle
-{
-	padding: 5px 5px 5px 10px;
-}
-
-dl
-{
-        padding: 0 0 0 10px;
-}
-
-/* dl.note, dl.warning, dl.attention, dl.pre, dl.post, dl.invariant, dl.deprecated, dl.todo, dl.test, dl.bug */
-dl.section
-{
-	margin-left: 0px;
-	padding-left: 0px;
-}
-
-dl.note
-{
-        margin-left:-7px;
-        padding-left: 3px;
-        border-left:4px solid;
-        border-color: #D0C000;
-}
-
-dl.warning, dl.attention
-{
-        margin-left:-7px;
-        padding-left: 3px;
-        border-left:4px solid;
-        border-color: #FF0000;
-}
-
-dl.pre, dl.post, dl.invariant
-{
-        margin-left:-7px;
-        padding-left: 3px;
-        border-left:4px solid;
-        border-color: #00D000;
-}
-
-dl.deprecated
-{
-        margin-left:-7px;
-        padding-left: 3px;
-        border-left:4px solid;
-        border-color: #505050;
-}
-
-dl.todo
-{
-        margin-left:-7px;
-        padding-left: 3px;
-        border-left:4px solid;
-        border-color: #00C0E0;
-}
-
-dl.test
-{
-        margin-left:-7px;
-        padding-left: 3px;
-        border-left:4px solid;
-        border-color: #3030E0;
-}
-
-dl.bug
-{
-        margin-left:-7px;
-        padding-left: 3px;
-        border-left:4px solid;
-        border-color: #C08050;
-}
-
-dl.section dd {
-	margin-bottom: 6px;
-}
-
-
-#projectlogo
-{
-	text-align: center;
-	vertical-align: bottom;
-	border-collapse: separate;
-}
- 
-#projectlogo img
-{ 
-	border: 0px none;
-}
- 
-#projectname
-{
-	font: 300% Tahoma, Arial,sans-serif;
-	margin: 0px;
-	padding: 2px 0px;
-}
-    
-#projectbrief
-{
-	font: 120% Tahoma, Arial,sans-serif;
-	margin: 0px;
-	padding: 0px;
-}
-
-#projectnumber
-{
-	font: 50% Tahoma, Arial,sans-serif;
-	margin: 0px;
-	padding: 0px;
-}
-
-#titlearea
-{
-	padding: 0px;
-	margin: 0px;
-	width: 100%;
-	border-bottom: 1px solid ##70;
-}
-
-.image
-{
-        text-align: center;
-}
-
-.dotgraph
-{
-        text-align: center;
-}
-
-.mscgraph
-{
-        text-align: center;
-}
-
-.caption
-{
-	font-weight: bold;
-}
-
-div.zoom
-{
-	border: 1px solid ##A0;
-}
-
-dl.citelist {
-        margin-bottom:50px;
-}
-
-dl.citelist dt {
-        color:##40;
-        float:left;
-        font-weight:bold;
-        margin-right:10px;
-        padding:5px;
-}
-
-dl.citelist dd {
-        margin:2px 0;
-        padding:5px 0;
-}
-
-div.toc {
-        padding: 14px 25px;
-        background-color: ##F6;
-        border: 1px solid ##DD;
-        border-radius: 7px 7px 7px 7px;
-        float: right;
-        height: auto;
-        margin: 0 20px 10px 10px;
-        width: 200px;
-}
-
-div.toc li {
-        background: url("bdwn.png") no-repeat scroll 0 5px transparent;
-        font: 10px/1.2 Verdana,DejaVu Sans,Geneva,sans-serif;
-        margin-top: 5px;
-        padding-left: 10px;
-        padding-top: 2px;
-}
-
-div.toc h3 {
-        font: bold 12px/1.2 Arial,FreeSans,sans-serif;
-	color: ##60;
-        border-bottom: 0 none;
-        margin: 0;
-}
-
-div.toc ul {
-        list-style: none outside none;
-        border: medium none;
-        padding: 0px;
-}       
-
-div.toc li.level1 {
-        margin-left: 0px;
-}
-
-div.toc li.level2 {
-        margin-left: 15px;
-}
-
-div.toc li.level3 {
-        margin-left: 30px;
-}
-
-div.toc li.level4 {
-        margin-left: 45px;
-}
-
-.inherit_header {
-        font-weight: bold;
-        color: gray;
-        cursor: pointer;
-	-webkit-touch-callout: none;
-	-webkit-user-select: none;
-	-khtml-user-select: none;
-	-moz-user-select: none;
-	-ms-user-select: none;
-	user-select: none;
-}
-
-.inherit_header td {
-        padding: 6px 0px 2px 5px;
-}
-
-.inherit {
-        display: none;
-}
-
-tr.heading h2 {
-        margin-top: 12px;
-        margin-bottom: 4px;
-}
-
-@media print
-{
-  #top { display: none; }
-  #side-nav { display: none; }
-  #nav-path { display: none; }
-  body { overflow:visible; }
-  h1, h2, h3, h4, h5, h6 { page-break-after: avoid; }
-  .summary { display: none; }
-  .memitem { page-break-inside: avoid; }
-  #doc-content
-  {
-    margin-left:0 !important;
-    height:auto !important;
-    width:auto !important;
-    overflow:inherit;
-    display:inline;
-  }
-}
-
diff --git a/doc/footer.html b/doc/footer.html
deleted file mode 100644
index b605728e..00000000
--- a/doc/footer.html
+++ /dev/null
@@ -1,2 +0,0 @@
-  </body>
-</html>
diff --git a/doc/grammar/README b/doc/grammar/README
deleted file mode 100644
index 9cc7f53c..00000000
--- a/doc/grammar/README
+++ /dev/null
@@ -1 +0,0 @@
-This directory contains old grammars for languages we used to parse.
diff --git a/doc/grammar/easymesh-parser.y b/doc/grammar/easymesh-parser.y
deleted file mode 100644
index 9d243360..00000000
--- a/doc/grammar/easymesh-parser.y
+++ /dev/null
@@ -1,328 +0,0 @@
-%{
-//
-// Lol Engine
-//
-// Copyright: (c) 2010-2013 Sam Hocevar <sam@hocevar.net>
-//            (c) 2009-2013 Cédric Lecacheur <jordx@free.fr>
-//            (c) 2009-2013 Benjamin "Touky" Huet <huet.benjamin@gmail.com>
-//   This program is free software; you can redistribute it and/or
-//   modify it under the terms of the Do What The Fuck You Want To
-//   Public License, Version 2, as published by Sam Hocevar. See
-//   http://www.wtfpl.net/ for more details.
-//
-
-#if defined HAVE_CONFIG_H
-#   include "config.h"
-#endif
-
-#include "core.h"
-#include "easymesh/easymesh.h"
-
-#include <string>
-%}
-
-%require "2.3"
-%debug
-%defines
-%skeleton "lalr1.cc"
-%name-prefix="lol"
-%define parser_class_name "EasyMeshParser"
-%locations
-%parse-param { class EasyMeshCompiler& mc }
-%error-verbose
-
-%union
-{
-    float   fval;
-    int     ival;
-    bool    bval;
-    float   vval[4];
-    int     ivval[4];
-    char*   lval;
-    /* Can't use uin32_t here for some reason */
-    unsigned u32val;
-}
-
-%start mesh_description
-
-%token T_LOOP T_COLOR T_ACOLOR T_BCOLOR T_VCOLOR
-%token T_TOGGLESCALEWINDING T_TOGGLEQUADWEIGHTING T_TOGGLEPOSTBUILDNORMAL T_TOGGLEVERTNOCLEANUP
-%token T_VERTMERGE T_VERTSEPARATE
-
-%token T_TRANSLATEX T_ROTATEX T_TAPERX T_TWISTX T_SHEARX T_STRETCHX T_BENDXY T_BENDXZ T_SCALEX T_MIRRORX
-%token T_TRANSLATEY T_ROTATEY T_TAPERY T_TWISTY T_SHEARY T_STRETCHY T_BENDYX T_BENDYZ T_SCALEY T_MIRRORY
-%token T_TRANSLATEZ T_ROTATEZ T_TAPERZ T_TWISTZ T_SHEARZ T_STRETCHZ T_BENDZX T_BENDZY T_SCALEZ T_MIRRORZ
-%token T_TRANSLATE T_ROTATE T_SCALE  T_RADIALJITTER T_SPLITTRIANGLE T_SMOOTHMESH
-%token T_DUPLICATE
-%token T_CSGUNION T_CSGSUBSTRACT T_CSGSUBSTRACTLOSS T_CSGAND T_CSGXOR
-%token T_CHAMFER
-
-%token T_CYLINDER T_BOX T_SMOOTHCHAMFBOX T_FLATCHAMFBOX T_SPHERE T_CAPSULE
-%token T_STAR T_EXPANDEDSTAR T_DISC T_TRIANGLE T_QUAD T_COG T_TORUS
-
-%token T_END 0
-%token T_ERROR
-
-%token <fval>   F_NUMBER
-%token <ival>   I_NUMBER
-%token <bval>   BOOLEAN
-%token <u32val> COLOR
-
-/* Base Number types */
-%type <fval>    fv
-%type <ival>    iv
-/* Vector types */
-%type <vval>    v2
-%type <vval>    v3
-%type <vval>    v4
-/* Special types */
-%type <bval>    bv
-
-%{
-#include "easymesh/easymesh-compiler.h"
-
-#undef yylex
-#define yylex mc.m_lexer->lex
-
-/* HACK: workaround for Bison who insists on using exceptions */
-#define try if (true)
-#define catch(...) if (false)
-#define throw (void)0
-%}
-
-%%
-
-mesh_description:
-    mesh_expression_list T_END
-  ;
-
-mesh_expression_list:
-    mesh_expression
-  | mesh_expression mesh_expression_list
-  ;
-
-mesh_expression:
-    mesh_command_list
-  | mesh_open mesh_expression_list mesh_close
-  ;
-
-mesh_command_list:
-    mesh_command
-  | mesh_command mesh_command_list
-  ;
-
-mesh_command:
-    color_command
-  | transform_command
-  | primitive_command
-  | post_brace_command
-  | pre_brace_command '[' mesh_expression_list mesh_close
-  | doloop            '[' mesh_expression_list ']'             { mc.m_mesh.LoopEnd(); }
-  ;
-
-post_brace_command:
-    T_CSGUNION          mesh_open mesh_expression_list ']'     { mc.m_mesh.CsgUnion();  mc.m_mesh.CloseBrace(); }
-  | T_CSGSUBSTRACT      mesh_open mesh_expression_list ']'     { mc.m_mesh.CsgSub();    mc.m_mesh.CloseBrace(); }
-  | T_CSGSUBSTRACTLOSS  mesh_open mesh_expression_list ']'     { mc.m_mesh.CsgSubL();   mc.m_mesh.CloseBrace(); }
-  | T_CSGAND            mesh_open mesh_expression_list ']'     { mc.m_mesh.CsgAnd();    mc.m_mesh.CloseBrace(); }
-  | T_CSGXOR            mesh_open mesh_expression_list ']'     { mc.m_mesh.CsgXor();    mc.m_mesh.CloseBrace(); }
-  ;
-
-doloop:
-    T_LOOP iv               { mc.m_mesh.LoopStart($2); }
-  ;
-
-pre_brace_command:
-    T_DUPLICATE             { mc.m_mesh.DupAndScale(vec3(1.f), true); }
-  ;
-
-mesh_open:
-    '['                     { mc.m_mesh.OpenBrace(); }
-  ;
-
-mesh_close:
-    ']'                     { mc.m_mesh.CloseBrace(); }
-  ;
-
-color_command:
-    T_COLOR fv fv fv fv     { mc.m_mesh.SetCurColor(vec4($2, $3, $4, $5)); }
-  | T_COLOR v4              { mc.m_mesh.SetCurColor(vec4($2[0], $2[1], $2[2], $2[3])); }
-  | T_COLOR COLOR           { uint32_t x = $2;
-                              ivec4 v(x >> 24, (x >> 16) & 0xff, (x >> 8) & 0xff, x & 0xff);
-                              mc.m_mesh.SetCurColor(vec4(v) * (1.f / 255.f)); }
-  | T_ACOLOR fv fv fv fv    { mc.m_mesh.SetCurColorA(vec4($2, $3, $4, $5)); }
-  | T_ACOLOR v4             { mc.m_mesh.SetCurColorA(vec4($2[0], $2[1], $2[2], $2[3])); }
-  | T_ACOLOR COLOR          { uint32_t x = $2;
-                              ivec4 v(x >> 24, (x >> 16) & 0xff, (x >> 8) & 0xff, x & 0xff);
-                              mc.m_mesh.SetCurColorA(vec4(v) * (1.f / 255.f)); }
-  | T_BCOLOR fv fv fv fv    { mc.m_mesh.SetCurColorB(vec4($2, $3, $4, $5)); }
-  | T_BCOLOR v4             { mc.m_mesh.SetCurColorB(vec4($2[0], $2[1], $2[2], $2[3])); }
-  | T_BCOLOR COLOR          { uint32_t x = $2;
-                              ivec4 v(x >> 24, (x >> 16) & 0xff, (x >> 8) & 0xff, x & 0xff);
-                              mc.m_mesh.SetCurColorB(vec4(v) * (1.f / 255.f)); }
-  | T_VCOLOR fv fv fv fv    { mc.m_mesh.SetVertColor(vec4($2, $3, $4, $5)); }
-  | T_VCOLOR v4             { mc.m_mesh.SetVertColor(vec4($2[0], $2[1], $2[2], $2[3])); }
-  | T_VCOLOR COLOR          { uint32_t x = $2;
-                              ivec4 v(x >> 24, (x >> 16) & 0xff, (x >> 8) & 0xff, x & 0xff);
-                              mc.m_mesh.SetVertColor(vec4(v) * (1.f / 255.f)); }
-  ;
-
-transform_command:
-    T_TRANSLATEX fv        { mc.m_mesh.Translate(vec3($2, 0.f, 0.f)); }
-  | T_TRANSLATEY fv        { mc.m_mesh.Translate(vec3(0.f, $2, 0.f)); }
-  | T_TRANSLATEZ fv        { mc.m_mesh.Translate(vec3(0.f, 0.f, $2)); }
-  | T_TRANSLATE  fv fv fv  { mc.m_mesh.Translate(vec3($2, $3, $4)); }
-  |  T_TRANSLATE v3        { mc.m_mesh.Translate(vec3($2[0], $2[1], $2[2])); }
-  | T_ROTATEX fv           { mc.m_mesh.RotateX($2); }
-  | T_ROTATEY fv           { mc.m_mesh.RotateY($2); }
-  | T_ROTATEZ fv           { mc.m_mesh.RotateZ($2); }
-  | T_ROTATE  fv fv fv fv  { mc.m_mesh.Rotate($2, vec3($3, $4, $5)); }
-  |  T_ROTATE fv v3        { mc.m_mesh.Rotate($2, vec3($3[0], $3[1], $3[2])); }
-  | T_RADIALJITTER fv      { mc.m_mesh.RadialJitter($2); }
-  | T_TAPERX  fv fv fv bv  { mc.m_mesh.TaperX($2, $3, $4, $5); }
-  |  T_TAPERX fv fv fv     { mc.m_mesh.TaperX($2, $3, $4); }
-  |  T_TAPERX fv fv        { mc.m_mesh.TaperX($2, $3); }
-  | T_TAPERY  fv fv fv bv  { mc.m_mesh.TaperY($2, $3, $4, $5); }
-  |  T_TAPERY fv fv fv     { mc.m_mesh.TaperY($2, $3, $4); }
-  |  T_TAPERY fv fv        { mc.m_mesh.TaperY($2, $3); }
-  | T_TAPERZ  fv fv fv bv  { mc.m_mesh.TaperZ($2, $3, $4, $5); }
-  |  T_TAPERZ fv fv fv     { mc.m_mesh.TaperZ($2, $3, $4); }
-  |  T_TAPERZ fv fv        { mc.m_mesh.TaperZ($2, $3); }
-  | T_TWISTX  fv fv        { mc.m_mesh.TwistX($2, $3); }
-  |  T_TWISTX fv           { mc.m_mesh.TwistX($2); }
-  | T_TWISTY  fv fv        { mc.m_mesh.TwistY($2, $3); }
-  |  T_TWISTY fv           { mc.m_mesh.TwistY($2); }
-  | T_TWISTZ  fv fv        { mc.m_mesh.TwistZ($2, $3); }
-  |  T_TWISTZ fv           { mc.m_mesh.TwistZ($2); }
-  | T_SHEARX  fv fv fv bv  { mc.m_mesh.ShearX($2, $3, $4, $5); }
-  |  T_SHEARX fv fv fv     { mc.m_mesh.ShearX($2, $3, $4); }
-  |  T_SHEARX fv fv        { mc.m_mesh.ShearX($2, $3); }
-  | T_SHEARY  fv fv fv bv  { mc.m_mesh.ShearY($2, $3, $4, $5); }
-  |  T_SHEARY fv fv fv     { mc.m_mesh.ShearY($2, $3, $4); }
-  |  T_SHEARY fv fv        { mc.m_mesh.ShearY($2, $3); }
-  | T_SHEARZ  fv fv fv bv  { mc.m_mesh.ShearZ($2, $3, $4, $5); }
-  |  T_SHEARZ fv fv fv     { mc.m_mesh.ShearZ($2, $3, $4); }
-  |  T_SHEARZ fv fv        { mc.m_mesh.ShearZ($2, $3); }
-  | T_STRETCHX  fv fv fv   { mc.m_mesh.StretchX($2, $3, $4); }
-  |  T_STRETCHX fv fv      { mc.m_mesh.StretchX($2, $3); }
-  | T_STRETCHY  fv fv fv   { mc.m_mesh.StretchY($2, $3, $4); }
-  |  T_STRETCHY fv fv      { mc.m_mesh.StretchY($2, $3); }
-  | T_STRETCHZ  fv fv fv   { mc.m_mesh.StretchZ($2, $3, $4); }
-  |  T_STRETCHZ fv fv      { mc.m_mesh.StretchZ($2, $3); }
-  | T_BENDXY  fv fv        { mc.m_mesh.BendXY($2, $3); }
-  |  T_BENDXY fv           { mc.m_mesh.BendXY($2); }
-  | T_BENDXZ  fv fv        { mc.m_mesh.BendXZ($2, $3); }
-  |  T_BENDXZ fv           { mc.m_mesh.BendXZ($2); }
-  | T_BENDYX  fv fv        { mc.m_mesh.BendYX($2, $3); }
-  |  T_BENDYX fv           { mc.m_mesh.BendYX($2); }
-  | T_BENDYZ  fv fv        { mc.m_mesh.BendYZ($2, $3); }
-  |  T_BENDYZ fv           { mc.m_mesh.BendYZ($2); }
-  | T_BENDZX  fv fv        { mc.m_mesh.BendZX($2, $3); }
-  |  T_BENDZX fv           { mc.m_mesh.BendZX($2); }
-  | T_BENDZY  fv fv        { mc.m_mesh.BendZY($2, $3); }
-  |  T_BENDZY fv           { mc.m_mesh.BendZY($2); }
-  | T_SCALEX fv            { mc.m_mesh.Scale(vec3($2, 1.f, 1.f)); }
-  | T_SCALEY fv            { mc.m_mesh.Scale(vec3(1.f, $2, 1.f)); }
-  | T_SCALEZ fv            { mc.m_mesh.Scale(vec3(1.f, 1.f, $2)); }
-  | T_SCALE fv fv fv       { mc.m_mesh.Scale(vec3($2, $3, $4)); }
-  |  T_SCALE v3            { mc.m_mesh.Scale(vec3($2[0], $2[1], $2[2])); }
-  |  T_SCALE fv            { mc.m_mesh.Scale(vec3($2, $2, $2)); }
-  | T_MIRRORX              { mc.m_mesh.MirrorX(); }
-  | T_MIRRORY              { mc.m_mesh.MirrorY(); }
-  | T_MIRRORZ              { mc.m_mesh.MirrorZ(); }
-  | T_CHAMFER fv           { mc.m_mesh.Chamfer($2); }
-  | T_SPLITTRIANGLE iv     { mc.m_mesh.SplitTriangles($2); }
-  | T_SMOOTHMESH iv iv iv  { mc.m_mesh.SmoothMesh($2, $3, $4); }
-  | T_TOGGLESCALEWINDING   { mc.m_mesh.ToggleScaleWinding(); }
-  | T_TOGGLEQUADWEIGHTING  { mc.m_mesh.ToggleQuadWeighting(); }
-  | T_TOGGLEPOSTBUILDNORMAL { mc.m_mesh.TogglePostBuildNormal(); }
-  | T_TOGGLEVERTNOCLEANUP  { mc.m_mesh.ToggleVerticeNoCleanup(); }
-  | T_VERTMERGE            { mc.m_mesh.VerticesMerge(); }
-  | T_VERTSEPARATE         { mc.m_mesh.VerticesSeparate(); }
-  ;
-
-primitive_command:
-    T_CYLINDER  iv fv fv fv bv bv bv { mc.m_mesh.AppendCylinder($2, $3, $4, $5, $6, $7, $8); }
-  |  T_CYLINDER iv fv fv fv bv bv   { mc.m_mesh.AppendCylinder($2, $3, $4, $5, $6, $7); }
-  |  T_CYLINDER iv fv fv fv bv      { mc.m_mesh.AppendCylinder($2, $3, $4, $5, $6); }
-  |  T_CYLINDER iv fv fv fv         { mc.m_mesh.AppendCylinder($2, $3, $4, $5); }
-  |  T_CYLINDER iv fv fv            { mc.m_mesh.AppendCylinder($2, $3, $4, $4); }
-  | T_SPHERE iv fv                  { mc.m_mesh.AppendSphere($2, $3); }
-  | T_CAPSULE iv fv fv              { mc.m_mesh.AppendCapsule($2, $3, $4); }
-  | T_TORUS iv fv fv                { mc.m_mesh.AppendTorus($2, $3, $4); }
-  | T_BOX  fv fv fv fv              { mc.m_mesh.AppendBox(vec3($2, $3, $4), $5); }
-  |  T_BOX fv fv fv                 { mc.m_mesh.AppendBox(vec3($2, $3, $4)); }
-  |  T_BOX fv                       { mc.m_mesh.AppendBox(vec3($2, $2, $2)); }
-  |  T_BOX v3 fv                    { mc.m_mesh.AppendBox(vec3($2[0], $2[1], $2[2]), $3); }
-  |  T_BOX v3                       { mc.m_mesh.AppendBox(vec3($2[0], $2[1], $2[2])); }
-  | T_SMOOTHCHAMFBOX  fv fv fv fv   { mc.m_mesh.AppendSmoothChamfBox(vec3($2, $3, $4), $5); }
-  |  T_SMOOTHCHAMFBOX fv fv         { mc.m_mesh.AppendSmoothChamfBox(vec3($2, $2, $2), $3); }
-  |  T_SMOOTHCHAMFBOX v3 fv         { mc.m_mesh.AppendSmoothChamfBox(vec3($2[0], $2[1], $2[2]), $3); }
-  | T_FLATCHAMFBOX  fv fv fv fv     { mc.m_mesh.AppendFlatChamfBox(vec3($2, $3, $4), $5); }
-  |  T_FLATCHAMFBOX fv fv           { mc.m_mesh.AppendFlatChamfBox(vec3($2, $2, $2), $3); }
-  |  T_FLATCHAMFBOX v3 fv           { mc.m_mesh.AppendFlatChamfBox(vec3($2[0], $2[1], $2[2]), $3); }
-  | T_STAR  iv fv fv bv bv          { mc.m_mesh.AppendStar($2, $3, $4, $5, $6); }
-  |  T_STAR iv fv fv bv             { mc.m_mesh.AppendStar($2, $3, $4, $5); }
-  |  T_STAR iv fv fv                { mc.m_mesh.AppendStar($2, $3, $4); }
-  | T_EXPANDEDSTAR  iv fv fv fv     { mc.m_mesh.AppendExpandedStar($2, $3, $4, $5); }
-  |  T_EXPANDEDSTAR iv fv fv        { mc.m_mesh.AppendExpandedStar($2, $3, $4); }
-  | T_DISC  iv fv bv                { mc.m_mesh.AppendDisc($2, $3, $4); }
-  |  T_DISC iv fv                   { mc.m_mesh.AppendDisc($2, $3); }
-  | T_TRIANGLE  fv bv               { mc.m_mesh.AppendSimpleTriangle($2, $3); }
-  |  T_TRIANGLE fv                  { mc.m_mesh.AppendSimpleTriangle($2); }
-  | T_QUAD  fv bv                   { mc.m_mesh.AppendSimpleQuad($2, $3); }
-  |  T_QUAD fv                      { mc.m_mesh.AppendSimpleQuad($2); }
-  | T_COG  iv fv fv fv fv fv fv fv fv bv { mc.m_mesh.AppendCog($2, $3, $4, $5, $6, $7, $8, $9, $10, $11); }
-  |  T_COG iv fv fv fv fv fv fv fv fv    { mc.m_mesh.AppendCog($2, $3, $4, $5, $6, $7, $8, $9, $10); }
-  |  T_COG iv fv fv fv fv fv fv fv       { mc.m_mesh.AppendCog($2, $3, $4, $5, $6, $7, $8, $9); }
-  |  T_COG iv fv v2 v2 v2 fv bv          { mc.m_mesh.AppendCog($2, $3, $4[0], $4[1], $5[0], $5[1], $6[0], $6[1], $7, $8); }
-  |  T_COG iv fv v2 v2 v2 fv             { mc.m_mesh.AppendCog($2, $3, $4[0], $4[1], $5[0], $5[1], $6[0], $6[1], $7); }
-  |  T_COG iv fv v2 v2 v2                { mc.m_mesh.AppendCog($2, $3, $4[0], $4[1], $5[0], $5[1], $6[0], $6[1]); }
-  ;
-
-/* Base Number types */
-fv:
-    F_NUMBER        { $$ = $1; }
-  | '-' fv          { $$ = -$2; }
-  | I_NUMBER        { $$ = (float)$1; }
-  | '-' iv          { $$ = -(float)$2; }
-  ;
-
-iv:
-    I_NUMBER        { $$ = $1; }
-  | '-' iv          { $$ = -$2; }
-  | F_NUMBER        { $$ = (int)$1; }
-  | '-' fv          { $$ = -(int)$2; }
-  ;
-
-/* Vector types */
-v2:
-    '('fv')'        { $$[0] = $2; $$[1] = $2; }
-  | '('fv fv')'     { $$[0] = $2; $$[1] = $3; }
-  ;
-
-v3:
-    '('fv')'        { $$[0] = $2; $$[1] = $2; $$[2] = $2; }
-  | '('fv fv fv')'  { $$[0] = $2; $$[1] = $3; $$[2] = $4; }
-  ;
-
-v4:
-    '('fv')'          { $$[0] = $2; $$[1] = $2; $$[2] = $2; $$[3] = $2; }
-  | '('fv fv fv fv')' { $$[0] = $2; $$[1] = $3; $$[2] = $4; $$[3] = $5; }
-  ;
-
-/* Special types */
-bv:
-    BOOLEAN         { $$ = $1; }
-  | I_NUMBER        { $$ = !!$1; }
-  | F_NUMBER        { $$ = !!$1; }
-  ;
-
-%%
-
-void lol::EasyMeshParser::error(const EasyMeshParser::location_type& l,
-                                const std::string& m)
-{
-    mc.Error(l, m);
-}
-
diff --git a/doc/grammar/easymesh-scanner.l b/doc/grammar/easymesh-scanner.l
deleted file mode 100644
index 04020d66..00000000
--- a/doc/grammar/easymesh-scanner.l
+++ /dev/null
@@ -1,208 +0,0 @@
-%{
-//
-// Lol Engine
-//
-// Copyright: (c) 2010-2013 Sam Hocevar <sam@hocevar.net>
-//            (c) 2009-2013 Cédric Lecacheur <jordx@free.fr>
-//            (c) 2009-2013 Benjamin "Touky" Huet <huet.benjamin@gmail.com>
-//   This program is free software; you can redistribute it and/or
-//   modify it under the terms of the Do What The Fuck You Want To
-//   Public License, Version 2, as published by Sam Hocevar. See
-//   http://www.wtfpl.net/ for more details.
-//
-
-#if defined HAVE_CONFIG_H
-#   include "config.h"
-#endif
-
-#include <cstdlib>
-using std::exit;
-using std::malloc;
-using std::realloc;
-using std::free;
-
-#include "core.h"
-#include "easymesh/easymesh-compiler.h"
-
-typedef lol::EasyMeshParser::token token;
-typedef lol::EasyMeshParser::token_type token_type;
-
-#ifndef YY_DECL
-#   define YY_DECL lol::EasyMeshParser::token_type \
-        lol::EasyMeshScanner::lex(lol::EasyMeshParser::semantic_type* yylval, \
-                                  lol::EasyMeshParser::location_type* yylloc)
-#endif
-
-#define yyterminate() return token::T_END
-#define YY_NO_UNISTD_H
-#define YY_USER_ACTION yylloc->columns(yyleng);
-%}
-
-%option c++ prefix="EasyMesh"
-%option batch yywrap nounput stack
-
-%%
-
-%{  /* reset location at the beginning of yylex() */
-    yylloc->step();
-%}
-
-(csgu|csgunion)          { return token::T_CSGUNION; }
-(csgs|CsgSub)            { return token::T_CSGSUBSTRACT; }
-(csgsl|CsgSubL)          { return token::T_CSGSUBSTRACTLOSS; }
-(csga|csgand)            { return token::T_CSGAND; }
-(csgx|csgxor)            { return token::T_CSGXOR; }
-
-(lp|loop)                { return token::T_LOOP; }
-(sc|setcolor)            { return token::T_COLOR; }
-(sca|setcolora)          { return token::T_ACOLOR; }
-(scb|setcolorb)          { return token::T_BCOLOR; }
-(scv|setcolorv)          { return token::T_VCOLOR; }
-
-(tsw|tglscalewind)       { return token::T_TOGGLESCALEWINDING; }
-(tqw|tglquadweight)      { return token::T_TOGGLEQUADWEIGHTING; }
-(tpbn|tglpstbuildnormal) { return token::T_TOGGLEPOSTBUILDNORMAL; }
-(tvnc|tglvertnocleanup)  { return token::T_TOGGLEVERTNOCLEANUP; }
-
-(vm|vertmerge)           { return token::T_VERTMERGE; }
-(vs|vertseparate)        { return token::T_VERTSEPARATE; }
-
-(tx|translatex)          { return token::T_TRANSLATEX; }
-(ty|translatey)          { return token::T_TRANSLATEY; }
-(tz|translatez)          { return token::T_TRANSLATEZ; }
-(t|translate)            { return token::T_TRANSLATE; }
-(rx|rotatex)             { return token::T_ROTATEX; }
-(ry|rotatey)             { return token::T_ROTATEY; }
-(rz|rotatez)             { return token::T_ROTATEZ; }
-(r|rotate)               { return token::T_ROTATE; }
-(rj|radialjitter)        { return token::T_RADIALJITTER; }
-(tax|taperx)             { return token::T_TAPERX; }
-(tay|tapery)             { return token::T_TAPERY; }
-(taz|taperz)             { return token::T_TAPERZ; }
-(twx|twistx)             { return token::T_TWISTX; }
-(twy|twisty)             { return token::T_TWISTY; }
-(twz|twistz)             { return token::T_TWISTZ; }
-(shx|shearx)             { return token::T_SHEARX; }
-(shy|sheary)             { return token::T_SHEARY; }
-(shz|shearz)             { return token::T_SHEARZ; }
-(stx|stretchx)           { return token::T_STRETCHX; }
-(sty|stretchy)           { return token::T_STRETCHY; }
-(stz|stretchz)           { return token::T_STRETCHZ; }
-(bdxy|bendxy)            { return token::T_BENDXY; }
-(bdxz|bendxz)            { return token::T_BENDXZ; }
-(bdyx|bendyx)            { return token::T_BENDYX; }
-(bdyz|bendyz)            { return token::T_BENDYZ; }
-(bdzx|bendzx)            { return token::T_BENDZX; }
-(bdzy|bendzy)            { return token::T_BENDZY; }
-(sx|scalex)              { return token::T_SCALEX; }
-(sy|scaley)              { return token::T_SCALEY; }
-(sz|scalez)              { return token::T_SCALEZ; }
-(s|scale)                { return token::T_SCALE; }
-(mx|mirrorx)             { return token::T_MIRRORX; }
-(my|mirrory)             { return token::T_MIRRORY; }
-(mz|mirrorz)             { return token::T_MIRRORZ; }
-(ch|chamfer)             { return token::T_CHAMFER; }
-(splt|splittriangle)     { return token::T_SPLITTRIANGLE; }
-(smth|smooth)            { return token::T_SMOOTHMESH; }
-(dup|duplicate)          { return token::T_DUPLICATE; }
-
-(ac|addcylinder)         { return token::T_CYLINDER; }
-(asph|addsphere)         { return token::T_SPHERE; }
-(acap|addcapsule)        { return token::T_CAPSULE; }
-(ato|addtorus)           { return token::T_TORUS; }
-(ab|addbox)              { return token::T_BOX; }
-(ascb|addsmoothchamfbox) { return token::T_SMOOTHCHAMFBOX; }
-(afcb|addflatchamfbox)   { return token::T_FLATCHAMFBOX; }
-(as|addstar)             { return token::T_STAR; }
-(aes|addexpandedstar)    { return token::T_EXPANDEDSTAR; }
-(ad|adddisc)             { return token::T_DISC; }
-(at|addtriangle)         { return token::T_TRIANGLE; }
-(aq|addquad)             { return token::T_QUAD; }
-(acg|addcog)             { return token::T_COG; }
-
-%{ /* =======  BASE COLOR TYPES  ========================================= */ %}
-%{ /* COLOR */ %}
-#[0-9a-fA-F]{3} {
-        uint32_t tmp = std::strtol(yytext + 1, nullptr, 16);
-        yylval->u32val = 0x11000000u * (tmp >> 8)
-                       | 0x00110000u * ((tmp >> 4) & 0xf)
-                       | 0x00001100u * (tmp & 0xf)
-                       | 0x000000ffu;
-        return token::COLOR; }
-#[0-9a-fA-F]{4} {
-        uint32_t tmp = std::strtol(yytext + 1, nullptr, 16);
-        yylval->u32val = 0x11000000u * (tmp >> 12)
-                       | 0x00110000u * ((tmp >> 8) & 0xf)
-                       | 0x00001100u * ((tmp >> 4) & 0xf)
-                       | 0x00000011u * (tmp & 0xf);
-        return token::COLOR; }
-#[0-9a-fA-F]{6} {
-        yylval->u32val = 0xffu
-                       | 0x100u * (uint32_t)std::strtol(yytext + 1, nullptr, 16);
-        return token::COLOR; }
-#[0-9a-fA-F]{8} {
-        yylval->u32val = (uint32_t)std::strtol(yytext + 1, nullptr, 16);
-        return token::COLOR; }
-
-%{ /* =======  BASE DATA TYPES  ========================================= */ %}
-%{ /* BOOL */ %}
-true { yylval->bval = true; return token::BOOLEAN; }
-false { yylval->bval = false; return token::BOOLEAN; }
-%{ /* FLOAT */ %}
-[-+]?[0-9]*\.[0-9]+([eE][-+]?[0-9]+)? {
-        yylval->fval = (float)std::atof(yytext); return token::F_NUMBER; }
-%{ /* INT */ %}
-[-+]?[0-9]+ {
-        yylval->ival = std::atoi(yytext); return token::I_NUMBER; }
-
-%{ /* ======= COMMENTS ======= */ %}
-"//".* { /* ignore this */ }
-
-%{ /* Semantics tokens */ %}
-"-"   { return token_type('-'); }
-"("   { return token_type('('); }
-")"   { return token_type(')'); }
-"{"   { return token_type('{'); }
-"}"   { return token_type('}'); }
-[\[]  { return token_type('['); }
-[\]]  { return token_type(']'); }
-[ ,]  { /* ignore this */ }
-[\n]  { /* ignore this */ }
-.     { return token::T_ERROR; }
-
-%%
-
-lol::EasyMeshScanner::EasyMeshScanner(char const *command)
-    : EasyMeshFlexLexer(0, 0),
-      m_input(command)
-{
-}
-
-lol::EasyMeshScanner::~EasyMeshScanner()
-{
-}
-
-int lol::EasyMeshScanner::LexerInput(char* buf, int max_size)
-{
-    (void)max_size; /* unused for now */
-
-    buf[0] = m_input[0];
-    if (buf[0])
-        ++m_input;
-    return buf[0] ? 1 : 0;
-}
-
-#ifdef yylex
-#undef yylex
-#endif
-int EasyMeshFlexLexer::yylex()
-{
-    std::cerr << "in EasyMeshFlexLexer::yylex() !" << std::endl;
-    return 0;
-}
-
-int EasyMeshFlexLexer::yywrap()
-{
-    return 1;
-}
-
diff --git a/doc/grammar/lolfx-parser.y b/doc/grammar/lolfx-parser.y
deleted file mode 100644
index 8d3dca91..00000000
--- a/doc/grammar/lolfx-parser.y
+++ /dev/null
@@ -1,1311 +0,0 @@
-%{
-//
-// Lol Engine
-//
-// Copyright: (c) 2010-2013 Sam Hocevar <sam@hocevar.net>
-//   This program is free software; you can redistribute it and/or
-//   modify it under the terms of the Do What The Fuck You Want To
-//   Public License, Version 2, as published by Sam Hocevar. See
-//   http://www.wtfpl.net/ for more details.
-//
-
-#if defined HAVE_CONFIG_H
-#   include "config.h"
-#endif
-
-#include "core.h"
-
-#include <string>
-
-%}
-
-%require "2.3"
-%debug
-%defines
-%skeleton "lalr1.cc"
-%name-prefix="lol"
-%define parser_class_name "LolFxParser"
-%locations
-%parse-param { class LolFxCompiler& mc }
-%error-verbose
-
-/* The classic Bison union trick */
-%union
-{
-    int ival;
-    unsigned uval;
-    float fval;
-    char *sval;
-}
-
-/* %type <sval> lolfx_shader_name */
-
- /*
-  * GLSL and HLSL generic tokens
-  */
-
-%token <ival> BOOLCONSTANT
-%token <ival> INTCONSTANT
-%token <uval> UINTCONSTANT
-%token <fval> FLOATCONSTANT
-%token <sval> FIELDSELECTION
-%token <sval> IDENTIFIER
-%token <sval> TYPENAME
-
- /*
-  * GLSL keywords
-  * FIXME: unsorted
-  */
-
-%token GT_SUBROUTINE GT_PATCH GT_SAMPLE GT_FLAT GT_SMOOTH GT_LAYOUT
-%token GT_INVARIANT GT_HIGHP GT_MEDIUMP GT_LOWP GT_PRECISION
-
- /*
-  * Deprecated GLSL keywords
-  */
-
-%token GT_ATTRIBUTE GT_VARYING
-
- /*
-  * GLSL types
-  */
-
-%token GT_VEC2 GT_VEC3 GT_VEC4
-%token GT_BVEC2 GT_BVEC3 GT_BVEC4
-%token GT_DVEC2 GT_DVEC3 GT_DVEC4
-%token GT_IVEC2 GT_IVEC3 GT_IVEC4
-%token GT_UVEC2 GT_UVEC3 GT_UVEC4
-
-%token GT_MAT2 GT_MAT2X2 GT_MAT2X3 GT_MAT2X4
-%token GT_MAT3 GT_MAT3X2 GT_MAT3X3 GT_MAT3X4
-%token GT_MAT4 GT_MAT4X2 GT_MAT4X3 GT_MAT4X4
-%token GT_DMAT2 GT_DMAT2X2 GT_DMAT2X3 GT_DMAT2X4
-%token GT_DMAT3 GT_DMAT3X2 GT_DMAT3X3 GT_DMAT3X4
-%token GT_DMAT4 GT_DMAT4X2 GT_DMAT4X3 GT_DMAT4X4
-
-%token GT_SAMPLER1DSHADOW GT_SAMPLER1DARRAY GT_SAMPLER1DARRAYSHADOW
-%token GT_SAMPLER2DSHADOW GT_SAMPLER2DARRAY GT_SAMPLER2DARRAYSHADOW
-%token GT_SAMPLER2DRECT GT_SAMPLER2DRECTSHADOW
-%token GT_SAMPLER2DMS GT_SAMPLER2DMSARRAY
-%token GT_SAMPLERCUBESHADOW GT_SAMPLERCUBEARRAY GT_SAMPLERCUBEARRAYSHADOW
-%token GT_SAMPLERBUFFER
-
-%token GT_ISAMPLER1D GT_ISAMPLER1DARRAY
-%token GT_ISAMPLER2D GT_ISAMPLER2DARRAY
-%token GT_ISAMPLER2DRECT
-%token GT_ISAMPLER2DMS GT_ISAMPLER2DMSARRAY
-%token GT_ISAMPLER3D
-%token GT_ISAMPLERCUBE GT_ISAMPLERCUBEARRAY
-%token GT_ISAMPLERBUFFER
-
-%token GT_USAMPLER1D GT_USAMPLER1DARRAY
-%token GT_USAMPLER2D GT_USAMPLER2DARRAY
-%token GT_USAMPLER2DRECT
-%token GT_USAMPLER2DMS GT_USAMPLER2DMSARRAY
-%token GT_USAMPLER3D
-%token GT_USAMPLERCUBE GT_USAMPLERCUBEARRAY
-%token GT_USAMPLERBUFFER
-
- /*
-  * GLSL keywords that are also in HLSL
-  */
-
-%token GHT_BOOL GHT_BREAK GHT_CASE GHT_CENTROID GHT_CONST GHT_CONTINUE
-%token GHT_DEFAULT GHT_DISCARD GHT_DO GHT_DOUBLE GHT_ELSE GHT_FLOAT GHT_FOR
-%token GHT_IF GHT_IN GHT_INOUT GHT_INT GHT_NOPERSPECTIVE GHT_OUT GHT_RETURN
-%token GHT_SAMPLER1D GHT_SAMPLER2D GHT_SAMPLER3D GHT_SAMPLERCUBE GHT_STRUCT
-%token GHT_SWITCH GHT_UINT GHT_UNIFORM GHT_VOID GHT_WHILE
-
- /*
-  * HLSL keywords that are also in GLSL
-  */
-
-%token HGT_BOOL HGT_BREAK HGT_CASE HGT_CENTROID HGT_CONST HGT_CONTINUE
-%token HGT_DEFAULT HGT_DISCARD HGT_DO HGT_DOUBLE HGT_ELSE HGT_FLOAT HGT_FOR
-%token HGT_IF HGT_IN HGT_INOUT HGT_INT HGT_NOPERSPECTIVE HGT_OUT HGT_RETURN
-%token HGT_SAMPLER1D HGT_SAMPLER2D HGT_SAMPLER3D HGT_SAMPLERCUBE HGT_STRUCT
-%token HGT_SWITCH HGT_UINT HGT_UNIFORM HGT_VOID HGT_WHILE
-
- /*
-  * HLSL keywords
-  */
-
-%token HT_APPENDSTRUCTUREDBUFFER HT_ASM HT_ASM_FRAGMENT HT_BLENDSTATE
-%token HT_BUFFER HT_BYTEADDRESSBUFFER HT_CBUFFER
-%token HT_COLUMN_MAJOR HT_COMPILE HT_COMPILE_FRAGMENT HT_COMPILESHADER
-%token HT_COMPUTESHADER HT_CONSUMESTRUCTUREDBUFFER
-%token HT_DEPTHSTENCILSTATE HT_DEPTHSTENCILVIEW
-%token HT_DOMAINSHADER HT_DWORD HT_EXTERN HT_FALSE
-%token HT_FXGROUP HT_GEOMETRYSHADER HT_GROUPSHARED HT_HALF HT_HULLSHADER
-%token HT_INLINE HT_INPUTPATCH HT_INTERFACE HT_LINE
-%token HT_LINEADJ HT_LINEAR HT_LINESTREAM HT_MATRIX HT_NAMESPACE
-%token HT_NOINTERPOLATION HT_NULL HT_OUTPUTPATCH
-%token HT_PACKOFFSET HT_PASS HT_PIXELFRAGMENT HT_PIXELSHADER HT_POINT
-%token HT_POINTSTREAM HT_PRECISE HT_RASTERIZERSTATE HT_RENDERTARGETVIEW
-%token HT_REGISTER HT_ROW_MAJOR HT_RWBUFFER HT_RWBYTEADDRESSBUFFER
-%token HT_RWSTRUCTUREDBUFFER HT_RWTEXTURE1D HT_RWTEXTURE1DARRAY HT_RWTEXTURE2D
-%token HT_RWTEXTURE2DARRAY HT_RWTEXTURE3D HT_SAMPLER
-%token HT_SAMPLER_STATE HT_SAMPLERSTATE
-%token HT_SAMPLERCOMPARISONSTATE HT_SHARED HT_SNORM HT_STATEBLOCK
-%token HT_STATEBLOCK_STATE HT_STATIC HT_STRING
-%token HT_STRUCTUREDBUFFER HT_TBUFFER HT_TECHNIQUE HT_TECHNIQUE10
-%token HT_TECHNIQUE11XZ HT_TEXTURE HT_TEXTURE1D HT_TEXTURE1DARRAY HT_TEXTURE2D
-%token HT_TEXTURE2DARRAY HT_TEXTURE2DMS HT_TEXTURE2DMSARRAY HT_TEXTURE3D
-%token HT_TEXTURECUBE HT_TEXTURECUBEARRAY HT_TRUE HT_TYPEDEF HT_TRIANGLE
-%token HT_TRIANGLEADJ HT_TRIANGLESTREAM HT_UNORM HT_VECTOR
-%token HT_VERTEXFRAGMENT HT_VERTEXSHADER HT_VOLATILE
-
- /*
-  * HLSL types
-  */
-
-%token HT_BOOL1 HT_BOOL1x1 HT_BOOL2x1 HT_BOOL3x1 HT_BOOL4x1
-%token HT_BOOL2 HT_BOOL1x2 HT_BOOL2x2 HT_BOOL3x2 HT_BOOL4x2
-%token HT_BOOL3 HT_BOOL1x3 HT_BOOL2x3 HT_BOOL3x3 HT_BOOL4x3
-%token HT_BOOL4 HT_BOOL1x4 HT_BOOL2x4 HT_BOOL3x4 HT_BOOL4x4
-
-%token HT_FLOAT1 HT_FLOAT1x1 HT_FLOAT2x1 HT_FLOAT3x1 HT_FLOAT4x1
-%token HT_FLOAT2 HT_FLOAT1x2 HT_FLOAT2x2 HT_FLOAT3x2 HT_FLOAT4x2
-%token HT_FLOAT3 HT_FLOAT1x3 HT_FLOAT2x3 HT_FLOAT3x3 HT_FLOAT4x3
-%token HT_FLOAT4 HT_FLOAT1x4 HT_FLOAT2x4 HT_FLOAT3x4 HT_FLOAT4x4
-
-%token HT_DOUBLE1 HT_DOUBLE1x1 HT_DOUBLE2x1 HT_DOUBLE3x1 HT_DOUBLE4x1
-%token HT_DOUBLE2 HT_DOUBLE1x2 HT_DOUBLE2x2 HT_DOUBLE3x2 HT_DOUBLE4x2
-%token HT_DOUBLE3 HT_DOUBLE1x3 HT_DOUBLE2x3 HT_DOUBLE3x3 HT_DOUBLE4x3
-%token HT_DOUBLE4 HT_DOUBLE1x4 HT_DOUBLE2x4 HT_DOUBLE3x4 HT_DOUBLE4x4
-
-%token HT_DWORD1 HT_DWORD1x1 HT_DWORD2x1 HT_DWORD3x1 HT_DWORD4x1
-%token HT_DWORD2 HT_DWORD1x2 HT_DWORD2x2 HT_DWORD3x2 HT_DWORD4x2
-%token HT_DWORD3 HT_DWORD1x3 HT_DWORD2x3 HT_DWORD3x3 HT_DWORD4x3
-%token HT_DWORD4 HT_DWORD1x4 HT_DWORD2x4 HT_DWORD3x4 HT_DWORD4x4
-
-%token HT_INT1 HT_INT1x1 HT_INT2x1 HT_INT3x1 HT_INT4x1
-%token HT_INT2 HT_INT1x2 HT_INT2x2 HT_INT3x2 HT_INT4x2
-%token HT_INT3 HT_INT1x3 HT_INT2x3 HT_INT3x3 HT_INT4x3
-%token HT_INT4 HT_INT1x4 HT_INT2x4 HT_INT3x4 HT_INT4x4
-
-%token HT_UINT1 HT_UINT1x1 HT_UINT2x1 HT_UINT3x1 HT_UINT4x1
-%token HT_UINT2 HT_UINT1x2 HT_UINT2x2 HT_UINT3x2 HT_UINT4x2
-%token HT_UINT3 HT_UINT1x3 HT_UINT2x3 HT_UINT3x3 HT_UINT4x3
-%token HT_UINT4 HT_UINT1x4 HT_UINT2x4 HT_UINT3x4 HT_UINT4x4
-
- /*
-  * HLSL preprocessor directives
-  */
-
-%token PREPROCESSOR_DEFINE PREPROCESSOR_ELIF PREPROCESSOR_ELSE
-%token PREPROCESSOR_ENDIF PREPROCESSOR_ERROR PREPROCESSOR_IF
-%token PREPROCESSOR_IFDEF PREPROCESSOR_IFNDEF PREPROCESSOR_INCLUDE
-%token PREPROCESSOR_LINE PREPROCESSOR_PRAGMA PREPROCESSOR_UNDEF
-%token PREPROCESSOR_REGION
-
- /*
-  * HLSL reserved keywords
-  */
-
-%token HT_AUTO HT_CATCH HT_CHAR HT_CLASS HT_CONST_CAST
-%token HT_DELETE HT_DYNAMIC_CAST HT_ENUM HT_EXPLICIT HT_FRIEND HT_GOTO HT_LONG
-%token HT_MUTABLE HT_NEW HT_OPERATOR HT_PRIVATE HT_PROTECTED HT_PUBLIC
-%token HT_REINTERPRET_CAST HT_SHORT HT_SIGNED HT_SIZEOF HT_STATIC_CAST
-%token HT_TEMPLATE HT_THIS HT_THROW HT_TRY HT_TYPENAME HT_UNION HT_UNSIGNED
-%token HT_USING HT_VIRTUAL
-
- /*
-  * Language symbols
-  */
-
-%token T_INC T_DEC T_LE T_GE T_EQ T_NE T_LEFT T_RIGHT T_AND T_OR T_XOR
-%token T_MULEQ T_DIVEQ T_MODEQ T_ADDEQ T_SUBEQ T_LEFTEQ T_RIGHTEQ T_ANDEQ
-%token T_XOREQ T_OREQ
-
- /*
-  * Temporary shit
-  */
-
-%token <fval> FLOAT
-%token <sval> STRING NAME
-
- /*
-  * Special tokens
-  */
-
-%token T_END 0
-%token T_ERROR
-
- /*
-  * Our entry point
-  */
-
-%start lolfx_file
-
-%{
-#include "gpu/lolfx-compiler.h"
-
-#undef yylex
-#define yylex mc.m_lexer->lex
-
-/* HACK: workaround for Bison who insists on using exceptions */
-#define try if (true)
-#define catch(...) if (false)
-#define throw (void)0
-%}
-
-%%
-
- /*
-  * Shortcuts for token groups
-  */
-
-group_glsl_keyword:
-    GT_SUBROUTINE
-  | GT_PATCH
-  | GT_SAMPLE
-  | GT_FLAT
-  | GT_SMOOTH
-  | GT_LAYOUT
-  | GT_INVARIANT
-  | GT_HIGHP
-  | GT_MEDIUMP
-  | GT_LOWP
-  | GT_PRECISION
-  | GT_ATTRIBUTE /* deprecated */
-  | GT_VARYING /* deprecated */
-    ;
-
-group_glsl_type:
-    GT_VEC2
-  | GT_VEC3
-  | GT_VEC4
-  | GT_BVEC2
-  | GT_BVEC3
-  | GT_BVEC4
-  | GT_DVEC2
-  | GT_DVEC3
-  | GT_DVEC4
-  | GT_IVEC2
-  | GT_IVEC3
-  | GT_IVEC4
-  | GT_UVEC2
-  | GT_UVEC3
-  | GT_UVEC4
-  | GT_MAT2
-  | GT_MAT2X2
-  | GT_MAT2X3
-  | GT_MAT2X4
-  | GT_MAT3
-  | GT_MAT3X2
-  | GT_MAT3X3
-  | GT_MAT3X4
-  | GT_MAT4
-  | GT_MAT4X2
-  | GT_MAT4X3
-  | GT_MAT4X4
-  | GT_DMAT2
-  | GT_DMAT2X2
-  | GT_DMAT2X3
-  | GT_DMAT2X4
-  | GT_DMAT3
-  | GT_DMAT3X2
-  | GT_DMAT3X3
-  | GT_DMAT3X4
-  | GT_DMAT4
-  | GT_DMAT4X2
-  | GT_DMAT4X3
-  | GT_DMAT4X4
-  | GT_SAMPLER1DSHADOW
-  | GT_SAMPLER1DARRAY
-  | GT_SAMPLER1DARRAYSHADOW
-  | GT_SAMPLER2DSHADOW
-  | GT_SAMPLER2DARRAY
-  | GT_SAMPLER2DARRAYSHADOW
-  | GT_SAMPLER2DRECT
-  | GT_SAMPLER2DRECTSHADOW
-  | GT_SAMPLER2DMS
-  | GT_SAMPLER2DMSARRAY
-  | GT_SAMPLERCUBESHADOW
-  | GT_SAMPLERCUBEARRAY
-  | GT_SAMPLERCUBEARRAYSHADOW
-  | GT_SAMPLERBUFFER
-  | GT_ISAMPLER1D
-  | GT_ISAMPLER1DARRAY
-  | GT_ISAMPLER2D
-  | GT_ISAMPLER2DARRAY
-  | GT_ISAMPLER2DRECT
-  | GT_ISAMPLER2DMS
-  | GT_ISAMPLER2DMSARRAY
-  | GT_ISAMPLER3D
-  | GT_ISAMPLERCUBE
-  | GT_ISAMPLERCUBEARRAY
-  | GT_ISAMPLERBUFFER
-  | GT_USAMPLER1D
-  | GT_USAMPLER1DARRAY
-  | GT_USAMPLER2D
-  | GT_USAMPLER2DARRAY
-  | GT_USAMPLER2DRECT
-  | GT_USAMPLER2DMS
-  | GT_USAMPLER2DMSARRAY
-  | GT_USAMPLER3D
-  | GT_USAMPLERCUBE
-  | GT_USAMPLERCUBEARRAY
-  | GT_USAMPLERBUFFER
-  | HGT_SAMPLER1D
-  | HGT_SAMPLER2D
-  | HGT_SAMPLER3D
-  | HGT_SAMPLERCUBE
-    ;
-
-group_glsl_keyword_in_hlsl:
-    GHT_BOOL
-  | GHT_BREAK
-  | GHT_CASE
-  | GHT_CENTROID
-  | GHT_CONST
-  | GHT_CONTINUE
-  | GHT_DEFAULT
-  | GHT_DISCARD
-  | GHT_DO
-  | GHT_DOUBLE
-  | GHT_ELSE
-  | GHT_FLOAT
-  | GHT_FOR
-  | GHT_IF
-  | GHT_IN
-  | GHT_INOUT
-  | GHT_INT
-  | GHT_NOPERSPECTIVE
-  | GHT_OUT
-  | GHT_RETURN
-  | GHT_SAMPLER1D
-  | GHT_SAMPLER2D
-  | GHT_SAMPLER3D
-  | GHT_SAMPLERCUBE
-  | GHT_STRUCT
-  | GHT_SWITCH
-  | GHT_UINT
-  | GHT_UNIFORM
-  | GHT_VOID
-  | GHT_WHILE
-    ;
-
-group_hlsl_keyword_in_glsl:
-    HGT_BOOL
-  | HGT_BREAK
-  | HGT_CASE
-  | HGT_CENTROID
-  | HGT_CONST
-  | HGT_CONTINUE
-  | HGT_DEFAULT
-  | HGT_DISCARD
-  | HGT_DO
-  | HGT_DOUBLE
-  | HGT_ELSE
-  | HGT_FLOAT
-  | HGT_FOR
-  | HGT_IF
-  | HGT_IN
-  | HGT_INOUT
-  | HGT_INT
-  | HGT_NOPERSPECTIVE
-  | HGT_OUT
-  | HGT_RETURN
-  | HGT_STRUCT
-  | HGT_SWITCH
-  | HGT_UINT
-  | HGT_UNIFORM
-  | HGT_VOID
-  | HGT_WHILE
-    ;
-
-group_hlsl_keyword:
-    HT_APPENDSTRUCTUREDBUFFER
-  | HT_ASM
-  | HT_ASM_FRAGMENT
-  | HT_BLENDSTATE
-  | HT_BUFFER
-  | HT_BYTEADDRESSBUFFER
-  | HT_CBUFFER
-  | HT_COLUMN_MAJOR
-  | HT_COMPILE
-  | HT_COMPILE_FRAGMENT
-  | HT_COMPILESHADER
-  | HT_COMPUTESHADER
-  | HT_CONSUMESTRUCTUREDBUFFER
-  | HT_DEPTHSTENCILSTATE
-  | HT_DEPTHSTENCILVIEW
-  | HT_DOMAINSHADER
-  | HT_DWORD
-  | HT_EXTERN
-  | HT_FALSE
-  | HT_FXGROUP
-  | HT_GEOMETRYSHADER
-  | HT_GROUPSHARED
-  | HT_HALF
-  | HT_HULLSHADER
-  | HT_INLINE
-  | HT_INPUTPATCH
-  | HT_INTERFACE
-  | HT_LINE
-  | HT_LINEADJ
-  | HT_LINEAR
-  | HT_LINESTREAM
-  | HT_MATRIX
-  | HT_NAMESPACE
-  | HT_NOINTERPOLATION
-  | HT_NULL
-  | HT_OUTPUTPATCH
-  | HT_PACKOFFSET
-  | HT_PASS
-  | HT_PIXELFRAGMENT
-  | HT_PIXELSHADER
-  | HT_POINT
-  | HT_POINTSTREAM
-  | HT_PRECISE
-  | HT_RASTERIZERSTATE
-  | HT_RENDERTARGETVIEW
-  | HT_REGISTER
-  | HT_ROW_MAJOR
-  | HT_RWBUFFER
-  | HT_RWBYTEADDRESSBUFFER
-  | HT_RWSTRUCTUREDBUFFER
-  | HT_RWTEXTURE1D
-  | HT_RWTEXTURE1DARRAY
-  | HT_RWTEXTURE2D
-  | HT_RWTEXTURE2DARRAY
-  | HT_RWTEXTURE3D
-  | HT_SAMPLER
-  | HT_SAMPLER_STATE
-  | HT_SAMPLERSTATE
-  | HT_SAMPLERCOMPARISONSTATE
-  | HT_SHARED
-  | HT_SNORM
-  | HT_STATEBLOCK
-  | HT_STATEBLOCK_STATE
-  | HT_STATIC
-  | HT_STRING
-  | HT_STRUCTUREDBUFFER
-  | HT_TBUFFER
-  | HT_TECHNIQUE
-  | HT_TECHNIQUE10
-  | HT_TECHNIQUE11XZ
-  | HT_TEXTURE
-  | HT_TEXTURE1D
-  | HT_TEXTURE1DARRAY
-  | HT_TEXTURE2D
-  | HT_TEXTURE2DARRAY
-  | HT_TEXTURE2DMS
-  | HT_TEXTURE2DMSARRAY
-  | HT_TEXTURE3D
-  | HT_TEXTURECUBE
-  | HT_TEXTURECUBEARRAY
-  | HT_TRUE
-  | HT_TYPEDEF
-  | HT_TRIANGLE
-  | HT_TRIANGLEADJ
-  | HT_TRIANGLESTREAM
-  | HT_UNORM
-  | HT_VECTOR
-  | HT_VERTEXFRAGMENT
-  | HT_VERTEXSHADER
-  | HT_VOLATILE
-    ;
-
-group_hlsl_type:
-    HT_BOOL1
-  | HT_BOOL1x1
-  | HT_BOOL2x1
-  | HT_BOOL3x1
-  | HT_BOOL4x1
-  | HT_BOOL2
-  | HT_BOOL1x2
-  | HT_BOOL2x2
-  | HT_BOOL3x2
-  | HT_BOOL4x2
-  | HT_BOOL3
-  | HT_BOOL1x3
-  | HT_BOOL2x3
-  | HT_BOOL3x3
-  | HT_BOOL4x3
-  | HT_BOOL4
-  | HT_BOOL1x4
-  | HT_BOOL2x4
-  | HT_BOOL3x4
-  | HT_BOOL4x4
-  | HT_FLOAT1
-  | HT_FLOAT1x1
-  | HT_FLOAT2x1
-  | HT_FLOAT3x1
-  | HT_FLOAT4x1
-  | HT_FLOAT2
-  | HT_FLOAT1x2
-  | HT_FLOAT2x2
-  | HT_FLOAT3x2
-  | HT_FLOAT4x2
-  | HT_FLOAT3
-  | HT_FLOAT1x3
-  | HT_FLOAT2x3
-  | HT_FLOAT3x3
-  | HT_FLOAT4x3
-  | HT_FLOAT4
-  | HT_FLOAT1x4
-  | HT_FLOAT2x4
-  | HT_FLOAT3x4
-  | HT_FLOAT4x4
-  | HT_DOUBLE1
-  | HT_DOUBLE1x1
-  | HT_DOUBLE2x1
-  | HT_DOUBLE3x1
-  | HT_DOUBLE4x1
-  | HT_DOUBLE2
-  | HT_DOUBLE1x2
-  | HT_DOUBLE2x2
-  | HT_DOUBLE3x2
-  | HT_DOUBLE4x2
-  | HT_DOUBLE3
-  | HT_DOUBLE1x3
-  | HT_DOUBLE2x3
-  | HT_DOUBLE3x3
-  | HT_DOUBLE4x3
-  | HT_DOUBLE4
-  | HT_DOUBLE1x4
-  | HT_DOUBLE2x4
-  | HT_DOUBLE3x4
-  | HT_DOUBLE4x4
-  | HT_DWORD1
-  | HT_DWORD1x1
-  | HT_DWORD2x1
-  | HT_DWORD3x1
-  | HT_DWORD4x1
-  | HT_DWORD2
-  | HT_DWORD1x2
-  | HT_DWORD2x2
-  | HT_DWORD3x2
-  | HT_DWORD4x2
-  | HT_DWORD3
-  | HT_DWORD1x3
-  | HT_DWORD2x3
-  | HT_DWORD3x3
-  | HT_DWORD4x3
-  | HT_DWORD4
-  | HT_DWORD1x4
-  | HT_DWORD2x4
-  | HT_DWORD3x4
-  | HT_DWORD4x4
-  | HT_INT1
-  | HT_INT1x1
-  | HT_INT2x1
-  | HT_INT3x1
-  | HT_INT4x1
-  | HT_INT2
-  | HT_INT1x2
-  | HT_INT2x2
-  | HT_INT3x2
-  | HT_INT4x2
-  | HT_INT3
-  | HT_INT1x3
-  | HT_INT2x3
-  | HT_INT3x3
-  | HT_INT4x3
-  | HT_INT4
-  | HT_INT1x4
-  | HT_INT2x4
-  | HT_INT3x4
-  | HT_INT4x4
-  | HT_UINT1
-  | HT_UINT1x1
-  | HT_UINT2x1
-  | HT_UINT3x1
-  | HT_UINT4x1
-  | HT_UINT2
-  | HT_UINT1x2
-  | HT_UINT2x2
-  | HT_UINT3x2
-  | HT_UINT4x2
-  | HT_UINT3
-  | HT_UINT1x3
-  | HT_UINT2x3
-  | HT_UINT3x3
-  | HT_UINT4x3
-  | HT_UINT4
-  | HT_UINT1x4
-  | HT_UINT2x4
-  | HT_UINT3x4
-  | HT_UINT4x4
-    ;
-
-group_hlsl_preprocessor:
-    PREPROCESSOR_DEFINE
-  | PREPROCESSOR_ELIF
-  | PREPROCESSOR_ELSE
-  | PREPROCESSOR_ENDIF
-  | PREPROCESSOR_ERROR
-  | PREPROCESSOR_IF
-  | PREPROCESSOR_IFDEF
-  | PREPROCESSOR_IFNDEF
-  | PREPROCESSOR_INCLUDE
-  | PREPROCESSOR_LINE
-  | PREPROCESSOR_PRAGMA
-  | PREPROCESSOR_UNDEF
-  | PREPROCESSOR_REGION
-    ;
-
-group_hlsl_reserved:
-    HT_AUTO
-  | HT_CATCH
-  | HT_CHAR
-  | HT_CLASS
-  | HT_CONST_CAST
-  | HT_DELETE
-  | HT_DYNAMIC_CAST
-  | HT_ENUM
-  | HT_EXPLICIT
-  | HT_FRIEND
-  | HT_GOTO
-  | HT_LONG
-  | HT_MUTABLE
-  | HT_NEW
-  | HT_OPERATOR
-  | HT_PRIVATE
-  | HT_PROTECTED
-  | HT_PUBLIC
-  | HT_REINTERPRET_CAST
-  | HT_SHORT
-  | HT_SIGNED
-  | HT_SIZEOF
-  | HT_STATIC_CAST
-  | HT_TEMPLATE
-  | HT_THIS
-  | HT_THROW
-  | HT_TRY
-  | HT_TYPENAME
-  | HT_UNION
-  | HT_UNSIGNED
-  | HT_USING
-  | HT_VIRTUAL
-    ;
-
-group_language_symbols:
-    T_INC
-  | T_DEC
-  | T_LE
-  | T_GE
-  | T_EQ
-  | T_NE
-  | T_LEFT
-  | T_RIGHT
-  | T_AND
-  | T_OR
-  | T_XOR
-  | T_MULEQ
-  | T_DIVEQ
-  | T_MODEQ
-  | T_ADDEQ
-  | T_SUBEQ
-  | T_LEFTEQ
-  | T_RIGHTEQ
-  | T_ANDEQ
-  | T_XOREQ
-  | T_OREQ
-    ;
-
- /*
-  * Grammar for LolFx files
-  */
-
-lolfx_file:
-    lolfx_section_list
-    T_END
-    ;
-
-lolfx_section_list:
-    lolfx_section
-  | lolfx_section lolfx_section_list
-    ;
-
-lolfx_section:
-    lolfx_technique
-  | lolfx_shader
-    ;
-
- /*
-  * Grammar for techniques
-  */
-
-lolfx_technique:
-    HT_TECHNIQUE lolfx_identifier '{' pass_list '}' { std::cout << "New tech " << std::endl; }
-    ;
-
- /*
-  * The valid LolFx identifiers
-  */
-
-lolfx_identifier:
-    IDENTIFIER     { std::cout << "New name " << $1 << std::endl; }
-  | FIELDSELECTION { std::cout << "New name " << $1 << std::endl; }
-    ;
-
- /*
-  * Grammar for passes
-  */
-
-pass_list:
-    pass
-  | pass pass_list
-    ;
-
-pass:
-    HT_PASS lolfx_identifier '{' pass_stmt_list '}' { std::cout << "New pass " << std::endl; }
-    ;
-
-pass_stmt_list:
-    pass_stmt
-  | pass_stmt pass_stmt_list
-    ;
-
- /* Shitty shit */
-pass_stmt:
-    ';'
-  | IDENTIFIER '=' IDENTIFIER ';'
-  | IDENTIFIER '=' INTCONSTANT ';'
-  | IDENTIFIER '=' BOOLCONSTANT ';'
-  | IDENTIFIER '=' HT_FALSE ';'
-  | IDENTIFIER '=' HT_TRUE ';'
-  | IDENTIFIER '[' INTCONSTANT ']' '=' IDENTIFIER ';'
-  | IDENTIFIER '[' INTCONSTANT ']' '=' INTCONSTANT ';'
-  | HT_TEXTURE '[' INTCONSTANT ']' '=' IDENTIFIER ';'
-  | HT_TEXTURE '[' INTCONSTANT ']' '=' HT_NULL ';'
-  | HT_DOMAINSHADER '=' IDENTIFIER ';'
-  | HT_GEOMETRYSHADER '=' IDENTIFIER ';'
-  | HT_HULLSHADER '=' IDENTIFIER ';'
-  | HT_PIXELSHADER '=' IDENTIFIER ';'
-  | HT_VERTEXSHADER '=' IDENTIFIER ';'
-    ;
-
- /*
-  * Grammar for shaders
-  */
-
-lolfx_shader:
-    lolfx_shader_declaration glsl_translation_unit
-    ;
-
-lolfx_shader_declaration:
-    '[' lolfx_shader_name_list ']' { std::cout << "new shader" << std::endl; }
-    ;
-
-lolfx_shader_name_list:
-    lolfx_shader_name '.' lolfx_shader_name_list
-  | lolfx_shader_name
-    ;
-
-lolfx_shader_name:
-    lolfx_identifier
-    ;
-
- /*
-  * Grammar for GLSL
-  */
-
-glsl_variable_identifier:
-    lolfx_identifier
-    ;
-
-glsl_primary_expression:
-    glsl_variable_identifier
-  | INTCONSTANT
-  | UINTCONSTANT
-  | FLOATCONSTANT
-  | BOOLCONSTANT
-  | '(' glsl_expression ')'
-    ;
-
-glsl_postfix_expression:
-    glsl_primary_expression
-  | glsl_postfix_expression '[' glsl_integer_expression ']'
-  | glsl_function_call
-  | glsl_postfix_expression '.' FIELDSELECTION
-  | glsl_postfix_expression T_INC
-  | glsl_postfix_expression T_DEC
-    ;
-
-glsl_integer_expression:
-    glsl_expression
-    ;
-
-glsl_function_call:
-    glsl_function_call_or_method
-    ;
-
-glsl_function_call_or_method:
-    glsl_function_call_generic
-  | glsl_postfix_expression '.' glsl_function_call_generic
-    ;
-
-glsl_function_call_generic:
-    glsl_function_call_header_with_parameters ')'
-  | glsl_function_call_header_no_parameters ')'
-    ;
-
-glsl_function_call_header_no_parameters:
-    glsl_function_call_header GHT_VOID
-  | glsl_function_call_header
-    ;
-
-glsl_function_call_header_with_parameters:
-    glsl_function_call_header glsl_assignment_expression
-  | glsl_function_call_header_with_parameters ',' glsl_assignment_expression
-    ;
-
-glsl_function_call_header:
-    glsl_function_identifier '('
-    ;
-
-glsl_function_identifier:
-    glsl_type_specifier
-  | IDENTIFIER
-  | FIELDSELECTION
-    ;
-
-glsl_unary_expression:
-    glsl_postfix_expression
-  | T_INC glsl_unary_expression
-  | T_DEC glsl_unary_expression
-  | glsl_unary_operator glsl_unary_expression
-    ;
-
-glsl_unary_operator:
-    '+'
-  | '-'
-  | '!'
-  | '~'
-    ;
-
-glsl_multiplicative_expression:
-    glsl_unary_expression
-  | glsl_multiplicative_expression '*' glsl_unary_expression
-  | glsl_multiplicative_expression '/' glsl_unary_expression
-  | glsl_multiplicative_expression '%' glsl_unary_expression
-    ;
-
-glsl_additive_expression:
-    glsl_multiplicative_expression
-  | glsl_additive_expression '+' glsl_multiplicative_expression
-  | glsl_additive_expression '-' glsl_multiplicative_expression
-    ;
-
-glsl_shift_expression:
-    glsl_additive_expression
-  | glsl_shift_expression T_LEFT glsl_additive_expression
-  | glsl_shift_expression T_RIGHT glsl_additive_expression
-    ;
-
-glsl_relational_expression:
-    glsl_shift_expression
-  | glsl_relational_expression '<' glsl_shift_expression
-  | glsl_relational_expression '>' glsl_shift_expression
-  | glsl_relational_expression T_LE glsl_shift_expression
-  | glsl_relational_expression T_GE glsl_shift_expression
-    ;
-
-glsl_equality_expression:
-    glsl_relational_expression
-  | glsl_equality_expression T_EQ glsl_relational_expression
-  | glsl_equality_expression T_NE glsl_relational_expression
-    ;
-
-glsl_and_expression:
-    glsl_equality_expression
-  | glsl_and_expression '&' glsl_equality_expression
-    ;
-
-glsl_exclusive_or_expression:
-    glsl_and_expression
-  | glsl_exclusive_or_expression '^' glsl_and_expression
-    ;
-
-glsl_inclusive_or_expression:
-    glsl_exclusive_or_expression
-  | glsl_inclusive_or_expression '|' glsl_exclusive_or_expression
-    ;
-
-glsl_logical_and_expression:
-    glsl_inclusive_or_expression
-  | glsl_logical_and_expression T_AND glsl_inclusive_or_expression
-    ;
-
-glsl_logical_xor_expression:
-    glsl_logical_and_expression
-  | glsl_logical_xor_expression T_XOR glsl_logical_and_expression
-    ;
-
-glsl_logical_or_expression:
-    glsl_logical_xor_expression
-  | glsl_logical_or_expression T_OR glsl_logical_xor_expression
-    ;
-
-glsl_conditional_expression:
-    glsl_logical_or_expression
-  | glsl_logical_or_expression '?' glsl_expression ':' glsl_assignment_expression
-    ;
-
-glsl_assignment_expression:
-    glsl_conditional_expression
-  | glsl_unary_expression glsl_assignment_operator glsl_assignment_expression
-    ;
-
-glsl_assignment_operator:
-    '='
-  | T_MULEQ
-  | T_DIVEQ
-  | T_MODEQ
-  | T_ADDEQ
-  | T_SUBEQ
-  | T_LEFTEQ
-  | T_RIGHTEQ
-  | T_ANDEQ
-  | T_XOREQ
-  | T_OREQ
-    ;
-
-glsl_expression:
-    glsl_assignment_expression
-  | glsl_expression ',' glsl_assignment_expression
-    ;
-
-glsl_constant_expression:
-    glsl_conditional_expression
-    ;
-
-glsl_declaration:
-    glsl_function_prototype ';'
-  | glsl_init_declarator_list ';'
-  | GT_PRECISION glsl_precision_qualifier glsl_type_specifier_no_prec ';'
-  | glsl_type_qualifier lolfx_identifier '{' glsl_struct_declaration_list '}' ';'
-  | glsl_type_qualifier lolfx_identifier '{' glsl_struct_declaration_list '}' lolfx_identifier ';'
-  | glsl_type_qualifier lolfx_identifier '{' glsl_struct_declaration_list '}' lolfx_identifier '[' ']' ';'
-  | glsl_type_qualifier lolfx_identifier '{' glsl_struct_declaration_list '}' lolfx_identifier '[' glsl_constant_expression ']' ';'
-  | glsl_type_qualifier ';'
-    ;
-
-glsl_function_prototype:
-    glsl_function_declarator ')'
-    ;
-
-glsl_function_declarator:
-    glsl_function_header
-  | glsl_function_header_with_parameters
-    ;
-
-glsl_function_header_with_parameters:
-    glsl_function_header lolfx_parameter_declaration
-  | glsl_function_header_with_parameters ',' lolfx_parameter_declaration
-    ;
-
-glsl_function_header:
-    glsl_fully_specified_type lolfx_identifier '('
-    ;
-
-glsl_parameter_declarator:
-    glsl_type_specifier lolfx_identifier
-  | glsl_type_specifier lolfx_identifier '[' glsl_constant_expression ']'
-    ;
-
-lolfx_parameter_declaration:
-    glsl_parameter_declaration ':' lolfx_identifier /* HLSL only */
-  | glsl_parameter_declaration
-    ;
-
-glsl_parameter_declaration:
-    glsl_parameter_type_qualifier lolfx_parameter_qualifier glsl_parameter_declarator
-  | lolfx_parameter_qualifier glsl_parameter_declarator
-  | glsl_parameter_type_qualifier lolfx_parameter_qualifier glsl_parameter_type_specifier
-  | lolfx_parameter_qualifier glsl_parameter_type_specifier
-    ;
-
-lolfx_parameter_qualifier:
-    glsl_parameter_qualifier
-  | GHT_UNIFORM /* HLSL only */
-    ;
-
-glsl_parameter_qualifier:
-    /* empty */
-  | GHT_IN
-  | GHT_OUT
-  | GHT_INOUT
-  | GT_ATTRIBUTE /* deprecated */
-  | GT_VARYING /* deprecated */
-    ;
-
-glsl_parameter_type_specifier:
-    glsl_type_specifier
-    ;
-
-glsl_init_declarator_list:
-    glsl_single_declaration
-  | glsl_init_declarator_list ',' lolfx_identifier
-  | glsl_init_declarator_list ',' lolfx_identifier '[' ']'
-  | glsl_init_declarator_list ',' lolfx_identifier '[' glsl_constant_expression ']'
-  | glsl_init_declarator_list ',' lolfx_identifier '[' ']' '=' glsl_initializer
-  | glsl_init_declarator_list ',' lolfx_identifier '[' glsl_constant_expression ']' '=' glsl_initializer
-  | glsl_init_declarator_list ',' lolfx_identifier '=' glsl_initializer
-    ;
-
-glsl_single_declaration:
-    glsl_fully_specified_type
-  | glsl_fully_specified_type lolfx_identifier
-  | glsl_fully_specified_type lolfx_identifier '[' ']'
-  | glsl_fully_specified_type lolfx_identifier '[' glsl_constant_expression ']'
-  | glsl_fully_specified_type lolfx_identifier '[' ']' '=' glsl_initializer
-  | glsl_fully_specified_type lolfx_identifier '[' glsl_constant_expression ']' '=' glsl_initializer
-  | glsl_fully_specified_type lolfx_identifier '=' glsl_initializer
-  | GT_INVARIANT lolfx_identifier
-    ;
-
-glsl_fully_specified_type:
-    glsl_type_specifier
-  | glsl_type_qualifier glsl_type_specifier
-    ;
-
-glsl_invariant_qualifier:
-    GT_INVARIANT
-    ;
-
-glsl_interpolation_qualifier:
-    GT_SMOOTH
-  | GT_FLAT
-  | GHT_NOPERSPECTIVE
-    ;
-
-glsl_layout_qualifier:
-    GT_LAYOUT '(' glsl_layout_qualifier_id_list ')'
-    ;
-
-glsl_layout_qualifier_id_list:
-    glsl_layout_qualifier_id
-  | glsl_layout_qualifier_id_list ',' glsl_layout_qualifier_id
-    ;
-
-glsl_layout_qualifier_id:
-    lolfx_identifier
-  | lolfx_identifier '=' INTCONSTANT
-    ;
-
-glsl_parameter_type_qualifier:
-    GHT_CONST
-    ;
-
-glsl_type_qualifier:
-    glsl_storage_qualifier
-  | glsl_layout_qualifier
-  | glsl_layout_qualifier glsl_storage_qualifier
-  | glsl_interpolation_qualifier glsl_storage_qualifier
-  | glsl_interpolation_qualifier
-  | glsl_invariant_qualifier glsl_storage_qualifier
-  | glsl_invariant_qualifier glsl_interpolation_qualifier glsl_storage_qualifier
-  | glsl_invariant_qualifier
-    ;
-
-glsl_storage_qualifier:
-    GHT_CONST
-  | GHT_IN
-  | GHT_OUT
-  | GHT_CENTROID GHT_IN
-  | GHT_CENTROID GHT_OUT
-  | GT_PATCH GHT_IN
-  | GT_PATCH GHT_OUT
-  | GT_SAMPLE GHT_IN
-  | GT_SAMPLE GHT_OUT
-  | GHT_UNIFORM
-  | GT_ATTRIBUTE /* deprecated */
-  | GT_VARYING /* deprecated */
-    ;
-
-glsl_type_specifier:
-    glsl_type_specifier_no_prec
-  | glsl_precision_qualifier glsl_type_specifier_no_prec
-    ;
-
-glsl_type_specifier_no_prec:
-    lolfx_type_specifier_nonarray
-  | lolfx_type_specifier_nonarray '[' ']'
-  | lolfx_type_specifier_nonarray '[' glsl_constant_expression ']'
-
-lolfx_type_specifier_nonarray:
-    glsl_type_specifier_nonarray
-  | group_hlsl_type /* HLSL only */
-    ;
-
-glsl_type_specifier_nonarray:
-    GHT_VOID
-  | GHT_FLOAT
-  | GHT_DOUBLE
-  | GHT_INT
-  | GHT_UINT
-  | GHT_BOOL
-  | group_glsl_type
-  | GHT_SAMPLER1D
-  | GHT_SAMPLER2D
-  | GHT_SAMPLER3D
-  | GHT_SAMPLERCUBE
-  | glsl_struct_specifier
-  | TYPENAME
-    ;
-
-glsl_precision_qualifier:
-    GT_HIGHP
-  | GT_MEDIUMP
-  | GT_LOWP
-    ;
-
-glsl_struct_specifier:
-    GHT_STRUCT lolfx_identifier '{' glsl_struct_declaration_list '}'
-  | GHT_STRUCT '{' glsl_struct_declaration_list '}'
-    ;
-
-glsl_struct_declaration_list:
-    glsl_struct_declaration
-  | glsl_struct_declaration_list glsl_struct_declaration
-    ;
-
-glsl_struct_declaration:
-    glsl_type_specifier glsl_struct_declarator_list ';'
-  | glsl_type_qualifier glsl_type_specifier glsl_struct_declarator_list ';'
-    ;
-
-glsl_struct_declarator_list:
-    glsl_struct_declarator
-  | glsl_struct_declarator_list ',' glsl_struct_declarator
-    ;
-
-glsl_struct_declarator:
-    lolfx_identifier
-  | lolfx_identifier '[' ']'
-  | lolfx_identifier '[' glsl_constant_expression ']'
-    ;
-
-glsl_initializer:
-    glsl_assignment_expression
-    ;
-
-glsl_declaration_statement:
-    glsl_declaration
-    ;
-
-glsl_statement:
-    glsl_compound_statement
-  | glsl_simple_statement
-    ;
-
-glsl_simple_statement:
-    glsl_declaration_statement
-  | glsl_expression_statement
-  | glsl_selection_statement
-  | glsl_switch_statement
-  | glsl_case_label
-  | glsl_iteration_statement
-  | glsl_jump_statement
-    ;
-
-glsl_compound_statement:
-    '{' '}'
-  | '{' glsl_statement_list '}'
-    ;
-
-glsl_statement_no_new_scope:
-    glsl_compound_statement_no_new_scope
-  | glsl_simple_statement
-    ;
-
-glsl_compound_statement_no_new_scope:
-    '{' '}'
-  | '{' glsl_statement_list '}'
-    ;
-
-glsl_statement_list:
-    glsl_statement
-  | glsl_statement_list glsl_statement
-    ;
-
-glsl_expression_statement:
-    ';'
-  | glsl_expression ';'
-    ;
-
-glsl_selection_statement:
-    GHT_IF '(' glsl_expression ')' glsl_selection_rest_statement
-    ;
-
-glsl_selection_rest_statement:
-    glsl_statement GHT_ELSE glsl_statement
-  | glsl_statement
-    ;
-
-glsl_condition:
-    glsl_expression
-  | glsl_fully_specified_type lolfx_identifier '=' glsl_initializer
-    ;
-
-glsl_switch_statement:
-    GHT_SWITCH '(' glsl_expression ')' '{' glsl_switch_statement_list '}'
-    ;
-
-glsl_switch_statement_list:
-    /* nothing */
-  | glsl_statement_list
-    ;
-
-glsl_case_label:
-    GHT_CASE glsl_expression ':'
-  | GHT_DEFAULT ':'
-    ;
-
-glsl_iteration_statement:
-    GHT_WHILE '(' glsl_condition ')' glsl_statement_no_new_scope
-  | GHT_DO glsl_statement GHT_WHILE '(' glsl_expression ')' ';'
-  | GHT_FOR '(' glsl_for_init_statement glsl_for_rest_statement ')' glsl_statement_no_new_scope
-    ;
-
-glsl_for_init_statement:
-    glsl_expression_statement
-  | glsl_declaration_statement
-    ;
-
-glsl_conditionopt:
-    glsl_condition
-  | /* empty */
-    ;
-
-glsl_for_rest_statement:
-    glsl_conditionopt ';'
-  | glsl_conditionopt ';' glsl_expression
-    ;
-
-glsl_jump_statement:
-    GHT_CONTINUE ';'
-  | GHT_BREAK ';'
-  | GHT_RETURN ';'
-  | GHT_RETURN glsl_expression ';'
-  | GHT_DISCARD ';'
-    ;
-
-glsl_translation_unit:
-    glsl_external_declaration
-  | glsl_translation_unit glsl_external_declaration
-    ;
-
-glsl_external_declaration:
-    glsl_function_definition
-  | glsl_declaration
-    ;
-
-glsl_function_definition:
-    glsl_function_prototype glsl_compound_statement_no_new_scope
-    ;
-
-%%
-
-void lol::LolFxParser::error(const LolFxParser::location_type& l,
-                             const std::string& m)
-{
-    mc.Error(l, m);
-}
-
diff --git a/doc/grammar/lolfx-scanner.l b/doc/grammar/lolfx-scanner.l
deleted file mode 100644
index a88b2f2d..00000000
--- a/doc/grammar/lolfx-scanner.l
+++ /dev/null
@@ -1,799 +0,0 @@
-%{
-//
-//  Lol Engine
-//
-//  Copyright © 2012—2018 Sam Hocevar <sam@hocevar.net>
-//
-//  Lol Engine is free software. It comes without any warranty, to
-//  the extent permitted by applicable law. You can redistribute it
-//  and/or modify it under the terms of the Do What the Fuck You Want
-//  to Public License, Version 2, as published by the WTFPL Task Force.
-//  See http://www.wtfpl.net/ for more details.
-//
-
-#if defined HAVE_CONFIG_H
-#   include "config.h"
-#endif
-
-#include <cstdlib>
-using std::exit;
-using std::malloc;
-using std::realloc;
-using std::free;
-#include <iostream>
-#include <map>
-
-#include "core.h"
-#include "gpu/lolfx-compiler.h"
-
-typedef lol::LolFxParser::token token;
-typedef lol::LolFxParser::token_type token_type;
-
-#ifndef YY_DECL
-#   define YY_DECL lol::LolFxParser::token_type \
-        lol::LolFxScanner::lex(lol::LolFxParser::semantic_type* yylval, \
-                               lol::LolFxParser::location_type* yylloc)
-#endif
-
-#define yyterminate() return token::T_END
-#define YY_NO_UNISTD_H
-#define YY_USER_ACTION yylloc->columns(yyleng);
-%}
-
-%option c++ prefix="LolFx"
-%option batch yywrap nounput stack
-
-%x C_COMMENT
-%x CPP_COMMENT
-%x PREPROCESSOR_COMMENT
-
-%%
-
-%{
-    /* reset location at the beginning of yylex() */
-    yylloc->step();
-
-    int language_guess = INITIAL;
-    m_pp_stack.Push(BlockIsTrue);
-%}
-
- /*
-  * GLSL keywords
-  */
-
-"subroutine"                 { return token::GT_SUBROUTINE; }
-"patch"                      { return token::GT_PATCH; }
-"sample"                     { return token::GT_SAMPLE; }
-"flat"                       { return token::GT_FLAT; }
-"smooth"                     { return token::GT_SMOOTH; }
-"layout"                     { return token::GT_LAYOUT; }
-"sampler1dshadow"            { return token::GT_SAMPLER1DSHADOW; }
-"sampler2dshadow"            { return token::GT_SAMPLER2DSHADOW; }
-"samplercubeshadow"          { return token::GT_SAMPLERCUBESHADOW; }
-"sampler1darray"             { return token::GT_SAMPLER1DARRAY; }
-"sampler2darray"             { return token::GT_SAMPLER2DARRAY; }
-"sampler1darrayshadow"       { return token::GT_SAMPLER1DARRAYSHADOW; }
-"sampler2darrayshadow"       { return token::GT_SAMPLER2DARRAYSHADOW; }
-"isampler1d"                 { return token::GT_ISAMPLER1D; }
-"isampler2d"                 { return token::GT_ISAMPLER2D; }
-"isampler3d"                 { return token::GT_ISAMPLER3D; }
-"isamplercube"               { return token::GT_ISAMPLERCUBE; }
-"isampler1darray"            { return token::GT_ISAMPLER1DARRAY; }
-"isampler2darray"            { return token::GT_ISAMPLER2DARRAY; }
-"usampler1d"                 { return token::GT_USAMPLER1D; }
-"usampler2d"                 { return token::GT_USAMPLER2D; }
-"usampler3d"                 { return token::GT_USAMPLER3D; }
-"usamplercube"               { return token::GT_USAMPLERCUBE; }
-"usampler1darray"            { return token::GT_USAMPLER1DARRAY; }
-"usampler2darray"            { return token::GT_USAMPLER2DARRAY; }
-"sampler2drect"              { return token::GT_SAMPLER2DRECT; }
-"sampler2drectshadow"        { return token::GT_SAMPLER2DRECTSHADOW; }
-"isampler2drect"             { return token::GT_ISAMPLER2DRECT; }
-"usampler2drect"             { return token::GT_USAMPLER2DRECT; }
-"samplerbuffer"              { return token::GT_SAMPLERBUFFER; }
-"isamplerbuffer"             { return token::GT_ISAMPLERBUFFER; }
-"usamplerbuffer"             { return token::GT_USAMPLERBUFFER; }
-"samplercubearray"           { return token::GT_SAMPLERCUBEARRAY; }
-"samplercubearrayshadow"     { return token::GT_SAMPLERCUBEARRAYSHADOW; }
-"isamplercubearray"          { return token::GT_ISAMPLERCUBEARRAY; }
-"usamplercubearray"          { return token::GT_USAMPLERCUBEARRAY; }
-"sampler2dms"                { return token::GT_SAMPLER2DMS; }
-"isampler2dms"               { return token::GT_ISAMPLER2DMS; }
-"usampler2dms"               { return token::GT_USAMPLER2DMS; }
-"sampler2dmsarray"           { return token::GT_SAMPLER2DMSARRAY; }
-"isampler2dmsarray"          { return token::GT_ISAMPLER2DMSARRAY; }
-"usampler2dmsarray"          { return token::GT_USAMPLER2DMSARRAY; }
-
-"highp"                      { return token::GT_HIGHP; }
-"mediump"                    { return token::GT_MEDIUMP; }
-"lowp"                       { return token::GT_LOWP; }
-"precision"                  { return token::GT_PRECISION; }
-"invariant"                  { return token::GT_INVARIANT; }
-
- /*
-  * Deprecated GLSL keywords
-  */
-
-"attribute"                  { return token::GT_ATTRIBUTE; }
-"varying"                    { return token::GT_VARYING; }
-
- /*
-  * GLSL vector types
-  */
-
-"bvec2"                      { return token::GT_BVEC2; }
-"bvec3"                      { return token::GT_BVEC3; }
-"bvec4"                      { return token::GT_BVEC4; }
-
-"ivec2"                      { return token::GT_IVEC2; }
-"ivec3"                      { return token::GT_IVEC3; }
-"ivec4"                      { return token::GT_IVEC4; }
-
-"uvec2"                      { return token::GT_UVEC2; }
-"uvec3"                      { return token::GT_UVEC3; }
-"uvec4"                      { return token::GT_UVEC4; }
-
-"vec2"                       { return token::GT_VEC2; }
-"vec3"                       { return token::GT_VEC3; }
-"vec4"                       { return token::GT_VEC4; }
-"mat2"                       { return token::GT_MAT2; }
-"mat2x2"                     { return token::GT_MAT2X2; }
-"mat2x3"                     { return token::GT_MAT2X3; }
-"mat2x4"                     { return token::GT_MAT2X4; }
-"mat3"                       { return token::GT_MAT3; }
-"mat3x2"                     { return token::GT_MAT3X2; }
-"mat3x3"                     { return token::GT_MAT3X3; }
-"mat3x4"                     { return token::GT_MAT3X4; }
-"mat4"                       { return token::GT_MAT4; }
-"mat4x2"                     { return token::GT_MAT4X2; }
-"mat4x3"                     { return token::GT_MAT4X3; }
-"mat4x4"                     { return token::GT_MAT4X4; }
-
-"dvec2"                      { return token::GT_DVEC2; }
-"dvec3"                      { return token::GT_DVEC3; }
-"dvec4"                      { return token::GT_DVEC4; }
-"dmat2"                      { return token::GT_DMAT2; }
-"dmat2x2"                    { return token::GT_DMAT2X2; }
-"dmat2x3"                    { return token::GT_DMAT2X3; }
-"dmat2x4"                    { return token::GT_DMAT2X4; }
-"dmat3"                      { return token::GT_DMAT3; }
-"dmat3x2"                    { return token::GT_DMAT3X2; }
-"dmat3x3"                    { return token::GT_DMAT3X3; }
-"dmat3x4"                    { return token::GT_DMAT3X4; }
-"dmat4"                      { return token::GT_DMAT4; }
-"dmat4x2"                    { return token::GT_DMAT4X2; }
-"dmat4x3"                    { return token::GT_DMAT4X3; }
-"dmat4x4"                    { return token::GT_DMAT4X4; }
-
- /*
-  * GLSL constant values
-  */
-
-"true"                       { yylval->ival = 1; return token::BOOLCONSTANT; }
-"false"                      { yylval->ival = 0; return token::BOOLCONSTANT; }
-
- /*
-  * GLSL keywords that are also valid or reserved in HLSL
-  * and HLSL keywords that are also valid or reserved in GLSL.
-  */
-
-"bool"                       { return token::GHT_BOOL; }
-"break"                      { return token::GHT_BREAK; }
-"case"                       { return token::GHT_CASE; }
-"centroid"                   { return token::GHT_CENTROID; }
-"const"                      { return token::GHT_CONST; }
-"continue"                   { return token::GHT_CONTINUE; }
-"default"                    { return token::GHT_DEFAULT; }
-"discard"                    { return token::GHT_DISCARD; }
-"do"                         { return token::GHT_DO; }
-"double"                     { return token::GHT_DOUBLE; }
-"else"                       { return token::GHT_ELSE; }
-"float"                      { return token::GHT_FLOAT; }
-"for"                        { return token::GHT_FOR; }
-"if"                         { return token::GHT_IF; }
-"in"                         { return token::GHT_IN; }
-"inout"                      { return token::GHT_INOUT; }
-"int"                        { return token::GHT_INT; }
-"noperspective"              { return token::GHT_NOPERSPECTIVE; }
-"out"                        { return token::GHT_OUT; }
-"return"                     { return token::GHT_RETURN; }
-"sampler1d"                  { return token::GHT_SAMPLER1D; }
-"sampler2d"                  { return token::GHT_SAMPLER2D; }
-"sampler3d"                  { return token::GHT_SAMPLER3D; }
-"samplercube"                { return token::GHT_SAMPLERCUBE; }
-"struct"                     { return token::GHT_STRUCT; }
-"switch"                     { return token::GHT_SWITCH; }
-"uint"                       { return token::GHT_UINT; }
-"uniform"                    { return token::GHT_UNIFORM; }
-"void"                       { return token::GHT_VOID; }
-"while"                      { return token::GHT_WHILE; }
-
-(?i:bool)                    { return token::HGT_BOOL; }
-(?i:break)                   { return token::HGT_BREAK; }
-(?i:case)                    { return token::HGT_CASE; }
-(?i:centroid)                { return token::HGT_CENTROID; }
-(?i:const)                   { return token::HGT_CONST; }
-(?i:continue)                { return token::HGT_CONTINUE; }
-(?i:default)                 { return token::HGT_DEFAULT; }
-(?i:discard)                 { return token::HGT_DISCARD; }
-(?i:do)                      { return token::HGT_DO; }
-(?i:double)                  { return token::HGT_DOUBLE; }
-(?i:else)                    { return token::HGT_ELSE; }
-(?i:float)                   { return token::HGT_FLOAT; }
-(?i:for)                     { return token::HGT_FOR; }
-(?i:if)                      { return token::HGT_IF; }
-(?i:in)                      { return token::HGT_IN; }
-(?i:inout)                   { return token::HGT_INOUT; }
-(?i:int)                     { return token::HGT_INT; }
-(?i:noperspective)           { return token::HGT_NOPERSPECTIVE; }
-(?i:out)                     { return token::HGT_OUT; }
-(?i:return)                  { return token::HGT_RETURN; }
-(?i:sampler1d)               { return token::HGT_SAMPLER1D; }
-(?i:sampler2d)               { return token::HGT_SAMPLER2D; }
-(?i:sampler3d)               { return token::HGT_SAMPLER3D; }
-(?i:samplercube)             { return token::HGT_SAMPLERCUBE; }
-(?i:struct)                  { return token::HGT_STRUCT; }
-(?i:switch)                  { return token::HGT_SWITCH; }
-(?i:uint)                    { return token::HGT_UINT; }
-(?i:uniform)                 { return token::HGT_UNIFORM; }
-(?i:void)                    { return token::HGT_VOID; }
-(?i:while)                   { return token::HGT_WHILE; }
-
- /*
-  * HLSL keywords
-  * Gathered from http://msdn.microsoft.com/en-us/library/windows/desktop/bb509568%28v=vs.85%29.aspx
-  */
-
-(?i:appendstructuredbuffer)  { return token::HT_APPENDSTRUCTUREDBUFFER; }
-(?i:asm)                     { return token::HT_ASM; }
-(?i:asm_fragment)            { return token::HT_ASM_FRAGMENT; }
-(?i:blendstate)              { return token::HT_BLENDSTATE; }
-(?i:buffer)                  { return token::HT_BUFFER; }
-(?i:byteaddressbuffer)       { return token::HT_BYTEADDRESSBUFFER; }
-(?i:cbuffer)                 { return token::HT_CBUFFER; }
-(?i:column_major)            { return token::HT_COLUMN_MAJOR; }
-(?i:compile)                 { return token::HT_COMPILE; }
-(?i:compile_fragment)        { return token::HT_COMPILE_FRAGMENT; }
-(?i:compileshader)           { return token::HT_COMPILESHADER; }
-(?i:computeshader)           { return token::HT_COMPUTESHADER; }
-(?i:consumestructuredbuffer) { return token::HT_CONSUMESTRUCTUREDBUFFER; }
-(?i:depthstencilstate)       { return token::HT_DEPTHSTENCILSTATE; }
-(?i:depthstencilview)        { return token::HT_DEPTHSTENCILVIEW; }
-(?i:domainshader)            { return token::HT_DOMAINSHADER; }
-(?i:dword)                   { return token::HT_DWORD; }
-(?i:extern)                  { return token::HT_EXTERN; }
-(?i:false)                   { return token::HT_FALSE; }
-(?i:fxgroup)                 { return token::HT_FXGROUP; }
-(?i:geometryshader)          { return token::HT_GEOMETRYSHADER; }
-(?i:groupshared)             { return token::HT_GROUPSHARED; }
-(?i:half)                    { return token::HT_HALF; }
-(?i:hullshader)              { return token::HT_HULLSHADER; }
-(?i:inline)                  { return token::HT_INLINE; }
-(?i:inputpatch)              { return token::HT_INPUTPATCH; }
-(?i:interface)               { return token::HT_INTERFACE; }
-(?i:line)                    { return token::HT_LINE; }
-(?i:lineadj)                 { return token::HT_LINEADJ; }
-(?i:linear)                  { return token::HT_LINEAR; }
-(?i:linestream)              { return token::HT_LINESTREAM; }
-(?i:matrix)                  { return token::HT_MATRIX; }
-(?i:namespace)               { return token::HT_NAMESPACE; }
-(?i:nointerpolation)         { return token::HT_NOINTERPOLATION; }
-(?i:null)                    { return token::HT_NULL; }
-(?i:outputpatch)             { return token::HT_OUTPUTPATCH; }
-(?i:packoffset)              { return token::HT_PACKOFFSET; }
-(?i:pass)                    { return token::HT_PASS; }
-(?i:pixelfragment)           { return token::HT_PIXELFRAGMENT; }
-(?i:pixelshader)             { return token::HT_PIXELSHADER; }
-(?i:point)                   { return token::HT_POINT; }
-(?i:pointstream)             { return token::HT_POINTSTREAM; }
-(?i:precise)                 { return token::HT_PRECISE; }
-(?i:rasterizerstate)         { return token::HT_RASTERIZERSTATE; }
-(?i:rendertargetview)        { return token::HT_RENDERTARGETVIEW; }
-(?i:register)                { return token::HT_REGISTER; }
-(?i:row_major)               { return token::HT_ROW_MAJOR; }
-(?i:rwbuffer)                { return token::HT_RWBUFFER; }
-(?i:rwbyteaddressbuffer)     { return token::HT_RWBYTEADDRESSBUFFER; }
-(?i:rwstructuredbuffer)      { return token::HT_RWSTRUCTUREDBUFFER; }
-(?i:rwtexture1d)             { return token::HT_RWTEXTURE1D; }
-(?i:rwtexture1darray)        { return token::HT_RWTEXTURE1DARRAY; }
-(?i:rwtexture2d)             { return token::HT_RWTEXTURE2D; }
-(?i:rwtexture2darray)        { return token::HT_RWTEXTURE2DARRAY; }
-(?i:rwtexture3d)             { return token::HT_RWTEXTURE3D; }
-(?i:sampler)                 { return token::HT_SAMPLER; }
-(?i:sampler_state)           { return token::HT_SAMPLER_STATE; }
-(?i:samplerstate)            { return token::HT_SAMPLERSTATE; }
-(?i:samplercomparisonstate)  { return token::HT_SAMPLERCOMPARISONSTATE; }
-(?i:shared)                  { return token::HT_SHARED; }
-(?i:snorm)                   { return token::HT_SNORM; }
-(?i:stateblock)              { return token::HT_STATEBLOCK; }
-(?i:stateblock_state)        { return token::HT_STATEBLOCK_STATE; }
-(?i:static)                  { return token::HT_STATIC; }
-(?i:string)                  { return token::HT_STRING; }
-(?i:structuredbuffer)        { return token::HT_STRUCTUREDBUFFER; }
-(?i:tbuffer)                 { return token::HT_TBUFFER; }
-(?i:technique)               { return token::HT_TECHNIQUE; }
-(?i:technique10)             { return token::HT_TECHNIQUE10; }
-(?i:technique11xz)           { return token::HT_TECHNIQUE11XZ; }
-"texture"                    { return token::HT_TEXTURE; }
-(?i:texture1d)               { return token::HT_TEXTURE1D; }
-(?i:texture1darray)          { return token::HT_TEXTURE1DARRAY; }
-(?i:texture2d)               { return token::HT_TEXTURE2D; }
-(?i:texture2darray)          { return token::HT_TEXTURE2DARRAY; }
-(?i:texture2dms)             { return token::HT_TEXTURE2DMS; }
-(?i:texture2dmsarray)        { return token::HT_TEXTURE2DMSARRAY; }
-(?i:texture3d)               { return token::HT_TEXTURE3D; }
-(?i:texturecube)             { return token::HT_TEXTURECUBE; }
-(?i:texturecubearray)        { return token::HT_TEXTURECUBEARRAY; }
-(?i:true)                    { return token::HT_TRUE; }
-(?i:typedef)                 { return token::HT_TYPEDEF; }
-(?i:triangle)                { return token::HT_TRIANGLE; }
-(?i:triangleadj)             { return token::HT_TRIANGLEADJ; }
-(?i:trianglestream)          { return token::HT_TRIANGLESTREAM; }
-(?i:unorm)                   { return token::HT_UNORM; }
-(?i:vector)                  { return token::HT_VECTOR; }
-(?i:vertexfragment)          { return token::HT_VERTEXFRAGMENT; }
-(?i:vertexshader)            { return token::HT_VERTEXSHADER; }
-(?i:volatile)                { return token::HT_VOLATILE; }
-
- /*
-  * HLSL vector types
-  * TODO: this can probably be factored somehow
-  */
-
-(?i:bool1)                   { return token::HT_BOOL1; }
-(?i:bool1x1)                 { return token::HT_BOOL1x1; }
-(?i:bool2x1)                 { return token::HT_BOOL2x1; }
-(?i:bool3x1)                 { return token::HT_BOOL3x1; }
-(?i:bool4x1)                 { return token::HT_BOOL4x1; }
-(?i:bool2)                   { return token::HT_BOOL2; }
-(?i:bool1x2)                 { return token::HT_BOOL1x2; }
-(?i:bool2x2)                 { return token::HT_BOOL2x2; }
-(?i:bool3x2)                 { return token::HT_BOOL3x2; }
-(?i:bool4x2)                 { return token::HT_BOOL4x2; }
-(?i:bool3)                   { return token::HT_BOOL3; }
-(?i:bool1x3)                 { return token::HT_BOOL1x3; }
-(?i:bool2x3)                 { return token::HT_BOOL2x3; }
-(?i:bool3x3)                 { return token::HT_BOOL3x3; }
-(?i:bool4x3)                 { return token::HT_BOOL4x3; }
-(?i:bool4)                   { return token::HT_BOOL4; }
-(?i:bool1x4)                 { return token::HT_BOOL1x4; }
-(?i:bool2x4)                 { return token::HT_BOOL2x4; }
-(?i:bool3x4)                 { return token::HT_BOOL3x4; }
-(?i:bool4x4)                 { return token::HT_BOOL4x4; }
-
-(?i:float1)                  { return token::HT_FLOAT1; }
-(?i:float1x1)                { return token::HT_FLOAT1x1; }
-(?i:float2x1)                { return token::HT_FLOAT2x1; }
-(?i:float3x1)                { return token::HT_FLOAT3x1; }
-(?i:float4x1)                { return token::HT_FLOAT4x1; }
-(?i:float2)                  { return token::HT_FLOAT2; }
-(?i:float1x2)                { return token::HT_FLOAT1x2; }
-(?i:float2x2)                { return token::HT_FLOAT2x2; }
-(?i:float3x2)                { return token::HT_FLOAT3x2; }
-(?i:float4x2)                { return token::HT_FLOAT4x2; }
-(?i:float3)                  { return token::HT_FLOAT3; }
-(?i:float1x3)                { return token::HT_FLOAT1x3; }
-(?i:float2x3)                { return token::HT_FLOAT2x3; }
-(?i:float3x3)                { return token::HT_FLOAT3x3; }
-(?i:float4x3)                { return token::HT_FLOAT4x3; }
-(?i:float4)                  { return token::HT_FLOAT4; }
-(?i:float1x4)                { return token::HT_FLOAT1x4; }
-(?i:float2x4)                { return token::HT_FLOAT2x4; }
-(?i:float3x4)                { return token::HT_FLOAT3x4; }
-(?i:float4x4)                { return token::HT_FLOAT4x4; }
-
-(?i:double1)                 { return token::HT_DOUBLE1; }
-(?i:double1x1)               { return token::HT_DOUBLE1x1; }
-(?i:double2x1)               { return token::HT_DOUBLE2x1; }
-(?i:double3x1)               { return token::HT_DOUBLE3x1; }
-(?i:double4x1)               { return token::HT_DOUBLE4x1; }
-(?i:double2)                 { return token::HT_DOUBLE2; }
-(?i:double1x2)               { return token::HT_DOUBLE1x2; }
-(?i:double2x2)               { return token::HT_DOUBLE2x2; }
-(?i:double3x2)               { return token::HT_DOUBLE3x2; }
-(?i:double4x2)               { return token::HT_DOUBLE4x2; }
-(?i:double3)                 { return token::HT_DOUBLE3; }
-(?i:double1x3)               { return token::HT_DOUBLE1x3; }
-(?i:double2x3)               { return token::HT_DOUBLE2x3; }
-(?i:double3x3)               { return token::HT_DOUBLE3x3; }
-(?i:double4x3)               { return token::HT_DOUBLE4x3; }
-(?i:double4)                 { return token::HT_DOUBLE4; }
-(?i:double1x4)               { return token::HT_DOUBLE1x4; }
-(?i:double2x4)               { return token::HT_DOUBLE2x4; }
-(?i:double3x4)               { return token::HT_DOUBLE3x4; }
-(?i:double4x4)               { return token::HT_DOUBLE4x4; }
-
-(?i:dword1)                  { return token::HT_DWORD1; }
-(?i:dword1x1)                { return token::HT_DWORD1x1; }
-(?i:dword2x1)                { return token::HT_DWORD2x1; }
-(?i:dword3x1)                { return token::HT_DWORD3x1; }
-(?i:dword4x1)                { return token::HT_DWORD4x1; }
-(?i:dword2)                  { return token::HT_DWORD2; }
-(?i:dword1x2)                { return token::HT_DWORD1x2; }
-(?i:dword2x2)                { return token::HT_DWORD2x2; }
-(?i:dword3x2)                { return token::HT_DWORD3x2; }
-(?i:dword4x2)                { return token::HT_DWORD4x2; }
-(?i:dword3)                  { return token::HT_DWORD3; }
-(?i:dword1x3)                { return token::HT_DWORD1x3; }
-(?i:dword2x3)                { return token::HT_DWORD2x3; }
-(?i:dword3x3)                { return token::HT_DWORD3x3; }
-(?i:dword4x3)                { return token::HT_DWORD4x3; }
-(?i:dword4)                  { return token::HT_DWORD4; }
-(?i:dword1x4)                { return token::HT_DWORD1x4; }
-(?i:dword2x4)                { return token::HT_DWORD2x4; }
-(?i:dword3x4)                { return token::HT_DWORD3x4; }
-(?i:dword4x4)                { return token::HT_DWORD4x4; }
-
-(?i:int1)                    { return token::HT_INT1; }
-(?i:int1x1)                  { return token::HT_INT1x1; }
-(?i:int2x1)                  { return token::HT_INT2x1; }
-(?i:int3x1)                  { return token::HT_INT3x1; }
-(?i:int4x1)                  { return token::HT_INT4x1; }
-(?i:int2)                    { return token::HT_INT2; }
-(?i:int1x2)                  { return token::HT_INT1x2; }
-(?i:int2x2)                  { return token::HT_INT2x2; }
-(?i:int3x2)                  { return token::HT_INT3x2; }
-(?i:int4x2)                  { return token::HT_INT4x2; }
-(?i:int3)                    { return token::HT_INT3; }
-(?i:int1x3)                  { return token::HT_INT1x3; }
-(?i:int2x3)                  { return token::HT_INT2x3; }
-(?i:int3x3)                  { return token::HT_INT3x3; }
-(?i:int4x3)                  { return token::HT_INT4x3; }
-(?i:int4)                    { return token::HT_INT4; }
-(?i:int1x4)                  { return token::HT_INT1x4; }
-(?i:int2x4)                  { return token::HT_INT2x4; }
-(?i:int3x4)                  { return token::HT_INT3x4; }
-(?i:int4x4)                  { return token::HT_INT4x4; }
-
-(?i:uint1)                   { return token::HT_UINT1; }
-(?i:uint1x1)                 { return token::HT_UINT1x1; }
-(?i:uint2x1)                 { return token::HT_UINT2x1; }
-(?i:uint3x1)                 { return token::HT_UINT3x1; }
-(?i:uint4x1)                 { return token::HT_UINT4x1; }
-(?i:uint2)                   { return token::HT_UINT2; }
-(?i:uint1x2)                 { return token::HT_UINT1x2; }
-(?i:uint2x2)                 { return token::HT_UINT2x2; }
-(?i:uint3x2)                 { return token::HT_UINT3x2; }
-(?i:uint4x2)                 { return token::HT_UINT4x2; }
-(?i:uint3)                   { return token::HT_UINT3; }
-(?i:uint1x3)                 { return token::HT_UINT1x3; }
-(?i:uint2x3)                 { return token::HT_UINT2x3; }
-(?i:uint3x3)                 { return token::HT_UINT3x3; }
-(?i:uint4x3)                 { return token::HT_UINT4x3; }
-(?i:uint4)                   { return token::HT_UINT4; }
-(?i:uint1x4)                 { return token::HT_UINT1x4; }
-(?i:uint2x4)                 { return token::HT_UINT2x4; }
-(?i:uint3x4)                 { return token::HT_UINT3x4; }
-(?i:uint4x4)                 { return token::HT_UINT4x4; }
-
- /*
-  * HLSL preprocessor directives
-  * Gathered from http://msdn.microsoft.com/en-us/library/windows/desktop/bb943993%28v=vs.85%29.aspx
-  */
-
-^[ \t]*"#"[ \t]*"define".* {
-    /* FIXME: this is very, very limited */
-    char const *tmp = strstr(yytext, "define") + 6;
-    while (*tmp == ' ' || *tmp == '\n')
-        tmp++;
-    if (*tmp == '\0')
-        return token::PREPROCESSOR_DEFINE;
-    char const *tmp2 = tmp;
-    while (*tmp != ' ' && *tmp != '\n' && *tmp != '\0')
-        tmp++;
-    String key(tmp2, (int)(tmp - tmp2));
-    while (*tmp == ' ' || *tmp == '\n')
-        tmp++;
-    String val(*tmp ? tmp : "1");
-
-    Log::Debug("new macro: ‘%s’ = ‘%s’\n", key.C(), val.C());
-    m_pp_defines[key] = val;
-}
-
-^[ \t]*"#"[ \t]*"elif" {
-    if (m_pp_stack.Count() <= 1)
-        return token::PREPROCESSOR_ELIF;
-    m_pp_stack.Last() = BlockIsForeverFalse;
-    BEGIN(PREPROCESSOR_COMMENT);
-}
-
-^[ \t]*"#"[ \t]*"else" {
-    if (m_pp_stack.Count() <= 1)
-        return token::PREPROCESSOR_ELSE;
-    m_pp_stack.Last() = BlockIsForeverFalse;
-    BEGIN(PREPROCESSOR_COMMENT);
-}
-
-^[ \t]*"#"[ \t]*"endif" {
-    if (m_pp_stack.Count() <= 1)
-        return token::PREPROCESSOR_ENDIF;
-    m_pp_stack.Pop();
-}
-
-^[ \t]*"#"[ \t]*"error".*    { return token::PREPROCESSOR_ERROR; }
-
-^[ \t]*"#"[ \t]*"if".* {
-    if (IsExpressionTrue(strstr(yytext, "if") + 2))
-    {
-        m_pp_stack.Push(BlockIsTrue);
-    }
-    else
-    {
-        m_pp_stack.Push(BlockIsFalse);
-        BEGIN(PREPROCESSOR_COMMENT);
-    }
-}
-
-^[ \t]*"#"[ \t]*"ifdef" {
-    /* FIXME: this is very, very limited */
-    char const *tmp = strstr(yytext, "ifdef") + 5;
-    while (*tmp == ' ' || *tmp == '\n')
-        tmp++;
-    if (*tmp == '\0')
-        return token::PREPROCESSOR_IFDEF;
-    char const *tmp2 = tmp;
-    while (*tmp != ' ' && *tmp != '\n' && *tmp != '\0')
-        tmp++;
-    String key(tmp2, (int)(tmp - tmp2));
-    if (has_key(m_pp_defines, key))
-    {
-        m_pp_stack.Push(BlockIsTrue);
-    }
-    else
-    {
-        m_pp_stack.Push(BlockIsFalse);
-        BEGIN(PREPROCESSOR_COMMENT);
-    }
-}
-
-^[ \t]*"#"[ \t]*"ifndef" {
-    /* FIXME: this is very, very limited */
-    char const *tmp = strstr(yytext, "ifndef") + 6;
-    while (*tmp == ' ' || *tmp == '\n')
-        tmp++;
-    if (*tmp == '\0')
-        return token::PREPROCESSOR_IFDEF;
-    char const *tmp2 = tmp;
-    while (*tmp != ' ' && *tmp != '\n' && *tmp != '\0')
-        tmp++;
-    String key(tmp2, (int)(tmp - tmp2));
-    if (has_key(m_pp_defines, key))
-    {
-        m_pp_stack.Push(BlockIsFalse);
-        BEGIN(PREPROCESSOR_COMMENT);
-    }
-    else
-    {
-        m_pp_stack.Push(BlockIsTrue);
-    }
-}
-
-^[ \t]*"#"[ \t]*"include"    { return token::PREPROCESSOR_INCLUDE; }
-
-^[ \t]*"#"[ \t]*"line".*     { /* ignore for now */ }
-
-^[ \t]*"#"[ \t]*"pragma".*   { /* ignore for now */ }
-
-^[ \t]*"#"[ \t]*"undef" {
-    /* FIXME: this is very, very limited */
-    char const *tmp = strstr(yytext, "undef") + 5;
-    while (*tmp == ' ' || *tmp == '\n')
-        tmp++;
-    if (*tmp == '\0')
-        return token::PREPROCESSOR_UNDEF;
-    char const *tmp2 = tmp;
-    while (*tmp != ' ' && *tmp != '\n' && *tmp != '\0')
-        tmp++;
-    String key(tmp2, (int)(tmp - tmp2));
-
-    Log::Debug("undef macro: ‘%s’\n", key.C());
-    m_pp_defines.remove(key);
-}
-
-<PREPROCESSOR_COMMENT>^[ \t]*"#"[ \t]*(if|ifdef|ifndef)[ \t]+.*$ {
-    m_pp_stack.Push(BlockIsForeverFalse);
-}
-<PREPROCESSOR_COMMENT>^[ \t]*"#"[ \t]*"else" {
-    switch (m_pp_stack.Last())
-    {
-        case BlockIsFalse:
-            m_pp_stack.Last() = BlockIsTrue;
-            BEGIN(INITIAL);
-            break;
-        case BlockIsForeverFalse:
-            break;
-        case BlockIsTrue:
-            m_pp_stack.Last() = BlockIsForeverFalse;
-            break;
-    }
-}
-<PREPROCESSOR_COMMENT>^[ \t]*"#"[ \t]*"elif" {
-    switch (m_pp_stack.Last())
-    {
-        case BlockIsFalse:
-            if (IsExpressionTrue(strstr(yytext, "elif") + 4))
-            {
-                m_pp_stack.Last() = BlockIsTrue;
-                BEGIN(INITIAL);
-            }
-            break;
-        case BlockIsForeverFalse:
-            break;
-        case BlockIsTrue:
-            m_pp_stack.Last() = BlockIsForeverFalse;
-            break;
-    }
-}
-<PREPROCESSOR_COMMENT>^[ \t]*"#"[ \t]*"endif" {
-    m_pp_stack.Pop();
-    if (m_pp_stack.Last() == BlockIsTrue)
-        BEGIN(INITIAL);
-}
-<PREPROCESSOR_COMMENT>\n     { yylloc->lines(1); }
-<PREPROCESSOR_COMMENT>[^/#]* { }
-<PREPROCESSOR_COMMENT>"/*"   { BEGIN(C_COMMENT); }
-<PREPROCESSOR_COMMENT>[/#]   { }
-
- /*
-  * GLSL preprocessor directives
-  */
-
-^[ \t]*"#"[ \t]*"version"[^\n]* { /* ignore for now */ }
-
- /*
-  * HLSL reserved keywords
-  * Gathered from http://msdn.microsoft.com/en-us/library/windows/desktop/bb509569%28v=vs.85%29.aspx
-  */
-
-(?i:auto)                    { return token::HT_AUTO; }
-(?i:catch)                   { return token::HT_CATCH; }
-(?i:char)                    { return token::HT_CHAR; }
-(?i:class)                   { return token::HT_CLASS; }
-(?i:const_cast)              { return token::HT_CONST_CAST; }
-(?i:delete)                  { return token::HT_DELETE; }
-(?i:dynamic_cast)            { return token::HT_DYNAMIC_CAST; }
-(?i:enum)                    { return token::HT_ENUM; }
-(?i:explicit)                { return token::HT_EXPLICIT; }
-(?i:friend)                  { return token::HT_FRIEND; }
-(?i:goto)                    { return token::HT_GOTO; }
-(?i:long)                    { return token::HT_LONG; }
-(?i:mutable)                 { return token::HT_MUTABLE; }
-(?i:new)                     { return token::HT_NEW; }
-(?i:operator)                { return token::HT_OPERATOR; }
-(?i:private)                 { return token::HT_PRIVATE; }
-(?i:protected)               { return token::HT_PROTECTED; }
-(?i:public)                  { return token::HT_PUBLIC; }
-(?i:reinterpret_cast)        { return token::HT_REINTERPRET_CAST; }
-(?i:short)                   { return token::HT_SHORT; }
-(?i:signed)                  { return token::HT_SIGNED; }
-(?i:sizeof)                  { return token::HT_SIZEOF; }
-(?i:static_cast)             { return token::HT_STATIC_CAST; }
-(?i:template)                { return token::HT_TEMPLATE; }
-(?i:this)                    { return token::HT_THIS; }
-(?i:throw)                   { return token::HT_THROW; }
-(?i:try)                     { return token::HT_TRY; }
-(?i:typename)                { return token::HT_TYPENAME; }
-(?i:union)                   { return token::HT_UNION; }
-(?i:unsigned)                { return token::HT_UNSIGNED; }
-(?i:using)                   { return token::HT_USING; }
-(?i:virtual)                 { return token::HT_VIRTUAL; }
-
- /*
-  * Various tokens
-  */
-
-"++"                    { return token::T_INC; }
-"--"                    { return token::T_DEC; }
-"<="                    { return token::T_LE; }
-">="                    { return token::T_GE; }
-"=="                    { return token::T_EQ; }
-"!="                    { return token::T_NE; }
-"<<"                    { return token::T_LEFT; }
-">>"                    { return token::T_RIGHT; }
-"&&"                    { return token::T_AND; }
-"||"                    { return token::T_OR; }
-"^^"                    { return token::T_XOR; }
-
-"*="                    { return token::T_MULEQ; }
-"/="                    { return token::T_DIVEQ; }
-"%="                    { return token::T_MODEQ; }
-"+="                    { return token::T_ADDEQ; }
-"-="                    { return token::T_SUBEQ; }
-"<<="                   { return token::T_LEFTEQ; }
-">>="                   { return token::T_RIGHTEQ; }
-"&="                    { return token::T_ANDEQ; }
-"^="                    { return token::T_XOREQ; }
-"|="                    { return token::T_OREQ; }
-
-(0|[1-9][0-9]*)\.[0-9]+ {
-    yylval->fval = std::atof(yytext);
-    return token::FLOATCONSTANT;
-}
-(0|[1-9][0-9]*)[uU]     {
-    yylval->uval = std::atoi(yytext);
-    return token::UINTCONSTANT;
-}
-(0|[1-9][0-9]*)         {
-    yylval->ival = std::atoi(yytext);
-    return token::INTCONSTANT;
-}
-
-([xyzw]{1,4}|[rgba]{1,4}|[stpq]{1,4}) {
-    /* Copy token for now */
-    yylval->sval = strdup(yytext);
-    return token::FIELDSELECTION;
-}
-
-[a-zA-Z_][a-zA-Z0-9_]*   {
-    /* Copy token for now */
-    yylval->sval = strdup(yytext);
-    return token::IDENTIFIER;
-}
-
-[ \t\r]+            { /* ignore whitespace */ }
-[\n]                { yylloc->lines(1); }
-.                   { return (token_type)*yytext; /* accept all characters */ }
-
- /*
-  * Ignore C comments
-  */
-
-"/*"                { BEGIN(C_COMMENT); }
-<C_COMMENT>[^*\n]*  { }
-<C_COMMENT>\n       { yylloc->lines(1); }
-<C_COMMENT>.        { }
-<C_COMMENT>"*/"     {
-    if (m_pp_stack.Last() == BlockIsTrue)
-        BEGIN(INITIAL);
-    else
-        BEGIN(PREPROCESSOR_COMMENT);
-}
-
- /*
-  * Ignore C++ comments
-  */
-
-"//"              { BEGIN(CPP_COMMENT); }
-<CPP_COMMENT>\n   { yylloc->lines(1); BEGIN(INITIAL); }
-<CPP_COMMENT>.*   { }
-
-%%
-
-lol::LolFxScanner::LolFxScanner(char const *command)
-    : LolFxFlexLexer(0, 0),
-      m_input(command)
-{
-}
-
-lol::LolFxScanner::~LolFxScanner()
-{
-}
-
-int lol::LolFxScanner::LexerInput(char* buf, int max_size)
-{
-    buf[0] = m_input[0];
-    if (buf[0])
-        ++m_input;
-    return buf[0] ? 1 : 0;
-}
-
-bool lol::LolFxScanner::IsExpressionTrue(char const *buf)
-{
-    /* FIXME: this is really too limited */
-    return std::atoi(buf) != 0;
-}
-
-#ifdef yylex
-#undef yylex
-#endif
-int LolFxFlexLexer::yylex()
-{
-    std::cerr << "in LolFxFlexLexer::yylex() !" << std::endl;
-    return 0;
-}
-
-int LolFxFlexLexer::yywrap()
-{
-    return 1;
-}
-
diff --git a/doc/header.html b/doc/header.html
deleted file mode 100644
index 7ffcb4a5..00000000
--- a/doc/header.html
+++ /dev/null
@@ -1,8 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
-<html>
-  <head>
-    <meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
-    <title>lolengine documentation</title>
-    <link href="doxygen.css" rel="stylesheet" type="text/css">
-  </head>
-  <body>
diff --git a/doc/lolengine.1 b/doc/lolengine.1
deleted file mode 100644
index 8acca939..00000000
--- a/doc/lolengine.1
+++ /dev/null
@@ -1,10 +0,0 @@
-.TH lolengine 1 "2012-01-01" "lolengine"
-.SH NAME
-lolengine\- foo bar
-.SH SYNOPSIS
-.B lolengine
-[
-.B \--crash
-.I activated by default
-]
-
diff --git a/doc/lolengine.dox b/doc/lolengine.dox
deleted file mode 100644
index 51042a4b..00000000
--- a/doc/lolengine.dox
+++ /dev/null
@@ -1,18 +0,0 @@
-/** \mainpage lolengine Documentation
-
- \section intro Introduction
-
- \e lolengine
-
- \e lolengine is free software, released under the Do What The Fuck You
- Want To Public License. This ensures that no one, not even \e lolengine
- developers, will ever have anything to say about what you do with the
- software.
-
- \section license License
-
- Permission is granted to copy, distribute and/or modify this document
- under the terms of the Do What The Fuck You Want To Public License, version
- 2 as published by Sam Hocevar. For details see http://www.wtfpl.net/ .
-
-*/
diff --git a/doc/samples/Makefile.am b/doc/samples/Makefile.am
deleted file mode 100644
index bd4cd0e9..00000000
--- a/doc/samples/Makefile.am
+++ /dev/null
@@ -1,48 +0,0 @@
-
-include $(top_srcdir)/build/autotools/common.am
-
-SUBDIRS = math sandbox
-
-bench: benchsuite$(EXEEXT)
-	./benchsuite$(EXEEXT)
-
-if BUILD_SAMPLES
-noinst_PROGRAMS = bluenoise benchsuite simplex
-if LOL_USE_GL
-if LOL_USE_BULLET
-noinst_PROGRAMS += btphystest
-endif
-endif
-endif
-
-bluenoise_SOURCES = bluenoise.cpp
-bluenoise_CPPFLAGS = $(AM_CPPFLAGS)
-bluenoise_DEPENDENCIES = @LOL_DEPS@
-
-benchsuite_SOURCES = benchsuite.cpp \
-    benchmark/vector.cpp benchmark/half.cpp benchmark/real.cpp
-benchsuite_CPPFLAGS = $(AM_CPPFLAGS)
-benchsuite_DEPENDENCIES = @LOL_DEPS@
-
-btphystest_SOURCES = \
-    btphystest.cpp btphystest.h physicobject.h \
-    physics/easyphysics.cpp physics/easyphysics.h \
-    physics/lolbtphysicsintegration.h physics/lolphysics.h \
-    physics/easycharactercontroller.cpp physics/easycharactercontroller.h \
-    physics/easyconstraint.cpp physics/easyconstraint.h \
-    physics/bulletcharactercontroller.cpp physics/bulletcharactercontroller.h \
-    \
-    front_camera_sprite.lolfx
-btphystest_CPPFLAGS = $(AM_CPPFLAGS)
-btphystest_DEPENDENCIES = @LOL_DEPS@
-btphystest_LDFLAGS = $(AM_LDFLAGS)
-if LOL_USE_EMSCRIPTEN
-btphystest_LDFLAGS += \
-    --preload-file data/CatsSheet.png \
-    -s TOTAL_MEMORY=$(shell expr 32 '*' 1024 '*' 1024)
-endif
-
-simplex_SOURCES = simplex.cpp
-simplex_CPPFLAGS = $(AM_CPPFLAGS)
-simplex_DEPENDENCIES = @LOL_DEPS@
-
diff --git a/doc/samples/benchmark/half.cpp b/doc/samples/benchmark/half.cpp
deleted file mode 100644
index 4aac8187..00000000
--- a/doc/samples/benchmark/half.cpp
+++ /dev/null
@@ -1,127 +0,0 @@
-//
-//  Lol Engine — Benchmark program
-//
-//  Copyright © 2005—2018 Sam Hocevar <sam@hocevar.net>
-//
-//  This program is free software. It comes without any warranty, to
-//  the extent permitted by applicable law. You can redistribute it
-//  and/or modify it under the terms of the Do What the Fuck You Want
-//  to Public License, Version 2, as published by the WTFPL Task Force.
-//  See http://www.wtfpl.net/ for more details.
-//
-
-#if HAVE_CONFIG_H
-#   include "config.h"
-#endif
-
-#include <cstdio>
-
-#include <lol/engine.h>
-
-using namespace lol;
-
-static size_t const HALF_TABLE_SIZE = 1024 * 1024;
-static size_t const HALF_RUNS = 50;
-
-void bench_half(int mode)
-{
-    float result[10] = { 0.0f };
-    lol::timer timer;
-
-    /* Set up tables */
-    float *pf = new float[HALF_TABLE_SIZE + 1];
-    half *ph = new half[HALF_TABLE_SIZE + 1];
-
-    for (size_t run = 0; run < HALF_RUNS; run++)
-    {
-        switch (mode)
-        {
-        case 1:
-            for (size_t i = 0; i < HALF_TABLE_SIZE + 1; i++)
-                ph[i] = half::makebits(rand<uint16_t>());
-            break;
-        case 2:
-        default:
-            for (size_t i = 0; i < HALF_TABLE_SIZE + 1; i++)
-                ph[i] = rand(-2.0f, 2.0f);
-            break;
-        }
-
-        /* Convert half to float (array) */
-        timer.get();
-        half::convert(pf, ph, HALF_TABLE_SIZE);
-        result[0] += timer.get();
-
-        /* Convert half to float (fast) */
-        timer.get();
-        for (size_t i = 0; i < HALF_TABLE_SIZE; i++)
-            pf[i] = (float)ph[i];
-        result[1] += timer.get();
-
-        /* Copy float */
-        timer.get();
-        for (size_t i = 0; i < HALF_TABLE_SIZE; i++)
-            pf[i] = pf[i + 1];
-        result[2] += timer.get();
-
-        /* Add a half to every float */
-        timer.get();
-        for (size_t i = 0; i < HALF_TABLE_SIZE; i++)
-            pf[i] += ph[i];
-        result[3] += timer.get();
-
-        /* Copy half */
-        timer.get();
-        for (size_t i = 0; i < HALF_TABLE_SIZE; i++)
-            ph[i] = ph[i + 1];
-        result[4] += timer.get();
-
-        /* Change sign of every half */
-        timer.get();
-        for (size_t i = 0; i < HALF_TABLE_SIZE; i++)
-            ph[i] = -ph[i];
-        result[5] += timer.get();
-
-        /* Convert float to half (array) */
-        timer.get();
-        half::convert(ph, pf, HALF_TABLE_SIZE);
-        result[6] += timer.get();
-
-        /* Convert float to half (fast) */
-        timer.get();
-        for (size_t i = 0; i < HALF_TABLE_SIZE; i++)
-            ph[i] = (half)pf[i];
-        result[7] += timer.get();
-
-        /* Convert float to half (accurate) */
-        timer.get();
-        for (size_t i = 0; i < HALF_TABLE_SIZE; i++)
-            ph[i] = half::makeaccurate(pf[i]);
-        result[8] += timer.get();
-
-        /* Add a float to every half */
-        timer.get();
-        for (size_t i = 0; i < HALF_TABLE_SIZE; i++)
-            ph[i] += pf[i];
-        result[9] += timer.get();
-    }
-
-    delete[] pf;
-    delete[] ph;
-
-    for (size_t i = 0; i < sizeof(result) / sizeof(*result); i++)
-        result[i] *= 1e9f / (HALF_TABLE_SIZE * HALF_RUNS);
-
-    msg::info("                          ns/elem\n");
-    msg::info("float = half (array)     %7.3f\n", result[0]);
-    msg::info("float = half (fast)      %7.3f\n", result[1]);
-    msg::info("float = float            %7.3f\n", result[2]);
-    msg::info("float += half            %7.3f\n", result[3]);
-    msg::info("half = half              %7.3f\n", result[4]);
-    msg::info("half = -half             %7.3f\n", result[5]);
-    msg::info("half = float (array)     %7.3f\n", result[6]);
-    msg::info("half = float (fast)      %7.3f\n", result[7]);
-    msg::info("half = float (accurate)  %7.3f\n", result[8]);
-    msg::info("half += float            %7.3f\n", result[9]);
-}
-
diff --git a/doc/samples/benchmark/real.cpp b/doc/samples/benchmark/real.cpp
deleted file mode 100644
index 6455bdda..00000000
--- a/doc/samples/benchmark/real.cpp
+++ /dev/null
@@ -1,82 +0,0 @@
-//
-//  Lol Engine — Benchmark program
-//
-//  Copyright © 2005—2018 Sam Hocevar <sam@hocevar.net>
-//
-//  This program is free software. It comes without any warranty, to
-//  the extent permitted by applicable law. You can redistribute it
-//  and/or modify it under the terms of the Do What the Fuck You Want
-//  to Public License, Version 2, as published by the WTFPL Task Force.
-//  See http://www.wtfpl.net/ for more details.
-//
-
-#if HAVE_CONFIG_H
-#   include "config.h"
-#endif
-
-#include <cstdio>
-
-#include <lol/engine.h>
-
-using namespace lol;
-
-static size_t const REAL_TABLE_SIZE = 10000;
-static size_t const REAL_RUNS = 50;
-
-void bench_real(int mode)
-{
-    float result[12] = { 0.0f };
-    lol::timer timer;
-
-    for (size_t run = 0; run < REAL_RUNS; run++)
-    {
-        switch (mode)
-        {
-        case 1:
-            break;
-        }
-
-        real fib1 = 1.0, fib2 = 1.0;
-        timer.get();
-        for (size_t i = 0; i < REAL_TABLE_SIZE; i++)
-        {
-            real tmp = fib1 + fib2;
-            fib1 = fib2;
-            fib2 = tmp;
-        }
-        result[0] += timer.get();
-
-        real fact = 1.0;
-        timer.get();
-        for (size_t i = 0; i < REAL_TABLE_SIZE; i++)
-            fact = fact * real(1.0 + i);
-        result[1] += timer.get();
-
-        real invfact = 1.0;
-        timer.get();
-        for (size_t i = 0; i < REAL_TABLE_SIZE; i++)
-            invfact = invfact / real(1.0 + i);
-        result[2] += timer.get();
-
-        timer.get();
-        for (size_t i = 0; i < REAL_TABLE_SIZE / 128; i++)
-            (void)sin(real(0.01 * i));
-        result[3] += timer.get() * 128;
-
-        timer.get();
-        for (size_t i = 0; i < REAL_TABLE_SIZE / 128; i++)
-            (void)exp((real)(int)(i - REAL_TABLE_SIZE / 256));
-        result[4] += timer.get() * 128;
-    }
-
-    for (size_t i = 0; i < sizeof(result) / sizeof(*result); i++)
-        result[i] *= 1e9f / (REAL_TABLE_SIZE * REAL_RUNS);
-
-    msg::info("                              ns/elem\n");
-    msg::info("real = real + real           %7.3f\n", result[0]);
-    msg::info("real = real * real           %7.3f\n", result[1]);
-    msg::info("real = real / real           %7.3f\n", result[2]);
-    msg::info("real = sin(real)             %7.3f\n", result[3]);
-    msg::info("real = exp(real)             %7.3f\n", result[4]);
-}
-
diff --git a/doc/samples/benchmark/vector.cpp b/doc/samples/benchmark/vector.cpp
deleted file mode 100644
index 54478531..00000000
--- a/doc/samples/benchmark/vector.cpp
+++ /dev/null
@@ -1,91 +0,0 @@
-//
-//  Lol Engine — Benchmark program
-//
-//  Copyright © 2005—2018 Sam Hocevar <sam@hocevar.net>
-//
-//  This program is free software. It comes without any warranty, to
-//  the extent permitted by applicable law. You can redistribute it
-//  and/or modify it under the terms of the Do What the Fuck You Want
-//  to Public License, Version 2, as published by the WTFPL Task Force.
-//  See http://www.wtfpl.net/ for more details.
-//
-
-#if HAVE_CONFIG_H
-#   include "config.h"
-#endif
-
-#include <cstdio>
-
-#include <lol/engine.h>
-
-using namespace lol;
-
-static size_t const MATRIX_TABLE_SIZE = 64 * 1024;
-static size_t const MATRIX_RUNS = 100;
-
-void bench_matrix(int mode)
-{
-    float result[5] = { 0.0f };
-    lol::timer timer;
-
-    /* Set up tables */
-    mat4 *pm = new mat4[MATRIX_TABLE_SIZE + 1];
-    float *pf = new float[MATRIX_TABLE_SIZE];
-
-    for (size_t run = 0; run < MATRIX_RUNS; run++)
-    {
-        switch (mode)
-        {
-        case 1:
-            for (size_t i = 0; i < MATRIX_TABLE_SIZE; i++)
-                for (int j = 0; j < 4; j++)
-                    for (int k = 0; k < 4; k++)
-                        pm[i][j][k] = rand(-2.0f, 2.0f);
-            break;
-        }
-
-        /* Copy matrices */
-        timer.get();
-        for (size_t i = 0; i < MATRIX_TABLE_SIZE; i++)
-            pm[i] = pm[i + 1];
-        result[0] += timer.get();
-
-        /* Determinant */
-        timer.get();
-        for (size_t i = 0; i < MATRIX_TABLE_SIZE; i++)
-            pf[i] = determinant(pm[i]);
-        result[1] += timer.get();
-
-        /* Multiply matrices */
-        timer.get();
-        for (size_t i = 0; i < MATRIX_TABLE_SIZE; i++)
-            pm[i] *= pm[i + 1];
-        result[2] += timer.get();
-
-        /* Add matrices */
-        timer.get();
-        for (size_t i = 0; i < MATRIX_TABLE_SIZE; i++)
-            pm[i] += pm[i + 1];
-        result[3] += timer.get();
-
-        /* Invert matrix */
-        timer.get();
-        for (size_t i = 0; i < MATRIX_TABLE_SIZE; i++)
-            pm[i] = inverse(pm[i]);
-        result[4] += timer.get();
-    }
-
-    delete[] pm;
-    delete[] pf;
-
-    for (size_t i = 0; i < sizeof(result) / sizeof(*result); i++)
-        result[i] *= 1e9f / (MATRIX_TABLE_SIZE * MATRIX_RUNS);
-
-    msg::info("                          ns/elem\n");
-    msg::info("mat4 = mat4              %7.3f\n", result[0]);
-    msg::info("float = mat4.det()       %7.3f\n", result[1]);
-    msg::info("mat4 *= mat4             %7.3f\n", result[2]);
-    msg::info("mat4 += mat4             %7.3f\n", result[3]);
-    msg::info("mat4 = mat4.invert()     %7.3f\n", result[4]);
-}
-
diff --git a/doc/samples/benchsuite.cpp b/doc/samples/benchsuite.cpp
deleted file mode 100644
index 78ed105c..00000000
--- a/doc/samples/benchsuite.cpp
+++ /dev/null
@@ -1,57 +0,0 @@
-//
-//  Lol Engine — Benchmark program
-//
-//  Copyright © 2005—2015 Sam Hocevar <sam@hocevar.net>
-//
-//  This program is free software. It comes without any warranty, to
-//  the extent permitted by applicable law. You can redistribute it
-//  and/or modify it under the terms of the Do What the Fuck You Want
-//  to Public License, Version 2, as published by the WTFPL Task Force.
-//  See http://www.wtfpl.net/ for more details.
-//
-
-#if HAVE_CONFIG_H
-#   include "config.h"
-#endif
-
-#include <cstdio>
-
-#include <lol/engine.h>
-
-using namespace lol;
-
-void bench_real(int mode);
-void bench_matrix(int mode);
-void bench_half(int mode);
-
-int main(int argc, char **argv)
-{
-    UNUSED(argc, argv);
-
-    msg::info("-----------------------\n");
-    msg::info(" High precision floats\n");
-    msg::info("-----------------------\n");
-    bench_real(1);
-
-    msg::info("----------------------------\n");
-    msg::info(" Float matrices [-2.0, 2.0]\n");
-    msg::info("----------------------------\n");
-    bench_matrix(1);
-
-    msg::info("-------------------------------------\n");
-    msg::info(" Half precision floats (random bits)\n");
-    msg::info("-------------------------------------\n");
-    bench_half(1);
-
-    msg::info("-----------------------------------\n");
-    msg::info(" Half precision floats [-2.0, 2.0]\n");
-    msg::info("-----------------------------------\n");
-    bench_half(2);
-
-#if defined _WIN32
-    getchar();
-#endif
-
-    return EXIT_SUCCESS;
-}
-
diff --git a/doc/samples/benchsuite.vcxproj b/doc/samples/benchsuite.vcxproj
deleted file mode 100644
index f889c264..00000000
--- a/doc/samples/benchsuite.vcxproj
+++ /dev/null
@@ -1,69 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <PropertyGroup Label="LolMacros">
-    <LolDir Condition="Exists('$(SolutionDir)\lol')">$(SolutionDir)\lol</LolDir>
-    <LolDir Condition="!Exists('$(SolutionDir)\lol')">$(SolutionDir)</LolDir>
-  </PropertyGroup>
-  <ItemGroup Label="ProjectConfigurations">
-    <ProjectConfiguration Include="Debug|NX64">
-      <Configuration>Debug</Configuration>
-      <Platform>NX64</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Debug|ORBIS">
-      <Configuration>Debug</Configuration>
-      <Platform>ORBIS</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Debug|Win32">
-      <Configuration>Debug</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Debug|x64">
-      <Configuration>Debug</Configuration>
-      <Platform>x64</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Release|NX64">
-      <Configuration>Release</Configuration>
-      <Platform>NX64</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Release|ORBIS">
-      <Configuration>Release</Configuration>
-      <Platform>ORBIS</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Release|Win32">
-      <Configuration>Release</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Release|x64">
-      <Configuration>Release</Configuration>
-      <Platform>x64</Platform>
-    </ProjectConfiguration>
-  </ItemGroup>
-  <ItemGroup>
-    <ClCompile Include="benchmark\half.cpp" />
-    <ClCompile Include="benchmark\real.cpp" />
-    <ClCompile Include="benchmark\vector.cpp" />
-    <ClCompile Include="benchsuite.cpp" />
-  </ItemGroup>
-  <Import Project="$(LolDir)\build\msbuild\lol-core.props" />
-  <Import Project="$(LolDir)\build\msbuild\lol-bullet.props" />
-  <PropertyGroup Label="Globals">
-    <ProjectGuid>{B1E10086-A1DA-401A-834D-969C9DBB5CC1}</ProjectGuid>
-    <ConfigurationType>Application</ConfigurationType>
-    <Keyword>Win32Proj</Keyword>
-  </PropertyGroup>
-  <Import Project="$(LolDir)\build\msbuild\lol.config.props" />
-  <ImportGroup Label="ExtensionSettings">
-    <Import Project="$(LolDir)\build\msbuild\lolfx.props" />
-  </ImportGroup>
-  <ImportGroup Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(LolDir)\build\msbuild\lol.vars.props" />
-  </ImportGroup>
-  <PropertyGroup Label="UserMacros" />
-  <Import Project="$(LolDir)\build\msbuild\lol.rules.props" />
-  <ItemDefinitionGroup />
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
-  <ImportGroup Label="ExtensionTargets">
-    <Import Project="$(LolDir)\build\msbuild\lolfx.targets" />
-  </ImportGroup>
-</Project>
\ No newline at end of file
diff --git a/doc/samples/bluenoise.cpp b/doc/samples/bluenoise.cpp
deleted file mode 100644
index 238bc05b..00000000
--- a/doc/samples/bluenoise.cpp
+++ /dev/null
@@ -1,39 +0,0 @@
-//
-//  bluenoise — create a N×N blue noise kernel
-//
-//  Copyright © 2016—2017 Sam Hocevar <sam@hocevar.net>
-//
-//  This program is free software. It comes without any warranty, to
-//  the extent permitted by applicable law. You can redistribute it
-//  and/or modify it under the terms of the Do What the Fuck You Want
-//  to Public License, Version 2, as published by the WTFPL Task Force.
-//  See http://www.wtfpl.net/ for more details.
-//
-
-#if HAVE_CONFIG_H
-#   include "config.h"
-#endif
-
-#include <lol/engine.h>
-
-using namespace lol;
-
-int main(int argc, char **argv)
-{
-    UNUSED(argc, argv);
-
-    ivec2 const size(64);
-    auto const &kernel = image::kernel::blue_noise(size, ivec2(8));
-
-    image im(size.xy);
-    array2d<vec4> &data = im.lock2d<PixelFormat::RGBA_F32>();
-
-    for (int j = 0; j < size.y; ++j)
-    for (int i = 0; i < size.x; ++i)
-        data[i][j] = vec4(vec3(kernel[i][j]), 1.0f);
-    im.unlock2d(data);
-    im.save("bluenoise.png");
-
-    return 0;
-}
-
diff --git a/doc/samples/btphystest.cpp b/doc/samples/btphystest.cpp
deleted file mode 100644
index b5ec0f37..00000000
--- a/doc/samples/btphystest.cpp
+++ /dev/null
@@ -1,754 +0,0 @@
-//
-//  Lol Engine — BtPhys tutorial
-//
-//  Copyright © 2012—2019 Sam Hocevar <sam@hocevar.net>
-//            © 2009—2015 Benjamin “Touky” Huet <huet.benjamin@gmail.com>
-//
-//  Lol Engine is free software. It comes without any warranty, to
-//  the extent permitted by applicable law. You can redistribute it
-//  and/or modify it under the terms of the Do What the Fuck You Want
-//  to Public License, Version 2, as published by the WTFPL Task Force.
-//  See http://www.wtfpl.net/ for more details.
-//
-
-#if HAVE_CONFIG_H
-#   include "config.h"
-#endif
-
-#include <lol/engine.h>
-#include "loldebug.h"
-
-using namespace lol;
-
-#include "physics/lolphysics.h"
-#include "physics/easyphysics.h"
-
-#define CAT_MODE        0
-#define OBJ_SIZE        2.f
-#define NB_SPRITE       4
-#define PARTICLE_SIZE   4
-#include "physicobject.h"
-
-#include "btphystest.h"
-
-using namespace lol::phys;
-
-#define CUBE_HALF_EXTENTS   .5f
-#define EXTRA_HEIGHT        1.f
-#define BASE_TIME           2.f
-#define ZERO_TIME (BASE_TIME + rand(-BASE_TIME * .4f, BASE_TIME * .4f))
-#define ZERO_SPEED          3.5f
-#define JUMP_HEIGHT         30.f
-#define JUMP_STRAFE         .5f
-#define TARGET_TIMER        10.f + (rand(4.f) - 2.f)
-
-int gNumObjects = 16;
-
-#if CAT_MODE
-#define USE_WALL        1
-#define USE_BODIES      1
-#else
-#define USE_WALL        1
-#define USE_PLATFORM    0
-#define USE_ROPE        0
-#define USE_BODIES      1
-#define USE_ROTATION    1
-#define USE_CHARACTER   0
-#define USE_STAIRS      0
-#endif
-
-LOLFX_RESOURCE_DECLARE(front_camera_sprite);
-
-BtPhysTest::BtPhysTest(bool editor)
-{
-    m_init_status = 0;
-}
-
-void BtPhysTest::InitApp()
-{
-    m_init_status = 1;
-
-    m_loop_value = .0f;
-
-#if CAT_MODE
-    /* cat datas setup */
-    m_cat_texture = Tiler::Register("data/CatsSheet.png", ivec2::zero, ivec2(0,1));
-    m_fov_dp = .0f;
-    m_loc_dp = .0f;
-#endif //CAT_MODE
-
-    /* Create a camera that matches the settings of XNA BtPhysTest */
-    m_camera = new Camera();
-
-#if CAT_MODE
-    m_camera->SetView(vec3(70.f, 50.f, 0.f),
-                      vec3(0.f, 0.f, 0.f),
-                      vec3(0, 1, 0));
-    m_camera->SetProjection(radians(60.f), .1f, 1000.f, (float)Video::GetSize().x, (float)Video::GetSize().y / (float)Video::GetSize().x);
-    m_target_timer = TARGET_TIMER;
-    m_cam_target = -1;
-#else
-    m_camera->SetView(vec3(50.f, 50.f, 0.f),
-                      vec3(0.f, 0.f, 0.f),
-                      vec3(0, 1, 0));
-    m_camera->SetProjection(radians(45.f), .1f, 1000.f, (float)Video::GetSize().x, (float)Video::GetSize().y / (float)Video::GetSize().x);
-#endif
-    Scene& scene = Scene::GetScene();
-    scene.PushCamera(m_camera);
-
-    m_ready = false;
-
-    m_simulation = new Simulation();
-    m_simulation->SetWorldLimit(vec3(-1000.0f, -1000.0f, -1000.0f), vec3(1000.0f, 1000.0f, 1000.0f));
-    m_simulation->Init();
-    vec3 NewGravity = vec3(.0f, -10.0f, .0f);
-    m_simulation->SetGravity(NewGravity);
-    m_simulation->SetContinuousDetection(true);
-    m_simulation->SetTimestep(1.f / 120.f);
-    Ticker::Ref(m_simulation);
-
-    /* Add a white directional light */
-    m_light1 = new Light();
-    m_light1->SetPosition(vec3(0.2f, 0.2f, 0.f));
-    m_light1->SetColor(vec4(0.5f, 0.5f, 0.5f, 1.f));
-    m_light1->SetType(LightType::Directional);
-    Ticker::Ref(m_light1);
-
-    /* Add an orangeish point light */
-    m_light2 = new Light();
-    m_light2->SetPosition(vec3(-15.f, 15.f, 15.f));
-    m_light2->SetColor(vec4(0.4f, 0.3f, 0.2f, 1.f));
-    m_light2->SetType(LightType::Point);
-    Ticker::Ref(m_light2);
-
-    float offset = 29.5f;
-    vec3 pos_offset = vec3(.0f, 30.f, .0f);
-#if USE_STAIRS
-    {
-        vec3 new_offset = vec3(1.0f, .125f, .0f);
-        quat NewRotation = quat::fromeuler_xyz(0.f, 0.f, 0.f);
-        vec3 NewPosition = pos_offset + vec3(5.0f, -29.f, 15.0f);
-        {
-            NewRotation = quat::fromeuler_xyz(0.f, 0.f, radians(30.f));
-            NewPosition += vec3(4.0f, .0f, -4.0f);
-
-            PhysicsObject* NewPhyobj = new PhysicsObject(m_simulation, NewPosition, NewRotation, 3);
-            Ticker::Ref(NewPhyobj);
-            m_stairs_list << NewPhyobj;
-        }
-        {
-            NewRotation = quat::fromeuler_xyz(0.f, 0.f, radians(40.f));
-            NewPosition += vec3(4.0f, .0f, -4.0f);
-
-            PhysicsObject* NewPhyobj = new PhysicsObject(m_simulation, NewPosition, NewRotation, 3);
-            Ticker::Ref(NewPhyobj);
-            m_stairs_list << NewPhyobj;
-        }
-        NewPosition = pos_offset + vec3(5.0f, -29.5f, 15.0f);
-        NewRotation = quat::fromeuler_xyz(0.f, 0.f, 0.f);
-        for (int i=0; i < 15; i++)
-        {
-            NewPosition += new_offset;
-
-            PhysicsObject* NewPhyobj = new PhysicsObject(m_simulation, NewPosition, NewRotation, 3);
-            Ticker::Ref(NewPhyobj);
-            m_stairs_list << NewPhyobj;
-        }
-    }
-#endif //USE_STAIRS
-
-#if USE_WALL
-    {
-        for (int i=0; i < 6; i++)
-        {
-            vec3 NewPosition = vec3(.0f);
-            quat NewRotation = quat(1.f);
-
-            PhysicsObject* NewPhyobj = new PhysicsObject(m_simulation, NewPosition, NewRotation);
-
-            int idx = i/2;
-            NewPosition = pos_offset;
-            NewPosition[idx] += offset;
-            offset *= -1.f;
-
-            if (idx != 1)
-            {
-                vec3 NewAxis = vec3(.0f);
-                NewAxis[2 - idx] = 1;
-                NewRotation = quat::rotate(radians(90.f), NewAxis);
-            }
-
-            NewPhyobj->SetTransform(NewPosition, NewRotation);
-            Ticker::Ref(NewPhyobj);
-            m_ground_list << NewPhyobj;
-        }
-    }
-#endif //USE_WALL
-
-    PhysicsObject* BasePhyobj = nullptr;
-#if USE_PLATFORM
-    {
-        quat NewRotation = quat::fromeuler_xyz(0.f, 0.f, 0.f);
-        vec3 NewPosition = pos_offset + vec3(5.0f, -25.0f, -15.0f);
-
-        PhysicsObject* NewPhyobj = new PhysicsObject(m_simulation, NewPosition, NewRotation, 1);
-
-        m_platform_list << NewPhyobj;
-        Ticker::Ref(NewPhyobj);
-
-        NewPosition = pos_offset + vec3(-15.0f, -25.0f, 5.0f);
-
-        NewPhyobj = new PhysicsObject(m_simulation, NewPosition, NewRotation, 1);
-        BasePhyobj = NewPhyobj;
-
-        m_platform_list << NewPhyobj;
-        Ticker::Ref(NewPhyobj);
-
-        NewRotation = quat::fromeuler_xyz(0.f, 0.f, radians(90.f));
-        NewPosition = pos_offset + vec3(-20.0f, -25.0f, 5.0f);
-
-        NewPhyobj = new PhysicsObject(m_simulation, NewPosition, NewRotation, 1);
-
-        NewPhyobj->GetPhysic()->AttachTo(BasePhyobj->GetPhysic(), true, true);
-        m_platform_list << NewPhyobj;
-        Ticker::Ref(NewPhyobj);
-
-        //NewPosition += vec3(-0.0f, .0f, .0f);
-        //NewPhyobj = new PhysicsObject(m_simulation, NewPosition, NewRotation, 1);
-
-        //NewPhyobj->GetPhysic()->AttachTo(BasePhyobj->GetPhysic(), true, false);
-        //m_platform_list << NewPhyobj;
-        //Ticker::Ref(NewPhyobj);
-
-        //NewPosition += vec3(-2.0f, .0f, .0f);
-        //NewPhyobj = new PhysicsObject(m_simulation, NewPosition, NewRotation, 1);
-
-        //NewPhyobj->GetPhysic()->AttachTo(BasePhyobj->GetPhysic(), false, false);
-        //m_platform_list << NewPhyobj;
-        //Ticker::Ref(NewPhyobj);
-    }
-#endif //USE_PLATFORM
-
-#if USE_CHARACTER
-    {
-        quat NewRotation = quat::fromeuler_xyz(0.f, 0.f, 0.f);
-        vec3 NewPosition = pos_offset + vec3(-5.0f, -10.0f, 15.0f);
-
-        PhysicsObject* NewPhyobj = new PhysicsObject(m_simulation, NewPosition, NewRotation, 2);
-
-        m_character_list << NewPhyobj;
-        Ticker::Ref(NewPhyobj);
-
-        //NewPhyobj->GetCharacter()->AttachTo(BasePhyobj->GetPhysic(), true, true);
-    }
-#endif //USE_CHARACTER
-
-#if USE_BODIES
-    {
-        for (int x=0; x < 6; x++)
-        {
-            for (int y=0; y < 2; y++)
-            {
-                for (int z=0; z < 5; z++)
-                {
-                    PhysicsObject* new_physobj = new PhysicsObject(m_simulation, 1000.f,
-                        vec3(-20.f, 15.f, -20.f) +
-#if CAT_MODE
-                        vec3(rand(4.f), rand(2.f), rand(4.f)) -
-                        vec3(2.f       , 1.f      , 2.f) +
-#endif //CAT_MODE
-                        vec3(8.f * (float)x, 8.f * (float)y, 8.f * (float)z));
-                    m_physobj_list.push(new_physobj, ZERO_TIME);
-                    Ticker::Ref(new_physobj);
-                }
-            }
-        }
-    }
-#endif //USE_BODIES
-
-#if USE_ROPE
-    {
-        array<PhysicsObject*> RopeElements;
-        for (int i = 0; i < 14; i++)
-        {
-            PhysicsObject* new_physobj = new PhysicsObject(m_simulation, 1000.f,
-                vec3(0.f, 15.f, -20.f) +
-                vec3(0.f, 0.f, 2.f * (float)i), 1);
-            RopeElements << new_physobj;
-            m_physobj_list.push(new_physobj, ZERO_TIME);
-            Ticker::Ref(new_physobj);
-            if (RopeElements.count() > 1)
-            {
-                EasyConstraint* new_constraint = new EasyConstraint();
-
-                vec3 A2B = .5f * (RopeElements[i]->GetPhysic()->GetTransform()[3].xyz -
-                            RopeElements[i - 1]->GetPhysic()->GetTransform()[3].xyz);
-                new_constraint->SetPhysObjA(RopeElements[i - 1]->GetPhysic(), lol::mat4::translate(A2B));
-                new_constraint->SetPhysObjB(RopeElements[i]->GetPhysic(), lol::mat4::translate(-A2B));
-                new_constraint->InitConstraintToPoint2Point();
-                new_constraint->DisableCollisionBetweenObjs(true);
-                new_constraint->AddToSimulation(m_simulation);
-                m_constraint_list << new_constraint;
-            }
-        }
-    }
-#endif //USE_ROPE
-}
-
-BtPhysTest::~BtPhysTest()
-{
-    Scene& scene = Scene::GetScene();
-    scene.PopCamera(m_camera);
-    Ticker::Unref(m_light1);
-    Ticker::Unref(m_light2);
-
-#if CAT_MODE
-    /* cat datas setup */
-    Shader::Destroy(m_cat_shader);
-    Tiler::Deregister(m_cat_texture);
-#endif //CAT_MODE
-
-    while (m_constraint_list.count())
-    {
-        EasyConstraint* CurPop = m_constraint_list.last();
-        m_constraint_list.pop();
-        CurPop->RemoveFromSimulation(m_simulation);
-        delete CurPop;
-    }
-    array<PhysicsObject*> objects
-        = m_ground_list
-        + m_stairs_list
-        + m_character_list
-        + m_platform_list;
-    while (m_physobj_list.count())
-    {
-        objects << m_physobj_list.last().m1;
-        m_physobj_list.pop();
-    }
-    m_ground_list.clear();
-    m_stairs_list.clear();
-    m_character_list.clear();
-    m_platform_list.clear();
-
-    while (objects.count())
-    {
-        PhysicsObject* CurPop = objects.pop();
-        CurPop->GetPhysic()->RemoveFromSimulation(m_simulation);
-        Ticker::Unref(CurPop);
-    }
-
-    //while (m_ground_list.count())
-    //{
-    //    PhysicsObject* CurPop = m_ground_list.last();
-    //    m_ground_list.pop();
-    //    CurPop->GetPhysic()->RemoveFromSimulation(m_simulation);
-    //    Ticker::Unref(CurPop);
-    //}
-    //while (m_stairs_list.count())
-    //{
-    //    PhysicsObject* CurPop = m_stairs_list.last();
-    //    m_stairs_list.pop();
-    //    CurPop->GetPhysic()->RemoveFromSimulation(m_simulation);
-    //    Ticker::Unref(CurPop);
-    //}
-    //while (m_character_list.count())
-    //{
-    //    PhysicsObject* CurPop = m_character_list.last();
-    //    m_character_list.pop();
-    //    CurPop->GetCharacter()->RemoveFromSimulation(m_simulation);
-    //    Ticker::Unref(CurPop);
-    //}
-    //while (m_platform_list.count())
-    //{
-    //    PhysicsObject* CurPop = m_platform_list.last();
-    //    m_platform_list.pop();
-    //    CurPop->GetPhysic()->RemoveFromSimulation(m_simulation);
-    //    Ticker::Unref(CurPop);
-    //}
-    //while (m_physobj_list.count())
-    //{
-    //    PhysicsObject* CurPop = m_physobj_list.last().m1;
-    //    m_physobj_list.pop();
-    //    CurPop->GetPhysic()->RemoveFromSimulation(m_simulation);
-    //    Ticker::Unref(CurPop);
-    //}
-    Ticker::Unref(m_simulation);
-
-}
-
-void BtPhysTest::tick_game(float seconds)
-{
-    WorldEntity::tick_game(seconds);
-
-    if (!m_init_status)
-    {
-        if (Scene::GetCount())
-            InitApp();
-        return;
-    }
-    else if (m_init_status == 1)
-    {
-        m_init_status++;
-        return;
-    }
-
-    auto context = Debug::DrawContext::New(Color::white, 1.f);
-    Debug::DrawGrid(vec3::zero, vec3::axis_x, vec3::axis_y, vec3::axis_z, 10.f);
-
-    if (input::keyboard()->key_released(input::key::SC_Escape))
-        Ticker::Shutdown();
-
-    m_loop_value += seconds;
-    if (m_loop_value > F_PI * 2.0f)
-        m_loop_value -= F_PI * 2.0f;
-
-    vec3 GroundBarycenter = vec3(.0f);
-    vec3 PhysObjBarycenter = vec3(.0f);
-    float factor = .0f;
-#if CAT_MODE
-#if USE_BODIES
-    vec3 cam_center(0.f);
-    float cam_factor = .0f;
-    vec2 screen_min_max[2] = { vec2(FLT_MAX), vec2(-FLT_MAX) };
-    Scene& scene = Scene::GetScene();
-    mat4 world_cam = scene.GetCamera()->GetView();
-    mat4 cam_screen = scene.GetCamera()->GetProjection();
-
-    m_target_timer -= seconds;
-    if (m_target_timer < .0f)
-    {
-        m_target_timer = TARGET_TIMER;
-        if (m_cam_target == -1)
-            m_cam_target = rand(m_physobj_list.count());
-        else
-            m_cam_target = -1;
-    }
-
-    for (int i = 0; i < m_physobj_list.count(); i++)
-    {
-        PhysicsObject* PhysObj = m_physobj_list[i].m1;
-        float &obj_timer = m_physobj_list[i].m2;
-
-        vec3 obj_loc = PhysObj->GetPhysic()->GetTransform()[3].xyz;
-
-        if (m_cam_target == -1 || m_cam_target == i)
-        {
-            cam_center += obj_loc;
-            cam_factor += 1.f;
-
-            mat4 LocalPos = mat4::translate(obj_loc);
-            vec3 vpos;
-
-            LocalPos = world_cam * LocalPos;
-            mat4 LocalPos0 = LocalPos;
-
-            int j = 2;
-            while (j-- > 0)
-            {
-                if (j == 1)
-                    LocalPos = mat4::translate(vec3(-4.f)) * LocalPos0;
-                else
-                    LocalPos = mat4::translate(vec3(4.f)) * LocalPos0;
-
-                LocalPos = cam_screen * LocalPos;
-                vpos = (LocalPos[3] / LocalPos[3].w).xyz;
-                screen_min_max[0] = min(vpos.xy, screen_min_max[0]);
-                screen_min_max[1] = max(vpos.xy, screen_min_max[1]);
-            }
-        }
-
-        //Jump handling
-        //if (length(PhysObj->GetPhysic()->GetLinearVelocity()) < ZERO_SPEED)
-        if (lol::abs(PhysObj->GetPhysic()->GetLinearVelocity().y) < ZERO_SPEED)
-            obj_timer -= seconds;
-
-        if (obj_timer < .0f)
-        {
-            PhysObj->GetPhysic()->AddImpulse(JUMP_HEIGHT *
-                                             vec3(JUMP_STRAFE, 1.f, JUMP_STRAFE) *
-                                             vec3(rand(-1.f, 1.f), 1.0f, rand(-1.f, 1.f)) *
-                                             PhysObj->GetPhysic()->GetMass());
-            obj_timer = ZERO_TIME;
-        }
-    }
-
-    float fov_ratio = max(max(lol::abs(screen_min_max[0].x), lol::abs(screen_min_max[0].y)),
-                          max(lol::abs(screen_min_max[1].x), lol::abs(screen_min_max[1].y)));
-
-    vec3 new_target = cam_center / cam_factor;
-    float fov_dp = .0f;
-    float loc_dp = .0f;
-
-    //ideally fov is on the target
-    if (lol::abs(fov_ratio - 1.f) < .2f)
-        fov_dp = ((m_cam_target == -1)?(.7f):(.2f));
-    else
-        fov_dp = ((m_cam_target == -1)?(1.7f):(.9f));
-
-    //ideally loc is on the target
-    if (length(new_target - m_camera->GetTarget()) < 6.f)
-        loc_dp = ((m_cam_target == -1)?(.5f):(.03f));
-    else
-        loc_dp = ((m_cam_target == -1)?(.9f):(.5f));
-
-    m_fov_dp = damp(m_fov_dp, fov_dp, 0.08f, seconds);
-    m_loc_dp = damp(m_loc_dp, loc_dp, 0.08f, seconds);
-    m_camera->SetFov(damp(m_camera->GetFov(), m_camera->GetFov() * fov_ratio * 1.1f, m_fov_dp, seconds));
-    vec3 tmp = damp(m_camera->GetTarget(), new_target, m_loc_dp, seconds);
-    m_camera->SetView((mat4::rotate(radians(10.f) * seconds, vec3(.0f, 1.f, .0f)) * vec4(m_camera->GetPosition(), 1.0f)).xyz,
-                      tmp, vec3(0, 1, 0));
-#endif //USE_BODIES
-#endif //CAT_MODE
-
-#if USE_WALL
-    {
-        for (int i = 0; i < m_ground_list.count(); i++)
-        {
-            PhysicsObject* PhysObj = m_ground_list[i];
-            mat4 GroundMat = PhysObj->GetTransform();
-
-            GroundBarycenter += GroundMat[3].xyz;
-            factor += 1.f;
-        }
-
-        GroundBarycenter /= factor;
-
-        for (int i = 0; i < m_ground_list.count(); i++)
-        {
-            PhysicsObject* PhysObj = m_ground_list[i];
-
-            mat4 GroundMat = PhysObj->GetTransform();
-            vec3 CenterToGround = GroundMat[3].xyz - GroundBarycenter;
-            vec3 CenterToCam = m_camera->GetPosition() - GroundBarycenter;
-
-            if (dot(normalize(CenterToCam - CenterToGround),
-                    normalize(CenterToGround)) > 0.f)
-                PhysObj->SetRender(false);
-            else
-                PhysObj->SetRender(true);
-        }
-    }
-#endif //USE_WALL
-
-#if USE_ROTATION
-    {
-        for (int i = 0; i < m_ground_list.count(); i++)
-        {
-            PhysicsObject* PhysObj = m_ground_list[i];
-
-            mat4 GroundMat = PhysObj->GetTransform();
-            mat4 CenterMx = mat4::translate(GroundBarycenter);
-            GroundMat = inverse(CenterMx) * GroundMat;
-            GroundMat = CenterMx *
-                        mat4(quat::fromeuler_xyz(vec3(.0f, radians(20.f), radians(20.0f)) * seconds))
-                        * GroundMat;
-            PhysObj->SetTransform(GroundMat[3].xyz, quat(mat3(GroundMat)));
-        }
-    }
-#endif //USE_ROTATION
-
-#if USE_PLATFORM
-    {
-        for (int i = 0; i < m_platform_list.count(); i++)
-        {
-            PhysicsObject* PhysObj = m_platform_list[i];
-
-            mat4 GroundMat = PhysObj->GetTransform();
-            if (i == 0)
-            {
-                GroundMat = GroundMat * mat4(quat::fromeuler_xyz(vec3(radians(20.f), .0f, .0f) * seconds));
-                PhysObj->SetTransform(GroundMat[3].xyz, quat(mat3(GroundMat)));
-            }
-            else if (i == 1)
-            {
-                GroundMat =
-                    mat4::translate(vec3(-15.0f, 5.0f, lol::cos(m_loop_value) * 8.f)) *
-                    mat4(quat::fromeuler_xyz(vec3(.0f, lol::cos(m_loop_value) * radians(20.f), .0f)));
-                PhysObj->SetTransform(GroundMat[3].xyz, quat(mat3(GroundMat)));
-            }
-        }
-    }
-#endif //USE_PLATFORM
-
-#if USE_CHARACTER
-    {
-        auto keyboard = input::keyboard();
-
-        for (int i = 0; i < m_character_list.count(); i++)
-        {
-            PhysicsObject* PhysObj = m_character_list[i];
-            EasyCharacterController* Character = (EasyCharacterController*)PhysObj->GetCharacter();
-            mat4 CtlrMx = Character->GetTransform();
-
-            vec3 movement(0.f);
-            movement.z = (keyboard->key(input::key::SC_Right) ? 1.f : 0.f)
-                - (keyboard->key(input::key::SC_Left) ? 1.f : 0.f);
-            movement.x = (keyboard->key(input::key::SC_Up) ? 1.f : 0.f)
-                - (keyboard->key(input::key::SC_Down) ? 1.f : 0.f);
-            movement.y = (keyboard->key(input::key::SC_PageUp) ? 1.f : 0.f)
-                - (keyboard->key(input::key::SC_PageDown) ? 1.f : 0.f);
-            vec3 CharMove = movement * seconds * vec3(4.f, 10.f, 4.f);
-
-            if (input::keyboard()->key_released(input::key::SC_Space))
-                Character->Jump();
-            Character->SetMovementForFrame(CharMove);
-
-            RayCastResult HitResult;
-            if (m_simulation->RayHits(HitResult, ERT_Closest, Character->GetTransform()[3].xyz, (Character->GetTransform()[3].xyz + vec3(.0f, -1.f, .0f)), Character))
-                Character->AttachTo(HitResult.m_collider_list[0], true, true);
-            else
-                Character->AttachTo(nullptr);
-        }
-    }
-#endif //USE_CHARACTER
-
-#if USE_CHARACTER
-    {
-        PhysObjBarycenter = vec3(.0f);
-        factor = .0f;
-
-        for (int i = 0; i < m_character_list.count(); i++)
-        {
-            PhysicsObject* PhysObj = m_character_list[i];
-            mat4 GroundMat = PhysObj->GetTransform();
-
-            PhysObjBarycenter += GroundMat[3].xyz;
-            factor += 1.f;
-        }
-
-        PhysObjBarycenter /= factor;
-
-#if 0
-        m_camera->SetTarget(m_camera->GetTarget() + (seconds / (seconds + 0.18f)) * (PhysObjBarycenter - m_camera->GetTarget()));
-        vec3 CamPosCenter = m_camera->GetTarget() + vec3(.0f, 5.0f, .0f);
-        m_camera->SetPosition(CamPosCenter + normalize(m_camera->GetPosition() - CamPosCenter) * 20.0f);
-#endif
-    }
-#else
-    {
-        PhysObjBarycenter = vec3(.0f);
-        for (int i = 0; i < m_physobj_list.count(); i++)
-        {
-            PhysicsObject* PhysObj = m_physobj_list[i].m1;
-            mat4 GroundMat = PhysObj->GetTransform();
-
-            PhysObjBarycenter += GroundMat[3].xyz;
-            factor += 1.f;
-        }
-
-        PhysObjBarycenter /= factor;
-
-#if 0
-        m_camera->SetTarget(PhysObjBarycenter);
-        m_camera->SetPosition(GroundBarycenter + normalize(GroundBarycenter - PhysObjBarycenter) * 60.0f);
-#endif
-    }
-#endif //USE_CHARACTER
-}
-
-void BtPhysTest::tick_draw(float seconds, Scene &scene)
-{
-    WorldEntity::tick_draw(seconds, scene);
-
-    if (m_init_status != 2)
-        return;
-
-    if (!m_ready)
-    {
-#if CAT_MODE
-        /* cat datas setup */
-        m_cat_shader = Shader::Create(LOLFX_RESOURCE_NAME(front_camera_sprite));
-#if USE_BODIES
-        for (int i = 0; i < m_physobj_list.count(); i++)
-        {
-            PhysicsObject* PhysObj = m_physobj_list[i].m1;
-            m_cat_sdata = new CatShaderData(((1 << VertexUsage::Position) |
-                                                (1 << VertexUsage::Color) |
-                                                (1 << VertexUsage::TexCoord) |
-                                                (1 << VertexUsage::TexCoordExt)),
-                                                m_cat_shader);
-            m_cat_sdata->m_tex_uniform = m_cat_texture->GetTexture()->GetTextureUniform();
-            m_cat_sdata->m_sprite_flip = ((rand(2) == 1)?(1.f):(0.f)) / (float)(NB_SPRITE * PARTICLE_SIZE);
-            PhysObj->SetCustomShaderData(m_cat_sdata);
-            m_cat_sdata = nullptr;
-        }
-#endif //USE_BODIES
-#endif //CAT_MODE
-
-        /* FIXME: this object never cleans up */
-        m_ready = true;
-    }
-    else
-    {
-#if CAT_MODE
-        for (int i = 0; i < m_physobj_list.count(); i++)
-        {
-            PhysicsObject* PhysObj = m_physobj_list[i].m1;
-            CatShaderData* ShaderData = (CatShaderData*)PhysObj->GetCustomShaderData();
-
-            ShaderData->m_sprite_orientation = damp(ShaderData->m_sprite_orientation,
-                                                    F_PI_4 * ((ShaderData->m_sprite_flip * 2.f * (float)(NB_SPRITE * PARTICLE_SIZE)) - 1.f) *
-                                                    clamp(PhysObj->GetPhysic()->GetLinearVelocity().y / 20.0f, -1.f, 1.f),
-                                                    0.1f, seconds);
-        }
-#endif //CAT_MODE
-    }
-
-    //Video::set_clear_color(vec4(0.0f, 0.0f, 0.12f, 1.0f));
-
-}
-
-//-----------------------------------------------------------------------------
-// CShaderData
-//-----------------------------------------------------------------------------
-CatShaderData::CatShaderData(uint32_t vert_decl_flags, std::shared_ptr<Shader> shader)
-    : GpuShaderData(vert_decl_flags, shader, DebugRenderMode::Default)
-{
-    m_sprite_orientation = .0f;
-    m_sprite_flip = .0f;
-    SetupDefaultData();
-}
-
-//-----------------------------------------------------------------------------
-void CatShaderData::SetupDefaultData()
-{
-    AddUniform("u_model_view");
-    AddUniform("u_normal_mat");
-    AddUniform("u_proj");
-    AddUniform("u_texture");
-    AddUniform("u_sprite_orientation");
-    AddUniform("u_sprite_flip");
-}
-
-//-----------------------------------------------------------------------------
-void CatShaderData::SetupShaderDatas(mat4 const &model)
-{
-    Scene& scene = Scene::GetScene();
-    mat4 proj = scene.GetCamera()->GetProjection();
-    mat4 view = scene.GetCamera()->GetView();
-
-    mat4 modelview = view * model;
-    mat3 normalmat = transpose(inverse(mat3(view)));
-
-    m_shader->SetUniform(*GetUniform("u_model_view"), modelview);
-    m_shader->SetUniform(*GetUniform("u_normal_mat"), normalmat);
-    m_shader->SetUniform(*GetUniform("u_proj"), proj);
-    m_shader->SetUniform(*GetUniform("u_texture"), m_tex_uniform, 0);
-    m_shader->SetUniform(*GetUniform("u_sprite_orientation"), m_sprite_orientation);
-    m_shader->SetUniform(*GetUniform("u_sprite_flip"), m_sprite_flip);
-}
-
-int main(int argc, char **argv)
-{
-    sys::init(argc, argv);
-
-    Application app("BtPhysTest", ivec2(1280, 960), 60.0f);
-
-    new BtPhysTest(argc > 1);
-    app.ShowPointer(false);
-
-    app.Run();
-
-    return EXIT_SUCCESS;
-}
-
diff --git a/doc/samples/btphystest.h b/doc/samples/btphystest.h
deleted file mode 100644
index d34552da..00000000
--- a/doc/samples/btphystest.h
+++ /dev/null
@@ -1,115 +0,0 @@
-//
-//  Lol Engine — Bullet physics test
-//
-//  Copyright © 2012—2019 Sam Hocevar <sam@hocevar.net>
-//            © 2009—2013 Benjamin “Touky” Huet <huet.benjamin@gmail.com>
-//
-//  Lol Engine is free software. It comes without any warranty, to
-//  the extent permitted by applicable law. You can redistribute it
-//  and/or modify it under the terms of the Do What the Fuck You Want
-//  to Public License, Version 2, as published by the WTFPL Task Force.
-//  See http://www.wtfpl.net/ for more details.
-//
-
-#pragma once
-
-#include <memory>
-#include <string>
-#include <map>
-
-class CatShaderData : public GpuShaderData
-{
-    friend class CRenderer;
-
-public:
-    //---
-    CatShaderData(uint32_t vert_decl_flags, std::shared_ptr<Shader> shader);
-    //---
-    void SetupDefaultData();
-    virtual void SetupShaderDatas(mat4 const &model);
-    //--
-    virtual std::string GetInVertexName()   { return "in_vertex";   }
-    virtual std::string GetInNormalName()   { return "in_normal";   }
-    virtual std::string GetInColorName()    { return "in_color";    }
-    virtual std::string GetInTexCoordName() { return "in_texcoord"; }
-
-    TextureUniform m_tex_uniform;
-    float m_sprite_orientation;
-    float m_sprite_flip;
-};
-
-class BtPhysTest : public WorldEntity
-{
-public:
-    BtPhysTest(bool editor = false);
-    virtual ~BtPhysTest();
-
-    std::string GetName() const { return "<BtPhysTest>"; }
-
-protected:
-    virtual void tick_game(float seconds);
-    virtual void tick_draw(float seconds, Scene &scene);
-
-    void InitApp();
-
-private:
-    //MeshViewerInput ---------------------------------------------------------
-    struct BtPhysTestKeyInputBase : public StructSafeEnum
-    {
-        enum Type
-        {
-            KEY_START = 0,
-
-            KEY_MOVE_FORWARD = KEY_START,
-            KEY_MOVE_BACK,
-            KEY_MOVE_LEFT,
-            KEY_MOVE_RIGHT,
-            KEY_MOVE_UP,
-            KEY_MOVE_DOWN,
-            KEY_MOVE_JUMP,
-            KEY_QUIT,
-
-            KEY_MAX
-        };
-    protected:
-        virtual bool BuildEnumMap(std::map<int64_t, std::string>& enum_map)
-        {
-            enum_map[KEY_MOVE_FORWARD] = input::key_to_name(input::key::SC_Up);
-            enum_map[KEY_MOVE_BACK] = input::key_to_name(input::key::SC_Down);
-            enum_map[KEY_MOVE_LEFT] = input::key_to_name(input::key::SC_Left);
-            enum_map[KEY_MOVE_RIGHT] = input::key_to_name(input::key::SC_Right);
-            enum_map[KEY_MOVE_UP] = input::key_to_name(input::key::SC_PageUp);
-            enum_map[KEY_MOVE_DOWN] = input::key_to_name(input::key::SC_PageDown);
-            enum_map[KEY_MOVE_JUMP] = input::key_to_name(input::key::SC_Space);
-            enum_map[KEY_QUIT] = input::key_to_name(input::key::SC_Escape);
-
-            return true;
-        }
-    };
-    typedef SafeEnum<BtPhysTestKeyInputBase> BtPhysTestKeyInput;
-
-
-    TileSet*                        m_cat_texture;
-    std::shared_ptr<Shader>         m_cat_shader;
-    CatShaderData*                  m_cat_sdata;
-    Camera*                         m_camera;
-    Light*                          m_light1;
-    Light*                          m_light2;
-    int                             m_init_status;
-    bool                            m_ready;
-
-    lol::phys::Simulation*          m_simulation;
-    array<EasyConstraint*>          m_constraint_list;
-    array<PhysicsObject*, float>    m_physobj_list;
-    array<PhysicsObject*>           m_ground_list;
-    array<PhysicsObject*>           m_platform_list;
-    array<PhysicsObject*>           m_character_list;
-    array<PhysicsObject*>           m_stairs_list;
-
-    float                           m_loop_value;
-    float                           m_target_timer;
-    int                             m_cam_target;
-    float                           m_fov_dp;
-    float                           m_loc_dp;
-};
-
diff --git a/doc/samples/btphystest.vcxproj b/doc/samples/btphystest.vcxproj
deleted file mode 100644
index 9c42f8a9..00000000
--- a/doc/samples/btphystest.vcxproj
+++ /dev/null
@@ -1,88 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <PropertyGroup Label="LolMacros">
-    <LolDir Condition="Exists('$(SolutionDir)\lol')">$(SolutionDir)\lol</LolDir>
-    <LolDir Condition="!Exists('$(SolutionDir)\lol')">$(SolutionDir)</LolDir>
-  </PropertyGroup>
-  <ItemGroup Label="ProjectConfigurations">
-    <ProjectConfiguration Include="Debug|NX64">
-      <Configuration>Debug</Configuration>
-      <Platform>NX64</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Debug|ORBIS">
-      <Configuration>Debug</Configuration>
-      <Platform>ORBIS</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Debug|Win32">
-      <Configuration>Debug</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Debug|x64">
-      <Configuration>Debug</Configuration>
-      <Platform>x64</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Release|NX64">
-      <Configuration>Release</Configuration>
-      <Platform>NX64</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Release|ORBIS">
-      <Configuration>Release</Configuration>
-      <Platform>ORBIS</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Release|Win32">
-      <Configuration>Release</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Release|x64">
-      <Configuration>Release</Configuration>
-      <Platform>x64</Platform>
-    </ProjectConfiguration>
-  </ItemGroup>
-  <ItemGroup>
-    <ClInclude Include="btphystest.h" />
-    <ClInclude Include="physicobject.h" />
-    <ClInclude Include="physics\bulletcharactercontroller.h" />
-    <ClInclude Include="physics\easycharactercontroller.h" />
-    <ClInclude Include="physics\easyconstraint.h" />
-    <ClInclude Include="physics\easyphysics.h" />
-    <ClInclude Include="physics\lolbtphysicsintegration.h" />
-    <ClInclude Include="physics\lolphysics.h" />
-  </ItemGroup>
-  <ItemGroup>
-    <ClCompile Include="btphystest.cpp" />
-    <ClCompile Include="physics\bulletcharactercontroller.cpp" />
-    <ClCompile Include="physics\easycharactercontroller.cpp" />
-    <ClCompile Include="physics\easyconstraint.cpp" />
-    <ClCompile Include="physics\easyphysics.cpp" />
-  </ItemGroup>
-  <Import Project="$(LolDir)\build\msbuild\lol-core.props" />
-  <Import Project="$(LolDir)\build\msbuild\lol-bullet.props" />
-  <ItemGroup>
-    <None Include="Makefile.am">
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>
-    </None>
-  </ItemGroup>
-  <ItemGroup>
-    <LolFxCompile Include="front_camera_sprite.lolfx" />
-  </ItemGroup>
-  <PropertyGroup Label="Globals">
-    <ProjectGuid>{ee203b88-44cf-4859-9d42-7a1f43fecb52}</ProjectGuid>
-    <ConfigurationType>Application</ConfigurationType>
-    <Keyword>Win32Proj</Keyword>
-  </PropertyGroup>
-  <Import Project="$(LolDir)\build\msbuild\lol.config.props" />
-  <ImportGroup Label="ExtensionSettings">
-    <Import Project="$(LolDir)\build\msbuild\lolfx.props" />
-  </ImportGroup>
-  <ImportGroup Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(LolDir)\build\msbuild\lol.vars.props" />
-  </ImportGroup>
-  <PropertyGroup Label="UserMacros" />
-  <Import Project="$(LolDir)\build\msbuild\lol.rules.props" />
-  <ItemDefinitionGroup />
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
-  <ImportGroup Label="ExtensionTargets">
-    <Import Project="$(LolDir)\build\msbuild\lolfx.targets" />
-  </ImportGroup>
-</Project>
\ No newline at end of file
diff --git a/doc/samples/btphystest.vcxproj.filters b/doc/samples/btphystest.vcxproj.filters
deleted file mode 100644
index 2e864098..00000000
--- a/doc/samples/btphystest.vcxproj.filters
+++ /dev/null
@@ -1,54 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <ItemGroup>
-    <ClInclude Include="btphystest.h" />
-    <ClInclude Include="physicobject.h" />
-    <ClInclude Include="physics\easycharactercontroller.h">
-      <filter>physics</filter>
-    </ClInclude>
-    <ClInclude Include="physics\lolphysics.h">
-      <filter>physics</filter>
-    </ClInclude>
-    <ClInclude Include="physics\easyconstraint.h">
-      <filter>physics</filter>
-    </ClInclude>
-    <ClInclude Include="physics\easyphysics.h">
-      <filter>physics</filter>
-    </ClInclude>
-    <ClInclude Include="physics\lolbtphysicsintegration.h">
-      <filter>physics</filter>
-    </ClInclude>
-    <ClInclude Include="physics\bulletcharactercontroller.h">
-      <filter>physics</filter>
-    </ClInclude>
-  </ItemGroup>
-  <ItemGroup>
-    <ClCompile Include="btphystest.cpp" />
-    <ClCompile Include="physics\easycharactercontroller.cpp">
-      <filter>physics</filter>
-    </ClCompile>
-    <ClCompile Include="physics\easyconstraint.cpp">
-      <filter>physics</filter>
-    </ClCompile>
-    <ClCompile Include="physics\easyphysics.cpp">
-      <filter>physics</filter>
-    </ClCompile>
-    <ClCompile Include="physics\bulletcharactercontroller.cpp">
-      <filter>physics</filter>
-    </ClCompile>
-  </ItemGroup>
-  <ItemGroup>
-    <Filter Include="generated">
-      <UniqueIdentifier>{4fc7662b-b17a-49b9-acd1-0cf767183b06}</UniqueIdentifier>
-    </Filter>
-    <Filter Include="physics">
-      <UniqueIdentifier>{ccecd634-9321-4c49-9471-e9da50dda6d3}</UniqueIdentifier>
-    </Filter>
-  </ItemGroup>
-  <ItemGroup>
-    <None Include="Makefile.am" />
-  </ItemGroup>
-  <ItemGroup>
-    <LolFxCompile Include="front_camera_sprite.lolfx" />
-  </ItemGroup>
-</Project>
\ No newline at end of file
diff --git a/doc/samples/data/CatsSheet.png b/doc/samples/data/CatsSheet.png
deleted file mode 100644
index 1295072e741a2d41f14a2fe4f2b066d63c87a3b9..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 930330
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%0A)cS3i+msXtXqD+K*
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
T`xq454&Z=W*q*I6caQxKU8ryg

diff --git a/doc/samples/data/CatsSheet.xcf b/doc/samples/data/CatsSheet.xcf
deleted file mode 100644
index a7bd1c3bc57ec70199c0f4ff99440aa1823acf4a..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 950143
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%0DH<w9g<Y!W2f-db{yKWnif$_6a!XT&Q<`Y3p
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%0Ax-%BZrNN
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
L2VQ~D;<58T$6Quv

diff --git a/doc/samples/data/mesh-buffer.txt b/doc/samples/data/mesh-buffer.txt
deleted file mode 100644
index ab218dda..00000000
--- a/doc/samples/data/mesh-buffer.txt
+++ /dev/null
@@ -1,110 +0,0 @@
-addlight 0 position (0 0 15) color #bbb
-addlight 1 position (0 0 15) color #bbb
-//addlight 1 position (3 10 0) color #444
-clearcolor #ddd
-showgizmo true
-showlight true
-
-
-//SCENE SETUP END
-
-//addlight 0.0 position (1 0 1) color #0ff
-//addlight 0.0 position (-0.2 -1 -0.5) color (.0 .2 .5 1)
-
-//custom setmesh "sc#f00 ab 2 ty 1.5 ab 2"
-
-custom setmesh "
-
-//tqw
-//CMD TEST
-//sc#0f0 asph 1 10
-//sc#0f0 ab 10
-//sc#0f0 afcb 1 -.2
-//sc#0f0 acg 8 1 1 1 2 2 1.5 1.5 -.4
-//sc#0f0 as 6 1 2
-//sc#0f0 scb#f00 aes 6 1 2 2
-//sc#0f0 ac 6 5 2 2 false true true
-//sc#0f0 aq 1
-//splt 2 smth 4 0 1
-
-//[sc#0f0 ac 3 .5 .4 0 ty .25 [ad 3 .4 sy -1] ty .5 ac 3 1 .1 ty .5 dup [ rz 90 ry 90 scv#00f dup [ ry 90 scv#f00 ] ] ]
-//[sc#fff ab .1]
-
-//[sc#0f0 ac 3 .5 .4 0 ty .25 [ad 3 .4 sy -1] ty .5 ac 3 1 .1 ty .5 dup[rz 90 ry 90 scv#00f dup[ry 90 scv#f00]]][sc#fff ab .1]
-
-//[sc#fff ab 1 tx .5 ty .5]
-//[sc#fff ab 1 tx -.5 ty -.5]
-
-
-//[sc#fff ac 3 .5 .4 0 ty .25 [ad 3 .4 sy -1] ty .5 ac 3 1 .1 ty .5 [ad 3 .1 sy -1] ty 1]
-
-//smth 3 1 1 smth 8 0 1
-//[sc#fff loop 4 [ [loop 4 [ab 1 tx 2]] tz 2]]
-
-
-//[sc#f00 scb#f00 ac 3 .5 .4 0 ty .25 [ad 3 .4 sy -1] ty .5 ac 3 1 .1 .1 ty .5 rz -90]
-//[sc#00f scb#00f ac 3 .5 .4 0 ty .25 [ad 3 .4 sy -1] ty .5 ac 3 1 .1 .1 ty .5 rx 90]
-//[sc#f00 ab .2 tx 1]
-//[sc#0f0 ab .2 ty 1]
-//[sc#00f ab .2 tz 1]
-//sc#0f0 ab 2 ty 1.5 ab 2
-//sc#00f ab 2 ty 1.5 ab 2
-
-//sc#00f tqw lp 5[tz 11 [lp 6 [tx 5 ty 5 afcb 10 -1 ]]] tz -22
-
-// tqw
-sc#f00 ab 10 
-//tz 5
-//vm
-// splt 1
-// rj .2
-// splt 1
-// rj .2
-// smth 1 0 1
-
-//[sc#66f afcb(10) .25tx0]csgs[sc#fff afcb(10).25t(2)][[sc#6f6 afcb(7).25]csgs[sc#fff afcb(7).25t(1.5)]][[sc#f44 asph4 12t(-2.5)]csga[sc#fff afcb(7).25t(1.4)]csgs[sc#fff afcb(7).25t(2.5)]][[sc#ff0 ato6 2.5 1.2rx90tz-1.25tx-.9][sc#ff0 ab.5 2.1 .5dup[rz90sx.5ty-.8tx-.28]ty.55tx.25tz-.4taz1 1sy.8sx.8ty-.55tx-.25tz.4tz-1.2tx1.2]tz1.25tx1.25dup[sx-1ry90]tz-1.25tx-1.25]
-
-"
-
-//splt 0 
-//test
-//[sc#f8f ab 1 splt 4 twy 90]
-
-
-// splt 5 twy 90 0 
-//[sc#f8f afcb 10 10 10 .25 tx 0 splt 4 twy 1.6 0 ]
-//sc#fff
-//[afcb 1 1 1 -.1 tx 1]
-//[afcb 1 1 1 -.1 tx 0]
-//[afcb 1 1 1 -.1 tx -1]
-//[[afcb 1 1 1 -.1 tx 1]
-//[afcb 1 1 1 -.1 tx 0]
-//[afcb 1 1 1 -.1 tx -1]tz 1]
-//[[afcb 1 1 1 -.1 tx 1]
-//[afcb 1 1 1 -.1 tx 0]
-//[afcb 1 1 1 -.1 tx -1]tz -1]
-//[afcb 3 .2 3 -.05 ty -.6]
-
-
-//[sc#fff scb#fff ato 20 8 12 rx0]
-//[sc#fff scb#fff acg 8 2 5 1 6 8 4 2 .1 1]
-
-//[sc#fff ab 4 4 4 ]//twy 45 0 bdxy 90 0 splt 5 tz 2 
-//[sc#88f ab 4 4 4 tx 4 ab 4 4 4 tx -2 tax .4 .4 0]
-//[sc#88f ab .25 1 1 tx .25 ab .25 1 1 tx .25 ab .25 1 1 tx .25 ab .25 1 1 tx .125 stx 10 0 0]
- // tax -2 0 0 0
-//[sc#88f ab 4 4 4 tx 4 ab 4 4 4 tx -2 shz 1 0 0 0]
-//[sc#fff asph 4 4]
-//[sc#ff2 asph 4 4 tax .4 .4 0]
-//[sc#ff2 asph 2 4]
-//[sc#fff acap 1 4 4]
-//[sc#fff scb#fff ac 10 4 4 4 0 0 1]
-//[sc#ff2 scb#ff2 ad 10 4 0]
-//[sc#fff scb#fff at 4 1]
-//[sc#fff scb#000 aq 4 1]
-//[sc#fff scb#2ff aes 5 3 6 2]
-//[sc#fff scb#2ff as 4 2 4 0 0]
-//[sc#fff scb#fff acg 2 10 .1 .1 .4 .4 .1 .1 0 1]
-
-//[sc#ff2 asph 2 10 10 10]
-//[sc#400 asph 2 10 10 10 t 2 2 2 csgs]
diff --git a/doc/samples/data/meshviewer.easymesh.lua b/doc/samples/data/meshviewer.easymesh.lua
deleted file mode 100644
index 474298ad..00000000
--- a/doc/samples/data/meshviewer.easymesh.lua
+++ /dev/null
@@ -1,17 +0,0 @@
--- Gear 0: New style
-em0 = EasyMesh.New("Mesh0");
-
-em0:SetColor("#f00")
-em0:AddBox(2)
-em0:TranslateY(1.5)
-em0:AddBox(2.5)
-
--- Gear 1: New style
-em1 = EasyMesh.New("Mesh1");
-
-em1:SetColor("#0f0")
-em1:AddBox(2.5)
-em1:TranslateY(2)
-em1:AddBox(2)
-
-
diff --git a/doc/samples/data/meshviewer.init.lua b/doc/samples/data/meshviewer.init.lua
deleted file mode 100644
index fa96f64b..00000000
--- a/doc/samples/data/meshviewer.init.lua
+++ /dev/null
@@ -1,19 +0,0 @@
-s0 = SceneSetup.New("DefaultSetup")
-
-s0:AddLight("Point")
-    s0:Position(0, 0, 15)
-    s0:Color("#bbb")
-s0:AddLight("Directional")
-    s0:Position(0, 0, 15)
-    s0:Color("#bbb")
---addlight 1 position (3 10 0) color #444
-
-s0:Setup()
-    s0:Color("#ddd")
-    s0:Show("Gizmo")
-    s0:Show("Light")
-
---SCENE SETUP END
-
---addlight 0.0 position (1 0 1) color #0ff
---addlight 0.0 position (-0.2 -1 -0.5) color (.0 .2 .5 1)
diff --git a/doc/samples/data/test-texture.png b/doc/samples/data/test-texture.png
deleted file mode 100644
index d49b4dc7b48869f9afa10416bd342c21d7b3ad42..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 2570
zcmeHIiCa@w7Jn}<_)?IBpi+bc;>5~YhytTwk>Ie23Q<rtg@7z!u~2ph$b&Chq(DPO
zL<>U{l`U+tRS<|<L5qU26(PbXiiT}KO!5&(=F$1)ubAHRo$uUx&bjxy_ji_iiRtd5
zuBxL70D$^oSH}|o0HRY6z(J^p68Lzb0vqmd%mDzJeo|WxQUL%6U>@~yLiPSdN@b`Q
zUwK(6=Az5L#$O2h{~$nfOCLgC`&F!~Z#)3tg_{gUj$Zl-Rq7--`6PJ8ge4>g#f1XQ
zpos4h%-o&4C`lG(R%Ux?wAHv90I((Pu%m-lO29(dTv7#XD>vemH1or;UwF;9{@LZ*
zc-oB1fS&HoTgz-yoAHPabw&EIv-a%|#>S?jt_R??CDQju#PHMu;8*o6!mC6Uwgmbu
zcp5q&v}WmJJVj2jXU>4Fb6eS9VKYM{Z{C<(_ZTRQGLTf@L~It@Kt5h*fmyMon7HNg
zh)lXlY<{6l@+W%SLJ3qX_{@rs@n);b=4Veq?9$UVP33fC6f=_=X&}EBfAzPgt!ME*
z-wQ1q54Y_Z@a!Zu4(vOXjT(5xQN5%=H~7{HC(p}-tnoRSG~1BKhzt7xrj`{x2b<1n
zR}SMF#ysQApDdbS8O26rohDdY^^Nh!K^zUEsZE2UIh1P4=ir5Pk(t`|QAhywgA=u`
zbI5I2fb}1Ng4-H3Pp9!|S3^oQmi<^0kb$3Cjx{nW4R3(&Q<Z5icWAozXqEV8oPXK3
z5<UhxBgDp4gf1j$&|>eKGOM6BzLd!ra;#*8-;6X1n>9nek*y+$n<Tt@h(%_R8$V?Y
z&8v6lvA$uWB<q3Q`B=3%(A!R*mz&a$52`DgbTt+YaiYcF)}OFhqdzE;{4~C+)h|z~
zzmUg6!w}t|=m$R_=Low$DMy&k-l#V-ZsT+0(A8?V|3>~SwxHc&HU08@Og>%hfSM_B
z+m5MF_nZ<aU@{2HCEt7(3eF)JP0qwtyiXcsPgYpZt`(!oCuazank^`uW=+d{`6uAV
z8(F`PKo74|nzXE!yBRfFDc3SUDn+1b?oFU!@{lux(#$~CC|DahE#NW2ixdhEQo}Ib
z$xv~JeK+$V7@~xdE*eW!1dzmzg?+r{urB?VM~)A?N$X*2wI7k09|N4>?P=4NQ(qgV
zE4Q8Gs-lj&Q50JdB0qH+hyuS4WN<PSN;S8!<q9#lB8Ra3po_n{4tPPY5#NY+9o9qR
zm`XYN<dBJdk0D*=Sp)frT-@rCIT15{qTVUpTQ%RE;~2p$9SzCcr{`;3i(l`>7#`}H
zI6@s0AEfgCr@VGYK0P3{l*H?&XArvea47+g6x}3R{+f+8AbkMH{*K85;)On2(*gAI
z^Z#Icn|)EiHFspZmxYu!Gu}h|ZvJ|p&B5_XoXA8UnfK)CUFs13P3{ah_2H^8)9=Dw
z?X+}>>NP+$BTyujA*t43qVD@K?1E8eWPXTLM=qb&1-IXLjpJqHG8beaQ#d|u1T}eb
zBmdm?{*!jr=!TI;@3Oztn>g5EUpM+TvN17pRBVD39?X7S{^6r4IH3Ep92cn^CFa+<
z+?}$%X&jsf<nnZmxAqWOcwj5`L{xr>WES!gF;dT*^G<}~kk>c9bORS{6EujAe36#)
z=$JYvhZ@X@C$q4~iUkJah}MRl>ms2lzI5#us92A`JDAM>*;cY2E`hZ4D31q8S0?JP
z?RGo?<v4dHDITFuvq^)pQvMuxgrM<5pQ*?G1DiQ$D@2Z)92}n7u`6D92R==3y#-yb
zi0l04W_EZc?zUQ<dY*tBSez`=cr3?UfO=vo1P)f+_qtZ;eFvS`vWR6m_X2)1>oT^M
zp!F)gXMZKH@BE^o$9mC*@Nj9HHds`7#Lj-oMRMtO9VE78kr_A(c#vcT52qp;&he|F
z0GW13`2bv%c>bBZ$<7;|k^DGtM0%V%+}y)9PvGO8E~Gi(+_S1r2D~l$!`-y5twH18
zmdtLO`(0zzTdc<e3uq!1w&l&veV8^oq(_bSyNZ}psrZ0)jgozaG5#={lM$J=dCUvU
z3yc~;BYU+b)~s_@LOta@QKm9uI^Bx2*a+_0eyOAzx6k<kFa9iq=rmyzczyEP!V0NU
zHvu23^=q0I4O3qL%ptW@A&G@uPoY%L-?x})MaD2n4#o3rcrrD@ynQYToCA#1s$eUe
zs&-H!gACrpGxc+79(jE^**kY;$EosOwA)GcvhXw**y8o-WiwI*4Z}A-!wCf*<d`ce
z1&WL;H&~<hW9K6=wAm)s)A+K9cgAl8SWY>CNe#x!Qt<3`Ianm+WCkJ$PSKSkeoINu
zhPozvQC#cKRkkvgByWg&<XzOGl6)YSxs<fY|E;Md+~tkTy_ouk+udu#=wAgKc5-*D
IKg7!Z4|>WmrvLx|

diff --git a/doc/samples/front_camera_sprite.lolfx b/doc/samples/front_camera_sprite.lolfx
deleted file mode 100644
index b6eb58cf..00000000
--- a/doc/samples/front_camera_sprite.lolfx
+++ /dev/null
@@ -1,115 +0,0 @@
-
-[vert.glsl]
-#version 130
-
-in vec3 in_position;
-in vec4 in_color;
-in vec4 in_texcoord;
-
-uniform mat4  u_model_view;
-uniform mat3  u_normal_mat;
-uniform mat4  u_proj;
-uniform float u_sprite_orientation;
-
-out vec4 pass_texcoord;
-out vec4 pass_color;
-
-void main(void)
-{
-    vec4 vertex = u_model_view * vec4(in_position - vec3(0.0,0.5,0.0), 1.0);
-
-    vec3 v_offset = vec3(1.0 * in_texcoord.z, -1.0 * in_texcoord.w, 0.0);
-
-    float sinX = sin(u_sprite_orientation);
-    float cosX = cos(u_sprite_orientation);
-    float sinY = sinX;
-    mat2 rotationMatrix = mat2(cosX, -sinX, sinY, cosX);
-
-    v_offset.xy = rotationMatrix * v_offset.xy;
-
-    //Billboard calculations
-    vertex.xyz += v_offset;
-
-    //pass datas
-    pass_texcoord = in_texcoord;
-    pass_color = in_color;
-
-    gl_Position = u_proj * vertex;
-}
-
-[frag.glsl]
-#version 130
-
-#if defined GL_ES
-precision highp float;
-#endif
-
-in vec4 pass_texcoord;
-in vec4 pass_color;
-
-uniform sampler2D   u_texture;
-uniform float       u_sprite_flip;
-
-const float cos_45      = 0.70710678118;
-const float PI = 3.14159265358979323846264;
-
-vec3 rgb2hsv(vec3 c)
-{
-    vec4 K = vec4(0.0, -1.0 / 3.0, 2.0 / 3.0, -1.0);
-    vec4 p = c.g < c.b ? vec4(c.bg, K.wz) : vec4(c.gb, K.xy);
-    vec4 q = c.r < p.x ? vec4(p.xyw, c.r) : vec4(c.r, p.yzx);
-
-    float d = q.x - min(q.w, q.y);
-    float e = 1.0e-10;
-    return vec3(abs(q.z + (q.w - q.y) / (6.0 * d + e)), d / (q.x + e), q.x);
-}
-
-vec3 hsv2rgb(vec3 c)
-{
-    vec4 K = vec4(1.0, 2.0 / 3.0, 1.0 / 3.0, 3.0);
-    vec3 p = abs(fract(c.xxx + K.xyz) * 6.0 - K.www);
-    return c.z * mix(K.xxx, clamp(p - K.xxx, 0.0, 1.0), c.y);
-}
-
-const int sample_nb = 2;
-
-void main(void)
-{
-    vec2 texcoord = pass_texcoord.xy - vec2(pass_texcoord.z * u_sprite_flip, 0.0);
-    vec4 color = texture2D(u_texture, texcoord) * pass_color;
-
-    //need 130 : ivec2 tex_size = textureSize(u_texture, 0);
-    if (color.a < 0.9)
-    {
-        bool break_loop = false;
-        for (int x = -sample_nb; x <= sample_nb; x++)
-        {
-            for (int y = -sample_nb; y <= sample_nb; y++)
-            {
-                if (x != 0 && y != 0)
-                {
-                    vec2 new_tc = clamp(texcoord + (vec2(x, y) / 1024.0), vec2(0.0), vec2(1.0));
-                    vec4 new_col = texture2D(u_texture, new_tc);
-                    //need 130 : vec4 new_col = texelFetch(u_texture, ivec2(tex_size * texcoord) + ivec2(x, y), 0);
-                    if (new_col.a > 0.9)
-                    {
-                        color = vec4(0.0, 0.0, 0.0, 1.0);
-                        break_loop = true;
-                        //x = sample_nb + 1;
-                        //y = sample_nb + 1;
-                    }
-                    if (break_loop)
-                        break;
-                }
-            }
-            if (break_loop)
-                break;
-        }
-    }
-    if (color.a < 0.01)
-        discard;
-    vec3 hsv = rgb2hsv(color.rgb);
-    hsv.x = fract(hsv.x + rgb2hsv(pass_color.rgb).x);
-    gl_FragColor = vec4(hsv2rgb(hsv), color.a);
-}
-
diff --git a/doc/samples/math/Makefile.am b/doc/samples/math/Makefile.am
deleted file mode 100644
index 619d7a8c..00000000
--- a/doc/samples/math/Makefile.am
+++ /dev/null
@@ -1,15 +0,0 @@
-
-include $(top_srcdir)/build/autotools/common.am
-
-if BUILD_SAMPLES
-noinst_PROGRAMS = pi poly
-endif
-
-pi_SOURCES = pi.cpp
-pi_CPPFLAGS = $(AM_CPPFLAGS)
-pi_DEPENDENCIES = @LOL_DEPS@
-
-poly_SOURCES = poly.cpp
-poly_CPPFLAGS = $(AM_CPPFLAGS)
-poly_DEPENDENCIES = @LOL_DEPS@
-
diff --git a/doc/samples/math/pi.cpp b/doc/samples/math/pi.cpp
deleted file mode 100644
index 04928396..00000000
--- a/doc/samples/math/pi.cpp
+++ /dev/null
@@ -1,55 +0,0 @@
-//
-//  Lol Engine — Sample math program: compute Pi
-//
-//  Copyright © 2005—2019 Sam Hocevar <sam@hocevar.net>
-//
-//  This program is free software. It comes without any warranty, to
-//  the extent permitted by applicable law. You can redistribute it
-//  and/or modify it under the terms of the Do What the Fuck You Want
-//  to Public License, Version 2, as published by the WTFPL Task Force.
-//  See http://www.wtfpl.net/ for more details.
-//
-
-#if HAVE_CONFIG_H
-#   include "config.h"
-#endif
-
-#include <iostream>
-#include <iomanip>
-
-#include <lol/engine.h>
-
-using lol::real;
-
-int main(int argc, char **argv)
-{
-    UNUSED(argc, argv);
-
-    std::cout << std::setprecision(150);
-    std::cout << "      0: " << real::R_0() << '\n';
-    std::cout << "      1: " << real::R_1() << '\n';
-    std::cout << "sqrt(2): " << real::R_SQRT2() << '\n';
-    std::cout << "sqrt(½): " << real::R_SQRT1_2() << '\n';
-    std::cout << "  ln(2): " << real::R_LN2() << '\n';
-    std::cout << "      e: " << real::R_E() << '\n';
-    std::cout << "      π: " << real::R_PI() << '\n';
-
-    // Gauss-Legendre computation of Pi — six iterations are enough for 150 digits
-    real a = 1.0, b = real::R_SQRT1_2(), t = 0.25, p = 1.0;
-
-    for (int i = 0; i < 6; i++)
-    {
-        real tmp = (a - b) * (real)0.5;
-        b = sqrt(a * b);
-        a -= tmp;
-        t -= p * tmp * tmp;
-        p += p;
-    }
-
-    real sum = a + b;
-    sum = sum * sum / ((real)4 * t);
-    std::cout << "         " << sum << '\n';
-
-    return EXIT_SUCCESS;
-}
-
diff --git a/doc/samples/math/poly.cpp b/doc/samples/math/poly.cpp
deleted file mode 100644
index a7eead7d..00000000
--- a/doc/samples/math/poly.cpp
+++ /dev/null
@@ -1,31 +0,0 @@
-//
-//  Lol Engine — Sample math program: polynomials
-//
-//  Copyright © 2005—2017 Sam Hocevar <sam@hocevar.net>
-//
-//  This program is free software. It comes without any warranty, to
-//  the extent permitted by applicable law. You can redistribute it
-//  and/or modify it under the terms of the Do What the Fuck You Want
-//  to Public License, Version 2, as published by the WTFPL Task Force.
-//  See http://www.wtfpl.net/ for more details.
-//
-
-#if HAVE_CONFIG_H
-#   include "config.h"
-#endif
-
-#include <cstdio>
-
-#include <lol/engine.h>
-
-using namespace lol;
-
-int main(int argc, char **argv)
-{
-    UNUSED(argc, argv);
-
-    polynomial<polynomial<float>> p;
-
-    return EXIT_SUCCESS;
-}
-
diff --git a/doc/samples/physicobject.h b/doc/samples/physicobject.h
deleted file mode 100644
index 5226b1c2..00000000
--- a/doc/samples/physicobject.h
+++ /dev/null
@@ -1,446 +0,0 @@
-//
-//  Lol Engine — Bullet physics test
-//
-//  Copyright © 2009—2013 Cédric Lecacheur <jordx@free.fr>
-//            © 2009—2013 Benjamin “Touky” Huet <huet.benjamin@gmail.com>
-//            © 2012—2018 Sam Hocevar <sam@hocevar.net>
-//
-//  Lol Engine is free software. It comes without any warranty, to
-//  the extent permitted by applicable law. You can redistribute it
-//  and/or modify it under the terms of the Do What the Fuck You Want
-//  to Public License, Version 2, as published by the WTFPL Task Force.
-//  See http://www.wtfpl.net/ for more details.
-//
-
-#pragma once
-
-/* FIXME: this file is pure crap; it's only a test. */
-
-#include <lol/engine.h>
-
-#include "easymesh/easymesh.h"
-#include "physics/easyphysics.h"
-#include "physics/easycharactercontroller.h"
-#include "physics/easyconstraint.h"
-
-using namespace lol;
-using namespace lol::phys;
-
-#if CAT_MODE
-#define USE_SPHERE          1
-#else
-#define USE_BOX             1
-#define USE_SPHERE          1
-#define USE_CONE            1
-#define USE_CYLINDER        1
-#define USE_CAPSULE         1
-#endif
-
-class PhysicsObject : public WorldEntity
-{
-public:
-    PhysicsObject(Simulation* new_sim, const vec3 &base_location, const quat &base_rotation)
-      : m_custom_shader(0),
-        m_ready(false),
-        m_should_render(true),
-        m_is_character(false),
-        m_is_phys(false)
-    {
-        m_physics = new EasyPhysic(this);
-
-        //m_mesh.Compile("[sc#ddd afcb 60 1 60 -.1]");
-        m_mesh.SetCurColor(Color::white);
-        m_mesh.AppendFlatChamfBox(vec3(60.f, 1.f, 60.f), -.1f);
-
-        vec3 BoxSize = vec3(60.f, 1.f, 60.f);
-        m_physics->SetCollisionChannel(0, 0xFF);
-        m_physics->SetShapeToBox(BoxSize);
-        m_physics->SetMass(.0f);
-        m_physics->SetTransform(base_location, base_rotation);
-        m_physics->InitBodyToRigid(true);
-        m_physics->AddToSimulation(new_sim);
-    }
-
-    PhysicsObject(Simulation* new_sim, const vec3 &base_location, const quat &base_rotation, int dummy)
-      : m_custom_shader(0),
-        m_ready(false),
-        m_should_render(true),
-        m_is_character(false),
-        m_is_phys(false)
-    {
-        if (dummy == 1) //for platform purpose
-        {
-            m_physics = new EasyPhysic(this);
-
-            m_mesh.Compile("[sc#ddd afcb 20 1 20 -.1]");
-            vec3 BoxSize = vec3(20.f, 1.f, 20.f);
-            m_physics->SetCollisionChannel(0, 0xFF);
-            m_physics->SetShapeToBox(BoxSize);
-            m_physics->SetMass(.0f);
-            m_physics->SetTransform(base_location, base_rotation);
-            m_physics->InitBodyToRigid(true);
-            m_physics->AddToSimulation(new_sim);
-        }
-        else if (dummy == 2) //for character purpose
-        {
-            m_character = new EasyCharacterController(this);
-            m_is_character = true;
-            //m_mesh.Compile("[sc#f00 afcb10 10 10 -.1]");
-            m_mesh.Compile(
-                "[sc#000 scb#000"
-                //"[sc#aaa scb#aaa"
-                "[ad8 2 0 rx180 ty-1]"
-                "[asph8 .5 ty1]"
-                "[ac32 2 .5 .5 0 0]"
-                "[asph6 .1 ty.9 tx.5 tz.15]"
-                "[asph6 .1 ty.9 tx.5 tz-.15]"
-                "[asph8 .05 sy10 ty.6 tz.5]"
-                "[asph8 .05 sy10 ty.6 tz-.5]"
-                "]"
-                "[sc#fd0 scb#fd0"
-                "[ac8 .4 .1 0 0 0 ty.25 rz-90 ty.7 tx.5]"
-                "]"
-                "["
-                "[sc#fff scb#fff"
-                "[ad8 2 0 rx180 ty-1]"
-                "[asph8 .5 ty1]"
-                "[ac32 1.9 .5 .5 0 0]"
-                "]"
-                " ty-.1 tx.05]"
-                );
-            vec3 BoxSize = vec3(1.f, 2.f, 1.f);
-            m_character->SetCollisionChannel(0, 0xFF);
-            m_character->SetShapeToCapsule(BoxSize.x, BoxSize.y);
-            m_character->SetMass(.0f);
-            //m_character->SetStepHeight(1.f);
-            m_character->SetTransform(base_location, base_rotation);
-            m_character->InitBodyToGhost();
-            m_character->AddToSimulation(new_sim);
-        }
-        else if (dummy == 3) //for Stairs purpose
-        {
-            m_physics = new EasyPhysic(this);
-
-            m_mesh.Compile("[sc#aae afcb4 .25 4 -.01]");
-            vec3 BoxSize = vec3(4.f, .25f, 4.f);
-            m_physics->SetCollisionChannel(0, 0xFF);
-            m_physics->SetShapeToBox(BoxSize);
-            m_physics->SetMass(.0f);
-            m_physics->SetTransform(base_location, base_rotation);
-            m_physics->InitBodyToRigid(true);
-            m_physics->AddToSimulation(new_sim);
-        }
-    }
-
-    PhysicsObject(Simulation* new_sim, float base_mass, const vec3 &base_location, int RandValue = -1)
-      : m_custom_shader(0),
-        m_ready(false),
-        m_should_render(true),
-        m_is_character(false),
-        m_is_phys(false)
-    {
-        static array<EasyMesh> MeshRand;
-        static array<int> MeshLimit;
-        static array<int> MeshType;
-
-        if (!MeshRand.count())
-        {
-            array<std::string> colors_base = { "#add", "#dad", "#dda", "#daa", "#ada", "#aad" };
-
-            MeshLimit << 0;
-
-#if USE_BOX
-            {
-                array<std::string> colors = colors_base;
-                while (colors.count())
-                {
-                    EasyMesh m;
-                    vec4 color = Color::C8BppHexString(colors.pop());
-                    m.SetCurColor(color);
-                    m.AppendFlatChamfBox(vec3(1.7f), .4f);
-                    m.OpenBrace();
-                    {
-                        m.SetCurColor(Color::black);
-                        m.ToggleScaleWinding();
-                        m.AppendFlatChamfBox(vec3(1.9f), .4f);
-                        m.ScaleX(-1.f);
-                        m.ScaleY(-1.f);
-                        m.ScaleZ(-1.f);
-                    }
-                    m.CloseBrace();
-                    MeshRand << m;
-                }
-            }
-            //MeshRand << "[sc#add afcb1.7 1.7 1.7 0.4][sc#000 tsw afcb1.9 1.9 1.9 0.4 sx-1 sy-1 sz-1]";
-            //MeshRand << "[sc#dad afcb1.7 1.7 1.7 0.4][sc#000 tsw afcb1.9 1.9 1.9 0.4 sx-1 sy-1 sz-1]";
-            //MeshRand << "[sc#dda afcb1.7 1.7 1.7 0.4][sc#000 tsw afcb1.9 1.9 1.9 0.4 sx-1 sy-1 sz-1]";
-            //MeshRand << "[sc#daa afcb1.7 1.7 1.7 0.4][sc#000 tsw afcb1.9 1.9 1.9 0.4 sx-1 sy-1 sz-1]";
-            //MeshRand << "[sc#ada afcb1.7 1.7 1.7 0.4][sc#000 tsw afcb1.9 1.9 1.9 0.4 sx-1 sy-1 sz-1]";
-            //MeshRand << "[sc#aad afcb1.7 1.7 1.7 0.4][sc#000 tsw afcb1.9 1.9 1.9 0.4 sx-1 sy-1 sz-1]";
-
-            MeshLimit << MeshRand.count();
-            MeshType << 0;
-#endif //USE_BOX
-
-
-#if USE_SPHERE
-#if CAT_MODE
-            int nb_sprite = NB_SPRITE;
-            //SPRITE
-            vec2 start_point = vec2((float)rand(nb_sprite), (float)rand(nb_sprite)) / vec2((float)nb_sprite);
-            //vec2(0.f, .0f) / vec2((float)nb_sprite);
-            vec2 size = vec2(1.f) / vec2((float)nb_sprite);
-            m_mesh.BD()->SetTexCoordCustomBuild(MeshType::Quad, MeshFaceType::QuadDefault,
-                start_point, start_point + size);
-            m_mesh.BD()->SetTexCoordCustomBuild2(MeshType::Quad, MeshFaceType::QuadDefault,
-                vec2(-PARTICLE_SIZE), vec2(PARTICLE_SIZE));
-            MeshRand << "[tpbn tvnc sc#ffff aq 0 0]";
-            MeshRand << "[tpbn tvnc sc#faaf aq 0 0]";
-            MeshRand << "[tpbn tvnc sc#afaf aq 0 0]";
-            MeshRand << "[tpbn tvnc sc#aaff aq 0 0]";
-#else
-            {
-                array<std::string> colors = colors_base;
-                while (colors.count())
-                {
-                    EasyMesh m;
-                    vec4 color = Color::C8BppHexString(colors.pop());
-                    m.SetCurColor(color);
-                    m.AppendSphere(1, 2.f);
-                    MeshRand << m;
-                }
-            }
-            //MeshRand << "[sc#add asph1 2]";
-            //MeshRand << "[sc#dad asph1 2]";
-            //MeshRand << "[sc#dda asph1 2]";
-            //MeshRand << "[sc#daa asph1 2]";
-            //MeshRand << "[sc#ada asph1 2]";
-            //MeshRand << "[sc#aad asph1 2]";
-#endif
-
-            MeshLimit << MeshRand.count();
-            MeshType << 1;
-#endif //USE_SPHERE
-
-#if USE_CONE
-            {
-                array<std::string> colors = colors_base;
-                while (colors.count())
-                {
-                    EasyMesh m;
-                    vec4 color = Color::C8BppHexString(colors.pop());
-                    m.SetCurColor(color);
-                    m.SetCurColorB(color);
-                    m.AppendDisc(8, 2.f);
-                    m.RotateX(180.f);
-                    m.TranslateY(-1.f);
-                    m.AppendCylinder(8, 2.f, 2.f, 0.f);
-                    MeshRand << m;
-                }
-            }
-            //MeshRand << "[sc#add scb#add ad8 2 0 rx180 ty-1 ac8 2 2 0 0 0]";
-            //MeshRand << "[sc#dad scb#dad ad8 2 0 rx180 ty-1 ac8 2 2 0 0 0]";
-            //MeshRand << "[sc#dda scb#dda ad8 2 0 rx180 ty-1 ac8 2 2 0 0 0]";
-            //MeshRand << "[sc#daa scb#daa ad8 2 0 rx180 ty-1 ac8 2 2 0 0 0]";
-            //MeshRand << "[sc#ada scb#ada ad8 2 0 rx180 ty-1 ac8 2 2 0 0 0]";
-            //MeshRand << "[sc#aad scb#aad ad8 2 0 rx180 ty-1 ac8 2 2 0 0 0]";
-
-            MeshLimit << MeshRand.count();
-            MeshType << 2;
-#endif //USE_CONE
-
-#if USE_CYLINDER
-            {
-                array<std::string> colors = colors_base;
-                while (colors.count())
-                {
-                    EasyMesh m;
-                    vec4 color = Color::C8BppHexString(colors.pop());
-                    m.SetCurColor(color);
-                    m.SetCurColorB(color);
-                    m.AppendDisc(8, 2.f);
-                    m.RotateX(180.f);
-                    m.TranslateY(-1.f);
-                    m.MirrorY();
-                    m.AppendCylinder(8.f, 2.f, 2.f, 2.f);
-                    MeshRand << m;
-                }
-            }
-            //MeshRand << "[sc#add scb#add ad8 2 0 rx180 ty-1 my ac8 2 2 2 0 0]";
-            //MeshRand << "[sc#dad scb#dad ad8 2 0 rx180 ty-1 my ac8 2 2 2 0 0]";
-            //MeshRand << "[sc#dda scb#dda ad8 2 0 rx180 ty-1 my ac8 2 2 2 0 0]";
-            //MeshRand << "[sc#daa scb#daa ad8 2 0 rx180 ty-1 my ac8 2 2 2 0 0]";
-            //MeshRand << "[sc#ada scb#ada ad8 2 0 rx180 ty-1 my ac8 2 2 2 0 0]";
-            //MeshRand << "[sc#aad scb#aad ad8 2 0 rx180 ty-1 my ac8 2 2 2 0 0]";
-
-            MeshLimit << MeshRand.count();
-            MeshType << 3;
-#endif //USE_CYLINDER
-
-#if USE_CAPSULE
-            {
-                array<std::string> colors = colors_base;
-                while (colors.count())
-                {
-                    EasyMesh m;
-                    vec4 color = Color::C8BppHexString(colors.pop());
-                    m.SetCurColor(color);
-                    m.SetCurColorB(color);
-                    m.AppendCapsule(1, 2.f, 1.f);
-                    MeshRand << m;
-                }
-            }
-            //MeshRand << "[sc#add scb#add acap1 2 1]";
-            //MeshRand << "[sc#dad scb#dad acap1 2 1]";
-            //MeshRand << "[sc#dda scb#dda acap1 2 1]";
-            //MeshRand << "[sc#daa scb#daa acap1 2 1]";
-            //MeshRand << "[sc#ada scb#ada acap1 2 1]";
-            //MeshRand << "[sc#aad scb#aad acap1 2 1]";
-
-            MeshLimit << MeshRand.count();
-            MeshType << 4;
-#endif //USE_CAPSULE
-        }
-
-        int RandLimit = RandValue;
-        if (MeshLimit.count() <= RandValue || RandValue < 0)
-            RandLimit = rand((int)MeshLimit.count() - 1);
-        RandValue = rand(MeshLimit[RandLimit], MeshLimit[RandLimit + 1]);
-
-        m_physics = new EasyPhysic(this);
-
-        //m_mesh.Compile(MeshRand[RandValue]);
-        m_mesh = MeshRand[RandValue];
-        m_mesh.Scale(vec3(OBJ_SIZE));
-        vec3 BoxSize = vec3(2.0f) * OBJ_SIZE;
-        int ColGroup = 1;
-
-        switch (MeshType[RandLimit])
-        {
-            case 0:
-            {
-                m_physics->SetShapeToBox(BoxSize);
-                ColGroup += 0;
-                break;
-            }
-            case 1:
-            {
-                m_physics->SetShapeToSphere(BoxSize.x);
-                ColGroup += 1;
-                break;
-            }
-            case 2:
-            {
-                m_physics->SetShapeToCone(BoxSize.x, BoxSize.y);
-                ColGroup += 2;
-                break;
-            }
-            case 3:
-            {
-                m_physics->SetShapeToCylinder(BoxSize);
-                ColGroup += 3;
-                break;
-            }
-            case 4:
-            {
-                m_physics->SetShapeToCapsule(BoxSize.x, BoxSize.y);
-                ColGroup += 4;
-                break;
-            }
-            default:
-            {
-            }
-        }
-
-        m_physics->SetHitRestitution(1.0f);
-        m_physics->SetCollisionChannel(0, 0xFF);
-        //m_physics->SetCollisionChannel(ColGroup, (1 << ColGroup)|(1));
-        m_physics->SetMass(base_mass);
-        m_physics->SetTransform(base_location);
-        m_physics->InitBodyToRigid();
-        m_physics->AddToSimulation(new_sim);
-    }
-
-    void SetTransform(const lol::vec3& base_location, const lol::quat& base_rotation = lol::quat(lol::mat3(1.0f)))
-    {
-        if (m_is_character)
-            m_character->SetTransform(base_location, base_rotation);
-        else
-            m_physics->SetTransform(base_location, base_rotation);
-    }
-
-    lol::mat4 GetTransform()
-    {
-        if (m_is_character)
-            return m_character->GetTransform();
-        else
-            return m_physics->GetTransform();
-    }
-
-    void SetRender(bool should_render)
-    {
-        m_should_render = should_render;
-    }
-
-    void SetCustomShaderData(GpuShaderData* custom_shader)
-    {
-        m_custom_shader = custom_shader;
-    }
-    GpuShaderData* GetCustomShaderData()
-    {
-        return m_custom_shader;
-    }
-
-    EasyMesh *GetMesh() { return &m_mesh; }
-    EasyPhysic *GetPhysic() { return m_physics; }
-    EasyCharacterController *GetCharacter() { return m_character; }
-
-    ~PhysicsObject()
-    {
-    }
-
-    std::string GetName() const { return "<PhysicsObject>"; }
-
-protected:
-    virtual void tick_game(float seconds)
-    {
-        WorldEntity::tick_game(seconds);
-    }
-
-    virtual void tick_draw(float seconds, Scene &scene)
-    {
-        WorldEntity::tick_draw(seconds, scene);
-
-#if CAT_MODE
-        if (!m_is_phys || m_custom_shader)
-#endif //CAT_MODE
-        {
-            if (!m_ready)
-            {
-                m_mesh.MeshConvert();
-                /* FIXME: m_custom_shader is ignored */
-                m_ready = true;
-            }
-            else if (m_should_render)
-            {
-                if (m_is_character)
-                    m_mesh.Render(scene, m_character->GetTransform());
-                else
-                    m_mesh.Render(scene, m_physics->GetTransform());
-            }
-        }
-    }
-
-private:
-    // Base data
-    EasyMesh                 m_mesh;
-    EasyPhysic*              m_physics;
-    EasyCharacterController* m_character;
-    GpuShaderData*           m_custom_shader;
-
-    bool m_ready;
-    bool m_should_render;
-    bool m_is_character;
-    bool m_is_phys; /* Only used in CAT_MODE */
-};
-
diff --git a/doc/samples/physics/bulletcharactercontroller.cpp b/doc/samples/physics/bulletcharactercontroller.cpp
deleted file mode 100644
index 3a7d4341..00000000
--- a/doc/samples/physics/bulletcharactercontroller.cpp
+++ /dev/null
@@ -1,241 +0,0 @@
-//
-// Lol Engine
-//
-// Copyright: (c) 2010-2013 Sam Hocevar <sam@hocevar.net>
-//            (c) 2009-2013 Cédric Lecacheur <jordx@free.fr>
-//            (c) 2009-2013 Benjamin "Touky" Huet <huet.benjamin@gmail.com>
-//   This program is free software; you can redistribute it and/or
-//   modify it under the terms of the Do What The Fuck You Want To
-//   Public License, Version 2, as published by Sam Hocevar. See
-//   http://www.wtfpl.net/ for more details.
-//
-
-#if HAVE_CONFIG_H
-#   include "config.h"
-#endif
-
-#define USE_LOL_CTRLR_CHARAC
-
-#include <lol/engine.h>
-#include <stdio.h>
-#include "lolbtphysicsintegration.h"
-#include "lolphysics.h"
-#include "easycharactercontroller.h"
-#include "bulletcharactercontroller.h"
-//#include "LinearMath/btIDebugDraw.h"
-//#include "BulletCollision/CollisionDispatch/btGhostObject.h"
-//#include "BulletCollision/CollisionShapes/btMultiSphereShape.h"
-//#include "BulletCollision/BroadphaseCollision/btOverlappingPairCache.h"
-//#include "BulletCollision/BroadphaseCollision/btCollisionAlgorithm.h"
-//#include "BulletCollision/CollisionDispatch/btCollisionWorld.h"
-//#include "LinearMath/btDefaultMotionState.h"
-
-namespace lol
-{
-
-namespace phys
-{
-
-#ifdef USE_LOL_CTRLR_CHARAC
-
-//When called, will try to remove Character controller from its collision.
-bool BulletKinematicCharacterController::RecoverFromPenetration(btCollisionWorld* CollisionWorld)
-{
-    bool HasPenetration = false;
-
-    //Retrieve all pair with us colliding.
-    CollisionWorld->getDispatcher()->dispatchAllCollisionPairs(m_ghost_object->getOverlappingPairCache(), CollisionWorld->getDispatchInfo(), CollisionWorld->getDispatcher());
-    m_current_position = BT2LOLU_VEC3(m_ghost_object->getWorldTransform().getOrigin());
-
-    float MaxPen = .0f;
-    for (int i = 0; i < m_ghost_object->getOverlappingPairCache()->getNumOverlappingPairs(); i++)
-    {
-        m_manifold_array.resize(0);
-
-        //this is the equivalent of the "Touch algorithm". Maybe refactor ?
-        btBroadphasePair* CollisionPair = &m_ghost_object->getOverlappingPairCache()->getOverlappingPairArray()[i];
-        if (CollisionPair->m_algorithm)
-            CollisionPair->m_algorithm->getAllContactManifolds(m_manifold_array);
-
-        for (int j = 0; j < m_manifold_array.size(); ++j)
-        {
-            btPersistentManifold* CurMfold = m_manifold_array[j];
-            //Normal direction differs if we're Body0
-            float DirSign = CurMfold->getBody0() == m_ghost_object ? -1.f : 1.f;
-
-            for (int k = 0; k < CurMfold->getNumContacts(); k++)
-            {
-                const btManifoldPoint& MfPoint = CurMfold->getContactPoint(k);
-                float Dist = MfPoint.getDistance();
-                if (Dist < .0f)
-                {
-                    if (Dist < MaxPen)
-                    {
-                        MaxPen = Dist;
-                        m_touching_normal = BT2LOL_VEC3(MfPoint.m_normalWorldOnB) * DirSign;
-                    }
-                    m_current_position += BT2LOL_VEC3(MfPoint.m_normalWorldOnB) * DirSign * Dist * .2f;
-                    HasPenetration = true;
-                }
-            }
-        }
-    }
-
-    btTransform GObjMx = m_ghost_object->getWorldTransform();
-    GObjMx.setOrigin(LOL2BTU_VEC3(m_current_position));
-    m_ghost_object->setWorldTransform(GObjMx);
-
-    return HasPenetration;
-}
-
-//When the Controller hits a wall, we modify the target so the controller will MoveStep along the wall.
-void BulletKinematicCharacterController::UpdateTargetOnHit(const vec3& HitNormal, float TangentMag, float NormalMag)
-{
-    vec3 Movedir = m_target_position - m_current_position;
-    float MoveLength = (float)length(Movedir);
-
-    if (MoveLength > SIMD_EPSILON)
-    {
-        Movedir = normalize(Movedir);
-
-        vec3 ReflectDir = normalize(GetReflectedDir(Movedir, HitNormal));
-        vec3 ParallelDir = ProjectDirOnNorm(ReflectDir, HitNormal);
-        vec3 PerpindicularDir = ProjectDirOnNormPerpindicular(ReflectDir, HitNormal);
-
-        m_target_position = m_current_position;
-
-        if (NormalMag != .0f)
-            m_target_position += PerpindicularDir * NormalMag * MoveLength;
-    }
-}
-
-//Handles the actual Movement. It actually moves in the 3 dimensions, function name is confusing.
-void BulletKinematicCharacterController::DoMove(btCollisionWorld* CollisionWorld, const vec3& MoveStep, float DeltaTime)
-{
-    // phase 2: forward and strafe
-    m_target_position = m_current_position + MoveStep;
-    btTransform SweepStart, SweepEnd;
-    SweepStart.setIdentity();
-    SweepEnd.setIdentity();
-
-    float Fraction = 1.f;
-    float SqDist = .0f;
-
-    if (m_touching_contact && dot(m_normalized_direction, m_touching_normal) > .0f)
-        UpdateTargetOnHit(m_touching_normal);
-
-    //Let's loop on movement, until Movement fraction if below 0.01, which means we've reached our destination.
-    //Or until we'tried 10 times.
-    int MaxMoveLoop = 10;
-    while (Fraction > .01f && MaxMoveLoop-- > 0)
-    {
-        SweepStart.setOrigin(LOL2BTU_VEC3(m_current_position));
-        SweepEnd.setOrigin(LOL2BTU_VEC3(m_target_position));
-        vec3 SweepDirNeg(m_current_position - m_target_position);
-
-        ClosestNotMeConvexResultCallback SweepCallback(m_ghost_object, SweepDirNeg, .0f);
-        SweepCallback.m_collisionFilterGroup = GetGhostObject()->getBroadphaseHandle()->m_collisionFilterGroup;
-        SweepCallback.m_collisionFilterMask = GetGhostObject()->getBroadphaseHandle()->m_collisionFilterMask;
-
-        //The sweep test is done with an added margin, so we use it and then discard it
-        float SavedMargin = m_convex_shape->getMargin();
-        m_convex_shape->setMargin(SavedMargin + m_added_margin); //Apply Added Margin
-        if (m_do_gobject_sweep_test)
-            m_ghost_object->convexSweepTest (m_convex_shape, SweepStart, SweepEnd, SweepCallback, CollisionWorld->getDispatchInfo().m_allowedCcdPenetration);
-        else
-            CollisionWorld->convexSweepTest (m_convex_shape, SweepStart, SweepEnd, SweepCallback, CollisionWorld->getDispatchInfo().m_allowedCcdPenetration);
-        m_convex_shape->setMargin(SavedMargin); //Restore saved margin
-
-        Fraction -= SweepCallback.m_closestHitFraction;
-
-        if (SweepCallback.hasHit())
-        {
-            //We moved only a Fraction
-            float HitDist = (float)length(BT2LOLU_VEC3(SweepCallback.m_hitPointWorld) - m_current_position);
-
-            UpdateTargetOnHit(BT2LOL_VEC3(SweepCallback.m_hitNormalWorld));
-            vec3 NewDir = m_target_position - m_current_position;
-            SqDist = sqlength(NewDir);
-            if (SqDist > SIMD_EPSILON)
-            {
-                NewDir = normalize(NewDir);
-                //See Quake2: "If velocity is against original velocity, stop ead to avoid tiny oscilations in sloping corners."
-                if (dot(NewDir, m_normalized_direction) <= .0f)
-                    break;
-            }
-            else
-                break;
-        }
-        else //We moved whole way
-            m_current_position = m_target_position;
-    }
-}
-
-//The PreStep is done in order to recover from any HasPenetration.
-void BulletKinematicCharacterController::PreStep(btCollisionWorld* CollisionWorld)
-{
-    int MaxPenetrationLoop = 0;
-    m_touching_contact = false;
-
-    while (RecoverFromPenetration(CollisionWorld))
-    {
-        MaxPenetrationLoop++;
-        m_touching_contact = true;
-        if (MaxPenetrationLoop > 4)
-            break;
-    }
-
-    m_current_position = BT2LOLU_VEC3(m_ghost_object->getWorldTransform().getOrigin());
-    m_target_position = m_current_position;
-}
-
-//And so we step :
-//StepUpfirst, then movement, then StepDownon the ground.
-void BulletKinematicCharacterController::PlayerStep(btCollisionWorld* CollisionWorld, float DeltaTime)
-{
-    // quick check...
-    if (!m_use_walk_direction && m_velocity_time_interval <= .0f)
-        return;        // no motion
-
-    // Update fall velocity.
-    //m_velocity -= m_gravity * DeltaTime;
-
-    btTransform NewTransform;
-    NewTransform = m_ghost_object->getWorldTransform();
-
-    vec3 MoveStep(.0f);
-    if (m_use_walk_direction)
-        MoveStep = m_walk_direction;
-    else
-    {
-        //Still have some time left for moving!
-        float dtMoving = (DeltaTime < m_velocity_time_interval) ? DeltaTime : m_velocity_time_interval;
-        m_velocity_time_interval -= DeltaTime;
-
-        // how far will we MoveStep while we are moving?
-        MoveStep = m_walk_direction * dtMoving;
-    }
-
-    //Okay, step !
-    DoMove(CollisionWorld, MoveStep, DeltaTime);
-
-    //Movement finished, update World transform
-    NewTransform.setOrigin(LOL2BTU_VEC3(m_current_position));
-    m_ghost_object->setWorldTransform(NewTransform);
-}
-
-//should MoveStep Jump logic in EasyCC
-void BulletKinematicCharacterController::Jump()
-{
-    if (!CanJump())
-        return;
-
-    m_vertical_velocity = m_jump_speed;
-    m_was_jumping = true;
-}
-
-#endif // USE_LOL_CTRLR_CHARAC
-
-    } /* namespace phys */
-
-} /* namespace lol */
diff --git a/doc/samples/physics/bulletcharactercontroller.h b/doc/samples/physics/bulletcharactercontroller.h
deleted file mode 100644
index 9bced33d..00000000
--- a/doc/samples/physics/bulletcharactercontroller.h
+++ /dev/null
@@ -1,285 +0,0 @@
-//
-// Lol Engine
-//
-// Copyright: (c) 2010-2013 Sam Hocevar <sam@hocevar.net>
-//            (c) 2009-2013 Benjamin "Touky" Huet <huet.benjamin@gmail.com>
-//   This program is free software; you can redistribute it and/or
-//   modify it under the terms of the Do What The Fuck You Want To
-//   Public License, Version 2, as published by Sam Hocevar. See
-//   http://www.wtfpl.net/ for more details.
-//
-
-//
-// The BulletCharacterController class
-// ------------------
-// This class is a equivalent of btKinematicCharacterController, but more useful for Lol.
-//
-
-#if !defined __BULLETCHARACTERCONTROLLER_BULLETCHARACTERCONTROLLER_H__
-#define __BULLETCHARACTERCONTROLLER_BULLETCHARACTERCONTROLLER_H__
-
-#include <lol/engine.h>
-#include "easyphysics.h"
-//#include "BulletDynamics\Character\btCharacterControllerInterface.h"
-
-#define USE_LOL_CTRLR_CHARAC
-
-namespace lol
-{
-
-    namespace phys
-    {
-
-#ifdef USE_LOL_CTRLR_CHARAC
-
-    //SweepCallback used for Swweep Tests.
-    class ClosestNotMeConvexResultCallback : public btCollisionWorld::ClosestConvexResultCallback
-    {
-    public:
-        ClosestNotMeConvexResultCallback(btCollisionObject* NewMe, const vec3& NewUp, float MinSlopeDot) :
-                        btCollisionWorld::ClosestConvexResultCallback(LOL2BTU_VEC3(vec3(.0f)), LOL2BTU_VEC3(vec3(.0f))),
-                        m_me(NewMe),
-                        m_up(NewUp),
-                        m_min_slope_dot(MinSlopeDot) { }
-
-        virtual btScalar addSingleResult(btCollisionWorld::LocalConvexResult& ConvexResult, bool NormalInWorld)
-        {
-            //We hit ourselves, FAIL
-            if (ConvexResult.m_hitCollisionObject == m_me)
-                return btScalar(1.f);
-
-            vec3 WorldHitNomal(.0f);
-            if (NormalInWorld)
-                WorldHitNomal = BT2LOL_VEC3(ConvexResult.m_hitNormalLocal);
-            else //need to transform Normal into worldspace
-            {
-                btVector3 TmpWorldHitNormal = ConvexResult.m_hitCollisionObject->getWorldTransform().getBasis() * ConvexResult.m_hitNormalLocal;
-                WorldHitNomal = BT2LOL_VEC3(TmpWorldHitNormal);
-            }
-
-            float DotUp = dot(m_up, WorldHitNomal);
-            //We hit below the accepted slope_dot, FAIL
-            if (DotUp < m_min_slope_dot)
-                return btScalar(1.f);
-
-            //Continue to next.
-            return ClosestConvexResultCallback::addSingleResult(ConvexResult, NormalInWorld);
-        }
-    protected:
-        btCollisionObject*    m_me;
-        const vec3            m_up;
-        float                m_min_slope_dot;
-    };
-
-        ///BulletKinematicCharacterController is an object that supports a sliding motion in a world.
-        ///It uses a ghost object and convex sweep test to test for upcoming collisions. This is combined with discrete collision detection to recover from penetrations.
-        ///Interaction between btKinematicCharacterController and dynamic rigid bodies needs to be explicity implemented by the user.
-        class BulletKinematicCharacterController : public btActionInterface
-        {
-        public:
-            BulletKinematicCharacterController(btPairCachingGhostObject* NewGhostObject, btConvexShape* NewConvexShape, float NewStepHeight, int NewUpAxis=1)
-            {
-                m_convex_shape = NewConvexShape;
-                m_i_up_axis = NewUpAxis;
-                m_ghost_object = NewGhostObject;
-                m_step_height = NewStepHeight;
-
-                m_added_margin = 0.02f;
-                m_walk_direction = vec3(.0f, .0f, .0f);
-                m_do_gobject_sweep_test = true;
-                m_turn_angle = .0f;
-                m_use_walk_direction = false; // Should remove walk direction, this doesn't work correctly.
-                m_velocity_time_interval = .0f;
-                m_vertical_velocity = .0f;
-                m_vertical_offset = .0f;
-                m_f_gravity = 9.8f * 3.f; // 3G acceleration.
-                m_fall_speed = 55.f; // Terminal velocity of a sky diver in m/s.
-                m_jump_speed = 10.f; // ?
-                m_was_on_ground = false;
-                m_was_jumping = false;
-                SetMaxSlope(45.f);
-            }
-            ~BulletKinematicCharacterController() { }
-
-        protected:
-
-            static vec3* GetUpAxisDirections()
-            {
-                static vec3 sUpAxisDirection[3] = { vec3(1.0f, 0.0f, 0.0f), vec3(0.0f, 1.0f, 0.0f), vec3(0.0f, 0.0f, 1.0f) };
-
-                return sUpAxisDirection;
-            }
-
-            //--------------------------
-            //CONVENIENCE FUNCTIONS
-            //--
-
-            //Returns the reflection Direction of a ray going 'Direction' hitting a surface with Normal 'Normal' from: http://www-cs-students.stanford.edu/~adityagp/final/node3.html
-            vec3 GetReflectedDir(const vec3& Direction, const vec3& Normal)
-            {
-                return Direction - (2.f * dot(Direction, Normal) * Normal);
-            }
-            //Returns the portion of 'direction' that is parallel to 'normal'
-            vec3 ProjectDirOnNorm(const vec3& Direction, const vec3& Normal)
-            {
-                return Normal * dot(Direction, Normal);
-            }
-            //Returns the portion of 'Direction' that is perpindicular to 'Normal'
-            vec3 ProjectDirOnNormPerpindicular(const vec3& Direction, const vec3& Normal)
-            {
-                return Direction - ProjectDirOnNorm(Direction, Normal);
-            }
-            //Returns Ghost Object. -duh-
-            btPairCachingGhostObject* GetGhostObject()
-            {
-                return m_ghost_object;
-            }
-
-            //"Real" war functions
-            bool RecoverFromPenetration(btCollisionWorld* CollisionWorld);
-            void UpdateTargetOnHit(const vec3& hit_normal, float TangentMag = .0f, float NormalMag = 1.f);
-            void DoMove(btCollisionWorld* CollisionWorld, const vec3& MoveStep, float DeltaTime);
-
-        public:
-            ///btActionInterface interface : KEEP IN camelCase
-            virtual void updateAction(btCollisionWorld* CollisionWorld, float deltaTime)
-            {
-                PreStep(CollisionWorld);
-                PlayerStep(CollisionWorld, deltaTime);
-            }
-
-            //not in the interface, but called above
-            void PreStep(btCollisionWorld* CollisionWorld);
-            void PlayerStep(btCollisionWorld* CollisionWorld, float DeltaTime);
-
-            ///btActionInterface interface : KEEP IN camelCase
-            void debugDraw(btIDebugDraw* debugDrawer) { }
-
-            void SetUpAxis(int NewAxis)
-            {
-                if (NewAxis < 0)
-                    NewAxis = 0;
-                if (NewAxis > 2)
-                    NewAxis = 2;
-                m_i_up_axis = NewAxis;
-            }
-
-            //!!!!!! SHOULD DITCH THAT !!!!!!
-            //This should probably be called setPositionIncrementPerSimulatorStep.
-            //This is neither a Direction nor a velocity, but the amount to
-            //increment the position each simulation iteration, regardless
-            //of DeltaTime.
-            //This call will Reset any velocity set by SetVelocityForTimeInterval().
-            virtual void SetWalkDirection(const vec3& walkDirection)
-            {
-                m_use_walk_direction = true;
-                m_walk_direction = walkDirection;
-                m_normalized_direction = normalize(m_walk_direction);
-            }
-
-            //Caller provides a velocity with which the character should MoveStep for
-            //the given time period.  After the time period, velocity is Reset
-            //to zero.
-            //This call will Reset any walk Direction set by SetWalkDirection().
-            //Negative time intervals will result in no motion.
-            virtual void SetVelocityForTimeInterval(const vec3& velocity, float timeInterval)
-            {
-                m_use_walk_direction = false;
-                m_walk_direction = velocity;
-                m_normalized_direction = normalize(m_walk_direction);
-                m_velocity_time_interval = timeInterval;
-            }
-
-            //Usefulness ?
-            void Reset() { }
-            void Warp(const vec3& NewOrigin)
-            {
-                btTransform NewTransform;
-                NewTransform.setIdentity();
-                NewTransform.setOrigin(LOL2BTU_VEC3(NewOrigin));
-                m_ghost_object->setWorldTransform(NewTransform);
-            }
-
-            //External Setup
-            //--
-
-            void SetFallSpeed(float NewFallSpeed)            { m_fall_speed = NewFallSpeed; }
-            void SetJumpSpeed(float NewJumpSpeed)            { m_jump_speed = NewJumpSpeed; }
-            void SetMaxJumpHeight(float NewMaxJumpHeight)    { m_max_jump_height = NewMaxJumpHeight; }
-
-            //Jump logic will go in EasyCC
-            bool CanJump() const                            { return OnGround(); }
-            void Jump();
-
-            //NewGravity functions
-            void SetGravity(float NewGravity)                { m_f_gravity = NewGravity; }
-            float GetGravity() const                        { return m_f_gravity; }
-
-            //The max slope determines the maximum angle that the controller can walk up.
-            //The slope angle is measured in radians.
-            void SetMaxSlope(float NewSlopeRadians)            { m_max_slope_radians = NewSlopeRadians; m_max_slope_cosine = lol::cos(NewSlopeRadians); }
-            float GetMaxSlope() const                        { return m_max_slope_radians; }
-
-            void SetUseGhostSweepTest(bool UseGObjectSweepTest) { m_do_gobject_sweep_test = UseGObjectSweepTest; }
-
-            bool OnGround() const                            { return m_vertical_velocity == .0f && m_vertical_offset == .0f; }
-
-        private:
-
-            btPairCachingGhostObject*    m_ghost_object;
-            btConvexShape*                m_convex_shape; //is also in m_ghost_object, but it needs to be convex, so we store it here to avoid upcast
-
-            //keep track of the contact manifolds
-            btManifoldArray                m_manifold_array;
-
-            float                        m_half_height;
-            float                        m_velocity_time_interval;
-            float                        m_vertical_velocity;
-            float                        m_vertical_offset;
-            float                        m_fall_speed;
-            float                        m_jump_speed;
-            float                        m_max_jump_height;
-            float                        m_max_slope_radians; // Slope angle that is set (used for returning the exact value)
-            float                        m_max_slope_cosine;  // Cosine equivalent of m_max_slope_radians (calculated once when set, for optimization)
-            float                        m_f_gravity;
-            float                        m_turn_angle;
-            float                        m_step_height;
-            float                        m_added_margin;//@todo: remove this and fix the code
-
-            ///this is the desired walk Direction, set by the user
-            vec3                        m_walk_direction;
-            vec3                        m_normalized_direction;
-
-            //some internal variables
-            vec3                        m_current_position;
-            float                         m_current_step_offset;
-            vec3                        m_target_position;
-
-            vec3                        m_touching_normal;
-            bool                        m_touching_contact;
-
-            bool                        m_was_on_ground;
-            bool                         m_was_jumping;
-            bool                        m_do_gobject_sweep_test;
-            bool                        m_use_walk_direction;
-            int                            m_i_up_axis;
-
-            //---------------------------------------------------------------------
-            //NEW INTERNAL VARS
-            //---------------------------------------------------------------------
-
-            //Gravity in vec3
-            vec3                        m_gravity;
-
-            //Current Velocity
-            vec3                        m_velocity;
-        };
-
-#endif // USE_LOL_CTRLR_CHARAC
-
-    } /* namespace phys */
-
-} /* namespace lol */
-
-#endif /* __BULLETCHARACTERCONTROLLER_BULLETCHARACTERCONTROLLER_H__ */
-
diff --git a/doc/samples/physics/easycharactercontroller.cpp b/doc/samples/physics/easycharactercontroller.cpp
deleted file mode 100644
index 8680935a..00000000
--- a/doc/samples/physics/easycharactercontroller.cpp
+++ /dev/null
@@ -1,150 +0,0 @@
-//
-//  Lol Engine — Bullet physics test
-//
-//  Copyright © 2009—2013 Benjamin “Touky” Huet <huet.benjamin@gmail.com>
-//            © 2010—2019 Sam Hocevar <sam@hocevar.net>
-//
-//  Lol Engine is free software. It comes without any warranty, to
-//  the extent permitted by applicable law. You can redistribute it
-//  and/or modify it under the terms of the Do What the Fuck You Want
-//  to Public License, Version 2, as published by the WTFPL Task Force.
-//  See http://www.wtfpl.net/ for more details.
-//
-
-#if HAVE_CONFIG_H
-#   include "config.h"
-#endif
-
-#include "lolbtphysicsintegration.h"
-#include "lolphysics.h"
-#include "easycharactercontroller.h"
-
-namespace lol
-{
-
-namespace phys
-{
-
-//-------------------------------------------------------------------------
-//EASY_CHARACTER_CONTROLLER
-//--
-
-//Deactivated for Character controller
-void EasyCharacterController::InitBodyToRigid(bool ZeroMassIsKinematic)
-{
-}
-
-//Return correct Ghost Object
-btGhostObject* EasyCharacterController::GetGhostObjectInstance()
-{
-    return new btPairCachingGhostObject();
-}
-
-//Init to Pair caching ghost object, since Character uses that one.
-void EasyCharacterController::InitBodyToGhost()
-{
-    EasyPhysic::InitBodyToGhost();
-
-    m_pair_caching_object = (btPairCachingGhostObject*)m_ghost_object;
-    m_ghost_object->setCollisionFlags(btCollisionObject::CF_CHARACTER_OBJECT | m_ghost_object->getCollisionFlags());
-}
-
-//Add Physic object to the simulation
-void EasyCharacterController::AddToSimulation(class Simulation* current_simulation)
-{
-    EasyPhysic::AddToSimulation(current_simulation);
-
-    btDiscreteDynamicsWorld* dynamics_world = current_simulation->GetWorld();
-    if (dynamics_world)
-    {
-        if (m_character)
-            delete m_character;
-
-        //m_character = new btKinematicCharacterController(m_pair_caching_object, m_convex_shape, m_step_height, m_up_axis);
-        m_character = new BulletKinematicCharacterController(m_pair_caching_object, m_convex_shape, m_step_height, m_up_axis);
-
-        //Deactivate Character controller basic behaviour.
-        //m_character->setGravity(.0f);
-        //m_character->setFallSpeed(.0f);
-
-        dynamics_world->addAction(m_character);
-        current_simulation->ObjectRegistration(true, this, Simulation::EEPT_CharacterController);
-        Ticker::Ref(this);
-    }
-}
-
-//Remove Physic object to the simulation
-void EasyCharacterController::RemoveFromSimulation(class Simulation* current_simulation)
-{
-    EasyPhysic::RemoveFromSimulation(current_simulation);
-
-    btDiscreteDynamicsWorld* dynamics_world = current_simulation->GetWorld();
-    if (dynamics_world)
-    {
-        if (m_character)
-        {
-            dynamics_world->removeAction(m_character);
-            current_simulation->ObjectRegistration(false, this, Simulation::EEPT_CharacterController);
-            Ticker::Unref(this);
-        }
-    }
-}
-
-void EasyCharacterController::Jump()
-{
-    m_character->Jump();
-}
-
-//Set movement for this frame
-void EasyCharacterController::SetMovementForFrame(vec3 const &MoveQuantity)
-{
-    m_frame_cached_movement = MoveQuantity;
-}
-
-//-------------------------------------------------------------------------
-//Base Location/Rotation setup
-//--
-void EasyCharacterController::SetTransform(const lol::vec3& base_location, const lol::quat& base_rotation)
-{
-    if (m_base_is_updating)
-    {
-        m_base_cached_movement = base_location - m_local_to_world[3].xyz;
-        m_local_to_world = lol::mat4::translate(m_local_to_world[3].xyz) * lol::mat4(base_rotation);
-        if (m_ghost_object)
-            m_ghost_object->setWorldTransform(btTransform(LOL2BT_QUAT(base_rotation), LOL2BT_VEC3(LOL2BT_UNIT * m_local_to_world[3].xyz)));
-    }
-    else
-        EasyPhysic::SetTransform(base_location, base_rotation);
-}
-
-//Internal callback when Base transform has changed.
-void EasyCharacterController::BaseTransformChanged(const lol::mat4& PreviousMatrix, const lol::mat4& NewMatrix)
-{
-    m_base_is_updating = true;
-    EasyPhysic::BaseTransformChanged(PreviousMatrix, NewMatrix);
-    m_base_is_updating = false;
-}
-
-//---
-std::string EasyCharacterController::GetName()
-{
-    return "<EasyCharacterController>";
-}
-
-//Physic Tick
-void EasyCharacterController::tick_game(float seconds)
-{
-    entity::tick_game(seconds);
-
-    //Send final velocity in Bullet
-    {
-        int IterationsNb = (int)(seconds / m_owner_simulation->m_timestep);
-        float NewSeconds = IterationsNb * m_owner_simulation->m_timestep;
-        m_character->SetVelocityForTimeInterval((m_base_cached_movement + m_frame_cached_movement) / NewSeconds, NewSeconds);
-        m_base_cached_movement = vec3(.0f);
-    }
-}
-
-} /* namespace phys */
-
-} /* namespace lol */
diff --git a/doc/samples/physics/easycharactercontroller.h b/doc/samples/physics/easycharactercontroller.h
deleted file mode 100644
index 7516cabf..00000000
--- a/doc/samples/physics/easycharactercontroller.h
+++ /dev/null
@@ -1,108 +0,0 @@
-//
-//  Lol Engine — Bullet physics test
-//
-//  Copyright © 2009—2013 Benjamin “Touky” Huet <huet.benjamin@gmail.com>
-//            © 2012—2019 Sam Hocevar <sam@hocevar.net>
-//
-//  Lol Engine is free software. It comes without any warranty, to
-//  the extent permitted by applicable law. You can redistribute it
-//  and/or modify it under the terms of the Do What the Fuck You Want
-//  to Public License, Version 2, as published by the WTFPL Task Force.
-//  See http://www.wtfpl.net/ for more details.
-//
-
-#pragma once
-
-//
-// The EasyCharacterController class
-// ------------------
-//
-
-//Should try to to make a btKinematicCharacterController for real.
-//
-
-#include <lol/engine.h>
-#include "easyphysics.h"
-#include "bulletcharactercontroller.h"
-#include <BulletDynamics/Character/btKinematicCharacterController.h>
-
-namespace lol
-{
-
-namespace phys
-{
-
-class EasyCharacterController : public EasyPhysic,
-                                public entity
-{
-
-    friend class Simulation;
-    friend class EasyPhysic;
-
-public:
-    EasyCharacterController(WorldEntity* NewOwnerEntity) :
-        EasyPhysic(NewOwnerEntity),
-        m_pair_caching_object(nullptr),
-        m_character(nullptr),
-        m_step_height(.0f),
-        m_base_is_updating(false),
-        m_base_cached_movement(vec3(0.f)),
-        m_frame_cached_movement(vec3(0.f)),
-        m_walk_velocity(vec3(0.f)),
-        m_current_velocity(vec3(0.f))
-    {
-        m_gamegroup = GAMEGROUP_EZP_CHAR_CTRLR;
-        m_up_axis = 1;
-        m_gravity = vec3(.0f, -9.81f, .0f);
-        m_walk_velocity_damping = 0.2f;
-    }
-    ~EasyCharacterController()
-    {
-        delete m_character;
-    }
-
-    virtual void InitBodyToRigid(bool ZeroMassIsKinematic=false);
-    virtual void InitBodyToGhost();
-    virtual void AddToSimulation(class Simulation* current_simulation);
-    virtual void RemoveFromSimulation(class Simulation* current_simulation);
-    virtual void SetMovementForFrame(vec3 const &MoveQuantity);
-    virtual void Jump();
-
-    virtual void SetTransform(const lol::vec3& base_location, const lol::quat& base_rotation);
-
-protected:
-    virtual void BaseTransformChanged(const lol::mat4& PreviousMatrix, const lol::mat4& NewMatrix);
-    virtual std::string GetName();
-
-public:
-    virtual void tick_game(float seconds);
-
-protected:
-
-    virtual btGhostObject* GetGhostObjectInstance();
-
-    btPairCachingGhostObject*        m_pair_caching_object;
-    //btKinematicCharacterController*    m_character;
-    BulletKinematicCharacterController* m_character;
-
-    float                            m_step_height;
-    int                                m_up_axis;
-    bool                            m_base_is_updating;
-    vec3                            m_base_cached_movement;
-    vec3                            m_frame_cached_movement;
-
-    //----
-    float                            m_walk_velocity_damping;
-
-    //----
-    vec3                            m_gravity;
-
-    //----
-    vec3                            m_walk_velocity;
-    vec3                            m_current_velocity;
-};
-
-} /* namespace phys */
-
-} /* namespace lol */
-
diff --git a/doc/samples/physics/easyconstraint.cpp b/doc/samples/physics/easyconstraint.cpp
deleted file mode 100644
index 1d8ca76a..00000000
--- a/doc/samples/physics/easyconstraint.cpp
+++ /dev/null
@@ -1,43 +0,0 @@
-
-#if HAVE_CONFIG_H
-#   include "config.h"
-#endif
-
-#include "lolbtphysicsintegration.h"
-#include "lolphysics.h"
-#include "easyconstraint.h"
-
-namespace lol
-{
-
-namespace phys
-{
-
-//-------------------------------------------------------------------------
-//EASY_CONSTRAINT
-//--
-
-void EasyConstraint::AddToSimulation(class Simulation* current_simulation)
-{
-    btDiscreteDynamicsWorld* dynamics_world = current_simulation->GetWorld();
-    if (dynamics_world && m_typed_constraint)
-    {
-        dynamics_world->addConstraint(m_typed_constraint, m_disable_a2b_collision);
-        current_simulation->ObjectRegistration(true, this);
-    }
-}
-
-void EasyConstraint::RemoveFromSimulation(class Simulation* current_simulation)
-{
-    btDiscreteDynamicsWorld* dynamics_world = current_simulation->GetWorld();
-    if (dynamics_world && m_typed_constraint)
-    {
-        dynamics_world->removeConstraint(m_typed_constraint);
-        current_simulation->ObjectRegistration(false, this);
-    }
-}
-
-} /* namespace phys */
-
-} /* namespace lol */
-
diff --git a/doc/samples/physics/easyconstraint.h b/doc/samples/physics/easyconstraint.h
deleted file mode 100644
index 4e862651..00000000
--- a/doc/samples/physics/easyconstraint.h
+++ /dev/null
@@ -1,184 +0,0 @@
-//
-//  Lol Engine
-//
-//  Copyright © 2010—2015 Sam Hocevar <sam@hocevar.net>
-//            © 2009—2013 Benjamin “Touky” Huet <huet.benjamin@gmail.com>
-//
-//  This library is free software. It comes without any warranty, to
-//  the extent permitted by applicable law. You can redistribute it
-//  and/or modify it under the terms of the Do What the Fuck You Want
-//  to Public License, Version 2, as published by the WTFPL Task Force.
-//  See http://www.wtfpl.net/ for more details.
-//
-
-#pragma once
-
-//
-// The EasyPhysic class
-// ------------------
-//
-
-#include <lol/engine.h>
-
-#include "easyphysics.h"
-
-namespace lol
-{
-
-namespace phys
-{
-
-class EasyConstraint
-{
-
-    friend class Simulation;
-    friend class EasyPhysic;
-
-public:
-    EasyConstraint() :
-        m_typed_constraint(nullptr),
-        m_p2p_constraint(nullptr),
-        m_hinge_constraint(nullptr),
-        m_slider_constraint(nullptr),
-        m_cone_twist_constraint(nullptr),
-        m_6dof_constraint(nullptr),
-        m_owner_simulation(nullptr),
-        m_a_physobj(nullptr),
-        m_b_physobj(nullptr),
-        m_a_transform(lol::mat4(1.f)),
-        m_b_transform(lol::mat4(1.f)),
-        m_using_ref_a(false),
-        m_disable_a2b_collision(false)
-
-    {
-    }
-    ~EasyConstraint()
-    {
-        delete m_typed_constraint;
-        m_p2p_constraint = nullptr;
-        m_hinge_constraint = nullptr;
-        m_slider_constraint = nullptr;
-        m_cone_twist_constraint = nullptr;
-        m_6dof_constraint = nullptr;
-    }
-
-    void AddToSimulation(class Simulation* current_simulation);
-    void RemoveFromSimulation(class Simulation* current_simulation);
-
-private:
-
-    //check if Init can be done
-    bool CanProceedWithInit()
-    {
-        if (!m_a_physobj || !m_b_physobj)
-            return false;
-
-        if (!m_a_physobj->m_rigid_body || !m_b_physobj->m_rigid_body)
-            return false;
-
-        return true;
-    }
-
-    //-------------------------------------------------------------------------
-    //Init constraint functions
-    //--
-    void CustomInitConstraintToPoint2Point()
-    {
-        m_p2p_constraint = new btPoint2PointConstraint(*m_a_physobj->m_rigid_body, *m_b_physobj->m_rigid_body,
-                                                        LOL2BT_VEC3(m_a_transform[3].xyz * LOL2BT_UNIT), LOL2BT_VEC3(m_b_transform[3].xyz * LOL2BT_UNIT));
-        m_typed_constraint = m_p2p_constraint;
-    }
-
-    void CustomInitConstraintToHinge()
-    {
-        m_hinge_constraint = new btHingeConstraint(*m_a_physobj->m_rigid_body, *m_b_physobj->m_rigid_body,
-                                                        btTransform(LOL2BT_QUAT(quat(mat3(m_a_transform))), LOL2BT_VEC3(m_a_transform[3].xyz * LOL2BT_UNIT)),
-                                                        btTransform(LOL2BT_QUAT(quat(mat3(m_b_transform))), LOL2BT_VEC3(m_b_transform[3].xyz * LOL2BT_UNIT)),
-                                                        m_using_ref_a);
-        m_typed_constraint = m_hinge_constraint;
-    }
-
-    void CustomInitConstraintToSlider()
-    {
-        m_slider_constraint = new btSliderConstraint(*m_a_physobj->m_rigid_body, *m_b_physobj->m_rigid_body,
-                                                        btTransform(LOL2BT_QUAT(quat(mat3(m_a_transform))), LOL2BT_VEC3(m_a_transform[3].xyz * LOL2BT_UNIT)),
-                                                        btTransform(LOL2BT_QUAT(quat(mat3(m_b_transform))), LOL2BT_VEC3(m_b_transform[3].xyz * LOL2BT_UNIT)),
-                                                        m_using_ref_a);
-        m_typed_constraint = m_slider_constraint;
-    }
-
-    void CustomInitConstraintToConeTwist()
-    {
-        m_cone_twist_constraint = new btConeTwistConstraint(*m_a_physobj->m_rigid_body, *m_b_physobj->m_rigid_body,
-                                                        btTransform(LOL2BT_QUAT(quat(mat3(m_a_transform))), LOL2BT_VEC3(m_a_transform[3].xyz * LOL2BT_UNIT)),
-                                                        btTransform(LOL2BT_QUAT(quat(mat3(m_b_transform))), LOL2BT_VEC3(m_b_transform[3].xyz * LOL2BT_UNIT)));
-        m_typed_constraint = m_cone_twist_constraint;
-    }
-
-    void CustomInitConstraintTo6Dof()
-    {
-        m_6dof_constraint = new btGeneric6DofConstraint(*m_a_physobj->m_rigid_body, *m_b_physobj->m_rigid_body,
-                                                        btTransform(LOL2BT_QUAT(quat(mat3(m_a_transform))), LOL2BT_VEC3(m_a_transform[3].xyz * LOL2BT_UNIT)),
-                                                        btTransform(LOL2BT_QUAT(quat(mat3(m_b_transform))), LOL2BT_VEC3(m_b_transform[3].xyz * LOL2BT_UNIT)),
-                                                        m_using_ref_a);
-        m_typed_constraint = m_6dof_constraint;
-    }
-
-    btTypedConstraint*            m_typed_constraint;
-    btPoint2PointConstraint*    m_p2p_constraint;
-    btHingeConstraint*            m_hinge_constraint;
-    btSliderConstraint*            m_slider_constraint;
-    btConeTwistConstraint*        m_cone_twist_constraint;
-    btGeneric6DofConstraint*    m_6dof_constraint;
-
-public:
-    void InitConstraintToPoint2Point()    { if (CanProceedWithInit()) CustomInitConstraintToPoint2Point(); }
-    void InitConstraintToHinge()        { if (CanProceedWithInit()) CustomInitConstraintToHinge(); }
-    void InitConstraintToSlider()        { if (CanProceedWithInit()) CustomInitConstraintToSlider(); }
-    void InitConstraintToConeTwist()    { if (CanProceedWithInit()) CustomInitConstraintToConeTwist(); }
-    void InitConstraintTo6Dof()            { if (CanProceedWithInit()) CustomInitConstraintTo6Dof(); }
-
-    //Set given physic object to the proper slot.
-    void SetPhysObjA(EasyPhysic* NewPhysObj, lol::mat4 NewTransform) { SetPhysObj(false, NewPhysObj, NewTransform); }
-    void SetPhysObjB(EasyPhysic* NewPhysObj, lol::mat4 NewTransform) { SetPhysObj(true, NewPhysObj, NewTransform); }
-    void SetPhysObj(bool SetToB, EasyPhysic* NewPhysObj, lol::mat4 NewTransform)
-    {
-        if (SetToB)
-        {
-            m_b_physobj = NewPhysObj;
-            m_b_transform = NewTransform;
-        }
-        else
-        {
-            m_a_physobj = NewPhysObj;
-            m_a_transform = NewTransform;
-        }
-    }
-
-    //Set whether or not the physic engine should use the A object as the reference (most constraint transform are local).
-    void SetRefAsA(bool NewUseRefA)
-    {
-        m_using_ref_a = NewUseRefA;
-    }
-
-    //Set whether or not to disable the collision between the bodies
-    void DisableCollisionBetweenObjs(bool DisableCollision)
-    {
-        m_disable_a2b_collision = DisableCollision;
-    }
-
-private:
-    Simulation*                    m_owner_simulation;
-    EasyPhysic*                    m_a_physobj;
-    EasyPhysic*                    m_b_physobj;
-    lol::mat4                    m_a_transform;
-    lol::mat4                    m_b_transform;
-    bool                        m_using_ref_a;
-    bool                        m_disable_a2b_collision;
-
-};
-
-} /* namespace phys */
-
-} /* namespace lol */
-
diff --git a/doc/samples/physics/easyphysics.cpp b/doc/samples/physics/easyphysics.cpp
deleted file mode 100644
index 232634f4..00000000
--- a/doc/samples/physics/easyphysics.cpp
+++ /dev/null
@@ -1,430 +0,0 @@
-//
-//  Lol Engine
-//
-//  Copyright © 2010—2015 Sam Hocevar <sam@hocevar.net>
-//            © 2009—2013 Cédric Lecacheur <jordx@free.fr>
-//            © 2009—2013 Benjamin “Touky” Huet <huet.benjamin@gmail.com>
-//
-//  This library is free software. It comes without any warranty, to
-//  the extent permitted by applicable law. You can redistribute it
-//  and/or modify it under the terms of the Do What the Fuck You Want
-//  to Public License, Version 2, as published by the WTFPL Task Force.
-//  See http://www.wtfpl.net/ for more details.
-//
-
-#if HAVE_CONFIG_H
-#   include "config.h"
-#endif
-
-#include "lolbtphysicsintegration.h"
-#include "lolphysics.h"
-
-namespace lol
-{
-
-namespace phys
-{
-
-//-------------------------------------------------------------------------
-//EASY_PHYSIC
-//--
-
-EasyPhysic::EasyPhysic(WorldEntity* NewOwnerEntity) :
-    m_collision_object(nullptr),
-    m_ghost_object(nullptr),
-    m_rigid_body(nullptr),
-    m_local_inertia(btVector3(.0f, .0f, .0f)),
-    m_collision_shape(nullptr),
-    m_convex_shape(nullptr),
-    m_motion_state(nullptr),
-    m_mass(.0f),
-    m_hit_restitution(.0f),
-    m_collision_group(1),
-    m_collision_mask(1),
-    m_owner_entity(NewOwnerEntity),
-    m_owner_simulation(nullptr),
-    m_base_physic(nullptr)
-{
-}
-
-EasyPhysic::~EasyPhysic()
-{
-    m_rigid_body = nullptr;
-    delete m_collision_object;
-    delete m_collision_shape;
-    delete m_motion_state;
-}
-
-//-------------------------------------------------------------------------
-//Set Shape functions
-//--
-
-void EasyPhysic::SetShapeTo(btCollisionShape* collision_shape)
-{
-    bool bReinitToRigidBody = false;
-    if (m_rigid_body)
-    {
-        bReinitToRigidBody = true;
-        delete m_rigid_body;
-    }
-    if (m_collision_shape)
-        delete m_collision_shape;
-
-    m_collision_shape = collision_shape;
-
-    if (bReinitToRigidBody)
-        InitBodyToRigid();
-}
-
-//Box Shape support
-void EasyPhysic::SetShapeToBox(lol::vec3& box_size)
-{
-    vec3 new_box_size = box_size * LOL2BT_UNIT * LOL2BT_SIZE;
-    m_convex_shape = new btBoxShape(LOL2BT_VEC3(new_box_size));
-    SetShapeTo(m_convex_shape);
-}
-
-void EasyPhysic::SetShapeToSphere(float radius)
-{
-    m_convex_shape = new btSphereShape(radius * LOL2BT_UNIT * LOL2BT_SIZE);
-    SetShapeTo(m_convex_shape);
-}
-
-void EasyPhysic::SetShapeToCone(float radius, float height)
-{
-    m_convex_shape = new btConeShape(    radius * LOL2BT_UNIT,
-                                        height * LOL2BT_UNIT);
-    SetShapeTo(m_convex_shape);
-}
-
-void EasyPhysic::SetShapeToCylinder(lol::vec3& cyl_size)
-{
-    vec3 new_cyl_size = cyl_size * LOL2BT_UNIT;
-    new_cyl_size.y *= LOL2BT_SIZE;
-    m_convex_shape = new btCylinderShape(LOL2BT_VEC3(new_cyl_size));
-    SetShapeTo(m_convex_shape);
-}
-
-void EasyPhysic::SetShapeToCapsule(float radius, float height)
-{
-    m_convex_shape = new btCapsuleShape(radius * LOL2BT_UNIT * LOL2BT_SIZE,
-                                        height * LOL2BT_UNIT * LOL2BT_SIZE);
-    SetShapeTo(m_convex_shape);
-}
-
-//-------------------------------------------------------------------------
-//Base Location/Rotation setup
-//--
-
-//Getter
-mat4 EasyPhysic::GetTransform()
-{
-    m_local_to_world = lol::mat4(1.0f);
-    if (m_rigid_body && m_motion_state)
-    {
-        btTransform CurTransform;
-        m_motion_state->getWorldTransform(CurTransform);
-        CurTransform.getOpenGLMatrix(&m_local_to_world[0][0]);
-    }
-    else if (m_collision_object)
-        m_collision_object->getWorldTransform().getOpenGLMatrix(&m_local_to_world[0][0]);
-    return m_local_to_world;
-}
-
-//Setter
-void EasyPhysic::SetTransform(const lol::vec3& base_location, const lol::quat& base_rotation)
-{
-    lol::mat4 PreviousMatrix = m_local_to_world;
-    m_local_to_world = lol::mat4::translate(base_location) * lol::mat4(base_rotation);
-
-    if (m_ghost_object)
-        m_ghost_object->setWorldTransform(btTransform(LOL2BT_QUAT(base_rotation), LOL2BT_VEC3(LOL2BT_UNIT * base_location)));
-    else
-    {
-        if (m_motion_state)
-            m_motion_state->setWorldTransform(btTransform(LOL2BT_QUAT(base_rotation), LOL2BT_VEC3(LOL2BT_UNIT * base_location)));
-        else
-            m_motion_state = new btDefaultMotionState(btTransform(LOL2BT_QUAT(base_rotation), LOL2BT_VEC3(LOL2BT_UNIT * base_location)));
-    }
-
-    for (int i = 0; i < m_based_physic_list.count(); i++)
-    {
-        if (m_based_physic_list[i])
-            m_based_physic_list[i]->BaseTransformChanged(PreviousMatrix, m_local_to_world);
-        else
-            m_based_physic_list.remove(i--);
-    }
-}
-
-//Internal callback when Base transform has changed.
-void EasyPhysic::BaseTransformChanged(const lol::mat4& PreviousMatrix, const lol::mat4& NewMatrix)
-{
-    mat4 PreviousMatrixLoc = ((m_base_lock_location)?(PreviousMatrix):(lol::mat4::translate(PreviousMatrix[3].xyz)));
-    mat4 PreviousMatrixRot = ((m_base_lock_rotation)?(lol::mat4(lol::quat(lol::mat3(PreviousMatrix)))):(lol::mat4(1.f)));
-    mat4 NewMatrixLoc = ((m_base_lock_location)?(NewMatrix):(lol::mat4::translate(NewMatrix[3].xyz)));
-    mat4 NewMatrixRot = ((m_base_lock_rotation)?(lol::mat4(lol::quat(lol::mat3(NewMatrix)))):(lol::mat4(1.f)));
-
-    if (m_ghost_object || (m_rigid_body->getCollisionFlags() & btCollisionObject::CF_KINEMATIC_OBJECT))
-    {
-        mat4 ThisMatrixLoc = NewMatrixLoc * inverse(PreviousMatrixLoc) * lol::mat4::translate(m_local_to_world[3].xyz);
-        mat4 ThisMatrixRot = NewMatrixRot * inverse(PreviousMatrixRot) * lol::mat4(lol::quat(lol::mat3(m_local_to_world)));
-        SetTransform(ThisMatrixLoc[3].xyz, lol::quat(lol::mat3(ThisMatrixRot)));
-    }
-}
-
-//-------------------------------------------------------------------------
-//Mass related functions
-//--
-//Set Mass functions
-void EasyPhysic::SetMass(float mass)
-{
-    m_mass = mass;
-
-    if (m_rigid_body)
-    {
-        SetLocalInertia(m_mass);
-        m_rigid_body->setMassProps(m_mass, m_local_inertia);
-    }
-}
-
-//-------------------------------------------------------------------------
-//Hit restitution functions
-//--
-//Set Hit Restitution functions
-void EasyPhysic::SetHitRestitution(float hit_restitution)
-{
-    m_hit_restitution = hit_restitution;
-
-    if (m_rigid_body)
-    {
-        m_rigid_body->setRestitution(m_hit_restitution);
-    }
-}
-
-//-------------------------------------------------------------------------
-//Final conversion pass functions : Body related
-//--
-
-//Init to rigid body
-void EasyPhysic::InitBodyToRigid(bool SetToKinematic)
-{
-    if (m_collision_object)
-        delete m_collision_object;
-
-    if (!m_motion_state)
-        SetTransform(vec3(.0f));
-
-    btRigidBody::btRigidBodyConstructionInfo NewInfos(m_mass, m_motion_state, m_collision_shape, m_local_inertia);
-    NewInfos.m_restitution = m_hit_restitution;
-    m_rigid_body = new btRigidBody(NewInfos);
-    m_collision_object = m_rigid_body;
-    m_collision_object->setUserPointer(this);
-
-    if (m_mass == .0f)
-    {
-        if (SetToKinematic)
-        {
-            m_rigid_body->setActivationState(DISABLE_DEACTIVATION);
-            m_rigid_body->setCollisionFlags(m_rigid_body->getCollisionFlags() | btCollisionObject::CF_KINEMATIC_OBJECT);
-        }
-    }
-    else
-        SetMass(m_mass);
-}
-
-//Return correct Ghost Object
-btGhostObject* EasyPhysic::GetGhostObjectInstance()
-{
-    return new btGhostObject();
-}
-
-//Init to Ghost object, for Overlap/Sweep Test/Touching logic
-void EasyPhysic::InitBodyToGhost()
-{
-    if (m_collision_object)
-        delete m_collision_object;
-
-    m_ghost_object = GetGhostObjectInstance();
-    m_ghost_object->setCollisionShape(m_collision_shape);
-    m_collision_object = m_ghost_object;
-    m_collision_object->setUserPointer(this);
-
-    SetTransform(m_local_to_world[3].xyz, lol::quat(lol::mat3(m_local_to_world)));
-
-    m_ghost_object->setCollisionFlags(m_ghost_object->getCollisionFlags());
-}
-
-//-------------
-//Touch logic
-//-------------
-  //    btManifoldArray   manifoldArray;
-  //    btBroadphasePairArray& pairArray = ghostObject->getOverlappingPairCache()->getOverlappingPairArray();
-  //    int numPairs = pairArray.size();
-
-  //    for (int i=0;i<numPairs;i++)
-  //    {
-  //       manifoldArray.clear();
-
-  //       const btBroadphasePair& pair = pairArray[i];
-  //
-  //       //unless we manually perform collision detection on this pair, the contacts are in the dynamics world paircache:
-  //       btBroadphasePair* collisionPair = dynamicsWorld->getPairCache()->findPair(pair.m_pProxy0,pair.m_pProxy1);
-  //       if (!collisionPair)
-  //          continue;
-
-  //       if (collisionPair->m_algorithm)
-  //          collisionPair->m_algorithm->getAllContactManifolds(manifoldArray);
-
-  //       for (int j=0;j<manifoldArray.size();j++)
-  //       {
-  //          btPersistentManifold* manifold = manifoldArray[j];
-  //          btScalar directionSign = manifold->getBody0() == m_ghostObject ? btScalar(-1.0) : btScalar(1.0);
-  //          for (int p=0;p<manifold->getNumContacts();p++)
-  //          {
-  //               const btManifoldPoint&pt = manifold->getContactPoint(p);
-  //              if (pt.getDistance()<0.f)
-        //{
-        //    const btVector3& ptA = pt.getPositionWorldOnA();
-        //    const btVector3& ptB = pt.getPositionWorldOnB();
-        //    const btVector3& normalOnB = pt.m_normalWorldOnB;
-        //    /// work here
-        //}
-  //          }
-  //       }
-  //    }
-
-
-//Add Physic object to the simulation
-void EasyPhysic::AddToSimulation(class Simulation* current_simulation)
-{
-    btDiscreteDynamicsWorld* dynamics_world = current_simulation->GetWorld();
-    if (dynamics_world)
-    {
-        if (m_ghost_object)
-        {
-            dynamics_world->addCollisionObject(m_ghost_object, m_collision_group, m_collision_mask);
-            current_simulation->ObjectRegistration(true, this, Simulation::EEPT_Ghost);
-        }
-        else if (m_rigid_body)
-        {
-            dynamics_world->addRigidBody(m_rigid_body, m_collision_group, m_collision_mask);
-            if (m_mass != .0f)
-                current_simulation->ObjectRegistration(true, this, Simulation::EEPT_Dynamic);
-            else
-                current_simulation->ObjectRegistration(true, this, Simulation::EEPT_Static);
-        }
-        else
-        {
-            dynamics_world->addCollisionObject(m_collision_object, m_collision_group, m_collision_mask);
-            current_simulation->ObjectRegistration(true, this, Simulation::EEPT_CollisionObject);
-        }
-    }
-}
-
-//Remove Physic object to the simulation
-void EasyPhysic::RemoveFromSimulation(class Simulation* current_simulation)
-{
-    btDiscreteDynamicsWorld* dynamics_world = current_simulation->GetWorld();
-    if (dynamics_world)
-    {
-        if (m_rigid_body)
-        {
-            dynamics_world->removeRigidBody(m_rigid_body);
-            if (m_mass != .0f)
-                current_simulation->ObjectRegistration(false, this, Simulation::EEPT_Dynamic);
-            else
-                current_simulation->ObjectRegistration(false, this, Simulation::EEPT_Static);
-        }
-        else
-        {
-            dynamics_world->removeCollisionObject(m_collision_object);
-            if (m_ghost_object)
-                current_simulation->ObjectRegistration(false, this, Simulation::EEPT_Ghost);
-            current_simulation->ObjectRegistration(false, this, Simulation::EEPT_CollisionObject);
-        }
-    }
-}
-
-//-------------------------------------------------------------------------
-//Force/Impulse functions
-//--
-void EasyPhysic::AddImpulse(const lol::vec3& impulse)
-{
-    if (m_rigid_body)
-        m_rigid_body->applyCentralImpulse(LOL2BT_VEC3(impulse));
-}
-
-void EasyPhysic::AddImpulse(const lol::vec3& impulse, const lol::vec3& rel_pos)
-{
-    if (m_rigid_body)
-        m_rigid_body->applyImpulse(LOL2BT_VEC3(impulse), LOL2BTU_VEC3(rel_pos));
-}
-
-void EasyPhysic::AddImpulseTorque(const lol::vec3& torque)
-{
-    if (m_rigid_body)
-        m_rigid_body->applyTorqueImpulse(LOL2BT_VEC3(torque));
-}
-
-//--
-void EasyPhysic::AddForce(const lol::vec3& force)
-{
-    if (m_rigid_body)
-        m_rigid_body->applyCentralForce(LOL2BT_VEC3(force));
-}
-
-void EasyPhysic::AddForce(const lol::vec3& force, const lol::vec3& rel_pos)
-{
-    if (m_rigid_body)
-        m_rigid_body->applyForce(LOL2BT_VEC3(force), LOL2BTU_VEC3(rel_pos));
-}
-
-void EasyPhysic::AddForceTorque(const lol::vec3& torque)
-{
-    if (m_rigid_body)
-        m_rigid_body->applyTorque(LOL2BT_VEC3(torque));
-}
-
-//-------------------------------------------------------------------------
-//Movements getter
-//--
-lol::vec3 EasyPhysic::GetLinearVelocity() const
-{
-    if (m_rigid_body)
-        return BT2LOL_VEC3(m_rigid_body->getLinearVelocity());
-    return lol::vec3(.0f);
-}
-
-lol::vec3 EasyPhysic::GetLinearForce() const
-{
-    if (m_rigid_body)
-        return BT2LOL_VEC3(m_rigid_body->getTotalForce());
-    return lol::vec3(.0f);
-}
-
-lol::vec3 EasyPhysic::GetAngularVelocity() const
-{
-    if (m_rigid_body)
-        return BT2LOL_VEC3(m_rigid_body->getAngularVelocity());
-    return lol::vec3(.0f);
-}
-
-lol::vec3 EasyPhysic::GetAngularForce() const
-{
-    if (m_rigid_body)
-        return BT2LOL_VEC3(m_rigid_body->getTotalTorque());
-    return lol::vec3(.0f);
-}
-
-//Set Local Inertia
-void EasyPhysic::SetLocalInertia(float mass)
-{
-    if (mass != .0f)
-        m_collision_shape->calculateLocalInertia(mass, m_local_inertia);
-    else
-        m_local_inertia = btVector3(.0f, .0f, .0f);
-}
-
-} /* namespace phys */
-
-} /* namespace lol */
diff --git a/doc/samples/physics/easyphysics.h b/doc/samples/physics/easyphysics.h
deleted file mode 100644
index 367bd473..00000000
--- a/doc/samples/physics/easyphysics.h
+++ /dev/null
@@ -1,159 +0,0 @@
-//
-//  Lol Engine
-//
-//  Copyright © 2010—2015 Sam Hocevar <sam@hocevar.net>
-//            © 2009—2013 Benjamin “Touky” Huet <huet.benjamin@gmail.com>
-//
-//  This library is free software. It comes without any warranty, to
-//  the extent permitted by applicable law. You can redistribute it
-//  and/or modify it under the terms of the Do What the Fuck You Want
-//  to Public License, Version 2, as published by the WTFPL Task Force.
-//  See http://www.wtfpl.net/ for more details.
-//
-
-#pragma once
-
-//
-// The EasyPhysic class
-// ------------------
-//
-
-#include <lol/engine.h>
-
-#include <btBulletDynamicsCommon.h>
-#include <btBulletCollisionCommon.h>
-#include <BulletCollision/CollisionDispatch/btGhostObject.h>
-
-namespace lol
-{
-
-namespace phys
-{
-
-class EasyPhysic
-{
-
-    friend class Simulation;
-    friend class EasyConstraint;
-
-public:
-    EasyPhysic(WorldEntity* NewOwnerEntity);
-    ~EasyPhysic();
-
-    virtual void SetShapeToBox(lol::vec3& box_size);
-    virtual void SetShapeToSphere(float radius);
-    virtual void SetShapeToCone(float radius, float height);
-    virtual void SetShapeToCylinder(lol::vec3& cyl_size);
-    virtual void SetShapeToCapsule(float radius, float height);
-
-    virtual bool CanChangeCollisionChannel() { return (m_rigid_body == nullptr); }
-    virtual mat4 GetTransform();
-    virtual void SetTransform(const vec3& base_location, const quat& base_rotation = quat(mat3(1.0f)));
-protected:
-    virtual void BaseTransformChanged(const mat4& PreviousMatrix, const mat4& NewMatrix);
-public:
-    virtual void SetMass(float mass);
-    virtual float GetMass() { return m_mass; }
-    virtual void SetHitRestitution(float hit_restitution);
-    virtual void InitBodyToRigid(bool ZeroMassIsKinematic=false);
-    virtual void InitBodyToGhost();
-    virtual void AddToSimulation(class Simulation* current_simulation);
-    virtual void RemoveFromSimulation(class Simulation* current_simulation);
-
-    //Force/Impulse functions
-    virtual void AddImpulse(const lol::vec3& impulse);
-    virtual void AddImpulse(const lol::vec3& impulse, const lol::vec3& rel_pos);
-      virtual void AddImpulseTorque(const lol::vec3& torque);
-    virtual void AddForce(const lol::vec3& force);
-    virtual void AddForce(const lol::vec3& force, const lol::vec3& rel_pos);
-    virtual void AddForceTorque(const lol::vec3& torque);
-
-    //Movements getter
-    lol::vec3 GetLinearVelocity() const;
-    lol::vec3 GetLinearForce() const;
-    lol::vec3 GetAngularVelocity() const;
-    lol::vec3 GetAngularForce() const;
-
-protected:
-    virtual void SetLocalInertia(float mass);
-    virtual void SetShapeTo(btCollisionShape* collision_shape);
-
-    virtual btGhostObject* GetGhostObjectInstance();
-
-    btCollisionObject*                          m_collision_object;
-
-    btGhostObject*                              m_ghost_object;
-
-    btRigidBody*                                m_rigid_body;
-    btVector3                                   m_local_inertia;
-
-    btCollisionShape*                           m_collision_shape;
-    btConvexShape*                              m_convex_shape;
-    btMotionState*                              m_motion_state;
-
-public:
-    //Sets the collision Group & Mask.
-    //Mask can change at runtime, not group !
-    virtual bool SetCollisionChannel(int NewGroup, int NewMask)
-    {
-        if (CanChangeCollisionChannel())
-        {
-            m_collision_group = (1 << NewGroup);
-            m_collision_mask = NewMask;
-            return true;
-        }
-        return false;
-    }
-    int GetCollisionGroup() { return m_collision_group; }
-    int GetCollisionMask()    { return m_collision_mask; }
-
-    //Base/Attachment logic
-    virtual void AttachTo(EasyPhysic* NewBase, bool NewBaseLockLocation = true, bool NewBaseLockRotation = true)
-    {
-        if (NewBase == this || (NewBase && NewBase->m_base_physic == this))
-            return;
-
-        if (NewBase)
-        {
-            bool bAlreadyExists = false;
-            for (int i = 0; i < NewBase->m_based_physic_list.count(); ++i)
-                if (NewBase->m_based_physic_list[i] == this)
-                    bAlreadyExists = true;
-            if (!bAlreadyExists)
-                NewBase->m_based_physic_list << this;
-            m_base_physic = NewBase;
-            m_base_lock_location = NewBaseLockLocation;
-            m_base_lock_rotation = NewBaseLockRotation;
-        }
-        else if (m_base_physic)
-        {
-            for (int i = 0; i < m_base_physic->m_based_physic_list.count(); ++i)
-                if (m_base_physic->m_based_physic_list[i] == this)
-                    m_base_physic->m_based_physic_list.remove(i--);
-            m_base_physic = nullptr;
-        }
-    }
-
-protected:
-    lol::mat4                                       m_local_to_world;
-    float                                           m_mass;
-    float                                           m_hit_restitution;
-    int                                             m_collision_group;
-    int                                             m_collision_mask;
-    WorldEntity*                                    m_owner_entity;
-    Simulation*                                     m_owner_simulation;
-
-    //Base/Attachment logic
-    array<EasyPhysic*>                              m_based_physic_list;     //List of objects based on this : this object moves, its based object MoveStep with it.
-    EasyPhysic*                                     m_base_physic;           //Base for this object : The base moves, the object moves with it.
-    bool                                            m_base_lock_location;    //when this is TRUE, location moves with rotation change.
-    bool                                            m_base_lock_rotation;    //when this is TRUE, rotation moves with rotation change.
-
-    //Touch logic
-    array<EasyPhysic*>                              m_touching_physic;        //Maintained by ghost objects
-};
-
-} /* namespace phys */
-
-} /* namespace lol */
-
diff --git a/doc/samples/physics/lolbtphysicsintegration.h b/doc/samples/physics/lolbtphysicsintegration.h
deleted file mode 100644
index 0b1a85e0..00000000
--- a/doc/samples/physics/lolbtphysicsintegration.h
+++ /dev/null
@@ -1,47 +0,0 @@
-//
-//  Lol Engine
-//
-//  Copyright © 2009—2019 Sam Hocevar <sam@hocevar.net>
-//            © 2010—2013 Benjamin “Touky” Huet <huet.benjamin@gmail.com>
-//
-//  This library is free software. It comes without any warranty, to
-//  the extent permitted by applicable law. You can redistribute it
-//  and/or modify it under the terms of the Do What the Fuck You Want
-//  to Public License, Version 2, as published by the WTFPL Task Force.
-//  See http://www.wtfpl.net/ for more details.
-//
-
-#pragma once
-
-//
-// Bullet Physics integration in Lol
-// ---------------------------------
-//
-
-namespace lol
-{
-
-// Override Gamegroups names for Physic-usage
-// "_ENT_" means that this is a group for Entities that use EasyPhysic primitives.
-// "_EZP_" means that this is a group for EasyPhysic primitives.
-#define GAMEGROUP_EZP_CHAR_CTRLR    tickable::group::game::other_2
-#define GAMEGROUP_SIMULATION        tickable::group::game::other_3
-
-#define LOL2BT_UNIT 1.0f
-#define BT2LOL_UNIT 1.0f
-
-#define LOL2BT_SIZE 0.5f
-#define BT2LOL_SIZE 2.0f
-
-#define LOL2BT_VEC3(v) btVector3((v).x, (v).y, (v).z)
-#define BT2LOL_VEC3(v) lol::vec3(v.getX(), v.getY(), v.getZ())
-
-// Same as above with Unit taken into account
-#define LOL2BTU_VEC3(v) (LOL2BT_VEC3(v) * LOL2BT_UNIT)
-#define BT2LOLU_VEC3(v) (BT2LOL_VEC3(v) * BT2LOL_UNIT)
-
-#define LOL2BT_QUAT(q) btQuaternion((q).x, (q).y, (q).z, (q).w)
-#define BT2LOL_QUAT(q) lol::quat((q).getW(), BT2LOL_VEC3((q).getAxis())
-
-} /* namespace lol */
-
diff --git a/doc/samples/physics/lolphysics.h b/doc/samples/physics/lolphysics.h
deleted file mode 100644
index d6bdc3ff..00000000
--- a/doc/samples/physics/lolphysics.h
+++ /dev/null
@@ -1,425 +0,0 @@
-//
-//  Lol Engine — Bullet physics test
-//
-//  Copyright © 2009—2013 Benjamin “Touky” Huet <huet.benjamin@gmail.com>
-//            © 2012—2019 Sam Hocevar <sam@hocevar.net>
-//
-//  Lol Engine is free software. It comes without any warranty, to
-//  the extent permitted by applicable law. You can redistribute it
-//  and/or modify it under the terms of the Do What the Fuck You Want
-//  to Public License, Version 2, as published by the WTFPL Task Force.
-//  See http://www.wtfpl.net/ for more details.
-//
-
-#pragma once
-
-#include <cstring>
-
-#include <btBulletDynamicsCommon.h>
-#include <btBulletCollisionCommon.h>
-#include <BulletDynamics/Character/btKinematicCharacterController.h>
-
-#include "lolbtphysicsintegration.h"
-#include "easyphysics.h"
-#include "easyconstraint.h"
-
-namespace lol
-{
-
-namespace phys
-{
-
-enum eRaycastType
-{
-    ERT_Closest,
-    ERT_AllHit,
-    ERT_AnyHit, //Will stop at the first hit. Hit data are supposed to be irrelevant
-
-    ERT_MAX
-};
-
-struct RayCastResult
-{
-    RayCastResult(int CollisionFilterGroup=1, int CollisionFilterMask=(0xFF))
-    {
-        memset(this, 0, sizeof(RayCastResult));
-
-        m_collision_filter_group = CollisionFilterGroup;
-        m_collision_filter_mask = CollisionFilterMask;
-    }
-    void Reset()
-    {
-        m_collider_list.clear();
-        m_hit_normal_list.clear();
-        m_hit_point_list.clear();
-        m_hit_fraction_list.clear();
-    }
-
-    array<EasyPhysic*>        m_collider_list;
-    array<vec3>                m_hit_normal_list;
-    array<vec3>                m_hit_point_list;
-    array<float>            m_hit_fraction_list;
-
-    short int                m_collision_filter_group;
-    short int                 m_collision_filter_mask;
-    unsigned int             m_flags; //???
-};
-
-class Simulation : public entity
-{
-public:
-    Simulation() :
-        m_broadphase(0),
-        m_collision_configuration(0),
-        m_dispatcher(0),
-        m_solver(0),
-        m_dynamics_world(0),
-        m_timestep(1.f/60.f)
-    {
-        m_gamegroup = GAMEGROUP_SIMULATION;
-    }
-    ~Simulation()
-    {
-        Exit();
-    }
-
-    std::string GetName() const { return "<Simulation>"; }
-
-public:
-    void Init()
-    {
-        // Build the broadphase
-        if (1)
-        {
-            m_Sweep_broadphase = new btAxisSweep3(LOL2BT_VEC3(m_world_min), LOL2BT_VEC3(m_world_max));
-            m_Sweep_broadphase->getOverlappingPairCache()->setInternalGhostPairCallback(new btGhostPairCallback());
-            m_broadphase = m_Sweep_broadphase;
-        }
-        else
-            m_broadphase = new btDbvtBroadphase();
-
-        // Set up the collision configuration and dispatcher
-        m_collision_configuration = new btDefaultCollisionConfiguration();
-        m_dispatcher = new btCollisionDispatcher(m_collision_configuration);
-
-        // The actual physics solver
-        m_solver = new btSequentialImpulseConstraintSolver;
-
-        // The world.
-        m_dynamics_world = new btDiscreteDynamicsWorld(m_dispatcher, m_broadphase, m_solver, m_collision_configuration);
-    }
-
-    virtual void tick_game(float seconds)
-    {
-        entity::tick_game(seconds);
-
-        //step the simulation
-        if (m_dynamics_world)
-        {
-            //the "+1" is to have at least one Timestep and to ensure float to int .5f conversion.
-            int steps = (int)(seconds / m_timestep) + 1;
-            m_dynamics_world->stepSimulation(seconds, steps, m_timestep);
-        }
-    }
-
-    //Rip-Off of the btKinematicClosestNotMeRayResultCallback
-    class ClosestNotMeRayResultCallback : public btCollisionWorld::ClosestRayResultCallback
-    {
-    public:
-        ClosestNotMeRayResultCallback(btCollisionObject* Me, const btVector3& rayFromWorld, const btVector3& rayToWorld) :
-          btCollisionWorld::ClosestRayResultCallback(rayFromWorld, rayToWorld)
-        {
-            m_me = Me;
-        }
-
-        virtual btScalar addSingleResult(btCollisionWorld::LocalRayResult& rayResult,bool normalInWorldSpace)
-        {
-            if (rayResult.m_collisionObject == m_me)
-                return 1.0;
-
-            return ClosestRayResultCallback::addSingleResult(rayResult, normalInWorldSpace);
-        }
-    protected:
-        btCollisionObject* m_me;
-    };
-
-    //Will stop at the first hit. Hit data are supposed to be irrelevant
-    class AnyHitRayResultCallback : public btCollisionWorld::ClosestRayResultCallback
-    {
-    public:
-        AnyHitRayResultCallback(const btVector3& rayFromWorld, const btVector3& rayToWorld) :
-          btCollisionWorld::ClosestRayResultCallback(rayFromWorld, rayToWorld)
-        {
-        }
-
-        virtual btScalar addSingleResult(btCollisionWorld::LocalRayResult& rayResult,bool normalInWorldSpace)
-        {
-            UNUSED(rayResult);
-            UNUSED(normalInWorldSpace);
-            return .0f;
-        }
-    };
-
-    //Returns true when hitting something. If SourceCaster is set, it will be ignored by Raycast.
-    bool RayHits(RayCastResult& HitResult, eRaycastType RaycastType, const vec3& RayFrom, const vec3& RayTo, EasyPhysic* SourceCaster = nullptr)
-    {
-        bool bResult = false;
-
-        btCollisionWorld::RayResultCallback* BtRayResult = nullptr;
-        btCollisionWorld::ClosestRayResultCallback* BtRayResult_Closest;
-        btCollisionWorld::AllHitsRayResultCallback* BtRayResult_AllHits;
-
-        switch (RaycastType)
-        {
-            case ERT_Closest:
-            {
-                if (SourceCaster)
-                    BtRayResult_Closest = new ClosestNotMeRayResultCallback(SourceCaster->m_collision_object, LOL2BTU_VEC3(RayFrom), LOL2BTU_VEC3(RayTo));
-                else
-                    BtRayResult_Closest = new btCollisionWorld::ClosestRayResultCallback(LOL2BTU_VEC3(RayFrom), LOL2BTU_VEC3(RayTo));
-                BtRayResult = BtRayResult_Closest;
-                break;
-            }
-            case ERT_AllHit:
-            {
-                BtRayResult_AllHits = new btCollisionWorld::AllHitsRayResultCallback(LOL2BTU_VEC3(RayFrom), LOL2BTU_VEC3(RayTo));
-                BtRayResult = BtRayResult_AllHits;
-                break;
-            }
-            case ERT_AnyHit:
-            {
-                BtRayResult_Closest = new AnyHitRayResultCallback(LOL2BTU_VEC3(RayFrom), LOL2BTU_VEC3(RayTo));
-                BtRayResult = BtRayResult_Closest;
-                break;
-            }
-            default:
-            {
-                ASSERT(0, "Raycast not handled");
-            }
-        }
-
-        m_dynamics_world->rayTest(LOL2BTU_VEC3(RayFrom), LOL2BTU_VEC3(RayTo), *BtRayResult);
-        if (BtRayResult->hasHit())
-        {
-            bResult = true;
-
-            switch (RaycastType)
-            {
-                case ERT_Closest:
-                {
-                    HitResult.m_collider_list        << (EasyPhysic*)BtRayResult_Closest->m_collisionObject->getUserPointer();
-                    HitResult.m_hit_normal_list        << BT2LOLU_VEC3(BtRayResult_Closest->m_hitNormalWorld);
-                    HitResult.m_hit_point_list        << BT2LOLU_VEC3(BtRayResult_Closest->m_hitPointWorld);
-                    HitResult.m_hit_fraction_list    << BtRayResult_Closest->m_closestHitFraction;
-                    break;
-                }
-                case ERT_AllHit:
-                {
-                    for (int i = 0; i < BtRayResult_AllHits->m_collisionObjects.size(); i++)
-                    {
-                        HitResult.m_collider_list        << (EasyPhysic*)BtRayResult_AllHits->m_collisionObjects[i]->getUserPointer();
-                        HitResult.m_hit_normal_list        << BT2LOLU_VEC3(BtRayResult_AllHits->m_hitNormalWorld[i]);
-                        HitResult.m_hit_point_list        << BT2LOLU_VEC3(BtRayResult_AllHits->m_hitPointWorld[i]);
-                        HitResult.m_hit_fraction_list    << BtRayResult_AllHits->m_hitFractions[i];
-                    }
-                    break;
-                }
-                default:
-                {
-                    ASSERT(0, "Raycast not handled");
-                }
-            }
-        }
-
-        delete BtRayResult;
-
-        return bResult;
-    }
-
-
-    void Exit()
-    {
-        delete m_dynamics_world;
-        delete m_solver;
-        delete m_dispatcher;
-        delete m_collision_configuration;
-        delete m_broadphase;
-    }
-
-    btDiscreteDynamicsWorld* GetWorld()
-    {
-        return m_dynamics_world;
-    }
-
-private:
-    void CustomSetContinuousDetection(bool ShouldUseCCD)
-    {
-        if (m_dynamics_world)
-            m_dynamics_world->getDispatchInfo().m_useContinuous = ShouldUseCCD;
-    }
-
-    void CustomSetGravity(vec3 &NewGravity)
-    {
-        if (m_dynamics_world)
-            m_dynamics_world->setGravity(LOL2BT_VEC3(NewGravity * LOL2BT_UNIT));
-    }
-
-    void CustomSetWorldLimit(vec3 const &NewWorldMin, vec3 const &NewWorldMax)
-    {
-        UNUSED(NewWorldMin);
-        UNUSED(NewWorldMax);
-    }
-
-    void CustomSetTimestep(float NewTimestep) { }
-
-    //broadphase
-    btBroadphaseInterface*                    m_broadphase;
-    btAxisSweep3*                            m_Sweep_broadphase;
-    // Set up the collision configuration and dispatc
-    btDefaultCollisionConfiguration*        m_collision_configuration;
-    btCollisionDispatcher*                    m_dispatcher;
-    // The actual physics solver
-    btSequentialImpulseConstraintSolver*    m_solver;
-    // The world.
-    btDiscreteDynamicsWorld*                m_dynamics_world;
-
-public:
-    //Main logic :
-    //The Set*() functions do the all-lib-independent data storage.
-    //And then it calls the CustomSet*() which are the specialized versions.
-
-    //Sets the continuous collision detection flag.
-    void SetContinuousDetection(bool ShouldUseCCD)
-    {
-        m_using_CCD = ShouldUseCCD;
-        CustomSetContinuousDetection(ShouldUseCCD);
-    }
-
-    //Sets the simulation gravity.
-    void SetGravity(vec3 &NewGravity)
-    {
-        m_gravity = NewGravity;
-        CustomSetGravity(NewGravity);
-    }
-
-    //Sets the simulation gravity.
-    void SetWorldLimit(vec3 const &NewWorldMin, vec3 const &NewWorldMax)
-    {
-        m_world_min = NewWorldMin;
-        m_world_max = NewWorldMax;
-        CustomSetWorldLimit(NewWorldMin, NewWorldMax);
-    }
-
-    //Sets the simulation fixed timestep.
-    void SetTimestep(float NewTimestep)
-    {
-        if (NewTimestep > .0f)
-        {
-            m_timestep = NewTimestep;
-            CustomSetTimestep(NewTimestep);
-        }
-    }
-
-private:
-
-    friend class EasyPhysic;
-    friend class EasyCharacterController;
-    friend class EasyConstraint;
-
-    enum eEasyPhysicType
-    {
-        EEPT_Dynamic,
-        EEPT_Static,
-        EEPT_Ghost,
-        EEPT_CollisionObject,
-        EEPT_CharacterController,
-
-        EEPT_MAX
-    };
-
-    //m_owner_simulation
-    //Adds the given EasyPhysic to the correct list.
-    void ObjectRegistration(bool AddObject, EasyPhysic* NewEP, eEasyPhysicType CurType)
-    {
-        array<EasyPhysic*>* SearchList = nullptr;
-        switch(CurType)
-        {
-            case EEPT_Dynamic:
-            {
-                SearchList = &m_dynamic_list;
-                break;
-            }
-            case EEPT_Static:
-            {
-                SearchList = &m_static_list;
-                break;
-            }
-            case EEPT_Ghost:
-            {
-                SearchList = &m_ghost_list;
-                break;
-            }
-            case EEPT_CollisionObject:
-            {
-                SearchList = &m_collision_object_list;
-                break;
-            }
-            case EEPT_CharacterController:
-            {
-                SearchList = &m_character_controller_list;
-                break;
-            }
-            default:
-            {
-                ASSERT(0, "Physic type does not exist.");
-            }
-        }
-
-        if (AddObject)
-        {
-            NewEP->m_owner_simulation = this;
-            (*SearchList) << NewEP;
-        }
-        else
-        {
-            NewEP->m_owner_simulation = nullptr;
-            SearchList->remove_item(NewEP);
-        }
-    }
-    void ObjectRegistration(bool AddObject, EasyConstraint* NewEC)
-    {
-        array<EasyConstraint*>* SearchList = nullptr;
-        SearchList = &m_constraint_list;
-
-        if (AddObject)
-        {
-            NewEC->m_owner_simulation = this;
-            (*SearchList) << NewEC;
-        }
-        else
-        {
-            NewEC->m_owner_simulation = nullptr;
-            SearchList->remove_item(NewEC);
-        }
-    }
-
-    //Easy Physics body List
-    array<EasyPhysic*>                        m_dynamic_list;
-    array<EasyPhysic*>                        m_static_list;
-    array<EasyPhysic*>                        m_ghost_list;
-    array<EasyPhysic*>                        m_collision_object_list;
-    array<EasyPhysic*>                        m_character_controller_list;
-    array<EasyConstraint*>                    m_constraint_list;
-
-    //Easy Physics data storage
-    float                                    m_timestep;
-    bool                                    m_using_CCD;
-    vec3                                    m_gravity;
-    vec3                                    m_world_min;
-    vec3                                    m_world_max;
-};
-
-} /* namespace phys */
-
-} /* namespace lol */
-
diff --git a/doc/samples/sandbox/Makefile.am b/doc/samples/sandbox/Makefile.am
deleted file mode 100644
index 8a72b0ab..00000000
--- a/doc/samples/sandbox/Makefile.am
+++ /dev/null
@@ -1,11 +0,0 @@
-
-include $(top_srcdir)/build/autotools/common.am
-
-if BUILD_SAMPLES
-bin_PROGRAMS = sample
-endif
-
-sample_SOURCES = sample.cpp
-sample_CPPFLAGS = $(AM_CPPFLAGS)
-sample_DEPENDENCIES = @LOL_DEPS@
-
diff --git a/doc/samples/sandbox/sample.cpp b/doc/samples/sandbox/sample.cpp
deleted file mode 100644
index 8fb497ce..00000000
--- a/doc/samples/sandbox/sample.cpp
+++ /dev/null
@@ -1,44 +0,0 @@
-//
-//  Lol Engine — Sandbox program
-//
-//  Copyright © 2005—2018 Sam Hocevar <sam@hocevar.net>
-//
-//  This program is free software. It comes without any warranty, to
-//  the extent permitted by applicable law. You can redistribute it
-//  and/or modify it under the terms of the Do What the Fuck You Want
-//  to Public License, Version 2, as published by the WTFPL Task Force.
-//  See http://www.wtfpl.net/ for more details.
-//
-
-#if HAVE_CONFIG_H
-#   include "config.h"
-#endif
-
-#include <lol/engine.h>
-
-using namespace lol;
-
-int main(int, char **)
-{
-    timer t;
-
-    bigint<128> x(17), y(23);
-    x.print();
-    y.print();
-
-    auto z = x * y;
-    z.print();
-
-    for (int i = 0; i < 500000; ++i)
-    {
-        x = (bigint<128>)(x * x);
-        x ^= y;
-    }
-
-    printf("%d %d\n", (int)x, (int)y);
-
-    printf("Time: %f s\n", t.get());
-
-    return EXIT_SUCCESS;
-}
-
diff --git a/doc/samples/simplex.cpp b/doc/samples/simplex.cpp
deleted file mode 100644
index 71c82c5f..00000000
--- a/doc/samples/simplex.cpp
+++ /dev/null
@@ -1,147 +0,0 @@
-//
-//  Lol Engine — Simplex Noise tutorial
-//
-//  Copyright © 2010—2017 Sam Hocevar <sam@hocevar.net>
-//            © 2013-2014 Guillaume Bittoun <guillaume.bittoun@gmail.com>
-//
-//  Lol Engine is free software. It comes without any warranty, to
-//  the extent permitted by applicable law. You can redistribute it
-//  and/or modify it under the terms of the Do What the Fuck You Want
-//  to Public License, Version 2, as published by the WTFPL Task Force.
-//  See http://www.wtfpl.net/ for more details.
-//
-
-#if HAVE_CONFIG_H
-#   include "config.h"
-#endif
-
-#include <lol/engine.h>
-
-using namespace lol;
-
-/* Constants to tweak */
-ivec2 const size(1280 * 1, 720 * 1);
-float const zoom = 0.03f / 1;
-int const octaves = 1;
-
-int main(int argc, char **argv)
-{
-    UNUSED(argc, argv);
-
-    srand(time(nullptr));
-
-    /* Create an image */
-    image img(size);
-    array2d<vec4> &data = img.lock2d<PixelFormat::RGBA_F32>();
-
-    /* Declare plenty of allocators */
-    simplex_noise<2> s2;
-    simplex_noise<3> s3;
-    simplex_noise<4> s4;
-    simplex_noise<5> s5;
-    simplex_noise<6> s6;
-    simplex_noise<7> s7;
-    simplex_noise<8> s8;
-    simplex_noise<9> s9;
-    simplex_noise<10> s10;
-    simplex_noise<11> s11;
-    simplex_noise<12> s12;
-
-    /* Fill image with simplex noise */
-    for (int j = 0; j < size.y; ++j)
-    for (int i = 0; i < size.x; ++i)
-    {
-        int cell = j / (size.y / 2) * 3 + i / (size.x / 3);
-
-        float x = (float)i, y = (float)j;
-        float sum = 0.f, coeff = 0.f;
-        int const max_k = 1 << octaves;
-        bool b_centre = false, b_sphere1 = false, b_sphere2 = false;
-
-        for (int k = 1; k < max_k; k *= 2)
-        {
-            float t = 0.f;
-
-            switch (cell)
-            {
-            case 0:
-                t = s2.eval(zoom * k * vec2(x, y));
-                break;
-            case 1:
-                t = s3.eval(zoom * k * vec3(x, 1.f, y));
-                break;
-            case 2:
-                t = s4.eval(zoom * k * vec4(x, 1.f, y, 2.f));
-                break;
-            case 3:
-                t = s6.eval(zoom * k * vec6(x, 1.f, 2.f, y, 3.f, 4.f));
-                break;
-            case 4:
-                t = s8.eval(zoom * k * vec8(x, 1.f, 2.f, 3.f,
-                                            y, 4.f, 5.f, 6.f));
-                break;
-            case 5:
-                //t = s12.eval(zoom * k * vec12(x / 2, -x / 2, y / 2, -y / 2,
-                //                              -x / 2, x / 2, -y / 2, y / 2,
-                //                              7.f, 8.f, 9.f, 10.f));
-                t = s12.eval(zoom * k * vec12(x, 1.f, 2.f, 3.f, 4.f, 5.f,
-                                              y, 6.f, 7.f, 8.f, 9.f, 10.f));
-                break;
-            default:
-                break;
-            }
-
-            if (t == -2.f) b_centre = true;
-            if (t == -3.f) b_sphere1 = true;
-            if (t == -4.f) b_sphere2 = true;
-
-            sum += 1.f / k * t;
-            coeff += 1.f / k;
-        }
-
-        if (b_centre)
-            data[i][j] = vec4(1.f, 0.f, 1.f, 1.f);
-        else if (b_sphere1)
-            data[i][j] = vec4(0.f, 1.f, 0.f, 1.f);
-        else if (b_sphere2)
-            data[i][j] = vec4(0.f, 0.f, 1.f, 1.f);
-        else
-        {
-            float c = saturate(0.5f + 0.5f * sum / coeff);
-            data[i][j] = vec4(c, c, c, 1.f);
-            //data[i][j] = Color::HSVToRGB(vec4(c, 1.0f, 0.5f, 1.f));
-        }
-    }
-
-#if 0
-    /* Mark simplex vertices */
-    vec2 diagonal = normalize(vec2(1.f));
-    vec2 dx = mat2::rotate(radians(60.f)) * diagonal;
-    vec2 dy = mat2::rotate(radians(-60.f)) * diagonal;
-    for (int j = -100; j < 100; ++j)
-    for (int i = -100; i < 100; ++i)
-    {
-        auto putpixel = [&](ivec2 p, vec4 c = vec4(1.f, 0.f, 1.f, 1.f))
-        {
-            if (p.x >= 0 && p.x < size.x - 1 && p.y >= 0 && p.y < size.y - 1)
-                data[p.x][p.y] = c;
-        };
-
-        ivec2 coord = ivec2(i / zoom * dx + j / zoom * dy);
-
-        vec2 g = s2.gradient((i + 0.1f) * dx + (j + 0.1f) * dy);
-        for (int t = 0; t < 40; ++t)
-            putpixel(coord + (ivec2)(g * (t / 2.f)), vec4(0.f, 1.f, 0.f, 1.f));
-
-        putpixel(coord);
-        putpixel(coord + ivec2(1, 0));
-        putpixel(coord + ivec2(0, 1));
-        putpixel(coord + ivec2(1, 1));
-    }
-#endif
-
-    /* Save image */
-    img.unlock2d(data);
-    img.save("simplex.png");
-}
-
diff --git a/doc/shitlolbotsays.txt b/doc/shitlolbotsays.txt
deleted file mode 100644
index 2a475eba..00000000
--- a/doc/shitlolbotsays.txt
+++ /dev/null
@@ -1,46 +0,0 @@
-<lolbot> en france tfacon :)
-%
-<lolbot> Je crois qu'il est en AMerique mon ptit gars, je me lève tôt demain matin, je pars bosser
-%
-<lolbot> c'est ou ?
-%
-<lolbot> Touky bloque avec Guillaume devant des questions d'hygiène
-%
-<lolbot> oui c'est le kiff les nouveaux locaux omg
-%
-<lolbot> CPU à priori mon vc6.0 est dans le port, dans l'eau, probablement completement bourre, car les bars sont pas trompés http://files.sharenator.com/Kill_it_With_Fire_Aliens-s576x304-132453.jpg
-%
-<lolbot> j'ai recommencé le jeu est proche de FTL au final
-%
-<lolbot> au fait tu peux devenir chef-Producer, ils en sont capables de nous parler de l'hégémonie du grand gourou du groupe O+ et me l'étaler sur le site reçoit un prix acceptable
-%
-<rez_> ha ben
-<rez_> ça va vite le net chez nous
-<rez_> je récupère un torrent de 3Go à 12 Mo par secondes
-<lolbot> c'est franchement pas grave je passe plus de 100 lolipop par secondes
-%
-<lolbot> Touky: (et faut attendre tout le middleware pendant ma pause de midi comme vous genre On aura saisi qu'il est pas censé être déja le HA. GAYYYYYY c'est mort
-%
-<sam> bon c'est rigolo mais ça va super nous gaver
-<lolbot> ouais mais ça fait des frissons tout partout
-%
-<Jnat1> cocaine + lolbot = shitloads of fun
-<lolbot> ouais avec theory of fun bien proéminent
-%
-<lolbot> RuTT: p'tain mais Gameblog, ce Gorafi du JV
-%
-<lolbot> wanadoo hahahaah la loooooooooooooooooooooooooooooooooooozzzeeee
-%
-<lolbot> rez_: nan les pédophiles abiment la marchandise
-%
-<lolbot> rez_: et ça sentait la prèz bidonnée, de tellement loin… et ces ptits pédés : ils se sont succédées
-%
-<lolbot> c'est .... hum .... "normal" ?
-%
-<lolbot> rez_: mais bon, suffit de mettre leur caca chez nous
-%
-<lolbot> rez_: c'est a eux alors qu'on est pas loin de chez toi de remplir les champs de vecteurs, comme dans diablo 3 en built-in, mais des bougnoules marrants
-%
-<lolbot> TypX: aucun signe de vie ridicule par rapport à la cuisine !!
-%
-<lolbot> voir ENCULER de rire
diff --git a/doc/tutorial/01_triangle.cpp b/doc/tutorial/01_triangle.cpp
deleted file mode 100644
index a7c2e4c9..00000000
--- a/doc/tutorial/01_triangle.cpp
+++ /dev/null
@@ -1,88 +0,0 @@
-//
-//  Lol Engine — Triangle tutorial
-//
-//  Copyright © 2012—2019 Sam Hocevar <sam@hocevar.net>
-//
-//  Lol Engine is free software. It comes without any warranty, to
-//  the extent permitted by applicable law. You can redistribute it
-//  and/or modify it under the terms of the Do What the Fuck You Want
-//  to Public License, Version 2, as published by the WTFPL Task Force.
-//  See http://www.wtfpl.net/ for more details.
-//
-
-#if HAVE_CONFIG_H
-#   include "config.h"
-#endif
-
-#include <memory>
-
-#include <lol/engine.h>
-#include "loldebug.h"
-
-using namespace lol;
-
-LOLFX_RESOURCE_DECLARE(01_triangle);
-
-class Triangle : public WorldEntity
-{
-public:
-    virtual bool init_draw() override
-    {
-        array<vec2> vertices
-        {
-            vec2( 0.0f,  0.8f),
-            vec2(-0.8f, -0.8f),
-            vec2( 0.8f, -0.8f),
-        };
-
-        m_shader = Shader::Create(LOLFX_RESOURCE_NAME(01_triangle));
-        m_coord = m_shader->GetAttribLocation(VertexUsage::Position, 0);
-
-        m_vdecl = std::make_shared<VertexDeclaration>(VertexStream<vec2>(VertexUsage::Position));
-
-        m_vbo = std::make_shared<VertexBuffer>(vertices.bytes());
-        m_vbo->set_data(vertices.data(), vertices.bytes());
-
-        return true;
-    }
-
-    virtual void tick_draw(float seconds, Scene &scene) override
-    {
-        WorldEntity::tick_draw(seconds, scene);
-
-        m_shader->Bind();
-        m_vdecl->Bind();
-        m_vdecl->SetStream(m_vbo, m_coord);
-        m_vdecl->DrawElements(MeshPrimitive::Triangles, 0, 3);
-        m_vdecl->Unbind();
-    }
-
-    virtual bool release_draw() override
-    {
-        m_shader.reset();
-        m_vdecl.reset();
-        m_vbo.reset();
-
-        return true;
-    }
-
-private:
-    std::shared_ptr<Shader> m_shader;
-    ShaderAttrib m_coord;
-    std::shared_ptr<VertexDeclaration> m_vdecl;
-    std::shared_ptr<VertexBuffer> m_vbo;
-};
-
-int main(int argc, char **argv)
-{
-    sys::init(argc, argv);
-
-    Application app("Tutorial 1: Triangle", ivec2(640, 480), 60.0f);
-
-    new DebugFps(5, 5);
-    new Triangle();
-
-    app.Run();
-    return EXIT_SUCCESS;
-}
-
diff --git a/doc/tutorial/01_triangle.lolfx b/doc/tutorial/01_triangle.lolfx
deleted file mode 100644
index 5740b7f9..00000000
--- a/doc/tutorial/01_triangle.lolfx
+++ /dev/null
@@ -1,35 +0,0 @@
-/*
- * Awesome triangle shader
- */
-
-technique FlatColor
-{
-    pass DefaultPass
-    {
-        vertexshader = vert;
-        pixelshader = frag;
-    }
-}
-
-[vert.glsl]
-#version 130
-
-in vec2 in_position;
-
-void main(void)
-{
-    gl_Position = vec4(in_position, 0.0, 1.0);
-}
-
-[frag.glsl]
-#version 130
-
-#if defined GL_ES
-precision highp float;
-#endif
-
-void main(void)
-{
-    gl_FragColor = vec4(0.7, 0.2, 0.5, 1.0);
-}
-
diff --git a/doc/tutorial/01_triangle.vcxproj b/doc/tutorial/01_triangle.vcxproj
deleted file mode 100644
index cb049b12..00000000
--- a/doc/tutorial/01_triangle.vcxproj
+++ /dev/null
@@ -1,69 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <PropertyGroup Label="LolMacros">
-    <LolDir Condition="Exists('$(SolutionDir)\lol')">$(SolutionDir)\lol</LolDir>
-    <LolDir Condition="!Exists('$(SolutionDir)\lol')">$(SolutionDir)</LolDir>
-  </PropertyGroup>
-  <ItemGroup Label="ProjectConfigurations">
-    <ProjectConfiguration Include="Debug|NX64">
-      <Configuration>Debug</Configuration>
-      <Platform>NX64</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Debug|ORBIS">
-      <Configuration>Debug</Configuration>
-      <Platform>ORBIS</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Debug|Win32">
-      <Configuration>Debug</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Debug|x64">
-      <Configuration>Debug</Configuration>
-      <Platform>x64</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Release|NX64">
-      <Configuration>Release</Configuration>
-      <Platform>NX64</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Release|ORBIS">
-      <Configuration>Release</Configuration>
-      <Platform>ORBIS</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Release|Win32">
-      <Configuration>Release</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Release|x64">
-      <Configuration>Release</Configuration>
-      <Platform>x64</Platform>
-    </ProjectConfiguration>
-  </ItemGroup>
-  <ItemGroup>
-    <ClCompile Include="01_triangle.cpp" />
-  </ItemGroup>
-  <ItemGroup>
-    <LolFxCompile Include="01_triangle.lolfx" />
-  </ItemGroup>
-  <Import Project="$(LolDir)\build\msbuild\lol-core.props" />
-  <Import Project="$(LolDir)\build\msbuild\lol-bullet.props" />
-  <PropertyGroup Label="Globals">
-    <ProjectGuid>{b92abadc-45be-4cc5-b724-9426053123a1}</ProjectGuid>
-    <ConfigurationType>Application</ConfigurationType>
-    <Keyword>Win32Proj</Keyword>
-  </PropertyGroup>
-  <Import Project="$(LolDir)\build\msbuild\lol.config.props" />
-  <ImportGroup Label="ExtensionSettings">
-    <Import Project="$(LolDir)\build\msbuild\lolfx.props" />
-  </ImportGroup>
-  <ImportGroup Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(LolDir)\build\msbuild\lol.vars.props" />
-  </ImportGroup>
-  <PropertyGroup Label="UserMacros" />
-  <Import Project="$(LolDir)\build\msbuild\lol.rules.props" />
-  <ItemDefinitionGroup />
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
-  <ImportGroup Label="ExtensionTargets">
-    <Import Project="$(LolDir)\build\msbuild\lolfx.targets" />
-  </ImportGroup>
-</Project>
\ No newline at end of file
diff --git a/doc/tutorial/02_cube.cpp b/doc/tutorial/02_cube.cpp
deleted file mode 100644
index 2008239e..00000000
--- a/doc/tutorial/02_cube.cpp
+++ /dev/null
@@ -1,190 +0,0 @@
-//
-//  Lol Engine — Cube tutorial
-//
-//  Copyright © 2011—2019 Sam Hocevar <sam@hocevar.net>
-//
-//  Lol Engine is free software. It comes without any warranty, to
-//  the extent permitted by applicable law. You can redistribute it
-//  and/or modify it under the terms of the Do What the Fuck You Want
-//  to Public License, Version 2, as published by the WTFPL Task Force.
-//  See http://www.wtfpl.net/ for more details.
-//
-
-#if HAVE_CONFIG_H
-#   include "config.h"
-#endif
-
-#include <lol/engine.h>
-#include "loldebug.h"
-
-using namespace lol;
-
-LOLFX_RESOURCE_DECLARE(02_cube);
-
-class Cube : public WorldEntity
-{
-public:
-    Cube()
-    {
-        m_camera = new Camera();
-        m_camera->SetProjection(mat4::perspective(radians(30.f), 640.f, 480.f, .1f, 1000.f));
-        m_camera->SetView(mat4::lookat(vec3(-15.f, 5.f, 0.f),
-            vec3(0.f, -1.f, 0.f),
-            vec3(0.f, 1.f, 0.f)));
-        Scene& scene = Scene::GetScene();
-        scene.PushCamera(m_camera);
-        Ticker::Ref(m_camera);
-    }
-
-    ~Cube()
-    {
-        Scene& scene = Scene::GetScene();
-        scene.PopCamera(m_camera);
-        Ticker::Unref(m_camera);
-    }
-
-    virtual bool init_draw() override
-    {
-        array<vec3, vec3> mesh
-        {
-            // Front vertices/colors
-            { vec3(-1.0, -1.0,  1.0), vec3(1.0, 0.0, 1.0) },
-            { vec3( 1.0, -1.0,  1.0), vec3(0.0, 1.0, 0.0) },
-            { vec3( 1.0,  1.0,  1.0), vec3(1.0, 0.5, 0.0) },
-            { vec3(-1.0,  1.0,  1.0), vec3(1.0, 1.0, 0.0) },
-            // Back
-            { vec3(-1.0, -1.0, -1.0), vec3(1.0, 0.0, 0.0) },
-            { vec3( 1.0, -1.0, -1.0), vec3(0.0, 0.5, 0.0) },
-            { vec3( 1.0,  1.0, -1.0), vec3(0.0, 0.5, 1.0) },
-            { vec3(-1.0,  1.0, -1.0), vec3(0.0, 0.0, 1.0) },
-        };
-
-        array<uint16_t> lines_indices
-        {
-            0, 1, 1, 2, 2, 3, 3, 0,
-            4, 5, 5, 6, 6, 7, 7, 4,
-            0, 4, 1, 5, 2, 6, 3, 7,
-        };
-
-        array<uint16_t> faces_indices
-        {
-            0, 1, 2, 2, 3, 0, 1, 5, 6, 6, 2, 1,
-            7, 6, 5, 5, 4, 7, 4, 0, 3, 3, 7, 4,
-            4, 5, 1, 1, 0, 4, 3, 2, 6, 6, 7, 3,
-        };
-
-        m_shader = Shader::Create(LOLFX_RESOURCE_NAME(02_cube));
-
-        m_mvp = m_shader->GetUniformLocation("u_matrix");
-        m_coord = m_shader->GetAttribLocation(VertexUsage::Position, 0);
-        m_color = m_shader->GetAttribLocation(VertexUsage::Color, 0);
-
-        m_vdecl = std::make_shared<VertexDeclaration>(
-                                VertexStream<vec3,vec3>(VertexUsage::Position,
-                                                        VertexUsage::Color));
-
-        m_vbo = std::make_shared<VertexBuffer>(mesh.bytes());
-        m_vbo->set_data(mesh.data(), mesh.bytes());
-
-        m_lines_ibo = std::make_shared<IndexBuffer>(lines_indices.bytes());
-        m_lines_ibo->set_data(lines_indices.data(), lines_indices.bytes());
-
-        m_faces_ibo = std::make_shared<IndexBuffer>(faces_indices.bytes());
-        m_faces_ibo->set_data(faces_indices.data(), faces_indices.bytes());
-
-        return true;
-    }
-
-    virtual void tick_game(float seconds) override
-    {
-        WorldEntity::tick_game(seconds);
-
-        m_angle += seconds * radians(45.0f);
-
-        mat4 anim = mat4::rotate(m_angle, vec3(0, 1, 0));
-        mat4 model = mat4::translate(vec3(0, 0, -4.5));
-        mat4 view = mat4::lookat(vec3(0, 2, 0), vec3(0, 0, -4), vec3(0, 1, 0));
-        mat4 proj = mat4::perspective(radians(45.0f), 640.0f, 480.0f, 0.1f, 10.0f);
-
-        m_matrix = proj * view * model * anim;
-
-        {
-            auto context0 = Debug::DrawContext::New(Color::red);
-            {
-                auto context1 = Debug::DrawContext::New(Color::blue);
-                Debug::DrawBox(box3(vec3(0.f), vec3(1.2f)));
-                Debug::DrawGrid(vec3(0.f), vec3::axis_x, vec3::axis_y, vec3::axis_z, 10.0f);
-                {
-                    auto context2 = Debug::DrawContext::New(context0);
-                    Debug::DrawBox(box3(vec3(0.f), vec3(1.3f)));
-                }
-                {
-                    auto context2 = Debug::DrawContext::New(context0);
-                    context2.SetColor(Color::yellow);
-                    Debug::DrawBox(box3(vec3(-1.f), vec3(1.4f)));
-                }
-            }
-            Debug::DrawBox(box3(vec3(0.f), vec3(1.1f)));
-        }
-    }
-
-    virtual void tick_draw(float seconds, Scene &scene) override
-    {
-        WorldEntity::tick_draw(seconds, scene);
-
-        scene.get_renderer()->clear_color(vec4(0.0f, 0.0f, 0.0f, 1.0f));
-
-        m_shader->Bind();
-        m_vdecl->Bind();
-        m_vdecl->SetStream(m_vbo, m_coord, m_color);
-
-        m_shader->SetUniform(m_mvp, m_matrix);
-        m_lines_ibo->Bind();
-        m_vdecl->DrawIndexedElements(MeshPrimitive::Lines, m_lines_ibo->size() / sizeof(uint16_t));
-        m_lines_ibo->Unbind();
-
-        m_shader->SetUniform(m_mvp, m_matrix * mat4::scale(0.5f));
-        m_faces_ibo->Bind();
-        m_vdecl->DrawIndexedElements(MeshPrimitive::Triangles, m_faces_ibo->size() / sizeof(uint16_t));
-        m_faces_ibo->Unbind();
-
-        m_vdecl->Unbind();
-    }
-
-    virtual bool release_draw() override
-    {
-        m_shader.reset();
-        m_vdecl.reset();
-        m_vbo.reset();
-        m_lines_ibo.reset();
-        m_faces_ibo.reset();
-        return true;
-    }
-
-private:
-    Camera* m_camera = nullptr;
-    float m_angle = 0.0f;
-    mat4 m_matrix;
-
-    std::shared_ptr<Shader> m_shader;
-    ShaderAttrib m_coord, m_color;
-    ShaderUniform m_mvp;
-    std::shared_ptr<VertexDeclaration> m_vdecl;
-    std::shared_ptr<VertexBuffer> m_vbo;
-    std::shared_ptr<IndexBuffer> m_lines_ibo, m_faces_ibo;
-};
-
-int main(int argc, char **argv)
-{
-    sys::init(argc, argv);
-
-    Application app("Tutorial 2: Cube", ivec2(640, 480), 60.0f);
-
-    new DebugFps(5, 5);
-    new Cube();
-
-    app.Run();
-
-    return EXIT_SUCCESS;
-}
-
diff --git a/doc/tutorial/02_cube.lolfx b/doc/tutorial/02_cube.lolfx
deleted file mode 100644
index 52298cd9..00000000
--- a/doc/tutorial/02_cube.lolfx
+++ /dev/null
@@ -1,32 +0,0 @@
-[vert.glsl]
-
-#version 130
-
-attribute vec3 in_position;
-attribute vec3 in_color;
-
-uniform mat4 u_matrix;
-
-out vec3 pass_color;
-
-void main(void)
-{
-    gl_Position = u_matrix * vec4(in_position, 1.0);
-    pass_color = in_color;
-}
-
-[frag.glsl]
-
-#version 130
-
-#if defined GL_ES
-precision highp float;
-#endif
-
-in vec3 pass_color;
-
-void main(void)
-{
-    gl_FragColor = vec4(pass_color, 1.0);
-}
-
diff --git a/doc/tutorial/02_cube.vcxproj b/doc/tutorial/02_cube.vcxproj
deleted file mode 100644
index 2ac89dea..00000000
--- a/doc/tutorial/02_cube.vcxproj
+++ /dev/null
@@ -1,69 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <PropertyGroup Label="LolMacros">
-    <LolDir Condition="Exists('$(SolutionDir)\lol')">$(SolutionDir)\lol</LolDir>
-    <LolDir Condition="!Exists('$(SolutionDir)\lol')">$(SolutionDir)</LolDir>
-  </PropertyGroup>
-  <ItemGroup Label="ProjectConfigurations">
-    <ProjectConfiguration Include="Debug|NX64">
-      <Configuration>Debug</Configuration>
-      <Platform>NX64</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Debug|ORBIS">
-      <Configuration>Debug</Configuration>
-      <Platform>ORBIS</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Debug|Win32">
-      <Configuration>Debug</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Debug|x64">
-      <Configuration>Debug</Configuration>
-      <Platform>x64</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Release|NX64">
-      <Configuration>Release</Configuration>
-      <Platform>NX64</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Release|ORBIS">
-      <Configuration>Release</Configuration>
-      <Platform>ORBIS</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Release|Win32">
-      <Configuration>Release</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Release|x64">
-      <Configuration>Release</Configuration>
-      <Platform>x64</Platform>
-    </ProjectConfiguration>
-  </ItemGroup>
-  <ItemGroup>
-    <ClCompile Include="02_cube.cpp" />
-  </ItemGroup>
-  <ItemGroup>
-    <LolFxCompile Include="02_cube.lolfx" />
-  </ItemGroup>
-  <Import Project="$(LolDir)\build\msbuild\lol-core.props" />
-  <Import Project="$(LolDir)\build\msbuild\lol-bullet.props" />
-  <PropertyGroup Label="Globals">
-    <ProjectGuid>{7b083da2-fe08-4f6d-bfdd-195d5c2783eb}</ProjectGuid>
-    <ConfigurationType>Application</ConfigurationType>
-    <Keyword>Win32Proj</Keyword>
-  </PropertyGroup>
-  <Import Project="$(LolDir)\build\msbuild\lol.config.props" />
-  <ImportGroup Label="ExtensionSettings">
-    <Import Project="$(LolDir)\build\msbuild\lolfx.props" />
-  </ImportGroup>
-  <ImportGroup Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(LolDir)\build\msbuild\lol.vars.props" />
-  </ImportGroup>
-  <PropertyGroup Label="UserMacros" />
-  <Import Project="$(LolDir)\build\msbuild\lol.rules.props" />
-  <ItemDefinitionGroup />
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
-  <ImportGroup Label="ExtensionTargets">
-    <Import Project="$(LolDir)\build\msbuild\lolfx.targets" />
-  </ImportGroup>
-</Project>
\ No newline at end of file
diff --git a/doc/tutorial/03_noise.cpp b/doc/tutorial/03_noise.cpp
deleted file mode 100644
index af01a0f1..00000000
--- a/doc/tutorial/03_noise.cpp
+++ /dev/null
@@ -1,95 +0,0 @@
-//
-//  Lol Engine — Noise tutorial
-//
-//  Copyright © 2012—2019 Sam Hocevar <sam@hocevar.net>
-//
-//  Lol Engine is free software. It comes without any warranty, to
-//  the extent permitted by applicable law. You can redistribute it
-//  and/or modify it under the terms of the Do What the Fuck You Want
-//  to Public License, Version 2, as published by the WTFPL Task Force.
-//  See http://www.wtfpl.net/ for more details.
-//
-
-#if HAVE_CONFIG_H
-#   include "config.h"
-#endif
-
-#include <memory>
-
-#include <lol/engine.h>
-#include "loldebug.h"
-
-using namespace lol;
-
-LOLFX_RESOURCE_DECLARE(03_noise);
-
-class NoiseDemo : public WorldEntity
-{
-public:
-    virtual bool init_draw() override
-    {
-        array<vec2> vertices
-        {
-            vec2(-1.0,  1.0),
-            vec2(-1.0, -1.0),
-            vec2( 1.0, -1.0),
-            vec2(-1.0,  1.0),
-            vec2( 1.0, -1.0),
-            vec2( 1.0,  1.0),
-        };
-
-        m_shader = Shader::Create(LOLFX_RESOURCE_NAME(03_noise));
-        m_coord = m_shader->GetAttribLocation(VertexUsage::Position, 0);
-        m_time_uni = m_shader->GetUniformLocation("u_time");
-
-        m_vdecl = std::make_shared<VertexDeclaration>(VertexStream<vec2>(VertexUsage::Position));
-
-        m_vbo = std::make_shared<VertexBuffer>(vertices.bytes());
-        m_vbo->set_data(vertices.data(), vertices.bytes());
-
-        return true;
-    }
-
-    virtual void tick_draw(float seconds, Scene &scene) override
-    {
-        WorldEntity::tick_draw(seconds, scene);
-
-        m_time += seconds;
-
-        m_shader->Bind();
-        m_shader->SetUniform(m_time_uni, m_time);
-        m_vdecl->Bind();
-        m_vdecl->SetStream(m_vbo, m_coord);
-        m_vdecl->DrawElements(MeshPrimitive::Triangles, 0, 6);
-        m_vdecl->Unbind();
-    }
-
-    virtual bool release_draw() override
-    {
-        m_shader.reset();
-        m_vdecl.reset();
-        m_vbo.reset();
-        return true;
-    }
-
-private:
-    std::shared_ptr<Shader> m_shader;
-    ShaderAttrib m_coord;
-    ShaderUniform m_time_uni;
-    std::shared_ptr<VertexDeclaration> m_vdecl;
-    std::shared_ptr<VertexBuffer> m_vbo;
-    float m_time = 0.0;
-};
-
-int main(int argc, char **argv)
-{
-    sys::init(argc, argv);
-
-    Application app("Tutorial 3: Noise", ivec2(1280, 720), 60.0f);
-
-    new NoiseDemo();
-
-    app.Run();
-    return EXIT_SUCCESS;
-}
-
diff --git a/doc/tutorial/03_noise.lolfx b/doc/tutorial/03_noise.lolfx
deleted file mode 100644
index 9a055105..00000000
--- a/doc/tutorial/03_noise.lolfx
+++ /dev/null
@@ -1,147 +0,0 @@
-[vert.glsl]
-
-#version 130
-
-in vec2 in_position;
-
-uniform float u_time;
-
-out vec4 pass_position;
-out vec3 water[4];
-out vec3 fire[4];
-
-float mod289(float x)
-{
-    return x - floor(x * (1.0 / 289.0)) * 289.0;
-}
-
-void main(void)
-{
-    mat3 r = mat3(0.36, 0.48, -0.8, -0.8, 0.60, 0.0, 0.48, 0.64, 0.60);
-    vec3 p_pos = r * vec3(in_position * vec2(16.0, 9.0), 0.0);
-    vec3 p_time = r * vec3(0.0, 0.0, u_time * 2.0);
-
-    /* Noise sampling points for water */
-    water[0] = p_pos / 2.0 + p_time;
-    water[1] = p_pos / 4.0 + p_time;
-    water[2] = p_pos / 8.0 + p_time;
-    water[3] = p_pos / 16.0 + p_time;
-
-    /* Noise sampling points for fire */
-    p_pos = 16.0 * p_pos - r * vec3(0.0, mod289(u_time) * 128.0, 0.0);
-    fire[0] = p_pos / 2.0 + p_time * 2.0;
-    fire[1] = p_pos / 4.0 + p_time * 1.5;
-    fire[2] = p_pos / 8.0 + p_time;
-    fire[3] = p_pos / 16.0 + p_time;
-
-    /* Pass rotated screen coordinates */
-    pass_position.xy = in_position;
-    mat2 rot = mat2(cos(u_time), sin(u_time), -sin(u_time), cos(u_time));
-    pass_position.zw = rot * in_position;
-
-    gl_Position = vec4(in_position, 0.0, 1.0);
-}
-
-[frag.glsl]
-
-#version 130
-
-#if defined GL_ES
-precision highp float;
-#endif
-
-in vec4 pass_position;
-in vec3 water[4];
-in vec3 fire[4];
-
-uniform float u_time;
-
-vec4 mod289(vec4 x)
-{
-    return x - floor(x * (1.0 / 289.0)) * 289.0;
-}
-
-vec4 perm(vec4 x)
-{
-    return mod289(((x * 34.0) + 1.0) * x);
-}
-
-float noise3d(vec3 p)
-{
-    vec3 a = floor(p);
-    vec3 d = p - a;
-    d = d * d * (3.0 - 2.0 * d);
-
-    vec4 b = a.xxyy + vec4(0.0, 1.0, 0.0, 1.0);
-    vec4 k1 = perm(b.xyxy);
-    vec4 k2 = perm(k1.xyxy + b.zzww);
-
-    vec4 c = k2 + a.zzzz;
-    vec4 k3 = perm(c);
-    vec4 k4 = perm(c + 1.0);
-
-    vec4 o1 = fract(k3 * (1.0 / 41.0));
-    vec4 o2 = fract(k4 * (1.0 / 41.0));
-
-    vec4 o3 = o2 * d.z + o1 * (1.0 - d.z);
-    vec2 o4 = o3.yw * d.x + o3.xz * (1.0 - d.x);
-
-    return o4.y * d.y + o4.x * (1.0 - d.y);
-}
-
-void main(void)
-{
-    /* Dither the transition between water and fire */
-    float test = pass_position.z * pass_position.w + 1.5 * sin(u_time);
-    vec2 d = vec2(16.0, 9.0) * pass_position.xy;
-    test += 0.5 * (length(fract(d) - 0.5) - length(fract(d + 0.5) - 0.5));
-
-    /* Compute 4 octaves of noise */
-#if defined GL_ES
-    vec4 n = vec4(noise3d((test > 0.0) ? fire[0] : water[0]),
-                  noise3d((test > 0.0) ? fire[1] : water[1]),
-                  noise3d((test > 0.0) ? fire[2] : water[2]),
-                  noise3d((test > 0.0) ? fire[3] : water[3]));
-#else
-    vec3 points[4] = (test > 0.0) ? fire : water;
-    vec4 n = vec4(noise3d(points[0]),
-                  noise3d(points[1]),
-                  noise3d(points[2]),
-                  noise3d(points[3]));
-#endif
-
-    vec4 color;
-
-    if (test > 0.0)
-    {
-        /* Use noise results for fire */
-        float p = dot(n, vec4(0.125, 0.125, 0.25, 0.5));
-
-        /* Fade to black on top of screen */
-        p -= pass_position.y * 0.8 + 0.25;
-        p = max(p, 0.0);
-        p = min(p, 1.0);
-
-        float q = p * p * (3.0 - 2.0 * p);
-        float r = q * q * (3.0 - 2.0 * q);
-        color = vec4(min(q * 2.0, 1.0),
-                     max(r * 1.5 - 0.5, 0.0),
-                     max(q * 8.0 - 7.3, 0.0),
-                     1.0);
-    }
-    else
-    {
-        /* Use noise results for water */
-        float p = dot(abs(2.0 * n - 1.0),
-                      vec4(0.5, 0.25, 0.125, 0.125));
-        float q = sqrt(p);
-
-        color = vec4(1.0 - q,
-                     1.0 - 0.5 * q,
-                     1.0,
-                     1.0);
-    }
-
-    gl_FragColor = color;
-}
-
diff --git a/doc/tutorial/03_noise.vcxproj b/doc/tutorial/03_noise.vcxproj
deleted file mode 100644
index 3882ea2f..00000000
--- a/doc/tutorial/03_noise.vcxproj
+++ /dev/null
@@ -1,69 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <PropertyGroup Label="LolMacros">
-    <LolDir Condition="Exists('$(SolutionDir)\lol')">$(SolutionDir)\lol</LolDir>
-    <LolDir Condition="!Exists('$(SolutionDir)\lol')">$(SolutionDir)</LolDir>
-  </PropertyGroup>
-  <ItemGroup Label="ProjectConfigurations">
-    <ProjectConfiguration Include="Debug|NX64">
-      <Configuration>Debug</Configuration>
-      <Platform>NX64</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Debug|ORBIS">
-      <Configuration>Debug</Configuration>
-      <Platform>ORBIS</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Debug|Win32">
-      <Configuration>Debug</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Debug|x64">
-      <Configuration>Debug</Configuration>
-      <Platform>x64</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Release|NX64">
-      <Configuration>Release</Configuration>
-      <Platform>NX64</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Release|ORBIS">
-      <Configuration>Release</Configuration>
-      <Platform>ORBIS</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Release|Win32">
-      <Configuration>Release</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Release|x64">
-      <Configuration>Release</Configuration>
-      <Platform>x64</Platform>
-    </ProjectConfiguration>
-  </ItemGroup>
-  <ItemGroup>
-    <ClCompile Include="03_noise.cpp" />
-  </ItemGroup>
-  <ItemGroup>
-    <LolFxCompile Include="03_noise.lolfx" />
-  </ItemGroup>
-  <Import Project="$(LolDir)\build\msbuild\lol-core.props" />
-  <Import Project="$(LolDir)\build\msbuild\lol-bullet.props" />
-  <PropertyGroup Label="Globals">
-    <ProjectGuid>{b0a53d75-cbb4-4fdf-93ac-2d12a79ada0e}</ProjectGuid>
-    <ConfigurationType>Application</ConfigurationType>
-    <Keyword>Win32Proj</Keyword>
-  </PropertyGroup>
-  <Import Project="$(LolDir)\build\msbuild\lol.config.props" />
-  <ImportGroup Label="ExtensionSettings">
-    <Import Project="$(LolDir)\build\msbuild\lolfx.props" />
-  </ImportGroup>
-  <ImportGroup Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(LolDir)\build\msbuild\lol.vars.props" />
-  </ImportGroup>
-  <PropertyGroup Label="UserMacros" />
-  <Import Project="$(LolDir)\build\msbuild\lol.rules.props" />
-  <ItemDefinitionGroup />
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
-  <ImportGroup Label="ExtensionTargets">
-    <Import Project="$(LolDir)\build\msbuild\lolfx.targets" />
-  </ImportGroup>
-</Project>
\ No newline at end of file
diff --git a/doc/tutorial/04_texture.cpp b/doc/tutorial/04_texture.cpp
deleted file mode 100644
index 46c14699..00000000
--- a/doc/tutorial/04_texture.cpp
+++ /dev/null
@@ -1,128 +0,0 @@
-//
-//  Lol Engine — Graphing tutorial
-//
-//  Copyright © 2012—2019 Sam Hocevar <sam@hocevar.net>
-//
-//  Lol Engine is free software. It comes without any warranty, to
-//  the extent permitted by applicable law. You can redistribute it
-//  and/or modify it under the terms of the Do What the Fuck You Want
-//  to Public License, Version 2, as published by the WTFPL Task Force.
-//  See http://www.wtfpl.net/ for more details.
-//
-
-#if HAVE_CONFIG_H
-#   include "config.h"
-#endif
-
-#include <lol/engine.h>
-#include "loldebug.h"
-
-using namespace lol;
-
-static int const TEXTURE_WIDTH = 256;
-
-LOLFX_RESOURCE_DECLARE(04_texture);
-
-class TextureDemo : public WorldEntity
-{
-public:
-    virtual bool init_game() override
-    {
-        /* Generate a new heightmap at the beginning */
-        m_heightmap.resize(TEXTURE_WIDTH * 1);
-        memset(m_heightmap.data(), 255, m_heightmap.bytes());
-
-        return true;
-    }
-
-    virtual void tick_game(float seconds) override
-    {
-        WorldEntity::tick_game(seconds);
-
-        /* Scroll left */
-        for (int i = 0; i < m_heightmap.count() - 1; i++)
-            m_heightmap[i] = m_heightmap[i + 1];
-
-        int height = m_heightmap.last();
-        height = (int)(height + 127 + 40 * lol::sin(m_frames * 0.03) + rand() % 97 - 38) / 2;
-        height = std::max(15, std::min(height, 240));
-        m_heightmap.last() = height;
-
-        /* Update frame counter */
-        ++m_frames;
-    }
-
-    virtual bool init_draw() override
-    {
-        array<vec2> vertices
-        {
-            vec2(-1.0,  1.0),
-            vec2(-1.0, -1.0),
-            vec2( 1.0, -1.0),
-            vec2(-1.0,  1.0),
-            vec2( 1.0, -1.0),
-            vec2( 1.0,  1.0),
-        };
-
-        m_texture = std::make_shared<Texture>(ivec2(TEXTURE_WIDTH, 1), PixelFormat::Y_8);
-
-        m_shader = Shader::Create(LOLFX_RESOURCE_NAME(04_texture));
-        m_coord = m_shader->GetAttribLocation(VertexUsage::Position, 0);
-        m_texture_uni = m_shader->GetUniformLocation("u_texture");
-
-        m_vdecl = std::make_shared<VertexDeclaration>(VertexStream<vec2>(VertexUsage::Position));
-
-        m_vbo = std::make_shared<VertexBuffer>(vertices.bytes());
-        m_vbo->set_data(vertices.data(), vertices.bytes());
-
-        return true;
-    }
-
-    virtual void tick_draw(float seconds, Scene &scene) override
-    {
-        WorldEntity::tick_draw(seconds, scene);
-
-        /* Send new heightmap to GPU */
-        m_texture->Bind();
-        m_texture->SetData(m_heightmap.data());
-
-        m_shader->Bind();
-        m_shader->SetUniform(m_texture_uni, m_texture->GetTextureUniform(), 0);
-        m_vdecl->Bind();
-        m_vdecl->SetStream(m_vbo, m_coord);
-        m_vdecl->DrawElements(MeshPrimitive::Triangles, 0, 6);
-        m_vdecl->Unbind();
-    }
-
-    virtual bool release_draw() override
-    {
-        m_texture.reset();
-        m_shader.reset();
-        m_vdecl.reset();
-        m_vbo.reset();
-        return true;
-    }
-
-private:
-    std::shared_ptr<Texture> m_texture;
-    std::shared_ptr<Shader> m_shader;
-    ShaderAttrib m_coord;
-    ShaderUniform m_texture_uni;
-    std::shared_ptr<VertexDeclaration> m_vdecl;
-    std::shared_ptr<VertexBuffer> m_vbo;
-    array<uint8_t> m_heightmap;
-    int m_frames = 0;
-};
-
-int main(int argc, char **argv)
-{
-    sys::init(argc, argv);
-
-    Application app("Tutorial 4: Texture", ivec2(1280, 720), 60.0f);
-
-    new TextureDemo();
-
-    app.Run();
-    return EXIT_SUCCESS;
-}
-
diff --git a/doc/tutorial/04_texture.lolfx b/doc/tutorial/04_texture.lolfx
deleted file mode 100644
index b4f9e04c..00000000
--- a/doc/tutorial/04_texture.lolfx
+++ /dev/null
@@ -1,81 +0,0 @@
-[vert.glsl]
-
-#version 130
-
-in vec2 in_position;
-
-out vec4 pass_position;
-
-void main(void)
-{
-    pass_position = vec4(0.5 * in_position + 0.5, 0.0, 1.0);
-    gl_Position = vec4(in_position, 0.5, 1.0);
-}
-
-[frag.glsl]
-
-#version 130
-
-#if defined GL_ES
-precision highp float;
-#endif
-
-uniform sampler2D u_texture;
-
-in vec4 pass_position;
-
-float segdist(vec2 p1, vec2 p2, vec2 a)
-{
-    float d = max(1e-10, dot(p2 - p1, p2 - p1));
-    float t = clamp(dot(a - p1, p2 - p1) / d, 0.0, 1.0);
-    return distance(a, mix(p1, p2, t));
-}
-
-void main(void)
-{
-    float width = 800.0;
-    float height = 600.0;
-    float texture_width = 256.0;
-    float line_width = 1.2;
-    float dot_size = 1.0;
-    vec4 delta = vec4(1.0 / texture_width, 0.0,
-                      2.0 / texture_width, 0.0);
-
-    vec2 p = pass_position.xy;
-    vec2 tc = vec2(floor(p.x * texture_width) / texture_width, p.y);
-    float t = p.x * texture_width - floor(p.x * texture_width);
-    vec4 c;
-    c[0] = texture2D(u_texture, tc - delta.xy).x;
-    c[1] = texture2D(u_texture, tc).x;
-    c[2] = texture2D(u_texture, tc + delta.xy).x;
-    c[3] = texture2D(u_texture, tc + delta.zw).x;
-
-    /* Find the 4 closest points in screen space */
-    vec2 p0 = vec2((tc.x - delta.x) * width, c[0] * height);
-    vec2 p1 = vec2((tc.x          ) * width, c[1] * height);
-    vec2 p2 = vec2((tc.x + delta.x) * width, c[2] * height);
-    vec2 p3 = vec2((tc.x + delta.z) * width, c[3] * height);
-    vec2 a = vec2(p.x * width, p.y * height);
-
-    /* Compute distance to segments */
-    float d =        segdist(p0, p1, a);
-          d = min(d, segdist(p1, p2, a));
-          d = min(d, segdist(p2, p3, a));
-
-    /* Compute distance to dots */
-    d = min(d, length(a - p0) - dot_size);
-    d = min(d, length(a - p1) - dot_size);
-    d = min(d, length(a - p2) - dot_size);
-    d = min(d, length(a - p3) - dot_size);
-
-    /* Add line width */
-    float lum = clamp(line_width - d, 0.0, 1.0);
-
-    /* Compensate for sRGB */
-    lum = pow(1.0 - lum, 1.0 / 2.4);
-
-    /* Choose some funny colours */
-    vec4 col = vec4(mix(p.x, 1.0, lum), lum, lum, 1.0);
-    gl_FragColor = col;
-}
-
diff --git a/doc/tutorial/04_texture.vcxproj b/doc/tutorial/04_texture.vcxproj
deleted file mode 100644
index 99117d4a..00000000
--- a/doc/tutorial/04_texture.vcxproj
+++ /dev/null
@@ -1,69 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <PropertyGroup Label="LolMacros">
-    <LolDir Condition="Exists('$(SolutionDir)\lol')">$(SolutionDir)\lol</LolDir>
-    <LolDir Condition="!Exists('$(SolutionDir)\lol')">$(SolutionDir)</LolDir>
-  </PropertyGroup>
-  <ItemGroup Label="ProjectConfigurations">
-    <ProjectConfiguration Include="Debug|NX64">
-      <Configuration>Debug</Configuration>
-      <Platform>NX64</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Debug|ORBIS">
-      <Configuration>Debug</Configuration>
-      <Platform>ORBIS</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Debug|Win32">
-      <Configuration>Debug</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Debug|x64">
-      <Configuration>Debug</Configuration>
-      <Platform>x64</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Release|NX64">
-      <Configuration>Release</Configuration>
-      <Platform>NX64</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Release|ORBIS">
-      <Configuration>Release</Configuration>
-      <Platform>ORBIS</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Release|Win32">
-      <Configuration>Release</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Release|x64">
-      <Configuration>Release</Configuration>
-      <Platform>x64</Platform>
-    </ProjectConfiguration>
-  </ItemGroup>
-  <ItemGroup>
-    <ClCompile Include="04_texture.cpp" />
-  </ItemGroup>
-  <ItemGroup>
-    <LolFxCompile Include="04_texture.lolfx" />
-  </ItemGroup>
-  <Import Project="$(LolDir)\build\msbuild\lol-core.props" />
-  <Import Project="$(LolDir)\build\msbuild\lol-bullet.props" />
-  <PropertyGroup Label="Globals">
-    <ProjectGuid>{834852db-edb6-4fd0-bcf9-45cd01126962}</ProjectGuid>
-    <ConfigurationType>Application</ConfigurationType>
-    <Keyword>Win32Proj</Keyword>
-  </PropertyGroup>
-  <Import Project="$(LolDir)\build\msbuild\lol.config.props" />
-  <ImportGroup Label="ExtensionSettings">
-    <Import Project="$(LolDir)\build\msbuild\lolfx.props" />
-  </ImportGroup>
-  <ImportGroup Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(LolDir)\build\msbuild\lol.vars.props" />
-  </ImportGroup>
-  <PropertyGroup Label="UserMacros" />
-  <Import Project="$(LolDir)\build\msbuild\lol.rules.props" />
-  <ItemDefinitionGroup />
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
-  <ImportGroup Label="ExtensionTargets">
-    <Import Project="$(LolDir)\build\msbuild\lolfx.targets" />
-  </ImportGroup>
-</Project>
\ No newline at end of file
diff --git a/doc/tutorial/05_easymesh.cpp b/doc/tutorial/05_easymesh.cpp
deleted file mode 100644
index f8aae4b3..00000000
--- a/doc/tutorial/05_easymesh.cpp
+++ /dev/null
@@ -1,176 +0,0 @@
-//
-//  Lol Engine — EasyMesh tutorial
-//
-//  Copyright © 2011—2019 Sam Hocevar <sam@hocevar.net>
-//            © 2012—2013 Benjamin “Touky” Huet <huet.benjamin@gmail.com>
-//
-//  Lol Engine is free software. It comes without any warranty, to
-//  the extent permitted by applicable law. You can redistribute it
-//  and/or modify it under the terms of the Do What the Fuck You Want
-//  to Public License, Version 2, as published by the WTFPL Task Force.
-//  See http://www.wtfpl.net/ for more details.
-//
-
-#if HAVE_CONFIG_H
-#   include "config.h"
-#endif
-
-#include <lol/engine.h>
-#include <lol/lua.h>
-
-using namespace lol;
-
-#define USE_CUSTOM_SHADER 1
-#if USE_CUSTOM_SHADER
-LOLFX_RESOURCE_DECLARE(easymesh_shiny);
-#endif //USE_CUSTOM_SHADER
-
-class EasyMeshTutorial : public WorldEntity
-{
-public:
-    EasyMeshTutorial()
-    {
-        EasyMeshLuaLoader EzMhLoader;
-        EzMhLoader.ExecLuaFile("05_easymesh.lua");
-
-        EasyMeshLuaObject* gears0 = EzMhLoader.GetPtr<EasyMeshLuaObject>("g0");
-        EasyMeshLuaObject* gears1 = EzMhLoader.GetPtr<EasyMeshLuaObject>("g1");
-        EasyMeshLuaObject* gears2 = EzMhLoader.GetPtr<EasyMeshLuaObject>("g2");
-        EasyMeshLuaObject* gears3 = EzMhLoader.GetPtr<EasyMeshLuaObject>("g3");
-        EasyMeshLuaObject* gears4 = EzMhLoader.GetPtr<EasyMeshLuaObject>("g4");
-
-        m_gears.push(gears0->GetMesh(), mat4(1.0f), 0.0f);
-        m_gears.push(gears1->GetMesh(), mat4(1.0f), 0.0f);
-        m_gears.push(gears2->GetMesh(), mat4(1.0f), 180.0f / 18);
-        m_gears.push(gears3->GetMesh(), mat4(1.0f), 180.0f / 18);
-        m_gears.push(gears4->GetMesh(), mat4(1.0f), 180.0f / 18);
-
-        /*
-        m_gears[0].m1.Compile("[sc#00f ab 8 1 8 ty -.25]"
-                              "[sc#f9f scb#f9f acg 12 10 5 5 20 20 5 5 0.1 0 s .1 .1 .1 ty -.1 csgu]"
-                              "[sc#fff scb#000 acg 12 10 10 10 20 20 5 5 0.1 0 s .05 .05 .05 tx -1.5 ty .3 csgu]"
-                              "[sc#00f ab 5 3 9 tx 2.5 csgs]"
-                              "[[ sc#fff ab 3   1.4 2   tx -2 tz -2 "
-                              "[sc#fff ab 2.1  .7 1.1 ty .5 tx -1.4 tz -1.4 csgs] mz] csgu]");
-        m_gears[1].m1.Compile("sc#ff9 scb#ff9 acg 54 10 95 95 90 90 -5 -5 0.1 0 s .1 .1 .1");
-        m_gears[2].m1.Compile("[sc#0f0 ab 2 2 2 t .8 .8 .8 rx 20 ry 20 [sc#00f ab 2 2 2 tx 0 csgu]]");
-        m_gears[3].m1.Compile("[sc#0f0 ab 2 2 2 t .8 .8 .8 rx 20 ry 20 [sc#00f ab 2 2 2 tx 0 csgs]]");
-        m_gears[4].m1.Compile("[sc#0f0 ab 2 2 2 t .8 .8 .8 rx 20 ry 20 [sc#00f ab 2 2 2 tx 0 csga]]");
-        */
-
-        m_angle = 0;
-
-        m_camera = new Camera();
-        m_camera->SetProjection(mat4::perspective(radians(30.f), 960.f, 600.f, .1f, 1000.f));
-        m_camera->SetView(mat4::lookat(vec3(-15.f, 5.f, 0.f),
-                                       vec3(0.f, -1.f, 0.f),
-                                       vec3(0.f, 1.f, 0.f)));
-
-        /* Add a white directional light */
-        m_light1 = new Light();
-        m_light1->SetPosition(vec3(0.2f, 0.2f, 0.f));
-        m_light1->SetColor(vec4(0.5f, 0.5f, 0.5f, 1.f));
-        m_light1->SetType(LightType::Directional);
-        Ticker::Ref(m_light1);
-
-        /* Add an orangeish point light */
-        m_light2 = new Light();
-        m_light2->SetPosition(vec3(-15.f, 15.f, 15.f));
-        m_light2->SetColor(vec4(0.4f, 0.3f, 0.2f, 1.f));
-        m_light2->SetType(LightType::Point);
-        Ticker::Ref(m_light2);
-    }
-
-    ~EasyMeshTutorial()
-    {
-        Ticker::Unref(m_light1);
-        Ticker::Unref(m_light2);
-    }
-
-    virtual void tick_game(float seconds) override
-    {
-        WorldEntity::tick_game(seconds);
-
-        m_angle += seconds * radians(70.0f);
-        m_mat = mat4::rotate(radians(10.0f), vec3(0, 0, 1))
-                * mat4::rotate(radians(100.f), vec3(0, 1, 0));
-        //      * mat4::rotate(m_angle, vec3(0, 1, 0));
-
-        m_gears[0].m3 += seconds * radians(20.0f);
-        m_gears[1].m3 += seconds * radians(20.0f) * -2 / 9;
-        m_gears[2].m3 += seconds * radians(20.0f) * -2 / 3;
-        m_gears[3].m3 += seconds * radians(20.0f) * -2 / 3;
-        m_gears[4].m3 += seconds * radians(20.0f) * -2 / 3;
-
-        m_gears[0].m2 = mat4::translate(vec3(0, -1, 0))
-                      * mat4::rotate(m_gears[0].m3 - 130.0f, vec3(0, 1, 0))
-                      * mat4::rotate(40.0f, vec3(0, 0, 1));
-        m_gears[1].m2 = mat4::translate(vec3(0, 0, 0))
-                      * mat4::rotate(m_gears[1].m3, vec3(0, 1, 0));
-        m_gears[2].m2 = mat4::translate(vec3(0, 0, 5.5f))
-                      * mat4::rotate(m_gears[2].m3 - 40.0f, vec3(0, 1, 0))
-                      * mat4::rotate(90.0f, vec3(0, 0, 1));
-        m_gears[3].m2 = mat4::translate(vec3(5.5f * lol::sqrt(3.f) * 0.5f, 0, -5.5f * 0.5f))
-                      * mat4::rotate(m_gears[3].m3 - 140.0f, vec3(0, 1, 0))
-                      * mat4::rotate(-70.0f, vec3(0, 0, 1));
-        m_gears[4].m2 = mat4::translate(vec3(-5.5f * lol::sqrt(3.f) * 0.5f, 0, -5.5f * 0.5f))
-                      * mat4::rotate(m_gears[4].m3 - 80.0f, vec3(0, 1, 0));
-    }
-
-    virtual bool init_draw() override
-    {
-        Scene& scene = Scene::GetScene();
-        scene.PushCamera(m_camera);
-        scene.get_renderer()->clear_color(vec4(0.0f, 0.0f, 0.0f, 1.0f));
-
-        /* Upload vertex data to GPU */
-        for (int i = 0; i < m_gears.count(); i++)
-            m_gears[i].m1.MeshConvert();
-
-#if USE_CUSTOM_SHADER
-        /* Custom Shader: Init the shader */
-        auto custom_shader = Shader::Create(LOLFX_RESOURCE_NAME(easymesh_shiny));
-        // any other shader stuf here (Get uniform, mostly, and set texture)
-
-        for (int i = 0; i < m_gears.count(); i++)
-            m_gears[i].m1.SetMaterial(custom_shader);
-#endif
-
-        return true;
-    }
-
-    virtual void tick_draw(float seconds, Scene &scene) override
-    {
-        WorldEntity::tick_draw(seconds, scene);
-
-        for (int i = 0; i < m_gears.count(); i++)
-            m_gears[i].m1.Render(scene, m_mat * m_gears[i].m2);
-    }
-
-    virtual bool release_draw() override
-    {
-        Scene& scene = Scene::GetScene();
-        scene.PopCamera(m_camera);
-        m_gears.resize(0);
-        return true;
-    }
-
-private:
-    array<EasyMesh, mat4, float> m_gears;
-    float m_angle;
-    mat4 m_mat;
-    Camera *m_camera;
-    Light *m_light1, *m_light2;
-};
-
-int main(int argc, char **argv)
-{
-    sys::init(argc, argv);
-
-    Application app("Tutorial 5: EasyMesh", ivec2(960, 600), 60.0f);
-    new EasyMeshTutorial();
-    app.Run();
-
-    return EXIT_SUCCESS;
-}
-
diff --git a/doc/tutorial/05_easymesh.lua b/doc/tutorial/05_easymesh.lua
deleted file mode 100644
index 0de79fd5..00000000
--- a/doc/tutorial/05_easymesh.lua
+++ /dev/null
@@ -1,81 +0,0 @@
-do_g0 = false
-do_g1 = false
-do_g2 = true
-do_g3 = true
-do_g4 = true
-
--- Gear 0: New style
-g0 = EasyMesh.New();
-if do_g0 then
-    g0:BraceOpen()
-        g0:SetColor("#00f")
-        g0:AddBox(8, 1, 8)
-        g0:TranslateY(-.25)
-    g0:BraceClose()
-    g0:BraceOpen()
-        g0:SetColor("#f9f")
-        g0:SetColorB("#f9f")
-        g0:AddCog(12, 10, 5, 5, 20, 20, 5, 5, 0.1, 0)
-        g0:Scale(.1)
-        g0:TranslateY(-.1)
-        -- csgu
-    g0:BraceClose()
-    g0:BraceOpen()
-        g0:SetColor("#fff")
-        g0:SetColorB("#000")
-        g0:AddCog(12, 10, 10, 10, 20, 20, 5, 5, 0.1, 0)
-        g0:Scale(.05)
-        g0:TranslateX(-1.5)
-        g0:TranslateY(.3)
-        -- csgu
-    g0:BraceClose()
-    g0:BraceOpen()
-        g0:SetColor("#00f")
-        g0:AddBox(5, 3, 9)
-        g0:TranslateX(2.5)
-        -- csgs
-    g0:BraceClose()
-    g0:BraceOpen()
-        g0:BraceOpen()
-            g0:SetColor("#fff")
-            g0:AddBox(3, 1.4, 2)
-            g0:TranslateX(-2)
-            g0:TranslateZ(-2)
-            g0:BraceOpen()
-                g0:SetColor("#fff")
-                g0:AddBox(2.1, .7, 1.1)
-                g0:TranslateY(.5)
-                g0:TranslateX(-1.4)
-                g0:TranslateZ(-1.4)
-                -- csgs
-            g0:BraceClose()
-            g0:MirrorZ()
-        g0:BraceClose()
-        -- csgu
-    g0:BraceClose()
-end
-
--- Gear 1: Old style
-g1 = EasyMesh.New();
-if do_g1 then
-    g1:sc("#ff9"); g1:scb("#ff9"); g1:acog(54, 10, 95, 95, 90, 90, -5, -5, 0.1, 0); g1:s(.1);
-end
-
--- Other Gears
-g2 = EasyMesh.New();
-if do_g2 then
-    g2:bop(); g2:sc("#0f0"); g2:ab(2, 2, 2); g2:t(.8); g2:rx(20); g2:ry(20); g2:bop(); g2:sc("#00f"); g2:ab(2); g2:tx(0); --csgu
-    g2:bcl(); g2:bcl();
-end
-
-g3 = EasyMesh.New();
-if do_g3 then
-    g3:bop(); g3:sc("#0f0"); g3:ab(2); g3:t(.8); g3:rx(20); g3:ry(20); g3:bop(); g3:sc("#00f"); g3:ab(2); g3:tx(0); --csgs
-    g3:bcl(); g3:bcl();
-end
-
-g4 = EasyMesh.New();
-if do_g4 then
-    g3:bop(); g3:sc("#0f0"); g3:ab(2); g3:t(.8); g3:rx(20); g3:ry(20); g3:bop(); g3:sc("#00f"); g3:ab(2); g3:tx(0); --csga
-    g3:bcl(); g3:bcl();
-end
diff --git a/doc/tutorial/05_easymesh.vcxproj b/doc/tutorial/05_easymesh.vcxproj
deleted file mode 100644
index 74f56317..00000000
--- a/doc/tutorial/05_easymesh.vcxproj
+++ /dev/null
@@ -1,72 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <PropertyGroup Label="LolMacros">
-    <LolDir Condition="Exists('$(SolutionDir)\lol')">$(SolutionDir)\lol</LolDir>
-    <LolDir Condition="!Exists('$(SolutionDir)\lol')">$(SolutionDir)</LolDir>
-  </PropertyGroup>
-  <ItemGroup Label="ProjectConfigurations">
-    <ProjectConfiguration Include="Debug|NX64">
-      <Configuration>Debug</Configuration>
-      <Platform>NX64</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Debug|ORBIS">
-      <Configuration>Debug</Configuration>
-      <Platform>ORBIS</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Debug|Win32">
-      <Configuration>Debug</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Debug|x64">
-      <Configuration>Debug</Configuration>
-      <Platform>x64</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Release|NX64">
-      <Configuration>Release</Configuration>
-      <Platform>NX64</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Release|ORBIS">
-      <Configuration>Release</Configuration>
-      <Platform>ORBIS</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Release|Win32">
-      <Configuration>Release</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Release|x64">
-      <Configuration>Release</Configuration>
-      <Platform>x64</Platform>
-    </ProjectConfiguration>
-  </ItemGroup>
-  <ItemGroup>
-    <ClCompile Include="05_easymesh.cpp" />
-  </ItemGroup>
-  <Import Project="$(LolDir)\build\msbuild\lol-core.props" />
-  <Import Project="$(LolDir)\build\msbuild\lol-bullet.props" />
-  <Import Project="$(LolDir)\build\msbuild\lol-lua.props" />
-  <ItemGroup>
-    <None Include="05_easymesh.lua">
-      <ExcludedFromBuild>true</ExcludedFromBuild>
-    </None>
-  </ItemGroup>
-  <PropertyGroup Label="Globals">
-    <ProjectGuid>{1c5b8702-290c-42da-aa9e-671348f5b747}</ProjectGuid>
-    <ConfigurationType>Application</ConfigurationType>
-    <Keyword>Win32Proj</Keyword>
-  </PropertyGroup>
-  <Import Project="$(LolDir)\build\msbuild\lol.config.props" />
-  <ImportGroup Label="ExtensionSettings">
-    <Import Project="$(LolDir)\build\msbuild\lolfx.props" />
-  </ImportGroup>
-  <ImportGroup Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(LolDir)\build\msbuild\lol.vars.props" />
-  </ImportGroup>
-  <PropertyGroup Label="UserMacros" />
-  <Import Project="$(LolDir)\build\msbuild\lol.rules.props" />
-  <ItemDefinitionGroup />
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
-  <ImportGroup Label="ExtensionTargets">
-    <Import Project="$(LolDir)\build\msbuild\lolfx.targets" />
-  </ImportGroup>
-</Project>
\ No newline at end of file
diff --git a/doc/tutorial/06_sprite.cpp b/doc/tutorial/06_sprite.cpp
deleted file mode 100644
index 27defbfd..00000000
--- a/doc/tutorial/06_sprite.cpp
+++ /dev/null
@@ -1,109 +0,0 @@
-//
-//  Lol Engine — Sprite tutorial
-//
-//  Copyright © 2011—2019 Sam Hocevar <sam@hocevar.net>
-//            © 2012 Daniel Stephens (artwork)
-//
-//  Lol Engine is free software. It comes without any warranty, to
-//  the extent permitted by applicable law. You can redistribute it
-//  and/or modify it under the terms of the Do What the Fuck You Want
-//  to Public License, Version 2, as published by the WTFPL Task Force.
-//  See http://www.wtfpl.net/ for more details.
-//
-
-#if HAVE_CONFIG_H
-#   include "config.h"
-#endif
-
-#include <lol/engine.h>
-
-using namespace lol;
-
-class SpriteTutorial : public WorldEntity
-{
-public:
-    SpriteTutorial()
-    {
-        m_camera = new Camera();
-        m_camera->SetView(mat4(1.f));
-        m_camera->SetProjection(mat4::ortho(0.f, 640.f, 0.f, 480.f, -100.f, 100.f));
-        Ticker::Ref(m_camera);
-
-        m_tileset = TileSet::create("06_sprite.png");
-        for (int i = 0; i < FRAME_COUNT; ++i)
-            m_tileset->define_tile(ibox2(i * 24, 376, 24 + i * 24, 24 + 376));
-
-        for (int i = 0; i < SPRITE_COUNT; ++i)
-        {
-            m_sprites.push(vec3((float)rand(-96, 640), (float)rand(-96, 480), 0.f),
-                           rand(0.f, 1.f));
-        }
-    }
-
-    ~SpriteTutorial()
-    {
-        TileSet::destroy(m_tileset);
-        Ticker::Unref(m_camera);
-    }
-
-    virtual void tick_game(float seconds) override
-    {
-        for (int i = 0; i < SPRITE_COUNT; ++i)
-        {
-            m_sprites[i].m1.y += 50.f * seconds;
-            m_sprites[i].m2 = lol::fmod(m_sprites[i].m2 + seconds, 1.f);
-            if (m_sprites[i].m1.y > 480 + 48)
-                m_sprites[i].m1.y = (float)rand(-96, -48);
-        }
-
-        WorldEntity::tick_game(seconds);
-    }
-
-    virtual bool init_draw() override
-    {
-        Scene& scene = Scene::GetScene();
-        scene.PushCamera(m_camera);
-        scene.get_renderer()->clear_color(vec4(0.0f, 0.0f, 0.0f, 1.0f));
-        return true;
-    }
-
-    virtual void tick_draw(float seconds, Scene &scene) override
-    {
-        WorldEntity::tick_draw(seconds, scene);
-
-        for (int i = 0; i < SPRITE_COUNT; ++i)
-        {
-            int frame = (int)(m_sprites[i].m2 * FRAME_COUNT);
-//            m_sprites[i].m1.z = frame;
-            scene.AddTile(m_tileset, frame,
-                          m_sprites[i].m1, vec2(2.f), 0.f);
-        }
-    }
-
-    virtual bool release_draw() override
-    {
-        Scene& scene = Scene::GetScene();
-        scene.PopCamera(m_camera);
-        return true;
-    }
-
-private:
-    Camera *m_camera;
-    TileSet *m_tileset;
-
-    static int const SPRITE_COUNT = 192;
-    static int const FRAME_COUNT = 16;
-    array<vec3, float> m_sprites;
-};
-
-int main(int argc, char **argv)
-{
-    sys::init(argc, argv);
-
-    Application app("Tutorial 6: Sprite", ivec2(640, 480), 60.0f);
-    new SpriteTutorial();
-    app.Run();
-
-    return EXIT_SUCCESS;
-}
-
diff --git a/doc/tutorial/06_sprite.png b/doc/tutorial/06_sprite.png
deleted file mode 100644
index e0bdabbb6ff72bc24d7e19bc326b37f6a0a3526e..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 155434
zcmV)qK$^daP)<h;3K|Lk000e1NJLTq00EEy00EE)1^@s6fWJ1(00009a7bBm000XU
z000XU0RWnu7ytkYPiaF#P*7-ZbZ>KLZ*U+<Lqi~Na&Km7Y-Iodc-oy)XH-+^7Crag
z^g>IBfRsybQWXdwQbLP>6p<z>Aqfylh#{fb6;Z(vMMVS~$e@S=j*ftg6;Uh<iVD~V
z<RPMtgQJLw%KPDaqifc@_vX$1wbwr9tn;0-&j-K=43<bUQ8j=JsX`tR;Dg7+#^K~H
zK!FM*Z~zbpvt%K2{UZSY_<lS*D<Z%Lz5oGu(+dayz)hRLFdT>f59&ghTmgWD0l;*T
zI7<kC6aYYajzXpYKt=(8otP$50H6c_V9R4-;{Z@C0AMG7=F<Rxo%or10RUT+Ar%3j
zkpLhQWr#!oXgdI`&sK^>09Y^p6lP1rIRMx#05C~cW=H_Aw*bJ-5DT&Z2n+x)QHX^p
z00esgV8|mQcmRZ%02D^@S3L16t`O%c004NIvOKvYIYoh62rY33S640`D9%Y2D-<?i
z0%4j!F2Z@488U%158(66005wo6%pWr^Zj_v4zAA5HjcIqUoGmt2LB>rV&neh&#Q1i
z007~1e$oCcFS8neI|hJl{-P!B1ZZ9hpmq0)X0i`JwE&>$+E?>%_<lS*MWK+n+1cgf
z<k(8YLR(?VSAG6x!e78w{cQPuJpA|d;J)G{fihizM+Erb!p!tcr5w+a34~(Y=8s4G
zw+sLL9n&JjNn*KJDiq^U5^;`1nvC-@r6P$!k}1U{(*I=Q-z@tBKHoI}uxdU5dyy@u
zU1J0GOD7Ombim^G008p4Z^6_k2m^p<gW=D2|L;HjN1!DDfM!XOaR2~bL?kX$%CkSm
z2mk;?pn)o|K^yeJ7%adB9Ki+L!3+FgHiSYX#KJ-lLJDMn9CBbOtb#%)hRv`YDqt_v
zKpix|QD}yfa1JiQRk#j4a1Z)n2%f<xynzV>LC6RbVIkUx0b+_+BaR3cnT7Zv!AJxW
zizFb)h!jyGOOZ85F;a?DAXP{m@;!0_Ifq<Ex{*7`05XF7hP+2Hl!3BQJ=6@fL%FCo
z8iYoo3(#bAF`ADSpqtQgv>H8(HlgRxt7s3}k3K`kFu>>-2Q$QMFfPW!La{h336o>X
zu_CMttHv6zR;&ZNiS=X8v3CR#fknUxHUxJ<AYmRsNLWl*PS{AOARHt#5!wki2?K;t
z!Y3k=s7tgax)J%r7-BLphge7~Bi0g+6E6^Zh(p9TBoc{3GAFr^0!gu?RMHaCM$&Fl
zBk3%un>0uoBa_M6WNWeqIg~6QE69c9o#eyhGvpiOA@W-aonk<7r1(?fC{oI5N*U!4
z<uv66WtcKSRim0x-Ke2d5jBrmLam{;Qm;{ms1r1GnmNsb7D-E`t)i9F8fX`2_i3-_
zbh;7Ul^#x)&{xvS=|||7=mYe33=M`AgU5(xC>fg=2N-7=cNnjjOr{yriy6mMFgG#l
znCF=fnQv8CDz++o6_Lscl}eQ+l^ZHARH>?_s@|##Rr6KLRFA1%Q+=*RRWnoLsR`7U
zt5vF<Q0r40Q)j6=sE4X&sBct1q<&fbi3VB2Ov6t@q*0);U*o*SAPZv|vv@2aYYnT0
zb%8a+Cb7-ge0D0knEf5Qi#@8Tp*ce{N;6lpQuCB%KL_KOarm5cP6_8Ir<e17iry6O
zDdH&`rZh~sF=bq9s+O0QSgS~@QL9Jmy*94xr=6y~MY~!1fet~(N+(<=M`w@D1)b+p
z*;C!83a1uLJv#NSE~;y#8=<>IcfW3@?wFpwUVxrVZ>QdQz32KIeJ}k~{cZZE^+ya?
z2D1z#2HOnI7(B%_ac?{wFUQ;QQA1tBKtrWrm0_3Rgps+?Jfqb{jYbcQX~taRB;#$y
zZN{S}1|}gUOHJxc?wV3fxuz+mJ4`!F$IZ;mqRrNsHJd##*D~ju=bP7?-?v~|cv>vB
zsJ6IeNwVZxrdjT`yl#bBIa#GxRa#xMMy;K#CDyyGyQdMSxlWT#tDe?p!?5wT$+oGt
z8L;Kp2HUQ-ZMJ=3XJQv;x5ci*?vuTfeY$;({XGW_huIFR9a<fJbF^|4I#xQ~n$Dc=
zKYhjYmgz5NSkDm8*fZm{6U!;YX`NG>(?@3)XSs8O^N5RyOM=TTmp(3=8^+zpz2r)C
z^>JO{deZfso3oq3?Wo(Y?l$ge?uXo;%ru`Vo>?<<(8I_>;8Eq#KMS9gFl*neeosSB
zfoHYnBQIkwkyowPu(zdms`p{<7e4kra-ZWq<2*OsGTvEV%s0Td$hXT+!*8Bnh2KMe
zBmZRodjHV?r+_5^X9J0WL4jKW`}lf%A-|44I@@LTvf1rHjG(ze6+w@Jt%Bvjts!X0
z?2xS?_ve_-k<Mujg;0Lz*3buG=3$G&ehepthlN*$KaOySSQ^nWmo<0M+(UEUMEXRQ
zMBbZcF;6+KElM>iKB_KiJlZ$9G`c^=E@oNG)mWWaNo-3TIW8)$Hg0Ub-~8?KhvJ>$
z3*&nim@mj(aCxE5!t{lw7O5^0EIO7zOo&c6l<+|iDySBWCGrz@C5{St!X3hAA}`T4
z(TLbXTq+(;@<=L8dXnssyft|w#WSTW<++3>sgS%(4NTpeI-VAqb|7ssJvzNHgOZVu
zaYCvgO_R1~>SyL=cFU|~g|hy|Zi}}s9+d~lYqOB71z9Z$wnC=pR9Yz4DhIM>Wmjgu
z&56o6maCpC&F##y%G;1PobR9i?GnNg;gYtchD%p19a!eQtZF&3JaKv33gZ<8D~47E
ztUS1iwkmDaPpj=$m#%)jCVEY4fnLGNg2A-`YwHVD3gv};>)hAvT~AmqS>Lr``i7kw
zJ{5_It`yrBmlc25DBO7E8;5VoznR>Ww5hAaxn$2~(q`%A-YuS64wkBy=9dm`4cXeX
z4c}I@?e+FW+b@^RDBHV(wnMq2zdX3SWv9u`%{xC-q*U}&`cyXV(%rRT*Z6MH?i+i&
z_B8C(+grT%{XWUQ+f@NoP1R=AW&26{v-dx)iK^-Nmiuj8txj!m?Z*Ss1N{dh4z}01
z)YTo*JycSU)+_5r4#yw9{+;i4Ee$peRgIj+;v;ZGdF1K$3E%e~4LaI(jC-u%2h$&R
z9cLXcYC@Xwnns&bn)_Q~Te?roKGD|d-g^8;+aC{{G(1^(O7m37Y1-+6)01cN&y1aw
zoqc{T`P^XJqPBbIW6s}d4{z_f5Om?vMgNQEJG?v2T=KYd^0M3I6IZxbny)%vZR&LD
zJpPl@Psh8QyPB@KTx+@RdcC!KX7}kEo;S|j^u2lU7XQ}Oo;f|;z4Ll+_r>@1-xl3|
zawq-H%e&ckC+@AhPrP6BK<z=<L*0kfKU@CX*zeqbYQT4(^U>T#_XdT7&;F71j}Joy
zkC~6lh7E@6o;W@^IpRNZ{ptLtL(gQ-CY~4mqW;US7Zxvm_|@yz&e53Bp_lTPlfP|z
zrTyx_>lv@x#=^!PzR7qqF<$gm`|ZJZ+;<)Cqu&ot<a{81DF0~rvGr5Xr~8u`lav1h
z1DNytV>2z=00004XF*Lt006O$eEU(80000WV@Og>004R=004l4008;_004mL004C`
z008P>0026e000+nl3&F}00LA+Nkl<Zc-rj!cf4iURo{z#=Ui#$lT%flN?ldm)j7AM
zZnbhN3k3v7AYrftM#eVR#@F`s=iY1H^Yi;~-v=B38yj7sFc^W55JD)n)C#T6p}Im>
zu9MTwd#^m_e1EKcLRDAQ+0_!Z?Az;n_Gj(9$C+!+@f&0O#u!u3J3h4UhL09q?}L_<
zC4}H5hcTGTJa<ip(kMUZwA$@YeX6ze2bX@^)js;rz90K&-YtGmT2|?@Z!nv84A=6_
zTi&K2>FQ3a-TKtGTA#Wm`F`x7eIG66-49yw3i9<nZZ7*x{R^m*Zl~31f9g};YW+cW
z3AVoo;&RvXzroRmXb2%N#>hAS@W<a<$mc(j&wImCT0$F*Rt95q_Dx!oDovscT5Gg6
zMr)1A?xVE^qscoL|7fZpNV6eMHMIPs+GzWqTzTeGpY3P-{(FtxwT|CCAHV&*xqR*;
zc`r9?Nn2>6QCiVE8({<jq|({*v5rlu6RosHXb=dgjYb<yiZV*4`l8=K0ti3t)WRtE
z<j)`a#n1fGFa46~cM|7vxz{PBZU>y+|0cHnkG-?G^nW+ks$(Dqo&z4)?)q-IwgupS
z2W|p(1H1E{HIVZxRd2;9pn$Y@s{wPs1>kH?=AFQv-c14j0SJM2<y`p?Lgd0o#Xto7
z6X5qY|IKaXD*<l<?gZ|3Y<WkeXpc%MP}*R$0kZ$YvL#caIUHNi4HV5zjM5+lXuYm`
z%%&#l{c@|Dwv$w^0;|3MZw>ei@aNkpDq)NfKX?19K6Up^H-F&nz55xlT%<9e4QPc?
zI{WpD&I**qY<b=&m3`(a7hH!SE6d9~a_%(GRF^*ehjINw#+Z1!HS)nb{_dylxasZ>
z+`9K}%5nsO#Aq;z-q~FK@kP&N=c`TgG*m1vt@6~lM|iRN%%>lT|FAFl{_Y3w_|)BZ
z-1LFFZ{5pCSt11&{iwM_h|R~>CZI|~R+pD}<f(H!^J4YWfA~n;k9-Ir`00Q0tA)Aq
zr#@C07<zZk^9l%1J;ke(HtR|_Q^*>%uAtS%W3<-B7=vT=F8dZywT5<(2Gv^QbAk3g
z(RlU`Let;smk<5O&;Qyjx7_~mTkn1irNL2@ktE9CNP}Y;l!jCp5@qmX!*a{e2@SC_
z#3{sScE9Ywc=?iRs^IJzC}T(x#p?0`GcSCdm6@aeAvpS9|CfHp?}vZ&J%!m*vmYxC
zmEN86as`1v8HLsgrIk@yq1KhQRw$#4)`~QHedD<+4T(Y%q<+wDv_6+u$tS`;qVMs$
z@8|FQwd-#?^zmEnzlFh(3QDF#M8qZ{HZiVoQAQCHQ8zUjx<*KVFp`|fk(!jqMATTL
zLkrDC*ufyfc;pDufVG7+X1+d8_v!dQM4zRf@e|Y2)BnqzciuVu;DZmIn4X@lTb8BL
zG*xjNt1t|89LH%K$7vXbX%GZy5Cmzb(@{%HOV)++=SziRaejGuIbB>_)ZK1ZUFEkd
zU<`P$r>uX&7^AjP(7Rnne&&X~<=Y2K4&|c5<1f_2gLjXcylb<2BFA9KX0fW+F=i7+
z20u(#SPfXLB?u73yfjlI9=0V|SPOad`KnObaQ&XLaU7eDpQ5$Gwgk_gYPQ>c`a{5D
zfV$fF_2m17JyV5$vwNaIKJS>Jvd3`QLK%Z)x!kaSgrTy-u2G2}rktPeiX>IWwGGu~
zis!lbQ9{8J6g|O0EukBv#IdFmDTII|R<!*TV+?+vXm%1#&U9LxAid2PbKz<i*Z%O%
z10Q+Q{r7+1LqGE|3e!^=07Nka5rkoO-g-ZbAP6rx_nuekD*Dd=7JKX>2Xv87q}Kaa
z$^Q)S>sJ%-&AUGQk=Nh<#t(e-XFkN>t^&q@jzEQ=g3Ytu`uLL9)}JH2`b<xOioKVT
zIe?#j;{CU>x~+U4e)F!6yz%w-f8awO{TT{_yZD<HaBs!tK*{h4KYjn|t!yhFz)$|;
zUoEUI&i(m=Z+!bhH{5gwZoWjUAx;coPXR}XAxaHVN_O7*ILQ=s+Cz+eBhZOpwX=C;
zl``ZTb)sY6c}w&7BkyABfe!+$?PPoHdq4i(+itt#<8OV>2iY@OK?n%q>^rrFAb~K2
zFfoJ)$OJ?IPAo&U16>83B>T*`19|%rb5y`gntfNIp;Ot5fABh@+HZZFU2lGTi#2$~
z<Nd$-&cf2%@}Ixz?XP<1@a;E{FXxDf2u+aP2#8EXV0?VzZ#=j4^}qzAMq_xXM<Wmz
zBajV<za`$1e2sV6chcAR-Tv_#-+TCu!ykX=kGzBHD~GYM@#)ewEkZ&(JR%~xrp*~%
zL=htm>=M%yOo0HO)12f4N9fYoL?tBSOtP2jC{Q9H#^{vR*eX^z#aiLxx%=%WfZyH5
z^LX&BZ++|Z@BjYqj}8nBd;}0msZeX()>^mIH0^9TH<KjkD5YAz{%?Qfo;&X;e9XRU
z$oo&9>;Bz)?z!i${^*bXD7wTFzMQsM?s*6w1>OXFX`3PZr}y48eEXrj1KfUagv0wQ
zJbARnKu)uJSCJi4lN8D$crw86w29(~YD-Zb7-wi82T9j_@tdc>B&4aq2$-HI7^Mvd
zcUQRUV3ArY=Bv*%&`NRF;i2-``R>C@)u0h4<~M<VzTNbD;I>h-XGfVkZy083Y78eg
zf|IMTclRX3HH=O$Dk4n+Zaz>mL6lGricF4G$h(Tur!NqMAxgvkX+sdE)LRJ{gOq|G
zRxH<Ix`Cn_rYzMW5yZN3{9NldfOlOLK#J1(;N7EB6eh-C_YQ~?=my!%55V=own56w
zRni*LG<)B=>6xaP;*|2rzoa$93HtN}SgCTzSbP&cw4DOXiQ)%u9KDCiM1jI?&@rT4
zP=0n!yC7{y<z^U4CxGmEY3q-5@42hsn~9-)S`#h9l)0W`d~;j*iaGJYdu|-1P?_Mr
zg@C$!8lq*cpE7*&*!JTGaQ4ipkG=j)Z-3~GZ+?i0L6=l#0MLn`6++wtjb;Er2Yd}3
zpq)ZHgm#oE@%7~zwKB!t3^rG>Hqen1)OYP6TumRMx$^VCzurzZ+sS|A`rGek=Xixm
z4x$v4oqeCLGSG_C?Dzcy{22V$P;}vF8yW$0qu%dFFpvk&+LUXy4)t#KdYERQ*NrNe
zp&Mc0JAbPm06BZ={KsDN_E$ahj)&gPZg(Gwl(uQnqDj*<@aa-xm4*?d!~{kW5zwJY
z!_;X~C&0ffaFoRWma(XtDrr$6UvID%cu39B*Z5gE>m!F>bBKeL>ltO7$V4PMp~4^&
z<cWx=>ng|9^VCcgmmD`+cOZ?$1$~BZr{Ca$Ig3Uk5R8cluD5RFI(dj9rOY@$aV|a0
zi@`BE4Ih&jN(b_^pG|&hI{?vI-}c~x51#0O$30r>0H|xNTWOj$lO$=zaomjKxEV!}
z7e$f#*kh0Fe(lZfKX}JSf7c`YP3lYk`)~Z>Z#@1MU}61hFS%WMB*0U^-F*Pa-M1bb
z<{y0Ye#XYf5vI$&=~eU0(K!YyWp++qN3J-6F`9w60ZE&EP7&!2V|0x6XL<9h$NBct
zRg_AZ9?A2p(-Jv}xoJ<Hof9PnN-;a<LecKTX1L-qHIg$g&U6NzK2d-Bb^tOpn!A7h
zt^t1Phwo!xbSF-J5@EX_WEPIHJ&X##7_795<K`K#a_n%2K}V$iBI6?kme&-vlcP|`
zu~uuKO@I&r&ym=cV8^JU<)^f}2@^wsS*<6O^4)iAyM8UDN+VGUD$TrzMhjDIK)t!;
z*4n&Z+w!>4gjy^6TwlRS!--CV5JQ5Yiy7ZGe4wmSAsWG?0u@5ifT(JS>k!u=>76%j
zwaxoUBYUjF{(`5eh`G={K|+WkCZ@Zse3nq9kwSzpDeD57sLJ1jfN?4~aiL9^K&+q}
zGv3eVa>b!{@4Mj+#s*wG8`3BX?Su)qmch>EB1IQUE}UI6)Vdi!G=dB)SdX*{s0Ujf
z_Y`%aV6_e1uELb|0rGwQC_w3W!@2S(ko`_O%EDt&0-YE-k)RtJx;?<_#?Xxfod}lO
zFx$vv7b1)G)&kfw1fC7mE-bb->AG&D2s*6{0TB?lcJ?!V-jMt5gSTJDw7Zw0DbX?Q
zEb3?s1yiJ^s{}eEFaf^t>FO>W)241})O8IXA25jCpDR2j<P?^%X_`89T|+5@Y8X`A
zAg2I9U*qTG?BU{Q0b4snCZem_*f><g0I`W_rK>y{KE|3_p<)ekn|C*{iuh9Jb377$
zm9}nS35)yk_j8x~DyHlmkY@keYP!Oy_yot|=ULM8BtZ%di@kauO|L`SU)#~g@VUEp
z?_SbcOCT`DwBk7S!!QhkAV|91t`360bh}-A-xrIEi@EB_FMsT({?+e#m<|x|kN)XU
z=?f1xf9)&B_=O%gL_Lln>2VI1^F-P}z7P3!+<0J|iJb?q3u73SQixAcEG$uNhD>%^
zc*RkKbg*(G;0=PX0EsXPVda^aoaRjr?x0m)qF!(E+}ReV=Y5PZD6Ls-#N=IRyg`ql
zibLK{v1|!2y`6A{oGq{4H)@6^_F?D8GT=}tChcO-U=l!JumpAqY2`s!7$lG)q{Hyo
zBm)yS;}!-`QHwNv7Ns(yUx;k<3ONhg5-4TN$biT036DpgQ)*iP!5CzcW*$eggITLX
zwVnY*tpT+rrgx^+1D1`)%`A-7=aFJqA(JV}u6}WQCJ{_5Gh@C9(V8Ku_Vn<UTU6Vk
zo3}i#f@@*l6fIT(LrRPy*<L;j()7HJw26t<_?r??#jx7SR!f{hqWTy=K-ykGdZqQx
zQ1hYI%`AG)60{>jC))HjI+5VS3e^29G_<aqFXfYE?|FbYQG}faMD5HAi`&Ef$R?yE
z5-sUQnfK8Qz!K1n&4!oMiMHPF0ZG&Ynb2&=CPnsKqq`}q*n)B<@v)STQ6WY}kVd6`
zWVBtY;FcVeO6iz3&7^^^yEwR<jZRZjRqConL)B>LI(1d0uBtRtoxu1A1QMH)EaM7?
z)TAuvc@P<(SU8wOLET_F8j%Q0SNA!7LMW;5bqA#tIr8Mlk?NG?c!}?Hzd<!!W89wP
z-rTFH#Z`X4`dgd`Um(x{_m|$lTg&gJVhxg-gp-})91Wl2boe4o-P|w|Y;sKNog6G5
zrrBw5LZ5`h^fi7`N@a`*fO;IqzVG{fv)N1<jRuWI!|HT8cB|F0>-D;G?zykO`&a+<
zzn(%mpsU%1tL)=bzp-%l9q*0*+4&~F(*uWE@0?yC_M7x0+tgToVtU*|xC02w1*6F2
z@(c|Oh;KhV!*efwo436w;lOqKkkZb;L+gz&wQvWqWS$`}q~xVYQd&MFaVj1^-eO@b
zX0{q(Fzg!5Qz<$)(%?FRyeEgYyS$a6jcsd$lgVe&5FIX)c25h0hp-9=D+g9SI}5uP
z)yTr)(i=irMI4d2<yt^7Z{v3@;zXf)Bzz&CXP{zOX(U2QL8V}$&Gy+n_Ih>{9Uoeq
zO<=ejc+{Fu?*lx9$jnnIH&<|vWZx>0hFpJ|Gt<vW>!telBHet6e!ik^7THb6O*7i4
zb!XUYfd-x92TZ_=#?SOOeuhl3wn9(_);dt@8k9DK)+TUdXG0LfYReELy~`-Ti0pDo
zHo-)0NyL*T#wJ4R7^7lPabMu3wI)gp?I`=sh7X=?@Z-w?hoKv1pcbVdg~5?r1Rzqp
z^znL52-2X$*2stH@A?WuWFlI+iBN)ACwL~uk>FXX=^Axaqn_62s20_9jfSezOq+xz
z!otCo9>y3#LLw0(k+|d#LS{LG21ru!rUXK;s;Zc@KjT0fMQ8%Lx=Te2;u@FKq|C>&
ze5><yYUvuo_9(9|zLsjb%70q<_squUD9SQ_Z{nY@*WFJ`HTh!mb3E4lHlYrXNTiUA
zTNCW_4zkzX&pz)uq>{|GX7IZ{S}Wo-@%qRl6KR^N9_P^v!!T+#o5{+`ie6n^mDOt1
zX*3#My<X4Fy!hN5|LTAJ$jyu$0({U5*&2{z4Bon*KmOIz?|k#mrg10bvpvx0Zt+Mi
z%|P*c8Ch37ik{_kecvFwbt?m55^-?fBuYs>|Huix_Kl|)DJcerMiJ6NY$Uq~ge>+V
z`zcWr(e@LHUgi@tyK#>ng!^va!LXN7?ZmV@nUN&>NbzfRQ{pIOQ@$9Tv<0#VSQuk4
zX^2oUMszmjlvodv%HoEy&~Y8zJx$I^uq}w9?0v;@nf?2AqLpTL*(XjCf=KtZH0%xK
z-VHJUsb2;>>gyq`D}aZfccIr;@A~~7fEWXzzKmisR$q%mfm+wkm($IcMu;xe&0F;G
zx=t1{qa4=7yId5hU-|xf31|#`$)~g-Obo4Xs|R986qLN4*AZq`zaMAbNt}W$FILJI
zUD_=-r9o;)MYeEy(s}*KrU?^6JItni&CkM5sWKON8-APtS{Os5vfuS%aIC9?$NFPS
zKx70-z!n<Y^f`Wt!1%OulL93i9G(lFrkbu&PixdwjgD$lORKb1i;ilOm>5U6SV)X9
zNFkBf2q7{BjYMKGVvjQA>}1N?$*h>+@y??tqrl+xD_d$(T;Zb8L?&W2Ugle!hpDAi
zEMf6L>Gk;9=M$^H!F)2q4riL59sh^qWr2s=U*e0+&ykn}DJ1*7gWOTLo15~tF=me=
zg_UJ+nV5#Ik(!hl|2zx+Jm~)BUmVA(N0hgMAV?aG1}iHo*3#0FTwPtYS5{WaZg~FH
zzw&?ny~*Jl-jZQ~Ufs+g5M{9Ua^HK6_)dQ2{U7{?!LAoq`L*5~T0Jm{FX2OiKD-c-
zYJ=mtn52%8WlS1kbc~QTHyqkQz3ua*Z=K`MzjT!My=gCb&&Ks~NV^C^V&V{^6`gj6
z=T9s$x7Z|271EM;uEU!jxSlsX_$me}c^cI@zVh&soSpCVj2hF|+Rf*4m&li7o(2+(
zB28nIO0h_gCPLT+q*DPQdh(?h6`<o9Mj4V+5yhD?n$PFid*CK=g(50VC>G9AZTMHE
zvtI%rMk(-pXt^6a$5lO#Fxs+G<t9+bD?C;zBi&ybQWO1H&qkSyi}o(o!B;fw!%f{w
zPbY7^f9Y#RWl<Lt*DN1~EG_rHkAQs@DJZ3Tq_-hT1+{L*4>SW9DfS5KBm<9T0OxB4
z+j=QbY+T;UC~Fj0a%;$_PvbymnO^JMN8QiBqvWySZ3IaVJbK)Z6j}JK8*@cD*X1g@
zaA;gm&Osd6EUvjcbz0D-M@#fGekKEu$V3P&ITxPZ0FS0>;Hxej)xHQkidKolB)#yJ
z>;Z_RAd4Kz9p?JnO$^#YG}Ag~qtiUz`402VSpwy+&#V577b9?uM{FWO6Vga(Jl6R(
z^|Xesecn0nJ_LeK)&79l_yS}01RtOH#|Q+USp9WgjE*9ZT<0C+J%b-)pLYN$#KzQ0
zOw2+&$C>C9$C}S`bma)Gb_;EEf9uy6!Z6fnns$;TX?D9^-DotdTCL{HT(~gYt<Fq6
zaNE$t2Y=!>ZAz0F2ADROH84?+;L3v-0o&r1w-52`q2+sj?w`&7%76V@{HZ|myTG{~
zSZpQL)n!-oWpaCl$~lCNK<Bg2CMFA28N<j>p5<D^nT2^A6Z3|9$C;R#LfBbCk&f$_
zv`g3tm|JS{+^H5}qB*du%ujysb=>>v*I`)#6E`RnN2!!-f*3qo5Jq}C`NS3FBU^N}
zT9uX68flU;K9XZ(u!xinMu@C#EUIDBZm&e37gsR`Ap|+kW$*Q`qBt}LI>Bfk*Mht&
ziBq#}ZO_FatZtBHTV0OxSSQjO?JVQUvA1Xvxd|lV5-qcCuBH-1|6IvSCZXC)X1Xk;
zu!WP>DM)9FUX~X}gEsW@md7TA@2Otw2V6j{wFwhLGt3ln-8VD>X!wSiIuxAE(AMeI
zEbGa&E@REh%PZ?tfL_1k*9vZ0n<z1~!wejnK}O&Y<TDvA0*|!!dm2uy7_2MExBi?h
z;kI3ZqMJ=|C1Io_xodBpN9F{&&+$`QnaD&mb)AKDmRee)nKrfnMv{3Ux=liYCv#{F
zj&L>rBrglRvGO)<$lb)#{$o7S{wi(VL?BTnB~lS$Ysj+C@sn6GHW9w@X{$EJgBNJ1
zI&IzNw)~w8SOYxOeVnKL$3Yl=dhFwP!sEBrevQ-7i`cllw){rkJ@|g?p1iS%c+P*C
zqrr2`#WN%(CN(L3=x5&1HO|F{zxK78rblzH85kTWcABgCIH=`D>~8+<w@l@4zW3)L
zKfb|2Vp?EU!8E`G83qU!L=LEcJxuP<E`H}v4~_qu6Rp4ZpMLl3PtGnx&(AD`vnMY^
zOXt?ixy104fth|+Z?RxudWN7`H||VI7<8GLUBht%GBO-F-^N%LZ+>8y$%$;;8x^8e
z#PRbDzV&>AC|2BgXoxpIu%Danx(~;3F-D+OOuISHa9Ofr#O36S!Sn%e09)nLX&?*&
zV-#zvRpu6!(JDa*i53N9eypco1n3x(hNP+5H1vRS!9h&qD39GpabN@?9JC5(RcFvD
z#dQpgR@x_ktOx13ex|H8GOe1>XhE|L?M}v#7!9uTQh>M=Jj5ldd8_o-tei9bth$hh
zOb@R|g^~s&O-S01c6yn_?v*1!mo@f9Ml2y;HhTP^3rMOoL6W8E`f+w{g;_|e5g5+*
zvaP}-`)S9zLP+Qe0J3jXP_iXYpOJJs*LIz?%IZzpVK0?9%($5OhN0j>*~<VU?$M;p
z5YDWcD~7MO$~#hoO73FPUkE7WB_k!9)&2nl-*i~kizF(grJA&Li?(htY>)Cn@C;p@
z0ZB=gNKKX)Bzj)QxIMv7jQ$;rF?_Q6f78(|BobRVy-=1w3DvuIt;T^OG9feS9QC+P
zD{azNZE_;VO}Sf%OvLA#pC&XR?;3bN<Msq!X?=mS;c0B)a8L2oym#nFHhz09p5f2x
z|Aksw-H_iFPA}uo>gADvEp2SOKM&;4$igqY?LF_DLd0PF%(D<VvbsM3dZp($C@@Vh
zHL?t>Zcm4~Juk$`&bVM125-&rPk%L6LU^y)SRc#Z<<I`;OYw*PdHv^;J{HYNJ?#3C
zRTM&H*1b^}qlm)}7iJe(Tno8=?*PMtMLb7vcDBjy{rU6UapNwgC-YpGS>e=7i|0<a
z$>$`uTsOdvzxyTz#}6Qlj|yW<+#qhBr(IjZ0K*kY7%BSkkfad!kwgfE(LMRJVr^}W
z`Gpm<N|4fKVq%o>$w`Fl6+)SmH15*wgfu%5dCy|F;v%KMu`Nc5Ls+iCBn@;JllV(C
z*5(1t>`Fus^$8$mD+glO^g5btXm_F0&A>x%0guai99IC5m!!j7yMkUf@Qv9t>bL4;
z)yc4JT{mCJpubcvi|>PYW~&GCgD7AxOceG=^lp@aMJs@IxXCjl>dN7u4IV+hRAGB|
zR#+Ivg1w^_bIaEz+Xe>`ZPu2ogWFsqlh2sUn+SVZWKwJo9#TNw%|3TAfMg2LvHKrS
zWm3APL(?=!bV5@#X{#0%HmONy_q-5W*z9nonM-Ci!d7Kj;qQ$7eMan2e!u#k2~2kr
zIK(=9h%A1M+~mXhY;Tk5#4MV5P+3AkTes-yE)P`RjS+^YJCC!N%u|#_9w@zmKnHxY
z^DvHd$cY?pA9xQI88C!8;4_Usp`jX?j6M0*kBT+GL~#egmMoW6IU{EKS|Vr8HO>+~
zGDYsD3^atu!c-e8DBaA)HGU67x*5=H=vXTQ5WLJIp#Y+k@gvAAf~A*WV2<l|blfzn
zNO!gqE{s&8oR>wD`UuNI8zF*ji<OlXTAh$r-#*FyJrh`#gF#cPw)sDP<GXz2u_w7<
zZ<$iTrqfNZEWure%G`Khh(g{&>Mp9&K&Kr{8laN^i9#vGv2!7*()|I5B`D`4q(0br
zjBuz{t1K?Apj3imOGZZrnVK5k0v?K>+n~C-Mxz~&q#7!2uPw}`QLp1VCS1X!{)T*U
zoN{3y#&bnqUa*}t3F>(usoJdZ=myzy-K<FEV$Wj>Xk7Go-7C4|d86r@mARY(Ondq{
z-7KwGuhCoA+m|!!FK66ej;l82dou8U;007#6T}7)W?<3mfk%4_cw9*#U!D8N=GR&W
z3N|b@)CSg>zQJuX3(Jo)?;`^`(<9F}@l#&LJ8~@8H3-8+fe_FN3`;H0Mr?RgLV(q)
za}~XaZPQoRFn$W(_%wBcL?yIzldkG=fBE(NMg3Df@NgKihDk_pwgANarPniRkD*M;
zTDpoO+zrr>NQB7lBMW$54mZxRBG>TgFXS8QKzB@=wrQfYqNBU)a&|N2>?AcQk9HqH
z3X7ZbcaXOVJk@;+Z4{1hm~wVfu?9ClqN_W!ReMAJb;5tj*~y)Sdl_JerS<|xYe!fS
zYkiMjm_PXI5C7#C?|#F3Lk~IK;}@c=a(9FK)*H$Gm~NItWx~zph1~-YYtwT<^+H`;
zP^Te&6pp>fKlmkm+`uW|fj-2m7o22g*j~m?V`k=7Xx5jpq+xn;kg@SeY_G7vLk<pj
z+;Mn_FFv|}(uR9)9OlrT5<5p-h6i#Cm25=XMs>Rxd2JL%CupMy!;tSh-(<NK(&{FC
zdmsfbCFs`4+eLyfWNC2;ty1zin~|Xsqhnc}%0|*c<TE$FN~h~*cE9UTDP`WrI>6|t
zvEjicNfzSLT61<OMp_!zk$nP)+2VmjNk*18dc}c$kTI;6dL9?0<jAWN>Oy3^$$Dz<
zHTFg`X4AmeQIAe&WIS~0U*53qS1+%>N3T;1FGIc`d;v2OJxmNqu&JQiJ#VBR&*Nh7
z5Es1;aG?gBKvV0QYYxFEowZFdp`jBAT49#1>&KbLVad&m@JnTLEVylFMv$)q#b{A5
zS%G6q8Bi>@VCNthxhe12m56S1Z2%Ii1Bj04s4lzRy;xYZbsJmQNFli)cN5PAPvHtT
zg9jn;bvL_eA`9m@I2)lMDI_*Fcb8tpxHZX()^Q&7zsZv6-;GOkmd4xCEmED};BsH_
zeo~XtR1Ie0^Vq`XI`1G7$#Sx=;ax-~BGdsTtBgQUvdZLSF3ZU3$#*z+GjAPuHyEf#
z)r|&(#u!qa_B9#z?A?3rTSu%<-F@5RKT+P7f*9<19ZB!p>jjtPGxt1?OX~!CSw~yT
zS4}hHN%S1VPr%$M{>A@S#}A+7uYntZehM8M&z-6=w$jD6=UAxvl#33x9vr7s9zZ(1
zWH@1A5VYDIKKG3|#z%7e!jJ4`cpwKt(h0Ik?y*#%(+G{g7|o04oBZ(?*RUOE_%X|?
zKIa!ZtTp2GOtEeBi)LZ9g&!GqOB<6!6bcTWZ81>t$d^a3+`@)#NaBEn#Z}rJ9}o-<
zR+yR`#+4C5ZRv(!vffu+Kc&%0DCKQB-4v}f0tmvCeyr9lBzlhnsr9&z^}be~a~ZCq
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

diff --git a/doc/tutorial/06_sprite.vcxproj b/doc/tutorial/06_sprite.vcxproj
deleted file mode 100644
index 4b3e33a0..00000000
--- a/doc/tutorial/06_sprite.vcxproj
+++ /dev/null
@@ -1,66 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <PropertyGroup Label="LolMacros">
-    <LolDir Condition="Exists('$(SolutionDir)\lol')">$(SolutionDir)\lol</LolDir>
-    <LolDir Condition="!Exists('$(SolutionDir)\lol')">$(SolutionDir)</LolDir>
-  </PropertyGroup>
-  <ItemGroup Label="ProjectConfigurations">
-    <ProjectConfiguration Include="Debug|NX64">
-      <Configuration>Debug</Configuration>
-      <Platform>NX64</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Debug|ORBIS">
-      <Configuration>Debug</Configuration>
-      <Platform>ORBIS</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Debug|Win32">
-      <Configuration>Debug</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Debug|x64">
-      <Configuration>Debug</Configuration>
-      <Platform>x64</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Release|NX64">
-      <Configuration>Release</Configuration>
-      <Platform>NX64</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Release|ORBIS">
-      <Configuration>Release</Configuration>
-      <Platform>ORBIS</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Release|Win32">
-      <Configuration>Release</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Release|x64">
-      <Configuration>Release</Configuration>
-      <Platform>x64</Platform>
-    </ProjectConfiguration>
-  </ItemGroup>
-  <ItemGroup>
-    <ClCompile Include="06_sprite.cpp" />
-  </ItemGroup>
-  <Import Project="$(LolDir)\build\msbuild\lol-core.props" />
-  <Import Project="$(LolDir)\build\msbuild\lol-bullet.props" />
-  <PropertyGroup Label="Globals">
-    <ProjectGuid>{E05E23A5-67DE-42B5-98A3-E63CCE0CC0AF}</ProjectGuid>
-    <ConfigurationType>Application</ConfigurationType>
-    <Keyword>Win32Proj</Keyword>
-  </PropertyGroup>
-  <Import Project="$(LolDir)\build\msbuild\lol.config.props" />
-  <ImportGroup Label="ExtensionSettings">
-    <Import Project="$(LolDir)\build\msbuild\lolfx.props" />
-  </ImportGroup>
-  <ImportGroup Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(LolDir)\build\msbuild\lol.vars.props" />
-  </ImportGroup>
-  <PropertyGroup Label="UserMacros" />
-  <Import Project="$(LolDir)\build\msbuild\lol.rules.props" />
-  <ItemDefinitionGroup />
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
-  <ImportGroup Label="ExtensionTargets">
-    <Import Project="$(LolDir)\build\msbuild\lolfx.targets" />
-  </ImportGroup>
-</Project>
\ No newline at end of file
diff --git a/doc/tutorial/07_input.cpp b/doc/tutorial/07_input.cpp
deleted file mode 100644
index 28d56caf..00000000
--- a/doc/tutorial/07_input.cpp
+++ /dev/null
@@ -1,217 +0,0 @@
-//
-//  Lol Engine — Input tutorial
-//
-//  Copyright © 2011—2019 Sam Hocevar <sam@hocevar.net>
-//
-//  Lol Engine is free software. It comes without any warranty, to
-//  the extent permitted by applicable law. You can redistribute it
-//  and/or modify it under the terms of the Do What the Fuck You Want
-//  to Public License, Version 2, as published by the WTFPL Task Force.
-//  See http://www.wtfpl.net/ for more details.
-//
-
-#if HAVE_CONFIG_H
-#   include "config.h"
-#endif
-
-#include <lol/engine.h>
-#include "loldebug.h"
-
-using namespace lol;
-
-LOLFX_RESOURCE_DECLARE(07_input);
-
-class InputTutorial : public WorldEntity
-{
-public:
-    InputTutorial()
-    {
-        m_pitch_angle = 0;
-        m_yaw_angle = 0;
-        m_autorot = true;
-
-        m_text = new Text("", "data/font/ascii.png");
-        m_text->SetPos(vec3(5, 30, 1));
-        Ticker::Ref(m_text);
-    }
-
-    ~InputTutorial()
-    {
-        Ticker::Unref(m_text);
-    }
-
-    virtual void tick_game(float seconds) override
-    {
-        WorldEntity::tick_game(seconds);
-
-        auto mouse = input::mouse();
-        auto keyboard = input::keyboard();
-
-        /* Handle keyboard */
-        if (keyboard->key_pressed(input::key::SC_Space))
-            m_autorot = !m_autorot;
-
-        /* Handle joystick */
-        auto joystick = input::joystick(0);
-        if ((bool)joystick)
-        {
-            if (lol::abs(joystick->axis(input::axis::LeftY)) > 0.2f)
-                m_pitch_angle += joystick->axis(input::axis::LeftY) * seconds;
-            if (lol::abs(joystick->axis(input::axis::LeftX)) > 0.2f)
-                m_yaw_angle += joystick->axis(input::axis::LeftX) * seconds;
-        }
-
-        /* Handle mouse */
-        if (true)
-        {
-            if (mouse->button(input::button::BTN_Left))
-            {
-                mouse->capture(true);
-                m_pitch_angle += mouse->axis(input::axis::MoveY) * seconds * 0.1f;
-                m_yaw_angle += mouse->axis(input::axis::MoveX) * seconds * 0.1f;
-            }
-            else
-            {
-                mouse->capture(false);
-                if (m_autorot)
-                    m_yaw_angle += seconds * 0.2f;
-            }
-
-            m_text->SetText(lol::format(
-                "cursor: (%0.3f,%0.3f) - pixel (%d,%d)\n"
-                "  move: (%0.3f,%0.3f) - pixel (%d,%d)",
-                mouse->axis(input::axis::X), mouse->axis(input::axis::Y),
-                (int)mouse->axis(input::axis::ScreenX),
-                (int)mouse->axis(input::axis::ScreenY),
-                mouse->axis(input::axis::MoveX), mouse->axis(input::axis::MoveY),
-                (int)mouse->axis(input::axis::ScreenMoveX),
-                (int)mouse->axis(input::axis::ScreenMoveY)));
-        }
-        else
-        {
-            m_text->SetText("no mouse detected");
-        }
-
-        mat4 anim = mat4::fromeuler_yxz(m_yaw_angle, m_pitch_angle, 0.f);
-        mat4 model = mat4::translate(vec3(0, 0, -4.5));
-        mat4 view = mat4::lookat(vec3(0, 2, 0), vec3(0, 0, -4), vec3(0, 1, 0));
-        mat4 proj = mat4::perspective(radians(45.0f), 640.0f, 480.0f, 0.1f, 10.0f);
-
-        m_matrix = proj * view * model * anim;
-    }
-
-    virtual bool init_draw() override
-    {
-        array<vec3, vec3> mesh
-        {
-            // Front vertices/colors
-            { vec3(-1.0, -1.0,  1.0), vec3(1.0, 0.0, 1.0) },
-            { vec3( 1.0, -1.0,  1.0), vec3(0.0, 1.0, 0.0) },
-            { vec3( 1.0,  1.0,  1.0), vec3(1.0, 0.5, 0.0) },
-            { vec3(-1.0,  1.0,  1.0), vec3(1.0, 1.0, 0.0) },
-            // Back
-            { vec3(-1.0, -1.0, -1.0), vec3(1.0, 0.0, 0.0) },
-            { vec3( 1.0, -1.0, -1.0), vec3(0.0, 0.5, 0.0) },
-            { vec3( 1.0,  1.0, -1.0), vec3(0.0, 0.5, 1.0) },
-            { vec3(-1.0,  1.0, -1.0), vec3(0.0, 0.0, 1.0) },
-        };
-
-        array<uint16_t> faces_indices
-        {
-            0, 1, 2, 2, 3, 0, 1, 5, 6, 6, 2, 1,
-            7, 6, 5, 5, 4, 7, 4, 0, 3, 3, 7, 4,
-            4, 5, 1, 1, 0, 4, 3, 2, 6, 6, 7, 3,
-        };
-
-        array<uint16_t> lines_indices
-        {
-            0, 1, 1, 2, 2, 3, 3, 0,
-            4, 5, 5, 6, 6, 7, 7, 4,
-            0, 4, 1, 5, 2, 6, 3, 7,
-        };
-
-        m_shader = Shader::Create(LOLFX_RESOURCE_NAME(07_input));
-
-        m_mvp = m_shader->GetUniformLocation("u_matrix");
-        m_coord = m_shader->GetAttribLocation(VertexUsage::Position, 0);
-        m_color = m_shader->GetAttribLocation(VertexUsage::Color, 0);
-
-        m_vdecl = std::make_shared<VertexDeclaration>(
-                                VertexStream<vec3,vec3>(VertexUsage::Position,
-                                                        VertexUsage::Color));
-
-        m_vbo = std::make_shared<VertexBuffer>(mesh.bytes());
-        m_vbo->set_data(mesh.data(), mesh.bytes());
-
-        m_lines_ibo = std::make_shared<IndexBuffer>(lines_indices.bytes());
-        m_lines_ibo->set_data(lines_indices.data(), lines_indices.bytes());
-
-        m_faces_ibo = std::make_shared<IndexBuffer>(faces_indices.bytes());
-        m_faces_ibo->set_data(faces_indices.data(), faces_indices.bytes());
-
-        return WorldEntity::init_draw();
-    }
-
-    virtual void tick_draw(float seconds, Scene &scene) override
-    {
-        WorldEntity::tick_draw(seconds, scene);
-
-        scene.get_renderer()->clear_color(vec4(0.0f, 0.0f, 0.0f, 1.0f));
-
-        m_shader->Bind();
-        m_vdecl->Bind();
-        m_vdecl->SetStream(m_vbo, m_coord, m_color);
-
-        m_shader->SetUniform(m_mvp, m_matrix);
-        m_lines_ibo->Bind();
-        m_vdecl->DrawIndexedElements(MeshPrimitive::Lines, m_lines_ibo->size() / sizeof(uint16_t));
-        m_lines_ibo->Unbind();
-
-        m_shader->SetUniform(m_mvp, m_matrix * mat4::scale(0.5f));
-        m_faces_ibo->Bind();
-        m_vdecl->DrawIndexedElements(MeshPrimitive::Triangles, m_faces_ibo->size() / sizeof(uint16_t));
-        m_faces_ibo->Unbind();
-
-        m_vdecl->Unbind();
-    }
-
-    virtual bool release_draw() override
-    {
-        m_shader.reset();
-        m_vdecl.reset();
-        m_vbo.reset();
-        m_lines_ibo.reset();
-        m_faces_ibo.reset();
-        return true;
-    }
-
-private:
-    bool m_autorot;
-    float m_pitch_angle;
-    float m_yaw_angle;
-    mat4 m_matrix;
-
-    std::shared_ptr<Shader> m_shader;
-    ShaderAttrib m_coord, m_color;
-    ShaderUniform m_mvp;
-    std::shared_ptr<VertexDeclaration> m_vdecl;
-    std::shared_ptr<VertexBuffer> m_vbo;
-    std::shared_ptr<IndexBuffer> m_lines_ibo, m_faces_ibo;
-
-    Text *m_text;
-};
-
-int main(int argc, char **argv)
-{
-    sys::init(argc, argv);
-
-    Application app("Tutorial 7: Input", ivec2(640, 480), 60.0f);
-
-    new DebugFps(5, 5);
-    new InputTutorial();
-
-    app.Run();
-
-    return EXIT_SUCCESS;
-}
-
diff --git a/doc/tutorial/07_input.lolfx b/doc/tutorial/07_input.lolfx
deleted file mode 100644
index 24541de8..00000000
--- a/doc/tutorial/07_input.lolfx
+++ /dev/null
@@ -1,32 +0,0 @@
-[vert.glsl]
-
-#version 130
-
-in vec3 in_position;
-in vec3 in_color;
-
-uniform mat4 u_matrix;
-
-out vec3 pass_color;
-
-void main(void)
-{
-    gl_Position = u_matrix * vec4(in_position, 1.0);
-    pass_color = in_color;
-}
-
-[frag.glsl]
-
-#version 130
-
-#if defined GL_ES
-precision highp float;
-#endif
-
-in vec3 pass_color;
-
-void main(void)
-{
-    gl_FragColor = vec4(pass_color, 1.0);
-}
-
diff --git a/doc/tutorial/07_input.vcxproj b/doc/tutorial/07_input.vcxproj
deleted file mode 100644
index 513fd9a6..00000000
--- a/doc/tutorial/07_input.vcxproj
+++ /dev/null
@@ -1,69 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <PropertyGroup Label="LolMacros">
-    <LolDir Condition="Exists('$(SolutionDir)\lol')">$(SolutionDir)\lol</LolDir>
-    <LolDir Condition="!Exists('$(SolutionDir)\lol')">$(SolutionDir)</LolDir>
-  </PropertyGroup>
-  <ItemGroup Label="ProjectConfigurations">
-    <ProjectConfiguration Include="Debug|NX64">
-      <Configuration>Debug</Configuration>
-      <Platform>NX64</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Debug|ORBIS">
-      <Configuration>Debug</Configuration>
-      <Platform>ORBIS</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Debug|Win32">
-      <Configuration>Debug</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Debug|x64">
-      <Configuration>Debug</Configuration>
-      <Platform>x64</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Release|NX64">
-      <Configuration>Release</Configuration>
-      <Platform>NX64</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Release|ORBIS">
-      <Configuration>Release</Configuration>
-      <Platform>ORBIS</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Release|Win32">
-      <Configuration>Release</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Release|x64">
-      <Configuration>Release</Configuration>
-      <Platform>x64</Platform>
-    </ProjectConfiguration>
-  </ItemGroup>
-  <ItemGroup>
-    <ClCompile Include="07_input.cpp" />
-  </ItemGroup>
-  <ItemGroup>
-    <LolFxCompile Include="07_input.lolfx" />
-  </ItemGroup>
-  <Import Project="$(LolDir)\build\msbuild\lol-core.props" />
-  <Import Project="$(LolDir)\build\msbuild\lol-bullet.props" />
-  <PropertyGroup Label="Globals">
-    <ProjectGuid>{572E5B9C-7E19-489C-BD8A-E8401CFBBC47}</ProjectGuid>
-    <ConfigurationType>Application</ConfigurationType>
-    <Keyword>Win32Proj</Keyword>
-  </PropertyGroup>
-  <Import Project="$(LolDir)\build\msbuild\lol.config.props" />
-  <ImportGroup Label="ExtensionSettings">
-    <Import Project="$(LolDir)\build\msbuild\lolfx.props" />
-  </ImportGroup>
-  <ImportGroup Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(LolDir)\build\msbuild\lol.vars.props" />
-  </ImportGroup>
-  <PropertyGroup Label="UserMacros" />
-  <Import Project="$(LolDir)\build\msbuild\lol.rules.props" />
-  <ItemDefinitionGroup />
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
-  <ImportGroup Label="ExtensionTargets">
-    <Import Project="$(LolDir)\build\msbuild\lolfx.targets" />
-  </ImportGroup>
-</Project>
\ No newline at end of file
diff --git a/doc/tutorial/08_fbo.cpp b/doc/tutorial/08_fbo.cpp
deleted file mode 100644
index 492643a1..00000000
--- a/doc/tutorial/08_fbo.cpp
+++ /dev/null
@@ -1,146 +0,0 @@
-//
-//  Lol Engine — Framebuffer Object tutorial
-//
-//  Copyright © 2012—2019 Sam Hocevar <sam@hocevar.net>
-//
-//  Lol Engine is free software. It comes without any warranty, to
-//  the extent permitted by applicable law. You can redistribute it
-//  and/or modify it under the terms of the Do What the Fuck You Want
-//  to Public License, Version 2, as published by the WTFPL Task Force.
-//  See http://www.wtfpl.net/ for more details.
-//
-
-#if HAVE_CONFIG_H
-#   include "config.h"
-#endif
-
-#include <lol/engine.h>
-
-#include <memory>
-
-using namespace lol;
-
-LOLFX_RESOURCE_DECLARE(08_fbo);
-
-class FBO : public WorldEntity
-{
-public:
-    virtual void tick_game(float seconds) override
-    {
-        WorldEntity::tick_game(seconds);
-
-        m_time += seconds;
-        m_hotspot = 0.4f * vec3(
-            lol::sin((float)m_time * 4.f) + lol::cos((float)m_time * 5.3f),
-            lol::sin((float)m_time * 5.7f) + lol::cos((float)m_time * 4.4f),
-            lol::sin((float)m_time * 5.f));
-        m_color = 0.25f * vec3(1.1f + lol::sin((float)m_time * 2.5f + 1.f),
-                               1.1f + lol::sin((float)m_time * 2.8f + 1.3f),
-                               1.1f + lol::sin((float)m_time * 2.7f));
-        /* Saturate dot color */
-        float x = std::max(m_color.x, std::max(m_color.y, m_color.z));
-        m_color /= x;
-    }
-
-    virtual bool init_draw() override
-    {
-        array<vec2> vertices
-        {
-            vec2( 1.0,  1.0),
-            vec2(-1.0, -1.0),
-            vec2( 1.0, -1.0),
-            vec2(-1.0, -1.0),
-            vec2( 1.0,  1.0),
-            vec2(-1.0,  1.0),
-        };
-
-        m_shader = Shader::Create(LOLFX_RESOURCE_NAME(08_fbo));
-        m_coord = m_shader->GetAttribLocation(VertexUsage::Position, 0);
-        m_uni_flag = m_shader->GetUniformLocation("u_flag");
-        m_uni_point = m_shader->GetUniformLocation("u_point");
-        m_uni_color = m_shader->GetUniformLocation("u_color");
-        m_uni_texture = m_shader->GetUniformLocation("u_texture");
-
-        m_vdecl = std::make_shared<VertexDeclaration>(VertexStream<vec2>(VertexUsage::Position));
-
-        m_vbo = std::make_shared<VertexBuffer>(vertices.bytes());
-        m_vbo->set_data(vertices.data(), vertices.bytes());
-
-        // Create the back buffer and clear it
-        m_backbuffer = std::make_shared<Framebuffer>(Video::GetSize());
-        m_backbuffer->Bind();
-        {
-            Scene& scene = Scene::GetScene();
-            render_context rc(scene.get_renderer());
-            rc.clear_color(vec4(0.f, 0.f, 0.f, 1.f));
-            rc.clear_depth(1.f);
-            scene.get_renderer()->clear(ClearMask::Color | ClearMask::Depth);
-        }
-        m_backbuffer->Unbind();
-
-        return true;
-    }
-
-    virtual void tick_draw(float seconds, Scene &scene) override
-    {
-        WorldEntity::tick_draw(seconds, scene);
-
-        /* FIXME: we should just disable depth test in the shader */
-        render_context rc(scene.get_renderer());
-        rc.depth_func(DepthFunc::Disabled);
-
-        /* FIXME: this no longer works because we don’t restore the
-         * actually bound framebuffer. */
-        m_backbuffer->Bind();
-        m_shader->Bind();
-        m_shader->SetUniform(m_uni_flag, 0.f);
-        m_shader->SetUniform(m_uni_point, m_hotspot);
-        m_shader->SetUniform(m_uni_color, m_color);
-        m_vdecl->Bind();
-        m_vdecl->SetStream(m_vbo, m_coord);
-        m_vdecl->DrawElements(MeshPrimitive::Triangles, 0, 6);
-        m_vdecl->Unbind();
-        m_shader->Unbind();
-        m_backbuffer->Unbind();
-
-        m_shader->Bind();
-        m_shader->SetUniform(m_uni_flag, 1.f);
-        m_shader->SetUniform(m_uni_texture, m_backbuffer->GetTextureUniform(), 0);
-        m_vdecl->Bind();
-        m_vdecl->SetStream(m_vbo, m_coord);
-        m_vdecl->DrawElements(MeshPrimitive::Triangles, 0, 6);
-        m_vdecl->Unbind();
-        m_shader->Unbind();
-    }
-
-    virtual bool release_draw() override
-    {
-        m_shader.reset();
-        m_vdecl.reset();
-        m_vbo.reset();
-        m_backbuffer.reset();
-        return true;
-    }
-
-private:
-    std::shared_ptr<Shader> m_shader;
-    ShaderAttrib m_coord;
-    ShaderUniform m_uni_flag, m_uni_point, m_uni_color, m_uni_texture;
-    std::shared_ptr<VertexDeclaration> m_vdecl;
-    std::shared_ptr<VertexBuffer> m_vbo;
-    std::shared_ptr<Framebuffer> m_backbuffer;
-    double m_time = 0.0f;
-    vec3 m_hotspot, m_color;
-};
-
-int main(int argc, char **argv)
-{
-    sys::init(argc, argv);
-
-    Application app("Tutorial 08: Framebuffer Object", ivec2(512, 512), 60.0f);
-    new FBO();
-    app.Run();
-
-    return EXIT_SUCCESS;
-}
-
diff --git a/doc/tutorial/08_fbo.lolfx b/doc/tutorial/08_fbo.lolfx
deleted file mode 100644
index 6138bb58..00000000
--- a/doc/tutorial/08_fbo.lolfx
+++ /dev/null
@@ -1,52 +0,0 @@
-[vert.glsl]
-
-#version 130
-
-in vec2 in_position;
-
-out vec2 pass_position;
-
-void main()
-{
-    pass_position = in_position;
-    gl_Position = vec4(in_position, 0.0, 1.0);
-}
-
-[frag.glsl]
-
-#version 130
-
-#if defined GL_ES
-precision highp float;
-#endif
-
-in vec2 pass_position;
-
-uniform sampler2D u_texture;
-uniform float u_flag;
-uniform vec3 u_point;
-uniform vec3 u_color;
-
-void main(void)
-{
-    if (u_flag == 0.0)
-    {
-        float tc = 0.0, ta = 0.0;
-        {
-            float s = 3.0 + 2.0 * u_point.z;
-            vec2 p = pass_position - u_point.xy * 0.9;
-            float t = clamp(1.2 - dot(s * p, s * p), 0.0, 1.0);
-            float u = t * t * t * t;
-            tc += 3.0 * t * t - 2.0 * t * t * t;
-            ta += 3.0 * u * u - 2.0 * u * u * u;
-        }
-
-        gl_FragColor = vec4(tc * u_color, ta + 0.1);
-    }
-    else
-    {
-        vec2 texcoords = pass_position * 0.5 + vec2(0.5, 0.5);
-        gl_FragColor = vec4(texture2D(u_texture, texcoords).xyz, 1.0);
-    }
-}
-
diff --git a/doc/tutorial/08_fbo.vcxproj b/doc/tutorial/08_fbo.vcxproj
deleted file mode 100644
index 2d43dd28..00000000
--- a/doc/tutorial/08_fbo.vcxproj
+++ /dev/null
@@ -1,69 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <PropertyGroup Label="LolMacros">
-    <LolDir Condition="Exists('$(SolutionDir)\lol')">$(SolutionDir)\lol</LolDir>
-    <LolDir Condition="!Exists('$(SolutionDir)\lol')">$(SolutionDir)</LolDir>
-  </PropertyGroup>
-  <ItemGroup Label="ProjectConfigurations">
-    <ProjectConfiguration Include="Debug|NX64">
-      <Configuration>Debug</Configuration>
-      <Platform>NX64</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Debug|ORBIS">
-      <Configuration>Debug</Configuration>
-      <Platform>ORBIS</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Debug|Win32">
-      <Configuration>Debug</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Debug|x64">
-      <Configuration>Debug</Configuration>
-      <Platform>x64</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Release|NX64">
-      <Configuration>Release</Configuration>
-      <Platform>NX64</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Release|ORBIS">
-      <Configuration>Release</Configuration>
-      <Platform>ORBIS</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Release|Win32">
-      <Configuration>Release</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Release|x64">
-      <Configuration>Release</Configuration>
-      <Platform>x64</Platform>
-    </ProjectConfiguration>
-  </ItemGroup>
-  <ItemGroup>
-    <ClCompile Include="08_fbo.cpp" />
-  </ItemGroup>
-  <ItemGroup>
-    <LolFxCompile Include="08_fbo.lolfx" />
-  </ItemGroup>
-  <Import Project="$(LolDir)\build\msbuild\lol-core.props" />
-  <Import Project="$(LolDir)\build\msbuild\lol-bullet.props" />
-  <PropertyGroup Label="Globals">
-    <ProjectGuid>{BCEE0132-8E24-49BE-AFEB-96DAD14396BA}</ProjectGuid>
-    <ConfigurationType>Application</ConfigurationType>
-    <Keyword>Win32Proj</Keyword>
-  </PropertyGroup>
-  <Import Project="$(LolDir)\build\msbuild\lol.config.props" />
-  <ImportGroup Label="ExtensionSettings">
-    <Import Project="$(LolDir)\build\msbuild\lolfx.props" />
-  </ImportGroup>
-  <ImportGroup Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(LolDir)\build\msbuild\lol.vars.props" />
-  </ImportGroup>
-  <PropertyGroup Label="UserMacros" />
-  <Import Project="$(LolDir)\build\msbuild\lol.rules.props" />
-  <ItemDefinitionGroup />
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
-  <ImportGroup Label="ExtensionTargets">
-    <Import Project="$(LolDir)\build\msbuild\lolfx.targets" />
-  </ImportGroup>
-</Project>
\ No newline at end of file
diff --git a/doc/tutorial/09_sound.cpp b/doc/tutorial/09_sound.cpp
deleted file mode 100644
index 85ca0da9..00000000
--- a/doc/tutorial/09_sound.cpp
+++ /dev/null
@@ -1,116 +0,0 @@
-//
-//  Lol Engine — Sound tutorial
-//
-//  Copyright © 2011—2019 Sam Hocevar <sam@hocevar.net>
-//
-//  Lol Engine is free software. It comes without any warranty, to
-//  the extent permitted by applicable law. You can redistribute it
-//  and/or modify it under the terms of the Do What the Fuck You Want
-//  to Public License, Version 2, as published by the WTFPL Task Force.
-//  See http://www.wtfpl.net/ for more details.
-//
-
-#if HAVE_CONFIG_H
-#   include "config.h"
-#endif
-
-#include <lol/engine.h>
-
-#include <functional>
-#include <array>
-
-using namespace lol;
-
-class sound_demo : public WorldEntity
-{
-public:
-    sound_demo()
-    {
-        for (int i = 0; i < 2; ++i)
-        {
-            auto f = std::bind(&sound_demo::synth, this, i,
-                               std::placeholders::_1,
-                               std::placeholders::_2);
-            m_streams[i] = audio::start_streaming(f, audio::format::sint16le, 22050, 1);
-        }
-
-        for (size_t i = 0; i < m_instrument.size(); ++i)
-            m_instrument[i] = (int16_t)(i % 80 * (10000 - lol::abs(i - 10000)) * 40 / 10000);
-        m_sample = sample::create(m_instrument.data(), 40000);
-
-        m_text = new Text("SPACE for sine wave, Left Click for white noise",
-                          "data/font/ascii.png");
-        m_text->SetPos(vec3(5, 5, 1));
-        Ticker::Ref(m_text);
-    }
-
-    ~sound_demo()
-    {
-        Ticker::Unref(m_text);
-    }
-
-    void synth(int channel, void *buf, int bytes)
-    {
-        int mode = (1 << channel) & m_mask;
-
-        int16_t *stream = (int16_t *)buf;
-        for (int i = 0; i < bytes / 2; ++i)
-        {
-            switch (mode)
-            {
-            case 2: // triangle signal
-                stream[i] = (i % 128 - 64) * 8;
-                break;
-            case 1: // white noise
-                stream[i] = lol::rand(-2048, 2048);
-                break;
-            case 0: // inactive
-                stream[i] = 0;
-                break;
-            }
-        }
-    }
-
-    virtual void tick_game(float seconds) override
-    {
-        WorldEntity::tick_game(seconds);
-
-        auto mouse = input::mouse();
-        auto keyboard = input::keyboard();
-
-        if (keyboard->key_pressed(input::key::SC_Return))
-            m_sample->play();
-
-        if (keyboard->key_pressed(input::key::SC_Space))
-            m_mask ^= 2;
-
-        if (mouse->button_pressed(input::button::BTN_Left))
-            m_mask ^= 1;
-    }
-
-    virtual bool release_game() override
-    {
-        for (int i = 0; i < 2; ++i)
-            audio::stop_streaming(m_streams[i]);
-        return true;
-    }
-
-private:
-    int m_streams[2];
-    int m_mask = 0;
-    std::array<int16_t, 20000> m_instrument;
-    sample* m_sample;
-    Text *m_text;
-};
-
-int main(int argc, char **argv)
-{
-    sys::init(argc, argv);
-
-    Application app("Tutorial 9: Sound", ivec2(640, 480), 60.0f);
-    new sound_demo();
-    app.Run();
-
-    return EXIT_SUCCESS;
-}
-
diff --git a/doc/tutorial/09_sound.vcxproj b/doc/tutorial/09_sound.vcxproj
deleted file mode 100644
index 34d4092f..00000000
--- a/doc/tutorial/09_sound.vcxproj
+++ /dev/null
@@ -1,66 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <PropertyGroup Label="LolMacros">
-    <LolDir Condition="Exists('$(SolutionDir)\lol')">$(SolutionDir)\lol</LolDir>
-    <LolDir Condition="!Exists('$(SolutionDir)\lol')">$(SolutionDir)</LolDir>
-  </PropertyGroup>
-  <ItemGroup Label="ProjectConfigurations">
-    <ProjectConfiguration Include="Debug|NX64">
-      <Configuration>Debug</Configuration>
-      <Platform>NX64</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Debug|ORBIS">
-      <Configuration>Debug</Configuration>
-      <Platform>ORBIS</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Debug|Win32">
-      <Configuration>Debug</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Debug|x64">
-      <Configuration>Debug</Configuration>
-      <Platform>x64</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Release|NX64">
-      <Configuration>Release</Configuration>
-      <Platform>NX64</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Release|ORBIS">
-      <Configuration>Release</Configuration>
-      <Platform>ORBIS</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Release|Win32">
-      <Configuration>Release</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Release|x64">
-      <Configuration>Release</Configuration>
-      <Platform>x64</Platform>
-    </ProjectConfiguration>
-  </ItemGroup>
-  <ItemGroup>
-    <ClCompile Include="09_sound.cpp" />
-  </ItemGroup>
-  <Import Project="$(LolDir)\build\msbuild\lol-core.props" />
-  <Import Project="$(LolDir)\build\msbuild\lol-bullet.props" />
-  <PropertyGroup Label="Globals">
-    <ProjectGuid>{51626A22-DD68-4450-9696-13B03BF7A2C5}</ProjectGuid>
-    <ConfigurationType>Application</ConfigurationType>
-    <Keyword>Win32Proj</Keyword>
-  </PropertyGroup>
-  <Import Project="$(LolDir)\build\msbuild\lol.config.props" />
-  <ImportGroup Label="ExtensionSettings">
-    <Import Project="$(LolDir)\build\msbuild\lolfx.props" />
-  </ImportGroup>
-  <ImportGroup Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(LolDir)\build\msbuild\lol.vars.props" />
-  </ImportGroup>
-  <PropertyGroup Label="UserMacros" />
-  <Import Project="$(LolDir)\build\msbuild\lol.rules.props" />
-  <ItemDefinitionGroup />
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
-  <ImportGroup Label="ExtensionTargets">
-    <Import Project="$(LolDir)\build\msbuild\lolfx.targets" />
-  </ImportGroup>
-</Project>
\ No newline at end of file
diff --git a/doc/tutorial/11_fractal.cpp b/doc/tutorial/11_fractal.cpp
deleted file mode 100644
index 84082e00..00000000
--- a/doc/tutorial/11_fractal.cpp
+++ /dev/null
@@ -1,576 +0,0 @@
-//
-//  Lol Engine — Fractal tutorial
-//
-//  Copyright © 2011—2019 Sam Hocevar <sam@hocevar.net>
-//
-//  Lol Engine is free software. It comes without any warranty, to
-//  the extent permitted by applicable law. You can redistribute it
-//  and/or modify it under the terms of the Do What the Fuck You Want
-//  to Public License, Version 2, as published by the WTFPL Task Force.
-//  See http://www.wtfpl.net/ for more details.
-//
-
-#if HAVE_CONFIG_H
-#   include "config.h"
-#endif
-
-#include <memory>
-#include <sstream>
-
-#include <lol/engine.h>
-#include "loldebug.h"
-
-#define USE_REAL 0
-
-using namespace lol;
-
-LOLFX_RESOURCE_DECLARE(11_fractal);
-
-class Fractal : public WorldEntity
-{
-public:
-    Fractal(ivec2 const &size)
-    {
-        /* Ensure texture size is a multiple of 16 for better aligned
-         * data access. Store the dimensions of a texel for our shader,
-         * as well as the half-size of the screen. */
-        m_size = size;
-        m_size.x = (m_size.x + 15) & ~15;
-        m_size.y = (m_size.y + 15) & ~15;
-        m_texel_settings = vec4(1.0, 1.0, 2.0, 2.0) / (vec4)m_size.xyxy;
-        m_screen_settings = vec4(1.0, 1.0, 0.5, 0.5) * (vec4)m_size.xyxy;
-
-        /* Window size decides the world aspect ratio. For instance, 640×480
-         * will be mapped to (-0.66,-0.5) - (0.66,0.5). */
-        m_window_size = Video::GetSize();
-        if (m_window_size.y < m_window_size.x)
-            m_window2world = 0.5 / m_window_size.y;
-        else
-            m_window2world = 0.5 / m_window_size.x;
-        m_texel2world = (dvec2)m_window_size / (dvec2)m_size * m_window2world;
-
-        m_oldmouse = ivec2(0, 0);
-
-        m_pixels.resize(m_size.x * m_size.y);
-        for (int i = 0; i < 4; i++)
-        {
-            m_deltashift[i] = real("0");
-            m_deltascale[i] = real("1");
-            m_dirty[i] = 2;
-        }
-        m_view.center = rcmplx(-0.75, 0.0);
-        m_zoom_speed = 0.0;
-        m_view.translate = rcmplx(0.0, 0.0);
-        m_view.radius = 5.0;
-
-        for (int i = 0; i < (MAX_ITERATIONS + 1) * PALETTE_STEP; i++)
-        {
-            double f = (double)i / PALETTE_STEP;
-
-            vec3 hsv(lol::fmod(i * 0.001f, 1.f),
-                     0.3 * lol::sin(f * 0.27 + 2.0) + 0.3,
-                     0.3 * lol::sin(f * 0.21 - 2.6) + 0.6);
-            vec3 rgb = Color::HSVToRGB(hsv);
-
-            if (f < 7.0)
-            {
-                rgb *= f < 1.0 ? 0.0 : (f - 1.0) / 6.0;
-            }
-
-            uint8_t red   = (uint8_t)(rgb.r * 256);
-            uint8_t green = (uint8_t)(rgb.g * 256);
-            uint8_t blue  = (uint8_t)(rgb.b * 256);
-            m_palette.push(u8vec4(blue, green, red, 255));
-        }
-
-        m_zoomtext = new Text("", "data/font/ascii.png");
-        m_zoomtext->SetPos(vec3(5, (float)m_window_size.y - 15, 1));
-        Ticker::Ref(m_zoomtext);
-
-        m_centertext = new Text("", "data/font/ascii.png");
-        m_centertext->SetPos(vec3(5, (float)m_window_size.y - 29, 1));
-        Ticker::Ref(m_centertext);
-
-        m_mousetext = new Text("", "data/font/ascii.png");
-        m_mousetext->SetPos(vec3(5, (float)m_window_size.y - 43, 1));
-        Ticker::Ref(m_mousetext);
-
-        m_position = vec3::zero;
-        m_aabb.aa = m_position;
-        m_aabb.bb = vec3((vec2)m_window_size, 0);
-
-        if (has_threads())
-        {
-            // Spawn worker threads and wait for their readiness
-            for (int i = 0; i < MAX_THREADS; i++)
-                m_threads[i] = new thread(std::bind(&Fractal::DoWorkHelper, this, std::placeholders::_1));
-            for (int i = 0; i < MAX_THREADS; i++)
-                m_spawnqueue.pop();
-        }
-    }
-
-    ~Fractal()
-    {
-        if (has_threads())
-        {
-            // Signal worker threads for completion and wait for them to quit
-            for (int i = 0; i < MAX_THREADS; i++)
-                m_jobqueue.push(-1);
-            for (int i = 0; i < MAX_THREADS; i++)
-                m_donequeue.pop();
-        }
-
-        Ticker::Unref(m_centertext);
-        Ticker::Unref(m_mousetext);
-        Ticker::Unref(m_zoomtext);
-    }
-
-    inline f128cmplx TexelToWorldOffset(vec2 texel)
-    {
-        double dx = (0.5 + texel.x - m_size.x / 2) * m_texel2world.x;
-        double dy = (0.5 + m_size.y / 2 - texel.y) * m_texel2world.y;
-        return m_view.radius * f128cmplx(dx, dy);
-    }
-
-    inline f128cmplx ScreenToWorldOffset(vec2 pixel)
-    {
-        /* No 0.5 offset here, because we want to be able to position the
-         * mouse at (0,0) exactly. */
-        double dx = pixel.x - m_window_size.x / 2;
-        double dy = m_window_size.y / 2 - pixel.y;
-        return m_view.radius * m_window2world * f128cmplx(dx, dy);
-    }
-
-    virtual void tick_game(float seconds)
-    {
-        WorldEntity::tick_game(seconds);
-
-        auto mouse = input::mouse();
-        auto keyboard = input::keyboard();
-
-        vec2 mousepos(mouse->axis(input::axis::ScreenX),
-                      mouse->axis(input::axis::ScreenY));
-
-        int prev_frame = (m_frame + 4) % 4;
-        m_frame = (m_frame + 1) % 4;
-
-        if (keyboard->key_pressed(input::key::SC_Space))
-        {
-            m_julia = !m_julia;
-            if (m_julia)
-            {
-                m_saved_view = m_view;
-                m_view.r0 = m_view.center + rcmplx(ScreenToWorldOffset(mousepos));
-            }
-            else
-            {
-                m_view = m_saved_view;
-            }
-            for (auto & flag : m_dirty)
-                flag = 2;
-        }
-
-        rcmplx worldmouse = m_view.center + rcmplx(ScreenToWorldOffset(mousepos));
-
-        if (mouse->button(input::button::BTN_Middle))
-        {
-            if (!m_drag)
-            {
-                m_oldmouse = (ivec2)mousepos;
-                m_drag = true;
-            }
-            m_view.translate = rcmplx(ScreenToWorldOffset((vec2)m_oldmouse)
-                                    - ScreenToWorldOffset(mousepos));
-            /* XXX: the purpose of this hack is to avoid translating by
-             * an exact number of pixels. If this were to happen, the step()
-             * optimisation for i915 cards in our shader would behave
-             * incorrectly because a quarter of the pixels in the image
-             * would have tied rankings in the distance calculation. */
-            m_view.translate *= real(1023.0 / 1024.0);
-            m_oldmouse = (ivec2)mousepos;
-        }
-        else
-        {
-            m_drag = false;
-            if (m_view.translate != rcmplx(0.0, 0.0))
-            {
-                m_view.translate *= real(std::pow(2.0, -seconds * 5.0));
-                if ((double)norm(m_view.translate) < m_view.radius * 1e-4)
-                    m_view.translate = rcmplx(0.0, 0.0);
-            }
-        }
-
-        bool hold_right = mouse->button(input::button::BTN_Right);
-        bool hold_left = mouse->button(input::button::BTN_Left);
-        if ((hold_right || hold_left) && mousepos.x != -1)
-        {
-            double zoom = hold_right ? -0.5 : 0.5;
-            m_zoom_speed += zoom * seconds;
-            if (m_zoom_speed / zoom > 5e-3f)
-                m_zoom_speed = zoom * 5e-3f;
-        }
-        else if (m_zoom_speed)
-        {
-            m_zoom_speed *= std::pow(2.0, -seconds * 5.0);
-            if (lol::abs(m_zoom_speed) < 1e-5 || m_drag)
-                m_zoom_speed = 0.0;
-        }
-
-        if (m_zoom_speed || m_view.translate != rcmplx(0.0, 0.0))
-        {
-            rcmplx oldcenter = m_view.center;
-            double oldradius = m_view.radius;
-            double zoom = std::pow(2.0, seconds * 1e3f * m_zoom_speed);
-            if (m_view.radius * zoom > 8.0)
-            {
-                m_zoom_speed *= -1.0;
-                zoom = 8.0 / m_view.radius;
-            }
-            else if (m_view.radius * zoom < MAX_ZOOM)
-            {
-                m_zoom_speed *= -1.0;
-                zoom = MAX_ZOOM / m_view.radius;
-            }
-            m_view.radius *= zoom;
-            m_view.center += m_view.translate;
-            m_view.center = (m_view.center - worldmouse) * real(zoom) + worldmouse;
-            worldmouse = m_view.center
-                          + rcmplx(ScreenToWorldOffset(mousepos));
-
-            /* Store the transformation properties to go from m_frame - 1
-             * to m_frame. */
-            m_deltashift[prev_frame] = (m_view.center - oldcenter) / real(oldradius);
-            m_deltashift[prev_frame].x /= m_size.x * m_texel2world.x;
-            m_deltashift[prev_frame].y /= m_size.y * m_texel2world.y;
-            m_deltascale[prev_frame] = m_view.radius / oldradius;
-            for (auto & flag : m_dirty)
-                flag = 2;
-        }
-        else
-        {
-            /* If settings didn't change, set transformation from previous
-             * frame to identity. */
-            m_deltashift[prev_frame] = real::R_0();
-            m_deltascale[prev_frame] = real::R_1();
-        }
-
-        /* Transformation from current frame to current frame is always
-         * identity. */
-        m_zoom_settings[m_frame][0] = 0.0f;
-        m_zoom_settings[m_frame][1] = 0.0f;
-        m_zoom_settings[m_frame][2] = 1.0f;
-
-        /* Compute transformation from other frames to current frame */
-        for (int i = 0; i < 3; i++)
-        {
-            int prev_index = (m_frame + 4 - i) % 4;
-            int cur_index = (m_frame + 3 - i) % 4;
-
-            m_zoom_settings[cur_index][0] = (real)m_zoom_settings[prev_index][0] * m_deltascale[cur_index] + m_deltashift[cur_index].x;
-            m_zoom_settings[cur_index][1] = (real)m_zoom_settings[prev_index][1] * m_deltascale[cur_index] + m_deltashift[cur_index].y;
-            m_zoom_settings[cur_index][2] = (real)m_zoom_settings[prev_index][2] * m_deltascale[cur_index];
-        }
-
-        /* Precompute texture offset change instead of doing it in GLSL */
-        for (int i = 0; i < 4; i++)
-        {
-            m_zoom_settings[i][0] += 0.5f * (1.0f - m_zoom_settings[i][2]);
-            m_zoom_settings[i][1] -= 0.5f * (1.0f - m_zoom_settings[i][2]);
-        }
-
-        m_centertext->SetText("center: " + m_view.center.x.str(30) + " " + m_view.center.y.str(30));
-        m_mousetext->SetText(" mouse: " + worldmouse.x.str(30) + " " + worldmouse.y.str(30));
-
-        std::stringstream ss;
-        ss << '[' << (m_julia ? "Julia" : "Mandelbrot") << "] zoom: " << 1.0 / m_view.radius;
-        m_zoomtext->SetText(ss.str());
-
-        if (m_dirty[m_frame])
-        {
-            m_dirty[m_frame]--;
-
-            for (int i = 0; i < m_size.y; i += MAX_LINES * 2)
-            {
-                if (has_threads())
-                    m_jobqueue.push(i);
-                else
-                    DoWork(i);
-            }
-        }
-    }
-
-    void DoWorkHelper(thread *)
-    {
-        m_spawnqueue.push(0);
-        for ( ; ; )
-        {
-            int line = m_jobqueue.pop();
-            if (line == -1)
-                break;
-            DoWork(line);
-            m_donequeue.push(0);
-        }
-        m_donequeue.push(0);
-    };
-
-    void DoWork(int line)
-    {
-        double const maxsqlen = 1024;
-        double const k1 = 1.0 / (1 << 10) / (std::log(maxsqlen) / std::log(2.0));
-
-        int jmin = ((m_frame + 1) % 4) / 2 + line;
-        int jmax = jmin + MAX_LINES * 2;
-        if (jmax > m_size.y)
-            jmax = m_size.y;
-        u8vec4 *pixelstart = m_pixels.data()
-                           + m_size.x * (m_size.y / 4 * m_frame + line / 4);
-
-#if USE_REAL
-        rcmplx c = (rcmplx)m_view.center;
-        rcmplx jr0 = (rcmplx)m_view.r0;
-#else
-        f128cmplx c = (f128cmplx)m_view.center;
-        f128cmplx jr0 = (f128cmplx)m_view.r0;
-#endif
-
-        for (int j = jmin; j < jmax; j += 2)
-        for (int i = m_frame % 2; i < m_size.x; i += 2)
-        {
-#if USE_REAL
-            real xr, yr, x0, y0, x1, y1, x2, y2, x3, y3;
-            real sqx0, sqy0, sqx1, sqy1, sqx2, sqy2, sqx3, sqy3;
-            rcmplx z0 = c + rcmplx(TexelToWorldOffset(vec2(ivec2(i, j))));
-            rcmplx r0 = m_julia ? jr0 : z0;
-#else
-            ldouble xr, yr, x0, y0, x1, y1, x2, y2, x3, y3;
-            ldouble sqx0, sqy0, sqx1, sqy1, sqx2, sqy2, sqx3, sqy3;
-            f128cmplx z0 = c + TexelToWorldOffset(vec2(ivec2(i, j)));
-            f128cmplx r0 = m_julia ? jr0 : z0;
-#endif
-
-            x0 = z0.x; y0 = z0.y;
-            xr = r0.x; yr = r0.y;
-            sqx0 = x0 * x0; sqy0 = y0 * y0;
-
-            int iter = MAX_ITERATIONS - 4;
-            for (;;)
-            {
-                /* Unroll the loop: tests are more expensive to do at each
-                 * iteration than the few extra multiplications, at least
-                 * with floats/doubles. */
-                x1 = sqx0 - sqy0 + xr; y1 = x0 * y0 + x0 * y0 + yr;
-                sqx1 = x1 * x1; sqy1 = y1 * y1;
-                x2 = sqx1 - sqy1 + xr; y2 = x1 * y1 + x1 * y1 + yr;
-                sqx2 = x2 * x2; sqy2 = y2 * y2;
-                x3 = sqx2 - sqy2 + xr; y3 = x2 * y2 + x2 * y2 + yr;
-                sqx3 = x3 * x3; sqy3 = y3 * y3;
-                x0 = sqx3 - sqy3 + xr; y0 = x3 * y3 + x3 * y3 + yr;
-                sqx0 = x0 * x0; sqy0 = y0 * y0;
-
-                if ((double)sqx0 + (double)sqy0 >= maxsqlen)
-                    break;
-                iter -= 4;
-                if (iter < 4)
-                    break;
-            }
-
-            if (iter)
-            {
-                double n = (double)sqx0 + (double)sqy0;
-
-                if ((double)sqx1 + (double)sqy1 >= maxsqlen)
-                {
-                    iter += 3; n = (double)sqx1 + (double)sqy1;
-                }
-                else if ((double)sqx2 + (double)sqy2 >= maxsqlen)
-                {
-                    iter += 2; n = (double)sqx2 + (double)sqy2;
-                }
-                else if ((double)sqx3 + (double)sqy3 >= maxsqlen)
-                {
-                    iter += 1; n = (double)sqx3 + (double)sqy3;
-                }
-
-                if (n > maxsqlen * maxsqlen)
-                    n = maxsqlen * maxsqlen;
-
-                /* Approximate log(sqrt(n))/log(sqrt(maxsqlen)) */
-                double f = iter;
-                union { double n; uint64_t x; } u = { (double)n };
-                double k = (double)(u.x >> 42) - (((1 << 10) - 1) << 10);
-                k *= k1;
-
-                /* Approximate log2(k) in [1,2]. */
-                f += (- 0.344847817623168308695977510213252644185 * k
-                      + 2.024664188044341212602376988171727038739) * k
-                      - 1.674876738008591047163498125918330313237;
-
-                *pixelstart++ = m_palette[(int)(f * PALETTE_STEP)];
-            }
-            else
-            {
-                *pixelstart++ = u8vec4(0, 0, 0, 255);
-            }
-        }
-    }
-
-    virtual bool init_draw() override
-    {
-        float const vertices[] =
-        {
-             1.0f,  1.0f,
-            -1.0f,  1.0f,
-            -1.0f, -1.0f,
-            -1.0f, -1.0f,
-             1.0f, -1.0f,
-             1.0f,  1.0f,
-        };
-
-        float const texcoords[] =
-        {
-             1.0f,  1.0f,
-             0.0f,  1.0f,
-             0.0f,  0.0f,
-             0.0f,  0.0f,
-             1.0f,  0.0f,
-             1.0f,  1.0f,
-        };
-
-        /* Create a texture of half the width and twice the height
-         * so that we can upload four different subimages each frame. */
-        m_texture = std::make_shared<Texture>(ivec2(m_size.x / 2, m_size.y * 2),
-                                              PixelFormat::RGBA_8);
-
-        /* Ensure the texture data is complete at least once, otherwise
-         * uploading subimages will not work. */
-        m_texture->SetData(m_pixels.data());
-
-        m_shader = Shader::Create(LOLFX_RESOURCE_NAME(11_fractal));
-
-        m_vertexattrib = m_shader->GetAttribLocation(VertexUsage::Position, 0);
-        m_texattrib = m_shader->GetAttribLocation(VertexUsage::TexCoord, 0);
-        m_texuni = m_shader->GetUniformLocation("u_texture");
-        m_texeluni = m_shader->GetUniformLocation("u_texel_size");
-        m_screenuni = m_shader->GetUniformLocation("u_screen_size");
-        m_zoomuni = m_shader->GetUniformLocation("u_zoom_settings");
-
-        m_vdecl = std::make_shared<VertexDeclaration>(
-                                VertexStream<vec2>(VertexUsage::Position),
-                                VertexStream<vec2>(VertexUsage::TexCoord));
-        m_vbo = std::make_shared<VertexBuffer>(sizeof(vertices));
-        m_vbo->set_data(vertices, sizeof(vertices));
-        m_tbo = std::make_shared<VertexBuffer>(sizeof(texcoords));
-        m_tbo->set_data(texcoords, sizeof(texcoords));
-
-        return true;
-    }
-
-    virtual void tick_draw(float seconds, Scene &scene) override
-    {
-        WorldEntity::tick_draw(seconds, scene);
-
-        m_texture->Bind();
-
-        if (m_dirty[m_frame])
-        {
-            if (has_threads())
-            {
-                for (int i = 0; i < m_size.y; i += MAX_LINES * 2)
-                    m_donequeue.pop();
-            }
-
-            m_dirty[m_frame]--;
-
-            m_texture->SetSubData(ivec2(0, m_frame * m_size.y / 2),
-                                  m_size / 2,
-                                  &m_pixels[m_size.x * m_size.y / 4 * m_frame]);
-        }
-
-        m_shader->Bind();
-        m_shader->SetUniform(m_texuni, m_texture->GetTextureUniform(), 0);
-        m_shader->SetUniform(m_texeluni, m_texel_settings);
-        m_shader->SetUniform(m_screenuni, m_screen_settings);
-        m_shader->SetUniform(m_zoomuni, m_zoom_settings);
-        m_vdecl->Bind();
-        m_vdecl->SetStream(m_vbo, m_vertexattrib);
-        m_vdecl->SetStream(m_tbo, m_texattrib);
-        m_texture->Bind();
-        m_vdecl->DrawElements(MeshPrimitive::Triangles, 0, 6);
-        m_vdecl->Unbind();
-    }
-
-    virtual bool release_draw() override
-    {
-        m_shader.reset();
-        m_vdecl.reset();
-        m_vbo.reset();
-        m_tbo.reset();
-        m_texture.reset();
-        return true;
-    }
-
-private:
-    static int const MAX_ITERATIONS = 400;
-    static int const PALETTE_STEP = 32;
-    static int const MAX_THREADS = 8;
-    static int const MAX_LINES = 8;
-
-    // 1e-14 for doubles, 1e-17 for long doubles
-    static double constexpr MAX_ZOOM = 1e-17;
-
-    ivec2 m_size, m_window_size, m_oldmouse;
-    double m_window2world;
-    dvec2 m_texel2world;
-    array<u8vec4> m_pixels, m_palette;
-
-    std::shared_ptr<Shader> m_shader;
-    ShaderAttrib m_vertexattrib, m_texattrib;
-    ShaderUniform m_texuni, m_texeluni, m_screenuni, m_zoomuni;
-
-    std::shared_ptr<VertexDeclaration> m_vdecl;
-    std::shared_ptr<VertexBuffer> m_vbo, m_tbo;
-    std::shared_ptr<Texture> m_texture;
-
-    int m_frame = -1, m_slices = 4, m_dirty[4];
-    bool m_drag = false;
-
-    struct view_settings
-    {
-        rcmplx center, translate, r0;
-        double radius;
-    };
-
-    view_settings m_view, m_saved_view;
-
-    rcmplx m_deltashift[4];
-    real m_deltascale[4];
-    double m_zoom_speed;
-    bool m_julia = false;
-
-    vec4 m_texel_settings, m_screen_settings;
-    mat4 m_zoom_settings;
-
-    // Worker threads
-    thread *m_threads[MAX_THREADS];
-    queue<int> m_spawnqueue, m_jobqueue, m_donequeue;
-
-    // Debug information
-    Text *m_centertext, *m_mousetext, *m_zoomtext;
-};
-
-int main(int argc, char **argv)
-{
-    ivec2 window_size(640, 480);
-
-    sys::init(argc, argv);
-    Application app("Tutorial 11: Fractal", window_size, 60.0f);
-
-    new DebugFps(5, 5);
-    new Fractal(window_size);
-    //new DebugRecord("fractalol.ogm", 60.0f);
-
-    app.Run();
-
-    return EXIT_SUCCESS;
-}
-
diff --git a/doc/tutorial/11_fractal.lolfx b/doc/tutorial/11_fractal.lolfx
deleted file mode 100644
index f707109b..00000000
--- a/doc/tutorial/11_fractal.lolfx
+++ /dev/null
@@ -1,129 +0,0 @@
-[vert.glsl]
-
-#version 130
-
-uniform mat4 u_zoom_settings;
-uniform vec4 u_texel_size;
-uniform vec4 u_screen_size;
-
-attribute vec2 in_TexCoord;
-attribute vec2 in_Position;
-
-out vec4 v_center_x, v_center_y, v_index_x, v_index_y;
-
-void main(void)
-{
-    gl_Position = vec4(in_Position, 0.0, 1.0);
-    /* Center point in [-.5,.5], apply zoom and translation
-     * transformation, and go back to texture coordinates
-     * in [0,1]. That's the ideal point we would like to
-     * compute the value for. Then add or remove half the
-     * size of a texel: the distance from this new point to
-     * the final point will be our error. */
-    vec4 offsets = vec4(0.5, -0.5, 0.015625, -0.015625);
-    vec4 zoomscale = vec4(u_zoom_settings[0][2],
-                          u_zoom_settings[1][2],
-                          u_zoom_settings[2][2],
-                          u_zoom_settings[3][2]);
-    vec4 zoomtx = vec4(u_zoom_settings[0][0],
-                       u_zoom_settings[1][0],
-                       u_zoom_settings[2][0],
-                       u_zoom_settings[3][0]);
-    vec4 zoomty = vec4(u_zoom_settings[0][1],
-                       u_zoom_settings[1][1],
-                       u_zoom_settings[2][1],
-                       u_zoom_settings[3][1]);
-    v_center_x = zoomscale * in_TexCoord.x + zoomtx
-              + offsets.xyxy * u_texel_size.x;
-    v_center_y = zoomscale * in_TexCoord.y - zoomty
-              + offsets.xyyx * u_texel_size.y;
-    /* Precompute the multiple of one texel where our ideal
-     * point lies. The fragment shader will call floor() on
-     * this value. We add or remove a slight offset to avoid
-     * rounding issues at the image's edges. */
-    v_index_x = v_center_x * u_screen_size.z - offsets.zwzw;
-    v_index_y = v_center_y * u_screen_size.w - offsets.zwwz;
-}
-
-[frag.glsl]
-
-#version 130
-
-#if defined GL_ES
-precision highp float;
-#endif
-
-uniform vec4 u_texel_size;
-uniform sampler2D u_texture;
-
-in vec4 v_center_x, v_center_y, v_index_x, v_index_y;
-
-void main(void)
-{
-    vec4 v05 = vec4(0.5, 0.5, 0.5, 0.5);
-    vec4 rx, ry, t0, dx, dy, dd;
-    /* Get a pixel coordinate from each slice into rx & ry */
-    rx = u_texel_size.x + u_texel_size.z * floor(v_index_x);
-    ry = u_texel_size.y + u_texel_size.w * floor(v_index_y);
-    /* Compute inverse distance to expected pixel in dd,
-     * and put zero if we fall outside the texture. */
-    t0 = step(abs(rx - v05), v05) * step(abs(ry - v05), v05);
-    dx = rx - v_center_x;
-    dy = ry - v_center_y;
-#if 0
-    vec4 dd = t0 * (abs(dx) + abs(dy));
-    vec4 dd = t0 / (0.001 + sqrt((dx * dx) + (dy * dy)));
-#endif
-    dd = t0 / (0.000001 + (dx * dx) + (dy * dy));
-    /* Modify Y coordinate to select proper quarter. */
-    ry = ry * 0.25 + vec4(0.0, 0.25, 0.5, 0.75);
-
-#if 1
-#   if 0
-    /* XXX: disabled until we can autodetect i915 */
-    /* t1.x <-- dd.x > dd.y */
-    /* t1.y <-- dd.z > dd.w */
-    vec2 t1 = step(dd.xz, dd.yw);
-    /* ret.x <-- max(rx.x, rx.y) wrt. t1.x */
-    /* ret.y <-- max(rx.z, rx.w) wrt. t1.y */
-    /* ret.z <-- max(ry.x, ry.y) wrt. t1.x */
-    /* ret.w <-- max(ry.z, ry.w) wrt. t1.y */
-    vec4 ret = mix(vec4(rx.xz, ry.xz),
-                   vec4(rx.yw, ry.yw), t1.xyxy);
-    /* dd.x <-- max(dd.x, dd.y) */
-    /* dd.z <-- max(dd.z, dd.w) */
-    dd.xy = mix(dd.xz, dd.yw, t1);
-    /* t2 <-- dd.x > dd.z */
-    float t2 = step(dd.x, dd.y);
-    /* ret.x <-- max(ret.x, ret.y); */
-    /* ret.y <-- max(ret.z, ret.w); */
-    ret.xy = mix(ret.xz, ret.yw, t2);
-#   else
-    /* Fallback for i915 cards -- the trick to reduce the
-     * number of operations is to compute both step(a,b)
-     * and step(b,a) and hope that their sum is 1. This is
-     * almost always the case, and when it isn't we can
-     * afford to have a few wrong pixels. However, a real
-     * problem is when panning the image, because half the
-     * screen is likely to flicker. To avoid this problem,
-     * we cheat a little (see m_translate comment above). */
-    vec4 t1 = step(dd.xzyw, dd.ywxz);
-    vec4 ret = vec4(rx.xz, ry.xz) * t1.zwzw
-             + vec4(rx.yw, ry.yw) * t1.xyxy;
-    dd.xy = dd.xz * t1.zw + dd.yw * t1.xy;
-    vec2 t2 = step(dd.xy, dd.yx);
-    ret.xy = ret.xz * t2.yy + ret.yw * t2.xx;
-#   endif
-    /* Nearest neighbour */
-    gl_FragColor = texture2D(u_texture, ret.xy);
-#else
-    /* Alternate version: some kind of linear interpolation */
-    vec4 p0 = texture2D(u_texture, vec2(rx.x, ry.x));
-    vec4 p1 = texture2D(u_texture, vec2(rx.y, ry.y));
-    vec4 p2 = texture2D(u_texture, vec2(rx.z, ry.z));
-    vec4 p3 = texture2D(u_texture, vec2(rx.w, ry.w));
-    gl_FragColor = 1.0 / (dd.x + dd.y + dd.z + dd.w)
-                 * (dd.x * p0 + dd.y * p1 + dd.z * p2 + dd.w * p3);
-#endif
-}
-
diff --git a/doc/tutorial/11_fractal.vcxproj b/doc/tutorial/11_fractal.vcxproj
deleted file mode 100644
index 53184da0..00000000
--- a/doc/tutorial/11_fractal.vcxproj
+++ /dev/null
@@ -1,69 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <PropertyGroup Label="LolMacros">
-    <LolDir Condition="Exists('$(SolutionDir)\lol')">$(SolutionDir)\lol</LolDir>
-    <LolDir Condition="!Exists('$(SolutionDir)\lol')">$(SolutionDir)</LolDir>
-  </PropertyGroup>
-  <ItemGroup Label="ProjectConfigurations">
-    <ProjectConfiguration Include="Debug|NX64">
-      <Configuration>Debug</Configuration>
-      <Platform>NX64</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Debug|ORBIS">
-      <Configuration>Debug</Configuration>
-      <Platform>ORBIS</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Debug|Win32">
-      <Configuration>Debug</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Debug|x64">
-      <Configuration>Debug</Configuration>
-      <Platform>x64</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Release|NX64">
-      <Configuration>Release</Configuration>
-      <Platform>NX64</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Release|ORBIS">
-      <Configuration>Release</Configuration>
-      <Platform>ORBIS</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Release|Win32">
-      <Configuration>Release</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Release|x64">
-      <Configuration>Release</Configuration>
-      <Platform>x64</Platform>
-    </ProjectConfiguration>
-  </ItemGroup>
-  <ItemGroup>
-    <ClCompile Include="11_fractal.cpp" />
-  </ItemGroup>
-  <ItemGroup>
-    <LolFxCompile Include="11_fractal.lolfx" />
-  </ItemGroup>
-  <Import Project="$(LolDir)\build\msbuild\lol-core.props" />
-  <Import Project="$(LolDir)\build\msbuild\lol-bullet.props" />
-  <PropertyGroup Label="Globals">
-    <ProjectGuid>{6bf81b39-edc2-4227-9992-c2d8abea95af}</ProjectGuid>
-    <ConfigurationType>Application</ConfigurationType>
-    <Keyword>Win32Proj</Keyword>
-  </PropertyGroup>
-  <Import Project="$(LolDir)\build\msbuild\lol.config.props" />
-  <ImportGroup Label="ExtensionSettings">
-    <Import Project="$(LolDir)\build\msbuild\lolfx.props" />
-  </ImportGroup>
-  <ImportGroup Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(LolDir)\build\msbuild\lol.vars.props" />
-  </ImportGroup>
-  <PropertyGroup Label="UserMacros" />
-  <Import Project="$(LolDir)\build\msbuild\lol.rules.props" />
-  <ItemDefinitionGroup />
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
-  <ImportGroup Label="ExtensionTargets">
-    <Import Project="$(LolDir)\build\msbuild\lolfx.targets" />
-  </ImportGroup>
-</Project>
\ No newline at end of file
diff --git a/doc/tutorial/12_distance.lolfx b/doc/tutorial/12_distance.lolfx
deleted file mode 100644
index 6138bb58..00000000
--- a/doc/tutorial/12_distance.lolfx
+++ /dev/null
@@ -1,52 +0,0 @@
-[vert.glsl]
-
-#version 130
-
-in vec2 in_position;
-
-out vec2 pass_position;
-
-void main()
-{
-    pass_position = in_position;
-    gl_Position = vec4(in_position, 0.0, 1.0);
-}
-
-[frag.glsl]
-
-#version 130
-
-#if defined GL_ES
-precision highp float;
-#endif
-
-in vec2 pass_position;
-
-uniform sampler2D u_texture;
-uniform float u_flag;
-uniform vec3 u_point;
-uniform vec3 u_color;
-
-void main(void)
-{
-    if (u_flag == 0.0)
-    {
-        float tc = 0.0, ta = 0.0;
-        {
-            float s = 3.0 + 2.0 * u_point.z;
-            vec2 p = pass_position - u_point.xy * 0.9;
-            float t = clamp(1.2 - dot(s * p, s * p), 0.0, 1.0);
-            float u = t * t * t * t;
-            tc += 3.0 * t * t - 2.0 * t * t * t;
-            ta += 3.0 * u * u - 2.0 * u * u * u;
-        }
-
-        gl_FragColor = vec4(tc * u_color, ta + 0.1);
-    }
-    else
-    {
-        vec2 texcoords = pass_position * 0.5 + vec2(0.5, 0.5);
-        gl_FragColor = vec4(texture2D(u_texture, texcoords).xyz, 1.0);
-    }
-}
-
diff --git a/doc/tutorial/12_texture_to_screen.lolfx b/doc/tutorial/12_texture_to_screen.lolfx
deleted file mode 100644
index 117683bf..00000000
--- a/doc/tutorial/12_texture_to_screen.lolfx
+++ /dev/null
@@ -1,44 +0,0 @@
-[vert.glsl]
-
-#version 130
-
-in vec2 in_position;
-
-out vec2 pass_position;
-
-void main()
-{
-    pass_position = in_position;
-    gl_Position = vec4(in_position, 0.0, 1.0);
-}
-
-[frag.glsl]
-
-#version 130
-
-#if defined GL_ES
-precision highp float;
-#endif
-
-in vec2 pass_position;
-
-uniform sampler2D u_texture;
-
-vec3 rand_color(float t)
-{
-    return vec3(0.5 + 0.5 * sin(t * 19.0 + 17.0),
-                0.5 + 0.5 * sin(t * 24.0 + 23.0),
-                0.5 + 0.5 * sin(t * 37.0 + 12.0));
-}
-
-void main(void)
-{
-    vec2 texcoords = pass_position * 0.5 + vec2(0.5, 0.5);
-    vec4 src_color = texture2D(u_texture, texcoords);
-    float newg = src_color.z;
-    float newb = 0.0;
-    if (newg > 0.0)
-        newb = 1.0;
-    gl_FragColor = vec4(rand_color(newg), 1.0);
-}
-
diff --git a/doc/tutorial/12_voronoi.cpp b/doc/tutorial/12_voronoi.cpp
deleted file mode 100644
index a474ec63..00000000
--- a/doc/tutorial/12_voronoi.cpp
+++ /dev/null
@@ -1,393 +0,0 @@
-//
-//  Lol Engine — Voronoi diagram tutorial
-//
-//  Copyright © 2015—2019 Sam Hocevar <sam@hocevar.net>
-//            © 2011—2015 Benjamin “Touky” Huet <huet.benjamin@gmail.com>
-//
-//  Lol Engine is free software. It comes without any warranty, to
-//  the extent permitted by applicable law. You can redistribute it
-//  and/or modify it under the terms of the Do What the Fuck You Want
-//  to Public License, Version 2, as published by the WTFPL Task Force.
-//  See http://www.wtfpl.net/ for more details.
-//
-
-#if HAVE_CONFIG_H
-#   include "config.h"
-#endif
-
-#include <memory>
-
-#include <lol/engine.h>
-#include "loldebug.h"
-
-using namespace lol;
-
-LOLFX_RESOURCE_DECLARE(12_voronoi);
-LOLFX_RESOURCE_DECLARE(12_voronoi_setup);
-LOLFX_RESOURCE_DECLARE(12_voronoi_distance);
-LOLFX_RESOURCE_DECLARE(12_distance);
-LOLFX_RESOURCE_DECLARE(12_texture_to_screen);
-
-enum FboType
-{
-    SrcVoronoiFbo,
-    VoronoiFbo,
-    DistanceVoronoiFbo,
-    DistanceFbo,
-
-    MaxFboType
-};
-
-class Voronoi : public WorldEntity
-{
-public:
-    Voronoi()
-    {
-        m_vertices << vec2( 1.0,  1.0);
-        m_vertices << vec2(-1.0, -1.0);
-        m_vertices << vec2( 1.0, -1.0);
-        m_vertices << vec2(-1.0, -1.0);
-        m_vertices << vec2( 1.0,  1.0);
-        m_vertices << vec2(-1.0,  1.0);
-        m_ready = false;
-        m_cur_fbo = 0;
-        m_time = .0f;
-        m_timer = -1.0f;
-        mode = 0;
-    }
-
-    virtual void tick_game(float seconds)
-    {
-        WorldEntity::tick_game(seconds);
-
-        auto keyboard = input::keyboard();
-
-        // Shutdown logic
-        if (keyboard->key_released(input::key::SC_Escape))
-            Ticker::Shutdown();
-
-        m_time += seconds;
-        m_hotspot = 0.4f * vec3((float)lol::sin(m_time * 4.0) + (float)lol::cos(m_time * 5.3),
-                                (float)lol::sin(m_time * 5.7) + (float)lol::cos(m_time * 4.4),
-                                (float)lol::sin(m_time * 5.0));
-        m_color = 0.25f * vec3(1.1f + (float)lol::sin(m_time * 2.5 + 1.0),
-                               1.1f + (float)lol::sin(m_time * 2.8 + 1.3),
-                               1.1f + (float)lol::sin(m_time * 2.7));
-        /* Saturate dot color */
-        float x = std::max(m_color.x, std::max(m_color.y, m_color.z));
-        m_color /= x;
-    }
-
-    virtual void tick_draw(float seconds, Scene &scene)
-    {
-        WorldEntity::tick_draw(seconds, scene);
-
-        if (!m_ready)
-        {
-            m_vdecl = std::make_shared<VertexDeclaration>(VertexStream<vec2>(VertexUsage::Position));
-
-            m_vbo = std::make_shared<VertexBuffer>(m_vertices.bytes());
-            m_vbo->set_data(m_vertices.data(), m_vertices.bytes());
-
-            m_screen_shader = Shader::Create(LOLFX_RESOURCE_NAME(12_texture_to_screen));
-            m_screen_coord = m_screen_shader->GetAttribLocation(VertexUsage::Position, 0);
-            m_screen_texture = m_screen_shader->GetUniformLocation("u_texture");
-
-            for (int i = 0; i < MaxFboType; ++i)
-            {
-                m_fbos.push(std::make_shared<Framebuffer>(Video::GetSize()), 0, array<ShaderUniform>(), array<ShaderAttrib>() );
-
-                if (i == SrcVoronoiFbo)
-                {
-                    m_fbos[i].m2 = Shader::Create(LOLFX_RESOURCE_NAME(12_voronoi_setup));
-                    m_fbos[i].m3 << m_fbos[i].m2->GetUniformLocation("u_texture");
-                    m_fbos[i].m3 << m_fbos[i].m2->GetUniformLocation("u_source_point");
-                    m_fbos[i].m3 << m_fbos[i].m2->GetUniformLocation("u_screen_res");
-                    m_fbos[i].m4 << m_fbos[i].m2->GetAttribLocation(VertexUsage::Position, 0);
-                }
-                else if (i == VoronoiFbo)
-                {
-                    m_fbos[i].m2 = Shader::Create(LOLFX_RESOURCE_NAME(12_voronoi));
-                    m_fbos[i].m3 << m_fbos[i].m2->GetUniformLocation("u_texture");
-                    m_fbos[i].m3 << m_fbos[i].m2->GetUniformLocation("u_step");
-                    m_fbos[i].m3 << m_fbos[i].m2->GetUniformLocation("u_screen_res");
-                    m_fbos[i].m4 << m_fbos[i].m2->GetAttribLocation(VertexUsage::Position, 0);
-                }
-                else if (i == DistanceVoronoiFbo)
-                {
-                    m_fbos[i].m2 = Shader::Create(LOLFX_RESOURCE_NAME(12_voronoi_distance));
-                }
-                else if (i == DistanceFbo)
-                {
-                    m_fbos[i].m2 = Shader::Create(LOLFX_RESOURCE_NAME(12_distance));
-                }
-
-                m_fbos.last().m1->Bind();
-                {
-                    render_context rc(scene.get_renderer());
-                    rc.clear_color(vec4(0.f, 0.f, 0.f, 1.f));
-                    rc.clear_depth(1.f);
-                    scene.get_renderer()->clear(ClearMask::Color | ClearMask::Depth);
-                }
-                m_fbos.last().m1->Unbind();
-            }
-
-            temp_buffer = std::make_shared<Framebuffer>(Video::GetSize());
-            temp_buffer->Bind();
-            {
-                render_context rc(scene.get_renderer());
-                rc.clear_color(vec4(0.f, 0.f, 0.f, 1.f));
-                rc.clear_depth(1.f);
-                scene.get_renderer()->clear(ClearMask::Color | ClearMask::Depth);
-            }
-            temp_buffer->Unbind();
-
-            m_ready = true;
-            /* FIXME: this object never cleans up */
-
-            //SRC SETUP
-            m_cur_fbo = VoronoiFbo;
-        }
-
-        auto keyboard = input::keyboard();
-
-        if (keyboard->key_released(input::key::SC_O))
-            voronoi_points.pop();
-        else if (keyboard->key_released(input::key::SC_P))
-            voronoi_points.push(vec3(rand<float>(512.f), rand<float>(512.f), .0f),
-                    vec2(64.f + rand<float>(64.f), 64.f + rand<float>(64.f)));
-        else if (keyboard->key_released(input::key::SC_F1))
-            m_cur_fbo = SrcVoronoiFbo;
-        else if (keyboard->key_released(input::key::SC_F2))
-            m_cur_fbo = VoronoiFbo;
-        else if (keyboard->key_released(input::key::SC_F3))
-        {
-            voronoi_points.clear();
-            if (mode == 0)
-            {
-                int i = 4;
-                while (i-- > 0)
-                    voronoi_points.push(vec3(rand<float>(512.f), rand<float>(512.f), .0f),
-                                        vec2(64.f + rand<float>(64.f), 64.f + rand<float>(64.f))
-                                        //vec2::zero
-                                        );
-                mode = 1;
-            }
-            else
-            {
-                mode = 0;
-            }
-        }
-
-        if (mode == 0)
-        {
-            voronoi_points.clear();
-            int maxi = 6;
-            for (int i = 0; i < maxi; ++i)
-            {
-                float mi = (float)maxi;
-                float j = (float)i;
-                float f_time = (float)m_time;
-                voronoi_points.push(vec3(256.f) + 196.f * vec3(lol::cos( f_time + j * 2.f * F_PI / mi), lol::sin( f_time + j * 2.f * F_PI / mi), .0f), vec2(.0f));
-                voronoi_points.push(vec3(256.f) + 128.f * vec3(lol::cos(-f_time + j * 2.f * F_PI / mi), lol::sin(-f_time + j * 2.f * F_PI / mi), .0f), vec2(.0f));
-                voronoi_points.push(vec3(256.f) +  64.f * vec3(lol::cos( f_time + j * 2.f * F_PI / mi), lol::sin( f_time + j * 2.f * F_PI / mi), .0f), vec2(.0f));
-                voronoi_points.push(vec3(256.f) +  32.f * vec3(lol::cos(-f_time + j * 2.f * F_PI / mi), lol::sin(-f_time + j * 2.f * F_PI / mi), .0f), vec2(.0f));
-            }
-            voronoi_points.push(vec3(256.f), vec2(0.f));
-        }
-
-        temp_buffer->Bind();
-        {
-            render_context rc(scene.get_renderer());
-            rc.clear_color(vec4(0.f, 0.f, 0.f, 1.f));
-            rc.clear_depth(1.f);
-            scene.get_renderer()->clear(ClearMask::Color | ClearMask::Depth);
-        }
-        temp_buffer->Unbind();
-
-        {
-            vec2 limit(1.f, 511.f);
-            //SRC SETUP
-            for (int j = 0; j < voronoi_points.count(); ++j)
-            {
-                voronoi_points[j].m1 = vec3(voronoi_points[j].m1.xy + voronoi_points[j].m2 * seconds, voronoi_points[j].m1.z);
-                if (voronoi_points[j].m1.x >= limit.y || voronoi_points[j].m1.x <= limit.x)
-                {
-                    voronoi_points[j].m2.x *= -1.f;
-                    voronoi_points[j].m1.x = clamp(voronoi_points[j].m1.x, limit.x, limit.y);
-                }
-                if (voronoi_points[j].m1.y >= limit.y || voronoi_points[j].m1.y <= limit.x)
-                {
-                    voronoi_points[j].m2.y *= -1.f;
-                    voronoi_points[j].m1.y = clamp(voronoi_points[j].m1.y, limit.x, limit.y);
-                }
-                voronoi_points[j].m1.z = ((float)j + 1) / ((float)voronoi_points.count());
-            }
-
-            int f = SrcVoronoiFbo;
-
-            m_fbos[f].m1->Bind();
-            {
-                render_context rc(scene.get_renderer());
-                rc.clear_color(vec4(0.f, 0.f, 0.f, 1.f));
-                rc.clear_depth(1.f);
-                scene.get_renderer()->clear(ClearMask::Color | ClearMask::Depth);
-            }
-            m_fbos[f].m1->Unbind();
-
-            int buf = voronoi_points.count() % 2;
-            for (int j = 0; j < voronoi_points.count(); ++j)
-            {
-                std::shared_ptr<Framebuffer> dst_buf, src_buf;
-
-                if (buf)
-                {
-                    dst_buf = m_fbos[f].m1;
-                    src_buf = temp_buffer;
-                }
-                else
-                {
-                    src_buf = m_fbos[f].m1;
-                    dst_buf = temp_buffer;
-                }
-
-                dst_buf->Bind();
-                /* FIXME: we should just disable depth test in the shader */
-                scene.get_renderer()->clear(ClearMask::Depth);
-                m_fbos[f].m2->Bind();
-
-                int i = 0;
-                m_fbos[f].m2->SetUniform(m_fbos[f].m3[i++], src_buf->GetTextureUniform(), 0); //"u_texture"
-                m_fbos[f].m2->SetUniform(m_fbos[f].m3[i++], voronoi_points[j].m1); //"u_source_point"
-                m_fbos[f].m2->SetUniform(m_fbos[f].m3[i++], vec2(512.f, 512.f)); //"u_screen_res"
-
-                m_vdecl->Bind();
-                m_vdecl->SetStream(m_vbo, m_fbos[f].m4.last());
-                m_vdecl->DrawElements(MeshPrimitive::Triangles, 0, 6);
-                m_vdecl->Unbind();
-                m_fbos[f].m2->Unbind();
-                dst_buf->Unbind();
-
-                buf = 1 - buf;
-            }
-        }
-
-        scene.get_renderer()->clear(ClearMask::Color | ClearMask::Depth);
-
-        //FRAME BUFFER DRAW
-        m_timer -= seconds;
-        if (m_timer < .0f && m_cur_fbo != SrcVoronoiFbo)
-        {
-            //m_timer = 1.0f;
-            m_fbos[m_cur_fbo].m1->Bind();
-            {
-                render_context rc(scene.get_renderer());
-                rc.clear_color(vec4(0.f, 0.f, 0.f, 1.f));
-                rc.clear_depth(1.f);
-                scene.get_renderer()->clear(ClearMask::Color | ClearMask::Depth);
-            }
-            m_fbos[m_cur_fbo].m1->Unbind();
-
-            ivec2 curres = ivec2(512, 512) / 2;
-            int buf = 0;
-            while (1)
-            {
-                std::shared_ptr<Framebuffer> dst_buf, src_buf;
-                std::shared_ptr<Shader> shader;
-
-                if (curres == ivec2::zero)
-                    shader = m_screen_shader;
-                else
-                    shader = m_fbos[m_cur_fbo].m2;
-
-                if (curres.x == 256)
-                    src_buf = m_fbos[SrcVoronoiFbo].m1;
-                else if (buf)
-                    src_buf = m_fbos[m_cur_fbo].m1;
-                else
-                    src_buf = temp_buffer;
-
-                if (buf)
-                    dst_buf = temp_buffer;
-                else
-                    dst_buf = m_fbos[m_cur_fbo].m1;
-
-                dst_buf->Bind();
-                /* FIXME: we should just disable depth test in the shader */
-                scene.get_renderer()->clear(ClearMask::Depth);
-                shader->Bind();
-
-                int i = 0;
-                if (curres == ivec2::zero)
-                    m_screen_shader->SetUniform(m_screen_texture, src_buf->GetTextureUniform(), 0);
-                else if (m_cur_fbo == VoronoiFbo)
-                {
-                    shader->SetUniform(m_fbos[m_cur_fbo].m3[i++], src_buf->GetTextureUniform(), 0); //"u_texture"
-                    shader->SetUniform(m_fbos[m_cur_fbo].m3[i++], ((float)curres.x) / 512.f); //"u_step"
-                    shader->SetUniform(m_fbos[m_cur_fbo].m3[i++], vec2(512.f, 512.f)); //"u_screen_res"
-                }
-
-                m_vdecl->Bind();
-                m_vdecl->SetStream(m_vbo, m_fbos[m_cur_fbo].m4.last());
-                m_vdecl->DrawElements(MeshPrimitive::Triangles, 0, 6);
-                m_vdecl->Unbind();
-                m_fbos[m_cur_fbo].m2->Unbind();
-                dst_buf->Unbind();
-
-                if (curres == ivec2::zero)
-                    break;
-                if (curres == ivec2(1))
-                {
-                    if (buf == 1)
-                        curres = ivec2::zero;
-                    else
-                        break;
-                }
-                buf = 1 - buf;
-                curres /= 2;
-            }
-        }
-
-        //SCREEN DRAW
-        m_screen_shader->Bind();
-        m_screen_shader->SetUniform(m_screen_texture, m_fbos[m_cur_fbo].m1->GetTextureUniform(), 0);
-        m_vdecl->Bind();
-        m_vdecl->SetStream(m_vbo, m_screen_coord);
-        m_vdecl->DrawElements(MeshPrimitive::Triangles, 0, 6);
-        m_vdecl->Unbind();
-        m_screen_shader->Unbind();
-    }
-
-private:
-    array<vec3, vec2> voronoi_points;
-    array<vec2> m_vertices;
-    std::shared_ptr<Shader> m_screen_shader;
-    ShaderAttrib m_screen_coord;
-    ShaderUniform m_screen_texture;
-
-    std::shared_ptr<VertexDeclaration> m_vdecl;
-    std::shared_ptr<VertexBuffer> m_vbo;
-
-    array<std::shared_ptr<Framebuffer>, std::shared_ptr<Shader>, array<ShaderUniform>, array<ShaderAttrib> > m_fbos;
-    std::shared_ptr<Framebuffer> temp_buffer;
-
-    int mode;
-    int m_cur_fbo;
-    double m_time;
-    vec3 m_hotspot, m_color;
-    bool m_ready;
-    float m_timer;
-};
-
-int main(int argc, char **argv)
-{
-    sys::init(argc, argv);
-
-    Application app("Tutorial 12: Jump Flooding Algorithm & Voronoi", ivec2(512, 512), 60.0f);
-
-    new Voronoi();
-
-    app.Run();
-    return EXIT_SUCCESS;
-}
-
diff --git a/doc/tutorial/12_voronoi.lolfx b/doc/tutorial/12_voronoi.lolfx
deleted file mode 100644
index 059402d0..00000000
--- a/doc/tutorial/12_voronoi.lolfx
+++ /dev/null
@@ -1,66 +0,0 @@
-
-[vert.glsl]
-
-#version 130
-
-in vec2 in_position;
-
-uniform vec2 u_screen_res;
-uniform float u_step;
-
-out vec2 pass_pos;
-out vec2 pass_p[8];
-
-void main()
-{
-    //JFA ALGO
-    pass_pos = ((vec2(1.0) + in_position) * 0.5);
-
-    float k = u_step;
-
-    vec2 p2 = pass_pos;
-    pass_p[0] = p2 + vec2(-k, -k);
-    pass_p[1] = p2 + vec2( 0, -k);
-    pass_p[2] = p2 + vec2( k, -k);
-    pass_p[3] = p2 + vec2(-k,  0);
-    pass_p[4] = p2 + vec2( k,  0);
-    pass_p[5] = p2 + vec2(-k,  k);
-    pass_p[6] = p2 + vec2( 0,  k);
-    pass_p[7] = p2 + vec2( k,  k);
-
-    gl_Position = vec4(in_position, 0.0, 1.0);
-}
-
-[frag.glsl]
-
-#version 130
-
-#if defined GL_ES
-precision highp float;
-#endif
-
-in vec2 pass_pos;
-in vec2 pass_p[8];
-
-uniform sampler2D u_texture;
-
-void main(void)
-{
-    vec4 src_color = texture2D(u_texture, pass_pos);
-    vec4 neigh_color;
-
-    for (int i = 0; i < 8; ++i)
-    {
-        neigh_color = texture2D(u_texture, pass_p[i]);
-
-        if (neigh_color.z > 0.0 && src_color.z == 0.0)
-            src_color = neigh_color;
-        else if (neigh_color.z > 0.0 && src_color.z > 0.0 &&
-                 length(neigh_color.xy - pass_pos) < length(src_color.xy - pass_pos))
-            src_color = neigh_color;
-
-    }
-
-    gl_FragColor = src_color;
-}
-
diff --git a/doc/tutorial/12_voronoi.vcxproj b/doc/tutorial/12_voronoi.vcxproj
deleted file mode 100644
index c4f3f693..00000000
--- a/doc/tutorial/12_voronoi.vcxproj
+++ /dev/null
@@ -1,73 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <PropertyGroup Label="LolMacros">
-    <LolDir Condition="Exists('$(SolutionDir)\lol')">$(SolutionDir)\lol</LolDir>
-    <LolDir Condition="!Exists('$(SolutionDir)\lol')">$(SolutionDir)</LolDir>
-  </PropertyGroup>
-  <ItemGroup Label="ProjectConfigurations">
-    <ProjectConfiguration Include="Debug|NX64">
-      <Configuration>Debug</Configuration>
-      <Platform>NX64</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Debug|ORBIS">
-      <Configuration>Debug</Configuration>
-      <Platform>ORBIS</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Debug|Win32">
-      <Configuration>Debug</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Debug|x64">
-      <Configuration>Debug</Configuration>
-      <Platform>x64</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Release|NX64">
-      <Configuration>Release</Configuration>
-      <Platform>NX64</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Release|ORBIS">
-      <Configuration>Release</Configuration>
-      <Platform>ORBIS</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Release|Win32">
-      <Configuration>Release</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Release|x64">
-      <Configuration>Release</Configuration>
-      <Platform>x64</Platform>
-    </ProjectConfiguration>
-  </ItemGroup>
-  <ItemGroup>
-    <ClCompile Include="12_voronoi.cpp" />
-  </ItemGroup>
-  <ItemGroup>
-    <LolFxCompile Include="12_texture_to_screen.lolfx" />
-    <LolFxCompile Include="12_voronoi.lolfx" />
-    <LolFxCompile Include="12_voronoi_setup.lolfx" />
-    <LolFxCompile Include="12_voronoi_distance.lolfx" />
-    <LolFxCompile Include="12_distance.lolfx" />
-  </ItemGroup>
-  <Import Project="$(LolDir)\build\msbuild\lol-core.props" />
-  <Import Project="$(LolDir)\build\msbuild\lol-bullet.props" />
-  <PropertyGroup Label="Globals">
-    <ProjectGuid>{6bf81b39-edc2-4227-9982-c2d8abea95af}</ProjectGuid>
-    <ConfigurationType>Application</ConfigurationType>
-    <Keyword>Win32Proj</Keyword>
-  </PropertyGroup>
-  <Import Project="$(LolDir)\build\msbuild\lol.config.props" />
-  <ImportGroup Label="ExtensionSettings">
-    <Import Project="$(LolDir)\build\msbuild\lolfx.props" />
-  </ImportGroup>
-  <ImportGroup Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(LolDir)\build\msbuild\lol.vars.props" />
-  </ImportGroup>
-  <PropertyGroup Label="UserMacros" />
-  <Import Project="$(LolDir)\build\msbuild\lol.rules.props" />
-  <ItemDefinitionGroup />
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
-  <ImportGroup Label="ExtensionTargets">
-    <Import Project="$(LolDir)\build\msbuild\lolfx.targets" />
-  </ImportGroup>
-</Project>
\ No newline at end of file
diff --git a/doc/tutorial/12_voronoi_distance.lolfx b/doc/tutorial/12_voronoi_distance.lolfx
deleted file mode 100644
index 6138bb58..00000000
--- a/doc/tutorial/12_voronoi_distance.lolfx
+++ /dev/null
@@ -1,52 +0,0 @@
-[vert.glsl]
-
-#version 130
-
-in vec2 in_position;
-
-out vec2 pass_position;
-
-void main()
-{
-    pass_position = in_position;
-    gl_Position = vec4(in_position, 0.0, 1.0);
-}
-
-[frag.glsl]
-
-#version 130
-
-#if defined GL_ES
-precision highp float;
-#endif
-
-in vec2 pass_position;
-
-uniform sampler2D u_texture;
-uniform float u_flag;
-uniform vec3 u_point;
-uniform vec3 u_color;
-
-void main(void)
-{
-    if (u_flag == 0.0)
-    {
-        float tc = 0.0, ta = 0.0;
-        {
-            float s = 3.0 + 2.0 * u_point.z;
-            vec2 p = pass_position - u_point.xy * 0.9;
-            float t = clamp(1.2 - dot(s * p, s * p), 0.0, 1.0);
-            float u = t * t * t * t;
-            tc += 3.0 * t * t - 2.0 * t * t * t;
-            ta += 3.0 * u * u - 2.0 * u * u * u;
-        }
-
-        gl_FragColor = vec4(tc * u_color, ta + 0.1);
-    }
-    else
-    {
-        vec2 texcoords = pass_position * 0.5 + vec2(0.5, 0.5);
-        gl_FragColor = vec4(texture2D(u_texture, texcoords).xyz, 1.0);
-    }
-}
-
diff --git a/doc/tutorial/12_voronoi_setup.lolfx b/doc/tutorial/12_voronoi_setup.lolfx
deleted file mode 100644
index 86489ac1..00000000
--- a/doc/tutorial/12_voronoi_setup.lolfx
+++ /dev/null
@@ -1,43 +0,0 @@
-
-[vert.glsl]
-
-#version 130
-
-in vec2 in_position;
-
-uniform vec2 u_screen_res;
-
-out vec2 pass_position;
-
-void main()
-{
-    pass_position = ((vec2(1.0) + in_position) * 0.5 * u_screen_res);
-    gl_Position = vec4(in_position, 0.0, 1.0);
-}
-
-[frag.glsl]
-
-#version 130
-
-#if defined GL_ES
-precision highp float;
-#endif
-
-in vec2 pass_position;
-
-uniform sampler2D u_texture;
-uniform vec3 u_source_point;
-uniform vec2 u_screen_res;
-
-void main(void)
-{
-    if (floor(u_source_point.xy) == floor(pass_position))
-        gl_FragColor = vec4(u_source_point.xy / u_screen_res, u_source_point.z, 1.0);
-    else
-    {
-        vec4 src_color = texture2D(u_texture, pass_position / u_screen_res);
-        gl_FragColor = src_color;//vec4(0.0, 0.0, 0.0, 1.0);
-    }
-        //vec4(pass_position / u_screen_res, 0.0, 1.0);
-}
-
diff --git a/doc/tutorial/13_shader_builder.cpp b/doc/tutorial/13_shader_builder.cpp
deleted file mode 100644
index 036ca0ad..00000000
--- a/doc/tutorial/13_shader_builder.cpp
+++ /dev/null
@@ -1,135 +0,0 @@
-//
-//  Lol Engine — Shader builder tutorial
-//
-//  Copyright © 2002—2015 Benjamin “Touky” Huet <huet.benjamin@gmail.com>
-//            © 2012—2019 Sam Hocevar <sam@hocevar.net>
-//
-//  Lol Engine is free software. It comes without any warranty, to
-//  the extent permitted by applicable law. You can redistribute it
-//  and/or modify it under the terms of the Do What the Fuck You Want
-//  to Public License, Version 2, as published by the WTFPL Task Force.
-//  See http://www.wtfpl.net/ for more details.
-//
-
-#if HAVE_CONFIG_H
-#   include "config.h"
-#endif
-
-#include <lol/engine.h>
-#include "loldebug.h"
-
-#include <cstdio>
-#include <string>
-
-using namespace lol;
-
-class ShaderBuilderDemo : public WorldEntity
-{
-public:
-    ShaderBuilderDemo()
-    {
-    }
-
-    virtual void tick_game(float seconds)
-    {
-        WorldEntity::tick_game(seconds);
-    }
-
-    virtual void tick_draw(float seconds, Scene &scene)
-    {
-        WorldEntity::tick_draw(seconds, scene);
-
-        File file;
-        file.Open("13_shader_builder_export.txt", FileAccess::Write);
-        //file.Open("13_shader_builder_export.txt", FileAccess::Read);
-        std::string code;
-
-        ShaderBuilder builder("red_blue_green", "120");
-        ShaderBlock nothing_vertex("NothingVertex");
-        ShaderBlock red_pixel("RedPixel");
-        ShaderBlock green_pixel("GreenPixel");
-        ShaderBlock blue_pixel("BluePixel");
-
-        ShaderVar out_vertex = ShaderVar::GetShaderOut(ShaderProgram::Vertex);
-        ShaderVar out_pixel = ShaderVar::GetShaderOut(ShaderProgram::Pixel);
-
-        ShaderVar in_position = ShaderVar(ShaderVariable::Attribute, ShaderVariableType::Vec3, "position");
-        ShaderVar in_color = ShaderVar(ShaderVariable::Attribute, ShaderVariableType::Vec4, "color");
-        ShaderVar pass_color = ShaderVar(ShaderVariable::Varying, ShaderVariableType::Vec4, "color");
-
-        nothing_vertex << in_position
-                        << in_color
-                        << pass_color;
-        nothing_vertex.AddVar(out_vertex);
-        nothing_vertex.SetMainCode(
-            pass_color.tostring() + " = " + in_color.tostring() + ";\n" +
-            out_vertex.tostring() + " = vec4(" + in_position.tostring() + ", 0.f);\n"
-            );
-
-        ShaderVar ambient = ShaderVar(ShaderVariable::InOut, ShaderVariableType::Vec4, "ambient");
-
-        red_pixel.AddVar(pass_color);
-        red_pixel.AddVar(out_pixel);
-        red_pixel.AddVar(ambient);
-        red_pixel.SetMainCode(
-            out_pixel.tostring() + " = " + pass_color.tostring() + ";\n" +
-            out_pixel.tostring() + ".r = 1.0;\n"
-            "ambient = vec4(1.0);\n"
-            );
-
-        green_pixel.AddVar(pass_color);
-        green_pixel.AddVar(out_pixel);
-        green_pixel.AddVar(ambient);
-        green_pixel.SetMainCode(
-            out_pixel.tostring() + " = " + pass_color.tostring() + ";\n" +
-            out_pixel.tostring() + ".g = 1.0;\n"
-            "ambient.r = 0.0;\n"
-            );
-
-        blue_pixel.AddVar(pass_color);
-        blue_pixel.AddVar(out_pixel);
-        blue_pixel.AddVar(ambient);
-        blue_pixel.SetCustomCode(
-            "void SetAmbient(inout vec4 ambient)\n"
-            "{\n"
-            "    ambient = vec4(1.0, 1.0, 1.0, 1.0);\n"
-            "}\n");
-        blue_pixel.SetMainCode(
-            out_pixel.tostring() + " = " + pass_color.tostring() + ";\n" +
-            out_pixel.tostring() + ".b = 1.0;\n"
-            "SetAmbient(ambient);\n" +
-            out_pixel.tostring() + " *= ambient;\n"
-            );
-
-        builder << ShaderProgram::Vertex
-            << nothing_vertex
-            << ShaderProgram::Pixel
-            << red_pixel
-            << green_pixel
-            << blue_pixel;
-
-        code = builder.Build();
-
-        file.Write(code);
-        //code = file.ReadString();
-        file.Close();
-
-        std::shared_ptr<Shader> shader = Shader::Create(builder.GetName(), code);
-        shader = nullptr;
-
-        Ticker::Shutdown();
-    }
-};
-
-int main(int argc, char **argv)
-{
-    sys::init(argc, argv);
-
-    Application app("Tutorial 13: Shader Builder", ivec2(1280, 720), 60.0f);
-
-    new ShaderBuilderDemo();
-
-    app.Run();
-    return EXIT_SUCCESS;
-}
-
diff --git a/doc/tutorial/13_shader_builder.vcxproj b/doc/tutorial/13_shader_builder.vcxproj
deleted file mode 100644
index bbc595c4..00000000
--- a/doc/tutorial/13_shader_builder.vcxproj
+++ /dev/null
@@ -1,66 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <PropertyGroup Label="LolMacros">
-    <LolDir Condition="Exists('$(SolutionDir)\lol')">$(SolutionDir)\lol</LolDir>
-    <LolDir Condition="!Exists('$(SolutionDir)\lol')">$(SolutionDir)</LolDir>
-  </PropertyGroup>
-  <ItemGroup Label="ProjectConfigurations">
-    <ProjectConfiguration Include="Debug|NX64">
-      <Configuration>Debug</Configuration>
-      <Platform>NX64</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Debug|ORBIS">
-      <Configuration>Debug</Configuration>
-      <Platform>ORBIS</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Debug|Win32">
-      <Configuration>Debug</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Debug|x64">
-      <Configuration>Debug</Configuration>
-      <Platform>x64</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Release|NX64">
-      <Configuration>Release</Configuration>
-      <Platform>NX64</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Release|ORBIS">
-      <Configuration>Release</Configuration>
-      <Platform>ORBIS</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Release|Win32">
-      <Configuration>Release</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Release|x64">
-      <Configuration>Release</Configuration>
-      <Platform>x64</Platform>
-    </ProjectConfiguration>
-  </ItemGroup>
-  <Import Project="$(LolDir)\build\msbuild\lol-core.props" />
-  <Import Project="$(LolDir)\build\msbuild\lol-bullet.props" />
-  <ItemGroup>
-    <ClCompile Include="13_shader_builder.cpp" />
-  </ItemGroup>
-  <PropertyGroup Label="Globals">
-    <ProjectGuid>{F59FA82C-DDB9-4EE2-80AE-CB0E4C6567A4}</ProjectGuid>
-    <ConfigurationType>Application</ConfigurationType>
-    <Keyword>Win32Proj</Keyword>
-  </PropertyGroup>
-  <Import Project="$(LolDir)\build\msbuild\lol.config.props" />
-  <ImportGroup Label="ExtensionSettings">
-    <Import Project="$(LolDir)\build\msbuild\lolfx.props" />
-  </ImportGroup>
-  <ImportGroup Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(LolDir)\build\msbuild\lol.vars.props" />
-  </ImportGroup>
-  <PropertyGroup Label="UserMacros" />
-  <Import Project="$(LolDir)\build\msbuild\lol.rules.props" />
-  <ItemDefinitionGroup />
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
-  <ImportGroup Label="ExtensionTargets">
-    <Import Project="$(LolDir)\build\msbuild\lolfx.targets" />
-  </ImportGroup>
-</Project>
\ No newline at end of file
diff --git a/doc/tutorial/14_lua.cpp b/doc/tutorial/14_lua.cpp
deleted file mode 100644
index b6b589dd..00000000
--- a/doc/tutorial/14_lua.cpp
+++ /dev/null
@@ -1,236 +0,0 @@
-//
-//  Lol Engine — Lua tutorial
-//
-//  Copyright © 2014—2017 Benjamin “Touky” Huet <huet.benjamin@gmail.com>
-//            © 2017—2018 Sam Hocevar <sam@hocevar.net>
-//
-//  Lol Engine is free software. It comes without any warranty, to
-//  the extent permitted by applicable law. You can redistribute it
-//  and/or modify it under the terms of the Do What the Fuck You Want
-//  to Public License, Version 2, as published by the WTFPL Task Force.
-//  See http://www.wtfpl.net/ for more details.
-//
-
-#if HAVE_CONFIG_H
-#   include "config.h"
-#endif
-
-#include <lol/engine.h>
-#include <lol/lua.h>
-
-#include "loldebug.h"
-#include <cstdio>
-
-using namespace lol;
-
-//-----------------------------------------------------------------------------
-class DemoObject : public LuaObject
-{
-public:
-    DemoObject() : LuaObject() {}
-    virtual ~DemoObject() {}
-    static DemoObject* New(lua_State* l, int arg_nb)
-    {
-        UNUSED(l);
-        UNUSED(arg_nb);
-        return new DemoObject();
-    }
-
-    //-------------------------------------------------------------------------
-    static int AddFive(lua_State* l)
-    {
-        auto stack = LuaStack::Begin(l);
-        int32_t i = stack.Get<int32_t>();
-
-        i += 5;
-
-        return (stack << i).End();
-    }
-
-    LOLUA_DECLARE_RETURN_METHOD_ARGS(AddTenInstance, GetPtr<DemoObject>(), AddTenMethod, Get<float>(), Get<int32_t>(), Get<int32_t>());
-    static int _AddTenInstance(lua_State* l)
-    {
-        auto stack = LuaStack::Begin(l);
-        DemoObject* obj = stack.GetPtr<DemoObject>();
-        float f = stack.Get<float>();
-        int32_t i = stack.Get<int32_t>();
-        int32_t i2 = stack.Get<int32_t>();
-
-        f = obj->AddTenMethod(f, i, i2);
-
-        return (stack << f).End();
-    }
-
-    float AddTenMethod(float f, int32_t i, int32_t i2)
-    {
-        UNUSED(i, i2);
-        return (f + 10);
-    }
-
-    static int GetX(lua_State* l)
-    {
-        auto stack = LuaStack::Begin(l);
-        DemoObject* obj = stack.GetPtr<DemoObject>();
-        auto i = stack.Get<int32_t>();
-
-        i = obj->m_x;
-
-        return (stack << i).End();
-    }
-
-    LOLUA_DECLARE_VOID_METHOD_ARGS(SetX, GetPtr<DemoObject>(), SetXMethod, Get<int32_t>());
-    static int _SetX(lua_State* l)
-    {
-        auto stack = LuaStack::Begin(l);
-        DemoObject* obj = stack.GetPtr<DemoObject>();
-        auto i = stack.Get<int32_t>();
-
-        obj->m_x = i;
-
-        return stack.End();
-    }
-
-    void SetXMethod(int32_t i)
-    {
-        m_x = i;
-    }
-
-
-    //-------------------------------------------------------------------------
-    static const LuaObjectLibrary* GetLib()
-    {
-        static const LuaObjectLibrary lib = LuaObjectLibrary(
-            "LoluaDemo",
-            { { "AddFive", &DemoObject::AddFive } },
-            { { "AddTenInstance", &DemoObject::AddTenInstance } },
-            { { "X", &DemoObject::GetX, &DemoObject::SetX } });
-        return &lib;
-    }
-
-    int m_x = 0;
-};
-
-//-----------------------------------------------------------------------------
-static int GlobalAddString(lua_State* l)
-{
-    auto stack = LuaStack::Begin(l);
-    auto s = stack.Get<std::string>();
-
-    s += "_added";
-
-    return (stack << s).End();
-}
-
-//-----------------------------------------------------------------------------
-class LoluaDemoLoader : public LuaLoader
-{
-public:
-    LoluaDemoLoader() : LuaLoader()
-    {
-        lua_State* l = GetLuaState();
-
-        //Registering demo object
-        LuaObjectHelper::Register<DemoObject>(l);
-
-        //Registering function
-        LuaFunction add_string(l, "GlobalAddString", &GlobalAddString);
-    }
-    virtual ~LoluaDemoLoader()
-    {
-
-    }
-    void TestStuff()
-    {
-        /*
-        lua_State* l = GetLuaState();
-
-        //create property
-        lua_pushnumber(l, 5.0);
-        lua_setfield(l, -2, "x");
-
-        lua_getglobal(l, "vector");
-        int table = lua_istable(l, -1);
-        lua_getfield(l, -1, "x");
-        Lolua::Var<float> var(l, -1);
-        lua_pop(l, 2);
-        vec3 t;
-        */
-
-        //table = lua_isuserdata(l, -1);
-        //Var<T> var(m_lua_state, -1);
-        //lua_pop(m_lua_state, 1);
-        //lua_getfield (lua_State *L, int index, const char *k);
-        //return var.V();
-    }
-};
-
-//-----------------------------------------------------------------------------
-class LoluaDemo : public WorldEntity
-{
-public:
-    LoluaDemo()
-    {
-    }
-
-    virtual void tick_game(float seconds)
-    {
-        WorldEntity::tick_game(seconds);
-
-        LoluaDemoLoader* demo_loader = new LoluaDemoLoader();
-
-        //Execute script
-        demo_loader->ExecLuaFile("14_lua.lua");
-        demo_loader->TestStuff();
-
-        //Grab global test values
-        float testvalue_num = demo_loader->Get<float>("testvalue_num");
-        int32_t testvalue_int = demo_loader->Get<int32_t>("testvalue_int");
-        uint32_t testvalue_uint = demo_loader->Get<uint32_t>("testvalue_uint");
-        std::string testvalue_str = demo_loader->Get<std::string>("testvalue_str");
-
-        //Grab string modified with function
-        std::string function_return = demo_loader->Get<std::string>("function_return");
-
-        //Grab global values modified with DemoObject
-        int32_t loluademo_return = demo_loader->Get<int32_t>("loluademo_return");
-        int32_t loluademo_getx = demo_loader->Get<int32_t>("loluademo_getx");
-        float loluademo_inst_return = demo_loader->Get<float>("loluademo_inst_return");
-        DemoObject* loluademo_inst = demo_loader->GetPtr<DemoObject>("loluademo_inst");
-
-        msg::info("Lua Vars: \
-            testvalue_num: %.2f, testvalue_int: %i, testvalue_uint: %i, testvalue_str: %s.\n",
-            testvalue_num, testvalue_int, testvalue_uint, testvalue_str.c_str());
-        msg::info("Lua Vars: \
-            function_return: %s, loluademo_return: %i, loluademo_inst_return: %.2f, loluademo_getx: %i, loluademo_inst->m_x: %i.\n",
-            function_return.c_str(), loluademo_return, loluademo_inst_return, loluademo_getx, loluademo_inst->m_x);
-
-#define /***/ _LOLUA_ARG_1(a00) (float)a00
-#define /***/ _LOLUA_ARG_2(a00, a01) _LOLUA_ARG_1(a00), _LOLUA_ARG_1(a01)
-#define /***/ _LOLUA_ARG_3(a00, a01, a02) _LOLUA_ARG_1(a00), _LOLUA_ARG_2(a01, a02)
-#define /***/ _LOLUA_ARG_4(a00, a01, a02, a03) _LOLUA_ARG_1(a00), _LOLUA_ARG_3(a01, a02, a03)
-        msg::info("_LOLUA_ARG_1: %f, %f, %f, %f\n", _LOLUA_ARG_4(0, 1, 2, 3));
-
-        delete demo_loader;
-
-        Ticker::Shutdown();
-    }
-
-    virtual void tick_draw(float seconds, Scene &scene)
-    {
-        WorldEntity::tick_draw(seconds, scene);
-    }
-};
-
-//-----------------------------------------------------------------------------
-int main(int argc, char **argv)
-{
-    sys::init(argc, argv);
-
-    Application app("Tutorial 14: Lolua Demo", ivec2(800, 600), 60.0f);
-
-    new LoluaDemo();
-
-    app.Run();
-    return EXIT_SUCCESS;
-}
-
diff --git a/doc/tutorial/14_lua.lua b/doc/tutorial/14_lua.lua
deleted file mode 100644
index 0b0a0428..00000000
--- a/doc/tutorial/14_lua.lua
+++ /dev/null
@@ -1,16 +0,0 @@
--- Number
-testvalue_num = 900.0
--- Integer
-testvalue_int = -900
--- Unsigned
-testvalue_uint = 900
--- String
-testvalue_str = "900"
-
-function_return = GlobalAddString("test");
-
-loluademo_return = LoluaDemo.AddFive(1);
-loluademo_inst = LoluaDemo.New();
-loluademo_inst:SetX(10);
-loluademo_getx = loluademo_inst:GetX();
-loluademo_inst_return = loluademo_inst:AddTenInstance(2.5, 4, 6);
diff --git a/doc/tutorial/14_lua.vcxproj b/doc/tutorial/14_lua.vcxproj
deleted file mode 100644
index 09031d2b..00000000
--- a/doc/tutorial/14_lua.vcxproj
+++ /dev/null
@@ -1,72 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <PropertyGroup Label="LolMacros">
-    <LolDir Condition="Exists('$(SolutionDir)\lol')">$(SolutionDir)\lol</LolDir>
-    <LolDir Condition="!Exists('$(SolutionDir)\lol')">$(SolutionDir)</LolDir>
-  </PropertyGroup>
-  <ItemGroup Label="ProjectConfigurations">
-    <ProjectConfiguration Include="Debug|NX64">
-      <Configuration>Debug</Configuration>
-      <Platform>NX64</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Debug|ORBIS">
-      <Configuration>Debug</Configuration>
-      <Platform>ORBIS</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Debug|Win32">
-      <Configuration>Debug</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Debug|x64">
-      <Configuration>Debug</Configuration>
-      <Platform>x64</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Release|NX64">
-      <Configuration>Release</Configuration>
-      <Platform>NX64</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Release|ORBIS">
-      <Configuration>Release</Configuration>
-      <Platform>ORBIS</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Release|Win32">
-      <Configuration>Release</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Release|x64">
-      <Configuration>Release</Configuration>
-      <Platform>x64</Platform>
-    </ProjectConfiguration>
-  </ItemGroup>
-  <Import Project="$(LolDir)\build\msbuild\lol-core.props" />
-  <Import Project="$(LolDir)\build\msbuild\lol-bullet.props" />
-  <Import Project="$(LolDir)\build\msbuild\lol-lua.props" />
-  <ItemGroup>
-    <ClCompile Include="14_lua.cpp" />
-  </ItemGroup>
-  <ItemGroup>
-    <None Include="14_lua.lua">
-      <ExcludedFromBuild>true</ExcludedFromBuild>
-    </None>
-  </ItemGroup>
-  <PropertyGroup Label="Globals">
-    <ProjectGuid>{31B96262-1C41-43B9-BA38-27AA385B05DB}</ProjectGuid>
-    <ConfigurationType>Application</ConfigurationType>
-    <Keyword>Win32Proj</Keyword>
-  </PropertyGroup>
-  <Import Project="$(LolDir)\build\msbuild\lol.config.props" />
-  <ImportGroup Label="ExtensionSettings">
-    <Import Project="$(LolDir)\build\msbuild\lolfx.props" />
-  </ImportGroup>
-  <ImportGroup Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(LolDir)\build\msbuild\lol.vars.props" />
-  </ImportGroup>
-  <PropertyGroup Label="UserMacros" />
-  <Import Project="$(LolDir)\build\msbuild\lol.rules.props" />
-  <ItemDefinitionGroup />
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
-  <ImportGroup Label="ExtensionTargets">
-    <Import Project="$(LolDir)\build\msbuild\lolfx.targets" />
-  </ImportGroup>
-</Project>
\ No newline at end of file
diff --git a/doc/tutorial/15_gui.cpp b/doc/tutorial/15_gui.cpp
deleted file mode 100644
index 91e2b8f4..00000000
--- a/doc/tutorial/15_gui.cpp
+++ /dev/null
@@ -1,108 +0,0 @@
-//
-//  Lol Engine — Dear ImGui tutorial
-//
-//  Copyright © 2012—2019 Sam Hocevar <sam@hocevar.net>
-//            © 2002—2015 Benjamin “Touky” Huet <huet.benjamin@gmail.com>
-//
-//  Lol Engine is free software. It comes without any warranty, to
-//  the extent permitted by applicable law. You can redistribute it
-//  and/or modify it under the terms of the Do What the Fuck You Want
-//  to Public License, Version 2, as published by the WTFPL Task Force.
-//  See http://www.wtfpl.net/ for more details.
-//
-
-#if HAVE_CONFIG_H
-#   include "config.h"
-#endif
-
-#include <lol/engine.h>
-
-#include <cstdio>
-#include <string>
-
-#include "loldebug.h"
-
-using namespace lol;
-
-class LolImGuiDemo : public WorldEntity
-{
-public:
-    LolImGuiDemo()
-    {
-        gui::init();
-    }
-
-    ~LolImGuiDemo()
-    {
-        gui::shutdown();
-    }
-
-    virtual void tick_game(float seconds)
-    {
-        WorldEntity::tick_game(seconds);
-
-        static float f;
-        static vec3 clear_color;
-        static char buf[512];
-        ImGuiIO& io = ImGui::GetIO();
-        ImGui::SetNextWindowFocus();
-        ImGui::Begin("testature");
-        {
-            if (ImGui::IsWindowHovered())
-                ImGui::Text("Hovered: true");
-            else
-                ImGui::Text("Hovered: false");
-            if (ImGui::IsWindowFocused())
-                ImGui::Text("Focused: true");
-            else
-                ImGui::Text("Focused: false");
-            ImGui::Text("Hello, world!");
-            ImGui::Text("prout!");
-            ImGui::Text("prout!%i", 100);
-            ImGui::Text("MousePos!%.2f/%.2f", io.MousePos.x, io.MousePos.y);
-            ImGui::Button("Test Window");
-            ImGui::Text("Slider: %.2f", f);
-            ImGui::SliderFloat("float", &f, 0.0f, 1.0f);
-            //ImGui::ColorEdit3("clear color", (float*)&clear_color);
-            ImGui::Text("Left Mouse: %s", io.MouseDown[0] ? "true" : "false");
-            ImGui::Text("Scroll: %f", io.MouseWheel);
-            ImGui::Text("Maj: %s", io.KeyShift ? "true" : "false");
-            ImGui::Text("Ctrl: %s", io.KeyCtrl ? "true" : "false");
-            ImGui::Text("Clipboard %s", gui::clipboard().c_str());
-            ImGui::InputText("base input", buf, 512);
-        }
-        ImGui::End();
-        ImGui::Begin("SO FUN !!");
-        {
-            if (ImGui::IsWindowHovered())
-                ImGui::Text("Hovered: true");
-            else
-                ImGui::Text("Hovered: false");
-            if (ImGui::IsWindowFocused())
-                ImGui::Text("Focused: true");
-            else
-                ImGui::Text("Focused: false");
-            ImGui::Text("poucka!");
-            ImGui::Text("    poucka!");
-        }
-        ImGui::End();
-    }
-
-    virtual void tick_draw(float seconds, Scene &scene)
-    {
-        WorldEntity::tick_draw(seconds, scene);
-    }
-};
-
-int main(int argc, char **argv)
-{
-    sys::init(argc, argv);
-
-    Application app("Tutorial 15: ImGui", ivec2(800, 600), 60.0f);
-
-    new LolImGuiDemo();
-
-    app.Run();
-    return EXIT_SUCCESS;
-}
-
diff --git a/doc/tutorial/15_gui.vcxproj b/doc/tutorial/15_gui.vcxproj
deleted file mode 100644
index d5e90e44..00000000
--- a/doc/tutorial/15_gui.vcxproj
+++ /dev/null
@@ -1,66 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <PropertyGroup Label="LolMacros">
-    <LolDir Condition="Exists('$(SolutionDir)\lol')">$(SolutionDir)\lol</LolDir>
-    <LolDir Condition="!Exists('$(SolutionDir)\lol')">$(SolutionDir)</LolDir>
-  </PropertyGroup>
-  <ItemGroup Label="ProjectConfigurations">
-    <ProjectConfiguration Include="Debug|NX64">
-      <Configuration>Debug</Configuration>
-      <Platform>NX64</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Debug|ORBIS">
-      <Configuration>Debug</Configuration>
-      <Platform>ORBIS</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Debug|Win32">
-      <Configuration>Debug</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Debug|x64">
-      <Configuration>Debug</Configuration>
-      <Platform>x64</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Release|NX64">
-      <Configuration>Release</Configuration>
-      <Platform>NX64</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Release|ORBIS">
-      <Configuration>Release</Configuration>
-      <Platform>ORBIS</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Release|Win32">
-      <Configuration>Release</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Release|x64">
-      <Configuration>Release</Configuration>
-      <Platform>x64</Platform>
-    </ProjectConfiguration>
-  </ItemGroup>
-  <Import Project="$(LolDir)\build\msbuild\lol-core.props" />
-  <Import Project="$(LolDir)\build\msbuild\lol-bullet.props" />
-  <ItemGroup>
-    <ClCompile Include="15_gui.cpp" />
-  </ItemGroup>
-  <PropertyGroup Label="Globals">
-    <ProjectGuid>{81C83B42-D00A-4FA3-9A3D-80F9D46524BF}</ProjectGuid>
-    <ConfigurationType>Application</ConfigurationType>
-    <Keyword>Win32Proj</Keyword>
-  </PropertyGroup>
-  <Import Project="$(LolDir)\build\msbuild\lol.config.props" />
-  <ImportGroup Label="ExtensionSettings">
-    <Import Project="$(LolDir)\build\msbuild\lolfx.props" />
-  </ImportGroup>
-  <ImportGroup Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(LolDir)\build\msbuild\lol.vars.props" />
-  </ImportGroup>
-  <PropertyGroup Label="UserMacros" />
-  <Import Project="$(LolDir)\build\msbuild\lol.rules.props" />
-  <ItemDefinitionGroup />
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
-  <ImportGroup Label="ExtensionTargets">
-    <Import Project="$(LolDir)\build\msbuild\lolfx.targets" />
-  </ImportGroup>
-</Project>
\ No newline at end of file
diff --git a/doc/tutorial/16_movie.cpp b/doc/tutorial/16_movie.cpp
deleted file mode 100644
index ab3132f6..00000000
--- a/doc/tutorial/16_movie.cpp
+++ /dev/null
@@ -1,62 +0,0 @@
-//
-//  Lol Engine — GIF encoding sample
-//
-//  Copyright © 2016—2019 Sam Hocevar <sam@hocevar.net>
-//
-//  Lol Engine is free software. It comes without any warranty, to
-//  the extent permitted by applicable law. You can redistribute it
-//  and/or modify it under the terms of the Do What the Fuck You Want
-//  to Public License, Version 2, as published by the WTFPL Task Force.
-//  See http://www.wtfpl.net/ for more details.
-//
-
-#if HAVE_CONFIG_H
-#   include "config.h"
-#endif
-
-#include <lol/engine.h>
-#include "loldebug.h"
-
-int main(int argc, char **argv)
-{
-    UNUSED(argc, argv);
-
-    lol::ivec2 size(256, 256);
-
-    lol::movie movie(size);
-    if (!movie.open_file("16_movie.gif"))
-        return EXIT_FAILURE;
-
-    // Use 4D Perlin noise
-    lol::perlin_noise<4> noise;
-
-    for (int i = 0; i < 256; ++i)
-    {
-        lol::image im(size);
-
-        lol::array2d<lol::u8vec3> &data = im.lock2d<lol::PixelFormat::RGB_8>();
-        for (int y = 0; y < size.y; ++y)
-        for (int x = 0; x < size.x; ++x)
-        {
-            float alpha = lol::F_TAU * i / 256;
-            float beta = lol::F_TAU * i / 256;
-            lol::vec4 p(2.f * x / (float)size.x + cos(alpha),
-                        2.f * x / (float)size.x + sin(alpha),
-                        2.f * y / (float)size.y + cos(beta),
-                        2.f * y / (float)size.y + sin(beta));
-
-            data[x][y].r = 128 * (noise.eval(p) + 1 + lol::rand(0.1f));
-            data[x][y].g = 128 * (noise.eval(p.zyxw) + 1 + lol::rand(0.1f));
-            data[x][y].b = 128 * (noise.eval(p.ywxz) + 1 + lol::rand(0.1f));
-        }
-        im.unlock2d(data);
-
-        if (!movie.push_image(im))
-            break;
-    }
-
-    movie.close();
-
-    return 0;
-}
-
diff --git a/doc/tutorial/16_movie.vcxproj b/doc/tutorial/16_movie.vcxproj
deleted file mode 100644
index 70146430..00000000
--- a/doc/tutorial/16_movie.vcxproj
+++ /dev/null
@@ -1,66 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <PropertyGroup Label="LolMacros">
-    <LolDir Condition="Exists('$(SolutionDir)\lol')">$(SolutionDir)\lol</LolDir>
-    <LolDir Condition="!Exists('$(SolutionDir)\lol')">$(SolutionDir)</LolDir>
-  </PropertyGroup>
-  <ItemGroup Label="ProjectConfigurations">
-    <ProjectConfiguration Include="Debug|NX64">
-      <Configuration>Debug</Configuration>
-      <Platform>NX64</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Debug|ORBIS">
-      <Configuration>Debug</Configuration>
-      <Platform>ORBIS</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Debug|Win32">
-      <Configuration>Debug</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Debug|x64">
-      <Configuration>Debug</Configuration>
-      <Platform>x64</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Release|NX64">
-      <Configuration>Release</Configuration>
-      <Platform>NX64</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Release|ORBIS">
-      <Configuration>Release</Configuration>
-      <Platform>ORBIS</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Release|Win32">
-      <Configuration>Release</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Release|x64">
-      <Configuration>Release</Configuration>
-      <Platform>x64</Platform>
-    </ProjectConfiguration>
-  </ItemGroup>
-  <ItemGroup>
-    <ClCompile Include="16_movie.cpp" />
-  </ItemGroup>
-  <Import Project="$(LolDir)\build\msbuild\lol-core.props" />
-  <Import Project="$(LolDir)\build\msbuild\lol-bullet.props" />
-  <PropertyGroup Label="Globals">
-    <ProjectGuid>{5F5714D0-1C3D-4522-A409-214C5A2951AA}</ProjectGuid>
-    <ConfigurationType>Application</ConfigurationType>
-    <Keyword>Win32Proj</Keyword>
-  </PropertyGroup>
-  <Import Project="$(LolDir)\build\msbuild\lol.config.props" />
-  <ImportGroup Label="ExtensionSettings">
-    <Import Project="$(LolDir)\build\msbuild\lolfx.props" />
-  </ImportGroup>
-  <ImportGroup Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(LolDir)\build\msbuild\lol.vars.props" />
-  </ImportGroup>
-  <PropertyGroup Label="UserMacros" />
-  <Import Project="$(LolDir)\build\msbuild\lol.rules.props" />
-  <ItemDefinitionGroup />
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
-  <ImportGroup Label="ExtensionTargets">
-    <Import Project="$(LolDir)\build\msbuild\lolfx.targets" />
-  </ImportGroup>
-</Project>
\ No newline at end of file
diff --git a/doc/tutorial/17_net.cpp b/doc/tutorial/17_net.cpp
deleted file mode 100644
index 477376bc..00000000
--- a/doc/tutorial/17_net.cpp
+++ /dev/null
@@ -1,63 +0,0 @@
-//
-//  Lol Engine — HTTP client sample
-//
-//  Copyright © 2016—2020 Sam Hocevar <sam@hocevar.net>
-//
-//  Lol Engine is free software. It comes without any warranty, to
-//  the extent permitted by applicable law. You can redistribute it
-//  and/or modify it under the terms of the Do What the Fuck You Want
-//  to Public License, Version 2, as published by the WTFPL Task Force.
-//  See http://www.wtfpl.net/ for more details.
-//
-
-#if HAVE_CONFIG_H
-#   include "config.h"
-#endif
-
-#include <lol/engine.h>
-
-class demo : public lol::entity
-{
-public:
-    virtual bool init_game() override
-    {
-        // Choose URL that works with CORS (cross-origin resource sharing)
-        client.get("https://api.github.com/");
-        return true;
-    }
-
-    virtual void tick_game(float seconds) override
-    {
-        entity::tick_game(seconds);
-
-        switch (client.get_status())
-        {
-        case lol::net::http::status::success:
-            lol::msg::info("downloaded %d bytes: %s\n",
-                           (int)client.get_result().size(),
-                           client.get_result().c_str());
-            client.reset();
-            break;
-        case lol::net::http::status::error:
-            lol::msg::info("error downloading %s\n", client.get_url().c_str());
-            client.reset();
-            break;
-        default:
-            break;
-        }
-    }
-
-    lol::net::http::client client;
-};
-
-int main(int argc, char **argv)
-{
-    lol::sys::init(argc, argv);
-
-    lol::Application app("Tutorial 17: HTTP", lol::ivec2(800, 600), 60.0f);
-    auto p = new demo();
-    app.Run();
-
-    return 0;
-}
-
diff --git a/doc/tutorial/17_net.vcxproj b/doc/tutorial/17_net.vcxproj
deleted file mode 100644
index 63eb4c70..00000000
--- a/doc/tutorial/17_net.vcxproj
+++ /dev/null
@@ -1,66 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <PropertyGroup Label="LolMacros">
-    <LolDir Condition="Exists('$(SolutionDir)\lol')">$(SolutionDir)\lol</LolDir>
-    <LolDir Condition="!Exists('$(SolutionDir)\lol')">$(SolutionDir)</LolDir>
-  </PropertyGroup>
-  <ItemGroup Label="ProjectConfigurations">
-    <ProjectConfiguration Include="Debug|NX64">
-      <Configuration>Debug</Configuration>
-      <Platform>NX64</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Debug|ORBIS">
-      <Configuration>Debug</Configuration>
-      <Platform>ORBIS</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Debug|Win32">
-      <Configuration>Debug</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Debug|x64">
-      <Configuration>Debug</Configuration>
-      <Platform>x64</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Release|NX64">
-      <Configuration>Release</Configuration>
-      <Platform>NX64</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Release|ORBIS">
-      <Configuration>Release</Configuration>
-      <Platform>ORBIS</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Release|Win32">
-      <Configuration>Release</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Release|x64">
-      <Configuration>Release</Configuration>
-      <Platform>x64</Platform>
-    </ProjectConfiguration>
-  </ItemGroup>
-  <ItemGroup>
-    <ClCompile Include="17_net.cpp" />
-  </ItemGroup>
-  <Import Project="$(LolDir)\build\msbuild\lol-core.props" />
-  <Import Project="$(LolDir)\build\msbuild\lol-bullet.props" />
-  <PropertyGroup Label="Globals">
-    <ProjectGuid>{46910277-18E3-4151-9AD9-DC5B551772A9}</ProjectGuid>
-    <ConfigurationType>Application</ConfigurationType>
-    <Keyword>Win32Proj</Keyword>
-  </PropertyGroup>
-  <Import Project="$(LolDir)\build\msbuild\lol.config.props" />
-  <ImportGroup Label="ExtensionSettings">
-    <Import Project="$(LolDir)\build\msbuild\lolfx.props" />
-  </ImportGroup>
-  <ImportGroup Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(LolDir)\build\msbuild\lol.vars.props" />
-  </ImportGroup>
-  <PropertyGroup Label="UserMacros" />
-  <Import Project="$(LolDir)\build\msbuild\lol.rules.props" />
-  <ItemDefinitionGroup />
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
-  <ImportGroup Label="ExtensionTargets">
-    <Import Project="$(LolDir)\build\msbuild\lolfx.targets" />
-  </ImportGroup>
-</Project>
\ No newline at end of file
diff --git a/doc/tutorial/Makefile.am b/doc/tutorial/Makefile.am
deleted file mode 100644
index e4b23e6a..00000000
--- a/doc/tutorial/Makefile.am
+++ /dev/null
@@ -1,87 +0,0 @@
-
-include $(top_srcdir)/build/autotools/common.am
-
-if BUILD_TUTORIAL
-noinst_PROGRAMS = $(tutorials)
-endif
-
-tutorials =
-if LOL_USE_GL
-tutorials += 01_triangle 02_cube 03_noise 04_texture 05_easymesh \
-             06_sprite 07_input 08_fbo 09_sound 11_fractal \
-             12_voronoi 13_shader_builder 14_lua 15_gui
-endif
-tutorials += 16_movie 17_net
-
-01_triangle_SOURCES = 01_triangle.cpp 01_triangle.lolfx
-01_triangle_CPPFLAGS = $(AM_CPPFLAGS)
-01_triangle_DEPENDENCIES = @LOL_DEPS@
-
-02_cube_SOURCES = 02_cube.cpp 02_cube.lolfx
-02_cube_CPPFLAGS = $(AM_CPPFLAGS)
-02_cube_DEPENDENCIES = @LOL_DEPS@
-
-03_noise_SOURCES = 03_noise.cpp 03_noise.lolfx
-03_noise_CPPFLAGS = $(AM_CPPFLAGS)
-03_noise_DEPENDENCIES = @LOL_DEPS@
-
-04_texture_SOURCES = 04_texture.cpp 04_texture.lolfx
-04_texture_CPPFLAGS = $(AM_CPPFLAGS)
-04_texture_DEPENDENCIES = @LOL_DEPS@
-
-05_easymesh_SOURCES = 05_easymesh.cpp
-05_easymesh_CPPFLAGS = $(AM_CPPFLAGS)
-05_easymesh_LDFLAGS = $(AM_LDFLAGS) @LOL_LUA_DEPS@
-05_easymesh_DEPENDENCIES = @LOL_DEPS@ @LOL_LUA_DEPS@
-
-06_sprite_SOURCES = 06_sprite.cpp 06_sprite.png
-06_sprite_CPPFLAGS = $(AM_CPPFLAGS)
-06_sprite_DEPENDENCIES = @LOL_DEPS@
-06_sprite_LDFLAGS = $(AM_LDFLAGS)
-if LOL_USE_EMSCRIPTEN
-06_sprite_LDFLAGS += --preload-file 06_sprite.png
-endif
-
-07_input_SOURCES = 07_input.cpp 07_input.lolfx
-07_input_CPPFLAGS = $(AM_CPPFLAGS)
-07_input_DEPENDENCIES = @LOL_DEPS@
-
-08_fbo_SOURCES = 08_fbo.cpp 08_fbo.lolfx
-08_fbo_CPPFLAGS = $(AM_CPPFLAGS)
-08_fbo_DEPENDENCIES = @LOL_DEPS@
-
-09_sound_SOURCES = 09_sound.cpp
-09_sound_CPPFLAGS = $(AM_CPPFLAGS)
-09_sound_DEPENDENCIES = @LOL_DEPS@
-
-11_fractal_SOURCES = 11_fractal.cpp 11_fractal.lolfx
-11_fractal_CPPFLAGS = $(AM_CPPFLAGS)
-11_fractal_DEPENDENCIES = @LOL_DEPS@
-
-12_voronoi_SOURCES = 12_voronoi.cpp 12_voronoi.lolfx \
-                     12_voronoi_distance.lolfx 12_voronoi_setup.lolfx \
-                     12_texture_to_screen.lolfx 12_distance.lolfx
-12_voronoi_CPPFLAGS = $(AM_CPPFLAGS)
-12_voronoi_DEPENDENCIES = @LOL_DEPS@
-
-13_shader_builder_SOURCES = 13_shader_builder.cpp
-13_shader_builder_CPPFLAGS = $(AM_CPPFLAGS)
-13_shader_builder_DEPENDENCIES = @LOL_DEPS@
-
-14_lua_SOURCES = 14_lua.cpp
-14_lua_CPPFLAGS = $(AM_CPPFLAGS)
-14_lua_LDFLAGS = $(AM_LDFLAGS) @LOL_LUA_DEPS@
-14_lua_DEPENDENCIES = @LOL_DEPS@ @LOL_LUA_DEPS@
-
-15_gui_SOURCES = 15_gui.cpp
-15_gui_CPPFLAGS = $(AM_CPPFLAGS)
-15_gui_DEPENDENCIES = @LOL_DEPS@
-
-16_movie_SOURCES = 16_movie.cpp
-16_movie_CPPFLAGS = $(AM_CPPFLAGS)
-16_movie_DEPENDENCIES = @LOL_DEPS@
-
-17_net_SOURCES = 17_net.cpp
-17_net_CPPFLAGS = $(AM_CPPFLAGS)
-17_net_DEPENDENCIES = @LOL_DEPS@
-
diff --git a/external b/external
deleted file mode 160000
index 88125fdc..00000000
--- a/external
+++ /dev/null
@@ -1 +0,0 @@
-Subproject commit 88125fdc0132803a30255837ac8beaa7d8c14ae5
diff --git a/src/3rdparty/mingw-std-threads b/include/lol/3rdparty/mingw-std-threads
similarity index 100%
rename from src/3rdparty/mingw-std-threads
rename to include/lol/3rdparty/mingw-std-threads
diff --git a/src/3rdparty/pegtl b/include/lol/3rdparty/pegtl
similarity index 100%
rename from src/3rdparty/pegtl
rename to include/lol/3rdparty/pegtl
diff --git a/src/lol/algorithm/aabb_tree.h b/legacy/lol/algorithm/aabb_tree.h
similarity index 100%
rename from src/lol/algorithm/aabb_tree.h
rename to legacy/lol/algorithm/aabb_tree.h
diff --git a/src/lol/algorithm/all.h b/legacy/lol/algorithm/all.h
similarity index 100%
rename from src/lol/algorithm/all.h
rename to legacy/lol/algorithm/all.h
diff --git a/src/lol/base/all.h b/legacy/lol/base/all.h
similarity index 100%
rename from src/lol/base/all.h
rename to legacy/lol/base/all.h
diff --git a/src/lol/base/assert.h b/legacy/lol/base/assert.h
similarity index 100%
rename from src/lol/base/assert.h
rename to legacy/lol/base/assert.h
diff --git a/src/lol/base/avl_tree.h b/legacy/lol/base/avl_tree.h
similarity index 100%
rename from src/lol/base/avl_tree.h
rename to legacy/lol/base/avl_tree.h
diff --git a/src/lol/base/features.h b/legacy/lol/base/features.h
similarity index 100%
rename from src/lol/base/features.h
rename to legacy/lol/base/features.h
diff --git a/src/lol/base/map.h b/legacy/lol/base/map.h
similarity index 100%
rename from src/lol/base/map.h
rename to legacy/lol/base/map.h
diff --git a/src/lol/base/string.h b/legacy/lol/base/string.h
similarity index 100%
rename from src/lol/base/string.h
rename to legacy/lol/base/string.h
diff --git a/src/lol/base/types.h b/legacy/lol/base/types.h
similarity index 100%
rename from src/lol/base/types.h
rename to legacy/lol/base/types.h
diff --git a/src/lol/image/all.h b/legacy/lol/image/all.h
similarity index 100%
rename from src/lol/image/all.h
rename to legacy/lol/image/all.h
diff --git a/src/lol/image/color.h b/legacy/lol/image/color.h
similarity index 100%
rename from src/lol/image/color.h
rename to legacy/lol/image/color.h
diff --git a/src/lol/image/pixel.h b/legacy/lol/image/pixel.h
similarity index 100%
rename from src/lol/image/pixel.h
rename to legacy/lol/image/pixel.h
diff --git a/src/lol/math/all.h b/legacy/lol/math/all.h
similarity index 100%
rename from src/lol/math/all.h
rename to legacy/lol/math/all.h
diff --git a/src/lol/math/arraynd.h b/legacy/lol/math/arraynd.h
similarity index 100%
rename from src/lol/math/arraynd.h
rename to legacy/lol/math/arraynd.h
diff --git a/src/lol/math/bigint.h b/legacy/lol/math/bigint.h
similarity index 100%
rename from src/lol/math/bigint.h
rename to legacy/lol/math/bigint.h
diff --git a/src/lol/math/constants.h b/legacy/lol/math/constants.h
similarity index 100%
rename from src/lol/math/constants.h
rename to legacy/lol/math/constants.h
diff --git a/src/lol/math/functions.h b/legacy/lol/math/functions.h
similarity index 100%
rename from src/lol/math/functions.h
rename to legacy/lol/math/functions.h
diff --git a/src/lol/math/geometry.h b/legacy/lol/math/geometry.h
similarity index 100%
rename from src/lol/math/geometry.h
rename to legacy/lol/math/geometry.h
diff --git a/src/lol/math/half.h b/legacy/lol/math/half.h
similarity index 100%
rename from src/lol/math/half.h
rename to legacy/lol/math/half.h
diff --git a/src/lol/math/interp.h b/legacy/lol/math/interp.h
similarity index 100%
rename from src/lol/math/interp.h
rename to legacy/lol/math/interp.h
diff --git a/src/lol/math/matrix.h b/legacy/lol/math/matrix.h
similarity index 100%
rename from src/lol/math/matrix.h
rename to legacy/lol/math/matrix.h
diff --git a/src/lol/math/noise/gradient.h b/legacy/lol/math/noise/gradient.h
similarity index 100%
rename from src/lol/math/noise/gradient.h
rename to legacy/lol/math/noise/gradient.h
diff --git a/src/lol/math/noise/perlin.h b/legacy/lol/math/noise/perlin.h
similarity index 100%
rename from src/lol/math/noise/perlin.h
rename to legacy/lol/math/noise/perlin.h
diff --git a/src/lol/math/noise/simplex.h b/legacy/lol/math/noise/simplex.h
similarity index 100%
rename from src/lol/math/noise/simplex.h
rename to legacy/lol/math/noise/simplex.h
diff --git a/src/lol/math/ops.h b/legacy/lol/math/ops.h
similarity index 100%
rename from src/lol/math/ops.h
rename to legacy/lol/math/ops.h
diff --git a/src/lol/math/polynomial.h b/legacy/lol/math/polynomial.h
similarity index 100%
rename from src/lol/math/polynomial.h
rename to legacy/lol/math/polynomial.h
diff --git a/src/lol/math/rand.h b/legacy/lol/math/rand.h
similarity index 100%
rename from src/lol/math/rand.h
rename to legacy/lol/math/rand.h
diff --git a/src/lol/math/real.h b/legacy/lol/math/real.h
similarity index 100%
rename from src/lol/math/real.h
rename to legacy/lol/math/real.h
diff --git a/src/lol/math/transform.h b/legacy/lol/math/transform.h
similarity index 100%
rename from src/lol/math/transform.h
rename to legacy/lol/math/transform.h
diff --git a/src/lol/math/vector.h b/legacy/lol/math/vector.h
similarity index 100%
rename from src/lol/math/vector.h
rename to legacy/lol/math/vector.h
diff --git a/src/lol/net/all.h b/legacy/lol/net/all.h
similarity index 100%
rename from src/lol/net/all.h
rename to legacy/lol/net/all.h
diff --git a/src/lol/sys/all.h b/legacy/lol/sys/all.h
similarity index 100%
rename from src/lol/sys/all.h
rename to legacy/lol/sys/all.h
diff --git a/src/lol/sys/getopt.h b/legacy/lol/sys/getopt.h
similarity index 100%
rename from src/lol/sys/getopt.h
rename to legacy/lol/sys/getopt.h
diff --git a/src/lol/sys/thread.h b/legacy/lol/sys/thread.h
similarity index 100%
rename from src/lol/sys/thread.h
rename to legacy/lol/sys/thread.h
diff --git a/src/lol/sys/timer.h b/legacy/lol/sys/timer.h
similarity index 100%
rename from src/lol/sys/timer.h
rename to legacy/lol/sys/timer.h
diff --git a/tools/lolunit/lolunit.h b/legacy/lolunit/lolunit.h
similarity index 100%
rename from tools/lolunit/lolunit.h
rename to legacy/lolunit/lolunit.h
diff --git a/src/math/geometry.cpp b/legacy/math/geometry.cpp
similarity index 100%
rename from src/math/geometry.cpp
rename to legacy/math/geometry.cpp
diff --git a/src/math/half.cpp b/legacy/math/half.cpp
similarity index 100%
rename from src/math/half.cpp
rename to legacy/math/half.cpp
diff --git a/src/math/matrix.cpp b/legacy/math/matrix.cpp
similarity index 100%
rename from src/math/matrix.cpp
rename to legacy/math/matrix.cpp
diff --git a/src/math/real.cpp b/legacy/math/real.cpp
similarity index 100%
rename from src/math/real.cpp
rename to legacy/math/real.cpp
diff --git a/src/math/transform.cpp b/legacy/math/transform.cpp
similarity index 100%
rename from src/math/transform.cpp
rename to legacy/math/transform.cpp
diff --git a/src/math/vector.cpp b/legacy/math/vector.cpp
similarity index 100%
rename from src/math/vector.cpp
rename to legacy/math/vector.cpp
diff --git a/src/numeric.h b/legacy/numeric.h
similarity index 100%
rename from src/numeric.h
rename to legacy/numeric.h
diff --git a/src/sys/getopt.cpp b/legacy/sys/getopt.cpp
similarity index 100%
rename from src/sys/getopt.cpp
rename to legacy/sys/getopt.cpp
diff --git a/lol.sln b/lol.sln
deleted file mode 100644
index b0c67eaa..00000000
--- a/lol.sln
+++ /dev/null
@@ -1,490 +0,0 @@
-
-Microsoft Visual Studio Solution File, Format Version 12.00
-# Visual Studio 15
-VisualStudioVersion = 15.0.28307.329
-MinimumVisualStudioVersion = 15.0.26730.03
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "lol-core", "src\lol-core.vcxproj", "{9E62F2FE-3408-4EAE-8238-FD84238CEEDA}"
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "lol-bullet", "src\3rdparty\lol-bullet.vcxproj", "{83D3B207-C601-4025-8F41-01DEDC354661}"
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "lol-lua", "src\3rdparty\lol-lua.vcxproj", "{D84021CA-B233-4E0F-8A52-071B83BBCCC4}"
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "test-base", "src\t\test-base.vcxproj", "{8F59A635-0240-4D7F-A80D-050C3F1670C2}"
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "test-math", "src\t\test-math.vcxproj", "{962D4E25-45D3-4ACE-8C02-69FA3713ABD4}"
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "test-sys", "src\t\test-sys.vcxproj", "{1782F849-B6E1-466D-9F02-A751F3F8712C}"
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "test-image", "src\t\test-image.vcxproj", "{5A27FF18-A1EC-49BE-9455-415F1C701153}"
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "test-entity", "src\t\test-entity.vcxproj", "{D7F6C2CA-5A13-4FD0-8468-1833923E3EE3}"
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "benchsuite", "doc\samples\benchsuite.vcxproj", "{B1E10086-A1DA-401A-834D-969C9DBB5CC1}"
-EndProject
-Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Tutorial", "Tutorial", "{E74CF679-CA2A-47E9-B1F4-3779D6AC6B04}"
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "01_triangle", "doc\tutorial\01_triangle.vcxproj", "{B92ABADC-45BE-4CC5-B724-9426053123A1}"
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "02_cube", "doc\tutorial\02_cube.vcxproj", "{7B083DA2-FE08-4F6D-BFDD-195D5C2783EB}"
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "05_easymesh", "doc\tutorial\05_easymesh.vcxproj", "{1C5B8702-290C-42DA-AA9E-671348F5B747}"
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "11_fractal", "doc\tutorial\11_fractal.vcxproj", "{6BF81B39-EDC2-4227-9992-C2D8ABEA95AF}"
-EndProject
-Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Engine", "Engine", "{1AFD580B-98B8-4689-B661-38C41132C60E}"
-	ProjectSection(SolutionItems) = preProject
-		msbuild\config-build.xml = msbuild\config-build.xml
-	EndProjectSection
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "btphystest", "doc\samples\btphystest.vcxproj", "{EE203B88-44CF-4859-9D42-7A1F43FECB52}"
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "08_fbo", "doc\tutorial\08_fbo.vcxproj", "{BCEE0132-8E24-49BE-AFEB-96DAD14396BA}"
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "03_noise", "doc\tutorial\03_noise.vcxproj", "{B0A53D75-CBB4-4FDF-93AC-2D12A79ADA0E}"
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "04_texture", "doc\tutorial\04_texture.vcxproj", "{834852DB-EDB6-4FD0-BCF9-45CD01126962}"
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "12_voronoi", "doc\tutorial\12_voronoi.vcxproj", "{6BF81B39-EDC2-4227-9982-C2D8ABEA95AF}"
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "07_input", "doc\tutorial\07_input.vcxproj", "{572E5B9C-7E19-489C-BD8A-E8401CFBBC47}"
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "06_sprite", "doc\tutorial\06_sprite.vcxproj", "{E05E23A5-67DE-42B5-98A3-E63CCE0CC0AF}"
-EndProject
-Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Test", "Test", "{E4DFEBF9-C310-462F-9876-7EB59C1E4D4E}"
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "13_shader_builder", "doc\tutorial\13_shader_builder.vcxproj", "{F59FA82C-DDB9-4EE2-80AE-CB0E4C6567A4}"
-EndProject
-Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Samples", "Samples", "{B6297FF2-63D0-41EE-BE13-EFF720C9B0FA}"
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "15_gui", "doc\tutorial\15_gui.vcxproj", "{81C83B42-D00A-4FA3-9A3D-80F9D46524BF}"
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "14_lua", "doc\tutorial\14_lua.vcxproj", "{31B96262-1C41-43B9-BA38-27AA385B05DB}"
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "16_movie", "doc\tutorial\16_movie.vcxproj", "{5F5714D0-1C3D-4522-A409-214C5A2951AA}"
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "17_net", "doc\tutorial\17_net.vcxproj", "{46910277-18E3-4151-9AD9-DC5B551772A9}"
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "09_sound", "doc\tutorial\09_sound.vcxproj", "{51626A22-DD68-4450-9696-13B03BF7A2C5}"
-EndProject
-Global
-	GlobalSection(SolutionConfigurationPlatforms) = preSolution
-		Debug|NX64 = Debug|NX64
-		Debug|ORBIS = Debug|ORBIS
-		Debug|Win32 = Debug|Win32
-		Debug|Win64 = Debug|Win64
-		Release|NX64 = Release|NX64
-		Release|ORBIS = Release|ORBIS
-		Release|Win32 = Release|Win32
-		Release|Win64 = Release|Win64
-	EndGlobalSection
-	GlobalSection(ProjectConfigurationPlatforms) = postSolution
-		{9E62F2FE-3408-4EAE-8238-FD84238CEEDA}.Debug|NX64.ActiveCfg = Debug|NX64
-		{9E62F2FE-3408-4EAE-8238-FD84238CEEDA}.Debug|NX64.Build.0 = Debug|NX64
-		{9E62F2FE-3408-4EAE-8238-FD84238CEEDA}.Debug|ORBIS.ActiveCfg = Debug|Win32
-		{9E62F2FE-3408-4EAE-8238-FD84238CEEDA}.Debug|Win32.ActiveCfg = Debug|Win32
-		{9E62F2FE-3408-4EAE-8238-FD84238CEEDA}.Debug|Win32.Build.0 = Debug|Win32
-		{9E62F2FE-3408-4EAE-8238-FD84238CEEDA}.Debug|Win64.ActiveCfg = Debug|x64
-		{9E62F2FE-3408-4EAE-8238-FD84238CEEDA}.Debug|Win64.Build.0 = Debug|x64
-		{9E62F2FE-3408-4EAE-8238-FD84238CEEDA}.Release|NX64.ActiveCfg = Release|NX64
-		{9E62F2FE-3408-4EAE-8238-FD84238CEEDA}.Release|NX64.Build.0 = Release|NX64
-		{9E62F2FE-3408-4EAE-8238-FD84238CEEDA}.Release|ORBIS.ActiveCfg = Release|Win32
-		{9E62F2FE-3408-4EAE-8238-FD84238CEEDA}.Release|Win32.ActiveCfg = Release|Win32
-		{9E62F2FE-3408-4EAE-8238-FD84238CEEDA}.Release|Win32.Build.0 = Release|Win32
-		{9E62F2FE-3408-4EAE-8238-FD84238CEEDA}.Release|Win64.ActiveCfg = Release|x64
-		{9E62F2FE-3408-4EAE-8238-FD84238CEEDA}.Release|Win64.Build.0 = Release|x64
-		{83D3B207-C601-4025-8F41-01DEDC354661}.Debug|NX64.ActiveCfg = Debug|NX64
-		{83D3B207-C601-4025-8F41-01DEDC354661}.Debug|NX64.Build.0 = Debug|NX64
-		{83D3B207-C601-4025-8F41-01DEDC354661}.Debug|ORBIS.ActiveCfg = Debug|Win32
-		{83D3B207-C601-4025-8F41-01DEDC354661}.Debug|Win32.ActiveCfg = Debug|Win32
-		{83D3B207-C601-4025-8F41-01DEDC354661}.Debug|Win32.Build.0 = Debug|Win32
-		{83D3B207-C601-4025-8F41-01DEDC354661}.Debug|Win64.ActiveCfg = Debug|x64
-		{83D3B207-C601-4025-8F41-01DEDC354661}.Debug|Win64.Build.0 = Debug|x64
-		{83D3B207-C601-4025-8F41-01DEDC354661}.Release|NX64.ActiveCfg = Release|NX64
-		{83D3B207-C601-4025-8F41-01DEDC354661}.Release|NX64.Build.0 = Release|NX64
-		{83D3B207-C601-4025-8F41-01DEDC354661}.Release|ORBIS.ActiveCfg = Release|Win32
-		{83D3B207-C601-4025-8F41-01DEDC354661}.Release|Win32.ActiveCfg = Release|Win32
-		{83D3B207-C601-4025-8F41-01DEDC354661}.Release|Win32.Build.0 = Release|Win32
-		{83D3B207-C601-4025-8F41-01DEDC354661}.Release|Win64.ActiveCfg = Release|x64
-		{83D3B207-C601-4025-8F41-01DEDC354661}.Release|Win64.Build.0 = Release|x64
-		{D84021CA-B233-4E0F-8A52-071B83BBCCC4}.Debug|NX64.ActiveCfg = Debug|NX64
-		{D84021CA-B233-4E0F-8A52-071B83BBCCC4}.Debug|NX64.Build.0 = Debug|NX64
-		{D84021CA-B233-4E0F-8A52-071B83BBCCC4}.Debug|ORBIS.ActiveCfg = Debug|Win32
-		{D84021CA-B233-4E0F-8A52-071B83BBCCC4}.Debug|Win32.ActiveCfg = Debug|Win32
-		{D84021CA-B233-4E0F-8A52-071B83BBCCC4}.Debug|Win32.Build.0 = Debug|Win32
-		{D84021CA-B233-4E0F-8A52-071B83BBCCC4}.Debug|Win64.ActiveCfg = Debug|x64
-		{D84021CA-B233-4E0F-8A52-071B83BBCCC4}.Debug|Win64.Build.0 = Debug|x64
-		{D84021CA-B233-4E0F-8A52-071B83BBCCC4}.Release|NX64.ActiveCfg = Release|NX64
-		{D84021CA-B233-4E0F-8A52-071B83BBCCC4}.Release|NX64.Build.0 = Release|NX64
-		{D84021CA-B233-4E0F-8A52-071B83BBCCC4}.Release|ORBIS.ActiveCfg = Release|Win32
-		{D84021CA-B233-4E0F-8A52-071B83BBCCC4}.Release|Win32.ActiveCfg = Release|Win32
-		{D84021CA-B233-4E0F-8A52-071B83BBCCC4}.Release|Win32.Build.0 = Release|Win32
-		{D84021CA-B233-4E0F-8A52-071B83BBCCC4}.Release|Win64.ActiveCfg = Release|x64
-		{D84021CA-B233-4E0F-8A52-071B83BBCCC4}.Release|Win64.Build.0 = Release|x64
-		{8F59A635-0240-4D7F-A80D-050C3F1670C2}.Debug|NX64.ActiveCfg = Debug|NX64
-		{8F59A635-0240-4D7F-A80D-050C3F1670C2}.Debug|NX64.Build.0 = Debug|NX64
-		{8F59A635-0240-4D7F-A80D-050C3F1670C2}.Debug|ORBIS.ActiveCfg = Debug|Win32
-		{8F59A635-0240-4D7F-A80D-050C3F1670C2}.Debug|Win32.ActiveCfg = Debug|Win32
-		{8F59A635-0240-4D7F-A80D-050C3F1670C2}.Debug|Win32.Build.0 = Debug|Win32
-		{8F59A635-0240-4D7F-A80D-050C3F1670C2}.Debug|Win64.ActiveCfg = Debug|x64
-		{8F59A635-0240-4D7F-A80D-050C3F1670C2}.Debug|Win64.Build.0 = Debug|x64
-		{8F59A635-0240-4D7F-A80D-050C3F1670C2}.Release|NX64.ActiveCfg = Release|NX64
-		{8F59A635-0240-4D7F-A80D-050C3F1670C2}.Release|NX64.Build.0 = Release|NX64
-		{8F59A635-0240-4D7F-A80D-050C3F1670C2}.Release|ORBIS.ActiveCfg = Release|Win32
-		{8F59A635-0240-4D7F-A80D-050C3F1670C2}.Release|Win32.ActiveCfg = Release|Win32
-		{8F59A635-0240-4D7F-A80D-050C3F1670C2}.Release|Win32.Build.0 = Release|Win32
-		{8F59A635-0240-4D7F-A80D-050C3F1670C2}.Release|Win64.ActiveCfg = Release|x64
-		{8F59A635-0240-4D7F-A80D-050C3F1670C2}.Release|Win64.Build.0 = Release|x64
-		{962D4E25-45D3-4ACE-8C02-69FA3713ABD4}.Debug|NX64.ActiveCfg = Debug|NX64
-		{962D4E25-45D3-4ACE-8C02-69FA3713ABD4}.Debug|NX64.Build.0 = Debug|NX64
-		{962D4E25-45D3-4ACE-8C02-69FA3713ABD4}.Debug|ORBIS.ActiveCfg = Debug|Win32
-		{962D4E25-45D3-4ACE-8C02-69FA3713ABD4}.Debug|Win32.ActiveCfg = Debug|Win32
-		{962D4E25-45D3-4ACE-8C02-69FA3713ABD4}.Debug|Win32.Build.0 = Debug|Win32
-		{962D4E25-45D3-4ACE-8C02-69FA3713ABD4}.Debug|Win64.ActiveCfg = Debug|x64
-		{962D4E25-45D3-4ACE-8C02-69FA3713ABD4}.Debug|Win64.Build.0 = Debug|x64
-		{962D4E25-45D3-4ACE-8C02-69FA3713ABD4}.Release|NX64.ActiveCfg = Release|NX64
-		{962D4E25-45D3-4ACE-8C02-69FA3713ABD4}.Release|NX64.Build.0 = Release|NX64
-		{962D4E25-45D3-4ACE-8C02-69FA3713ABD4}.Release|ORBIS.ActiveCfg = Release|Win32
-		{962D4E25-45D3-4ACE-8C02-69FA3713ABD4}.Release|Win32.ActiveCfg = Release|Win32
-		{962D4E25-45D3-4ACE-8C02-69FA3713ABD4}.Release|Win32.Build.0 = Release|Win32
-		{962D4E25-45D3-4ACE-8C02-69FA3713ABD4}.Release|Win64.ActiveCfg = Release|x64
-		{962D4E25-45D3-4ACE-8C02-69FA3713ABD4}.Release|Win64.Build.0 = Release|x64
-		{1782F849-B6E1-466D-9F02-A751F3F8712C}.Debug|NX64.ActiveCfg = Debug|NX64
-		{1782F849-B6E1-466D-9F02-A751F3F8712C}.Debug|NX64.Build.0 = Debug|NX64
-		{1782F849-B6E1-466D-9F02-A751F3F8712C}.Debug|ORBIS.ActiveCfg = Debug|Win32
-		{1782F849-B6E1-466D-9F02-A751F3F8712C}.Debug|Win32.ActiveCfg = Debug|Win32
-		{1782F849-B6E1-466D-9F02-A751F3F8712C}.Debug|Win32.Build.0 = Debug|Win32
-		{1782F849-B6E1-466D-9F02-A751F3F8712C}.Debug|Win64.ActiveCfg = Debug|x64
-		{1782F849-B6E1-466D-9F02-A751F3F8712C}.Debug|Win64.Build.0 = Debug|x64
-		{1782F849-B6E1-466D-9F02-A751F3F8712C}.Release|NX64.ActiveCfg = Release|NX64
-		{1782F849-B6E1-466D-9F02-A751F3F8712C}.Release|NX64.Build.0 = Release|NX64
-		{1782F849-B6E1-466D-9F02-A751F3F8712C}.Release|ORBIS.ActiveCfg = Release|Win32
-		{1782F849-B6E1-466D-9F02-A751F3F8712C}.Release|Win32.ActiveCfg = Release|Win32
-		{1782F849-B6E1-466D-9F02-A751F3F8712C}.Release|Win32.Build.0 = Release|Win32
-		{1782F849-B6E1-466D-9F02-A751F3F8712C}.Release|Win64.ActiveCfg = Release|x64
-		{1782F849-B6E1-466D-9F02-A751F3F8712C}.Release|Win64.Build.0 = Release|x64
-		{5A27FF18-A1EC-49BE-9455-415F1C701153}.Debug|NX64.ActiveCfg = Debug|NX64
-		{5A27FF18-A1EC-49BE-9455-415F1C701153}.Debug|NX64.Build.0 = Debug|NX64
-		{5A27FF18-A1EC-49BE-9455-415F1C701153}.Debug|ORBIS.ActiveCfg = Debug|Win32
-		{5A27FF18-A1EC-49BE-9455-415F1C701153}.Debug|Win32.ActiveCfg = Debug|Win32
-		{5A27FF18-A1EC-49BE-9455-415F1C701153}.Debug|Win32.Build.0 = Debug|Win32
-		{5A27FF18-A1EC-49BE-9455-415F1C701153}.Debug|Win64.ActiveCfg = Debug|x64
-		{5A27FF18-A1EC-49BE-9455-415F1C701153}.Debug|Win64.Build.0 = Debug|x64
-		{5A27FF18-A1EC-49BE-9455-415F1C701153}.Release|NX64.ActiveCfg = Release|NX64
-		{5A27FF18-A1EC-49BE-9455-415F1C701153}.Release|NX64.Build.0 = Release|NX64
-		{5A27FF18-A1EC-49BE-9455-415F1C701153}.Release|ORBIS.ActiveCfg = Release|Win32
-		{5A27FF18-A1EC-49BE-9455-415F1C701153}.Release|Win32.ActiveCfg = Release|Win32
-		{5A27FF18-A1EC-49BE-9455-415F1C701153}.Release|Win32.Build.0 = Release|Win32
-		{5A27FF18-A1EC-49BE-9455-415F1C701153}.Release|Win64.ActiveCfg = Release|x64
-		{5A27FF18-A1EC-49BE-9455-415F1C701153}.Release|Win64.Build.0 = Release|x64
-		{D7F6C2CA-5A13-4FD0-8468-1833923E3EE3}.Debug|NX64.ActiveCfg = Debug|NX64
-		{D7F6C2CA-5A13-4FD0-8468-1833923E3EE3}.Debug|NX64.Build.0 = Debug|NX64
-		{D7F6C2CA-5A13-4FD0-8468-1833923E3EE3}.Debug|ORBIS.ActiveCfg = Debug|Win32
-		{D7F6C2CA-5A13-4FD0-8468-1833923E3EE3}.Debug|Win32.ActiveCfg = Debug|Win32
-		{D7F6C2CA-5A13-4FD0-8468-1833923E3EE3}.Debug|Win32.Build.0 = Debug|Win32
-		{D7F6C2CA-5A13-4FD0-8468-1833923E3EE3}.Debug|Win64.ActiveCfg = Debug|x64
-		{D7F6C2CA-5A13-4FD0-8468-1833923E3EE3}.Debug|Win64.Build.0 = Debug|x64
-		{D7F6C2CA-5A13-4FD0-8468-1833923E3EE3}.Release|NX64.ActiveCfg = Release|NX64
-		{D7F6C2CA-5A13-4FD0-8468-1833923E3EE3}.Release|NX64.Build.0 = Release|NX64
-		{D7F6C2CA-5A13-4FD0-8468-1833923E3EE3}.Release|ORBIS.ActiveCfg = Release|Win32
-		{D7F6C2CA-5A13-4FD0-8468-1833923E3EE3}.Release|Win32.ActiveCfg = Release|Win32
-		{D7F6C2CA-5A13-4FD0-8468-1833923E3EE3}.Release|Win32.Build.0 = Release|Win32
-		{D7F6C2CA-5A13-4FD0-8468-1833923E3EE3}.Release|Win64.ActiveCfg = Release|x64
-		{D7F6C2CA-5A13-4FD0-8468-1833923E3EE3}.Release|Win64.Build.0 = Release|x64
-		{B1E10086-A1DA-401A-834D-969C9DBB5CC1}.Debug|NX64.ActiveCfg = Debug|NX64
-		{B1E10086-A1DA-401A-834D-969C9DBB5CC1}.Debug|NX64.Build.0 = Debug|NX64
-		{B1E10086-A1DA-401A-834D-969C9DBB5CC1}.Debug|ORBIS.ActiveCfg = Debug|Win32
-		{B1E10086-A1DA-401A-834D-969C9DBB5CC1}.Debug|Win32.ActiveCfg = Debug|Win32
-		{B1E10086-A1DA-401A-834D-969C9DBB5CC1}.Debug|Win32.Build.0 = Debug|Win32
-		{B1E10086-A1DA-401A-834D-969C9DBB5CC1}.Debug|Win64.ActiveCfg = Debug|x64
-		{B1E10086-A1DA-401A-834D-969C9DBB5CC1}.Debug|Win64.Build.0 = Debug|x64
-		{B1E10086-A1DA-401A-834D-969C9DBB5CC1}.Release|NX64.ActiveCfg = Release|NX64
-		{B1E10086-A1DA-401A-834D-969C9DBB5CC1}.Release|NX64.Build.0 = Release|NX64
-		{B1E10086-A1DA-401A-834D-969C9DBB5CC1}.Release|ORBIS.ActiveCfg = Release|Win32
-		{B1E10086-A1DA-401A-834D-969C9DBB5CC1}.Release|Win32.ActiveCfg = Release|Win32
-		{B1E10086-A1DA-401A-834D-969C9DBB5CC1}.Release|Win32.Build.0 = Release|Win32
-		{B1E10086-A1DA-401A-834D-969C9DBB5CC1}.Release|Win64.ActiveCfg = Release|x64
-		{B1E10086-A1DA-401A-834D-969C9DBB5CC1}.Release|Win64.Build.0 = Release|x64
-		{B92ABADC-45BE-4CC5-B724-9426053123A1}.Debug|NX64.ActiveCfg = Debug|NX64
-		{B92ABADC-45BE-4CC5-B724-9426053123A1}.Debug|NX64.Build.0 = Debug|NX64
-		{B92ABADC-45BE-4CC5-B724-9426053123A1}.Debug|ORBIS.ActiveCfg = Debug|Win32
-		{B92ABADC-45BE-4CC5-B724-9426053123A1}.Debug|Win32.ActiveCfg = Debug|Win32
-		{B92ABADC-45BE-4CC5-B724-9426053123A1}.Debug|Win32.Build.0 = Debug|Win32
-		{B92ABADC-45BE-4CC5-B724-9426053123A1}.Debug|Win64.ActiveCfg = Debug|x64
-		{B92ABADC-45BE-4CC5-B724-9426053123A1}.Debug|Win64.Build.0 = Debug|x64
-		{B92ABADC-45BE-4CC5-B724-9426053123A1}.Release|NX64.ActiveCfg = Release|NX64
-		{B92ABADC-45BE-4CC5-B724-9426053123A1}.Release|NX64.Build.0 = Release|NX64
-		{B92ABADC-45BE-4CC5-B724-9426053123A1}.Release|ORBIS.ActiveCfg = Release|Win32
-		{B92ABADC-45BE-4CC5-B724-9426053123A1}.Release|Win32.ActiveCfg = Release|Win32
-		{B92ABADC-45BE-4CC5-B724-9426053123A1}.Release|Win32.Build.0 = Release|Win32
-		{B92ABADC-45BE-4CC5-B724-9426053123A1}.Release|Win64.ActiveCfg = Release|x64
-		{B92ABADC-45BE-4CC5-B724-9426053123A1}.Release|Win64.Build.0 = Release|x64
-		{7B083DA2-FE08-4F6D-BFDD-195D5C2783EB}.Debug|NX64.ActiveCfg = Debug|NX64
-		{7B083DA2-FE08-4F6D-BFDD-195D5C2783EB}.Debug|NX64.Build.0 = Debug|NX64
-		{7B083DA2-FE08-4F6D-BFDD-195D5C2783EB}.Debug|ORBIS.ActiveCfg = Debug|Win32
-		{7B083DA2-FE08-4F6D-BFDD-195D5C2783EB}.Debug|Win32.ActiveCfg = Debug|Win32
-		{7B083DA2-FE08-4F6D-BFDD-195D5C2783EB}.Debug|Win32.Build.0 = Debug|Win32
-		{7B083DA2-FE08-4F6D-BFDD-195D5C2783EB}.Debug|Win64.ActiveCfg = Debug|x64
-		{7B083DA2-FE08-4F6D-BFDD-195D5C2783EB}.Debug|Win64.Build.0 = Debug|x64
-		{7B083DA2-FE08-4F6D-BFDD-195D5C2783EB}.Release|NX64.ActiveCfg = Release|NX64
-		{7B083DA2-FE08-4F6D-BFDD-195D5C2783EB}.Release|NX64.Build.0 = Release|NX64
-		{7B083DA2-FE08-4F6D-BFDD-195D5C2783EB}.Release|ORBIS.ActiveCfg = Release|Win32
-		{7B083DA2-FE08-4F6D-BFDD-195D5C2783EB}.Release|Win32.ActiveCfg = Release|Win32
-		{7B083DA2-FE08-4F6D-BFDD-195D5C2783EB}.Release|Win32.Build.0 = Release|Win32
-		{7B083DA2-FE08-4F6D-BFDD-195D5C2783EB}.Release|Win64.ActiveCfg = Release|x64
-		{7B083DA2-FE08-4F6D-BFDD-195D5C2783EB}.Release|Win64.Build.0 = Release|x64
-		{1C5B8702-290C-42DA-AA9E-671348F5B747}.Debug|NX64.ActiveCfg = Debug|NX64
-		{1C5B8702-290C-42DA-AA9E-671348F5B747}.Debug|NX64.Build.0 = Debug|NX64
-		{1C5B8702-290C-42DA-AA9E-671348F5B747}.Debug|ORBIS.ActiveCfg = Debug|Win32
-		{1C5B8702-290C-42DA-AA9E-671348F5B747}.Debug|Win32.ActiveCfg = Debug|Win32
-		{1C5B8702-290C-42DA-AA9E-671348F5B747}.Debug|Win32.Build.0 = Debug|Win32
-		{1C5B8702-290C-42DA-AA9E-671348F5B747}.Debug|Win64.ActiveCfg = Debug|x64
-		{1C5B8702-290C-42DA-AA9E-671348F5B747}.Debug|Win64.Build.0 = Debug|x64
-		{1C5B8702-290C-42DA-AA9E-671348F5B747}.Release|NX64.ActiveCfg = Release|NX64
-		{1C5B8702-290C-42DA-AA9E-671348F5B747}.Release|NX64.Build.0 = Release|NX64
-		{1C5B8702-290C-42DA-AA9E-671348F5B747}.Release|ORBIS.ActiveCfg = Release|Win32
-		{1C5B8702-290C-42DA-AA9E-671348F5B747}.Release|Win32.ActiveCfg = Release|Win32
-		{1C5B8702-290C-42DA-AA9E-671348F5B747}.Release|Win32.Build.0 = Release|Win32
-		{1C5B8702-290C-42DA-AA9E-671348F5B747}.Release|Win64.ActiveCfg = Release|x64
-		{1C5B8702-290C-42DA-AA9E-671348F5B747}.Release|Win64.Build.0 = Release|x64
-		{6BF81B39-EDC2-4227-9992-C2D8ABEA95AF}.Debug|NX64.ActiveCfg = Debug|NX64
-		{6BF81B39-EDC2-4227-9992-C2D8ABEA95AF}.Debug|NX64.Build.0 = Debug|NX64
-		{6BF81B39-EDC2-4227-9992-C2D8ABEA95AF}.Debug|ORBIS.ActiveCfg = Debug|Win32
-		{6BF81B39-EDC2-4227-9992-C2D8ABEA95AF}.Debug|Win32.ActiveCfg = Debug|Win32
-		{6BF81B39-EDC2-4227-9992-C2D8ABEA95AF}.Debug|Win32.Build.0 = Debug|Win32
-		{6BF81B39-EDC2-4227-9992-C2D8ABEA95AF}.Debug|Win64.ActiveCfg = Debug|x64
-		{6BF81B39-EDC2-4227-9992-C2D8ABEA95AF}.Debug|Win64.Build.0 = Debug|x64
-		{6BF81B39-EDC2-4227-9992-C2D8ABEA95AF}.Release|NX64.ActiveCfg = Release|NX64
-		{6BF81B39-EDC2-4227-9992-C2D8ABEA95AF}.Release|NX64.Build.0 = Release|NX64
-		{6BF81B39-EDC2-4227-9992-C2D8ABEA95AF}.Release|ORBIS.ActiveCfg = Release|Win32
-		{6BF81B39-EDC2-4227-9992-C2D8ABEA95AF}.Release|Win32.ActiveCfg = Release|Win32
-		{6BF81B39-EDC2-4227-9992-C2D8ABEA95AF}.Release|Win32.Build.0 = Release|Win32
-		{6BF81B39-EDC2-4227-9992-C2D8ABEA95AF}.Release|Win64.ActiveCfg = Release|x64
-		{6BF81B39-EDC2-4227-9992-C2D8ABEA95AF}.Release|Win64.Build.0 = Release|x64
-		{EE203B88-44CF-4859-9D42-7A1F43FECB52}.Debug|NX64.ActiveCfg = Debug|NX64
-		{EE203B88-44CF-4859-9D42-7A1F43FECB52}.Debug|NX64.Build.0 = Debug|NX64
-		{EE203B88-44CF-4859-9D42-7A1F43FECB52}.Debug|ORBIS.ActiveCfg = Debug|Win32
-		{EE203B88-44CF-4859-9D42-7A1F43FECB52}.Debug|Win32.ActiveCfg = Debug|Win32
-		{EE203B88-44CF-4859-9D42-7A1F43FECB52}.Debug|Win32.Build.0 = Debug|Win32
-		{EE203B88-44CF-4859-9D42-7A1F43FECB52}.Debug|Win64.ActiveCfg = Debug|x64
-		{EE203B88-44CF-4859-9D42-7A1F43FECB52}.Debug|Win64.Build.0 = Debug|x64
-		{EE203B88-44CF-4859-9D42-7A1F43FECB52}.Release|NX64.ActiveCfg = Release|NX64
-		{EE203B88-44CF-4859-9D42-7A1F43FECB52}.Release|NX64.Build.0 = Release|NX64
-		{EE203B88-44CF-4859-9D42-7A1F43FECB52}.Release|ORBIS.ActiveCfg = Release|Win32
-		{EE203B88-44CF-4859-9D42-7A1F43FECB52}.Release|Win32.ActiveCfg = Release|Win32
-		{EE203B88-44CF-4859-9D42-7A1F43FECB52}.Release|Win32.Build.0 = Release|Win32
-		{EE203B88-44CF-4859-9D42-7A1F43FECB52}.Release|Win64.ActiveCfg = Release|x64
-		{EE203B88-44CF-4859-9D42-7A1F43FECB52}.Release|Win64.Build.0 = Release|x64
-		{BCEE0132-8E24-49BE-AFEB-96DAD14396BA}.Debug|NX64.ActiveCfg = Debug|NX64
-		{BCEE0132-8E24-49BE-AFEB-96DAD14396BA}.Debug|NX64.Build.0 = Debug|NX64
-		{BCEE0132-8E24-49BE-AFEB-96DAD14396BA}.Debug|ORBIS.ActiveCfg = Debug|Win32
-		{BCEE0132-8E24-49BE-AFEB-96DAD14396BA}.Debug|Win32.ActiveCfg = Debug|Win32
-		{BCEE0132-8E24-49BE-AFEB-96DAD14396BA}.Debug|Win32.Build.0 = Debug|Win32
-		{BCEE0132-8E24-49BE-AFEB-96DAD14396BA}.Debug|Win64.ActiveCfg = Debug|x64
-		{BCEE0132-8E24-49BE-AFEB-96DAD14396BA}.Debug|Win64.Build.0 = Debug|x64
-		{BCEE0132-8E24-49BE-AFEB-96DAD14396BA}.Release|NX64.ActiveCfg = Release|NX64
-		{BCEE0132-8E24-49BE-AFEB-96DAD14396BA}.Release|NX64.Build.0 = Release|NX64
-		{BCEE0132-8E24-49BE-AFEB-96DAD14396BA}.Release|ORBIS.ActiveCfg = Release|Win32
-		{BCEE0132-8E24-49BE-AFEB-96DAD14396BA}.Release|Win32.ActiveCfg = Release|Win32
-		{BCEE0132-8E24-49BE-AFEB-96DAD14396BA}.Release|Win32.Build.0 = Release|Win32
-		{BCEE0132-8E24-49BE-AFEB-96DAD14396BA}.Release|Win64.ActiveCfg = Release|x64
-		{BCEE0132-8E24-49BE-AFEB-96DAD14396BA}.Release|Win64.Build.0 = Release|x64
-		{B0A53D75-CBB4-4FDF-93AC-2D12A79ADA0E}.Debug|NX64.ActiveCfg = Debug|NX64
-		{B0A53D75-CBB4-4FDF-93AC-2D12A79ADA0E}.Debug|NX64.Build.0 = Debug|NX64
-		{B0A53D75-CBB4-4FDF-93AC-2D12A79ADA0E}.Debug|ORBIS.ActiveCfg = Debug|Win32
-		{B0A53D75-CBB4-4FDF-93AC-2D12A79ADA0E}.Debug|Win32.ActiveCfg = Debug|Win32
-		{B0A53D75-CBB4-4FDF-93AC-2D12A79ADA0E}.Debug|Win32.Build.0 = Debug|Win32
-		{B0A53D75-CBB4-4FDF-93AC-2D12A79ADA0E}.Debug|Win64.ActiveCfg = Debug|x64
-		{B0A53D75-CBB4-4FDF-93AC-2D12A79ADA0E}.Debug|Win64.Build.0 = Debug|x64
-		{B0A53D75-CBB4-4FDF-93AC-2D12A79ADA0E}.Release|NX64.ActiveCfg = Release|NX64
-		{B0A53D75-CBB4-4FDF-93AC-2D12A79ADA0E}.Release|NX64.Build.0 = Release|NX64
-		{B0A53D75-CBB4-4FDF-93AC-2D12A79ADA0E}.Release|ORBIS.ActiveCfg = Release|Win32
-		{B0A53D75-CBB4-4FDF-93AC-2D12A79ADA0E}.Release|Win32.ActiveCfg = Release|Win32
-		{B0A53D75-CBB4-4FDF-93AC-2D12A79ADA0E}.Release|Win32.Build.0 = Release|Win32
-		{B0A53D75-CBB4-4FDF-93AC-2D12A79ADA0E}.Release|Win64.ActiveCfg = Release|x64
-		{B0A53D75-CBB4-4FDF-93AC-2D12A79ADA0E}.Release|Win64.Build.0 = Release|x64
-		{834852DB-EDB6-4FD0-BCF9-45CD01126962}.Debug|NX64.ActiveCfg = Debug|NX64
-		{834852DB-EDB6-4FD0-BCF9-45CD01126962}.Debug|NX64.Build.0 = Debug|NX64
-		{834852DB-EDB6-4FD0-BCF9-45CD01126962}.Debug|ORBIS.ActiveCfg = Debug|Win32
-		{834852DB-EDB6-4FD0-BCF9-45CD01126962}.Debug|Win32.ActiveCfg = Debug|Win32
-		{834852DB-EDB6-4FD0-BCF9-45CD01126962}.Debug|Win32.Build.0 = Debug|Win32
-		{834852DB-EDB6-4FD0-BCF9-45CD01126962}.Debug|Win64.ActiveCfg = Debug|x64
-		{834852DB-EDB6-4FD0-BCF9-45CD01126962}.Debug|Win64.Build.0 = Debug|x64
-		{834852DB-EDB6-4FD0-BCF9-45CD01126962}.Release|NX64.ActiveCfg = Release|NX64
-		{834852DB-EDB6-4FD0-BCF9-45CD01126962}.Release|NX64.Build.0 = Release|NX64
-		{834852DB-EDB6-4FD0-BCF9-45CD01126962}.Release|ORBIS.ActiveCfg = Release|Win32
-		{834852DB-EDB6-4FD0-BCF9-45CD01126962}.Release|Win32.ActiveCfg = Release|Win32
-		{834852DB-EDB6-4FD0-BCF9-45CD01126962}.Release|Win32.Build.0 = Release|Win32
-		{834852DB-EDB6-4FD0-BCF9-45CD01126962}.Release|Win64.ActiveCfg = Release|x64
-		{834852DB-EDB6-4FD0-BCF9-45CD01126962}.Release|Win64.Build.0 = Release|x64
-		{6BF81B39-EDC2-4227-9982-C2D8ABEA95AF}.Debug|NX64.ActiveCfg = Debug|NX64
-		{6BF81B39-EDC2-4227-9982-C2D8ABEA95AF}.Debug|NX64.Build.0 = Debug|NX64
-		{6BF81B39-EDC2-4227-9982-C2D8ABEA95AF}.Debug|ORBIS.ActiveCfg = Debug|Win32
-		{6BF81B39-EDC2-4227-9982-C2D8ABEA95AF}.Debug|Win32.ActiveCfg = Debug|Win32
-		{6BF81B39-EDC2-4227-9982-C2D8ABEA95AF}.Debug|Win32.Build.0 = Debug|Win32
-		{6BF81B39-EDC2-4227-9982-C2D8ABEA95AF}.Debug|Win64.ActiveCfg = Debug|x64
-		{6BF81B39-EDC2-4227-9982-C2D8ABEA95AF}.Debug|Win64.Build.0 = Debug|x64
-		{6BF81B39-EDC2-4227-9982-C2D8ABEA95AF}.Release|NX64.ActiveCfg = Release|NX64
-		{6BF81B39-EDC2-4227-9982-C2D8ABEA95AF}.Release|NX64.Build.0 = Release|NX64
-		{6BF81B39-EDC2-4227-9982-C2D8ABEA95AF}.Release|ORBIS.ActiveCfg = Release|Win32
-		{6BF81B39-EDC2-4227-9982-C2D8ABEA95AF}.Release|Win32.ActiveCfg = Release|Win32
-		{6BF81B39-EDC2-4227-9982-C2D8ABEA95AF}.Release|Win32.Build.0 = Release|Win32
-		{6BF81B39-EDC2-4227-9982-C2D8ABEA95AF}.Release|Win64.ActiveCfg = Release|x64
-		{6BF81B39-EDC2-4227-9982-C2D8ABEA95AF}.Release|Win64.Build.0 = Release|x64
-		{572E5B9C-7E19-489C-BD8A-E8401CFBBC47}.Debug|NX64.ActiveCfg = Debug|NX64
-		{572E5B9C-7E19-489C-BD8A-E8401CFBBC47}.Debug|NX64.Build.0 = Debug|NX64
-		{572E5B9C-7E19-489C-BD8A-E8401CFBBC47}.Debug|ORBIS.ActiveCfg = Debug|Win32
-		{572E5B9C-7E19-489C-BD8A-E8401CFBBC47}.Debug|Win32.ActiveCfg = Debug|Win32
-		{572E5B9C-7E19-489C-BD8A-E8401CFBBC47}.Debug|Win32.Build.0 = Debug|Win32
-		{572E5B9C-7E19-489C-BD8A-E8401CFBBC47}.Debug|Win64.ActiveCfg = Debug|x64
-		{572E5B9C-7E19-489C-BD8A-E8401CFBBC47}.Debug|Win64.Build.0 = Debug|x64
-		{572E5B9C-7E19-489C-BD8A-E8401CFBBC47}.Release|NX64.ActiveCfg = Release|NX64
-		{572E5B9C-7E19-489C-BD8A-E8401CFBBC47}.Release|NX64.Build.0 = Release|NX64
-		{572E5B9C-7E19-489C-BD8A-E8401CFBBC47}.Release|ORBIS.ActiveCfg = Release|Win32
-		{572E5B9C-7E19-489C-BD8A-E8401CFBBC47}.Release|Win32.ActiveCfg = Release|Win32
-		{572E5B9C-7E19-489C-BD8A-E8401CFBBC47}.Release|Win32.Build.0 = Release|Win32
-		{572E5B9C-7E19-489C-BD8A-E8401CFBBC47}.Release|Win64.ActiveCfg = Release|x64
-		{572E5B9C-7E19-489C-BD8A-E8401CFBBC47}.Release|Win64.Build.0 = Release|x64
-		{E05E23A5-67DE-42B5-98A3-E63CCE0CC0AF}.Debug|NX64.ActiveCfg = Debug|NX64
-		{E05E23A5-67DE-42B5-98A3-E63CCE0CC0AF}.Debug|NX64.Build.0 = Debug|NX64
-		{E05E23A5-67DE-42B5-98A3-E63CCE0CC0AF}.Debug|ORBIS.ActiveCfg = Debug|Win32
-		{E05E23A5-67DE-42B5-98A3-E63CCE0CC0AF}.Debug|Win32.ActiveCfg = Debug|Win32
-		{E05E23A5-67DE-42B5-98A3-E63CCE0CC0AF}.Debug|Win32.Build.0 = Debug|Win32
-		{E05E23A5-67DE-42B5-98A3-E63CCE0CC0AF}.Debug|Win64.ActiveCfg = Debug|x64
-		{E05E23A5-67DE-42B5-98A3-E63CCE0CC0AF}.Debug|Win64.Build.0 = Debug|x64
-		{E05E23A5-67DE-42B5-98A3-E63CCE0CC0AF}.Release|NX64.ActiveCfg = Release|NX64
-		{E05E23A5-67DE-42B5-98A3-E63CCE0CC0AF}.Release|NX64.Build.0 = Release|NX64
-		{E05E23A5-67DE-42B5-98A3-E63CCE0CC0AF}.Release|ORBIS.ActiveCfg = Release|Win32
-		{E05E23A5-67DE-42B5-98A3-E63CCE0CC0AF}.Release|Win32.ActiveCfg = Release|Win32
-		{E05E23A5-67DE-42B5-98A3-E63CCE0CC0AF}.Release|Win32.Build.0 = Release|Win32
-		{E05E23A5-67DE-42B5-98A3-E63CCE0CC0AF}.Release|Win64.ActiveCfg = Release|x64
-		{E05E23A5-67DE-42B5-98A3-E63CCE0CC0AF}.Release|Win64.Build.0 = Release|x64
-		{F59FA82C-DDB9-4EE2-80AE-CB0E4C6567A4}.Debug|NX64.ActiveCfg = Debug|NX64
-		{F59FA82C-DDB9-4EE2-80AE-CB0E4C6567A4}.Debug|NX64.Build.0 = Debug|NX64
-		{F59FA82C-DDB9-4EE2-80AE-CB0E4C6567A4}.Debug|ORBIS.ActiveCfg = Debug|Win32
-		{F59FA82C-DDB9-4EE2-80AE-CB0E4C6567A4}.Debug|Win32.ActiveCfg = Debug|Win32
-		{F59FA82C-DDB9-4EE2-80AE-CB0E4C6567A4}.Debug|Win32.Build.0 = Debug|Win32
-		{F59FA82C-DDB9-4EE2-80AE-CB0E4C6567A4}.Debug|Win64.ActiveCfg = Debug|x64
-		{F59FA82C-DDB9-4EE2-80AE-CB0E4C6567A4}.Debug|Win64.Build.0 = Debug|x64
-		{F59FA82C-DDB9-4EE2-80AE-CB0E4C6567A4}.Release|NX64.ActiveCfg = Release|NX64
-		{F59FA82C-DDB9-4EE2-80AE-CB0E4C6567A4}.Release|NX64.Build.0 = Release|NX64
-		{F59FA82C-DDB9-4EE2-80AE-CB0E4C6567A4}.Release|ORBIS.ActiveCfg = Release|Win32
-		{F59FA82C-DDB9-4EE2-80AE-CB0E4C6567A4}.Release|Win32.ActiveCfg = Release|Win32
-		{F59FA82C-DDB9-4EE2-80AE-CB0E4C6567A4}.Release|Win32.Build.0 = Release|Win32
-		{F59FA82C-DDB9-4EE2-80AE-CB0E4C6567A4}.Release|Win64.ActiveCfg = Release|x64
-		{F59FA82C-DDB9-4EE2-80AE-CB0E4C6567A4}.Release|Win64.Build.0 = Release|x64
-		{81C83B42-D00A-4FA3-9A3D-80F9D46524BF}.Debug|NX64.ActiveCfg = Debug|NX64
-		{81C83B42-D00A-4FA3-9A3D-80F9D46524BF}.Debug|NX64.Build.0 = Debug|NX64
-		{81C83B42-D00A-4FA3-9A3D-80F9D46524BF}.Debug|ORBIS.ActiveCfg = Debug|ORBIS
-		{81C83B42-D00A-4FA3-9A3D-80F9D46524BF}.Debug|ORBIS.Build.0 = Debug|ORBIS
-		{81C83B42-D00A-4FA3-9A3D-80F9D46524BF}.Debug|Win32.ActiveCfg = Debug|Win32
-		{81C83B42-D00A-4FA3-9A3D-80F9D46524BF}.Debug|Win32.Build.0 = Debug|Win32
-		{81C83B42-D00A-4FA3-9A3D-80F9D46524BF}.Debug|Win64.ActiveCfg = Debug|x64
-		{81C83B42-D00A-4FA3-9A3D-80F9D46524BF}.Debug|Win64.Build.0 = Debug|x64
-		{81C83B42-D00A-4FA3-9A3D-80F9D46524BF}.Release|NX64.ActiveCfg = Release|NX64
-		{81C83B42-D00A-4FA3-9A3D-80F9D46524BF}.Release|NX64.Build.0 = Release|NX64
-		{81C83B42-D00A-4FA3-9A3D-80F9D46524BF}.Release|ORBIS.ActiveCfg = Release|ORBIS
-		{81C83B42-D00A-4FA3-9A3D-80F9D46524BF}.Release|ORBIS.Build.0 = Release|ORBIS
-		{81C83B42-D00A-4FA3-9A3D-80F9D46524BF}.Release|Win32.ActiveCfg = Release|Win32
-		{81C83B42-D00A-4FA3-9A3D-80F9D46524BF}.Release|Win32.Build.0 = Release|Win32
-		{81C83B42-D00A-4FA3-9A3D-80F9D46524BF}.Release|Win64.ActiveCfg = Release|x64
-		{81C83B42-D00A-4FA3-9A3D-80F9D46524BF}.Release|Win64.Build.0 = Release|x64
-		{31B96262-1C41-43B9-BA38-27AA385B05DB}.Debug|NX64.ActiveCfg = Debug|NX64
-		{31B96262-1C41-43B9-BA38-27AA385B05DB}.Debug|NX64.Build.0 = Debug|NX64
-		{31B96262-1C41-43B9-BA38-27AA385B05DB}.Debug|ORBIS.ActiveCfg = Debug|ORBIS
-		{31B96262-1C41-43B9-BA38-27AA385B05DB}.Debug|ORBIS.Build.0 = Debug|ORBIS
-		{31B96262-1C41-43B9-BA38-27AA385B05DB}.Debug|Win32.ActiveCfg = Debug|Win32
-		{31B96262-1C41-43B9-BA38-27AA385B05DB}.Debug|Win32.Build.0 = Debug|Win32
-		{31B96262-1C41-43B9-BA38-27AA385B05DB}.Debug|Win64.ActiveCfg = Debug|x64
-		{31B96262-1C41-43B9-BA38-27AA385B05DB}.Debug|Win64.Build.0 = Debug|x64
-		{31B96262-1C41-43B9-BA38-27AA385B05DB}.Release|NX64.ActiveCfg = Release|NX64
-		{31B96262-1C41-43B9-BA38-27AA385B05DB}.Release|NX64.Build.0 = Release|NX64
-		{31B96262-1C41-43B9-BA38-27AA385B05DB}.Release|ORBIS.ActiveCfg = Release|ORBIS
-		{31B96262-1C41-43B9-BA38-27AA385B05DB}.Release|ORBIS.Build.0 = Release|ORBIS
-		{31B96262-1C41-43B9-BA38-27AA385B05DB}.Release|Win32.ActiveCfg = Release|Win32
-		{31B96262-1C41-43B9-BA38-27AA385B05DB}.Release|Win32.Build.0 = Release|Win32
-		{31B96262-1C41-43B9-BA38-27AA385B05DB}.Release|Win64.ActiveCfg = Release|x64
-		{31B96262-1C41-43B9-BA38-27AA385B05DB}.Release|Win64.Build.0 = Release|x64
-		{5F5714D0-1C3D-4522-A409-214C5A2951AA}.Debug|NX64.ActiveCfg = Debug|NX64
-		{5F5714D0-1C3D-4522-A409-214C5A2951AA}.Debug|NX64.Build.0 = Debug|NX64
-		{5F5714D0-1C3D-4522-A409-214C5A2951AA}.Debug|ORBIS.ActiveCfg = Debug|ORBIS
-		{5F5714D0-1C3D-4522-A409-214C5A2951AA}.Debug|ORBIS.Build.0 = Debug|ORBIS
-		{5F5714D0-1C3D-4522-A409-214C5A2951AA}.Debug|Win32.ActiveCfg = Debug|Win32
-		{5F5714D0-1C3D-4522-A409-214C5A2951AA}.Debug|Win32.Build.0 = Debug|Win32
-		{5F5714D0-1C3D-4522-A409-214C5A2951AA}.Debug|Win64.ActiveCfg = Debug|x64
-		{5F5714D0-1C3D-4522-A409-214C5A2951AA}.Debug|Win64.Build.0 = Debug|x64
-		{5F5714D0-1C3D-4522-A409-214C5A2951AA}.Release|NX64.ActiveCfg = Release|NX64
-		{5F5714D0-1C3D-4522-A409-214C5A2951AA}.Release|NX64.Build.0 = Release|NX64
-		{5F5714D0-1C3D-4522-A409-214C5A2951AA}.Release|ORBIS.ActiveCfg = Release|ORBIS
-		{5F5714D0-1C3D-4522-A409-214C5A2951AA}.Release|ORBIS.Build.0 = Release|ORBIS
-		{5F5714D0-1C3D-4522-A409-214C5A2951AA}.Release|Win32.ActiveCfg = Release|Win32
-		{5F5714D0-1C3D-4522-A409-214C5A2951AA}.Release|Win32.Build.0 = Release|Win32
-		{5F5714D0-1C3D-4522-A409-214C5A2951AA}.Release|Win64.ActiveCfg = Release|x64
-		{5F5714D0-1C3D-4522-A409-214C5A2951AA}.Release|Win64.Build.0 = Release|x64
-		{46910277-18E3-4151-9AD9-DC5B551772A9}.Debug|NX64.ActiveCfg = Debug|NX64
-		{46910277-18E3-4151-9AD9-DC5B551772A9}.Debug|NX64.Build.0 = Debug|NX64
-		{46910277-18E3-4151-9AD9-DC5B551772A9}.Debug|ORBIS.ActiveCfg = Debug|ORBIS
-		{46910277-18E3-4151-9AD9-DC5B551772A9}.Debug|ORBIS.Build.0 = Debug|ORBIS
-		{46910277-18E3-4151-9AD9-DC5B551772A9}.Debug|Win32.ActiveCfg = Debug|Win32
-		{46910277-18E3-4151-9AD9-DC5B551772A9}.Debug|Win32.Build.0 = Debug|Win32
-		{46910277-18E3-4151-9AD9-DC5B551772A9}.Debug|Win64.ActiveCfg = Debug|x64
-		{46910277-18E3-4151-9AD9-DC5B551772A9}.Debug|Win64.Build.0 = Debug|x64
-		{46910277-18E3-4151-9AD9-DC5B551772A9}.Release|NX64.ActiveCfg = Release|NX64
-		{46910277-18E3-4151-9AD9-DC5B551772A9}.Release|NX64.Build.0 = Release|NX64
-		{46910277-18E3-4151-9AD9-DC5B551772A9}.Release|ORBIS.ActiveCfg = Release|ORBIS
-		{46910277-18E3-4151-9AD9-DC5B551772A9}.Release|ORBIS.Build.0 = Release|ORBIS
-		{46910277-18E3-4151-9AD9-DC5B551772A9}.Release|Win32.ActiveCfg = Release|Win32
-		{46910277-18E3-4151-9AD9-DC5B551772A9}.Release|Win32.Build.0 = Release|Win32
-		{46910277-18E3-4151-9AD9-DC5B551772A9}.Release|Win64.ActiveCfg = Release|x64
-		{46910277-18E3-4151-9AD9-DC5B551772A9}.Release|Win64.Build.0 = Release|x64
-		{51626A22-DD68-4450-9696-13B03BF7A2C5}.Debug|NX64.ActiveCfg = Debug|NX64
-		{51626A22-DD68-4450-9696-13B03BF7A2C5}.Debug|NX64.Build.0 = Debug|NX64
-		{51626A22-DD68-4450-9696-13B03BF7A2C5}.Debug|ORBIS.ActiveCfg = Debug|ORBIS
-		{51626A22-DD68-4450-9696-13B03BF7A2C5}.Debug|ORBIS.Build.0 = Debug|ORBIS
-		{51626A22-DD68-4450-9696-13B03BF7A2C5}.Debug|Win32.ActiveCfg = Debug|Win32
-		{51626A22-DD68-4450-9696-13B03BF7A2C5}.Debug|Win32.Build.0 = Debug|Win32
-		{51626A22-DD68-4450-9696-13B03BF7A2C5}.Debug|Win64.ActiveCfg = Debug|x64
-		{51626A22-DD68-4450-9696-13B03BF7A2C5}.Debug|Win64.Build.0 = Debug|x64
-		{51626A22-DD68-4450-9696-13B03BF7A2C5}.Release|NX64.ActiveCfg = Release|NX64
-		{51626A22-DD68-4450-9696-13B03BF7A2C5}.Release|NX64.Build.0 = Release|NX64
-		{51626A22-DD68-4450-9696-13B03BF7A2C5}.Release|ORBIS.ActiveCfg = Release|ORBIS
-		{51626A22-DD68-4450-9696-13B03BF7A2C5}.Release|ORBIS.Build.0 = Release|ORBIS
-		{51626A22-DD68-4450-9696-13B03BF7A2C5}.Release|Win32.ActiveCfg = Release|Win32
-		{51626A22-DD68-4450-9696-13B03BF7A2C5}.Release|Win32.Build.0 = Release|Win32
-		{51626A22-DD68-4450-9696-13B03BF7A2C5}.Release|Win64.ActiveCfg = Release|x64
-		{51626A22-DD68-4450-9696-13B03BF7A2C5}.Release|Win64.Build.0 = Release|x64
-	EndGlobalSection
-	GlobalSection(SolutionProperties) = preSolution
-		HideSolutionNode = FALSE
-	EndGlobalSection
-	GlobalSection(NestedProjects) = preSolution
-		{9E62F2FE-3408-4EAE-8238-FD84238CEEDA} = {1AFD580B-98B8-4689-B661-38C41132C60E}
-		{83D3B207-C601-4025-8F41-01DEDC354661} = {1AFD580B-98B8-4689-B661-38C41132C60E}
-		{D84021CA-B233-4E0F-8A52-071B83BBCCC4} = {1AFD580B-98B8-4689-B661-38C41132C60E}
-		{8F59A635-0240-4D7F-A80D-050C3F1670C2} = {E4DFEBF9-C310-462F-9876-7EB59C1E4D4E}
-		{962D4E25-45D3-4ACE-8C02-69FA3713ABD4} = {E4DFEBF9-C310-462F-9876-7EB59C1E4D4E}
-		{1782F849-B6E1-466D-9F02-A751F3F8712C} = {E4DFEBF9-C310-462F-9876-7EB59C1E4D4E}
-		{5A27FF18-A1EC-49BE-9455-415F1C701153} = {E4DFEBF9-C310-462F-9876-7EB59C1E4D4E}
-		{D7F6C2CA-5A13-4FD0-8468-1833923E3EE3} = {E4DFEBF9-C310-462F-9876-7EB59C1E4D4E}
-		{B1E10086-A1DA-401A-834D-969C9DBB5CC1} = {B6297FF2-63D0-41EE-BE13-EFF720C9B0FA}
-		{B92ABADC-45BE-4CC5-B724-9426053123A1} = {E74CF679-CA2A-47E9-B1F4-3779D6AC6B04}
-		{7B083DA2-FE08-4F6D-BFDD-195D5C2783EB} = {E74CF679-CA2A-47E9-B1F4-3779D6AC6B04}
-		{1C5B8702-290C-42DA-AA9E-671348F5B747} = {E74CF679-CA2A-47E9-B1F4-3779D6AC6B04}
-		{6BF81B39-EDC2-4227-9992-C2D8ABEA95AF} = {E74CF679-CA2A-47E9-B1F4-3779D6AC6B04}
-		{EE203B88-44CF-4859-9D42-7A1F43FECB52} = {B6297FF2-63D0-41EE-BE13-EFF720C9B0FA}
-		{BCEE0132-8E24-49BE-AFEB-96DAD14396BA} = {E74CF679-CA2A-47E9-B1F4-3779D6AC6B04}
-		{B0A53D75-CBB4-4FDF-93AC-2D12A79ADA0E} = {E74CF679-CA2A-47E9-B1F4-3779D6AC6B04}
-		{834852DB-EDB6-4FD0-BCF9-45CD01126962} = {E74CF679-CA2A-47E9-B1F4-3779D6AC6B04}
-		{6BF81B39-EDC2-4227-9982-C2D8ABEA95AF} = {E74CF679-CA2A-47E9-B1F4-3779D6AC6B04}
-		{572E5B9C-7E19-489C-BD8A-E8401CFBBC47} = {E74CF679-CA2A-47E9-B1F4-3779D6AC6B04}
-		{E05E23A5-67DE-42B5-98A3-E63CCE0CC0AF} = {E74CF679-CA2A-47E9-B1F4-3779D6AC6B04}
-		{F59FA82C-DDB9-4EE2-80AE-CB0E4C6567A4} = {E74CF679-CA2A-47E9-B1F4-3779D6AC6B04}
-		{81C83B42-D00A-4FA3-9A3D-80F9D46524BF} = {E74CF679-CA2A-47E9-B1F4-3779D6AC6B04}
-		{31B96262-1C41-43B9-BA38-27AA385B05DB} = {E74CF679-CA2A-47E9-B1F4-3779D6AC6B04}
-		{5F5714D0-1C3D-4522-A409-214C5A2951AA} = {E74CF679-CA2A-47E9-B1F4-3779D6AC6B04}
-		{46910277-18E3-4151-9AD9-DC5B551772A9} = {E74CF679-CA2A-47E9-B1F4-3779D6AC6B04}
-		{51626A22-DD68-4450-9696-13B03BF7A2C5} = {E74CF679-CA2A-47E9-B1F4-3779D6AC6B04}
-	EndGlobalSection
-	GlobalSection(ExtensibilityGlobals) = postSolution
-		SolutionGuid = {47D50023-EEA2-48DA-8902-F96357602A79}
-	EndGlobalSection
-EndGlobal
diff --git a/src/3rdparty/Makefile.am b/src/3rdparty/Makefile.am
deleted file mode 100644
index e1528f34..00000000
--- a/src/3rdparty/Makefile.am
+++ /dev/null
@@ -1,26 +0,0 @@
-
-include $(top_srcdir)/build/autotools/common.am
-
-noinst_LIBRARIES = liblol-lua.a
-
-# Only remove flags that were actually set, because we don't know
-# what the compiler actually accepts.
-disable_cflags_lua = $(filter $(AM_CPPFLAGS:-W%=-Wno-%), \
-    -Wno-cast-qual)
-
-liblol_lua_a_SOURCES = $(lua_sources)
-liblol_lua_a_CPPFLAGS = $(AM_CPPFLAGS) -DLUA_ANSI $(disable_cflags_lua)
-
-include lol-lua.am
-
-EXTRA_DIST += $(imgui_sources) $(mingw_std_threads_sources) $(pegtl_sources) \
-              $(cpp_httplib_sources)
-EXTRA_DIST += lol-lua.vcxproj lol-lua.vcxproj.filters
-
-include lol-cpp-httplib.am
-include lol-mingw-std-threads.am
-include lol-pegtl.am
-
-# XXX: this is included by the parent Makefile instead
-#include lol-imgui.am
-
diff --git a/src/3rdparty/bullet3 b/src/3rdparty/bullet3
deleted file mode 160000
index ce28bd53..00000000
--- a/src/3rdparty/bullet3
+++ /dev/null
@@ -1 +0,0 @@
-Subproject commit ce28bd5369586cfce95885f7f99e421aa2384cd7
diff --git a/src/3rdparty/cpp-httplib b/src/3rdparty/cpp-httplib
deleted file mode 160000
index b2516685..00000000
--- a/src/3rdparty/cpp-httplib
+++ /dev/null
@@ -1 +0,0 @@
-Subproject commit b251668522dd459d2c6a75c10390a11b640be708
diff --git a/src/3rdparty/imgui b/src/3rdparty/imgui
deleted file mode 160000
index 4ebf5257..00000000
--- a/src/3rdparty/imgui
+++ /dev/null
@@ -1 +0,0 @@
-Subproject commit 4ebf525785e22f3d96433cb4d070e890ef819190
diff --git a/src/3rdparty/lol-bullet.vcxproj b/src/3rdparty/lol-bullet.vcxproj
deleted file mode 100644
index 9e17aaa5..00000000
--- a/src/3rdparty/lol-bullet.vcxproj
+++ /dev/null
@@ -1,755 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <PropertyGroup Label="LolMacros">
-    <LolDir Condition="Exists('$(SolutionDir)\lol')">$(SolutionDir)\lol</LolDir>
-    <LolDir Condition="!Exists('$(SolutionDir)\lol')">$(SolutionDir)</LolDir>
-  </PropertyGroup>
-  <ItemGroup Label="ProjectConfigurations">
-    <ProjectConfiguration Include="Debug|NX64">
-      <Configuration>Debug</Configuration>
-      <Platform>NX64</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Debug|ORBIS">
-      <Configuration>Debug</Configuration>
-      <Platform>ORBIS</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Debug|Win32">
-      <Configuration>Debug</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Debug|x64">
-      <Configuration>Debug</Configuration>
-      <Platform>x64</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Release|NX64">
-      <Configuration>Release</Configuration>
-      <Platform>NX64</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Release|ORBIS">
-      <Configuration>Release</Configuration>
-      <Platform>ORBIS</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Release|Win32">
-      <Configuration>Release</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Release|x64">
-      <Configuration>Release</Configuration>
-      <Platform>x64</Platform>
-    </ProjectConfiguration>
-  </ItemGroup>
-  <PropertyGroup Label="Globals">
-    <ProjectGuid>{83D3B207-C601-4025-8F41-01DEDC354661}</ProjectGuid>
-    <ConfigurationType>StaticLibrary</ConfigurationType>
-    <Keyword>Win32Proj</Keyword>
-  </PropertyGroup>
-  <Import Project="$(LolDir)\build\msbuild\lol.config.props" />
-  <PropertyGroup Label="Configuration">
-    <CharacterSet>MultiByte</CharacterSet>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)'=='Debug'" Label="Configuration">
-    <UseDebugLibraries>true</UseDebugLibraries>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)'=='Release'" Label="Configuration">
-    <UseDebugLibraries>false</UseDebugLibraries>
-    <WholeProgramOptimization>true</WholeProgramOptimization>
-  </PropertyGroup>
-  <ImportGroup Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(LolDir)\build\msbuild\lol.vars.props" />
-  </ImportGroup>
-  <PropertyGroup Label="UserMacros" />
-  <Import Project="$(LolDir)\build\msbuild\lol.rules.props" />
-  <ItemDefinitionGroup>
-    <ClCompile>
-      <PreprocessorDefinitions>_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-    </ClCompile>
-  </ItemDefinitionGroup>
-  <ItemGroup>
-    <!--<ClCompile Include="bullet3/src/btBulletCollisionAll.cpp" />-->
-    <ClInclude Include="bullet3/src/btBulletCollisionCommon.h" />
-    <!--<ClCompile Include="bullet3/src/btBulletDynamicsAll.cpp" />-->
-    <ClInclude Include="bullet3/src/btBulletDynamicsCommon.h" />
-    <!--<ClCompile Include="bullet3/src/btLinearMathAll.cpp" />-->
-  </ItemGroup>
-  <ItemGroup>
-    <ClInclude Include="bullet3/src/Bullet3Collision/BroadPhaseCollision/b3BroadphaseCallback.h" />
-    <ClCompile Include="bullet3/src/Bullet3Collision/BroadPhaseCollision/b3DynamicBvhBroadphase.cpp" />
-    <ClInclude Include="bullet3/src/Bullet3Collision/BroadPhaseCollision/b3DynamicBvhBroadphase.h" />
-    <ClCompile Include="bullet3/src/Bullet3Collision/BroadPhaseCollision/b3DynamicBvh.cpp" />
-    <ClInclude Include="bullet3/src/Bullet3Collision/BroadPhaseCollision/b3DynamicBvh.h" />
-    <ClCompile Include="bullet3/src/Bullet3Collision/BroadPhaseCollision/b3OverlappingPairCache.cpp" />
-    <ClInclude Include="bullet3/src/Bullet3Collision/BroadPhaseCollision/b3OverlappingPairCache.h" />
-    <ClInclude Include="bullet3/src/Bullet3Collision/BroadPhaseCollision/b3OverlappingPair.h" />
-    <ClInclude Include="bullet3/src/Bullet3Collision/BroadPhaseCollision/shared/b3Aabb.h" />
-    <ClInclude Include="bullet3/src/Bullet3Collision/NarrowPhaseCollision/b3Config.h" />
-    <ClInclude Include="bullet3/src/Bullet3Collision/NarrowPhaseCollision/b3Contact4.h" />
-    <ClCompile Include="bullet3/src/Bullet3Collision/NarrowPhaseCollision/b3ConvexUtility.cpp" />
-    <ClInclude Include="bullet3/src/Bullet3Collision/NarrowPhaseCollision/b3ConvexUtility.h" />
-    <ClCompile Include="bullet3/src/Bullet3Collision/NarrowPhaseCollision/b3CpuNarrowPhase.cpp" />
-    <ClInclude Include="bullet3/src/Bullet3Collision/NarrowPhaseCollision/b3CpuNarrowPhase.h" />
-    <ClInclude Include="bullet3/src/Bullet3Collision/NarrowPhaseCollision/b3RaycastInfo.h" />
-    <ClInclude Include="bullet3/src/Bullet3Collision/NarrowPhaseCollision/b3RigidBodyCL.h" />
-    <ClInclude Include="bullet3/src/Bullet3Collision/NarrowPhaseCollision/shared/b3BvhSubtreeInfoData.h" />
-    <ClInclude Include="bullet3/src/Bullet3Collision/NarrowPhaseCollision/shared/b3BvhTraversal.h" />
-    <ClInclude Include="bullet3/src/Bullet3Collision/NarrowPhaseCollision/shared/b3ClipFaces.h" />
-    <ClInclude Include="bullet3/src/Bullet3Collision/NarrowPhaseCollision/shared/b3Collidable.h" />
-    <ClInclude Include="bullet3/src/Bullet3Collision/NarrowPhaseCollision/shared/b3Contact4Data.h" />
-    <ClInclude Include="bullet3/src/Bullet3Collision/NarrowPhaseCollision/shared/b3ContactConvexConvexSAT.h" />
-    <ClInclude Include="bullet3/src/Bullet3Collision/NarrowPhaseCollision/shared/b3ContactSphereSphere.h" />
-    <ClInclude Include="bullet3/src/Bullet3Collision/NarrowPhaseCollision/shared/b3ConvexPolyhedronData.h" />
-    <ClInclude Include="bullet3/src/Bullet3Collision/NarrowPhaseCollision/shared/b3FindConcaveSatAxis.h" />
-    <ClInclude Include="bullet3/src/Bullet3Collision/NarrowPhaseCollision/shared/b3FindSeparatingAxis.h" />
-    <ClInclude Include="bullet3/src/Bullet3Collision/NarrowPhaseCollision/shared/b3MprPenetration.h" />
-    <ClInclude Include="bullet3/src/Bullet3Collision/NarrowPhaseCollision/shared/b3NewContactReduction.h" />
-    <ClInclude Include="bullet3/src/Bullet3Collision/NarrowPhaseCollision/shared/b3QuantizedBvhNodeData.h" />
-    <ClInclude Include="bullet3/src/Bullet3Collision/NarrowPhaseCollision/shared/b3ReduceContacts.h" />
-    <ClInclude Include="bullet3/src/Bullet3Collision/NarrowPhaseCollision/shared/b3RigidBodyData.h" />
-    <ClInclude Include="bullet3/src/Bullet3Collision/NarrowPhaseCollision/shared/b3UpdateAabbs.h" />
-  </ItemGroup>
-  <ItemGroup>
-    <ClCompile Include="bullet3/src/Bullet3Common/b3AlignedAllocator.cpp" />
-    <ClInclude Include="bullet3/src/Bullet3Common/b3AlignedAllocator.h" />
-    <ClInclude Include="bullet3/src/Bullet3Common/b3AlignedObjectArray.h" />
-    <ClInclude Include="bullet3/src/Bullet3Common/b3CommandLineArgs.h" />
-    <ClInclude Include="bullet3/src/Bullet3Common/b3FileUtils.h" />
-    <ClInclude Include="bullet3/src/Bullet3Common/b3HashMap.h" />
-    <ClCompile Include="bullet3/src/Bullet3Common/b3Logging.cpp" />
-    <ClInclude Include="bullet3/src/Bullet3Common/b3Logging.h" />
-    <ClInclude Include="bullet3/src/Bullet3Common/b3Matrix3x3.h" />
-    <ClInclude Include="bullet3/src/Bullet3Common/b3MinMax.h" />
-    <ClInclude Include="bullet3/src/Bullet3Common/b3PoolAllocator.h" />
-    <ClInclude Include="bullet3/src/Bullet3Common/b3QuadWord.h" />
-    <ClInclude Include="bullet3/src/Bullet3Common/b3Quaternion.h" />
-    <ClInclude Include="bullet3/src/Bullet3Common/b3Random.h" />
-    <ClInclude Include="bullet3/src/Bullet3Common/b3ResizablePool.h" />
-    <ClInclude Include="bullet3/src/Bullet3Common/b3Scalar.h" />
-    <ClInclude Include="bullet3/src/Bullet3Common/b3StackAlloc.h" />
-    <ClInclude Include="bullet3/src/Bullet3Common/b3Transform.h" />
-    <ClInclude Include="bullet3/src/Bullet3Common/b3TransformUtil.h" />
-    <ClCompile Include="bullet3/src/Bullet3Common/b3Vector3.cpp" />
-    <ClInclude Include="bullet3/src/Bullet3Common/b3Vector3.h" />
-    <ClInclude Include="bullet3/src/Bullet3Common/shared/b3Float4.h" />
-    <ClInclude Include="bullet3/src/Bullet3Common/shared/b3Int2.h" />
-    <ClInclude Include="bullet3/src/Bullet3Common/shared/b3Int4.h" />
-    <ClInclude Include="bullet3/src/Bullet3Common/shared/b3Mat3x3.h" />
-    <ClInclude Include="bullet3/src/Bullet3Common/shared/b3PlatformDefinitions.h" />
-    <ClInclude Include="bullet3/src/Bullet3Common/shared/b3Quat.h" />
-  </ItemGroup>
-  <ItemGroup>
-    <ClCompile Include="bullet3/src/Bullet3Dynamics/b3CpuRigidBodyPipeline.cpp" />
-    <ClInclude Include="bullet3/src/Bullet3Dynamics/b3CpuRigidBodyPipeline.h" />
-    <ClInclude Include="bullet3/src/Bullet3Dynamics/ConstraintSolver/b3ContactSolverInfo.h" />
-    <ClCompile Include="bullet3/src/Bullet3Dynamics/ConstraintSolver/b3FixedConstraint.cpp" />
-    <ClInclude Include="bullet3/src/Bullet3Dynamics/ConstraintSolver/b3FixedConstraint.h" />
-    <ClCompile Include="bullet3/src/Bullet3Dynamics/ConstraintSolver/b3Generic6DofConstraint.cpp" />
-    <ClInclude Include="bullet3/src/Bullet3Dynamics/ConstraintSolver/b3Generic6DofConstraint.h" />
-    <ClInclude Include="bullet3/src/Bullet3Dynamics/ConstraintSolver/b3JacobianEntry.h" />
-    <ClCompile Include="bullet3/src/Bullet3Dynamics/ConstraintSolver/b3PgsJacobiSolver.cpp" />
-    <ClInclude Include="bullet3/src/Bullet3Dynamics/ConstraintSolver/b3PgsJacobiSolver.h" />
-    <ClCompile Include="bullet3/src/Bullet3Dynamics/ConstraintSolver/b3Point2PointConstraint.cpp" />
-    <ClInclude Include="bullet3/src/Bullet3Dynamics/ConstraintSolver/b3Point2PointConstraint.h" />
-    <ClInclude Include="bullet3/src/Bullet3Dynamics/ConstraintSolver/b3SolverBody.h" />
-    <ClInclude Include="bullet3/src/Bullet3Dynamics/ConstraintSolver/b3SolverConstraint.h" />
-    <ClCompile Include="bullet3/src/Bullet3Dynamics/ConstraintSolver/b3TypedConstraint.cpp" />
-    <ClInclude Include="bullet3/src/Bullet3Dynamics/ConstraintSolver/b3TypedConstraint.h" />
-    <ClInclude Include="bullet3/src/Bullet3Dynamics/shared/b3ContactConstraint4.h" />
-    <ClInclude Include="bullet3/src/Bullet3Dynamics/shared/b3ConvertConstraint4.h" />
-    <ClInclude Include="bullet3/src/Bullet3Dynamics/shared/b3Inertia.h" />
-    <ClInclude Include="bullet3/src/Bullet3Dynamics/shared/b3IntegrateTransforms.h" />
-  </ItemGroup>
-  <ItemGroup>
-    <ClInclude Include="bullet3/src/Bullet3Geometry/b3AabbUtil.h" />
-    <ClCompile Include="bullet3/src/Bullet3Geometry/b3ConvexHullComputer.cpp" />
-    <ClInclude Include="bullet3/src/Bullet3Geometry/b3ConvexHullComputer.h" />
-    <ClCompile Include="bullet3/src/Bullet3Geometry/b3GeometryUtil.cpp" />
-    <ClInclude Include="bullet3/src/Bullet3Geometry/b3GeometryUtil.h" />
-    <ClInclude Include="bullet3/src/Bullet3Geometry/b3GrahamScan2dConvexHull.h" />
-  </ItemGroup>
-  <ItemGroup Condition="false">
-    <ClInclude Include="bullet3/src/Bullet3OpenCL/BroadphaseCollision/b3GpuBroadphaseInterface.h" />
-    <ClCompile Include="bullet3/src/Bullet3OpenCL/BroadphaseCollision/b3GpuGridBroadphase.cpp" />
-    <ClInclude Include="bullet3/src/Bullet3OpenCL/BroadphaseCollision/b3GpuGridBroadphase.h" />
-    <ClCompile Include="bullet3/src/Bullet3OpenCL/BroadphaseCollision/b3GpuParallelLinearBvhBroadphase.cpp" />
-    <ClInclude Include="bullet3/src/Bullet3OpenCL/BroadphaseCollision/b3GpuParallelLinearBvhBroadphase.h" />
-    <ClCompile Include="bullet3/src/Bullet3OpenCL/BroadphaseCollision/b3GpuParallelLinearBvh.cpp" />
-    <ClInclude Include="bullet3/src/Bullet3OpenCL/BroadphaseCollision/b3GpuParallelLinearBvh.h" />
-    <ClCompile Include="bullet3/src/Bullet3OpenCL/BroadphaseCollision/b3GpuSapBroadphase.cpp" />
-    <ClInclude Include="bullet3/src/Bullet3OpenCL/BroadphaseCollision/b3GpuSapBroadphase.h" />
-    <ClInclude Include="bullet3/src/Bullet3OpenCL/BroadphaseCollision/b3SapAabb.h" />
-    <ClInclude Include="bullet3/src/Bullet3OpenCL/BroadphaseCollision/kernels/gridBroadphase.cl" />
-    <ClInclude Include="bullet3/src/Bullet3OpenCL/BroadphaseCollision/kernels/gridBroadphaseKernels.h" />
-    <ClInclude Include="bullet3/src/Bullet3OpenCL/BroadphaseCollision/kernels/parallelLinearBvh.cl" />
-    <ClInclude Include="bullet3/src/Bullet3OpenCL/BroadphaseCollision/kernels/parallelLinearBvhKernels.h" />
-    <ClInclude Include="bullet3/src/Bullet3OpenCL/BroadphaseCollision/kernels/sap.cl" />
-    <ClInclude Include="bullet3/src/Bullet3OpenCL/BroadphaseCollision/kernels/sapKernels.h" />
-    <ClInclude Include="bullet3/src/Bullet3OpenCL/Initialize/b3OpenCLInclude.h" />
-    <ClCompile Include="bullet3/src/Bullet3OpenCL/Initialize/b3OpenCLUtils.cpp" />
-    <ClInclude Include="bullet3/src/Bullet3OpenCL/Initialize/b3OpenCLUtils.h" />
-    <ClInclude Include="bullet3/src/Bullet3OpenCL/NarrowphaseCollision/b3BvhInfo.h" />
-    <ClCompile Include="bullet3/src/Bullet3OpenCL/NarrowphaseCollision/b3ContactCache.cpp" />
-    <ClInclude Include="bullet3/src/Bullet3OpenCL/NarrowphaseCollision/b3ContactCache.h" />
-    <ClCompile Include="bullet3/src/Bullet3OpenCL/NarrowphaseCollision/b3ConvexHullContact.cpp" />
-    <ClInclude Include="bullet3/src/Bullet3OpenCL/NarrowphaseCollision/b3ConvexHullContact.h" />
-    <ClInclude Include="bullet3/src/Bullet3OpenCL/NarrowphaseCollision/b3ConvexPolyhedronCL.h" />
-    <ClCompile Include="bullet3/src/Bullet3OpenCL/NarrowphaseCollision/b3GjkEpa.cpp" />
-    <ClInclude Include="bullet3/src/Bullet3OpenCL/NarrowphaseCollision/b3GjkEpa.h" />
-    <ClCompile Include="bullet3/src/Bullet3OpenCL/NarrowphaseCollision/b3OptimizedBvh.cpp" />
-    <ClInclude Include="bullet3/src/Bullet3OpenCL/NarrowphaseCollision/b3OptimizedBvh.h" />
-    <ClCompile Include="bullet3/src/Bullet3OpenCL/NarrowphaseCollision/b3QuantizedBvh.cpp" />
-    <ClInclude Include="bullet3/src/Bullet3OpenCL/NarrowphaseCollision/b3QuantizedBvh.h" />
-    <ClCompile Include="bullet3/src/Bullet3OpenCL/NarrowphaseCollision/b3StridingMeshInterface.cpp" />
-    <ClInclude Include="bullet3/src/Bullet3OpenCL/NarrowphaseCollision/b3StridingMeshInterface.h" />
-    <ClInclude Include="bullet3/src/Bullet3OpenCL/NarrowphaseCollision/b3SupportMappings.h" />
-    <ClCompile Include="bullet3/src/Bullet3OpenCL/NarrowphaseCollision/b3TriangleCallback.cpp" />
-    <ClInclude Include="bullet3/src/Bullet3OpenCL/NarrowphaseCollision/b3TriangleCallback.h" />
-    <ClCompile Include="bullet3/src/Bullet3OpenCL/NarrowphaseCollision/b3TriangleIndexVertexArray.cpp" />
-    <ClInclude Include="bullet3/src/Bullet3OpenCL/NarrowphaseCollision/b3TriangleIndexVertexArray.h" />
-    <ClInclude Include="bullet3/src/Bullet3OpenCL/NarrowphaseCollision/b3VectorFloat4.h" />
-    <ClCompile Include="bullet3/src/Bullet3OpenCL/NarrowphaseCollision/b3VoronoiSimplexSolver.cpp" />
-    <ClInclude Include="bullet3/src/Bullet3OpenCL/NarrowphaseCollision/b3VoronoiSimplexSolver.h" />
-    <ClInclude Include="bullet3/src/Bullet3OpenCL/NarrowphaseCollision/kernels/bvhTraversal.cl" />
-    <ClInclude Include="bullet3/src/Bullet3OpenCL/NarrowphaseCollision/kernels/bvhTraversal.h" />
-    <ClInclude Include="bullet3/src/Bullet3OpenCL/NarrowphaseCollision/kernels/mpr.cl" />
-    <ClInclude Include="bullet3/src/Bullet3OpenCL/NarrowphaseCollision/kernels/mprKernels.h" />
-    <ClInclude Include="bullet3/src/Bullet3OpenCL/NarrowphaseCollision/kernels/primitiveContacts.cl" />
-    <ClInclude Include="bullet3/src/Bullet3OpenCL/NarrowphaseCollision/kernels/primitiveContacts.h" />
-    <ClInclude Include="bullet3/src/Bullet3OpenCL/NarrowphaseCollision/kernels/sat.cl" />
-    <ClInclude Include="bullet3/src/Bullet3OpenCL/NarrowphaseCollision/kernels/satClipHullContacts.cl" />
-    <ClInclude Include="bullet3/src/Bullet3OpenCL/NarrowphaseCollision/kernels/satClipHullContacts.h" />
-    <ClInclude Include="bullet3/src/Bullet3OpenCL/NarrowphaseCollision/kernels/satConcave.cl" />
-    <ClInclude Include="bullet3/src/Bullet3OpenCL/NarrowphaseCollision/kernels/satConcaveKernels.h" />
-    <ClInclude Include="bullet3/src/Bullet3OpenCL/NarrowphaseCollision/kernels/satKernels.h" />
-    <ClCompile Include="bullet3/src/Bullet3OpenCL/ParallelPrimitives/b3BoundSearchCL.cpp" />
-    <ClInclude Include="bullet3/src/Bullet3OpenCL/ParallelPrimitives/b3BoundSearchCL.h" />
-    <ClInclude Include="bullet3/src/Bullet3OpenCL/ParallelPrimitives/b3BufferInfoCL.h" />
-    <ClCompile Include="bullet3/src/Bullet3OpenCL/ParallelPrimitives/b3FillCL.cpp" />
-    <ClInclude Include="bullet3/src/Bullet3OpenCL/ParallelPrimitives/b3FillCL.h" />
-    <ClCompile Include="bullet3/src/Bullet3OpenCL/ParallelPrimitives/b3LauncherCL.cpp" />
-    <ClInclude Include="bullet3/src/Bullet3OpenCL/ParallelPrimitives/b3LauncherCL.h" />
-    <ClInclude Include="bullet3/src/Bullet3OpenCL/ParallelPrimitives/b3OpenCLArray.h" />
-    <ClCompile Include="bullet3/src/Bullet3OpenCL/ParallelPrimitives/b3PrefixScanCL.cpp" />
-    <ClInclude Include="bullet3/src/Bullet3OpenCL/ParallelPrimitives/b3PrefixScanCL.h" />
-    <ClCompile Include="bullet3/src/Bullet3OpenCL/ParallelPrimitives/b3PrefixScanFloat4CL.cpp" />
-    <ClInclude Include="bullet3/src/Bullet3OpenCL/ParallelPrimitives/b3PrefixScanFloat4CL.h" />
-    <ClCompile Include="bullet3/src/Bullet3OpenCL/ParallelPrimitives/b3RadixSort32CL.cpp" />
-    <ClInclude Include="bullet3/src/Bullet3OpenCL/ParallelPrimitives/b3RadixSort32CL.h" />
-    <ClInclude Include="bullet3/src/Bullet3OpenCL/ParallelPrimitives/kernels/BoundSearchKernels.cl" />
-    <ClInclude Include="bullet3/src/Bullet3OpenCL/ParallelPrimitives/kernels/BoundSearchKernelsCL.h" />
-    <ClInclude Include="bullet3/src/Bullet3OpenCL/ParallelPrimitives/kernels/CopyKernels.cl" />
-    <ClInclude Include="bullet3/src/Bullet3OpenCL/ParallelPrimitives/kernels/CopyKernelsCL.h" />
-    <ClInclude Include="bullet3/src/Bullet3OpenCL/ParallelPrimitives/kernels/FillKernels.cl" />
-    <ClInclude Include="bullet3/src/Bullet3OpenCL/ParallelPrimitives/kernels/FillKernelsCL.h" />
-    <ClInclude Include="bullet3/src/Bullet3OpenCL/ParallelPrimitives/kernels/PrefixScanFloat4Kernels.cl" />
-    <ClInclude Include="bullet3/src/Bullet3OpenCL/ParallelPrimitives/kernels/PrefixScanKernels.cl" />
-    <ClInclude Include="bullet3/src/Bullet3OpenCL/ParallelPrimitives/kernels/PrefixScanKernelsCL.h" />
-    <ClInclude Include="bullet3/src/Bullet3OpenCL/ParallelPrimitives/kernels/PrefixScanKernelsFloat4CL.h" />
-    <ClInclude Include="bullet3/src/Bullet3OpenCL/ParallelPrimitives/kernels/RadixSort32Kernels.cl" />
-    <ClInclude Include="bullet3/src/Bullet3OpenCL/ParallelPrimitives/kernels/RadixSort32KernelsCL.h" />
-    <ClCompile Include="bullet3/src/Bullet3OpenCL/Raycast/b3GpuRaycast.cpp" />
-    <ClInclude Include="bullet3/src/Bullet3OpenCL/Raycast/b3GpuRaycast.h" />
-    <ClInclude Include="bullet3/src/Bullet3OpenCL/Raycast/kernels/rayCastKernels.cl" />
-    <ClInclude Include="bullet3/src/Bullet3OpenCL/Raycast/kernels/rayCastKernels.h" />
-    <ClInclude Include="bullet3/src/Bullet3OpenCL/RigidBody/b3GpuConstraint4.h" />
-    <ClCompile Include="bullet3/src/Bullet3OpenCL/RigidBody/b3GpuGenericConstraint.cpp" />
-    <ClInclude Include="bullet3/src/Bullet3OpenCL/RigidBody/b3GpuGenericConstraint.h" />
-    <ClCompile Include="bullet3/src/Bullet3OpenCL/RigidBody/b3GpuJacobiContactSolver.cpp" />
-    <ClInclude Include="bullet3/src/Bullet3OpenCL/RigidBody/b3GpuJacobiContactSolver.h" />
-    <ClCompile Include="bullet3/src/Bullet3OpenCL/RigidBody/b3GpuNarrowPhase.cpp" />
-    <ClInclude Include="bullet3/src/Bullet3OpenCL/RigidBody/b3GpuNarrowPhase.h" />
-    <ClInclude Include="bullet3/src/Bullet3OpenCL/RigidBody/b3GpuNarrowPhaseInternalData.h" />
-    <ClCompile Include="bullet3/src/Bullet3OpenCL/RigidBody/b3GpuPgsConstraintSolver.cpp" />
-    <ClInclude Include="bullet3/src/Bullet3OpenCL/RigidBody/b3GpuPgsConstraintSolver.h" />
-    <ClCompile Include="bullet3/src/Bullet3OpenCL/RigidBody/b3GpuPgsContactSolver.cpp" />
-    <ClInclude Include="bullet3/src/Bullet3OpenCL/RigidBody/b3GpuPgsContactSolver.h" />
-    <ClCompile Include="bullet3/src/Bullet3OpenCL/RigidBody/b3GpuRigidBodyPipeline.cpp" />
-    <ClInclude Include="bullet3/src/Bullet3OpenCL/RigidBody/b3GpuRigidBodyPipeline.h" />
-    <ClInclude Include="bullet3/src/Bullet3OpenCL/RigidBody/b3GpuRigidBodyPipelineInternalData.h" />
-    <ClInclude Include="bullet3/src/Bullet3OpenCL/RigidBody/b3GpuSolverBody.h" />
-    <ClInclude Include="bullet3/src/Bullet3OpenCL/RigidBody/b3GpuSolverConstraint.h" />
-    <ClCompile Include="bullet3/src/Bullet3OpenCL/RigidBody/b3Solver.cpp" />
-    <ClInclude Include="bullet3/src/Bullet3OpenCL/RigidBody/b3Solver.h" />
-    <ClInclude Include="bullet3/src/Bullet3OpenCL/RigidBody/kernels/batchingKernels.cl" />
-    <ClInclude Include="bullet3/src/Bullet3OpenCL/RigidBody/kernels/batchingKernels.h" />
-    <ClInclude Include="bullet3/src/Bullet3OpenCL/RigidBody/kernels/batchingKernelsNew.cl" />
-    <ClInclude Include="bullet3/src/Bullet3OpenCL/RigidBody/kernels/batchingKernelsNew.h" />
-    <ClInclude Include="bullet3/src/Bullet3OpenCL/RigidBody/kernels/integrateKernel.cl" />
-    <ClInclude Include="bullet3/src/Bullet3OpenCL/RigidBody/kernels/integrateKernel.h" />
-    <ClInclude Include="bullet3/src/Bullet3OpenCL/RigidBody/kernels/jointSolver.cl" />
-    <ClInclude Include="bullet3/src/Bullet3OpenCL/RigidBody/kernels/jointSolver.h" />
-    <ClInclude Include="bullet3/src/Bullet3OpenCL/RigidBody/kernels/solveContact.cl" />
-    <ClInclude Include="bullet3/src/Bullet3OpenCL/RigidBody/kernels/solveContact.h" />
-    <ClInclude Include="bullet3/src/Bullet3OpenCL/RigidBody/kernels/solveFriction.cl" />
-    <ClInclude Include="bullet3/src/Bullet3OpenCL/RigidBody/kernels/solveFriction.h" />
-    <ClInclude Include="bullet3/src/Bullet3OpenCL/RigidBody/kernels/solverSetup2.cl" />
-    <ClInclude Include="bullet3/src/Bullet3OpenCL/RigidBody/kernels/solverSetup2.h" />
-    <ClInclude Include="bullet3/src/Bullet3OpenCL/RigidBody/kernels/solverSetup.cl" />
-    <ClInclude Include="bullet3/src/Bullet3OpenCL/RigidBody/kernels/solverSetup.h" />
-    <ClInclude Include="bullet3/src/Bullet3OpenCL/RigidBody/kernels/solverUtils.cl" />
-    <ClInclude Include="bullet3/src/Bullet3OpenCL/RigidBody/kernels/solverUtils.h" />
-    <ClInclude Include="bullet3/src/Bullet3OpenCL/RigidBody/kernels/updateAabbsKernel.cl" />
-    <ClInclude Include="bullet3/src/Bullet3OpenCL/RigidBody/kernels/updateAabbsKernel.h" />
-  </ItemGroup>
-  <ItemGroup>
-    <ClInclude Include="bullet3/src/Bullet3Serialize/Bullet2FileLoader/autogenerated/bullet2.h" />
-    <ClCompile Include="bullet3/src/Bullet3Serialize/Bullet2FileLoader/b3BulletFile.cpp" />
-    <ClInclude Include="bullet3/src/Bullet3Serialize/Bullet2FileLoader/b3BulletFile.h" />
-    <ClCompile Include="bullet3/src/Bullet3Serialize/Bullet2FileLoader/b3Chunk.cpp" />
-    <ClInclude Include="bullet3/src/Bullet3Serialize/Bullet2FileLoader/b3Chunk.h" />
-    <ClInclude Include="bullet3/src/Bullet3Serialize/Bullet2FileLoader/b3Common.h" />
-    <ClInclude Include="bullet3/src/Bullet3Serialize/Bullet2FileLoader/b3Defines.h" />
-    <ClCompile Include="bullet3/src/Bullet3Serialize/Bullet2FileLoader/b3DNA.cpp" />
-    <ClInclude Include="bullet3/src/Bullet3Serialize/Bullet2FileLoader/b3DNA.h" />
-    <ClCompile Include="bullet3/src/Bullet3Serialize/Bullet2FileLoader/b3File.cpp" />
-    <ClInclude Include="bullet3/src/Bullet3Serialize/Bullet2FileLoader/b3File.h" />
-    <ClCompile Include="bullet3/src/Bullet3Serialize/Bullet2FileLoader/b3Serializer.cpp" />
-    <ClInclude Include="bullet3/src/Bullet3Serialize/Bullet2FileLoader/b3Serializer.h" />
-  </ItemGroup>
-  <ItemGroup>
-    <ClCompile Include="bullet3/src/BulletCollision/BroadphaseCollision/btAxisSweep3.cpp" />
-    <ClInclude Include="bullet3/src/BulletCollision/BroadphaseCollision/btAxisSweep3.h" />
-    <ClInclude Include="bullet3/src/BulletCollision/BroadphaseCollision/btAxisSweep3Internal.h" />
-    <ClInclude Include="bullet3/src/BulletCollision/BroadphaseCollision/btBroadphaseInterface.h" />
-    <ClCompile Include="bullet3/src/BulletCollision/BroadphaseCollision/btBroadphaseProxy.cpp" />
-    <ClInclude Include="bullet3/src/BulletCollision/BroadphaseCollision/btBroadphaseProxy.h" />
-    <ClCompile Include="bullet3/src/BulletCollision/BroadphaseCollision/btCollisionAlgorithm.cpp" />
-    <ClInclude Include="bullet3/src/BulletCollision/BroadphaseCollision/btCollisionAlgorithm.h" />
-    <ClCompile Include="bullet3/src/BulletCollision/BroadphaseCollision/btDbvtBroadphase.cpp" />
-    <ClInclude Include="bullet3/src/BulletCollision/BroadphaseCollision/btDbvtBroadphase.h" />
-    <ClCompile Include="bullet3/src/BulletCollision/BroadphaseCollision/btDbvt.cpp" />
-    <ClInclude Include="bullet3/src/BulletCollision/BroadphaseCollision/btDbvt.h" />
-    <ClCompile Include="bullet3/src/BulletCollision/BroadphaseCollision/btDispatcher.cpp" />
-    <ClInclude Include="bullet3/src/BulletCollision/BroadphaseCollision/btDispatcher.h" />
-    <ClCompile Include="bullet3/src/BulletCollision/BroadphaseCollision/btOverlappingPairCache.cpp" />
-    <ClInclude Include="bullet3/src/BulletCollision/BroadphaseCollision/btOverlappingPairCache.h" />
-    <ClInclude Include="bullet3/src/BulletCollision/BroadphaseCollision/btOverlappingPairCallback.h" />
-    <ClCompile Include="bullet3/src/BulletCollision/BroadphaseCollision/btQuantizedBvh.cpp" />
-    <ClInclude Include="bullet3/src/BulletCollision/BroadphaseCollision/btQuantizedBvh.h" />
-    <ClCompile Include="bullet3/src/BulletCollision/BroadphaseCollision/btSimpleBroadphase.cpp" />
-    <ClInclude Include="bullet3/src/BulletCollision/BroadphaseCollision/btSimpleBroadphase.h" />
-    <ClCompile Include="bullet3/src/BulletCollision/CollisionDispatch/btActivatingCollisionAlgorithm.cpp" />
-    <ClInclude Include="bullet3/src/BulletCollision/CollisionDispatch/btActivatingCollisionAlgorithm.h" />
-    <ClCompile Include="bullet3/src/BulletCollision/CollisionDispatch/btBox2dBox2dCollisionAlgorithm.cpp" />
-    <ClInclude Include="bullet3/src/BulletCollision/CollisionDispatch/btBox2dBox2dCollisionAlgorithm.h" />
-    <ClCompile Include="bullet3/src/BulletCollision/CollisionDispatch/btBoxBoxCollisionAlgorithm.cpp" />
-    <ClInclude Include="bullet3/src/BulletCollision/CollisionDispatch/btBoxBoxCollisionAlgorithm.h" />
-    <ClCompile Include="bullet3/src/BulletCollision/CollisionDispatch/btBoxBoxDetector.cpp" />
-    <ClInclude Include="bullet3/src/BulletCollision/CollisionDispatch/btBoxBoxDetector.h" />
-    <ClInclude Include="bullet3/src/BulletCollision/CollisionDispatch/btCollisionConfiguration.h" />
-    <ClInclude Include="bullet3/src/BulletCollision/CollisionDispatch/btCollisionCreateFunc.h" />
-    <ClCompile Include="bullet3/src/BulletCollision/CollisionDispatch/btCollisionDispatcher.cpp" />
-    <ClInclude Include="bullet3/src/BulletCollision/CollisionDispatch/btCollisionDispatcher.h" />
-    <ClCompile Include="bullet3/src/BulletCollision/CollisionDispatch/btCollisionDispatcherMt.cpp" />
-    <ClInclude Include="bullet3/src/BulletCollision/CollisionDispatch/btCollisionDispatcherMt.h" />
-    <ClCompile Include="bullet3/src/BulletCollision/CollisionDispatch/btCollisionObject.cpp" />
-    <ClInclude Include="bullet3/src/BulletCollision/CollisionDispatch/btCollisionObject.h" />
-    <ClInclude Include="bullet3/src/BulletCollision/CollisionDispatch/btCollisionObjectWrapper.h" />
-    <ClCompile Include="bullet3/src/BulletCollision/CollisionDispatch/btCollisionWorld.cpp" />
-    <ClInclude Include="bullet3/src/BulletCollision/CollisionDispatch/btCollisionWorld.h" />
-    <ClCompile Include="bullet3/src/BulletCollision/CollisionDispatch/btCollisionWorldImporter.cpp" />
-    <ClInclude Include="bullet3/src/BulletCollision/CollisionDispatch/btCollisionWorldImporter.h" />
-    <ClCompile Include="bullet3/src/BulletCollision/CollisionDispatch/btCompoundCollisionAlgorithm.cpp" />
-    <ClInclude Include="bullet3/src/BulletCollision/CollisionDispatch/btCompoundCollisionAlgorithm.h" />
-    <ClCompile Include="bullet3/src/BulletCollision/CollisionDispatch/btCompoundCompoundCollisionAlgorithm.cpp" />
-    <ClInclude Include="bullet3/src/BulletCollision/CollisionDispatch/btCompoundCompoundCollisionAlgorithm.h" />
-    <ClCompile Include="bullet3/src/BulletCollision/CollisionDispatch/btConvex2dConvex2dAlgorithm.cpp" />
-    <ClInclude Include="bullet3/src/BulletCollision/CollisionDispatch/btConvex2dConvex2dAlgorithm.h" />
-    <ClCompile Include="bullet3/src/BulletCollision/CollisionDispatch/btConvexConcaveCollisionAlgorithm.cpp" />
-    <ClInclude Include="bullet3/src/BulletCollision/CollisionDispatch/btConvexConcaveCollisionAlgorithm.h" />
-    <ClCompile Include="bullet3/src/BulletCollision/CollisionDispatch/btConvexConvexAlgorithm.cpp" />
-    <ClInclude Include="bullet3/src/BulletCollision/CollisionDispatch/btConvexConvexAlgorithm.h" />
-    <ClCompile Include="bullet3/src/BulletCollision/CollisionDispatch/btConvexPlaneCollisionAlgorithm.cpp" />
-    <ClInclude Include="bullet3/src/BulletCollision/CollisionDispatch/btConvexPlaneCollisionAlgorithm.h" />
-    <ClCompile Include="bullet3/src/BulletCollision/CollisionDispatch/btDefaultCollisionConfiguration.cpp" />
-    <ClInclude Include="bullet3/src/BulletCollision/CollisionDispatch/btDefaultCollisionConfiguration.h" />
-    <ClCompile Include="bullet3/src/BulletCollision/CollisionDispatch/btEmptyCollisionAlgorithm.cpp" />
-    <ClInclude Include="bullet3/src/BulletCollision/CollisionDispatch/btEmptyCollisionAlgorithm.h" />
-    <ClCompile Include="bullet3/src/BulletCollision/CollisionDispatch/btGhostObject.cpp" />
-    <ClInclude Include="bullet3/src/BulletCollision/CollisionDispatch/btGhostObject.h" />
-    <ClCompile Include="bullet3/src/BulletCollision/CollisionDispatch/btHashedSimplePairCache.cpp" />
-    <ClInclude Include="bullet3/src/BulletCollision/CollisionDispatch/btHashedSimplePairCache.h" />
-    <ClCompile Include="bullet3/src/BulletCollision/CollisionDispatch/btInternalEdgeUtility.cpp" />
-    <ClInclude Include="bullet3/src/BulletCollision/CollisionDispatch/btInternalEdgeUtility.h" />
-    <ClCompile Include="bullet3/src/BulletCollision/CollisionDispatch/btManifoldResult.cpp" />
-    <ClInclude Include="bullet3/src/BulletCollision/CollisionDispatch/btManifoldResult.h" />
-    <ClCompile Include="bullet3/src/BulletCollision/CollisionDispatch/btSimulationIslandManager.cpp" />
-    <ClInclude Include="bullet3/src/BulletCollision/CollisionDispatch/btSimulationIslandManager.h" />
-    <ClCompile Include="bullet3/src/BulletCollision/CollisionDispatch/btSphereBoxCollisionAlgorithm.cpp" />
-    <ClInclude Include="bullet3/src/BulletCollision/CollisionDispatch/btSphereBoxCollisionAlgorithm.h" />
-    <ClCompile Include="bullet3/src/BulletCollision/CollisionDispatch/btSphereSphereCollisionAlgorithm.cpp" />
-    <ClInclude Include="bullet3/src/BulletCollision/CollisionDispatch/btSphereSphereCollisionAlgorithm.h" />
-    <ClCompile Include="bullet3/src/BulletCollision/CollisionDispatch/btSphereTriangleCollisionAlgorithm.cpp" />
-    <ClInclude Include="bullet3/src/BulletCollision/CollisionDispatch/btSphereTriangleCollisionAlgorithm.h" />
-    <ClCompile Include="bullet3/src/BulletCollision/CollisionDispatch/btUnionFind.cpp" />
-    <ClInclude Include="bullet3/src/BulletCollision/CollisionDispatch/btUnionFind.h" />
-    <ClCompile Include="bullet3/src/BulletCollision/CollisionDispatch/SphereTriangleDetector.cpp" />
-    <ClInclude Include="bullet3/src/BulletCollision/CollisionDispatch/SphereTriangleDetector.h" />
-    <ClCompile Include="bullet3/src/BulletCollision/CollisionShapes/btBox2dShape.cpp" />
-    <ClInclude Include="bullet3/src/BulletCollision/CollisionShapes/btBox2dShape.h" />
-    <ClCompile Include="bullet3/src/BulletCollision/CollisionShapes/btBoxShape.cpp" />
-    <ClInclude Include="bullet3/src/BulletCollision/CollisionShapes/btBoxShape.h" />
-    <ClCompile Include="bullet3/src/BulletCollision/CollisionShapes/btBvhTriangleMeshShape.cpp" />
-    <ClInclude Include="bullet3/src/BulletCollision/CollisionShapes/btBvhTriangleMeshShape.h" />
-    <ClCompile Include="bullet3/src/BulletCollision/CollisionShapes/btCapsuleShape.cpp" />
-    <ClInclude Include="bullet3/src/BulletCollision/CollisionShapes/btCapsuleShape.h" />
-    <ClInclude Include="bullet3/src/BulletCollision/CollisionShapes/btCollisionMargin.h" />
-    <ClCompile Include="bullet3/src/BulletCollision/CollisionShapes/btCollisionShape.cpp" />
-    <ClInclude Include="bullet3/src/BulletCollision/CollisionShapes/btCollisionShape.h" />
-    <ClCompile Include="bullet3/src/BulletCollision/CollisionShapes/btCompoundShape.cpp" />
-    <ClInclude Include="bullet3/src/BulletCollision/CollisionShapes/btCompoundShape.h" />
-    <ClCompile Include="bullet3/src/BulletCollision/CollisionShapes/btConcaveShape.cpp" />
-    <ClInclude Include="bullet3/src/BulletCollision/CollisionShapes/btConcaveShape.h" />
-    <ClCompile Include="bullet3/src/BulletCollision/CollisionShapes/btConeShape.cpp" />
-    <ClInclude Include="bullet3/src/BulletCollision/CollisionShapes/btConeShape.h" />
-    <ClCompile Include="bullet3/src/BulletCollision/CollisionShapes/btConvex2dShape.cpp" />
-    <ClInclude Include="bullet3/src/BulletCollision/CollisionShapes/btConvex2dShape.h" />
-    <ClCompile Include="bullet3/src/BulletCollision/CollisionShapes/btConvexHullShape.cpp" />
-    <ClInclude Include="bullet3/src/BulletCollision/CollisionShapes/btConvexHullShape.h" />
-    <ClCompile Include="bullet3/src/BulletCollision/CollisionShapes/btConvexInternalShape.cpp" />
-    <ClInclude Include="bullet3/src/BulletCollision/CollisionShapes/btConvexInternalShape.h" />
-    <ClCompile Include="bullet3/src/BulletCollision/CollisionShapes/btConvexPointCloudShape.cpp" />
-    <ClInclude Include="bullet3/src/BulletCollision/CollisionShapes/btConvexPointCloudShape.h" />
-    <ClCompile Include="bullet3/src/BulletCollision/CollisionShapes/btConvexPolyhedron.cpp" />
-    <ClInclude Include="bullet3/src/BulletCollision/CollisionShapes/btConvexPolyhedron.h" />
-    <ClCompile Include="bullet3/src/BulletCollision/CollisionShapes/btConvexShape.cpp" />
-    <ClInclude Include="bullet3/src/BulletCollision/CollisionShapes/btConvexShape.h" />
-    <ClCompile Include="bullet3/src/BulletCollision/CollisionShapes/btConvexTriangleMeshShape.cpp" />
-    <ClInclude Include="bullet3/src/BulletCollision/CollisionShapes/btConvexTriangleMeshShape.h" />
-    <ClCompile Include="bullet3/src/BulletCollision/CollisionShapes/btCylinderShape.cpp" />
-    <ClInclude Include="bullet3/src/BulletCollision/CollisionShapes/btCylinderShape.h" />
-    <ClCompile Include="bullet3/src/BulletCollision/CollisionShapes/btEmptyShape.cpp" />
-    <ClInclude Include="bullet3/src/BulletCollision/CollisionShapes/btEmptyShape.h" />
-    <ClCompile Include="bullet3/src/BulletCollision/CollisionShapes/btHeightfieldTerrainShape.cpp" />
-    <ClInclude Include="bullet3/src/BulletCollision/CollisionShapes/btHeightfieldTerrainShape.h" />
-    <ClInclude Include="bullet3/src/BulletCollision/CollisionShapes/btMaterial.h" />
-    <ClCompile Include="bullet3/src/BulletCollision/CollisionShapes/btMiniSDF.cpp" />
-    <ClInclude Include="bullet3/src/BulletCollision/CollisionShapes/btMiniSDF.h" />
-    <ClCompile Include="bullet3/src/BulletCollision/CollisionShapes/btMinkowskiSumShape.cpp" />
-    <ClInclude Include="bullet3/src/BulletCollision/CollisionShapes/btMinkowskiSumShape.h" />
-    <ClCompile Include="bullet3/src/BulletCollision/CollisionShapes/btMultimaterialTriangleMeshShape.cpp" />
-    <ClInclude Include="bullet3/src/BulletCollision/CollisionShapes/btMultimaterialTriangleMeshShape.h" />
-    <ClCompile Include="bullet3/src/BulletCollision/CollisionShapes/btMultiSphereShape.cpp" />
-    <ClInclude Include="bullet3/src/BulletCollision/CollisionShapes/btMultiSphereShape.h" />
-    <ClCompile Include="bullet3/src/BulletCollision/CollisionShapes/btOptimizedBvh.cpp" />
-    <ClInclude Include="bullet3/src/BulletCollision/CollisionShapes/btOptimizedBvh.h" />
-    <ClCompile Include="bullet3/src/BulletCollision/CollisionShapes/btPolyhedralConvexShape.cpp" />
-    <ClInclude Include="bullet3/src/BulletCollision/CollisionShapes/btPolyhedralConvexShape.h" />
-    <ClCompile Include="bullet3/src/BulletCollision/CollisionShapes/btScaledBvhTriangleMeshShape.cpp" />
-    <ClInclude Include="bullet3/src/BulletCollision/CollisionShapes/btScaledBvhTriangleMeshShape.h" />
-    <ClCompile Include="bullet3/src/BulletCollision/CollisionShapes/btSdfCollisionShape.cpp" />
-    <ClInclude Include="bullet3/src/BulletCollision/CollisionShapes/btSdfCollisionShape.h" />
-    <ClCompile Include="bullet3/src/BulletCollision/CollisionShapes/btShapeHull.cpp" />
-    <ClInclude Include="bullet3/src/BulletCollision/CollisionShapes/btShapeHull.h" />
-    <ClCompile Include="bullet3/src/BulletCollision/CollisionShapes/btSphereShape.cpp" />
-    <ClInclude Include="bullet3/src/BulletCollision/CollisionShapes/btSphereShape.h" />
-    <ClCompile Include="bullet3/src/BulletCollision/CollisionShapes/btStaticPlaneShape.cpp" />
-    <ClInclude Include="bullet3/src/BulletCollision/CollisionShapes/btStaticPlaneShape.h" />
-    <ClCompile Include="bullet3/src/BulletCollision/CollisionShapes/btStridingMeshInterface.cpp" />
-    <ClInclude Include="bullet3/src/BulletCollision/CollisionShapes/btStridingMeshInterface.h" />
-    <ClCompile Include="bullet3/src/BulletCollision/CollisionShapes/btTetrahedronShape.cpp" />
-    <ClInclude Include="bullet3/src/BulletCollision/CollisionShapes/btTetrahedronShape.h" />
-    <ClCompile Include="bullet3/src/BulletCollision/CollisionShapes/btTriangleBuffer.cpp" />
-    <ClInclude Include="bullet3/src/BulletCollision/CollisionShapes/btTriangleBuffer.h" />
-    <ClCompile Include="bullet3/src/BulletCollision/CollisionShapes/btTriangleCallback.cpp" />
-    <ClInclude Include="bullet3/src/BulletCollision/CollisionShapes/btTriangleCallback.h" />
-    <ClCompile Include="bullet3/src/BulletCollision/CollisionShapes/btTriangleIndexVertexArray.cpp" />
-    <ClInclude Include="bullet3/src/BulletCollision/CollisionShapes/btTriangleIndexVertexArray.h" />
-    <ClCompile Include="bullet3/src/BulletCollision/CollisionShapes/btTriangleIndexVertexMaterialArray.cpp" />
-    <ClInclude Include="bullet3/src/BulletCollision/CollisionShapes/btTriangleIndexVertexMaterialArray.h" />
-    <ClInclude Include="bullet3/src/BulletCollision/CollisionShapes/btTriangleInfoMap.h" />
-    <ClCompile Include="bullet3/src/BulletCollision/CollisionShapes/btTriangleMesh.cpp" />
-    <ClInclude Include="bullet3/src/BulletCollision/CollisionShapes/btTriangleMesh.h" />
-    <ClCompile Include="bullet3/src/BulletCollision/CollisionShapes/btTriangleMeshShape.cpp" />
-    <ClInclude Include="bullet3/src/BulletCollision/CollisionShapes/btTriangleMeshShape.h" />
-    <ClInclude Include="bullet3/src/BulletCollision/CollisionShapes/btTriangleShape.h" />
-    <ClCompile Include="bullet3/src/BulletCollision/CollisionShapes/btUniformScalingShape.cpp" />
-    <ClInclude Include="bullet3/src/BulletCollision/CollisionShapes/btUniformScalingShape.h" />
-    <ClInclude Include="bullet3/src/BulletCollision/Gimpact/btBoxCollision.h" />
-    <ClInclude Include="bullet3/src/BulletCollision/Gimpact/btClipPolygon.h" />
-    <ClInclude Include="bullet3/src/BulletCollision/Gimpact/btCompoundFromGimpact.h" />
-    <ClCompile Include="bullet3/src/BulletCollision/Gimpact/btContactProcessing.cpp" />
-    <ClInclude Include="bullet3/src/BulletCollision/Gimpact/btContactProcessing.h" />
-    <ClInclude Include="bullet3/src/BulletCollision/Gimpact/btContactProcessingStructs.h" />
-    <ClCompile Include="bullet3/src/BulletCollision/Gimpact/btGenericPoolAllocator.cpp" />
-    <ClInclude Include="bullet3/src/BulletCollision/Gimpact/btGenericPoolAllocator.h" />
-    <ClInclude Include="bullet3/src/BulletCollision/Gimpact/btGeometryOperations.h" />
-    <ClCompile Include="bullet3/src/BulletCollision/Gimpact/btGImpactBvh.cpp" />
-    <ClInclude Include="bullet3/src/BulletCollision/Gimpact/btGImpactBvh.h" />
-    <ClInclude Include="bullet3/src/BulletCollision/Gimpact/btGImpactBvhStructs.h" />
-    <ClCompile Include="bullet3/src/BulletCollision/Gimpact/btGImpactCollisionAlgorithm.cpp" />
-    <ClInclude Include="bullet3/src/BulletCollision/Gimpact/btGImpactCollisionAlgorithm.h" />
-    <ClInclude Include="bullet3/src/BulletCollision/Gimpact/btGImpactMassUtil.h" />
-    <ClCompile Include="bullet3/src/BulletCollision/Gimpact/btGImpactQuantizedBvh.cpp" />
-    <ClInclude Include="bullet3/src/BulletCollision/Gimpact/btGImpactQuantizedBvh.h" />
-    <ClInclude Include="bullet3/src/BulletCollision/Gimpact/btGImpactQuantizedBvhStructs.h" />
-    <ClCompile Include="bullet3/src/BulletCollision/Gimpact/btGImpactShape.cpp" />
-    <ClInclude Include="bullet3/src/BulletCollision/Gimpact/btGImpactShape.h" />
-    <ClInclude Include="bullet3/src/BulletCollision/Gimpact/btQuantization.h" />
-    <ClCompile Include="bullet3/src/BulletCollision/Gimpact/btTriangleShapeEx.cpp" />
-    <ClInclude Include="bullet3/src/BulletCollision/Gimpact/btTriangleShapeEx.h" />
-    <ClInclude Include="bullet3/src/BulletCollision/Gimpact/gim_array.h" />
-    <ClInclude Include="bullet3/src/BulletCollision/Gimpact/gim_basic_geometry_operations.h" />
-    <ClInclude Include="bullet3/src/BulletCollision/Gimpact/gim_bitset.h" />
-    <ClInclude Include="bullet3/src/BulletCollision/Gimpact/gim_box_collision.h" />
-    <ClCompile Include="bullet3/src/BulletCollision/Gimpact/gim_box_set.cpp" />
-    <ClInclude Include="bullet3/src/BulletCollision/Gimpact/gim_box_set.h" />
-    <ClInclude Include="bullet3/src/BulletCollision/Gimpact/gim_clip_polygon.h" />
-    <ClCompile Include="bullet3/src/BulletCollision/Gimpact/gim_contact.cpp" />
-    <ClInclude Include="bullet3/src/BulletCollision/Gimpact/gim_contact.h" />
-    <ClInclude Include="bullet3/src/BulletCollision/Gimpact/gim_geometry.h" />
-    <ClInclude Include="bullet3/src/BulletCollision/Gimpact/gim_geom_types.h" />
-    <ClInclude Include="bullet3/src/BulletCollision/Gimpact/gim_hash_table.h" />
-    <ClInclude Include="bullet3/src/BulletCollision/Gimpact/gim_linear_math.h" />
-    <ClInclude Include="bullet3/src/BulletCollision/Gimpact/gim_math.h" />
-    <ClCompile Include="bullet3/src/BulletCollision/Gimpact/gim_memory.cpp" />
-    <ClInclude Include="bullet3/src/BulletCollision/Gimpact/gim_memory.h" />
-    <ClInclude Include="bullet3/src/BulletCollision/Gimpact/gim_pair.h" />
-    <ClInclude Include="bullet3/src/BulletCollision/Gimpact/gim_radixsort.h" />
-    <ClCompile Include="bullet3/src/BulletCollision/Gimpact/gim_tri_collision.cpp" />
-    <ClInclude Include="bullet3/src/BulletCollision/Gimpact/gim_tri_collision.h" />
-    <ClInclude Include="bullet3/src/BulletCollision/NarrowPhaseCollision/btComputeGjkEpaPenetration.h" />
-    <ClCompile Include="bullet3/src/BulletCollision/NarrowPhaseCollision/btContinuousConvexCollision.cpp" />
-    <ClInclude Include="bullet3/src/BulletCollision/NarrowPhaseCollision/btContinuousConvexCollision.h" />
-    <ClCompile Include="bullet3/src/BulletCollision/NarrowPhaseCollision/btConvexCast.cpp" />
-    <ClInclude Include="bullet3/src/BulletCollision/NarrowPhaseCollision/btConvexCast.h" />
-    <ClInclude Include="bullet3/src/BulletCollision/NarrowPhaseCollision/btConvexPenetrationDepthSolver.h" />
-    <ClInclude Include="bullet3/src/BulletCollision/NarrowPhaseCollision/btDiscreteCollisionDetectorInterface.h" />
-    <ClInclude Include="bullet3/src/BulletCollision/NarrowPhaseCollision/btGjkCollisionDescription.h" />
-    <ClCompile Include="bullet3/src/BulletCollision/NarrowPhaseCollision/btGjkConvexCast.cpp" />
-    <ClInclude Include="bullet3/src/BulletCollision/NarrowPhaseCollision/btGjkConvexCast.h" />
-    <ClCompile Include="bullet3/src/BulletCollision/NarrowPhaseCollision/btGjkEpa2.cpp" />
-    <ClInclude Include="bullet3/src/BulletCollision/NarrowPhaseCollision/btGjkEpa2.h" />
-    <ClInclude Include="bullet3/src/BulletCollision/NarrowPhaseCollision/btGjkEpa3.h" />
-    <ClCompile Include="bullet3/src/BulletCollision/NarrowPhaseCollision/btGjkEpaPenetrationDepthSolver.cpp" />
-    <ClInclude Include="bullet3/src/BulletCollision/NarrowPhaseCollision/btGjkEpaPenetrationDepthSolver.h" />
-    <ClCompile Include="bullet3/src/BulletCollision/NarrowPhaseCollision/btGjkPairDetector.cpp" />
-    <ClInclude Include="bullet3/src/BulletCollision/NarrowPhaseCollision/btGjkPairDetector.h" />
-    <ClInclude Include="bullet3/src/BulletCollision/NarrowPhaseCollision/btManifoldPoint.h" />
-    <ClCompile Include="bullet3/src/BulletCollision/NarrowPhaseCollision/btMinkowskiPenetrationDepthSolver.cpp" />
-    <ClInclude Include="bullet3/src/BulletCollision/NarrowPhaseCollision/btMinkowskiPenetrationDepthSolver.h" />
-    <ClInclude Include="bullet3/src/BulletCollision/NarrowPhaseCollision/btMprPenetration.h" />
-    <ClCompile Include="bullet3/src/BulletCollision/NarrowPhaseCollision/btPersistentManifold.cpp" />
-    <ClInclude Include="bullet3/src/BulletCollision/NarrowPhaseCollision/btPersistentManifold.h" />
-    <ClInclude Include="bullet3/src/BulletCollision/NarrowPhaseCollision/btPointCollector.h" />
-    <ClCompile Include="bullet3/src/BulletCollision/NarrowPhaseCollision/btPolyhedralContactClipping.cpp" />
-    <ClInclude Include="bullet3/src/BulletCollision/NarrowPhaseCollision/btPolyhedralContactClipping.h" />
-    <ClCompile Include="bullet3/src/BulletCollision/NarrowPhaseCollision/btRaycastCallback.cpp" />
-    <ClInclude Include="bullet3/src/BulletCollision/NarrowPhaseCollision/btRaycastCallback.h" />
-    <ClInclude Include="bullet3/src/BulletCollision/NarrowPhaseCollision/btSimplexSolverInterface.h" />
-    <ClCompile Include="bullet3/src/BulletCollision/NarrowPhaseCollision/btSubSimplexConvexCast.cpp" />
-    <ClInclude Include="bullet3/src/BulletCollision/NarrowPhaseCollision/btSubSimplexConvexCast.h" />
-    <ClCompile Include="bullet3/src/BulletCollision/NarrowPhaseCollision/btVoronoiSimplexSolver.cpp" />
-    <ClInclude Include="bullet3/src/BulletCollision/NarrowPhaseCollision/btVoronoiSimplexSolver.h" />
-  </ItemGroup>
-  <ItemGroup>
-    <ClInclude Include="bullet3/src/BulletDynamics/Character/btCharacterControllerInterface.h" />
-    <ClCompile Include="bullet3/src/BulletDynamics/Character/btKinematicCharacterController.cpp" />
-    <ClInclude Include="bullet3/src/BulletDynamics/Character/btKinematicCharacterController.h" />
-    <ClCompile Include="bullet3/src/BulletDynamics/ConstraintSolver/btBatchedConstraints.cpp" />
-    <ClInclude Include="bullet3/src/BulletDynamics/ConstraintSolver/btBatchedConstraints.h" />
-    <ClCompile Include="bullet3/src/BulletDynamics/ConstraintSolver/btConeTwistConstraint.cpp" />
-    <ClInclude Include="bullet3/src/BulletDynamics/ConstraintSolver/btConeTwistConstraint.h" />
-    <ClInclude Include="bullet3/src/BulletDynamics/ConstraintSolver/btConstraintSolver.h" />
-    <ClCompile Include="bullet3/src/BulletDynamics/ConstraintSolver/btContactConstraint.cpp" />
-    <ClInclude Include="bullet3/src/BulletDynamics/ConstraintSolver/btContactConstraint.h" />
-    <ClInclude Include="bullet3/src/BulletDynamics/ConstraintSolver/btContactSolverInfo.h" />
-    <ClCompile Include="bullet3/src/BulletDynamics/ConstraintSolver/btFixedConstraint.cpp" />
-    <ClInclude Include="bullet3/src/BulletDynamics/ConstraintSolver/btFixedConstraint.h" />
-    <ClCompile Include="bullet3/src/BulletDynamics/ConstraintSolver/btGearConstraint.cpp" />
-    <ClInclude Include="bullet3/src/BulletDynamics/ConstraintSolver/btGearConstraint.h" />
-    <ClCompile Include="bullet3/src/BulletDynamics/ConstraintSolver/btGeneric6DofConstraint.cpp" />
-    <ClInclude Include="bullet3/src/BulletDynamics/ConstraintSolver/btGeneric6DofConstraint.h" />
-    <ClCompile Include="bullet3/src/BulletDynamics/ConstraintSolver/btGeneric6DofSpring2Constraint.cpp" />
-    <ClInclude Include="bullet3/src/BulletDynamics/ConstraintSolver/btGeneric6DofSpring2Constraint.h" />
-    <ClCompile Include="bullet3/src/BulletDynamics/ConstraintSolver/btGeneric6DofSpringConstraint.cpp" />
-    <ClInclude Include="bullet3/src/BulletDynamics/ConstraintSolver/btGeneric6DofSpringConstraint.h" />
-    <ClCompile Include="bullet3/src/BulletDynamics/ConstraintSolver/btHinge2Constraint.cpp" />
-    <ClInclude Include="bullet3/src/BulletDynamics/ConstraintSolver/btHinge2Constraint.h" />
-    <ClCompile Include="bullet3/src/BulletDynamics/ConstraintSolver/btHingeConstraint.cpp" />
-    <ClInclude Include="bullet3/src/BulletDynamics/ConstraintSolver/btHingeConstraint.h" />
-    <ClInclude Include="bullet3/src/BulletDynamics/ConstraintSolver/btJacobianEntry.h" />
-    <ClCompile Include="bullet3/src/BulletDynamics/ConstraintSolver/btNNCGConstraintSolver.cpp" />
-    <ClInclude Include="bullet3/src/BulletDynamics/ConstraintSolver/btNNCGConstraintSolver.h" />
-    <ClCompile Include="bullet3/src/BulletDynamics/ConstraintSolver/btPoint2PointConstraint.cpp" />
-    <ClInclude Include="bullet3/src/BulletDynamics/ConstraintSolver/btPoint2PointConstraint.h" />
-    <ClCompile Include="bullet3/src/BulletDynamics/ConstraintSolver/btSequentialImpulseConstraintSolver.cpp" />
-    <ClInclude Include="bullet3/src/BulletDynamics/ConstraintSolver/btSequentialImpulseConstraintSolver.h" />
-    <ClCompile Include="bullet3/src/BulletDynamics/ConstraintSolver/btSequentialImpulseConstraintSolverMt.cpp" />
-    <ClInclude Include="bullet3/src/BulletDynamics/ConstraintSolver/btSequentialImpulseConstraintSolverMt.h" />
-    <ClCompile Include="bullet3/src/BulletDynamics/ConstraintSolver/btSliderConstraint.cpp" />
-    <ClInclude Include="bullet3/src/BulletDynamics/ConstraintSolver/btSliderConstraint.h" />
-    <ClCompile Include="bullet3/src/BulletDynamics/ConstraintSolver/btSolve2LinearConstraint.cpp" />
-    <ClInclude Include="bullet3/src/BulletDynamics/ConstraintSolver/btSolve2LinearConstraint.h" />
-    <ClInclude Include="bullet3/src/BulletDynamics/ConstraintSolver/btSolverBody.h" />
-    <ClInclude Include="bullet3/src/BulletDynamics/ConstraintSolver/btSolverConstraint.h" />
-    <ClCompile Include="bullet3/src/BulletDynamics/ConstraintSolver/btTypedConstraint.cpp" />
-    <ClInclude Include="bullet3/src/BulletDynamics/ConstraintSolver/btTypedConstraint.h" />
-    <ClCompile Include="bullet3/src/BulletDynamics/ConstraintSolver/btUniversalConstraint.cpp" />
-    <ClInclude Include="bullet3/src/BulletDynamics/ConstraintSolver/btUniversalConstraint.h" />
-    <ClInclude Include="bullet3/src/BulletDynamics/Dynamics/btActionInterface.h" />
-    <ClCompile Include="bullet3/src/BulletDynamics/Dynamics/btDiscreteDynamicsWorld.cpp" />
-    <ClInclude Include="bullet3/src/BulletDynamics/Dynamics/btDiscreteDynamicsWorld.h" />
-    <ClCompile Include="bullet3/src/BulletDynamics/Dynamics/btDiscreteDynamicsWorldMt.cpp" />
-    <ClInclude Include="bullet3/src/BulletDynamics/Dynamics/btDiscreteDynamicsWorldMt.h" />
-    <ClInclude Include="bullet3/src/BulletDynamics/Dynamics/btDynamicsWorld.h" />
-    <ClCompile Include="bullet3/src/BulletDynamics/Dynamics/btRigidBody.cpp" />
-    <ClInclude Include="bullet3/src/BulletDynamics/Dynamics/btRigidBody.h" />
-    <ClCompile Include="bullet3/src/BulletDynamics/Dynamics/btSimpleDynamicsWorld.cpp" />
-    <ClInclude Include="bullet3/src/BulletDynamics/Dynamics/btSimpleDynamicsWorld.h" />
-    <ClCompile Include="bullet3/src/BulletDynamics/Dynamics/btSimulationIslandManagerMt.cpp" />
-    <ClInclude Include="bullet3/src/BulletDynamics/Dynamics/btSimulationIslandManagerMt.h" />
-    <ClCompile Include="bullet3/src/BulletDynamics/Featherstone/btMultiBodyConstraint.cpp" />
-    <ClInclude Include="bullet3/src/BulletDynamics/Featherstone/btMultiBodyConstraint.h" />
-    <ClCompile Include="bullet3/src/BulletDynamics/Featherstone/btMultiBodyConstraintSolver.cpp" />
-    <ClInclude Include="bullet3/src/BulletDynamics/Featherstone/btMultiBodyConstraintSolver.h" />
-    <ClCompile Include="bullet3/src/BulletDynamics/Featherstone/btMultiBody.cpp" />
-    <ClCompile Include="bullet3/src/BulletDynamics/Featherstone/btMultiBodyDynamicsWorld.cpp" />
-    <ClInclude Include="bullet3/src/BulletDynamics/Featherstone/btMultiBodyDynamicsWorld.h" />
-    <ClCompile Include="bullet3/src/BulletDynamics/Featherstone/btMultiBodyFixedConstraint.cpp" />
-    <ClInclude Include="bullet3/src/BulletDynamics/Featherstone/btMultiBodyFixedConstraint.h" />
-    <ClCompile Include="bullet3/src/BulletDynamics/Featherstone/btMultiBodyGearConstraint.cpp" />
-    <ClInclude Include="bullet3/src/BulletDynamics/Featherstone/btMultiBodyGearConstraint.h" />
-    <ClInclude Include="bullet3/src/BulletDynamics/Featherstone/btMultiBody.h" />
-    <ClInclude Include="bullet3/src/BulletDynamics/Featherstone/btMultiBodyInplaceSolverIslandCallback.h" />
-    <ClInclude Include="bullet3/src/BulletDynamics/Featherstone/btMultiBodyJointFeedback.h" />
-    <ClCompile Include="bullet3/src/BulletDynamics/Featherstone/btMultiBodyJointLimitConstraint.cpp" />
-    <ClInclude Include="bullet3/src/BulletDynamics/Featherstone/btMultiBodyJointLimitConstraint.h" />
-    <ClCompile Include="bullet3/src/BulletDynamics/Featherstone/btMultiBodyJointMotor.cpp" />
-    <ClInclude Include="bullet3/src/BulletDynamics/Featherstone/btMultiBodyJointMotor.h" />
-    <ClInclude Include="bullet3/src/BulletDynamics/Featherstone/btMultiBodyLinkCollider.h" />
-    <ClInclude Include="bullet3/src/BulletDynamics/Featherstone/btMultiBodyLink.h" />
-    <ClCompile Include="bullet3/src/BulletDynamics/Featherstone/btMultiBodyPoint2Point.cpp" />
-    <ClInclude Include="bullet3/src/BulletDynamics/Featherstone/btMultiBodyPoint2Point.h" />
-    <ClCompile Include="bullet3/src/BulletDynamics/Featherstone/btMultiBodySliderConstraint.cpp" />
-    <ClInclude Include="bullet3/src/BulletDynamics/Featherstone/btMultiBodySliderConstraint.h" />
-    <ClInclude Include="bullet3/src/BulletDynamics/Featherstone/btMultiBodySolverConstraint.h" />
-    <ClCompile Include="bullet3/src/BulletDynamics/Featherstone/btMultiBodySphericalJointMotor.cpp" />
-    <ClInclude Include="bullet3/src/BulletDynamics/Featherstone/btMultiBodySphericalJointMotor.h" />
-    <ClCompile Include="bullet3/src/BulletDynamics/MLCPSolvers/btDantzigLCP.cpp" />
-    <ClInclude Include="bullet3/src/BulletDynamics/MLCPSolvers/btDantzigLCP.h" />
-    <ClInclude Include="bullet3/src/BulletDynamics/MLCPSolvers/btDantzigSolver.h" />
-    <ClCompile Include="bullet3/src/BulletDynamics/MLCPSolvers/btLemkeAlgorithm.cpp" />
-    <ClInclude Include="bullet3/src/BulletDynamics/MLCPSolvers/btLemkeAlgorithm.h" />
-    <ClInclude Include="bullet3/src/BulletDynamics/MLCPSolvers/btLemkeSolver.h" />
-    <ClCompile Include="bullet3/src/BulletDynamics/MLCPSolvers/btMLCPSolver.cpp" />
-    <ClInclude Include="bullet3/src/BulletDynamics/MLCPSolvers/btMLCPSolver.h" />
-    <ClInclude Include="bullet3/src/BulletDynamics/MLCPSolvers/btMLCPSolverInterface.h" />
-    <ClInclude Include="bullet3/src/BulletDynamics/MLCPSolvers/btPATHSolver.h" />
-    <ClInclude Include="bullet3/src/BulletDynamics/MLCPSolvers/btSolveProjectedGaussSeidel.h" />
-    <ClCompile Include="bullet3/src/BulletDynamics/Vehicle/btRaycastVehicle.cpp" />
-    <ClInclude Include="bullet3/src/BulletDynamics/Vehicle/btRaycastVehicle.h" />
-    <ClInclude Include="bullet3/src/BulletDynamics/Vehicle/btVehicleRaycaster.h" />
-    <ClCompile Include="bullet3/src/BulletDynamics/Vehicle/btWheelInfo.cpp" />
-    <ClInclude Include="bullet3/src/BulletDynamics/Vehicle/btWheelInfo.h" />
-  </ItemGroup>
-  <ItemGroup>
-    <ClInclude Include="bullet3/src/BulletInverseDynamics/details/IDEigenInterface.hpp" />
-    <ClInclude Include="bullet3/src/BulletInverseDynamics/details/IDLinearMathInterface.hpp" />
-    <ClInclude Include="bullet3/src/BulletInverseDynamics/details/IDMatVec.hpp" />
-    <ClCompile Include="bullet3/src/BulletInverseDynamics/details/MultiBodyTreeImpl.cpp" />
-    <ClInclude Include="bullet3/src/BulletInverseDynamics/details/MultiBodyTreeImpl.hpp" />
-    <ClCompile Include="bullet3/src/BulletInverseDynamics/details/MultiBodyTreeInitCache.cpp" />
-    <ClInclude Include="bullet3/src/BulletInverseDynamics/details/MultiBodyTreeInitCache.hpp" />
-    <ClInclude Include="bullet3/src/BulletInverseDynamics/IDConfigBuiltin.hpp" />
-    <ClInclude Include="bullet3/src/BulletInverseDynamics/IDConfigEigen.hpp" />
-    <ClInclude Include="bullet3/src/BulletInverseDynamics/IDConfig.hpp" />
-    <ClInclude Include="bullet3/src/BulletInverseDynamics/IDErrorMessages.hpp" />
-    <ClCompile Include="bullet3/src/BulletInverseDynamics/IDMath.cpp" />
-    <ClInclude Include="bullet3/src/BulletInverseDynamics/IDMath.hpp" />
-    <ClCompile Include="bullet3/src/BulletInverseDynamics/MultiBodyTree.cpp" />
-    <ClInclude Include="bullet3/src/BulletInverseDynamics/MultiBodyTree.hpp" />
-  </ItemGroup>
-  <ItemGroup>
-    <ClInclude Include="bullet3/src/BulletSoftBody/btCGProjection.h" />
-    <ClInclude Include="bullet3/src/BulletSoftBody/btConjugateGradient.h" />
-    <ClCompile Include="bullet3/src/BulletSoftBody/btDefaultSoftBodySolver.cpp" />
-    <ClInclude Include="bullet3/src/BulletSoftBody/btDefaultSoftBodySolver.h" />
-    <ClCompile Include="bullet3/src/BulletSoftBody/btDeformableBackwardEulerObjective.cpp" />
-    <ClInclude Include="bullet3/src/BulletSoftBody/btDeformableBackwardEulerObjective.h" />
-    <ClCompile Include="bullet3/src/BulletSoftBody/btDeformableBodySolver.cpp" />
-    <ClInclude Include="bullet3/src/BulletSoftBody/btDeformableBodySolver.h" />
-    <ClCompile Include="bullet3/src/BulletSoftBody/btDeformableContactProjection.cpp" />
-    <ClInclude Include="bullet3/src/BulletSoftBody/btDeformableContactProjection.h" />
-    <ClInclude Include="bullet3/src/BulletSoftBody/btDeformableCorotatedForce.h" />
-    <ClInclude Include="bullet3/src/BulletSoftBody/btDeformableGravityForce.h" />
-    <ClInclude Include="bullet3/src/BulletSoftBody/btDeformableLagrangianForce.h" />
-    <ClInclude Include="bullet3/src/BulletSoftBody/btDeformableMassSpringForce.h" />
-    <ClCompile Include="bullet3/src/BulletSoftBody/btDeformableMultiBodyConstraintSolver.cpp" />
-    <ClInclude Include="bullet3/src/BulletSoftBody/btDeformableMultiBodyConstraintSolver.h" />
-    <ClCompile Include="bullet3/src/BulletSoftBody/btDeformableMultiBodyDynamicsWorld.cpp" />
-    <ClInclude Include="bullet3/src/BulletSoftBody/btDeformableMultiBodyDynamicsWorld.h" />
-    <ClInclude Include="bullet3/src/BulletSoftBody/btDeformableNeoHookeanForce.h" />
-    <ClInclude Include="bullet3/src/BulletSoftBody/btPreconditioner.h" />
-    <ClCompile Include="bullet3/src/BulletSoftBody/btSoftBodyConcaveCollisionAlgorithm.cpp" />
-    <ClInclude Include="bullet3/src/BulletSoftBody/btSoftBodyConcaveCollisionAlgorithm.h" />
-    <ClCompile Include="bullet3/src/BulletSoftBody/btSoftBody.cpp" />
-    <ClInclude Include="bullet3/src/BulletSoftBody/btSoftBodyData.h" />
-    <ClInclude Include="bullet3/src/BulletSoftBody/btSoftBody.h" />
-    <ClCompile Include="bullet3/src/BulletSoftBody/btSoftBodyHelpers.cpp" />
-    <ClInclude Include="bullet3/src/BulletSoftBody/btSoftBodyHelpers.h" />
-    <ClInclude Include="bullet3/src/BulletSoftBody/btSoftBodyInternals.h" />
-    <ClCompile Include="bullet3/src/BulletSoftBody/btSoftBodyRigidBodyCollisionConfiguration.cpp" />
-    <ClInclude Include="bullet3/src/BulletSoftBody/btSoftBodyRigidBodyCollisionConfiguration.h" />
-    <ClInclude Include="bullet3/src/BulletSoftBody/btSoftBodySolvers.h" />
-    <ClInclude Include="bullet3/src/BulletSoftBody/btSoftBodySolverVertexBuffer.h" />
-    <ClCompile Include="bullet3/src/BulletSoftBody/btSoftMultiBodyDynamicsWorld.cpp" />
-    <ClInclude Include="bullet3/src/BulletSoftBody/btSoftMultiBodyDynamicsWorld.h" />
-    <ClCompile Include="bullet3/src/BulletSoftBody/btSoftRigidCollisionAlgorithm.cpp" />
-    <ClInclude Include="bullet3/src/BulletSoftBody/btSoftRigidCollisionAlgorithm.h" />
-    <ClCompile Include="bullet3/src/BulletSoftBody/btSoftRigidDynamicsWorld.cpp" />
-    <ClInclude Include="bullet3/src/BulletSoftBody/btSoftRigidDynamicsWorld.h" />
-    <ClCompile Include="bullet3/src/BulletSoftBody/btSoftSoftCollisionAlgorithm.cpp" />
-    <ClInclude Include="bullet3/src/BulletSoftBody/btSoftSoftCollisionAlgorithm.h" />
-    <ClInclude Include="bullet3/src/BulletSoftBody/btSparseSDF.h" />
-  </ItemGroup>
-  <ItemGroup>
-    <ClInclude Include="bullet3/src/LinearMath/btAabbUtil2.h" />
-    <ClCompile Include="bullet3/src/LinearMath/btAlignedAllocator.cpp" />
-    <ClInclude Include="bullet3/src/LinearMath/btAlignedAllocator.h" />
-    <ClInclude Include="bullet3/src/LinearMath/btAlignedObjectArray.h" />
-    <ClCompile Include="bullet3/src/LinearMath/btConvexHullComputer.cpp" />
-    <ClInclude Include="bullet3/src/LinearMath/btConvexHullComputer.h" />
-    <ClCompile Include="bullet3/src/LinearMath/btConvexHull.cpp" />
-    <ClInclude Include="bullet3/src/LinearMath/btConvexHull.h" />
-    <ClInclude Include="bullet3/src/LinearMath/btCpuFeatureUtility.h" />
-    <ClInclude Include="bullet3/src/LinearMath/btDefaultMotionState.h" />
-    <ClCompile Include="bullet3/src/LinearMath/btGeometryUtil.cpp" />
-    <ClInclude Include="bullet3/src/LinearMath/btGeometryUtil.h" />
-    <ClInclude Include="bullet3/src/LinearMath/btGrahamScan2dConvexHull.h" />
-    <ClInclude Include="bullet3/src/LinearMath/btHashMap.h" />
-    <ClInclude Include="bullet3/src/LinearMath/btIDebugDraw.h" />
-    <ClInclude Include="bullet3/src/LinearMath/btList.h" />
-    <ClInclude Include="bullet3/src/LinearMath/btMatrix3x3.h" />
-    <ClInclude Include="bullet3/src/LinearMath/btMatrixX.h" />
-    <ClInclude Include="bullet3/src/LinearMath/btMinMax.h" />
-    <ClInclude Include="bullet3/src/LinearMath/btMotionState.h" />
-    <ClCompile Include="bullet3/src/LinearMath/btPolarDecomposition.cpp" />
-    <ClInclude Include="bullet3/src/LinearMath/btPolarDecomposition.h" />
-    <ClInclude Include="bullet3/src/LinearMath/btPoolAllocator.h" />
-    <ClInclude Include="bullet3/src/LinearMath/btQuadWord.h" />
-    <ClInclude Include="bullet3/src/LinearMath/btQuaternion.h" />
-    <ClCompile Include="bullet3/src/LinearMath/btQuickprof.cpp" />
-    <ClInclude Include="bullet3/src/LinearMath/btQuickprof.h" />
-    <ClInclude Include="bullet3/src/LinearMath/btRandom.h" />
-    <ClInclude Include="bullet3/src/LinearMath/btScalar.h" />
-    <ClCompile Include="bullet3/src/LinearMath/btSerializer64.cpp" />
-    <ClCompile Include="bullet3/src/LinearMath/btSerializer.cpp" />
-    <ClInclude Include="bullet3/src/LinearMath/btSerializer.h" />
-    <ClInclude Include="bullet3/src/LinearMath/btSpatialAlgebra.h" />
-    <ClInclude Include="bullet3/src/LinearMath/btStackAlloc.h" />
-    <ClCompile Include="bullet3/src/LinearMath/btThreads.cpp" />
-    <ClInclude Include="bullet3/src/LinearMath/btThreads.h" />
-    <ClInclude Include="bullet3/src/LinearMath/btTransform.h" />
-    <ClInclude Include="bullet3/src/LinearMath/btTransformUtil.h" />
-    <ClCompile Include="bullet3/src/LinearMath/btVector3.cpp" />
-    <ClInclude Include="bullet3/src/LinearMath/btVector3.h" />
-  </ItemGroup>
-  <ItemGroup Condition="false">
-    <ClCompile Include="bullet3/src/clew/clew.c" />
-    <ClInclude Include="bullet3/src/clew/clew.h" />
-  </ItemGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
-  <ImportGroup Label="ExtensionTargets">
-    <Import Project="$(LolDir)\build\msbuild\lolfx.targets" />
-  </ImportGroup>
-</Project>
diff --git a/src/3rdparty/lol-bullet.vcxproj.filters b/src/3rdparty/lol-bullet.vcxproj.filters
deleted file mode 100644
index 26403917..00000000
--- a/src/3rdparty/lol-bullet.vcxproj.filters
+++ /dev/null
@@ -1,1119 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <ItemGroup>
-    <Filter Include="bullet">
-      <UniqueIdentifier>{b946cc33-6677-4e16-b7ef-fa3ee393ec19}</UniqueIdentifier>
-    </Filter>
-  </ItemGroup>
-  <ItemGroup>
-    <ClCompile Include="BulletCollision\CollisionDispatch\SphereTriangleDetector.cpp">
-      <Filter>bullet</Filter>
-    </ClCompile>
-    <ClCompile Include="BulletCollision\CollisionDispatch\btActivatingCollisionAlgorithm.cpp">
-      <Filter>bullet</Filter>
-    </ClCompile>
-    <ClCompile Include="LinearMath\btAlignedAllocator.cpp">
-      <Filter>bullet</Filter>
-    </ClCompile>
-    <ClCompile Include="BulletCollision\BroadphaseCollision\btAxisSweep3.cpp">
-      <Filter>bullet</Filter>
-    </ClCompile>
-    <ClCompile Include="BulletCollision\CollisionDispatch\btBox2dBox2dCollisionAlgorithm.cpp">
-      <Filter>bullet</Filter>
-    </ClCompile>
-    <ClCompile Include="BulletCollision\CollisionShapes\btBox2dShape.cpp">
-      <Filter>bullet</Filter>
-    </ClCompile>
-    <ClCompile Include="BulletCollision\CollisionDispatch\btBoxBoxCollisionAlgorithm.cpp">
-      <Filter>bullet</Filter>
-    </ClCompile>
-    <ClCompile Include="BulletCollision\CollisionDispatch\btBoxBoxDetector.cpp">
-      <Filter>bullet</Filter>
-    </ClCompile>
-    <ClCompile Include="BulletCollision\CollisionShapes\btBoxShape.cpp">
-      <Filter>bullet</Filter>
-    </ClCompile>
-    <ClCompile Include="BulletCollision\BroadphaseCollision\btBroadphaseProxy.cpp">
-      <Filter>bullet</Filter>
-    </ClCompile>
-    <ClCompile Include="BulletCollision\CollisionShapes\btBvhTriangleMeshShape.cpp">
-      <Filter>bullet</Filter>
-    </ClCompile>
-    <ClCompile Include="BulletCollision\CollisionShapes\btCapsuleShape.cpp">
-      <Filter>bullet</Filter>
-    </ClCompile>
-    <ClCompile Include="BulletCollision\BroadphaseCollision\btCollisionAlgorithm.cpp">
-      <Filter>bullet</Filter>
-    </ClCompile>
-    <ClCompile Include="BulletCollision\CollisionDispatch\btCollisionDispatcher.cpp">
-      <Filter>bullet</Filter>
-    </ClCompile>
-    <ClCompile Include="BulletCollision\CollisionDispatch\btCollisionObject.cpp">
-      <Filter>bullet</Filter>
-    </ClCompile>
-    <ClCompile Include="BulletCollision\CollisionShapes\btCollisionShape.cpp">
-      <Filter>bullet</Filter>
-    </ClCompile>
-    <ClCompile Include="BulletCollision\CollisionDispatch\btCollisionWorld.cpp">
-      <Filter>bullet</Filter>
-    </ClCompile>
-    <ClCompile Include="BulletCollision\CollisionDispatch\btCompoundCollisionAlgorithm.cpp">
-      <Filter>bullet</Filter>
-    </ClCompile>
-    <ClCompile Include="BulletCollision\CollisionShapes\btCompoundShape.cpp">
-      <Filter>bullet</Filter>
-    </ClCompile>
-    <ClCompile Include="BulletCollision\CollisionShapes\btConcaveShape.cpp">
-      <Filter>bullet</Filter>
-    </ClCompile>
-    <ClCompile Include="BulletCollision\CollisionShapes\btConeShape.cpp">
-      <Filter>bullet</Filter>
-    </ClCompile>
-    <ClCompile Include="BulletDynamics\ConstraintSolver\btConeTwistConstraint.cpp">
-      <Filter>bullet</Filter>
-    </ClCompile>
-    <ClCompile Include="BulletDynamics\ConstraintSolver\btContactConstraint.cpp">
-      <Filter>bullet</Filter>
-    </ClCompile>
-    <ClCompile Include="BulletCollision\Gimpact\btContactProcessing.cpp">
-      <Filter>bullet</Filter>
-    </ClCompile>
-    <ClCompile Include="BulletCollision\NarrowPhaseCollision\btContinuousConvexCollision.cpp">
-      <Filter>bullet</Filter>
-    </ClCompile>
-    <ClCompile Include="BulletCollision\CollisionDispatch\btConvex2dConvex2dAlgorithm.cpp">
-      <Filter>bullet</Filter>
-    </ClCompile>
-    <ClCompile Include="BulletCollision\CollisionShapes\btConvex2dShape.cpp">
-      <Filter>bullet</Filter>
-    </ClCompile>
-    <ClCompile Include="BulletCollision\NarrowPhaseCollision\btConvexCast.cpp">
-      <Filter>bullet</Filter>
-    </ClCompile>
-    <ClCompile Include="BulletCollision\CollisionDispatch\btConvexConcaveCollisionAlgorithm.cpp">
-      <Filter>bullet</Filter>
-    </ClCompile>
-    <ClCompile Include="BulletCollision\CollisionDispatch\btConvexConvexAlgorithm.cpp">
-      <Filter>bullet</Filter>
-    </ClCompile>
-    <ClCompile Include="LinearMath\btConvexHull.cpp">
-      <Filter>bullet</Filter>
-    </ClCompile>
-    <ClCompile Include="LinearMath\btConvexHullComputer.cpp">
-      <Filter>bullet</Filter>
-    </ClCompile>
-    <ClCompile Include="BulletCollision\CollisionShapes\btConvexHullShape.cpp">
-      <Filter>bullet</Filter>
-    </ClCompile>
-    <ClCompile Include="BulletCollision\CollisionShapes\btConvexInternalShape.cpp">
-      <Filter>bullet</Filter>
-    </ClCompile>
-    <ClCompile Include="BulletCollision\CollisionDispatch\btConvexPlaneCollisionAlgorithm.cpp">
-      <Filter>bullet</Filter>
-    </ClCompile>
-    <ClCompile Include="BulletCollision\CollisionShapes\btConvexPointCloudShape.cpp">
-      <Filter>bullet</Filter>
-    </ClCompile>
-    <ClCompile Include="BulletCollision\CollisionShapes\btConvexPolyhedron.cpp">
-      <Filter>bullet</Filter>
-    </ClCompile>
-    <ClCompile Include="BulletCollision\CollisionShapes\btConvexShape.cpp">
-      <Filter>bullet</Filter>
-    </ClCompile>
-    <ClCompile Include="BulletCollision\CollisionShapes\btConvexTriangleMeshShape.cpp">
-      <Filter>bullet</Filter>
-    </ClCompile>
-    <ClCompile Include="BulletCollision\CollisionShapes\btCylinderShape.cpp">
-      <Filter>bullet</Filter>
-    </ClCompile>
-    <ClCompile Include="BulletCollision\BroadphaseCollision\btDbvt.cpp">
-      <Filter>bullet</Filter>
-    </ClCompile>
-    <ClCompile Include="BulletCollision\BroadphaseCollision\btDbvtBroadphase.cpp">
-      <Filter>bullet</Filter>
-    </ClCompile>
-    <ClCompile Include="BulletCollision\CollisionDispatch\btDefaultCollisionConfiguration.cpp">
-      <Filter>bullet</Filter>
-    </ClCompile>
-    <ClCompile Include="BulletSoftBody\btDefaultSoftBodySolver.cpp">
-      <Filter>bullet</Filter>
-    </ClCompile>
-    <ClCompile Include="BulletDynamics\Dynamics\btDiscreteDynamicsWorld.cpp">
-      <Filter>bullet</Filter>
-    </ClCompile>
-    <ClCompile Include="BulletCollision\BroadphaseCollision\btDispatcher.cpp">
-      <Filter>bullet</Filter>
-    </ClCompile>
-    <ClCompile Include="BulletCollision\CollisionDispatch\btEmptyCollisionAlgorithm.cpp">
-      <Filter>bullet</Filter>
-    </ClCompile>
-    <ClCompile Include="BulletCollision\CollisionShapes\btEmptyShape.cpp">
-      <Filter>bullet</Filter>
-    </ClCompile>
-    <ClCompile Include="BulletDynamics\ConstraintSolver\btGeneric6DofConstraint.cpp">
-      <Filter>bullet</Filter>
-    </ClCompile>
-    <ClCompile Include="BulletDynamics\ConstraintSolver\btGeneric6DofSpringConstraint.cpp">
-      <Filter>bullet</Filter>
-    </ClCompile>
-    <ClCompile Include="BulletCollision\Gimpact\btGenericPoolAllocator.cpp">
-      <Filter>bullet</Filter>
-    </ClCompile>
-    <ClCompile Include="LinearMath\btGeometryUtil.cpp">
-      <Filter>bullet</Filter>
-    </ClCompile>
-    <ClCompile Include="BulletCollision\CollisionDispatch\btGhostObject.cpp">
-      <Filter>bullet</Filter>
-    </ClCompile>
-    <ClCompile Include="BulletCollision\Gimpact\btGImpactBvh.cpp">
-      <Filter>bullet</Filter>
-    </ClCompile>
-    <ClCompile Include="BulletCollision\Gimpact\btGImpactCollisionAlgorithm.cpp">
-      <Filter>bullet</Filter>
-    </ClCompile>
-    <ClCompile Include="BulletCollision\Gimpact\btGImpactQuantizedBvh.cpp">
-      <Filter>bullet</Filter>
-    </ClCompile>
-    <ClCompile Include="BulletCollision\Gimpact\btGImpactShape.cpp">
-      <Filter>bullet</Filter>
-    </ClCompile>
-    <ClCompile Include="BulletCollision\NarrowPhaseCollision\btGjkConvexCast.cpp">
-      <Filter>bullet</Filter>
-    </ClCompile>
-    <ClCompile Include="BulletCollision\NarrowPhaseCollision\btGjkEpa2.cpp">
-      <Filter>bullet</Filter>
-    </ClCompile>
-    <ClCompile Include="BulletCollision\NarrowPhaseCollision\btGjkEpaPenetrationDepthSolver.cpp">
-      <Filter>bullet</Filter>
-    </ClCompile>
-    <ClCompile Include="BulletCollision\NarrowPhaseCollision\btGjkPairDetector.cpp">
-      <Filter>bullet</Filter>
-    </ClCompile>
-    <ClCompile Include="BulletCollision\CollisionShapes\btHeightfieldTerrainShape.cpp">
-      <Filter>bullet</Filter>
-    </ClCompile>
-    <ClCompile Include="BulletDynamics\ConstraintSolver\btHinge2Constraint.cpp">
-      <Filter>bullet</Filter>
-    </ClCompile>
-    <ClCompile Include="BulletDynamics\ConstraintSolver\btHingeConstraint.cpp">
-      <Filter>bullet</Filter>
-    </ClCompile>
-    <ClCompile Include="BulletCollision\CollisionDispatch\btInternalEdgeUtility.cpp">
-      <Filter>bullet</Filter>
-    </ClCompile>
-    <ClCompile Include="BulletDynamics\Character\btKinematicCharacterController.cpp">
-      <Filter>bullet</Filter>
-    </ClCompile>
-    <ClCompile Include="BulletCollision\CollisionDispatch\btManifoldResult.cpp">
-      <Filter>bullet</Filter>
-    </ClCompile>
-    <ClCompile Include="BulletCollision\NarrowPhaseCollision\btMinkowskiPenetrationDepthSolver.cpp">
-      <Filter>bullet</Filter>
-    </ClCompile>
-    <ClCompile Include="BulletCollision\CollisionShapes\btMinkowskiSumShape.cpp">
-      <Filter>bullet</Filter>
-    </ClCompile>
-    <ClCompile Include="BulletCollision\CollisionShapes\btMultimaterialTriangleMeshShape.cpp">
-      <Filter>bullet</Filter>
-    </ClCompile>
-    <ClCompile Include="BulletCollision\BroadphaseCollision\btMultiSapBroadphase.cpp">
-      <Filter>bullet</Filter>
-    </ClCompile>
-    <ClCompile Include="BulletCollision\CollisionShapes\btMultiSphereShape.cpp">
-      <Filter>bullet</Filter>
-    </ClCompile>
-    <ClCompile Include="BulletCollision\CollisionShapes\btOptimizedBvh.cpp">
-      <Filter>bullet</Filter>
-    </ClCompile>
-    <ClCompile Include="BulletCollision\BroadphaseCollision\btOverlappingPairCache.cpp">
-      <Filter>bullet</Filter>
-    </ClCompile>
-    <ClCompile Include="BulletCollision\NarrowPhaseCollision\btPersistentManifold.cpp">
-      <Filter>bullet</Filter>
-    </ClCompile>
-    <ClCompile Include="BulletDynamics\ConstraintSolver\btPoint2PointConstraint.cpp">
-      <Filter>bullet</Filter>
-    </ClCompile>
-    <ClCompile Include="BulletCollision\NarrowPhaseCollision\btPolyhedralContactClipping.cpp">
-      <Filter>bullet</Filter>
-    </ClCompile>
-    <ClCompile Include="BulletCollision\CollisionShapes\btPolyhedralConvexShape.cpp">
-      <Filter>bullet</Filter>
-    </ClCompile>
-    <ClCompile Include="BulletCollision\BroadphaseCollision\btQuantizedBvh.cpp">
-      <Filter>bullet</Filter>
-    </ClCompile>
-    <ClCompile Include="LinearMath\btQuickprof.cpp">
-      <Filter>bullet</Filter>
-    </ClCompile>
-    <ClCompile Include="BulletCollision\NarrowPhaseCollision\btRaycastCallback.cpp">
-      <Filter>bullet</Filter>
-    </ClCompile>
-    <ClCompile Include="BulletDynamics\Vehicle\btRaycastVehicle.cpp">
-      <Filter>bullet</Filter>
-    </ClCompile>
-    <ClCompile Include="BulletDynamics\Dynamics\btRigidBody.cpp">
-      <Filter>bullet</Filter>
-    </ClCompile>
-    <ClCompile Include="BulletCollision\CollisionShapes\btScaledBvhTriangleMeshShape.cpp">
-      <Filter>bullet</Filter>
-    </ClCompile>
-    <ClCompile Include="BulletDynamics\ConstraintSolver\btSequentialImpulseConstraintSolver.cpp">
-      <Filter>bullet</Filter>
-    </ClCompile>
-    <ClCompile Include="LinearMath\btSerializer.cpp">
-      <Filter>bullet</Filter>
-    </ClCompile>
-    <ClCompile Include="BulletCollision\CollisionShapes\btShapeHull.cpp">
-      <Filter>bullet</Filter>
-    </ClCompile>
-    <ClCompile Include="BulletCollision\BroadphaseCollision\btSimpleBroadphase.cpp">
-      <Filter>bullet</Filter>
-    </ClCompile>
-    <ClCompile Include="BulletDynamics\Dynamics\btSimpleDynamicsWorld.cpp">
-      <Filter>bullet</Filter>
-    </ClCompile>
-    <ClCompile Include="BulletCollision\CollisionDispatch\btSimulationIslandManager.cpp">
-      <Filter>bullet</Filter>
-    </ClCompile>
-    <ClCompile Include="BulletDynamics\ConstraintSolver\btSliderConstraint.cpp">
-      <Filter>bullet</Filter>
-    </ClCompile>
-    <ClCompile Include="BulletSoftBody\btSoftBody.cpp">
-      <Filter>bullet</Filter>
-    </ClCompile>
-    <ClCompile Include="BulletSoftBody\btSoftBodyConcaveCollisionAlgorithm.cpp">
-      <Filter>bullet</Filter>
-    </ClCompile>
-    <ClCompile Include="BulletSoftBody\btSoftBodyHelpers.cpp">
-      <Filter>bullet</Filter>
-    </ClCompile>
-    <ClCompile Include="BulletSoftBody\btSoftBodyRigidBodyCollisionConfiguration.cpp">
-      <Filter>bullet</Filter>
-    </ClCompile>
-    <ClCompile Include="BulletSoftBody\btSoftRigidCollisionAlgorithm.cpp">
-      <Filter>bullet</Filter>
-    </ClCompile>
-    <ClCompile Include="BulletSoftBody\btSoftRigidDynamicsWorld.cpp">
-      <Filter>bullet</Filter>
-    </ClCompile>
-    <ClCompile Include="BulletSoftBody\btSoftSoftCollisionAlgorithm.cpp">
-      <Filter>bullet</Filter>
-    </ClCompile>
-    <ClCompile Include="BulletDynamics\ConstraintSolver\btSolve2LinearConstraint.cpp">
-      <Filter>bullet</Filter>
-    </ClCompile>
-    <ClCompile Include="BulletCollision\CollisionDispatch\btSphereBoxCollisionAlgorithm.cpp">
-      <Filter>bullet</Filter>
-    </ClCompile>
-    <ClCompile Include="BulletCollision\CollisionShapes\btSphereShape.cpp">
-      <Filter>bullet</Filter>
-    </ClCompile>
-    <ClCompile Include="BulletCollision\CollisionDispatch\btSphereSphereCollisionAlgorithm.cpp">
-      <Filter>bullet</Filter>
-    </ClCompile>
-    <ClCompile Include="BulletCollision\CollisionDispatch\btSphereTriangleCollisionAlgorithm.cpp">
-      <Filter>bullet</Filter>
-    </ClCompile>
-    <ClCompile Include="BulletCollision\CollisionShapes\btStaticPlaneShape.cpp">
-      <Filter>bullet</Filter>
-    </ClCompile>
-    <ClCompile Include="BulletCollision\CollisionShapes\btStridingMeshInterface.cpp">
-      <Filter>bullet</Filter>
-    </ClCompile>
-    <ClCompile Include="BulletCollision\NarrowPhaseCollision\btSubSimplexConvexCast.cpp">
-      <Filter>bullet</Filter>
-    </ClCompile>
-    <ClCompile Include="BulletCollision\CollisionShapes\btTetrahedronShape.cpp">
-      <Filter>bullet</Filter>
-    </ClCompile>
-    <ClCompile Include="BulletCollision\CollisionShapes\btTriangleBuffer.cpp">
-      <Filter>bullet</Filter>
-    </ClCompile>
-    <ClCompile Include="BulletCollision\CollisionShapes\btTriangleCallback.cpp">
-      <Filter>bullet</Filter>
-    </ClCompile>
-    <ClCompile Include="BulletCollision\CollisionShapes\btTriangleIndexVertexArray.cpp">
-      <Filter>bullet</Filter>
-    </ClCompile>
-    <ClCompile Include="BulletCollision\CollisionShapes\btTriangleIndexVertexMaterialArray.cpp">
-      <Filter>bullet</Filter>
-    </ClCompile>
-    <ClCompile Include="BulletCollision\CollisionShapes\btTriangleMesh.cpp">
-      <Filter>bullet</Filter>
-    </ClCompile>
-    <ClCompile Include="BulletCollision\CollisionShapes\btTriangleMeshShape.cpp">
-      <Filter>bullet</Filter>
-    </ClCompile>
-    <ClCompile Include="BulletCollision\Gimpact\btTriangleShapeEx.cpp">
-      <Filter>bullet</Filter>
-    </ClCompile>
-    <ClCompile Include="BulletDynamics\ConstraintSolver\btTypedConstraint.cpp">
-      <Filter>bullet</Filter>
-    </ClCompile>
-    <ClCompile Include="BulletCollision\CollisionShapes\btUniformScalingShape.cpp">
-      <Filter>bullet</Filter>
-    </ClCompile>
-    <ClCompile Include="BulletCollision\CollisionDispatch\btUnionFind.cpp">
-      <Filter>bullet</Filter>
-    </ClCompile>
-    <ClCompile Include="BulletDynamics\ConstraintSolver\btUniversalConstraint.cpp">
-      <Filter>bullet</Filter>
-    </ClCompile>
-    <ClCompile Include="BulletCollision\NarrowPhaseCollision\btVoronoiSimplexSolver.cpp">
-      <Filter>bullet</Filter>
-    </ClCompile>
-    <ClCompile Include="BulletDynamics\Vehicle\btWheelInfo.cpp">
-      <Filter>bullet</Filter>
-    </ClCompile>
-    <ClCompile Include="BulletDynamics\Dynamics\Bullet-C-API.cpp">
-      <Filter>bullet</Filter>
-    </ClCompile>
-    <ClCompile Include="BulletCollision\Gimpact\gim_box_set.cpp">
-      <Filter>bullet</Filter>
-    </ClCompile>
-    <ClCompile Include="BulletCollision\Gimpact\gim_contact.cpp">
-      <Filter>bullet</Filter>
-    </ClCompile>
-    <ClCompile Include="BulletCollision\Gimpact\gim_memory.cpp">
-      <Filter>bullet</Filter>
-    </ClCompile>
-    <ClCompile Include="BulletCollision\Gimpact\gim_tri_collision.cpp">
-      <Filter>bullet</Filter>
-    </ClCompile>
-  </ItemGroup>
-  <ItemGroup>
-    <ClInclude Include="btBulletCollisionCommon.h">
-      <Filter>bullet</Filter>
-    </ClInclude>
-    <ClInclude Include="btBulletDynamicsCommon.h">
-      <Filter>bullet</Filter>
-    </ClInclude>
-    <ClInclude Include="Bullet-C-Api.h">
-      <Filter>bullet</Filter>
-    </ClInclude>
-    <ClInclude Include="BulletMultiThreaded\Win32ThreadSupport.h">
-      <Filter>bullet</Filter>
-    </ClInclude>
-    <ClInclude Include="BulletMultiThreaded\SpuNarrowPhaseCollisionTask\Box.h">
-      <Filter>bullet</Filter>
-    </ClInclude>
-    <ClInclude Include="BulletMultiThreaded\SpuNarrowPhaseCollisionTask\boxBoxDistance.h">
-      <Filter>bullet</Filter>
-    </ClInclude>
-    <ClInclude Include="LinearMath\btAabbUtil2.h">
-      <Filter>bullet</Filter>
-    </ClInclude>
-    <ClInclude Include="BulletDynamics\Dynamics\btActionInterface.h">
-      <Filter>bullet</Filter>
-    </ClInclude>
-    <ClInclude Include="BulletCollision\CollisionDispatch\btActivatingCollisionAlgorithm.h">
-      <Filter>bullet</Filter>
-    </ClInclude>
-    <ClInclude Include="LinearMath\btAlignedAllocator.h">
-      <Filter>bullet</Filter>
-    </ClInclude>
-    <ClInclude Include="LinearMath\btAlignedObjectArray.h">
-      <Filter>bullet</Filter>
-    </ClInclude>
-    <ClInclude Include="BulletCollision\BroadphaseCollision\btAxisSweep3.h">
-      <Filter>bullet</Filter>
-    </ClInclude>
-    <ClInclude Include="BulletCollision\CollisionDispatch\btBox2dBox2dCollisionAlgorithm.h">
-      <Filter>bullet</Filter>
-    </ClInclude>
-    <ClInclude Include="BulletCollision\CollisionShapes\btBox2dShape.h">
-      <Filter>bullet</Filter>
-    </ClInclude>
-    <ClInclude Include="BulletCollision\CollisionDispatch\btBoxBoxCollisionAlgorithm.h">
-      <Filter>bullet</Filter>
-    </ClInclude>
-    <ClInclude Include="BulletCollision\CollisionDispatch\btBoxBoxDetector.h">
-      <Filter>bullet</Filter>
-    </ClInclude>
-    <ClInclude Include="BulletCollision\Gimpact\btBoxCollision.h">
-      <Filter>bullet</Filter>
-    </ClInclude>
-    <ClInclude Include="BulletCollision\CollisionShapes\btBoxShape.h">
-      <Filter>bullet</Filter>
-    </ClInclude>
-    <ClInclude Include="BulletCollision\BroadphaseCollision\btBroadphaseInterface.h">
-      <Filter>bullet</Filter>
-    </ClInclude>
-    <ClInclude Include="BulletCollision\BroadphaseCollision\btBroadphaseProxy.h">
-      <Filter>bullet</Filter>
-    </ClInclude>
-    <ClInclude Include="BulletCollision\CollisionShapes\btBvhTriangleMeshShape.h">
-      <Filter>bullet</Filter>
-    </ClInclude>
-    <ClInclude Include="BulletCollision\CollisionShapes\btCapsuleShape.h">
-      <Filter>bullet</Filter>
-    </ClInclude>
-    <ClInclude Include="BulletDynamics\Character\btCharacterControllerInterface.h">
-      <Filter>bullet</Filter>
-    </ClInclude>
-    <ClInclude Include="BulletCollision\Gimpact\btClipPolygon.h">
-      <Filter>bullet</Filter>
-    </ClInclude>
-    <ClInclude Include="BulletCollision\BroadphaseCollision\btCollisionAlgorithm.h">
-      <Filter>bullet</Filter>
-    </ClInclude>
-    <ClInclude Include="BulletCollision\CollisionDispatch\btCollisionConfiguration.h">
-      <Filter>bullet</Filter>
-    </ClInclude>
-    <ClInclude Include="BulletCollision\CollisionDispatch\btCollisionCreateFunc.h">
-      <Filter>bullet</Filter>
-    </ClInclude>
-    <ClInclude Include="BulletCollision\CollisionDispatch\btCollisionDispatcher.h">
-      <Filter>bullet</Filter>
-    </ClInclude>
-    <ClInclude Include="BulletCollision\CollisionShapes\btCollisionMargin.h">
-      <Filter>bullet</Filter>
-    </ClInclude>
-    <ClInclude Include="BulletCollision\CollisionDispatch\btCollisionObject.h">
-      <Filter>bullet</Filter>
-    </ClInclude>
-    <ClInclude Include="BulletCollision\CollisionShapes\btCollisionShape.h">
-      <Filter>bullet</Filter>
-    </ClInclude>
-    <ClInclude Include="BulletCollision\CollisionDispatch\btCollisionWorld.h">
-      <Filter>bullet</Filter>
-    </ClInclude>
-    <ClInclude Include="BulletCollision\CollisionDispatch\btCompoundCollisionAlgorithm.h">
-      <Filter>bullet</Filter>
-    </ClInclude>
-    <ClInclude Include="BulletCollision\CollisionShapes\btCompoundShape.h">
-      <Filter>bullet</Filter>
-    </ClInclude>
-    <ClInclude Include="BulletCollision\CollisionShapes\btConcaveShape.h">
-      <Filter>bullet</Filter>
-    </ClInclude>
-    <ClInclude Include="BulletCollision\CollisionShapes\btConeShape.h">
-      <Filter>bullet</Filter>
-    </ClInclude>
-    <ClInclude Include="BulletDynamics\ConstraintSolver\btConeTwistConstraint.h">
-      <Filter>bullet</Filter>
-    </ClInclude>
-    <ClInclude Include="BulletDynamics\ConstraintSolver\btConstraintSolver.h">
-      <Filter>bullet</Filter>
-    </ClInclude>
-    <ClInclude Include="BulletDynamics\ConstraintSolver\btContactConstraint.h">
-      <Filter>bullet</Filter>
-    </ClInclude>
-    <ClInclude Include="BulletCollision\Gimpact\btContactProcessing.h">
-      <Filter>bullet</Filter>
-    </ClInclude>
-    <ClInclude Include="BulletDynamics\ConstraintSolver\btContactSolverInfo.h">
-      <Filter>bullet</Filter>
-    </ClInclude>
-    <ClInclude Include="BulletCollision\NarrowPhaseCollision\btContinuousConvexCollision.h">
-      <Filter>bullet</Filter>
-    </ClInclude>
-    <ClInclude Include="BulletCollision\CollisionDispatch\btConvex2dConvex2dAlgorithm.h">
-      <Filter>bullet</Filter>
-    </ClInclude>
-    <ClInclude Include="BulletCollision\CollisionShapes\btConvex2dShape.h">
-      <Filter>bullet</Filter>
-    </ClInclude>
-    <ClInclude Include="BulletCollision\NarrowPhaseCollision\btConvexCast.h">
-      <Filter>bullet</Filter>
-    </ClInclude>
-    <ClInclude Include="BulletCollision\CollisionDispatch\btConvexConcaveCollisionAlgorithm.h">
-      <Filter>bullet</Filter>
-    </ClInclude>
-    <ClInclude Include="BulletCollision\CollisionDispatch\btConvexConvexAlgorithm.h">
-      <Filter>bullet</Filter>
-    </ClInclude>
-    <ClInclude Include="LinearMath\btConvexHull.h">
-      <Filter>bullet</Filter>
-    </ClInclude>
-    <ClInclude Include="LinearMath\btConvexHullComputer.h">
-      <Filter>bullet</Filter>
-    </ClInclude>
-    <ClInclude Include="BulletCollision\CollisionShapes\btConvexHullShape.h">
-      <Filter>bullet</Filter>
-    </ClInclude>
-    <ClInclude Include="BulletCollision\CollisionShapes\btConvexInternalShape.h">
-      <Filter>bullet</Filter>
-    </ClInclude>
-    <ClInclude Include="BulletCollision\NarrowPhaseCollision\btConvexPenetrationDepthSolver.h">
-      <Filter>bullet</Filter>
-    </ClInclude>
-    <ClInclude Include="BulletCollision\CollisionDispatch\btConvexPlaneCollisionAlgorithm.h">
-      <Filter>bullet</Filter>
-    </ClInclude>
-    <ClInclude Include="BulletCollision\CollisionShapes\btConvexPointCloudShape.h">
-      <Filter>bullet</Filter>
-    </ClInclude>
-    <ClInclude Include="BulletCollision\CollisionShapes\btConvexPolyhedron.h">
-      <Filter>bullet</Filter>
-    </ClInclude>
-    <ClInclude Include="BulletCollision\CollisionShapes\btConvexShape.h">
-      <Filter>bullet</Filter>
-    </ClInclude>
-    <ClInclude Include="BulletCollision\CollisionShapes\btConvexTriangleMeshShape.h">
-      <Filter>bullet</Filter>
-    </ClInclude>
-    <ClInclude Include="BulletCollision\CollisionShapes\btCylinderShape.h">
-      <Filter>bullet</Filter>
-    </ClInclude>
-    <ClInclude Include="BulletCollision\BroadphaseCollision\btDbvt.h">
-      <Filter>bullet</Filter>
-    </ClInclude>
-    <ClInclude Include="BulletCollision\BroadphaseCollision\btDbvtBroadphase.h">
-      <Filter>bullet</Filter>
-    </ClInclude>
-    <ClInclude Include="BulletCollision\CollisionDispatch\btDefaultCollisionConfiguration.h">
-      <Filter>bullet</Filter>
-    </ClInclude>
-    <ClInclude Include="LinearMath\btDefaultMotionState.h">
-      <Filter>bullet</Filter>
-    </ClInclude>
-    <ClInclude Include="BulletSoftBody\btDefaultSoftBodySolver.h">
-      <Filter>bullet</Filter>
-    </ClInclude>
-    <ClInclude Include="BulletCollision\NarrowPhaseCollision\btDiscreteCollisionDetectorInterface.h">
-      <Filter>bullet</Filter>
-    </ClInclude>
-    <ClInclude Include="BulletDynamics\Dynamics\btDiscreteDynamicsWorld.h">
-      <Filter>bullet</Filter>
-    </ClInclude>
-    <ClInclude Include="BulletCollision\BroadphaseCollision\btDispatcher.h">
-      <Filter>bullet</Filter>
-    </ClInclude>
-    <ClInclude Include="BulletDynamics\Dynamics\btDynamicsWorld.h">
-      <Filter>bullet</Filter>
-    </ClInclude>
-    <ClInclude Include="BulletCollision\CollisionDispatch\btEmptyCollisionAlgorithm.h">
-      <Filter>bullet</Filter>
-    </ClInclude>
-    <ClInclude Include="BulletCollision\CollisionShapes\btEmptyShape.h">
-      <Filter>bullet</Filter>
-    </ClInclude>
-    <ClInclude Include="BulletDynamics\ConstraintSolver\btGeneric6DofConstraint.h">
-      <Filter>bullet</Filter>
-    </ClInclude>
-    <ClInclude Include="BulletDynamics\ConstraintSolver\btGeneric6DofSpringConstraint.h">
-      <Filter>bullet</Filter>
-    </ClInclude>
-    <ClInclude Include="BulletCollision\Gimpact\btGenericPoolAllocator.h">
-      <Filter>bullet</Filter>
-    </ClInclude>
-    <ClInclude Include="BulletCollision\Gimpact\btGeometryOperations.h">
-      <Filter>bullet</Filter>
-    </ClInclude>
-    <ClInclude Include="LinearMath\btGeometryUtil.h">
-      <Filter>bullet</Filter>
-    </ClInclude>
-    <ClInclude Include="BulletCollision\CollisionDispatch\btGhostObject.h">
-      <Filter>bullet</Filter>
-    </ClInclude>
-    <ClInclude Include="BulletCollision\Gimpact\btGImpactBvh.h">
-      <Filter>bullet</Filter>
-    </ClInclude>
-    <ClInclude Include="BulletCollision\Gimpact\btGImpactCollisionAlgorithm.h">
-      <Filter>bullet</Filter>
-    </ClInclude>
-    <ClInclude Include="BulletCollision\Gimpact\btGImpactMassUtil.h">
-      <Filter>bullet</Filter>
-    </ClInclude>
-    <ClInclude Include="BulletCollision\Gimpact\btGImpactQuantizedBvh.h">
-      <Filter>bullet</Filter>
-    </ClInclude>
-    <ClInclude Include="BulletCollision\Gimpact\btGImpactShape.h">
-      <Filter>bullet</Filter>
-    </ClInclude>
-    <ClInclude Include="BulletCollision\NarrowPhaseCollision\btGjkConvexCast.h">
-      <Filter>bullet</Filter>
-    </ClInclude>
-    <ClInclude Include="BulletCollision\NarrowPhaseCollision\btGjkEpa2.h">
-      <Filter>bullet</Filter>
-    </ClInclude>
-    <ClInclude Include="BulletCollision\NarrowPhaseCollision\btGjkEpaPenetrationDepthSolver.h">
-      <Filter>bullet</Filter>
-    </ClInclude>
-    <ClInclude Include="BulletCollision\NarrowPhaseCollision\btGjkPairDetector.h">
-      <Filter>bullet</Filter>
-    </ClInclude>
-    <ClInclude Include="BulletMultiThreaded\btGpu3DGridBroadphase.h">
-      <Filter>bullet</Filter>
-    </ClInclude>
-    <ClInclude Include="BulletMultiThreaded\btGpu3DGridBroadphaseSharedCode.h">
-      <Filter>bullet</Filter>
-    </ClInclude>
-    <ClInclude Include="BulletMultiThreaded\btGpu3DGridBroadphaseSharedDefs.h">
-      <Filter>bullet</Filter>
-    </ClInclude>
-    <ClInclude Include="BulletMultiThreaded\btGpu3DGridBroadphaseSharedTypes.h">
-      <Filter>bullet</Filter>
-    </ClInclude>
-    <ClInclude Include="BulletMultiThreaded\btGpuDefines.h">
-      <Filter>bullet</Filter>
-    </ClInclude>
-    <ClInclude Include="BulletMultiThreaded\btGpuUtilsSharedCode.h">
-      <Filter>bullet</Filter>
-    </ClInclude>
-    <ClInclude Include="BulletMultiThreaded\btGpuUtilsSharedDefs.h">
-      <Filter>bullet</Filter>
-    </ClInclude>
-    <ClInclude Include="LinearMath\btGrahamScan2dConvexHull.h">
-      <Filter>bullet</Filter>
-    </ClInclude>
-    <ClInclude Include="LinearMath\btHashMap.h">
-      <Filter>bullet</Filter>
-    </ClInclude>
-    <ClInclude Include="BulletCollision\CollisionShapes\btHeightfieldTerrainShape.h">
-      <Filter>bullet</Filter>
-    </ClInclude>
-    <ClInclude Include="BulletDynamics\ConstraintSolver\btHinge2Constraint.h">
-      <Filter>bullet</Filter>
-    </ClInclude>
-    <ClInclude Include="BulletDynamics\ConstraintSolver\btHingeConstraint.h">
-      <Filter>bullet</Filter>
-    </ClInclude>
-    <ClInclude Include="LinearMath\btIDebugDraw.h">
-      <Filter>bullet</Filter>
-    </ClInclude>
-    <ClInclude Include="BulletCollision\CollisionDispatch\btInternalEdgeUtility.h">
-      <Filter>bullet</Filter>
-    </ClInclude>
-    <ClInclude Include="BulletDynamics\ConstraintSolver\btJacobianEntry.h">
-      <Filter>bullet</Filter>
-    </ClInclude>
-    <ClInclude Include="BulletDynamics\Character\btKinematicCharacterController.h">
-      <Filter>bullet</Filter>
-    </ClInclude>
-    <ClInclude Include="LinearMath\btList.h">
-      <Filter>bullet</Filter>
-    </ClInclude>
-    <ClInclude Include="BulletCollision\NarrowPhaseCollision\btManifoldPoint.h">
-      <Filter>bullet</Filter>
-    </ClInclude>
-    <ClInclude Include="BulletCollision\CollisionDispatch\btManifoldResult.h">
-      <Filter>bullet</Filter>
-    </ClInclude>
-    <ClInclude Include="BulletCollision\CollisionShapes\btMaterial.h">
-      <Filter>bullet</Filter>
-    </ClInclude>
-    <ClInclude Include="LinearMath\btMatrix3x3.h">
-      <Filter>bullet</Filter>
-    </ClInclude>
-    <ClInclude Include="BulletCollision\NarrowPhaseCollision\btMinkowskiPenetrationDepthSolver.h">
-      <Filter>bullet</Filter>
-    </ClInclude>
-    <ClInclude Include="BulletCollision\CollisionShapes\btMinkowskiSumShape.h">
-      <Filter>bullet</Filter>
-    </ClInclude>
-    <ClInclude Include="LinearMath\btMinMax.h">
-      <Filter>bullet</Filter>
-    </ClInclude>
-    <ClInclude Include="LinearMath\btMotionState.h">
-      <Filter>bullet</Filter>
-    </ClInclude>
-    <ClInclude Include="BulletCollision\CollisionShapes\btMultimaterialTriangleMeshShape.h">
-      <Filter>bullet</Filter>
-    </ClInclude>
-    <ClInclude Include="BulletCollision\BroadphaseCollision\btMultiSapBroadphase.h">
-      <Filter>bullet</Filter>
-    </ClInclude>
-    <ClInclude Include="BulletCollision\CollisionShapes\btMultiSphereShape.h">
-      <Filter>bullet</Filter>
-    </ClInclude>
-    <ClInclude Include="BulletCollision\CollisionShapes\btOptimizedBvh.h">
-      <Filter>bullet</Filter>
-    </ClInclude>
-    <ClInclude Include="BulletCollision\BroadphaseCollision\btOverlappingPairCache.h">
-      <Filter>bullet</Filter>
-    </ClInclude>
-    <ClInclude Include="BulletCollision\BroadphaseCollision\btOverlappingPairCallback.h">
-      <Filter>bullet</Filter>
-    </ClInclude>
-    <ClInclude Include="BulletMultiThreaded\btParallelConstraintSolver.h">
-      <Filter>bullet</Filter>
-    </ClInclude>
-    <ClInclude Include="BulletCollision\NarrowPhaseCollision\btPersistentManifold.h">
-      <Filter>bullet</Filter>
-    </ClInclude>
-    <ClInclude Include="BulletDynamics\ConstraintSolver\btPoint2PointConstraint.h">
-      <Filter>bullet</Filter>
-    </ClInclude>
-    <ClInclude Include="BulletCollision\NarrowPhaseCollision\btPointCollector.h">
-      <Filter>bullet</Filter>
-    </ClInclude>
-    <ClInclude Include="BulletCollision\NarrowPhaseCollision\btPolyhedralContactClipping.h">
-      <Filter>bullet</Filter>
-    </ClInclude>
-    <ClInclude Include="BulletCollision\CollisionShapes\btPolyhedralConvexShape.h">
-      <Filter>bullet</Filter>
-    </ClInclude>
-    <ClInclude Include="LinearMath\btPoolAllocator.h">
-      <Filter>bullet</Filter>
-    </ClInclude>
-    <ClInclude Include="LinearMath\btQuadWord.h">
-      <Filter>bullet</Filter>
-    </ClInclude>
-    <ClInclude Include="BulletCollision\Gimpact\btQuantization.h">
-      <Filter>bullet</Filter>
-    </ClInclude>
-    <ClInclude Include="BulletCollision\BroadphaseCollision\btQuantizedBvh.h">
-      <Filter>bullet</Filter>
-    </ClInclude>
-    <ClInclude Include="LinearMath\btQuaternion.h">
-      <Filter>bullet</Filter>
-    </ClInclude>
-    <ClInclude Include="LinearMath\btQuickprof.h">
-      <Filter>bullet</Filter>
-    </ClInclude>
-    <ClInclude Include="LinearMath\btRandom.h">
-      <Filter>bullet</Filter>
-    </ClInclude>
-    <ClInclude Include="BulletCollision\NarrowPhaseCollision\btRaycastCallback.h">
-      <Filter>bullet</Filter>
-    </ClInclude>
-    <ClInclude Include="BulletDynamics\Vehicle\btRaycastVehicle.h">
-      <Filter>bullet</Filter>
-    </ClInclude>
-    <ClInclude Include="BulletDynamics\Dynamics\btRigidBody.h">
-      <Filter>bullet</Filter>
-    </ClInclude>
-    <ClInclude Include="LinearMath\btScalar.h">
-      <Filter>bullet</Filter>
-    </ClInclude>
-    <ClInclude Include="BulletCollision\CollisionShapes\btScaledBvhTriangleMeshShape.h">
-      <Filter>bullet</Filter>
-    </ClInclude>
-    <ClInclude Include="BulletDynamics\ConstraintSolver\btSequentialImpulseConstraintSolver.h">
-      <Filter>bullet</Filter>
-    </ClInclude>
-    <ClInclude Include="LinearMath\btSerializer.h">
-      <Filter>bullet</Filter>
-    </ClInclude>
-    <ClInclude Include="BulletCollision\CollisionShapes\btShapeHull.h">
-      <Filter>bullet</Filter>
-    </ClInclude>
-    <ClInclude Include="BulletCollision\BroadphaseCollision\btSimpleBroadphase.h">
-      <Filter>bullet</Filter>
-    </ClInclude>
-    <ClInclude Include="BulletDynamics\Dynamics\btSimpleDynamicsWorld.h">
-      <Filter>bullet</Filter>
-    </ClInclude>
-    <ClInclude Include="BulletCollision\NarrowPhaseCollision\btSimplexSolverInterface.h">
-      <Filter>bullet</Filter>
-    </ClInclude>
-    <ClInclude Include="BulletCollision\CollisionDispatch\btSimulationIslandManager.h">
-      <Filter>bullet</Filter>
-    </ClInclude>
-    <ClInclude Include="BulletDynamics\ConstraintSolver\btSliderConstraint.h">
-      <Filter>bullet</Filter>
-    </ClInclude>
-    <ClInclude Include="BulletSoftBody\btSoftBody.h">
-      <Filter>bullet</Filter>
-    </ClInclude>
-    <ClInclude Include="BulletSoftBody\btSoftBodyConcaveCollisionAlgorithm.h">
-      <Filter>bullet</Filter>
-    </ClInclude>
-    <ClInclude Include="BulletSoftBody\btSoftBodyData.h">
-      <Filter>bullet</Filter>
-    </ClInclude>
-    <ClInclude Include="BulletSoftBody\btSoftBodyHelpers.h">
-      <Filter>bullet</Filter>
-    </ClInclude>
-    <ClInclude Include="BulletSoftBody\btSoftBodyInternals.h">
-      <Filter>bullet</Filter>
-    </ClInclude>
-    <ClInclude Include="BulletSoftBody\btSoftBodyRigidBodyCollisionConfiguration.h">
-      <Filter>bullet</Filter>
-    </ClInclude>
-    <ClInclude Include="BulletMultiThreaded\GpuSoftBodySolvers\DX11\btSoftBodySolver_DX11.h">
-      <Filter>bullet</Filter>
-    </ClInclude>
-    <ClInclude Include="BulletMultiThreaded\GpuSoftBodySolvers\DX11\btSoftBodySolver_DX11SIMDAware.h">
-      <Filter>bullet</Filter>
-    </ClInclude>
-    <ClInclude Include="BulletMultiThreaded\GpuSoftBodySolvers\OpenCL\btSoftBodySolver_OpenCL.h">
-      <Filter>bullet</Filter>
-    </ClInclude>
-    <ClInclude Include="BulletMultiThreaded\GpuSoftBodySolvers\OpenCL\btSoftBodySolver_OpenCLSIMDAware.h">
-      <Filter>bullet</Filter>
-    </ClInclude>
-    <ClInclude Include="BulletMultiThreaded\GpuSoftBodySolvers\DX11\btSoftBodySolverBuffer_DX11.h">
-      <Filter>bullet</Filter>
-    </ClInclude>
-    <ClInclude Include="BulletMultiThreaded\GpuSoftBodySolvers\OpenCL\btSoftBodySolverBuffer_OpenCL.h">
-      <Filter>bullet</Filter>
-    </ClInclude>
-    <ClInclude Include="BulletMultiThreaded\GpuSoftBodySolvers\Shared\btSoftBodySolverData.h">
-      <Filter>bullet</Filter>
-    </ClInclude>
-    <ClInclude Include="BulletMultiThreaded\GpuSoftBodySolvers\DX11\btSoftBodySolverLinkData_DX11.h">
-      <Filter>bullet</Filter>
-    </ClInclude>
-    <ClInclude Include="BulletMultiThreaded\GpuSoftBodySolvers\DX11\btSoftBodySolverLinkData_DX11SIMDAware.h">
-      <Filter>bullet</Filter>
-    </ClInclude>
-    <ClInclude Include="BulletMultiThreaded\GpuSoftBodySolvers\OpenCL\btSoftBodySolverLinkData_OpenCL.h">
-      <Filter>bullet</Filter>
-    </ClInclude>
-    <ClInclude Include="BulletMultiThreaded\GpuSoftBodySolvers\OpenCL\btSoftBodySolverLinkData_OpenCLSIMDAware.h">
-      <Filter>bullet</Filter>
-    </ClInclude>
-    <ClInclude Include="BulletMultiThreaded\GpuSoftBodySolvers\OpenCL\btSoftBodySolverOutputCLtoGL.h">
-      <Filter>bullet</Filter>
-    </ClInclude>
-    <ClInclude Include="BulletSoftBody\btSoftBodySolvers.h">
-      <Filter>bullet</Filter>
-    </ClInclude>
-    <ClInclude Include="BulletMultiThreaded\GpuSoftBodySolvers\DX11\btSoftBodySolverTriangleData_DX11.h">
-      <Filter>bullet</Filter>
-    </ClInclude>
-    <ClInclude Include="BulletMultiThreaded\GpuSoftBodySolvers\OpenCL\btSoftBodySolverTriangleData_OpenCL.h">
-      <Filter>bullet</Filter>
-    </ClInclude>
-    <ClInclude Include="BulletSoftBody\btSoftBodySolverVertexBuffer.h">
-      <Filter>bullet</Filter>
-    </ClInclude>
-    <ClInclude Include="BulletMultiThreaded\GpuSoftBodySolvers\DX11\btSoftBodySolverVertexBuffer_DX11.h">
-      <Filter>bullet</Filter>
-    </ClInclude>
-    <ClInclude Include="BulletMultiThreaded\GpuSoftBodySolvers\OpenCL\btSoftBodySolverVertexBuffer_OpenGL.h">
-      <Filter>bullet</Filter>
-    </ClInclude>
-    <ClInclude Include="BulletMultiThreaded\GpuSoftBodySolvers\DX11\btSoftBodySolverVertexData_DX11.h">
-      <Filter>bullet</Filter>
-    </ClInclude>
-    <ClInclude Include="BulletMultiThreaded\GpuSoftBodySolvers\OpenCL\btSoftBodySolverVertexData_OpenCL.h">
-      <Filter>bullet</Filter>
-    </ClInclude>
-    <ClInclude Include="BulletSoftBody\btSoftRigidCollisionAlgorithm.h">
-      <Filter>bullet</Filter>
-    </ClInclude>
-    <ClInclude Include="BulletSoftBody\btSoftRigidDynamicsWorld.h">
-      <Filter>bullet</Filter>
-    </ClInclude>
-    <ClInclude Include="BulletSoftBody\btSoftSoftCollisionAlgorithm.h">
-      <Filter>bullet</Filter>
-    </ClInclude>
-    <ClInclude Include="BulletDynamics\ConstraintSolver\btSolve2LinearConstraint.h">
-      <Filter>bullet</Filter>
-    </ClInclude>
-    <ClInclude Include="BulletDynamics\ConstraintSolver\btSolverBody.h">
-      <Filter>bullet</Filter>
-    </ClInclude>
-    <ClInclude Include="BulletDynamics\ConstraintSolver\btSolverConstraint.h">
-      <Filter>bullet</Filter>
-    </ClInclude>
-    <ClInclude Include="BulletSoftBody\btSparseSDF.h">
-      <Filter>bullet</Filter>
-    </ClInclude>
-    <ClInclude Include="BulletCollision\CollisionDispatch\btSphereBoxCollisionAlgorithm.h">
-      <Filter>bullet</Filter>
-    </ClInclude>
-    <ClInclude Include="BulletCollision\CollisionShapes\btSphereShape.h">
-      <Filter>bullet</Filter>
-    </ClInclude>
-    <ClInclude Include="BulletCollision\CollisionDispatch\btSphereSphereCollisionAlgorithm.h">
-      <Filter>bullet</Filter>
-    </ClInclude>
-    <ClInclude Include="BulletCollision\CollisionDispatch\btSphereTriangleCollisionAlgorithm.h">
-      <Filter>bullet</Filter>
-    </ClInclude>
-    <ClInclude Include="LinearMath\btStackAlloc.h">
-      <Filter>bullet</Filter>
-    </ClInclude>
-    <ClInclude Include="BulletCollision\CollisionShapes\btStaticPlaneShape.h">
-      <Filter>bullet</Filter>
-    </ClInclude>
-    <ClInclude Include="BulletCollision\CollisionShapes\btStridingMeshInterface.h">
-      <Filter>bullet</Filter>
-    </ClInclude>
-    <ClInclude Include="BulletCollision\NarrowPhaseCollision\btSubSimplexConvexCast.h">
-      <Filter>bullet</Filter>
-    </ClInclude>
-    <ClInclude Include="BulletCollision\CollisionShapes\btTetrahedronShape.h">
-      <Filter>bullet</Filter>
-    </ClInclude>
-    <ClInclude Include="BulletMultiThreaded\btThreadSupportInterface.h">
-      <Filter>bullet</Filter>
-    </ClInclude>
-    <ClInclude Include="LinearMath\btTransform.h">
-      <Filter>bullet</Filter>
-    </ClInclude>
-    <ClInclude Include="LinearMath\btTransformUtil.h">
-      <Filter>bullet</Filter>
-    </ClInclude>
-    <ClInclude Include="BulletCollision\CollisionShapes\btTriangleBuffer.h">
-      <Filter>bullet</Filter>
-    </ClInclude>
-    <ClInclude Include="BulletCollision\CollisionShapes\btTriangleCallback.h">
-      <Filter>bullet</Filter>
-    </ClInclude>
-    <ClInclude Include="BulletCollision\CollisionShapes\btTriangleIndexVertexArray.h">
-      <Filter>bullet</Filter>
-    </ClInclude>
-    <ClInclude Include="BulletCollision\CollisionShapes\btTriangleIndexVertexMaterialArray.h">
-      <Filter>bullet</Filter>
-    </ClInclude>
-    <ClInclude Include="BulletCollision\CollisionShapes\btTriangleInfoMap.h">
-      <Filter>bullet</Filter>
-    </ClInclude>
-    <ClInclude Include="BulletCollision\CollisionShapes\btTriangleMesh.h">
-      <Filter>bullet</Filter>
-    </ClInclude>
-    <ClInclude Include="BulletCollision\CollisionShapes\btTriangleMeshShape.h">
-      <Filter>bullet</Filter>
-    </ClInclude>
-    <ClInclude Include="BulletCollision\CollisionShapes\btTriangleShape.h">
-      <Filter>bullet</Filter>
-    </ClInclude>
-    <ClInclude Include="BulletCollision\Gimpact\btTriangleShapeEx.h">
-      <Filter>bullet</Filter>
-    </ClInclude>
-    <ClInclude Include="BulletDynamics\ConstraintSolver\btTypedConstraint.h">
-      <Filter>bullet</Filter>
-    </ClInclude>
-    <ClInclude Include="BulletCollision\CollisionShapes\btUniformScalingShape.h">
-      <Filter>bullet</Filter>
-    </ClInclude>
-    <ClInclude Include="BulletCollision\CollisionDispatch\btUnionFind.h">
-      <Filter>bullet</Filter>
-    </ClInclude>
-    <ClInclude Include="BulletDynamics\ConstraintSolver\btUniversalConstraint.h">
-      <Filter>bullet</Filter>
-    </ClInclude>
-    <ClInclude Include="LinearMath\btVector3.h">
-      <Filter>bullet</Filter>
-    </ClInclude>
-    <ClInclude Include="BulletDynamics\Vehicle\btVehicleRaycaster.h">
-      <Filter>bullet</Filter>
-    </ClInclude>
-    <ClInclude Include="BulletCollision\NarrowPhaseCollision\btVoronoiSimplexSolver.h">
-      <Filter>bullet</Filter>
-    </ClInclude>
-    <ClInclude Include="BulletDynamics\Vehicle\btWheelInfo.h">
-      <Filter>bullet</Filter>
-    </ClInclude>
-    <ClInclude Include="BulletCollision\Gimpact\gim_array.h">
-      <Filter>bullet</Filter>
-    </ClInclude>
-    <ClInclude Include="BulletCollision\Gimpact\gim_basic_geometry_operations.h">
-      <Filter>bullet</Filter>
-    </ClInclude>
-    <ClInclude Include="BulletCollision\Gimpact\gim_bitset.h">
-      <Filter>bullet</Filter>
-    </ClInclude>
-    <ClInclude Include="BulletCollision\Gimpact\gim_box_collision.h">
-      <Filter>bullet</Filter>
-    </ClInclude>
-    <ClInclude Include="BulletCollision\Gimpact\gim_box_set.h">
-      <Filter>bullet</Filter>
-    </ClInclude>
-    <ClInclude Include="BulletCollision\Gimpact\gim_clip_polygon.h">
-      <Filter>bullet</Filter>
-    </ClInclude>
-    <ClInclude Include="BulletCollision\Gimpact\gim_contact.h">
-      <Filter>bullet</Filter>
-    </ClInclude>
-    <ClInclude Include="BulletCollision\Gimpact\gim_geom_types.h">
-      <Filter>bullet</Filter>
-    </ClInclude>
-    <ClInclude Include="BulletCollision\Gimpact\gim_geometry.h">
-      <Filter>bullet</Filter>
-    </ClInclude>
-    <ClInclude Include="BulletCollision\Gimpact\gim_hash_table.h">
-      <Filter>bullet</Filter>
-    </ClInclude>
-    <ClInclude Include="BulletCollision\Gimpact\gim_linear_math.h">
-      <Filter>bullet</Filter>
-    </ClInclude>
-    <ClInclude Include="BulletCollision\Gimpact\gim_math.h">
-      <Filter>bullet</Filter>
-    </ClInclude>
-    <ClInclude Include="BulletCollision\Gimpact\gim_memory.h">
-      <Filter>bullet</Filter>
-    </ClInclude>
-    <ClInclude Include="BulletCollision\Gimpact\gim_radixsort.h">
-      <Filter>bullet</Filter>
-    </ClInclude>
-    <ClInclude Include="BulletCollision\Gimpact\gim_tri_collision.h">
-      <Filter>bullet</Filter>
-    </ClInclude>
-    <ClInclude Include="BulletMultiThreaded\HeapManager.h">
-      <Filter>bullet</Filter>
-    </ClInclude>
-    <ClInclude Include="BulletMultiThreaded\PlatformDefinitions.h">
-      <Filter>bullet</Filter>
-    </ClInclude>
-    <ClInclude Include="BulletMultiThreaded\PosixThreadSupport.h">
-      <Filter>bullet</Filter>
-    </ClInclude>
-    <ClInclude Include="BulletMultiThreaded\PpuAddressSpace.h">
-      <Filter>bullet</Filter>
-    </ClInclude>
-    <ClInclude Include="BulletMultiThreaded\SequentialThreadSupport.h">
-      <Filter>bullet</Filter>
-    </ClInclude>
-    <ClInclude Include="BulletCollision\CollisionDispatch\SphereTriangleDetector.h">
-      <Filter>bullet</Filter>
-    </ClInclude>
-    <ClInclude Include="BulletMultiThreaded\SpuCollisionObjectWrapper.h">
-      <Filter>bullet</Filter>
-    </ClInclude>
-    <ClInclude Include="BulletMultiThreaded\SpuNarrowPhaseCollisionTask\SpuCollisionShapes.h">
-      <Filter>bullet</Filter>
-    </ClInclude>
-    <ClInclude Include="BulletMultiThreaded\SpuCollisionTaskProcess.h">
-      <Filter>bullet</Filter>
-    </ClInclude>
-    <ClInclude Include="BulletMultiThreaded\SpuContactManifoldCollisionAlgorithm.h">
-      <Filter>bullet</Filter>
-    </ClInclude>
-    <ClInclude Include="BulletMultiThreaded\SpuNarrowPhaseCollisionTask\SpuContactResult.h">
-      <Filter>bullet</Filter>
-    </ClInclude>
-    <ClInclude Include="BulletMultiThreaded\SpuNarrowPhaseCollisionTask\SpuConvexPenetrationDepthSolver.h">
-      <Filter>bullet</Filter>
-    </ClInclude>
-    <ClInclude Include="BulletMultiThreaded\SpuDoubleBuffer.h">
-      <Filter>bullet</Filter>
-    </ClInclude>
-    <ClInclude Include="BulletMultiThreaded\SpuFakeDma.h">
-      <Filter>bullet</Filter>
-    </ClInclude>
-    <ClInclude Include="BulletMultiThreaded\SpuGatheringCollisionDispatcher.h">
-      <Filter>bullet</Filter>
-    </ClInclude>
-    <ClInclude Include="BulletMultiThreaded\SpuNarrowPhaseCollisionTask\SpuGatheringCollisionTask.h">
-      <Filter>bullet</Filter>
-    </ClInclude>
-    <ClInclude Include="BulletMultiThreaded\SpuLibspe2Support.h">
-      <Filter>bullet</Filter>
-    </ClInclude>
-    <ClInclude Include="BulletMultiThreaded\SpuNarrowPhaseCollisionTask\SpuLocalSupport.h">
-      <Filter>bullet</Filter>
-    </ClInclude>
-    <ClInclude Include="BulletMultiThreaded\SpuNarrowPhaseCollisionTask\SpuMinkowskiPenetrationDepthSolver.h">
-      <Filter>bullet</Filter>
-    </ClInclude>
-    <ClInclude Include="BulletMultiThreaded\SpuNarrowPhaseCollisionTask\SpuPreferredPenetrationDirections.h">
-      <Filter>bullet</Filter>
-    </ClInclude>
-    <ClInclude Include="BulletMultiThreaded\SpuSampleTask\SpuSampleTask.h">
-      <Filter>bullet</Filter>
-    </ClInclude>
-    <ClInclude Include="BulletMultiThreaded\SpuSampleTaskProcess.h">
-      <Filter>bullet</Filter>
-    </ClInclude>
-    <ClInclude Include="BulletMultiThreaded\SpuSync.h">
-      <Filter>bullet</Filter>
-    </ClInclude>
-    <ClInclude Include="BulletMultiThreaded\TrbDynBody.h">
-      <Filter>bullet</Filter>
-    </ClInclude>
-    <ClInclude Include="BulletMultiThreaded\TrbStateVec.h">
-      <Filter>bullet</Filter>
-    </ClInclude>
-    <ClInclude Include="BulletMultiThreaded\vectormath2bullet.h">
-      <Filter>bullet</Filter>
-    </ClInclude>
-  </ItemGroup>
-</Project>
diff --git a/src/3rdparty/lol-cpp-httplib.am b/src/3rdparty/lol-cpp-httplib.am
deleted file mode 100644
index f0ced5f8..00000000
--- a/src/3rdparty/lol-cpp-httplib.am
+++ /dev/null
@@ -1,5 +0,0 @@
-
-cpp_httplib_sources = \
-    cpp-httplib/httplib.h \
-    $(NULL)
-
diff --git a/src/3rdparty/lol-imgui.am b/src/3rdparty/lol-imgui.am
deleted file mode 100644
index 616506eb..00000000
--- a/src/3rdparty/lol-imgui.am
+++ /dev/null
@@ -1,16 +0,0 @@
-
-# This is included by the parent Makefile because we build it
-# directly in the lol-core library, hence the 3rdparty/ paths.
-imgui_sources = \
-    3rdparty/imgui/imconfig.h \
-    3rdparty/imgui/imgui.cpp \
-    3rdparty/imgui/imgui_demo.cpp \
-    3rdparty/imgui/imgui_draw.cpp \
-    3rdparty/imgui/imgui_widgets.cpp \
-    3rdparty/imgui/imgui.h \
-    3rdparty/imgui/imgui_internal.h \
-    3rdparty/imgui/imstb_rectpack.h \
-    3rdparty/imgui/imstb_textedit.h \
-    3rdparty/imgui/imstb_truetype.h \
-    $(NULL)
-
diff --git a/src/3rdparty/lol-lua.am b/src/3rdparty/lol-lua.am
deleted file mode 100644
index 8d9342cf..00000000
--- a/src/3rdparty/lol-lua.am
+++ /dev/null
@@ -1,43 +0,0 @@
-
-# excluded : ltest.c ltest.h lua.c
-lua_sources = \
-    lua/lapi.c lua/lapi.h \
-    lua/lauxlib.c lua/lauxlib.h \
-    lua/lbaselib.c \
-    lua/lcode.c lua/lcode.h \
-    lua/lcorolib.c \
-    lua/lctype.c lua/lctype.h \
-    lua/ldblib.c \
-    lua/ldebug.c lua/ldebug.h \
-    lua/ldo.c lua/ldo.h \
-    lua/ldump.c \
-    lua/lfunc.c lua/lfunc.h \
-    lua/lgc.c lua/lgc.h \
-    lua/linit.c \
-    lua/liolib.c \
-    lua/ljumptab.h \
-    lua/llex.c lua/llex.h \
-    lua/llimits.h \
-    lua/lmathlib.c \
-    lua/lmem.c lua/lmem.h \
-    lua/loadlib.c \
-    lua/lobject.c lua/lobject.h \
-    lua/lopcodes.c lua/lopcodes.h \
-    lua/lopnames.h \
-    lua/loslib.c \
-    lua/lparser.c lua/lparser.h \
-    lua/lprefix.h \
-    lua/lstate.c lua/lstate.h \
-    lua/lstring.c lua/lstring.h \
-    lua/lstrlib.c \
-    lua/ltable.c lua/ltable.h \
-    lua/ltablib.c \
-    lua/ltm.c lua/ltm.h \
-    lua/luaconf.h \
-    lua/lua.h \
-    lua/lualib.h \
-    lua/lundump.c lua/lundump.h \
-    lua/lutf8lib.c \
-    lua/lvm.c lua/lvm.h \
-    lua/lzio.c lua/lzio.h
-
diff --git a/src/3rdparty/lol-lua.vcxproj b/src/3rdparty/lol-lua.vcxproj
deleted file mode 100644
index 3a38943e..00000000
--- a/src/3rdparty/lol-lua.vcxproj
+++ /dev/null
@@ -1,142 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <PropertyGroup Label="LolMacros">
-    <LolDir Condition="Exists('$(SolutionDir)\lol')">$(SolutionDir)\lol</LolDir>
-    <LolDir Condition="!Exists('$(SolutionDir)\lol')">$(SolutionDir)</LolDir>
-  </PropertyGroup>
-  <ItemGroup Label="ProjectConfigurations">
-    <ProjectConfiguration Include="Debug|NX64">
-      <Configuration>Debug</Configuration>
-      <Platform>NX64</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Debug|ORBIS">
-      <Configuration>Debug</Configuration>
-      <Platform>ORBIS</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Debug|Win32">
-      <Configuration>Debug</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Debug|x64">
-      <Configuration>Debug</Configuration>
-      <Platform>x64</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Release|NX64">
-      <Configuration>Release</Configuration>
-      <Platform>NX64</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Release|ORBIS">
-      <Configuration>Release</Configuration>
-      <Platform>ORBIS</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Release|Win32">
-      <Configuration>Release</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Release|x64">
-      <Configuration>Release</Configuration>
-      <Platform>x64</Platform>
-    </ProjectConfiguration>
-  </ItemGroup>
-  <PropertyGroup Label="Globals">
-    <ProjectGuid>{d84021ca-b233-4e0f-8a52-071b83bbccc4}</ProjectGuid>
-    <ConfigurationType>StaticLibrary</ConfigurationType>
-    <Keyword>Win32Proj</Keyword>
-  </PropertyGroup>
-  <Import Project="$(LolDir)\build\msbuild\lol.config.props" />
-  <PropertyGroup Label="Configuration">
-    <CharacterSet>MultiByte</CharacterSet>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)'=='Debug'" Label="Configuration">
-    <UseDebugLibraries>true</UseDebugLibraries>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)'=='Release'" Label="Configuration">
-    <UseDebugLibraries>false</UseDebugLibraries>
-    <WholeProgramOptimization>true</WholeProgramOptimization>
-  </PropertyGroup>
-  <ImportGroup Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(LolDir)\build\msbuild\lol.vars.props" />
-  </ImportGroup>
-  <PropertyGroup Label="UserMacros" />
-  <Import Project="$(LolDir)\build\msbuild\lol.rules.props" />
-  <ItemDefinitionGroup>
-    <ClCompile>
-      <PreprocessorDefinitions>LUA_ANSI;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <!-- disable the -std=c++17 flag on NX64 -->
-      <AdditionalOptions Condition="'$(Platform)'=='NX64'"></AdditionalOptions>
-    </ClCompile>
-  </ItemDefinitionGroup>
-  <ItemGroup>
-    <ClCompile Include="lua/lapi.c" />
-    <ClCompile Include="lua/lauxlib.c" />
-    <ClCompile Include="lua/lbaselib.c" />
-    <ClCompile Include="lua/lcode.c" />
-    <ClCompile Include="lua/lcorolib.c" />
-    <ClCompile Include="lua/lctype.c" />
-    <ClCompile Include="lua/ldblib.c" />
-    <ClCompile Include="lua/ldebug.c" />
-    <ClCompile Include="lua/ldo.c" />
-    <ClCompile Include="lua/ldump.c" />
-    <ClCompile Include="lua/lfunc.c" />
-    <ClCompile Include="lua/lgc.c" />
-    <ClCompile Include="lua/linit.c" />
-    <ClCompile Include="lua/liolib.c" />
-    <ClCompile Include="lua/llex.c" />
-    <ClCompile Include="lua/lmathlib.c" />
-    <ClCompile Include="lua/lmem.c" />
-    <ClCompile Include="lua/loadlib.c" />
-    <ClCompile Include="lua/lobject.c" />
-    <ClCompile Include="lua/lopcodes.c" />
-    <ClCompile Include="lua/loslib.c" />
-    <ClCompile Include="lua/lparser.c" />
-    <ClCompile Include="lua/lstate.c" />
-    <ClCompile Include="lua/lstring.c" />
-    <ClCompile Include="lua/lstrlib.c" />
-    <ClCompile Include="lua/ltable.c" />
-    <ClCompile Include="lua/ltablib.c" />
-    <ClCompile Include="lua/ltm.c" />
-    <ClCompile Include="lua/lundump.c" />
-    <ClCompile Include="lua/lutf8lib.c" />
-    <ClCompile Include="lua/lvm.c" />
-    <ClCompile Include="lua/lzio.c" />
-  </ItemGroup>
-  <ItemGroup>
-    <ClInclude Include="lua/lapi.h" />
-    <ClInclude Include="lua/lauxlib.h" />
-    <ClInclude Include="lua/lcode.h" />
-    <ClInclude Include="lua/lctype.h" />
-    <ClInclude Include="lua/ldebug.h" />
-    <ClInclude Include="lua/ldo.h" />
-    <ClInclude Include="lua/lfunc.h" />
-    <ClInclude Include="lua/lgc.h" />
-    <ClInclude Include="lua/ljumptab.h" />
-    <ClInclude Include="lua/llex.h" />
-    <ClInclude Include="lua/llimits.h" />
-    <ClInclude Include="lua/lmem.h" />
-    <ClInclude Include="lua/lobject.h" />
-    <ClInclude Include="lua/lopcodes.h" />
-    <ClInclude Include="lua/lopnames.h" />
-    <ClInclude Include="lua/lparser.h" />
-    <ClInclude Include="lua/lprefix.h" />
-    <ClInclude Include="lua/lstate.h" />
-    <ClInclude Include="lua/lstring.h" />
-    <ClInclude Include="lua/ltable.h" />
-    <ClInclude Include="lua/ltm.h" />
-    <ClInclude Include="lua/luaconf.h" />
-    <ClInclude Include="lua/lua.h" />
-    <ClInclude Include="lua/lualib.h" />
-    <ClInclude Include="lua/lundump.h" />
-    <ClInclude Include="lua/lvm.h" />
-    <ClInclude Include="lua/lzio.h" />
-  </ItemGroup>
-  <ItemGroup>
-    <None Include="Makefile.am">
-      <ExcludedFromBuild>true</ExcludedFromBuild>
-    </None>
-  </ItemGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
-  <ImportGroup Label="ExtensionTargets">
-    <Import Project="$(LolDir)\build\msbuild\lolfx.targets" />
-  </ImportGroup>
-</Project>
\ No newline at end of file
diff --git a/src/3rdparty/lol-lua.vcxproj.filters b/src/3rdparty/lol-lua.vcxproj.filters
deleted file mode 100644
index 58e89349..00000000
--- a/src/3rdparty/lol-lua.vcxproj.filters
+++ /dev/null
@@ -1,192 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <ItemGroup>
-    <ClCompile Include="lapi.c">
-      <Filter>upstream</Filter>
-    </ClCompile>
-    <ClCompile Include="lauxlib.c">
-      <Filter>upstream</Filter>
-    </ClCompile>
-    <ClCompile Include="lbaselib.c">
-      <Filter>upstream</Filter>
-    </ClCompile>
-    <ClCompile Include="lcode.c">
-      <Filter>upstream</Filter>
-    </ClCompile>
-    <ClCompile Include="lcorolib.c">
-      <Filter>upstream</Filter>
-    </ClCompile>
-    <ClCompile Include="lctype.c">
-      <Filter>upstream</Filter>
-    </ClCompile>
-    <ClCompile Include="ldblib.c">
-      <Filter>upstream</Filter>
-    </ClCompile>
-    <ClCompile Include="ldebug.c">
-      <Filter>upstream</Filter>
-    </ClCompile>
-    <ClCompile Include="ldo.c">
-      <Filter>upstream</Filter>
-    </ClCompile>
-    <ClCompile Include="ldump.c">
-      <Filter>upstream</Filter>
-    </ClCompile>
-    <ClCompile Include="lfunc.c">
-      <Filter>upstream</Filter>
-    </ClCompile>
-    <ClCompile Include="lgc.c">
-      <Filter>upstream</Filter>
-    </ClCompile>
-    <ClCompile Include="linit.c">
-      <Filter>upstream</Filter>
-    </ClCompile>
-    <ClCompile Include="liolib.c">
-      <Filter>upstream</Filter>
-    </ClCompile>
-    <ClCompile Include="llex.c">
-      <Filter>upstream</Filter>
-    </ClCompile>
-    <ClCompile Include="lmathlib.c">
-      <Filter>upstream</Filter>
-    </ClCompile>
-    <ClCompile Include="lmem.c">
-      <Filter>upstream</Filter>
-    </ClCompile>
-    <ClCompile Include="loadlib.c">
-      <Filter>upstream</Filter>
-    </ClCompile>
-    <ClCompile Include="lobject.c">
-      <Filter>upstream</Filter>
-    </ClCompile>
-    <ClCompile Include="lopcodes.c">
-      <Filter>upstream</Filter>
-    </ClCompile>
-    <ClCompile Include="loslib.c">
-      <Filter>upstream</Filter>
-    </ClCompile>
-    <ClCompile Include="lparser.c">
-      <Filter>upstream</Filter>
-    </ClCompile>
-    <ClCompile Include="lstate.c">
-      <Filter>upstream</Filter>
-    </ClCompile>
-    <ClCompile Include="lstring.c">
-      <Filter>upstream</Filter>
-    </ClCompile>
-    <ClCompile Include="lstrlib.c">
-      <Filter>upstream</Filter>
-    </ClCompile>
-    <ClCompile Include="ltable.c">
-      <Filter>upstream</Filter>
-    </ClCompile>
-    <ClCompile Include="ltablib.c">
-      <Filter>upstream</Filter>
-    </ClCompile>
-    <ClCompile Include="ltm.c">
-      <Filter>upstream</Filter>
-    </ClCompile>
-    <ClCompile Include="lundump.c">
-      <Filter>upstream</Filter>
-    </ClCompile>
-    <ClCompile Include="lutf8lib.c">
-      <Filter>upstream</Filter>
-    </ClCompile>
-    <ClCompile Include="lvm.c">
-      <Filter>upstream</Filter>
-    </ClCompile>
-    <ClCompile Include="lzio.c">
-      <Filter>upstream</Filter>
-    </ClCompile>
-  </ItemGroup>
-  <ItemGroup>
-    <ClInclude Include="lapi.h">
-      <Filter>upstream</Filter>
-    </ClInclude>
-    <ClInclude Include="lauxlib.h">
-      <Filter>upstream</Filter>
-    </ClInclude>
-    <ClInclude Include="lcode.h">
-      <Filter>upstream</Filter>
-    </ClInclude>
-    <ClInclude Include="lctype.h">
-      <Filter>upstream</Filter>
-    </ClInclude>
-    <ClInclude Include="ldebug.h">
-      <Filter>upstream</Filter>
-    </ClInclude>
-    <ClInclude Include="ldo.h">
-      <Filter>upstream</Filter>
-    </ClInclude>
-    <ClInclude Include="lfunc.h">
-      <Filter>upstream</Filter>
-    </ClInclude>
-    <ClInclude Include="lgc.h">
-      <Filter>upstream</Filter>
-    </ClInclude>
-    <ClInclude Include="ljumptab.h">
-      <Filter>upstream</Filter>
-    </ClInclude>
-    <ClInclude Include="llex.h">
-      <Filter>upstream</Filter>
-    </ClInclude>
-    <ClInclude Include="llimits.h">
-      <Filter>upstream</Filter>
-    </ClInclude>
-    <ClInclude Include="lmem.h">
-      <Filter>upstream</Filter>
-    </ClInclude>
-    <ClInclude Include="lobject.h">
-      <Filter>upstream</Filter>
-    </ClInclude>
-    <ClInclude Include="lopcodes.h">
-      <Filter>upstream</Filter>
-    </ClInclude>
-    <ClInclude Include="lopnames.h">
-      <Filter>upstream</Filter>
-    </ClInclude>
-    <ClInclude Include="lparser.h">
-      <Filter>upstream</Filter>
-    </ClInclude>
-    <ClInclude Include="lprefix.h">
-      <Filter>upstream</Filter>
-    </ClInclude>
-    <ClInclude Include="lstate.h">
-      <Filter>upstream</Filter>
-    </ClInclude>
-    <ClInclude Include="lstring.h">
-      <Filter>upstream</Filter>
-    </ClInclude>
-    <ClInclude Include="ltable.h">
-      <Filter>upstream</Filter>
-    </ClInclude>
-    <ClInclude Include="ltm.h">
-      <Filter>upstream</Filter>
-    </ClInclude>
-    <ClInclude Include="lua.h">
-      <Filter>upstream</Filter>
-    </ClInclude>
-    <ClInclude Include="luaconf.h">
-      <Filter>upstream</Filter>
-    </ClInclude>
-    <ClInclude Include="lualib.h">
-      <Filter>upstream</Filter>
-    </ClInclude>
-    <ClInclude Include="lundump.h">
-      <Filter>upstream</Filter>
-    </ClInclude>
-    <ClInclude Include="lutf8lib.h">
-      <Filter>upstream</Filter>
-    </ClInclude>
-    <ClInclude Include="lvm.h">
-      <Filter>upstream</Filter>
-    </ClInclude>
-    <ClInclude Include="lzio.h">
-      <Filter>upstream</Filter>
-    </ClInclude>
-  </ItemGroup>
-  <ItemGroup>
-    <Filter Include="upstream">
-      <UniqueIdentifier>{6fed84e3-30c6-4d41-8fd3-f3a43bc169a4}</UniqueIdentifier>
-    </Filter>
-  </ItemGroup>
-</Project>
diff --git a/src/3rdparty/lol-mingw-std-threads.am b/src/3rdparty/lol-mingw-std-threads.am
deleted file mode 100644
index e208651d..00000000
--- a/src/3rdparty/lol-mingw-std-threads.am
+++ /dev/null
@@ -1,10 +0,0 @@
-
-mingw_std_threads_sources = \
-    mingw-std-threads/mingw.condition_variable.h \
-    mingw-std-threads/mingw.future.h \
-    mingw-std-threads/mingw.invoke.h \
-    mingw-std-threads/mingw.mutex.h \
-    mingw-std-threads/mingw.shared_mutex.h \
-    mingw-std-threads/mingw.thread.h \
-    $(NULL)
-
diff --git a/src/3rdparty/lol-pegtl.am b/src/3rdparty/lol-pegtl.am
deleted file mode 100644
index 943eb881..00000000
--- a/src/3rdparty/lol-pegtl.am
+++ /dev/null
@@ -1,169 +0,0 @@
-
-pegtl_sources = \
-    pegtl/include/tao/pegtl/analysis/analyze_cycles.hpp \
-    pegtl/include/tao/pegtl/analysis/counted.hpp \
-    pegtl/include/tao/pegtl/analysis/generic.hpp \
-    pegtl/include/tao/pegtl/analysis/grammar_info.hpp \
-    pegtl/include/tao/pegtl/analysis/insert_guard.hpp \
-    pegtl/include/tao/pegtl/analysis/insert_rules.hpp \
-    pegtl/include/tao/pegtl/analysis/rule_info.hpp \
-    pegtl/include/tao/pegtl/analysis/rule_type.hpp \
-    pegtl/include/tao/pegtl/analyze.hpp \
-    pegtl/include/tao/pegtl/apply_mode.hpp \
-    pegtl/include/tao/pegtl/argv_input.hpp \
-    pegtl/include/tao/pegtl/ascii.hpp \
-    pegtl/include/tao/pegtl/buffer_input.hpp \
-    pegtl/include/tao/pegtl/change_action_and_state.hpp \
-    pegtl/include/tao/pegtl/change_action_and_states.hpp \
-    pegtl/include/tao/pegtl/change_action.hpp \
-    pegtl/include/tao/pegtl/change_control.hpp \
-    pegtl/include/tao/pegtl/change_state.hpp \
-    pegtl/include/tao/pegtl/change_states.hpp \
-    pegtl/include/tao/pegtl/config.hpp \
-    pegtl/include/tao/pegtl/contrib/abnf.hpp \
-    pegtl/include/tao/pegtl/contrib/alphabet.hpp \
-    pegtl/include/tao/pegtl/contrib/counter.hpp \
-    pegtl/include/tao/pegtl/contrib/http.hpp \
-    pegtl/include/tao/pegtl/contrib/json.hpp \
-    pegtl/include/tao/pegtl/contrib/json_pointer.hpp \
-    pegtl/include/tao/pegtl/contrib/parse_tree_to_dot.hpp \
-    pegtl/include/tao/pegtl/contrib/raw_string.hpp \
-    pegtl/include/tao/pegtl/contrib/remove_first_state.hpp \
-    pegtl/include/tao/pegtl/contrib/rep_one_min_max.hpp \
-    pegtl/include/tao/pegtl/contrib/rep_string.hpp \
-    pegtl/include/tao/pegtl/contrib/to_string.hpp \
-    pegtl/include/tao/pegtl/contrib/tracer.hpp \
-    pegtl/include/tao/pegtl/contrib/unescape.hpp \
-    pegtl/include/tao/pegtl/contrib/uri.hpp \
-    pegtl/include/tao/pegtl/cstream_input.hpp \
-    pegtl/include/tao/pegtl/disable_action.hpp \
-    pegtl/include/tao/pegtl/discard_input.hpp \
-    pegtl/include/tao/pegtl/discard_input_on_failure.hpp \
-    pegtl/include/tao/pegtl/discard_input_on_success.hpp \
-    pegtl/include/tao/pegtl/enable_action.hpp \
-    pegtl/include/tao/pegtl/eol.hpp \
-    pegtl/include/tao/pegtl/eol_pair.hpp \
-    pegtl/include/tao/pegtl/file_input.hpp \
-    pegtl/include/tao/pegtl.hpp \
-    pegtl/include/tao/pegtl/internal/action.hpp \
-    pegtl/include/tao/pegtl/internal/action_input.hpp \
-    pegtl/include/tao/pegtl/internal/alnum.hpp \
-    pegtl/include/tao/pegtl/internal/alpha.hpp \
-    pegtl/include/tao/pegtl/internal/always_false.hpp \
-    pegtl/include/tao/pegtl/internal/any.hpp \
-    pegtl/include/tao/pegtl/internal/apply0_single.hpp \
-    pegtl/include/tao/pegtl/internal/apply0.hpp \
-    pegtl/include/tao/pegtl/internal/apply_single.hpp \
-    pegtl/include/tao/pegtl/internal/apply.hpp \
-    pegtl/include/tao/pegtl/internal/at.hpp \
-    pegtl/include/tao/pegtl/internal/bof.hpp \
-    pegtl/include/tao/pegtl/internal/bol.hpp \
-    pegtl/include/tao/pegtl/internal/bump_help.hpp \
-    pegtl/include/tao/pegtl/internal/bump.hpp \
-    pegtl/include/tao/pegtl/internal/bytes.hpp \
-    pegtl/include/tao/pegtl/internal/control.hpp \
-    pegtl/include/tao/pegtl/internal/cr_crlf_eol.hpp \
-    pegtl/include/tao/pegtl/internal/cr_eol.hpp \
-    pegtl/include/tao/pegtl/internal/crlf_eol.hpp \
-    pegtl/include/tao/pegtl/internal/cstream_reader.hpp \
-    pegtl/include/tao/pegtl/internal/cstring_reader.hpp \
-    pegtl/include/tao/pegtl/internal/demangle.hpp \
-    pegtl/include/tao/pegtl/internal/disable.hpp \
-    pegtl/include/tao/pegtl/internal/discard.hpp \
-    pegtl/include/tao/pegtl/internal/dusel_mode.hpp \
-    pegtl/include/tao/pegtl/internal/duseltronik.hpp \
-    pegtl/include/tao/pegtl/internal/enable.hpp \
-    pegtl/include/tao/pegtl/internal/endian.hpp \
-    pegtl/include/tao/pegtl/internal/endian_gcc.hpp \
-    pegtl/include/tao/pegtl/internal/eof.hpp \
-    pegtl/include/tao/pegtl/internal/eolf.hpp \
-    pegtl/include/tao/pegtl/internal/eol.hpp \
-    pegtl/include/tao/pegtl/internal/file_mapper_posix.hpp \
-    pegtl/include/tao/pegtl/internal/file_mapper_win32.hpp \
-    pegtl/include/tao/pegtl/internal/file_opener.hpp \
-    pegtl/include/tao/pegtl/internal/file_reader.hpp \
-    pegtl/include/tao/pegtl/internal/has_apply0.hpp \
-    pegtl/include/tao/pegtl/internal/has_apply.hpp \
-    pegtl/include/tao/pegtl/internal/has_match.hpp \
-    pegtl/include/tao/pegtl/internal/identifier.hpp \
-    pegtl/include/tao/pegtl/internal/if_apply.hpp \
-    pegtl/include/tao/pegtl/internal/if_must_else.hpp \
-    pegtl/include/tao/pegtl/internal/if_must.hpp \
-    pegtl/include/tao/pegtl/internal/if_then_else.hpp \
-    pegtl/include/tao/pegtl/internal/input_pair.hpp \
-    pegtl/include/tao/pegtl/internal/istream_reader.hpp \
-    pegtl/include/tao/pegtl/internal/istring.hpp \
-    pegtl/include/tao/pegtl/internal/iterator.hpp \
-    pegtl/include/tao/pegtl/internal/lf_crlf_eol.hpp \
-    pegtl/include/tao/pegtl/internal/lf_eol.hpp \
-    pegtl/include/tao/pegtl/internal/list.hpp \
-    pegtl/include/tao/pegtl/internal/list_must.hpp \
-    pegtl/include/tao/pegtl/internal/list_tail.hpp \
-    pegtl/include/tao/pegtl/internal/list_tail_pad.hpp \
-    pegtl/include/tao/pegtl/internal/marker.hpp \
-    pegtl/include/tao/pegtl/internal/missing_apply0.hpp \
-    pegtl/include/tao/pegtl/internal/missing_apply.hpp \
-    pegtl/include/tao/pegtl/internal/must.hpp \
-    pegtl/include/tao/pegtl/internal/not_at.hpp \
-    pegtl/include/tao/pegtl/internal/one.hpp \
-    pegtl/include/tao/pegtl/internal/opt.hpp \
-    pegtl/include/tao/pegtl/internal/pad.hpp \
-    pegtl/include/tao/pegtl/internal/pad_opt.hpp \
-    pegtl/include/tao/pegtl/internal/peek_char.hpp \
-    pegtl/include/tao/pegtl/internal/peek_mask_uint8.hpp \
-    pegtl/include/tao/pegtl/internal/peek_mask_uint.hpp \
-    pegtl/include/tao/pegtl/internal/peek_uint8.hpp \
-    pegtl/include/tao/pegtl/internal/peek_uint.hpp \
-    pegtl/include/tao/pegtl/internal/peek_utf16.hpp \
-    pegtl/include/tao/pegtl/internal/peek_utf32.hpp \
-    pegtl/include/tao/pegtl/internal/peek_utf8.hpp \
-    pegtl/include/tao/pegtl/internal/pegtl_string.hpp \
-    pegtl/include/tao/pegtl/internal/plus.hpp \
-    pegtl/include/tao/pegtl/internal/raise.hpp \
-    pegtl/include/tao/pegtl/internal/range.hpp \
-    pegtl/include/tao/pegtl/internal/ranges.hpp \
-    pegtl/include/tao/pegtl/internal/read_uint.hpp \
-    pegtl/include/tao/pegtl/internal/rematch.hpp \
-    pegtl/include/tao/pegtl/internal/rep.hpp \
-    pegtl/include/tao/pegtl/internal/rep_min.hpp \
-    pegtl/include/tao/pegtl/internal/rep_min_max.hpp \
-    pegtl/include/tao/pegtl/internal/rep_opt.hpp \
-    pegtl/include/tao/pegtl/internal/require.hpp \
-    pegtl/include/tao/pegtl/internal/result_on_found.hpp \
-    pegtl/include/tao/pegtl/internal/rules.hpp \
-    pegtl/include/tao/pegtl/internal/seq.hpp \
-    pegtl/include/tao/pegtl/internal/skip_control.hpp \
-    pegtl/include/tao/pegtl/internal/sor.hpp \
-    pegtl/include/tao/pegtl/internal/star.hpp \
-    pegtl/include/tao/pegtl/internal/star_must.hpp \
-    pegtl/include/tao/pegtl/internal/state.hpp \
-    pegtl/include/tao/pegtl/internal/string.hpp \
-    pegtl/include/tao/pegtl/internal/trivial.hpp \
-    pegtl/include/tao/pegtl/internal/try_catch_type.hpp \
-    pegtl/include/tao/pegtl/internal/until.hpp \
-    pegtl/include/tao/pegtl/istream_input.hpp \
-    pegtl/include/tao/pegtl/match.hpp \
-    pegtl/include/tao/pegtl/memory_input.hpp \
-    pegtl/include/tao/pegtl/mmap_input.hpp \
-    pegtl/include/tao/pegtl/normal.hpp \
-    pegtl/include/tao/pegtl/nothing.hpp \
-    pegtl/include/tao/pegtl/parse_error.hpp \
-    pegtl/include/tao/pegtl/parse.hpp \
-    pegtl/include/tao/pegtl/position.hpp \
-    pegtl/include/tao/pegtl/read_input.hpp \
-    pegtl/include/tao/pegtl/require_apply0.hpp \
-    pegtl/include/tao/pegtl/require_apply.hpp \
-    pegtl/include/tao/pegtl/rewind_mode.hpp \
-    pegtl/include/tao/pegtl/rules.hpp \
-    pegtl/include/tao/pegtl/string_input.hpp \
-    pegtl/include/tao/pegtl/tracking_mode.hpp \
-    pegtl/include/tao/pegtl/uint16.hpp \
-    pegtl/include/tao/pegtl/uint32.hpp \
-    pegtl/include/tao/pegtl/uint64.hpp \
-    pegtl/include/tao/pegtl/uint8.hpp \
-    pegtl/include/tao/pegtl/utf16.hpp \
-    pegtl/include/tao/pegtl/utf32.hpp \
-    pegtl/include/tao/pegtl/utf8.hpp \
-    pegtl/include/tao/pegtl/version.hpp \
-    $(NULL)
-
diff --git a/src/3rdparty/lua b/src/3rdparty/lua
deleted file mode 160000
index 1653f339..00000000
--- a/src/3rdparty/lua
+++ /dev/null
@@ -1 +0,0 @@
-Subproject commit 1653f339db1c7cc63b20782732a4788f077c94f0
diff --git a/src/Makefile.am b/src/Makefile.am
deleted file mode 100644
index e0e18984..00000000
--- a/src/Makefile.am
+++ /dev/null
@@ -1,161 +0,0 @@
-
-include $(top_srcdir)/build/autotools/common.am
-
-SUBDIRS = 3rdparty data . t
-
-noinst_LIBRARIES = liblol-core.a
-
-EXTRA_DIST += lol-core.vcxproj lol-core.vcxproj.filters
-
-liblol_core_a_SOURCES = \
-    lolgl.h scene.cpp scene.h font.cpp font.h \
-    textureimage.cpp textureimage.h textureimage-private.h \
-    tileset.cpp tileset.h video.cpp video.h \
-    profiler.cpp profiler.h text.cpp text.h emitter.cpp emitter.h \
-    numeric.h utils.h messageservice.cpp messageservice.h \
-    gradient.cpp gradient.h gradient.lolfx \
-    platform.cpp platform.h sprite.cpp sprite.h camera.cpp camera.h \
-    light.cpp light.h \
-    \
-    $(liblol_core_headers) \
-    $(liblol_core_sources) \
-    \
-    $(imgui_sources) \
-    $(sdl_sources) \
-    $(d3d9_sources) \
-    $(android_sources)
-liblol_core_a_CPPFLAGS = $(AM_CPPFLAGS) -I$(srcdir)/3rdparty/lua/src
-
-liblol_core_headers = \
-    lol/engine-internal.h lol/engine.h lol/public.h lol/extras.h lol/legacy.h \
-    lol/lua.h \
-    \
-    lol/base/all.h \
-    lol/base/avl_tree.h lol/base/features.h lol/base/tuple.h lol/base/types.h \
-    lol/base/array.h lol/base/assert.h lol/base/string.h lol/base/map.h \
-    lol/base/enum.h lol/base/log.h \
-    \
-    lol/math/all.h \
-    lol/math/functions.h lol/math/vector.h lol/math/half.h lol/math/real.h \
-    lol/math/geometry.h lol/math/interp.h lol/math/rand.h lol/math/arraynd.h \
-    lol/math/constants.h lol/math/matrix.h lol/math/ops.h \
-    lol/math/transform.h lol/math/polynomial.h lol/math/bigint.h \
-    lol/math/noise/gradient.h lol/math/noise/perlin.h \
-    lol/math/noise/simplex.h \
-    \
-    lol/algorithm/all.h \
-    lol/algorithm/sort.h lol/algorithm/portal.h lol/algorithm/aabb_tree.h \
-    \
-    lol/audio/all.h \
-    lol/audio/audio.h lol/audio/sample.h \
-    \
-    lol/engine/all.h \
-    lol/engine/tickable.h \
-    \
-    lol/sys/all.h \
-    lol/sys/init.h lol/sys/file.h lol/sys/getopt.h lol/sys/thread.h \
-    lol/sys/timer.h \
-    \
-    lol/image/all.h \
-    lol/image/pixel.h lol/image/color.h lol/image/image.h \
-    lol/image/resource.h lol/image/movie.h \
-    \
-    lol/net/all.h \
-    lol/net/http.h \
-    \
-    lol/gpu/all.h \
-    lol/gpu/shader.h lol/gpu/indexbuffer.h lol/gpu/vertexbuffer.h \
-    lol/gpu/framebuffer.h lol/gpu/texture.h lol/gpu/lolfx.h \
-    lol/gpu/renderer.h lol/gpu/rendercontext.h lol/gpu/debug.h \
-    \
-    lol/debug/all.h \
-    lol/debug/lines.h
-
-liblol_core_sources = \
-    application/application.cpp application/application.h \
-    application/egl-app.cpp application/egl-app.h \
-    \
-    lolua/baselua.cpp lolua/baselua.h \
-    \
-    commandstack.h \
-    easymesh/easymeshbuild.cpp easymesh/easymeshbuild.h \
-    easymesh/easymeshrender.cpp easymesh/easymeshrender.h \
-    easymesh/easymesh.cpp \
-    easymesh/easymeshinternal.cpp easymesh/easymeshcsg.cpp \
-    easymesh/easymeshprimitive.cpp easymesh/easymeshtransform.cpp \
-    easymesh/easymeshcursor.cpp easymesh/easymesh.h \
-    easymesh/easymeshlua.cpp easymesh/easymeshlua.h \
-    easymesh/csgbsp.cpp easymesh/csgbsp.h \
-    easymesh/shiny.lolfx easymesh/shinyflat.lolfx \
-    easymesh/shinydebugwireframe.lolfx \
-    easymesh/shinydebuglighting.lolfx easymesh/shinydebugnormal.lolfx \
-    easymesh/shinydebugUV.lolfx easymesh/shiny_SK.lolfx \
-    \
-    base/assert.cpp base/features.cpp base/log.cpp base/string.cpp \
-    \
-    math/vector.cpp math/matrix.cpp math/transform.cpp math/half.cpp \
-    math/geometry.cpp math/real.cpp \
-    \
-    gpu/shader.cpp gpu/indexbuffer.cpp gpu/vertexbuffer.cpp \
-    gpu/framebuffer.cpp gpu/texture.cpp gpu/renderer.cpp \
-    gpu/rendercontext.cpp gpu/debug.cpp \
-    \
-    audio/audio.cpp audio/sample.cpp \
-    \
-    ui/input.cpp ui/input.h ui/keys.inc ui/buttons.inc \
-    ui/gui.cpp ui/gui.h \
-    \
-    gpu/default-material.lolfx \
-    gpu/empty-material.lolfx \
-    gpu/test-material.lolfx \
-    gpu/tile.lolfx gpu/palette.lolfx gpu/line.lolfx \
-    gpu/blit.lolfx \
-    gpu/postprocess.lolfx \
-    \
-    gpu/lolfx.cpp \
-    \
-    mesh/mesh.cpp mesh/mesh.h \
-    mesh/primitivemesh.cpp mesh/primitivemesh.h \
-    \
-    sys/init.cpp sys/file.cpp sys/hacks.cpp sys/getopt.cpp \
-    \
-    image/resource.cpp image/resource-private.h \
-    image/image.cpp image/image-private.h image/kernel.cpp image/pixel.cpp \
-    image/crop.cpp image/resample.cpp image/noise.cpp image/combine.cpp \
-    image/codec/gdiplus-image.cpp image/codec/imlib2-image.cpp \
-    image/codec/sdl-image.cpp image/codec/ios-image.cpp \
-    image/codec/zed-image.cpp image/codec/zed-palette-image.cpp \
-    image/codec/oric-image.cpp image/codec/dummy-image.cpp \
-    image/color/cie1931.cpp image/color/color.cpp \
-    image/dither/random.cpp image/dither/ediff.cpp image/dither/dbs.cpp \
-    image/dither/ostromoukhov.cpp image/dither/ordered.cpp \
-    image/filter/convolution.cpp image/filter/colors.cpp \
-    image/filter/dilate.cpp image/filter/median.cpp image/filter/yuv.cpp \
-    image/movie.cpp \
-    \
-    net/http.cpp \
-    \
-    engine/tickable.cpp engine/ticker.cpp engine/ticker.h \
-    engine/entity.cpp engine/entity.h \
-    engine/world.cpp engine/world.h \
-    engine/worldentity.cpp engine/worldentity.h \
-    \
-    loldebug.h \
-    debug/fps.cpp debug/fps.h debug/lines.cpp \
-    debug/record.cpp debug/record.h debug/stats.cpp debug/stats.h
-
-if LOL_USE_SDL
-sdl_sources = \
-    application/sdl-app.cpp application/sdl-app.h \
-    ui/sdl-input.cpp ui/sdl-input.h
-endif
-
-d3d9_sources = \
-    ui/d3d9-input.cpp ui/d3d9-input.h
-
-include 3rdparty/lol-imgui.am
-
-android_sources = \
-    image/codec/android-image.cpp \
-    application/android-app.cpp application/android-app.h
-
diff --git a/src/application/android-app.cpp b/src/application/android-app.cpp
deleted file mode 100644
index 58c237ee..00000000
--- a/src/application/android-app.cpp
+++ /dev/null
@@ -1,405 +0,0 @@
-//
-//  Lol Engine
-//
-//  Copyright © 2010—2019 Sam Hocevar <sam@hocevar.net>
-//
-//  Lol Engine is free software. It comes without any warranty, to
-//  the extent permitted by applicable law. You can redistribute it
-//  and/or modify it under the terms of the Do What the Fuck You Want
-//  to Public License, Version 2, as published by the WTFPL Task Force.
-//  See http://www.wtfpl.net/ for more details.
-//
-
-#include <lol/engine-internal.h>
-
-#if __ANDROID__
-
-#include <jni.h>
-
-#include <sys/types.h>
-#include <android/asset_manager_jni.h>
-
-#include <EGL/egl.h>
-#include <GLES/gl.h>
-
-extern "C" {
-#include <android_native_app_glue.h>
-#include <android_native_app_glue.c>
-}
-
-#include "application/android-app.h"
-#include "ui/input.h"
-
-using namespace lol;
-
-namespace lol
-{
-ANativeActivity *g_activity;
-AAssetManager *g_assets;
-}; /* namespace lol */
-
-extern "C" jint
-JNI_OnLoad(JavaVM* vm, void* reserved)
-{
-    msg::debug("Java layer loading library, vm=0x%08lx", (long)(intptr_t)vm);
-    return JNI_VERSION_1_4;
-}
-
-/* One of these wrappers will be overridden by the user's version */
-void lol_android_main(void) __attribute__((weak));
-void lol_android_main(int argc, char **argv) __attribute__((weak));
-void lol_android_main(int argc, char **argv, char **envp) __attribute__((weak));
-
-/**
- * Our saved state data.
- */
-struct SavedState
-{
-    ivec2 position;
-};
-
-/**
- * Shared state for our app.
- */
-class lol::AndroidAppData
-{
-public:
-    int CreateDisplay();
-    void DestroyDisplay();
-    void DrawFrame();
-
-    static void StaticHandleCommand(android_app* native_app, int32_t cmd)
-    {
-        return ((AndroidAppData*)native_app->userData)->HandleCommand(cmd);
-    }
-
-    static int32_t StaticHandleInput(android_app* native_app, AInputEvent* ev)
-    {
-        return ((AndroidAppData*)native_app->userData)->HandleInput(ev);
-    }
-
-    android_app* m_native_app;
-
-    /* The resolution that was asked (not the one we got) */
-    /* FIXME: we need proper unproject or at least screen space events!! */
-    ivec2 m_wanted_resolution;
-
-    SavedState m_state;
-
-    bool m_video_ready;
-
-private:
-    void HandleCommand(int32_t cmd);
-    int32_t HandleInput(AInputEvent* event);
-
-    ivec2 m_prev_pos;
-
-    EGLDisplay m_display;
-    EGLSurface m_surface;
-    EGLContext m_context;
-};
-
-/**
- * Initialize an EGL context for the current display.
- */
-int lol::AndroidAppData::CreateDisplay()
-{
-    /* FIXME: there is a lot of code common to egl-app.cpp here. */
-    const EGLint attribs[] =
-    {
-        EGL_SURFACE_TYPE, EGL_WINDOW_BIT,
-        EGL_BUFFER_SIZE, 16,
-        EGL_DEPTH_SIZE, 16,
-        EGL_RED_SIZE, 4,
-        EGL_GREEN_SIZE, 4,
-        EGL_BLUE_SIZE, 4,
-        EGL_ALPHA_SIZE, 4,
-        EGL_RENDERABLE_TYPE, EGL_OPENGL_ES2_BIT,
-        EGL_NONE
-    };
-    EGLint w, h, dummy, format;
-    EGLint numConfigs;
-    EGLConfig config;
-
-    m_display = eglGetDisplay(EGL_DEFAULT_DISPLAY);
-
-    eglInitialize(m_display, 0, 0);
-    eglChooseConfig(m_display, attribs, &config, 1, &numConfigs);
-    eglGetConfigAttrib(m_display, config, EGL_NATIVE_VISUAL_ID, &format);
-
-    ANativeWindow_setBuffersGeometry(m_native_app->window,
-                                     0, 0, format);
-    m_surface = eglCreateWindowSurface(m_display, config,
-                                       m_native_app->window, nullptr);
-
-    EGLint ctxattr[] =
-    {
-        EGL_CONTEXT_CLIENT_VERSION, 2,
-        EGL_NONE
-    };
-    m_context = eglCreateContext(m_display, config, EGL_NO_CONTEXT, ctxattr);
-
-    if (eglMakeCurrent(m_display, m_surface, m_surface, m_context) == EGL_FALSE)
-    {
-        msg::error("unable to eglMakeCurrent");
-        return -1;
-    }
-
-    eglQuerySurface(m_display, m_surface, EGL_WIDTH, &w);
-    eglQuerySurface(m_display, m_surface, EGL_HEIGHT, &h);
-
-    /* Launch our renderer */
-    msg::debug("Java layer initialising renderer (%dx%d)", w, h);
-    Video::Setup(ivec2(w, h));
-
-    return 0;
-}
-
-void lol::AndroidAppData::DrawFrame()
-{
-    if (!m_display)
-        return;
-
-    ticker::tick_draw();
-
-    eglSwapBuffers(m_display, m_surface);
-}
-
-/**
- * Tear down the EGL context currently associated with the display.
- */
-void lol::AndroidAppData::DestroyDisplay()
-{
-    if (m_display != EGL_NO_DISPLAY)
-    {
-        eglMakeCurrent(m_display, EGL_NO_SURFACE, EGL_NO_SURFACE, EGL_NO_CONTEXT);
-        if (m_context != EGL_NO_CONTEXT)
-        {
-            eglDestroyContext(m_display, m_context);
-        }
-        if (m_surface != EGL_NO_SURFACE)
-        {
-            eglDestroySurface(m_display, m_surface);
-        }
-        eglTerminate(m_display);
-    }
-    m_display = EGL_NO_DISPLAY;
-    m_context = EGL_NO_CONTEXT;
-    m_surface = EGL_NO_SURFACE;
-}
-
-/**
- * Process the next input event.
- */
-int32_t lol::AndroidAppData::HandleInput(AInputEvent* event)
-{
-    auto mouse = input::mouse();
-
-    switch (AInputEvent_getType(event))
-    {
-    case AINPUT_EVENT_TYPE_MOTION:
-        // We need the max if we want consistent mouse speed between axis
-        float max_screen_size = lol::max(m_wanted_resolution.x,
-                                         m_wanted_resolution.y);
-        /* FIXME: we flip the Y axis here, but is it the right place? */
-        ivec2 pos(AMotionEvent_getX(event, 0),
-                  AMotionEvent_getY(event, 0));
-        pos *= m_wanted_resolution / Video::GetSize();
-        pos.y = m_wanted_resolution.y - 1 - pos.y;
-        // FIXME: bring this back
-        //mouse->internal_set_cursor(0, vec2(pos) / vec2(m_wanted_resolution), pos);
-        // Note: 100.0f is an arbitrary value that makes it feel about the same than an xbox controller joystick
-        mouse->internal_set_axis(input::axis::X, (pos.x - m_prev_pos.x) / max_screen_size * 100.f);
-        // Unlike SDL, no need to negate Y axis
-        mouse->internal_set_axis(input::axis::Y, (pos.y - m_prev_pos.y) / max_screen_size * -100.f);
-        m_prev_pos = pos;
-        switch (AKeyEvent_getAction(event) & AMOTION_EVENT_ACTION_MASK)
-        {
-        case AMOTION_EVENT_ACTION_DOWN:
-            mouse->internal_set_button(input::button::BTN_Left, true);
-            break;
-        case AMOTION_EVENT_ACTION_UP:
-            mouse->internal_set_button(input::button::BTN_Left, false);
-            break;
-        }
-        return 1;
-    }
-    return 0;
-}
-
-/**
- * Process the next main command.
- */
-void lol::AndroidAppData::HandleCommand(int32_t cmd)
-{
-    switch (cmd)
-    {
-        case APP_CMD_SAVE_STATE:
-            /* The system has asked us to save our current state. Do so. */
-            m_native_app->savedState = malloc(sizeof(SavedState));
-            *((SavedState*)m_native_app->savedState) = m_state;
-            m_native_app->savedStateSize = sizeof(SavedState);
-            break;
-        case APP_CMD_INIT_WINDOW:
-            /* The window is being shown, get it ready. */
-            if (m_native_app->window != nullptr)
-            {
-                CreateDisplay();
-                m_video_ready = true;
-                //DrawFrame();
-            }
-            break;
-        case APP_CMD_TERM_WINDOW:
-            /* The window is being hidden or closed, clean it up. */
-            DestroyDisplay();
-            break;
-        case APP_CMD_GAINED_FOCUS:
-            break;
-        case APP_CMD_LOST_FOCUS:
-            /* FIXME: stop animating */
-            DrawFrame();
-            break;
-    }
-}
-
-/* FIXME: find a better way to pass this to the AndroidApp ctor. */
-AndroidAppData *g_data;
-
-void android_main(android_app* native_app)
-{
-    msg::debug("Java layer calling android_main() for app 0x%08lx",
-               (long)native_app);
-
-    /* Register native activity */
-    g_activity = native_app->activity;
-
-    /* Get JNI environment */
-    JNIEnv *jni_env;
-    jint res = g_activity->vm->GetEnv((void **)&jni_env, JNI_VERSION_1_2);
-    if (res < 0)
-    {
-        msg::debug("JVM environment not found, trying to attach thread\n");
-        res = g_activity->vm->AttachCurrentThread(&jni_env, nullptr);
-    }
-    if (res < 0)
-    {
-        msg::error("JVM environment not found, cannot run main()\n");
-        return;
-    }
-
-    /* Get asset manager */
-    jclass cls = jni_env->GetObjectClass(g_activity->clazz);
-    jmethodID mid = jni_env->GetMethodID(cls, "getAssets",
-                                     "()Landroid/content/res/AssetManager;");
-    jobject assets = jni_env->CallObjectMethod(g_activity->clazz, mid);
-    jni_env->NewGlobalRef(assets); /* FIXME: never released! */
-    g_assets = AAssetManager_fromJava(jni_env, assets);
-
-    /* Create our app data */
-    g_data = new AndroidAppData();
-    g_data->m_native_app = native_app;
-    g_data->m_video_ready = false;
-
-    /* Make sure glue isn't stripped */
-    app_dummy();
-
-    native_app->userData = g_data;
-    native_app->onAppCmd = lol::AndroidAppData::StaticHandleCommand;
-    native_app->onInputEvent = lol::AndroidAppData::StaticHandleInput;
-
-    if (native_app->savedState != nullptr)
-    {
-        /* We are starting with a previous saved state; restore from it */
-        g_data->m_state = *(SavedState*)native_app->savedState;
-    }
-
-    int argc = 1;
-    char *argv[] = { const_cast<char *>(""), nullptr };
-    char *env[] = { nullptr };
-
-    /* Wait for GL context */
-    while (!g_data->m_video_ready)
-    {
-        int ident, fdesc, events;
-        struct android_poll_source* source;
-
-        ident = ALooper_pollAll(0, &fdesc, &events, (void**)&source);
-
-        if (ident >= 0 && source)
-            source->process(native_app, source);
-    }
-
-    msg::debug("Java layer running real main()\n");
-
-    /* Call the user's main() function. One of these will work. */
-    lol_android_main();
-    lol_android_main(argc, argv);
-    lol_android_main(argc, argv, env);
-}
-
-lol::AndroidApp::AndroidApp(char const *title, ivec2 res, float fps)
-  : m_data(g_data)
-{
-    /* Launch our ticker */
-    msg::debug("Java layer initialising ticker at %g fps", fps);
-    ticker::setup(fps);
-
-    m_data->m_wanted_resolution = res;
-}
-
-void lol::AndroidApp::ShowPointer(bool show)
-{
-}
-
-lol::AndroidApp::~AndroidApp()
-{
-    m_data->DestroyDisplay();
-    delete m_data;
-}
-
-void lol::AndroidApp::Tick()
-{
-    /* Read all pending events. */
-    int ident;
-    int events;
-    struct android_poll_source* source;
-
-    input::mouse()->internal_begin_frame();
-
-    /* Loop until all events are read, then continue to draw the next
-     * frame of animation. */
-    while ((ident = ALooper_pollAll(0, nullptr, &events,
-                                    (void**)&source)) >= 0)
-    {
-        /* Process this event */
-        if (source)
-            source->process(m_data->m_native_app, source);
-
-        /* Check if we are exiting */
-        if (m_data->m_native_app->destroyRequested != 0)
-            ticker::Shutdown();
-    }
-
-    m_data->DrawFrame();
-}
-
-/*
- * Fake main() wrappers that let us call the user’s main() from within
- * a separate thread.
- */
-void lol_android_main(void)
-{
-}
-
-void lol_android_main(int argc, char **argv)
-{
-    UNUSED(argc, argv);
-}
-
-void lol_android_main(int argc, char **argv, char **envp)
-{
-    UNUSED(argc, argv, envp);
-}
-
-#endif /* __ANDROID__ */
-
diff --git a/src/application/android-app.h b/src/application/android-app.h
deleted file mode 100644
index aaf1387d..00000000
--- a/src/application/android-app.h
+++ /dev/null
@@ -1,39 +0,0 @@
-//
-// Lol Engine
-//
-// Copyright: (c) 2010-2011 Sam Hocevar <sam@hocevar.net>
-//   This program is free software; you can redistribute it and/or
-//   modify it under the terms of the Do What The Fuck You Want To
-//   Public License, Version 2, as published by Sam Hocevar. See
-//   http://www.wtfpl.net/ for more details.
-//
-
-#pragma once
-
-//
-// The AndroidApp class
-// --------------------
-//
-
-#include <lol/math/vector.h>
-
-namespace lol
-{
-
-class AndroidAppData;
-
-class AndroidApp
-{
-public:
-    AndroidApp(char const *title, ivec2 res, float fps);
-    virtual ~AndroidApp();
-
-    void ShowPointer(bool show);
-    void Tick();
-
-private:
-    AndroidAppData *m_data;
-};
-
-} /* namespace lol */
-
diff --git a/src/application/application.cpp b/src/application/application.cpp
deleted file mode 100644
index 44d31e02..00000000
--- a/src/application/application.cpp
+++ /dev/null
@@ -1,211 +0,0 @@
-//
-//  Lol Engine
-//
-//  Copyright © 2010—2019 Sam Hocevar <sam@hocevar.net>
-//
-//  Lol Engine is free software. It comes without any warranty, to
-//  the extent permitted by applicable law. You can redistribute it
-//  and/or modify it under the terms of the Do What the Fuck You Want
-//  to Public License, Version 2, as published by the WTFPL Task Force.
-//  See http://www.wtfpl.net/ for more details.
-//
-
-#include <lol/engine-internal.h>
-
-#if HAVE_EMSCRIPTEN_H
-#   include <emscripten.h>
-#endif
-
-#include "lolgl.h"
-
-#if __ANDROID__
-#   include "application/android-app.h"
-#elif __NX__
-#   include "private/nx/nx-app.h"
-#elif LOL_USE_SDL
-#   include "application/sdl-app.h"
-#elif HAVE_GLES_2X
-#   include "application/egl-app.h"
-#endif
-
-namespace lol
-{
-
-class null_display
-{
-    friend class ApplicationDisplayData;
-    friend class ApplicationDisplay;
-
-public:
-    null_display(char const *, ivec2) {}
-    virtual ~null_display() {}
-
-protected:
-    ivec2 resolution() const { return ivec2(0); }
-    void set_resolution(ivec2) {}
-    void SetPosition(ivec2) {}
-
-    void Enable() {}
-    void Disable() {}
-};
-
-class null_app
-{
-public:
-    null_app(char const *, ivec2, float)
-    {
-        ASSERT(false, "no display library (SDL, EGL…) available");
-    }
-    virtual ~null_app() {}
-
-    void ShowPointer(bool) {}
-    void Tick() {}
-};
-
-//-----------------------------------------------------------------------------
-class ApplicationDisplayData
-{
-    friend class ApplicationDisplay;
-
-    ApplicationDisplayData(char const *name, ivec2 res)
-        : display(name, res)
-    { }
-
-protected:
-#if __ANDROID__
-    // TODO: implement this
-    null_display display;
-#elif __NX__
-    nx::app_display display;
-#elif LOL_USE_SDL
-    sdl::app_display display;
-#elif HAVE_GLES_2X
-    /* FIXME: this macro is only deactivated if we include "lolgl.h" */
-    //NOT HANDLED YET
-#else
-    null_display display;
-#endif
-};
-
-ApplicationDisplay::ApplicationDisplay(char const *name, ivec2 res)
-{
-    data = new ApplicationDisplayData(name, res);
-}
-
-ApplicationDisplay::~ApplicationDisplay()
-{
-    delete data;
-}
-
-ivec2 ApplicationDisplay::resolution() const
-{
-    return data->display.resolution();
-}
-
-void ApplicationDisplay::set_resolution(ivec2 res)
-{
-    super::set_resolution(res);
-
-    data->display.set_resolution(res);
-}
-
-void ApplicationDisplay::SetPosition(ivec2 position)
-{
-    super::SetPosition(position);
-
-    data->display.SetPosition(position);
-}
-
-void ApplicationDisplay::Enable()
-{
-    super::Enable();
-
-    data->display.Enable();
-}
-
-void ApplicationDisplay::Disable()
-{
-    data->display.Disable();
-
-    super::Disable();
-}
-
-//-----------------------------------------------------------------------------
-class ApplicationData
-{
-    friend class Application;
-
-    ApplicationData(char const *name, ivec2 res, float framerate)
-        : app(name, res, framerate)
-    { }
-
-#if __ANDROID__
-    AndroidApp app;
-#elif __NX__
-    nx::app app;
-#elif LOL_USE_SDL
-    sdl::app app;
-#elif HAVE_GLES_2X
-    /* FIXME: this macro is only deactivated if we include "lolgl.h" */
-    EglApp app;
-#else
-    null_app app;
-#endif
-};
-
-#if __EMSCRIPTEN__
-static Application *g_app;
-
-static void AppCallback()
-{
-    g_app->Tick();
-}
-#endif
-
-/*
- * Public Application class
- */
-
-Application::Application(char const *name, ivec2 res, float framerate)
-{
-    ticker::setup(framerate);
-
-    auto app_display = new ApplicationDisplay(name, res);
-    SceneDisplay::Add(app_display);
-    data = new ApplicationData(name, app_display->resolution(), framerate);
-}
-
-bool Application::MustTick()
-{
-    return !Ticker::Finished();
-}
-
-void Application::Tick()
-{
-    data->app.Tick();
-}
-
-void Application::Run()
-{
-#if __EMSCRIPTEN__
-    g_app = this;
-    emscripten_set_main_loop(AppCallback, 0, 1);
-#else
-    while (MustTick())
-        Tick();
-#endif
-}
-
-void Application::ShowPointer(bool show)
-{
-    data->app.ShowPointer(show);
-}
-
-Application::~Application()
-{
-    ticker::teardown();
-    delete data;
-}
-
-} /* namespace lol */
-
diff --git a/src/application/application.h b/src/application/application.h
deleted file mode 100644
index d279fb8e..00000000
--- a/src/application/application.h
+++ /dev/null
@@ -1,67 +0,0 @@
-//
-// Lol Engine
-//
-// Copyright: (c) 2010-2011 Sam Hocevar <sam@hocevar.net>
-//   This program is free software; you can redistribute it and/or
-//   modify it under the terms of the Do What The Fuck You Want To
-//   Public License, Version 2, as published by Sam Hocevar. See
-//   http://www.wtfpl.net/ for more details.
-//
-
-#pragma once
-
-//
-// The Application class
-// ---------------------
-//
-
-namespace lol
-{
-
-//-----------------------------------------------------------------------------
-class ApplicationDisplayData;
-
-class ApplicationDisplay : public SceneDisplay
-{
-    typedef SceneDisplay super;
-    friend class Scene;
-
-public:
-    ApplicationDisplay(char const *name, ivec2 resolution);
-    virtual ~ApplicationDisplay();
-
-    /* pos/size/... methods */
-    virtual void set_resolution(ivec2 resolution);
-    virtual ivec2 resolution() const;
-
-    virtual void SetPosition(ivec2 position);
-
-protected:
-    virtual void Enable();
-    virtual void Disable();
-
-private:
-    ApplicationDisplayData *data;
-};
-
-//-----------------------------------------------------------------------------
-class ApplicationData;
-
-class Application
-{
-public:
-    Application(char const *name, ivec2 resolution, float framerate);
-    ~Application();
-
-    bool MustTick();
-    void Tick();
-    void Run();
-
-    void ShowPointer(bool show);
-
-private:
-    ApplicationData *data;
-};
-
-} /* namespace lol */
-
diff --git a/src/application/egl-app.cpp b/src/application/egl-app.cpp
deleted file mode 100644
index b5ddda18..00000000
--- a/src/application/egl-app.cpp
+++ /dev/null
@@ -1,290 +0,0 @@
-//
-//  Lol Engine
-//
-//  Copyright © 2010—2016 Sam Hocevar <sam@hocevar.net>
-//
-//  Lol Engine is free software. It comes without any warranty, to
-//  the extent permitted by applicable law. You can redistribute it
-//  and/or modify it under the terms of the Do What the Fuck You Want
-//  to Public License, Version 2, as published by the WTFPL Task Force.
-//  See http://www.wtfpl.net/ for more details.
-//
-
-#include <lol/engine-internal.h>
-
-#if defined LOL_USE_EGL && !defined __ANDROID__
-#   if defined HAVE_BCM_HOST_H
-#       include <bcm_host.h>
-#   else
-#       include <X11/Xlib.h>
-#       include <X11/Xatom.h>
-#       include <X11/Xutil.h>
-#   endif
-#   if defined HAVE_EGL_EGL_H
-#       include <EGL/egl.h>
-#       include <EGL/eglext.h>
-#   endif
-#endif
-
-#if LOL_USE_SDL
-#   include "ui/sdl-input.h"
-#endif
-
-#include "lolgl.h"
-#include "application/egl-app.h"
-
-namespace lol
-{
-
-/*
- * EGL App implementation class
- */
-
-class EglAppData
-{
-    friend class EglApp;
-
-private:
-#if defined LOL_USE_EGL && !defined __ANDROID__
-    EGLDisplay egl_dpy;
-    EGLContext egl_ctx;
-    EGLSurface egl_surf;
-    uvec2 screen_size;
-#   if defined HAVE_BCM_HOST_H
-    EGL_DISPMANX_WINDOW_T nativewindow;
-#   else
-    Display *dpy;
-    Window win;
-#   endif
-#endif
-};
-
-/*
- * Public EglApp class
- */
-
-EglApp::EglApp(char const *title, ivec2 res, float fps) :
-    data(new EglAppData())
-{
-#if defined LOL_USE_EGL && !defined __ANDROID__
-#   if defined HAVE_BCM_HOST_H
-    bcm_host_init();
-
-    data->egl_dpy = eglGetDisplay(EGL_DEFAULT_DISPLAY);
-#   else
-    data->dpy = XOpenDisplay(nullptr);
-    if (data->dpy == nullptr)
-    {
-        msg::error("cannot connect to X server\n");
-        exit(EXIT_FAILURE);
-    }
-
-    Window root = DefaultRootWindow(data->dpy);
-
-    XSetWindowAttributes swa;
-    swa.event_mask = ExposureMask | PointerMotionMask | KeyPressMask;
-
-    data->win = XCreateWindow(data->dpy, root, 0, 0, res.x, res.y, 0,
-                              CopyFromParent, InputOutput,
-                              CopyFromParent, CWEventMask, &swa);
-
-    XSetWindowAttributes xattr;
-
-    xattr.override_redirect = False;
-    XChangeWindowAttributes(data->dpy, data->win, CWOverrideRedirect, &xattr);
-
-    XWMHints hints;
-    hints.flags = InputHint;
-    hints.input = True;
-    XSetWMHints(data->dpy, data->win, &hints);
-
-    XMapWindow(data->dpy, data->win);
-    XStoreName(data->dpy, data->win, title);
-
-    data->egl_dpy = eglGetDisplay((EGLNativeDisplayType)data->dpy);
-#   endif
-    if (data->egl_dpy == EGL_NO_DISPLAY)
-    {
-        msg::error("cannot get EGL display\n");
-        exit(EXIT_FAILURE);
-    }
-
-    if (!eglInitialize(data->egl_dpy, nullptr, nullptr))
-    {
-        msg::error("cannot initialize EGL\n");
-        exit(EXIT_FAILURE);
-    }
-
-    EGLint attr[] =
-    {
-        EGL_BUFFER_SIZE, 16,
-        EGL_DEPTH_SIZE, 16,
-        EGL_RED_SIZE, 4,
-        EGL_GREEN_SIZE, 4,
-        EGL_BLUE_SIZE, 4,
-        EGL_ALPHA_SIZE, 4,
-#if defined HAVE_GLES_2X
-        EGL_RENDERABLE_TYPE, EGL_OPENGL_ES2_BIT,
-#endif
-        EGL_NONE
-    };
-
-    EGLConfig ecfg;
-    EGLint num_config;
-    if (!eglChooseConfig(data->egl_dpy, attr, &ecfg, 1, &num_config))
-    {
-        msg::error("cannot choose EGL config (%i)\n", eglGetError());
-        exit(EXIT_FAILURE);
-    }
-
-    if (num_config != 1)
-    {
-        msg::error("cannot choose between %i EGL configs\n", num_config);
-        exit(EXIT_FAILURE);
-    }
-
-    if (!eglBindAPI(EGL_OPENGL_ES_API))
-    {
-        msg::error("cannot bind OpenGL ES API (%i)\n", eglGetError());
-        exit(EXIT_FAILURE);
-    }
-
-#   if defined HAVE_BCM_HOST_H
-    DISPMANX_ELEMENT_HANDLE_T dispman_element;
-    DISPMANX_DISPLAY_HANDLE_T dispman_display;
-    DISPMANX_UPDATE_HANDLE_T dispman_update;
-    VC_RECT_T dst_rect;
-    VC_RECT_T src_rect;
-
-    graphics_get_display_size(0 /* LCD */, &data->screen_size.x, &data->screen_size.y);
-
-    dst_rect.x = 0;
-    dst_rect.y = 0;
-    dst_rect.width = data->screen_size.x;
-    dst_rect.height = data->screen_size.y;
-
-    src_rect.x = 0;
-    src_rect.y = 0;
-    src_rect.width = data->screen_size.x << 16;
-    src_rect.height = data->screen_size.y << 16;
-
-    dispman_display = vc_dispmanx_display_open(0 /* LCD */);
-    dispman_update = vc_dispmanx_update_start(0);
-
-    dispman_element = vc_dispmanx_element_add(dispman_update, dispman_display,
-        0/*layer*/, &dst_rect, 0/*src*/, &src_rect, DISPMANX_PROTECTION_NONE,
-        0 /*alpha*/, 0/*clamp*/, (DISPMANX_TRANSFORM_T)0/*transform*/);
-
-    data->nativewindow.element = dispman_element;
-    data->nativewindow.width = data->screen_size.x;
-    data->nativewindow.height = data->screen_size.y;
-    vc_dispmanx_update_submit_sync(dispman_update);
-
-    data->egl_surf = eglCreateWindowSurface(data->egl_dpy, ecfg,
-                                            &data->nativewindow, nullptr);
-#   else
-    data->egl_surf = eglCreateWindowSurface(data->egl_dpy, ecfg,
-                                            (EGLNativeWindowType)data->win,
-                                            nullptr);
-#   endif
-    if (data->egl_surf == EGL_NO_SURFACE)
-    {
-        switch (eglGetError())
-        {
-        case EGL_BAD_DISPLAY:
-            msg::error("missing EGL display connection\n");
-            break;
-        case EGL_NOT_INITIALIZED:
-            msg::error("EGL display not initialized\n");
-            break;
-        case EGL_BAD_CONFIG:
-            msg::error("invalid EGL configuration\n");
-            break;
-        case EGL_BAD_NATIVE_WINDOW:
-            msg::error("invalid EGL native window\n");
-            break;
-        case EGL_BAD_ATTRIBUTE:
-            msg::error("invalid EGL window attribute\n");
-            break;
-        case EGL_BAD_ALLOC:
-            msg::error("cannot allocate EGL surface\n");
-            break;
-        case EGL_BAD_MATCH:
-            msg::error("unsupported EGL window\n");
-            break;
-        default:
-            msg::error("cannot create EGL surface (%i)\n", eglGetError());
-            break;
-        }
-
-        exit(EXIT_FAILURE);
-    }
-
-    EGLint ctxattr[] =
-    {
-#if defined HAVE_GLES_2X
-        EGL_CONTEXT_CLIENT_VERSION, 2,
-#endif
-        EGL_NONE
-    };
-    data->egl_ctx = eglCreateContext(data->egl_dpy, ecfg,
-                                     EGL_NO_CONTEXT, ctxattr);
-    if (data->egl_ctx == EGL_NO_CONTEXT)
-    {
-        msg::error("cannot create EGL context (%i)\n", eglGetError());
-        exit(EXIT_FAILURE);
-    }
-
-    eglMakeCurrent(data->egl_dpy, data->egl_surf,
-                   data->egl_surf, data->egl_ctx);
-
-#   if !defined HAVE_BCM_HOST_H
-    XWindowAttributes gwa;
-    XGetWindowAttributes(data->dpy, data->win, &gwa);
-    data->screen_size = uvec2(gwa.width, gwa.height);
-#   endif
-
-#   if LOL_USE_SDL
-    new SdlInput(data->screen_size.x, data->screen_size.y);
-#   endif
-
-    Video::Setup((ivec2)data->screen_size);
-    audio::init();
-#else
-    UNUSED(title, res, fps);
-#endif
-}
-
-void EglApp::ShowPointer(bool show)
-{
-    /* FIXME: unimplemented (do we have a mouse pointer anyway? */
-    (void)show;
-}
-
-void EglApp::Tick()
-{
-    /* Tick the renderer, show the frame and clamp to desired framerate. */
-    ticker::tick_draw();
-#if defined LOL_USE_EGL && !defined __ANDROID__
-    eglSwapBuffers(data->egl_dpy, data->egl_surf);
-#endif
-}
-
-EglApp::~EglApp()
-{
-#if defined LOL_USE_EGL && !defined __ANDROID__
-    eglDestroyContext(data->egl_dpy, data->egl_ctx);
-    eglDestroySurface(data->egl_dpy, data->egl_surf);
-    eglTerminate(data->egl_dpy);
-#   if defined HAVE_BCM_HOST_H
-    /* FIXME */
-#   else
-    XDestroyWindow(data->dpy, data->win);
-    XCloseDisplay(data->dpy);
-#   endif
-#endif
-    delete data;
-}
-
-} /* namespace lol */
-
diff --git a/src/application/egl-app.h b/src/application/egl-app.h
deleted file mode 100644
index 3f745831..00000000
--- a/src/application/egl-app.h
+++ /dev/null
@@ -1,39 +0,0 @@
-//
-// Lol Engine
-//
-// Copyright: (c) 2010-2011 Sam Hocevar <sam@hocevar.net>
-//   This program is free software; you can redistribute it and/or
-//   modify it under the terms of the Do What The Fuck You Want To
-//   Public License, Version 2, as published by Sam Hocevar. See
-//   http://www.wtfpl.net/ for more details.
-//
-
-#pragma once
-
-//
-// The EglApp class
-// ----------------
-//
-
-#include "lol/math/vector.h"
-
-namespace lol
-{
-
-class EglAppData;
-
-class EglApp
-{
-public:
-    EglApp(char const *title, ivec2 res, float fps);
-    virtual ~EglApp();
-
-    void ShowPointer(bool show);
-    void Tick();
-
-private:
-    EglAppData *data;
-};
-
-} /* namespace lol */
-
diff --git a/src/application/sdl-app.cpp b/src/application/sdl-app.cpp
deleted file mode 100644
index 6c6a6e27..00000000
--- a/src/application/sdl-app.cpp
+++ /dev/null
@@ -1,194 +0,0 @@
-//
-//  Lol Engine
-//
-//  Copyright © 2010—2020 Sam Hocevar <sam@hocevar.net>
-//
-//  Lol Engine is free software. It comes without any warranty, to
-//  the extent permitted by applicable law. You can redistribute it
-//  and/or modify it under the terms of the Do What the Fuck You Want
-//  to Public License, Version 2, as published by the WTFPL Task Force.
-//  See http://www.wtfpl.net/ for more details.
-//
-
-#include <lol/engine-internal.h>
-
-#if LOL_USE_SDL
-#   if HAVE_SDL2_SDL_H
-#      include <SDL2/SDL.h>
-#   elif HAVE_SDL_H
-#      include <SDL.h>
-#   endif
-#endif
-
-#include "lolgl.h"
-#include "application/sdl-app.h"
-#include "ui/sdl-input.h"
-#if LOL_USE_XINPUT
-#   include "ui/d3d9-input.h"
-#endif
-
-namespace lol
-{
-
-/*
-* Public sdl::app_display class
-*/
-sdl::app_display::app_display(char const *title, ivec2 res)
-{
-#if LOL_USE_SDL
-    ivec2 window_size = res;
-
-    /* Initialise SDL */
-    if (!SDL_WasInit(0))
-    {
-        msg::debug("initialising SDL\n");
-        if (SDL_Init(SDL_INIT_VIDEO | SDL_INIT_AUDIO | SDL_INIT_NOPARACHUTE) < 0)
-        {
-            msg::error("cannot initialise SDL: %s\n", SDL_GetError());
-            exit(EXIT_FAILURE);
-        }
-    }
-
-    // This seems to fix a bug we used to have at context swap. Maybe remove one day.
-    SDL_GL_SetAttribute(SDL_GL_SHARE_WITH_CURRENT_CONTEXT, 1);
-
-#if !defined __EMSCRIPTEN__
-    // Ask for GL 3.2 at least
-    SDL_GL_SetAttribute(SDL_GL_CONTEXT_MAJOR_VERSION, 3);
-    SDL_GL_SetAttribute(SDL_GL_CONTEXT_MINOR_VERSION, 2);
-
-#if LOL_BUILD_DEBUG
-    SDL_GL_SetAttribute(SDL_GL_CONTEXT_FLAGS, SDL_GL_CONTEXT_DEBUG_FLAG);
-#endif
-#endif
-
-    int flags = SDL_WINDOW_OPENGL | SDL_WINDOW_RESIZABLE;
-    if (window_size == ivec2(0))
-        flags |= SDL_WINDOW_FULLSCREEN_DESKTOP;
-    msg::debug("initialising main window\n");
-    m_window = SDL_CreateWindow(title,
-        SDL_WINDOWPOS_UNDEFINED, SDL_WINDOWPOS_UNDEFINED,
-        window_size.x, window_size.y, flags);
-    if (!m_window)
-    {
-        msg::error("cannot create rendering window: %s\n", SDL_GetError());
-        SDL_Quit();
-        exit(EXIT_FAILURE);
-    }
-    SDL_GetWindowSize(m_window, &res.x, &res.y);
-
-    m_glcontext = SDL_GL_CreateContext(m_window);
-    SDL_GL_MakeCurrent(m_window, m_glcontext);
-    msg::info("created GL context: %s\n", glGetString(GL_VERSION));
-
-    /* Initialise everything */
-    Video::Setup(res); //TODO ?? Should it be here ?
-#endif
-}
-
-sdl::app_display::~app_display()
-{
-#if LOL_USE_SDL
-    if (m_window)
-    {
-        SDL_GL_DeleteContext(m_glcontext);
-        SDL_DestroyWindow(m_window);
-    }
-#endif
-}
-
-ivec2 sdl::app_display::resolution() const
-{
-    ivec2 ret(0);
-#if LOL_USE_SDL
-    SDL_GetWindowSize(m_window, &ret.x, &ret.y);
-#endif
-    return ret;
-}
-
-void sdl::app_display::set_resolution(ivec2 resolution)
-{
-#if LOL_USE_SDL
-    SDL_SetWindowSize(m_window, resolution.x, resolution.y);
-#endif
-}
-
-void sdl::app_display::SetPosition(ivec2 position)
-{
-#if LOL_USE_SDL
-    SDL_SetWindowPosition(m_window, position.x, position.y);
-#endif
-}
-
-void sdl::app_display::Enable()
-{
-#if LOL_USE_SDL
-    //TODO: Should we do that: ?
-    SDL_GL_MakeCurrent(m_window, m_glcontext);
-#endif
-}
-
-void sdl::app_display::Disable()
-{
-#if LOL_USE_SDL
-    SDL_GL_SwapWindow(m_window);
-#endif
-}
-
-#if LOL_USE_SDL
-int SceneDisplay::GetPhysicalCount()
-{
-    return SDL_GetNumVideoDisplays();
-}
-
-const char* SceneDisplay::GetPhysicalName(int index)
-{
-    return SDL_GetDisplayName(index);
-}
-#endif
-
-/*
- * Public sdl::app class
- */
-sdl::app::app(char const *title, ivec2 res, float fps)
-{
-    UNUSED(title);
-#if LOL_USE_SDL
-    ivec2 window_size = res;
-    ivec2 screen_size = res;
-
-    audio::init();
-
-    /* Autoreleased objects */
-#if defined LOL_USE_XINPUT
-    /* Prefer D3d9 for joysticks on Windows, because the X360 pads are not
-     * advertised with the proper number of axes. */
-    new D3d9Input();
-#endif
-
-    new SdlInput(screen_size.x, screen_size.y);
-#endif
-}
-
-void sdl::app::ShowPointer(bool show)
-{
-#if LOL_USE_SDL
-    SDL_ShowCursor(show ? 1 : 0);
-#endif
-}
-
-void sdl::app::Tick()
-{
-    /* Tick the renderer, show the frame and clamp to desired framerate. */
-    Ticker::tick_draw();
-}
-
-sdl::app::~app()
-{
-#if LOL_USE_SDL
-    SDL_Quit();
-#endif
-}
-
-} /* namespace lol */
-
diff --git a/src/application/sdl-app.h b/src/application/sdl-app.h
deleted file mode 100644
index 756ad3e7..00000000
--- a/src/application/sdl-app.h
+++ /dev/null
@@ -1,73 +0,0 @@
-//
-//  Lol Engine
-//
-//  Copyright © 2010—2019 Sam Hocevar <sam@hocevar.net>
-//
-//  Lol Engine is free software. It comes without any warranty, to
-//  the extent permitted by applicable law. You can redistribute it
-//  and/or modify it under the terms of the Do What the Fuck You Want
-//  to Public License, Version 2, as published by the WTFPL Task Force.
-//  See http://www.wtfpl.net/ for more details.
-//
-
-#pragma once
-
-//
-// The SdlApp class
-// ----------------
-//
-
-#include <lol/math/vector.h>
-
-#if LOL_USE_SDL
-#   if HAVE_SDL2_SDL_H
-#      include <SDL2/SDL.h>
-#   elif HAVE_SDL_H
-#      include <SDL.h>
-#   endif
-#endif
-
-namespace lol
-{
-
-namespace sdl
-{
-
-class app
-{
-public:
-    app(char const *title, ivec2 res, float fps);
-    virtual ~app();
-
-    void ShowPointer(bool show);
-    void Tick();
-};
-
-class app_display
-{
-    friend class lol::ApplicationDisplay;
-
-public:
-    app_display(char const *title, ivec2 resolution);
-    virtual ~app_display();
-
-protected:
-    virtual void set_resolution(ivec2 resolution);
-    virtual ivec2 resolution() const;
-
-    void SetPosition(ivec2 position);
-
-    void Enable();
-    void Disable();
-
-private:
-#if LOL_USE_SDL
-    SDL_Window *m_window;
-    SDL_GLContext m_glcontext;
-#endif
-};
-
-} /* namespace sdl */
-
-} /* namespace lol */
-
diff --git a/src/audio/audio.cpp b/src/audio/audio.cpp
deleted file mode 100644
index a1d4dc0b..00000000
--- a/src/audio/audio.cpp
+++ /dev/null
@@ -1,246 +0,0 @@
-//
-//  Lol Engine
-//
-//  Copyright © 2010—2019 Sam Hocevar <sam@hocevar.net>
-//
-//  Lol Engine is free software. It comes without any warranty, to
-//  the extent permitted by applicable law. You can redistribute it
-//  and/or modify it under the terms of the Do What the Fuck You Want
-//  to Public License, Version 2, as published by the WTFPL Task Force.
-//  See http://www.wtfpl.net/ for more details.
-//
-
-#include <lol/engine-internal.h>
-
-#include <array>
-#include <unordered_set>
-#include <functional>
-
-#if LOL_USE_SDL_MIXER
-#   if HAVE_SDL2_SDL_H
-#       include <SDL2/SDL.h>
-#       include <SDL2/SDL_mixer.h>
-#   elif HAVE_SDL_H
-#       include <SDL.h>
-#       include <SDL_mixer.h>
-#   endif
-#endif
-
-// Buffer size, in samples (https://wiki.libsdl.org/SDL_AudioSpec)
-// “[…] refers to the size of the audio buffer in sample frames. A sample frame
-// is a chunk of audio data of the size specified in format multiplied by the
-// number of channels.”
-#define LOL_AUDIO_DEFAULT_FRAMES 1024
-
-#define LOL_AUDIO_DEFAULT_TRACKS 8
-#define LOL_AUDIO_DEFAULT_CHANNELS 2
-#define LOL_AUDIO_DEFAULT_FORMAT AUDIO_S16
-#define LOL_AUDIO_DEFAULT_RATE 22050
-
-namespace lol
-{
-
-#if defined LOL_USE_SDL_MIXER
-struct audio_streamer
-{
-    int m_track = -1;
-    std::function<void(void *, int)> m_callback;
-    // Buffer where the streaming client will write, and where the SDL
-    // audio conversion may happen.
-    std::vector<uint8_t> m_convert_buffer;
-    // Remaining bytes in the conversion buffer.
-    int m_extra_bytes = 0;
-    // Buffer used to write the converted audio data for mixing.
-    std::vector<uint8_t> m_output_buffer;
-
-    SDL_AudioCVT m_convert;
-    Mix_Chunk *m_chunk = nullptr;
-};
-
-static std::unordered_set<std::shared_ptr<audio_streamer>> g_streamers;
-
-// The global audio format
-static int g_frequency, g_channels;
-static audio::format g_format;
-
-static audio::format sdl2lol_format(Uint16 sdl_format)
-{
-    switch (sdl_format)
-    {
-        case AUDIO_U8: return audio::format::uint8;
-        case AUDIO_S8: return audio::format::sint8;
-        case AUDIO_U16LSB: return audio::format::uint16le;
-        case AUDIO_U16MSB: return audio::format::uint16be;
-        case AUDIO_S16LSB: return audio::format::sint16le;
-        case AUDIO_S16MSB: return audio::format::sint16be;
-        case AUDIO_S32LSB: return audio::format::sint32le;
-        case AUDIO_S32MSB: return audio::format::sint32be;
-        case AUDIO_F32LSB: return audio::format::float32le;
-        case AUDIO_F32MSB: return audio::format::float32be;
-        default: return audio::format::unknown;
-    }
-}
-
-static int lol2sdl_format(audio::format format)
-{
-    switch (format)
-    {
-        case audio::format::uint8: return AUDIO_U8;
-        case audio::format::sint8: return AUDIO_S8;
-        case audio::format::uint16le: return AUDIO_U16LSB;
-        case audio::format::uint16be: return AUDIO_U16MSB;
-        case audio::format::sint16le: return AUDIO_S16LSB;
-        case audio::format::sint16be: return AUDIO_S16MSB;
-        case audio::format::sint32le: return AUDIO_S32LSB;
-        case audio::format::sint32be: return AUDIO_S32MSB;
-        case audio::format::float32le: return AUDIO_F32LSB;
-        case audio::format::float32be: return AUDIO_F32MSB;
-        default: return 0;
-    }
-}
-#endif
-
- /*
- * Public audio class
- */
-
-#if defined LOL_USE_SDL_MIXER
-void audio::init()
-{
-    if (Mix_OpenAudio(LOL_AUDIO_DEFAULT_RATE, LOL_AUDIO_DEFAULT_FORMAT, LOL_AUDIO_DEFAULT_CHANNELS, LOL_AUDIO_DEFAULT_FRAMES) < 0)
-    {
-        msg::error("error opening audio: %s\n", Mix_GetError());
-        return;
-    }
-
-    set_tracks(LOL_AUDIO_DEFAULT_TRACKS);
-
-    Uint16 sdl_format;
-    if (Mix_QuerySpec(&g_frequency, &sdl_format, &g_channels) == 0)
-    {
-        msg::error("error querying audio: %s\n", Mix_GetError());
-        return;
-    }
-
-    g_format = sdl2lol_format(sdl_format);
-
-    char const *u = (SDL_AUDIO_ISFLOAT(sdl_format) || SDL_AUDIO_ISSIGNED(sdl_format)) ? "" : "u";
-    char const *t = SDL_AUDIO_ISFLOAT(sdl_format) ? "float" : "int";
-    int b = SDL_AUDIO_BITSIZE(sdl_format);
-    char const *e = b <= 8 ? "" : SDL_AUDIO_ISLITTLEENDIAN(sdl_format) ? "le" : "be";
-
-    msg::info("audio initialised: freq=%dHz format=%s%s%d%s channels=%d\n",
-              g_frequency, u, t, b, e, g_channels);
-}
-
-void audio::shutdown()
-{
-}
-
-void audio::set_tracks(int tracks)
-{
-    Mix_AllocateChannels(tracks);
-}
-
-void audio::set_volume(int track, int volume)
-{
-    Mix_Volume(track, volume);
-}
-
-void audio::mute_all()
-{
-    Mix_Volume(-1, 0);
-}
-
-void audio::unmute_all()
-{
-    Mix_Volume(-1, MIX_MAX_VOLUME);
-}
-
-int audio::start_streaming(std::function<void(void *, int)> const &f,
-                           enum audio::format format /* = audio::format::sint16le */,
-                           int frequency /* = 22050 */,
-                           int channels /* = 2 */)
-{
-    static auto trampoline = [](int, void *stream, int bytes, void *udata)
-    {
-        auto s = (audio_streamer *)udata;
-
-        // If there were still bytes from a previous conversion, copy them.
-        if (s->m_extra_bytes)
-        {
-            int tocopy = lol::min(bytes, s->m_extra_bytes);
-            memcpy(stream, s->m_convert.buf + s->m_convert.len_cvt - s->m_extra_bytes, tocopy);
-            s->m_extra_bytes -= tocopy;
-            bytes -= tocopy;
-            stream = (void *)((uint8_t *)stream + tocopy);
-        }
-
-        // Ask the callback for more bytes as long as we need them.
-        while (bytes > 0)
-        {
-            s->m_callback(s->m_convert.buf, s->m_convert.len);
-            if (s->m_convert.needed)
-                SDL_ConvertAudio(&s->m_convert);
-            int tocopy = lol::min(bytes, s->m_convert.len_cvt);
-            s->m_extra_bytes = s->m_convert.len_cvt - tocopy;
-            memcpy(stream, s->m_convert.buf, tocopy);
-            bytes -= tocopy;
-            stream = (void *)((uint8_t *)stream + tocopy);
-        }
-    };
-
-    auto s = std::make_shared<audio_streamer>();
-    g_streamers.insert(s);
-
-    // Build an audio converter that converts from a given streaming format
-    // to the format SDL was currently initialised with, if necessary.
-    Uint16 sdl_format = lol2sdl_format(format);
-    Uint16 sdl_g_format = lol2sdl_format(g_format);
-    SDL_BuildAudioCVT(&s->m_convert, sdl_format, channels, frequency, sdl_g_format, g_channels, g_frequency);
-
-    // This is how many bytes we will ask the streaming callback
-    s->m_convert.len = LOL_AUDIO_DEFAULT_FRAMES * channels * SDL_AUDIO_BITSIZE(sdl_format) / 8;
-    s->m_convert_buffer.resize(s->m_convert.len * s->m_convert.len_mult);
-    s->m_convert.buf = s->m_convert_buffer.data();
-
-    // This is how many bytes we will send to the SDL mixer
-    Uint32 output_bytes = LOL_AUDIO_DEFAULT_FRAMES * g_channels * SDL_AUDIO_BITSIZE(sdl_g_format) / 8;
-    s->m_output_buffer.resize(output_bytes);
-    Uint8* audio_data = (Uint8*)s->m_output_buffer.data();
-    s->m_chunk = Mix_QuickLoad_RAW(audio_data, output_bytes);
-    s->m_track = Mix_PlayChannel(-1, s->m_chunk, -1);
-    s->m_callback = f;
-    Mix_RegisterEffect(s->m_track, trampoline, nullptr, s.get());
-
-    return s->m_track;
-}
-
-void audio::stop_streaming(int track)
-{
-    for (auto streamer : g_streamers)
-    {
-        if (streamer->m_track == track)
-        {
-            Mix_HaltChannel(track);
-            g_streamers.erase(streamer);
-            break;
-        }
-    }
-}
-
-#elif __NX__
-#else
-void audio::init() {}
-void audio::shutdown() {}
-void audio::set_tracks(int) {}
-void audio::set_volume(int, int) {}
-void audio::mute_all() {}
-void audio::unmute_all() {}
-int audio::start_streaming(std::function<void(void *, int)> const &,
-                           enum audio::format, int, int) { return -1; }
-void audio::stop_streaming(int) {}
-#endif
-
-} /* namespace lol */
-
diff --git a/src/audio/sample.cpp b/src/audio/sample.cpp
deleted file mode 100644
index df5e411d..00000000
--- a/src/audio/sample.cpp
+++ /dev/null
@@ -1,147 +0,0 @@
-//
-//  Lol Engine
-//
-//  Copyright © 2010—2019 Sam Hocevar <sam@hocevar.net>
-//
-//  Lol Engine is free software. It comes without any warranty, to
-//  the extent permitted by applicable law. You can redistribute it
-//  and/or modify it under the terms of the Do What the Fuck You Want
-//  to Public License, Version 2, as published by the WTFPL Task Force.
-//  See http://www.wtfpl.net/ for more details.
-//
-
-#include <lol/engine-internal.h>
-
-#include <cstdlib>
-#include <cstdio>
-#include <cstring>
-
-#if LOL_USE_SDL_MIXER
-#   if HAVE_SDL2_SDL_H
-#       include <SDL2/SDL.h>
-#       include <SDL2/SDL_mixer.h>
-#   elif HAVE_SDL_H
-#       include <SDL.h>
-#       include <SDL_mixer.h>
-#   endif
-#endif
-
-namespace lol
-{
-
-/* The sample cache */
-static entity_dict<sample> sample_cache;
-
-/*
- * sample implementation class
- */
-
-class sample_data
-{
-    friend class sample;
-
-private:
-    std::string m_name;
-#if defined LOL_USE_SDL_MIXER
-    Mix_Chunk *m_chunk;
-    int m_channel;
-#endif
-};
-
-/*
- * Public sample class
- */
-
-sample *sample::create(std::string const &path)
-{
-    auto ret = sample_cache.get(path);
-    return ret ? ret : sample_cache.set(path, new sample(path));
-}
-
-sample *sample::create(void const *samples, size_t len)
-{
-    return new sample(samples, len);
-}
-
-void sample::destroy(sample *s)
-{
-    // FIXME: decrement!
-    sample_cache.erase(s);
-}
-
-sample::sample(std::string const &path)
-  : data(std::make_unique<sample_data>())
-{
-    data->m_name = std::string("<sample> ") + path;
-
-#if defined LOL_USE_SDL_MIXER
-    for (auto candidate : sys::get_path_list(path))
-    {
-        data->m_chunk = Mix_LoadWAV(candidate.c_str());
-        if (data->m_chunk)
-            break;
-    }
-    if (!data->m_chunk)
-    {
-        msg::error("could not load sample %s: %s\n", path.c_str(), Mix_GetError());
-    }
-    data->m_channel = -1;
-#endif
-}
-
-sample::sample(void const *samples, size_t len)
-  : data(std::make_unique<sample_data>())
-{
-    data->m_name = std::string("<sample>");
-
-#if defined LOL_USE_SDL_MIXER
-    data->m_chunk = Mix_QuickLoad_RAW((Uint8 *)samples, (Uint32)len);
-    data->m_channel = -1;
-#endif
-}
-
-sample::~sample()
-{
-#if defined LOL_USE_SDL_MIXER
-    if (data->m_chunk)
-        Mix_FreeChunk(data->m_chunk);
-#endif
-}
-
-void sample::tick_game(float seconds)
-{
-    entity::tick_game(seconds);
-}
-
-std::string sample::GetName() const
-{
-    return data->m_name;
-}
-
-void sample::play()
-{
-#if defined LOL_USE_SDL_MIXER
-    if (data->m_chunk)
-        data->m_channel = Mix_PlayChannel(-1, data->m_chunk, 0);
-#endif
-}
-
-void sample::loop()
-{
-#if defined LOL_USE_SDL_MIXER
-    if (data->m_chunk)
-        data->m_channel = Mix_PlayChannel(-1, data->m_chunk, -1);
-#endif
-}
-
-void sample::stop()
-{
-#if defined LOL_USE_SDL_MIXER
-    if (data->m_channel >= 0)
-        Mix_HaltChannel(data->m_channel);
-    data->m_channel = -1;
-#endif
-}
-
-} /* namespace lol */
-
diff --git a/src/base/assert.cpp b/src/base/assert.cpp
deleted file mode 100644
index 14650425..00000000
--- a/src/base/assert.cpp
+++ /dev/null
@@ -1,92 +0,0 @@
-//
-//  Lol Engine
-//
-//  Copyright © 2010—2019 Sam Hocevar <sam@hocevar.net>
-//
-//  Lol Engine is free software. It comes without any warranty, to
-//  the extent permitted by applicable law. You can redistribute it
-//  and/or modify it under the terms of the Do What the Fuck You Want
-//  to Public License, Version 2, as published by the WTFPL Task Force.
-//  See http://www.wtfpl.net/ for more details.
-//
-
-#include <lol/engine-internal.h>
-
-#if HAVE_CXXABI_H
-#   include <cxxabi.h>
-#endif
-#if HAVE_EXECINFO_H
-#   include <execinfo.h>
-#endif
-
-#if HAVE_EMSCRIPTEN_H
-#   include <emscripten.h>
-#endif
-
-namespace lol
-{
-
-namespace debug
-{
-
-void dump_stack()
-{
-#if __EMSCRIPTEN__
-    /* This would require demangling but we don't care yet. */
-    msg::debug("%s\n", emscripten_run_script_string("(new Error).stack"));
-#elif HAVE_CXA_DEMANGLE && HAVE_BACKTRACE_SYMBOLS
-    /* Get current stack frames */
-    void *stack_ptrs[50];
-    size_t size = backtrace(stack_ptrs, 50);
-    char **callstack = backtrace_symbols(stack_ptrs, size);
-
-    if (size > 1)
-        msg::debug("%d functions in stack trace:\n", (int)size - 1);
-
-    /* Parse stack frames, skipping the first element (because
-     * that’s ourselves) and print information. */
-    for (size_t i = 1; i < size; ++i)
-    {
-        char *name = 0, *offset = 0, *address = 0;
-
-        for (char *p = callstack[i]; *p; ++p)
-        {
-            if (*p == '(')
-                name = p;
-            else if (*p == '+')
-                offset = p;
-            else if (*p == ')')
-            {
-                address = p;
-                break;
-            }
-        }
-
-        if (name && offset && address && name < offset)
-        {
-            *name++ = *offset++ = *address++ = '\0';
-
-            int ret;
-            char *realname = abi::__cxa_demangle(name, 0, 0, &ret);
-
-            if (ret == 0)
-                name = realname;
-
-            msg::debug("#%d %s: %s+%s %s\n", (int)i,
-                       callstack[i], name, offset, address);
-            free(realname);
-        }
-        else
-        {
-            msg::debug("#%d %s\n", (int)i, callstack[i]);
-        }
-    }
-
-    free(callstack);
-#endif
-}
-
-} /* namespace debug */
-
-} /* namespace lol */
-
diff --git a/src/base/features.cpp b/src/base/features.cpp
deleted file mode 100644
index f4b87d5c..00000000
--- a/src/base/features.cpp
+++ /dev/null
@@ -1,30 +0,0 @@
-//
-//  Lol Engine
-//
-//  Copyright © 2010—2020 Sam Hocevar <sam@hocevar.net>
-//
-//  Lol Engine is free software. It comes without any warranty, to
-//  the extent permitted by applicable law. You can redistribute it
-//  and/or modify it under the terms of the Do What the Fuck You Want
-//  to Public License, Version 2, as published by the WTFPL Task Force.
-//  See http://www.wtfpl.net/ for more details.
-//
-
-#include <lol/engine-internal.h>
-
-namespace lol
-{
-
-bool has_threads()
-{
-    static bool const disable_threads = sys::getenv("LOL_NOTHREADS").size() > 0;
-#if defined __EMSCRIPTEN__ && !defined __EMSCRIPTEN_PTHREADS__
-    // For some reason hardware_concurrency() will return the actual number
-    // of threads/cores even though the system cannot spawn threads.
-    return false;
-#endif
-    return !disable_threads && std::thread::hardware_concurrency() > 1;
-}
-
-} // namespace lol
-
diff --git a/src/base/log.cpp b/src/base/log.cpp
deleted file mode 100644
index b9cdf7c4..00000000
--- a/src/base/log.cpp
+++ /dev/null
@@ -1,131 +0,0 @@
-//
-//  Lol Engine
-//
-//  Copyright © 2010—2019 Sam Hocevar <sam@hocevar.net>
-//
-//  Lol Engine is free software. It comes without any warranty, to
-//  the extent permitted by applicable law. You can redistribute it
-//  and/or modify it under the terms of the Do What the Fuck You Want
-//  to Public License, Version 2, as published by the WTFPL Task Force.
-//  See http://www.wtfpl.net/ for more details.
-//
-
-#include <lol/engine-internal.h>
-
-#include <cstdio>
-#include <cstdlib>
-
-#if defined(_WIN32)
-#   define WIN32_LEAN_AND_MEAN
-#   include <windows.h>
-#   undef WIN32_LEAN_AND_MEAN
-#endif
-
-#if __ANDROID__
-#   include <android/log.h>
-#   include <unistd.h> /* for gettid() */
-#elif __NX__
-#   include "../private/nx/nx-log.h"
-#else
-#   include <cstdarg>
-#endif
-
-namespace lol
-{
-
-/*
- * Public log class
- */
-
-void msg::debug(char const *fmt, ...)
-{
-    va_list ap;
-    va_start(ap, fmt);
-    helper(message_type::debug, fmt, ap);
-    va_end(ap);
-}
-
-void msg::info(char const *fmt, ...)
-{
-    va_list ap;
-    va_start(ap, fmt);
-    helper(message_type::info, fmt, ap);
-    va_end(ap);
-}
-
-void msg::warn(char const *fmt, ...)
-{
-    va_list ap;
-    va_start(ap, fmt);
-    helper(message_type::warning, fmt, ap);
-    va_end(ap);
-}
-
-void msg::error(char const *fmt, ...)
-{
-    va_list ap;
-    va_start(ap, fmt);
-    helper(message_type::error, fmt, ap);
-    va_end(ap);
-}
-
-/*
- * Private helper function
- */
-
-void msg::helper(message_type type, char const *fmt, va_list ap)
-{
-    /* Unless this is a debug build, ignore debug messages unless
-     * the LOL_DEBUG environment variable is set. */
-#if !defined LOL_BUILD_DEBUG && !_DEBUG
-    if (type == message_type::debug)
-    {
-        static bool const disable_debug = sys::getenv("LOL_DEBUG").size() > 0;
-        if (disable_debug)
-            return;
-    }
-#endif
-
-#if __ANDROID__
-    static int const prio[] =
-    {
-        ANDROID_LOG_DEBUG,
-        ANDROID_LOG_INFO,
-        ANDROID_LOG_WARN,
-        ANDROID_LOG_ERROR
-    };
-
-    std::string buf = vformat(fmt, ap);
-    __android_log_print(prio[(int)type], "LOL", "[%d] %s", (int)gettid(), &buf[0]);
-
-#elif __NX__
-    nx::helper(type, fmt, ap);
-#else
-    static char const * const prefix[] =
-    {
-        "DEBUG",
-        "INFO",
-        "WARN",
-        "ERROR",
-    };
-
-#   if defined _WIN32
-    std::string buf = std::string(prefix[(int)type]) + ": " + vformat(fmt, ap);
-
-    array<WCHAR> widechar;
-    widechar.resize(buf.length() + 1);
-    MultiByteToWideChar(CP_UTF8, 0, buf.c_str(), (int)buf.length() + 1, widechar.data(), widechar.count());
-    OutputDebugStringW(widechar.data());
-#   elif defined __EMSCRIPTEN__
-    fprintf(stdout, "%s: ", prefix[(int)type]);
-    vfprintf(stdout, fmt, ap);
-    fflush(stdout);
-#   else
-    fprintf(stderr, "%s: ", prefix[(int)type]);
-    vfprintf(stderr, fmt, ap);
-#   endif
-#endif
-}
-
-} /* namespace lol */
-
diff --git a/src/base/string.cpp b/src/base/string.cpp
deleted file mode 100644
index 706ade5a..00000000
--- a/src/base/string.cpp
+++ /dev/null
@@ -1,123 +0,0 @@
-//
-//  Lol Engine
-//
-//  Copyright © 2010—2018 Sam Hocevar <sam@hocevar.net>
-//
-//  Lol Engine is free software. It comes without any warranty, to
-//  the extent permitted by applicable law. You can redistribute it
-//  and/or modify it under the terms of the Do What the Fuck You Want
-//  to Public License, Version 2, as published by the WTFPL Task Force.
-//  See http://www.wtfpl.net/ for more details.
-//
-
-#include <lol/engine-internal.h>
-
-#include <cstdio>
-#include <string>
-
-#if defined(_WIN32)
-#   define WIN32_LEAN_AND_MEAN
-#   include <windows.h>
-#   undef WIN32_LEAN_AND_MEAN
-#endif
-
-#include <cstdarg>
-#include <cctype>
-
-namespace lol
-{
-
-array<std::string> split(std::string const &s, char sep)
-{
-    array<std::string> ret;
-    size_t start = 0, end = 0;
-    while ((end = s.find(sep, start)) != std::string::npos)
-    {
-        ret << s.substr(start, end - start);
-        start = end + 1;
-    }
-    ret << s.substr(start);
-    return ret;
-}
-
-array<std::string> split(std::string const &s, std::string const &seps)
-{
-    array<std::string> ret;
-    size_t start = s.find_first_not_of(seps), end = 0;
-
-    while ((end = s.find_first_of(seps, start)) != std::string::npos)
-    {
-        ret << s.substr(start, end - start);
-        start = s.find_first_not_of(seps, end);
-    }
-    if (start != std::string::npos)
-        ret << s.substr(start);
-
-    return ret;
-}
-
-bool starts_with(std::string const &s, std::string const &prefix)
-{
-    return s.size() >= prefix.size() &&
-           s.compare(0, prefix.size(), prefix) == 0;
-}
-
-bool ends_with(std::string const &s, std::string const &suffix)
-{
-    return s.size() >= suffix.size() &&
-           s.compare(s.size() - suffix.size(), suffix.size(), suffix) == 0;
-}
-
-std::string tolower(std::string const &s)
-{
-    std::string ret;
-    std::transform(s.begin(), s.end(), std::back_inserter(ret),
-                   [](unsigned char c){ return std::tolower(c); });
-    return ret;
-}
-
-std::string toupper(std::string const &s)
-{
-    std::string ret;
-    std::transform(s.begin(), s.end(), std::back_inserter(ret),
-                   [](unsigned char c){ return std::toupper(c); });
-    return ret;
-}
-
-std::string format(char const *format, ...)
-{
-    va_list ap;
-    va_start(ap, format);
-    std::string ret = vformat(format, ap);
-    va_end(ap);
-    return ret;
-}
-
-std::string vformat(char const *format, va_list ap)
-{
-    va_list ap2;
-#if defined va_copy || !defined _MSC_VER
-    /* Visual Studio 2010 does not support va_copy. */
-    va_copy(ap2, ap);
-#else
-    ap2 = ap;
-#endif
-
-    /* vsnprintf() tells us how many characters we need, not counting
-     * the terminating null character. */
-    size_t needed = vsnprintf(nullptr, 0, format, ap2);
-
-#if defined va_copy || !defined _MSC_VER
-    /* do not call va_end() if va_copy() wasn't called. */
-    va_end(ap2);
-#endif
-
-    std::string ret;
-    ret.resize(needed);
-    vsnprintf(&ret[0], needed + 1, format, ap);
-
-    return ret;
-}
-
-} /* namespace lol */
-
diff --git a/src/camera.cpp b/src/camera.cpp
deleted file mode 100644
index 709e5c6c..00000000
--- a/src/camera.cpp
+++ /dev/null
@@ -1,246 +0,0 @@
-//
-//  Lol Engine
-//
-//  Copyright © 2010—2019 Sam Hocevar <sam@hocevar.net>
-//            © 2009—2013 Benjamin “Touky” Huet <huet.benjamin@gmail.com>
-//
-//  Lol Engine is free software. It comes without any warranty, to
-//  the extent permitted by applicable law. You can redistribute it
-//  and/or modify it under the terms of the Do What the Fuck You Want
-//  to Public License, Version 2, as published by the WTFPL Task Force.
-//  See http://www.wtfpl.net/ for more details.
-//
-
-#include <lol/engine-internal.h>
-
-#include <cstring>
-#include <cstdlib>
-
-#if defined _WIN32
-#   define strcasecmp _stricmp
-#   undef near
-#   undef far
-#endif
-
-namespace lol
-{
-
-Camera::Camera()
-{
-    m_gamegroup = tickable::group::game::camera;
-    m_drawgroup = tickable::group::draw::camera;
-
-    //Arbitrary values when scene renderer is not ready.
-    ivec2 screen_size = (Scene::GetCount()) ? (Video::GetSize()) : (ivec2(800, 600));
-    m_fov = radians(45.f);
-    m_near = -1000.f;
-    m_far = 1000.f;
-    m_screen_size = (float)screen_size.x;
-    m_screen_ratio = (float)screen_size.y / (float)screen_size.x;
-    m_is_shifted = false;
-    m_screen_scale = vec2(1.f);
-
-    m_target_distance = .0f;
-
-    /* Create a default perspective */
-    SetProjection(m_fov, m_near, m_far, m_screen_size, m_screen_ratio);
-    SetView(mat4::lookat(vec3(0.f, 50.f, 50.f), vec3::zero, vec3::axis_y));
-}
-
-Camera::~Camera()
-{
-}
-
-//-----------------------------------------------------------------------------
-//View functions
-//--
-
-//WARNING : Don't forget the position
-void Camera::SetView(mat4 const &view)
-{
-    m_view_matrix = view;
-    m_position = inverse(view)[3].xyz;
-}
-
-void Camera::SetView(vec3 eye, vec3 target, vec3 up)
-{
-    m_view_matrix = mat4::lookat(eye, target, up);
-    m_position = eye;
-    m_target_distance = length(target - m_position);
-}
-
-void Camera::SetView(vec3 pos, vec3 rot)
-{
-    SetView(pos, quat::fromeuler_zyx(rot));
-}
-
-void Camera::SetView(vec3 pos, quat rot)
-{
-    m_view_matrix = inverse(mat4(rot)) * mat4::translate(-pos);
-    m_position = pos;
-}
-
-mat4 Camera::GetView() const
-{
-    return m_view_matrix;
-}
-
-//-----------------------------------------------------------------------------
-//Projections functions
-//--
-void Camera::SetProjection(mat4 const &proj)
-{
-    m_proj_matrix = proj;
-}
-
-void Camera::SetProjection(float fov, float near, float far)
-{
-    SetProjection(fov, near, far, m_screen_size, m_screen_ratio);
-}
-
-void Camera::SetProjection(float fov, float near, float far, float screen_size, float screen_ratio)
-{
-    m_fov = fov;
-    m_near = near;
-    m_far = far;
-    m_screen_size = screen_size;
-    m_screen_ratio = screen_ratio;
-    mat4 screen_scale = mat4::scale(vec3(m_screen_scale.xy, 1.f));
-    if (m_fov > .00001f)
-    {
-        if (m_is_shifted)
-            SetProjection(screen_scale * mat4::shifted_perspective(m_fov, screen_size, screen_ratio, m_near, m_far));
-        else
-            SetProjection(screen_scale * mat4::perspective(m_fov, screen_size, screen_size * screen_ratio, m_near, m_far));
-    }
-    else
-        SetProjection(screen_scale * mat4::ortho(screen_size, screen_size * screen_ratio, m_near, m_far));
-}
-
-mat4 Camera::GetProjection() const
-{
-    return m_proj_matrix;
-}
-
-//-----------------------------------------------------------------------------
-//Projections manipulation functions
-//--
-void Camera::SetFov(float fov)
-{
-    SetProjection(fov, m_near, m_far, m_screen_size, m_screen_ratio);
-}
-
-void Camera::SetScreenInfos(float screen_size)
-{
-    SetScreenInfos(screen_size, m_screen_ratio);
-}
-
-void Camera::SetScreenInfos(float screen_size, float screen_ratio)
-{
-    SetProjection(m_fov, m_near, m_far, screen_size, screen_ratio);
-}
-
-void Camera::SetDrawInfos(float far)
-{
-    SetDrawInfos(m_near, far);
-}
-
-void Camera::SetDrawInfos(float near, float far)
-{
-    SetProjection(m_fov, near, far, m_screen_size, m_screen_ratio);
-}
-
-void Camera::SetScreenScale(vec2 screen_scale)
-{
-    m_screen_scale = screen_scale;
-    SetProjection(m_fov, m_near, m_far, m_screen_size, m_screen_ratio);
-}
-
-void Camera::UseShift(bool should_shift)
-{
-    m_is_shifted = should_shift;
-    SetProjection(m_fov, m_near, m_far, m_screen_size, m_screen_ratio);
-}
-
-void Camera::UseTarget(bool use_target)
-{
-    m_target_distance = ((use_target)?(max(m_target_distance, 1.f)):(.0f));
-}
-
-//-----------------------------------------------------------------------------
-//camera manipulation Functions
-//--
-void Camera::SetPosition(vec3 pos, bool keep_target)
-{
-    if (keep_target)
-        SetView(pos, GetTarget(), GetUp());
-    else
-        SetView(GetView() * mat4::translate(m_position - pos));
-    m_position = pos;
-}
-
-void Camera::SetTarget(vec3 target, vec3 up)
-{
-    SetView(m_position, target, up);
-}
-
-void Camera::SetRotation(vec3 rot)
-{
-    SetView(m_position, rot);
-}
-
-void Camera::SetRotation(quat rot)
-{
-    SetView(m_position, rot);
-}
-
-//--
-vec3 Camera::GetPosition() const
-{
-    return m_position;
-}
-
-vec3 Camera::GetTarget() const
-{
-    return m_position + (inverse(m_view_matrix) * vec4(0.f, 0.f, -max(m_target_distance, 1.f), 0.f)).xyz;
-}
-
-vec3 Camera::GetUp() const
-{
-    return (inverse(m_view_matrix) * vec4(0.f, 1.f, 0.f, 0.f)).xyz;
-}
-
-vec3 Camera::GetRotationEuler() const
-{
-    return vec3::toeuler_zyx(GetRotation());
-}
-
-quat Camera::GetRotation() const
-{
-    return quat(inverse(mat3(m_view_matrix)));
-}
-
-// Calculate the frustum height at a given distance from the camera.
-float Camera::GetFrustumHeightAtDistance(float distance, float fov) const
-{
-    return 2.f * distance * lol::tan(fov * .5f);
-}
-
-// Calculate the FOV needed to get a given frustum height at a given distance.
-float Camera::GetFOVForHeightAndDistance(float distance, float height) const
-{
-    return 2.f * lol::atan(height * .5f / distance);
-}
-
-void Camera::tick_game(float seconds)
-{
-    WorldEntity::tick_game(seconds);
-}
-
-void Camera::tick_draw(float seconds, Scene &scene)
-{
-    WorldEntity::tick_draw(seconds, scene);
-}
-
-} /* namespace lol */
-
diff --git a/src/camera.h b/src/camera.h
deleted file mode 100644
index 7771c5b0..00000000
--- a/src/camera.h
+++ /dev/null
@@ -1,110 +0,0 @@
-//
-//  Lol Engine
-//
-//  Copyright © 2010—2018 Sam Hocevar <sam@hocevar.net>
-//
-//  Lol Engine is free software. It comes without any warranty, to
-//  the extent permitted by applicable law. You can redistribute it
-//  and/or modify it under the terms of the Do What the Fuck You Want
-//  to Public License, Version 2, as published by the WTFPL Task Force.
-//  See http://www.wtfpl.net/ for more details.
-//
-
-#pragma once
-
-//
-// The Camera class
-// ----------------
-//
-
-#include <lol/math/matrix.h>
-
-#include "engine/worldentity.h"
-
-namespace lol
-{
-
-class Camera : public WorldEntity
-{
-public:
-    Camera();
-    ~Camera();
-
-    std::string GetName() const { return "<camera>"; }
-
-    //View functions
-    void SetView(mat4 const &view);
-    void SetView(vec3 eye, vec3 target, vec3 up);
-    void SetView(vec3 pos, vec3 rot);
-    void SetView(vec3 pos, quat rot);
-
-    mat4 GetView() const;
-
-    //Projections functions
-//private:
-    void SetProjection(mat4 const &proj);
-public:
-    void SetProjection(float fov, float near, float far);
-    void SetProjection(float fov, float near, float far, float screen_size, float screen_ratio);
-
-    mat4 GetProjection() const;
-
-    //Projections manipulation functions
-    void SetFov(float fov);
-    void SetScreenInfos(float screen_size);
-    void SetScreenInfos(float screen_size, float screen_ratio);
-    void SetDrawInfos(float far);
-    void SetDrawInfos(float near, float far);
-    void SetScreenScale(vec2 scale);
-    void UseShift(bool should_shift);
-    void UseTarget(bool use_target);
-
-    float GetFov() const         { return m_fov; }
-    float GetScreenSize() const  { return m_screen_size; }
-    float GetScreenRatio() const { return m_screen_ratio; }
-    float GetNear() const        { return m_near; }
-    float GetFar() const         { return m_far; }
-    vec2  GetScreenScale() const { return m_screen_scale; }
-    bool  IsShifted() const      { return m_is_shifted; }
-    bool  IsTargeting() const    { return (m_target_distance != .0f); }
-
-    //camera manipulation Functions
-    void SetPosition(vec3 pos, bool keep_target=false);
-    void SetTarget(vec3 target, vec3 up);
-    void SetRotation(vec3 rot);
-    void SetRotation(quat rot);
-
-    vec3 GetPosition() const;
-    vec3 GetTarget() const;
-    vec3 GetUp() const;
-    vec3 GetRotationEuler() const;
-    quat GetRotation() const;
-
-    //Convenience functions
-    float GetFrustumHeightAtDistance(float distance, float fov) const;
-    float GetFOVForHeightAndDistance(float distance, float height) const;
-
-protected:
-    virtual void tick_game(float seconds);
-    virtual void tick_draw(float seconds, Scene &scene);
-
-//private:
-public:
-    //Work datas
-    mat4    m_view_matrix;
-    mat4    m_proj_matrix;
-
-    //Datas used to create above matrix
-    float   m_target_distance;
-    float   m_fov;
-    float   m_screen_size;
-    float   m_screen_ratio;
-    float   m_near;
-    float   m_far;
-    vec2    m_screen_scale;
-    bool    m_is_shifted;
-    bool    m_fix_up;
-};
-
-} /* namespace lol */
-
diff --git a/src/commandstack.h b/src/commandstack.h
deleted file mode 100644
index 187474d2..00000000
--- a/src/commandstack.h
+++ /dev/null
@@ -1,88 +0,0 @@
-//
-// Lol Engine
-//
-// Copyright: (c) 2009-2013 Benjamin "Touky" Huet <huet.benjamin@gmail.com>
-//            (c) 2010-2013 Sam Hocevar <sam@hocevar.net>
-//   This program is free software; you can redistribute it and/or
-//   modify it under the terms of the Do What The Fuck You Want To
-//   Public License, Version 2, as published by Sam Hocevar. See
-//   http://www.wtfpl.net/ for more details.
-//
-
-#pragma once
-
-//
-// The CommandStack struct
-// ------------------
-//
-
-namespace lol
-{
-
-//Utility struct to convert command code to pseudo-bytecode
-struct CommandStack
-{
-private:
-    array<int, int, int>    m_commands;
-    array<float>            m_floats;
-    array<int>              m_ints;
-    int                     m_f_cur;
-    int                     m_i_cur;
-
-public:
-    //GET/SET exec
-    int GetCmdNb() { return m_commands.count(); }
-    int GetCmd(int i)
-    {
-        ASSERT(0 <= i && i < m_commands.count());
-        m_f_cur = m_commands[i].m2;
-        m_i_cur = m_commands[i].m3;
-        return m_commands[i].m1;
-    }
-
-    //cmd storage
-    void    AddCmd(int cmd) { m_commands.push(cmd, m_floats.count(), m_ints.count()); }
-
-    //GETTER
-    inline float   F()      { return m_floats[m_f_cur++]; }
-    inline int     I()      { return m_ints[m_i_cur++]; }
-    inline int     E()      { return I(); }
-    inline bool    B()      { return !!I(); }
-    inline vec2    V2()     { vec2  v(F());       v.y = F(); return v; }
-    inline vec3    V3()     { vec3  v(V2(), 0.f); v.z = F(); return v; }
-    inline vec4    V4()     { vec4  v(V3(), 0.f); v.w = F(); return v; }
-    inline ivec2   IV2()    { ivec2 v(I());       v.y = I(); return v; }
-    inline ivec3   IV3()    { ivec3 v(IV2(), 0);  v.z = I(); return v; }
-    inline ivec4   IV4()    { ivec4 v(IV3(), 0);  v.w = I(); return v; }
-
-    // Alternate getters
-    inline void    GetValue(float &f)   { f = F(); }
-    inline void    GetValue(int &i)     { i = I(); }
-    inline void    GetValue(bool &b)    { b = B(); }
-    inline void    GetValue(vec2 &v2)   { v2 = V2(); }
-    inline void    GetValue(vec3 &v3)   { v3 = V3(); }
-    inline void    GetValue(vec4 &v4)   { v4 = V4(); }
-    inline void    GetValue(ivec2 &iv2) { iv2 = IV2(); }
-    inline void    GetValue(ivec3 &iv3) { iv3 = IV3(); }
-    inline void    GetValue(ivec4 &iv4) { iv4 = IV4(); }
-    // For Safe Enum
-    template<class DEF> inline
-    void GetValue(SafeEnum<DEF> &i) { i = typename DEF::Type(I()); }
-
-    //SETTER
-    CommandStack &operator<<(int i)     { m_ints << i; return *this; }
-    CommandStack &operator<<(float f)   { m_floats << f; return *this; }
-    CommandStack &operator<<(bool b)    { return (*this << (int)b); }
-    CommandStack &operator<<(vec2 v)    { return (*this << v.x   << v.y); }
-    CommandStack &operator<<(vec3 v)    { return (*this << v.xy  << v.z); }
-    CommandStack &operator<<(vec4 v)    { return (*this << v.xyz << v.w); }
-    CommandStack &operator<<(ivec2 iv)  { return (*this << iv.x   << iv.y); }
-    CommandStack &operator<<(ivec3 iv)  { return (*this << iv.xy  << iv.z); }
-    CommandStack &operator<<(ivec4 iv)  { return (*this << iv.xyz << iv.w); }
-    // For Safe Enum
-    template<class DEF> inline
-    CommandStack &operator<<(SafeEnum<DEF> &i) { return *this << i.ToScalar(); }
-};
-
-} /* namespace lol */
-
diff --git a/src/data/Makefile.am b/src/data/Makefile.am
deleted file mode 100644
index 4d328c1c..00000000
--- a/src/data/Makefile.am
+++ /dev/null
@@ -1,5 +0,0 @@
-
-include $(top_srcdir)/build/autotools/common.am
-
-SUBDIRS = font
-
diff --git a/src/data/font/Makefile.am b/src/data/font/Makefile.am
deleted file mode 100644
index 8883788d..00000000
--- a/src/data/font/Makefile.am
+++ /dev/null
@@ -1,15 +0,0 @@
-
-include $(top_srcdir)/build/autotools/common.am
-
-EXTRA_DIST += ascii.png
-
-if LOL_USE_CACA
-all: ascii.png
-
-ascii.png:
-	../../../tools/make-font | convert tga:- $@
-
-#clean:
-#	rm -f ascii.png
-endif
-
diff --git a/src/data/font/ascii.png b/src/data/font/ascii.png
deleted file mode 100644
index ff79fe9c4bdbb5812c272ec0e310097ec4f074f0..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 4836
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
Z-Jbpbgb})K(OUwZ_9K0bng<Rq{{?B-AH)Cv

diff --git a/src/debug/fps.cpp b/src/debug/fps.cpp
deleted file mode 100644
index 3870d3b6..00000000
--- a/src/debug/fps.cpp
+++ /dev/null
@@ -1,111 +0,0 @@
-//
-//  Lol Engine
-//
-//  Copyright © 2010—2019 Sam Hocevar <sam@hocevar.net>
-//
-//  Lol Engine is free software. It comes without any warranty, to
-//  the extent permitted by applicable law. You can redistribute it
-//  and/or modify it under the terms of the Do What the Fuck You Want
-//  to Public License, Version 2, as published by the WTFPL Task Force.
-//  See http://www.wtfpl.net/ for more details.
-//
-
-#include <lol/engine-internal.h>
-
-#include <cstdio>
-
-#include "loldebug.h"
-
-namespace lol
-{
-
-/*
- * DebugFps implementation class
- */
-
-class DebugFpsData
-{
-    friend class DebugFps;
-
-private:
-    Text *lines[5];
-};
-
-/*
- * Public DebugFps class
- */
-
-DebugFps::DebugFps(int x, int y)
-  : data(new DebugFpsData())
-{
-#if 0
-    for (int i = 0; i < 5; i ++)
-    {
-        data->lines[i] = new Text("", "data/font/ascii.png");
-        data->lines[i]->SetPos(ivec3(x, y + (i ? 8 : 0) + 16 * i, 0));
-        Ticker::Ref(data->lines[i]);
-    }
-#else
-    data->lines[0] = new Text("", "data/font/ascii.png");
-    data->lines[0]->SetPos(vec3(ivec3(x, y, 1)));
-    Ticker::Ref(data->lines[0]);
-#endif
-}
-
-void DebugFps::tick_game(float seconds)
-{
-    entity::tick_game(seconds);
-
-    char buf[1024];
-
-#if 0
-    sprintf(buf, "%2.2f fps (%i)",
-            1.0f / Profiler::GetAvg(Profiler::STAT_TICK_FRAME),
-            Ticker::GetFrameNum());
-    data->lines[0]->SetText(buf);
-
-    sprintf(buf, "Game  % 7.2f % 7.2f",
-            1e3f * Profiler::GetAvg(Profiler::STAT_TICK_GAME),
-            1e3f * Profiler::GetMax(Profiler::STAT_TICK_GAME));
-    data->lines[1]->SetText(buf);
-
-    sprintf(buf, "Draw  % 7.2f % 7.2f",
-            1e3f * Profiler::GetAvg(Profiler::STAT_TICK_DRAW),
-            1e3f * Profiler::GetMax(Profiler::STAT_TICK_DRAW));
-    data->lines[2]->SetText(buf);
-
-    sprintf(buf, "Blit  % 7.2f % 7.2f",
-            1e3f * Profiler::GetAvg(Profiler::STAT_TICK_BLIT),
-            1e3f * Profiler::GetMax(Profiler::STAT_TICK_BLIT));
-    data->lines[3]->SetText(buf);
-
-    sprintf(buf, "Frame % 7.2f % 7.2f",
-            1e3f * Profiler::GetAvg(Profiler::STAT_TICK_FRAME),
-            1e3f * Profiler::GetMax(Profiler::STAT_TICK_FRAME));
-    data->lines[4]->SetText(buf);
-#else
-    sprintf(buf, "%2.2f/%2.2f/%2.2f/%2.2f %2.2f fps (%i) %2.2f",
-            1e3f * Profiler::GetAvg(Profiler::STAT_TICK_GAME),
-            1e3f * Profiler::GetAvg(Profiler::STAT_TICK_DRAW),
-            1e3f * Profiler::GetAvg(Profiler::STAT_TICK_BLIT),
-            1e3f * Profiler::GetAvg(Profiler::STAT_TICK_FRAME),
-            1.0f / Profiler::GetAvg(Profiler::STAT_TICK_FRAME),
-            Ticker::GetFrameNum(),
-            1e3f * Profiler::GetAvg(Profiler::STAT_USER_00));
-    data->lines[0]->SetText(buf);
-#endif
-}
-
-DebugFps::~DebugFps()
-{
-#if 0
-    for (int i = 0; i < 5; i ++)
-        Ticker::Unref(data->lines[i]);
-#else
-    Ticker::Unref(data->lines[0]);
-#endif
-    delete data;
-}
-
-} /* namespace lol */
-
diff --git a/src/debug/fps.h b/src/debug/fps.h
deleted file mode 100644
index 1a361d2d..00000000
--- a/src/debug/fps.h
+++ /dev/null
@@ -1,41 +0,0 @@
-//
-//  Lol Engine
-//
-//  Copyright © 2010—2019 Sam Hocevar <sam@hocevar.net>
-//
-//  Lol Engine is free software. It comes without any warranty, to
-//  the extent permitted by applicable law. You can redistribute it
-//  and/or modify it under the terms of the Do What the Fuck You Want
-//  to Public License, Version 2, as published by the WTFPL Task Force.
-//  See http://www.wtfpl.net/ for more details.
-//
-
-#pragma once
-
-//
-// The DebugFps class
-// ------------------
-//
-
-#include "engine/entity.h"
-
-namespace lol
-{
-
-class DebugFpsData;
-
-class DebugFps : public entity
-{
-public:
-    DebugFps(int x, int y);
-    virtual ~DebugFps();
-
-protected:
-    virtual void tick_game(float seconds);
-
-private:
-    DebugFpsData *data;
-};
-
-} /* namespace lol */
-
diff --git a/src/debug/lines.cpp b/src/debug/lines.cpp
deleted file mode 100644
index 72c508a9..00000000
--- a/src/debug/lines.cpp
+++ /dev/null
@@ -1,402 +0,0 @@
-//
-//  Lol Engine
-//
-//  Copyright © 2010—2019 Sam Hocevar <sam@hocevar.net>
-//
-//  Lol Engine is free software. It comes without any warranty, to
-//  the extent permitted by applicable law. You can redistribute it
-//  and/or modify it under the terms of the Do What the Fuck You Want
-//  to Public License, Version 2, as published by the WTFPL Task Force.
-//  See http://www.wtfpl.net/ for more details.
-//
-
-#include <lol/engine-internal.h>
-
-namespace lol
-{
-Debug::DrawContext::Data Debug::DrawContext::m_global = Debug::DrawContext::Data(vec4(1.f));
-
-typedef Debug::DrawContext       DC;
-typedef Debug::DrawContext::Data DCD;
-
-//Screen to world conversion
-vec3 Debug::WorldToScreen(vec3 pos)                 { return Debug::WorldToScreen(vec4(pos, 1.f)); }
-vec3 Debug::WorldToScreen(vec3 pos, mat4 view_proj) { return Debug::WorldToScreen(vec4(pos, 1.f), view_proj); }
-vec3 Debug::WorldToScreen(vec4 pos)
-{
-    Scene& scene = Scene::GetScene();
-    if (!scene.GetCamera())
-        return vec3::zero;
-    mat4 const view_proj = scene.GetCamera()->GetProjection() * scene.GetCamera()->GetView();
-    return Debug::WorldToScreen(pos, view_proj);
-}
-vec3 Debug::WorldToScreen(vec4 pos, mat4 view_proj)
-{
-    vec4 screen_pos = view_proj * pos;
-    return (screen_pos / screen_pos.w).xyz;
-}
-
-//--
-vec3 Debug::ScreenToWorld(vec2 pos, float z) { return Debug::ScreenToWorld(vec3(pos, z)); }
-vec3 Debug::ScreenToWorld(vec3 pos)
-{
-    Scene& scene = Scene::GetScene();
-    if (!scene.GetCamera())
-        return vec3::zero;
-    mat4 const inv_view_proj = inverse(scene.GetCamera()->GetProjection() * scene.GetCamera()->GetView());
-    return Debug::ScreenToWorld(pos, inv_view_proj);
-}
-vec3 Debug::ScreenToWorld(vec2 pos, mat4 inv_view_proj, float z) { return Debug::ScreenToWorld(vec3(pos, z), inv_view_proj); }
-vec3 Debug::ScreenToWorld(vec3 pos, mat4 inv_view_proj)
-{
-    vec4 screen_pos = inv_view_proj * vec4(pos, 1.f);
-    return (screen_pos / screen_pos.w).xyz;
-}
-vec3 Debug::ScreenToWorld(vec3 pos, mat4 view, mat4 proj)
-{
-    vec4 screen_pos = inverse(proj) * vec4(pos, 1.f);
-    return (inverse(view) * (screen_pos / screen_pos.w)).xyz;
-}
-
-//Draw stuff in World
-//-- LINE: 3D -2D - 3D_to_2D --------------------------------------------------
-
-//Root func
-void Debug::DrawLine(vec3 a, vec3 b, DCD data)
-{
-    Scene::GetScene().AddLine(a, b, data.m_color, data.m_duration, data.m_mask);
-}
-void Debug::DrawLine(vec2 a, vec3 b, DCD data, float az)           { DrawLine(vec3(a, az), b, data); }
-void Debug::DrawLine(vec2 a, vec2 b, DCD data, float az, float bz) { DrawLine(vec3(a, az), vec3(b, bz), data); }
-void Debug::DrawLine(vec3 a, vec3 b)                               { DrawLine(a, b, DC::GetGlobalData()); }
-void Debug::DrawLine(vec2 a, vec3 b, float az)                     { DrawLine(a, b, DC::GetGlobalData(), az); }
-void Debug::DrawLine(vec2 a, vec2 b, float az, float bz)           { DrawLine(a, b, DC::GetGlobalData(), az, bz); }
-
-//-- GIZMO --------------------------------------------------------------------
-void Debug::DrawGizmo(vec3 pos, vec3 x, vec3 y, vec3 z, float size)
-{
-    Debug::DrawLine(pos, pos + x * size, Color::red);
-    Debug::DrawLine(pos, pos + y * size, Color::green);
-    Debug::DrawLine(pos, pos + z * size, Color::blue);
-}
-void Debug::DrawGizmo(vec2 pos, vec3 x, vec3 y, vec3 z, float size, float posz)
-{
-    Debug::DrawLine(pos, pos + x.xy * size, Color::red, posz, posz + x.z * size);
-    Debug::DrawLine(pos, pos + y.xy * size, Color::green, posz, posz + y.z * size);
-    Debug::DrawLine(pos, pos + z.xy * size, Color::blue, posz, posz + z.z * size);
-}
-
-//-- GRID ---------------------------------------------------------------------
-void Debug::DrawGrid(vec3 pos, vec3 x, vec3 y, vec3 z, float size, bool draw_3d)
-{
-    float seg_sz = DC::GetGlobalData().m_segment_size;
-    int seg_nb = lol::max((int)(size / seg_sz), 1);
-    seg_sz = size / (float)seg_nb;
-
-    //Draw Gizmo
-    Debug::DrawGizmo(pos, x, y, z, size);
-    Debug::DrawLine(pos, pos - x * size, Color::gray);
-    Debug::DrawLine(pos, pos - y * size, Color::gray);
-    Debug::DrawLine(pos, pos - z * size, Color::gray);
-
-    //grid
-    for (float i = (float)-seg_nb; i <= seg_nb; i++)
-    {
-        if (i != 0)
-        {
-            float iter = seg_sz * ((float)i);
-            Debug::DrawLine(vec3(-size, 0, iter), vec3(size, 0, iter), Color::dark_gray);
-            Debug::DrawLine(vec3(iter, 0, -size), vec3(iter, 0, size), Color::dark_gray);
-
-            if (draw_3d)
-            {
-                Debug::DrawLine(vec3(0, -size, iter), vec3(0, size, iter), Color::dark_gray);
-                Debug::DrawLine(vec3(0, iter, -size), vec3(0, iter, size), Color::dark_gray);
-
-                Debug::DrawLine(vec3(-size, iter, 0), vec3(size, iter, 0), Color::dark_gray);
-                Debug::DrawLine(vec3(iter, -size, 0), vec3(iter, size, 0), Color::dark_gray);
-            }
-        }
-    }
-
-}
-
-//-- ARROW: 3D -2D - 3D_to_2D -------------------------------------------------
-void Debug::DrawArrow(vec3 a, vec3 b, vec2 s)                     { Debug::DrawArrow(a, b, vec3(s.x, s.y, s.y)); }
-void Debug::DrawArrow(vec2 a, vec3 b, vec2 s, float az)           { Debug::DrawArrow(a, b.xy, vec3(s.x, s.y, s.y), az, b.z); }
-void Debug::DrawArrow(vec2 a, vec2 b, vec2 s, float az, float bz) { Debug::DrawArrow(a, b, vec3(s.x, s.y, s.y), az, bz); }
-void Debug::DrawArrow(vec3 a, vec3 b, vec3 s)                     { Debug::DrawArrow(a, b,    vec3(s.x, s.y, s.y), DC::GetGlobalData()); }
-void Debug::DrawArrow(vec2 a, vec3 b, vec3 s, float az)           { Debug::DrawArrow(a, b.xy, vec3(s.x, s.y, s.y), DC::GetGlobalData(), az, b.z); }
-void Debug::DrawArrow(vec2 a, vec2 b, vec3 s, float az, float bz) { Debug::DrawArrow(a, b,    vec3(s.x, s.y, s.y), DC::GetGlobalData(), az, bz); }
-void Debug::DrawArrow(vec3 a, vec3 b, vec3 s, DCD data)
-{
-    vec3 z = s.x * normalize(b - a);
-    vec3 x = s.z * orthonormal(b - a);
-    vec3 y = s.y * cross(normalize(x), normalize(z));
-
-    Debug::DrawLine(a, b, data);
-    Debug::DrawLine(b, b - z + x, data);
-    Debug::DrawLine(b, b - z - x, data);
-    Debug::DrawLine(b, b - z + y, data);
-    Debug::DrawLine(b, b - z - y, data);
-
-    Debug::DrawLine(b - z + x, b - z + y, data);
-    Debug::DrawLine(b - z + x, b - z - y, data);
-    Debug::DrawLine(b - z - x, b - z + y, data);
-    Debug::DrawLine(b - z - x, b - z - y, data);
-
-    Debug::DrawLine(b - z + x, b - z - x, data);
-    Debug::DrawLine(b - z + y, b - z - y, data);
-}
-void Debug::DrawArrow(vec2 a, vec3 b, vec3 s, DCD data, float az)
-{
-    vec3 bn = Debug::WorldToScreen(b);
-    DrawArrow(a, bn.xy, s, data, az, bn.z);
-}
-void Debug::DrawArrow(vec2 a, vec2 b, vec3 s, DCD data, float az, float bz)
-{
-    vec3 an = vec3(a, az);
-    vec3 bn = vec3(b, bz);
-    vec3 z = s.x * normalize(bn - an);
-    vec3 x = s.z * orthonormal(bn - an);
-    vec3 y = s.y * cross(normalize(x), normalize(z));
-
-    Debug::DrawLine(a, b, data, az, bz);
-    Debug::DrawLine(b, b - (z + x).xy, data, bz, bz - (z + x).z);
-    Debug::DrawLine(b, b - (z - x).xy, data, bz, bz - (z - x).z);
-    Debug::DrawLine(b, b - (z + y).xy, data, bz, bz - (z + y).z);
-    Debug::DrawLine(b, b - (z - y).xy, data, bz, bz - (z - y).z);
-
-    Debug::DrawLine(b - (z + x).xy, b - (z + y).xy, data, bz - (z + x).z, bz - (z + y).z);
-    Debug::DrawLine(b - (z + x).xy, b - (z - y).xy, data, bz - (z + x).z, bz - (z - y).z);
-    Debug::DrawLine(b - (z - x).xy, b - (z + y).xy, data, bz - (z - x).z, bz - (z + y).z);
-    Debug::DrawLine(b - (z - x).xy, b - (z - y).xy, data, bz - (z - x).z, bz - (z - y).z);
-
-    Debug::DrawLine(b - (z + x).xy, b - (z - x).xy, data, bz - (z + x).z, bz - (z - x).z);
-    Debug::DrawLine(b - (z + y).xy, b - (z - y).xy, data, bz - (z + y).z, bz - (z - y).z);
-}
-
-//-- BOX: 3D -2D - 3D_to_2D ---------------------------------------------------
-void Debug::DrawBox(box3 a)                           { Debug::DrawBox(a.aa, a.bb, DC::GetGlobalData()); }
-void Debug::DrawBox(box2 a)                           { Debug::DrawBox(a.aa, a.bb, DC::GetGlobalData()); }
-void Debug::DrawBox(box3 a, DCD data)                 { Debug::DrawBox(a.aa, a.bb, data); }
-void Debug::DrawBox(box2 a, DCD data)                 { Debug::DrawBox(a.aa, a.bb, data); }
-void Debug::DrawBox(vec3 a, vec3 b)                   { Debug::DrawBox(a, b, DC::GetGlobalData()); }
-void Debug::DrawBox(vec2 a, vec2 b)                   { Debug::DrawBox(a, b, DC::GetGlobalData()); }
-void Debug::DrawBox(vec2 a, float s)                  { Debug::DrawBox(a, s, DC::GetGlobalData()); }
-void Debug::DrawBox(vec3 a, vec3 b, DCD data)         { Debug::DrawBox(a, b, mat4::identity, data); }
-void Debug::DrawBox(vec2 a, vec2 b, DCD data)         { Debug::DrawBox(a, b, mat2::identity, data); }
-void Debug::DrawBox(vec2 a, float s, DCD data)        { Debug::DrawBox(a, s, mat2::identity, data); }
-void Debug::DrawBox(box3 a, mat4 transform)           { Debug::DrawBox(a.aa, a.bb, transform, DC::GetGlobalData()); }
-void Debug::DrawBox(box2 a, mat2 transform)           { Debug::DrawBox(a.aa, a.bb, transform, DC::GetGlobalData()); }
-void Debug::DrawBox(box3 a, mat4 transform, DCD data) { Debug::DrawBox(a.aa, a.bb, transform, data); }
-void Debug::DrawBox(box2 a, mat2 transform, DCD data) { Debug::DrawBox(a.aa, a.bb, transform, data); }
-void Debug::DrawBox(vec3 a, vec3 b, mat4 transform)   { Debug::DrawBox(a, b, transform, DC::GetGlobalData()); }
-void Debug::DrawBox(vec2 a, vec2 b, mat2 transform)   { Debug::DrawBox(a, b, transform, DC::GetGlobalData()); }
-void Debug::DrawBox(vec2 a, float s, mat2 transform)  { Debug::DrawBox(a, s, transform, DC::GetGlobalData()); }
-void Debug::DrawBox(vec3 a, vec3 b, mat4 transform, DCD data)
-{
-    vec4 v[8];
-    for (int i = 0; i < 8; i++)
-    {
-        v[i].x = i & 1 ? a.x : b.x;
-        v[i].y = i & 2 ? a.y : b.y;
-        v[i].z = i & 4 ? a.z : b.z;
-        v[i].w = 1.f;
-    }
-
-    for (int i = 0; i < 4; i++)
-    {
-        int j = ((i & 1) << 1) | ((i >> 1) ^ 1);
-
-        Debug::DrawLine((transform * v[i]).xyz,     (transform * v[i + 4]).xyz, data);
-        Debug::DrawLine((transform * v[i]).xyz,     (transform * v[j]).xyz,     data);
-        Debug::DrawLine((transform * v[i + 4]).xyz, (transform * v[j + 4]).xyz, data);
-    }
-}
-void Debug::DrawBox(vec2 a, vec2 b, mat2 transform, DCD data)
-{
-    vec2 v[4];
-    v[0] = a;
-    v[1] = vec2(a.x, b.y);
-    v[2] = b;
-    v[3] = vec2(b.x, a.y);
-
-    Debug::DrawLine((transform * v[0]).xy, (transform * v[1]).xy, data);
-    Debug::DrawLine((transform * v[1]).xy, (transform * v[2]).xy, data);
-    Debug::DrawLine((transform * v[2]).xy, (transform * v[3]).xy, data);
-    Debug::DrawLine((transform * v[3]).xy, (transform * v[0]).xy, data);
-}
-void Debug::DrawBox(vec2 a, float s, mat2 transform, DCD data)
-{
-    vec2 b = s * vec2(1.f, Scene::GetScene(0).get_renderer()->xy_ratio());
-    Debug::DrawBox(a - b, a + b, transform, data);
-}
-
-//-- CIRCLE -------------------------------------------------------------------
-void Debug::DrawCircle(vec2 a, float s)        { Debug::DrawCircle(a, s * vec2(1.f, Scene::GetScene(0).get_renderer()->xy_ratio()), DC::GetGlobalData()); }
-void Debug::DrawCircle(vec3 a, vec3 n)         { Debug::DrawCircle(a, n, DC::GetGlobalData()); }
-void Debug::DrawCircle(vec2 a, vec2 s)         { Debug::DrawCircle(a, s * vec2(1.f, Scene::GetScene(0).get_renderer()->xy_ratio()), DC::GetGlobalData()); }
-void Debug::DrawCircle(vec3 a, vec3 x, vec3 y) { Debug::DrawCircle(a, x, y, DC::GetGlobalData()); }
-void Debug::DrawCircle(vec2 a, vec2 x, vec2 y) { Debug::DrawCircle(a, x, y, DC::GetGlobalData()); }
-void Debug::DrawCircle(vec3 a, vec3 n, DCD data)
-{
-    vec3 x = orthogonal(n);
-    vec3 y = cross(normalize(n), normalize(x)) * length(n);
-    DrawCircle(a, x, y, data);
-}
-void Debug::DrawCircle(vec2 a, vec2 s, DCD data)
-{
-    vec2 x = vec2::axis_x * s.x;
-    vec2 y = vec2::axis_y * s.y;
-    DrawCircle(a, x, y, data);
-}
-//--
-void Debug::DrawCircle(vec3 a, vec3 x, vec3 y, DCD data)
-{
-    float size = F_PI * 2.f * lol::max(length(x), length(y));
-    int segment_nb = lol::max(1, (int)((size * .25f) / data.m_segment_size));
-    for (int i = 0; i < segment_nb; i++)
-    {
-        float a0 = (((float)i)     / (float)segment_nb) * F_PI_2;
-        float a1 = (((float)i + 1) / (float)segment_nb) * F_PI_2;
-        vec2 p0 = vec2(lol::cos(a0), lol::sin(a0));
-        vec2 p1 = vec2(lol::cos(a1), lol::sin(a1));
-
-        Debug::DrawLine(a + p0.x *  x + p0.y *  y, a + p1.x *  x + p1.y *  y, data);
-        Debug::DrawLine(a + p0.x * -x + p0.y * -y, a + p1.x * -x + p1.y * -y, data);
-        Debug::DrawLine(a + p0.x *  x + p0.y * -y, a + p1.x *  x + p1.y * -y, data);
-        Debug::DrawLine(a + p0.x * -x + p0.y *  y, a + p1.x * -x + p1.y *  y, data);
-    }
-}
-//--
-void Debug::DrawCircle(vec2 a, vec2 x, vec2 y, DCD data)
-{
-    float size = F_PI * 2.f * lol::max(length(x), length(y));
-    int segment_nb = lol::max(1, (int)((size * .25f) / data.m_segment_size));
-    for (int i = 0; i < segment_nb; i++)
-    {
-        float a0 = (((float)i)     / (float)segment_nb) * F_PI_2;
-        float a1 = (((float)i + 1) / (float)segment_nb) * F_PI_2;
-        vec2 p0 = vec2(lol::cos(a0), lol::sin(a0));
-        vec2 p1 = vec2(lol::cos(a1), lol::sin(a1));
-
-        Debug::DrawLine(a + p0.x *  x + p0.y *  y, a + p1.x *  x + p1.y *  y, data);
-        Debug::DrawLine(a + p0.x * -x + p0.y * -y, a + p1.x * -x + p1.y * -y, data);
-        Debug::DrawLine(a + p0.x *  x + p0.y * -y, a + p1.x *  x + p1.y * -y, data);
-        Debug::DrawLine(a + p0.x * -x + p0.y *  y, a + p1.x * -x + p1.y *  y, data);
-    }
-}
-
-//-- SPHERE -------------------------------------------------------------------
-void Debug::DrawSphere(vec3 a, float s)                { Debug::DrawSphere(a, s, DC::GetGlobalData()); }
-void Debug::DrawSphere(vec3 a, float s, DCD data)      { Debug::DrawSphere(a, vec3::axis_x * s, vec3::axis_y * s, vec3::axis_z * s, data); }
-void Debug::DrawSphere(vec3 a, vec3 x, vec3 y, vec3 z) { Debug::DrawSphere(a, x, y, z, DC::GetGlobalData()); }
-void Debug::DrawSphere(vec3 a, vec3 x, vec3 y, vec3 z, DCD data)
-{
-    Debug::DrawCircle(a, x, y, data);
-    Debug::DrawCircle(a, x, (y + z) * .707f, data);
-    Debug::DrawCircle(a, x, (y - z) * .707f, data);
-    Debug::DrawCircle(a, z, x, data);
-    Debug::DrawCircle(a, z, (x + y) * .707f, data);
-    Debug::DrawCircle(a, z, (x - y) * .707f, data);
-    Debug::DrawCircle(a, y, z, data);
-    Debug::DrawCircle(a, y, (z + x) * .707f, data);
-    Debug::DrawCircle(a, y, (z - x) * .707f, data);
-}
-
-//-- CAPSULE ------------------------------------------------------------------
-void Debug::DrawCapsule(vec3 a, float s, vec3 h)                { Debug::DrawCapsule(a, s, h, DC::GetGlobalData()); }
-void Debug::DrawCapsule(vec3 a, vec3 x, vec3 y, vec3 z, vec3 h) { Debug::DrawCapsule(a, x, y, z, h, DC::GetGlobalData()); }
-void Debug::DrawCapsule(vec3 a, float s, vec3 h, DCD data)
-{
-    vec3 x = orthonormal(h) * s;
-    vec3 y = cross(normalize(h), normalize(x)) * s;
-    Debug::DrawCapsule(a, x, y, normalize(h) * s, h, data);
-}
-//--
-void Debug::DrawCapsule(vec3 a, vec3 x, vec3 y, vec3 z, vec3 h, DCD data)
-{
-    float size = F_PI * 2.f * lol::max(length(x), length(y));
-    int segment_nb = lol::max(1, (int)((size * .25f) / data.m_segment_size));
-    for (int i = -1; i < 2; i += 2)
-    {
-        vec3 b = a + h * .5f * (float)i;
-        vec3 c = a - h * .5f * (float)i;
-        Debug::DrawCircle(b, x, y, data);
-        Debug::DrawLine(b + x * (float)i, c + x * (float)i, data);
-        Debug::DrawLine(b + y * (float)i, c + y * (float)i, data);
-        for (int j = 0; j < segment_nb; j++)
-        {
-            float a0 = (((float)j)     / (float)segment_nb) * F_PI_2;
-            float a1 = (((float)j + 1) / (float)segment_nb) * F_PI_2;
-            vec2 p0 = vec2(lol::cos(a0), lol::sin(a0));
-            vec2 p1 = vec2(lol::cos(a1), lol::sin(a1));
-
-            Debug::DrawLine(b + p0.x *  x + p0.y * z * (float)i, b + p1.x *  x + p1.y * z * (float)i, data);
-            Debug::DrawLine(b + p0.x * -x + p0.y * z * (float)i, b + p1.x * -x + p1.y * z * (float)i, data);
-            Debug::DrawLine(b + p0.x *  y + p0.y * z * (float)i, b + p1.x *  y + p1.y * z * (float)i, data);
-            Debug::DrawLine(b + p0.x * -y + p0.y * z * (float)i, b + p1.x * -y + p1.y * z * (float)i, data);
-        }
-    }
-}
-
-//-- VIEW PROJ ----------------------------------------------------------------
-void Debug::DrawViewProj(mat4 view, mat4 proj) { Debug::DrawViewProj(view, proj, DC::GetGlobalData()); }
-void Debug::DrawViewProj(mat4 view_proj)       { Debug::DrawViewProj(view_proj,  DC::GetGlobalData()); }
-void Debug::DrawViewProj(mat4 view, mat4 proj, DCD data)
-{
-    mat4 const view_proj = proj * view;
-
-    //Pos to center
-    vec3 p0 = (inverse(view) * vec4(vec3::zero, 1.f)).xyz;
-
-    //Near plane
-    mat4 const inv_view_proj = inverse(view_proj);
-    vec4 p[4] = { inv_view_proj * vec4(-1.f, 1.f, -1.f, 1.f),
-                  inv_view_proj * vec4( 1.f, 1.f, -1.f, 1.f),
-                  inv_view_proj * vec4( 1.f,-1.f, -1.f, 1.f),
-                  inv_view_proj * vec4(-1.f,-1.f, -1.f, 1.f) };
-    for (int i = 0; i < 4; i++)
-        p[i] = p[i] / p[i].w;
-
-    //Draw near
-    for (int i = 0; i < 4; i++)
-        Debug::DrawLine(p[i].xyz, p0, data);
-
-    Debug::DrawViewProj(view_proj, data);
-}
-
-//--
-void Debug::DrawViewProj(mat4 view_proj, DCD data)
-{
-    //Near plane
-    mat4 const inv_view_proj = inverse(view_proj);
-    vec4 p[8] = { inv_view_proj * vec4(-1.f, 1.f, 1.f, 1.f),
-                  inv_view_proj * vec4( 1.f, 1.f, 1.f, 1.f),
-                  inv_view_proj * vec4( 1.f,-1.f, 1.f, 1.f),
-                  inv_view_proj * vec4(-1.f,-1.f, 1.f, 1.f),
-                  inv_view_proj * vec4(-1.f, 1.f,-1.f, 1.f),
-                  inv_view_proj * vec4( 1.f, 1.f,-1.f, 1.f),
-                  inv_view_proj * vec4( 1.f,-1.f,-1.f, 1.f),
-                  inv_view_proj * vec4(-1.f,-1.f,-1.f, 1.f)
-                };
-    for (int i = 0; i < 8; i++)
-        p[i] = p[i] / p[i].w;
-
-    //Draw near
-    for (int i = 0; i < 4; i++)
-        Debug::DrawLine(p[i].xyz, p[(i + 1) % 4].xyz, data);
-    //Draw far
-    for (int i = 4; i < 8; i++)
-        Debug::DrawLine(p[i].xyz, p[(i - 4 + 1) % 4 + 4].xyz, data);
-    //Draw near to far
-    for (int i = 0; i < 4; i++)
-        Debug::DrawLine(p[i].xyz, p[i + 4].xyz, data);
-    //Draw diagonal
-    for (int i = 2; i < 6; i++)
-        Debug::DrawLine(p[i].xyz, p[i + ((i < 4)?(-2):(+2))].xyz, data);
-}
-
-} /* namespace lol */
-
diff --git a/src/debug/record.cpp b/src/debug/record.cpp
deleted file mode 100644
index f61d504f..00000000
--- a/src/debug/record.cpp
+++ /dev/null
@@ -1,107 +0,0 @@
-//
-//  Lol Engine
-//
-//  Copyright © 2010—2019 Sam Hocevar <sam@hocevar.net>
-//
-//  Lol Engine is free software. It comes without any warranty, to
-//  the extent permitted by applicable law. You can redistribute it
-//  and/or modify it under the terms of the Do What the Fuck You Want
-//  to Public License, Version 2, as published by the WTFPL Task Force.
-//  See http://www.wtfpl.net/ for more details.
-//
-
-#include <lol/engine-internal.h>
-
-#include <cstring>
-
-#if defined USE_PIPI
-#   include <pipi.h>
-#endif
-
-#include "loldebug.h"
-
-namespace lol
-{
-
-/*
- * DebugRecord implementation class
- */
-
-class DebugRecordData
-{
-    friend class DebugRecord;
-
-private:
-    std::string m_path;
-    ivec2 m_size;
-    int m_fps;
-#if defined USE_PIPI
-    pipi_sequence_t *m_sequence;
-#endif
-};
-
-/*
- * Public DebugRecord class
- */
-
-DebugRecord::DebugRecord(std::string const &path, float fps)
-  : m_data(new DebugRecordData())
-{
-    Ticker::StartRecording();
-
-    m_data->m_path = path;
-    m_data->m_size = ivec2::zero;
-    m_data->m_fps = (int)(fps + 0.5f);
-#if defined USE_PIPI
-    m_data->m_sequence = nullptr;
-#endif
-
-    m_drawgroup = tickable::group::draw::capture;
-}
-
-void DebugRecord::tick_game(float seconds)
-{
-    entity::tick_game(seconds);
-}
-
-void DebugRecord::tick_draw(float seconds, Scene &scene)
-{
-    entity::tick_draw(seconds, scene);
-
-    ivec2 size = Video::GetSize();
-
-    if (m_data->m_size != size)
-    {
-        m_data->m_size = size;
-
-#if defined USE_PIPI
-        if (m_data->m_sequence)
-            pipi_close_sequence(m_data->m_sequence);
-
-        m_data->m_sequence = pipi_open_sequence(m_data->m_path, size.x, size.y,
-                                                1 /* RGB */, m_data->m_fps,
-                                                1, 1, 60 * 1024 * 1024);
-#endif
-    }
-
-#if defined USE_PIPI
-    if (m_data->m_sequence)
-    {
-        uint32_t *buffer = new uint32_t[size.x * size.y];
-        Video::Capture(buffer);
-        pipi_feed_sequence(m_data->m_sequence, (uint8_t *)buffer,
-                           size.x, size.y);
-        delete[] buffer;
-    }
-#endif
-}
-
-DebugRecord::~DebugRecord()
-{
-    Ticker::StopRecording();
-
-    delete m_data;
-}
-
-} /* namespace lol */
-
diff --git a/src/debug/record.h b/src/debug/record.h
deleted file mode 100644
index b6136062..00000000
--- a/src/debug/record.h
+++ /dev/null
@@ -1,42 +0,0 @@
-//
-//  Lol Engine
-//
-//  Copyright © 2010—2019 Sam Hocevar <sam@hocevar.net>
-//
-//  Lol Engine is free software. It comes without any warranty, to
-//  the extent permitted by applicable law. You can redistribute it
-//  and/or modify it under the terms of the Do What the Fuck You Want
-//  to Public License, Version 2, as published by the WTFPL Task Force.
-//  See http://www.wtfpl.net/ for more details.
-//
-
-#pragma once
-
-//
-// The DebugRecord class
-// ---------------------
-//
-
-#include "engine/entity.h"
-
-namespace lol
-{
-
-class DebugRecordData;
-
-class DebugRecord : public entity
-{
-public:
-    DebugRecord(std::string const &path, float fps);
-    virtual ~DebugRecord();
-
-protected:
-    virtual void tick_game(float seconds);
-    virtual void tick_draw(float seconds, Scene &scene);
-
-private:
-    DebugRecordData *m_data;
-};
-
-} /* namespace lol */
-
diff --git a/src/debug/stats.cpp b/src/debug/stats.cpp
deleted file mode 100644
index 232b5575..00000000
--- a/src/debug/stats.cpp
+++ /dev/null
@@ -1,65 +0,0 @@
-//
-//  Lol Engine
-//
-//  Copyright © 2010—2019 Sam Hocevar <sam@hocevar.net>
-//
-//  Lol Engine is free software. It comes without any warranty, to
-//  the extent permitted by applicable law. You can redistribute it
-//  and/or modify it under the terms of the Do What the Fuck You Want
-//  to Public License, Version 2, as published by the WTFPL Task Force.
-//  See http://www.wtfpl.net/ for more details.
-//
-
-#include <lol/engine-internal.h>
-
-#include <cstdio>
-
-#include "loldebug.h"
-
-namespace lol
-{
-
-/*
- * DebugStats implementation class
- */
-
-class DebugStatsData
-{
-    friend class DebugStats;
-
-private:
-    FILE *fp;
-};
-
-/*
- * Public DebugStats class
- */
-
-DebugStats::DebugStats(char const *path)
-  : data(new DebugStatsData())
-{
-    data->fp = fopen(path, "w+");
-
-    m_gamegroup = tickable::group::game::stats;
-}
-
-void DebugStats::tick_game(float seconds)
-{
-    entity::tick_game(seconds);
-
-    fprintf(data->fp, "%i %f %f %f %f\n",
-            Ticker::GetFrameNum(),
-            Profiler::GetAvg(Profiler::STAT_TICK_GAME),
-            Profiler::GetAvg(Profiler::STAT_TICK_DRAW),
-            Profiler::GetAvg(Profiler::STAT_TICK_BLIT),
-            Profiler::GetAvg(Profiler::STAT_TICK_FRAME));
-}
-
-DebugStats::~DebugStats()
-{
-    fclose(data->fp);
-    delete data;
-}
-
-} /* namespace lol */
-
diff --git a/src/debug/stats.h b/src/debug/stats.h
deleted file mode 100644
index 538fbe03..00000000
--- a/src/debug/stats.h
+++ /dev/null
@@ -1,41 +0,0 @@
-//
-//  Lol Engine
-//
-//  Copyright © 2010—2019 Sam Hocevar <sam@hocevar.net>
-//
-//  Lol Engine is free software. It comes without any warranty, to
-//  the extent permitted by applicable law. You can redistribute it
-//  and/or modify it under the terms of the Do What the Fuck You Want
-//  to Public License, Version 2, as published by the WTFPL Task Force.
-//  See http://www.wtfpl.net/ for more details.
-//
-
-#pragma once
-
-//
-// The DebugStats class
-// --------------------
-//
-
-#include "engine/entity.h"
-
-namespace lol
-{
-
-class DebugStatsData;
-
-class DebugStats : public entity
-{
-public:
-    DebugStats(char const *path);
-    virtual ~DebugStats();
-
-protected:
-    virtual void tick_game(float seconds);
-
-private:
-    DebugStatsData *data;
-};
-
-} /* namespace lol */
-
diff --git a/src/easymesh/csgbsp.cpp b/src/easymesh/csgbsp.cpp
deleted file mode 100644
index 7c1efd8f..00000000
--- a/src/easymesh/csgbsp.cpp
+++ /dev/null
@@ -1,545 +0,0 @@
-//
-//  EasyMesh-Csg: The code belonging to CSG operations
-//
-//  Copyright © 2010—2019 Sam Hocevar <sam@hocevar.net>
-//            © 2010—2015 Benjamin "Touky" Huet <huet.benjamin@gmail.com>
-//
-//  Lol Engine is free software. It comes without any warranty, to
-//  the extent permitted by applicable law. You can redistribute it
-//  and/or modify it under the terms of the Do What the Fuck You Want
-//  to Public License, Version 2, as published by the WTFPL Task Force.
-//  See http://www.wtfpl.net/ for more details.
-//
-
-#include <lol/engine-internal.h>
-
-namespace lol
-{
-
-//--
-int CsgBsp::AddLeaf(int leaf_type, vec3 origin, vec3 normal, int above_idx)
-{
-    if (leaf_type > 2 || leaf_type < -1)
-        return -1;
-
-    if ((m_tree.count() == 0 && above_idx == -1) ||
-        (above_idx >= 0 &&
-            above_idx < m_tree.count() &&
-            leaf_type > LEAF_CURRENT &&
-            leaf_type < LEAF_ABOVE &&
-            m_tree[above_idx].m_leaves[leaf_type] == -1))
-    {
-        if (m_tree.count() != 0)
-            m_tree[above_idx].m_leaves[leaf_type] = (int32_t)m_tree.count();
-        m_tree.push(CsgBspLeaf(origin, normal, above_idx));
-        return m_tree.count() - 1;
-    }
-
-    return -1;
-}
-
-int CsgBsp::TestPoint(int leaf_idx, vec3 point)
-{
-    if (leaf_idx >= 0 && leaf_idx < m_tree.count())
-    {
-        vec3 p2o = point - m_tree[leaf_idx].m_origin;
-
-        if (length(p2o) < TestEpsilon::Get())
-            return LEAF_CURRENT;
-
-        float p2o_dot = dot(normalize(p2o), m_tree[leaf_idx].m_normal);
-
-        if (p2o_dot > TestEpsilon::Get())
-            return LEAF_FRONT;
-        else if (p2o_dot < -TestEpsilon::Get())
-            return LEAF_BACK;
-    }
-    return LEAF_CURRENT;
-}
-
-void CsgBsp::AddTriangleToTree(int const &tri_idx, vec3 const &tri_p0, vec3 const &tri_p1, vec3 const &tri_p2)
-{
-    //<Leaf_Id, v0, v1, v2>
-    array< int, vec3, vec3, vec3 > tri_to_process;
-    //<FW/BW, Leaf_Id, v0, v1, v2, twin_leaf>
-    array< int, int, vec3, vec3, vec3, int > Leaf_to_add;
-
-    //Tree is empty, so this leaf is the first
-    if (m_tree.count() == 0)
-    {
-        AddLeaf(LEAF_CURRENT, tri_p0, cross(normalize(tri_p1 - tri_p0), normalize(tri_p2 - tri_p1)), LEAF_CURRENT);
-        m_tree.last().m_tri_list.push(tri_idx, tri_p0, tri_p1, tri_p2);
-        return;
-    }
-
-    tri_to_process.reserve(20);
-    tri_to_process.push(0, tri_p0, tri_p1, tri_p2);
-
-    while (tri_to_process.count())
-    {
-        int leaf_idx = tri_to_process.last().m1;
-        vec3 v[3] = { tri_to_process.last().m2, tri_to_process.last().m3, tri_to_process.last().m4 };
-
-        int res_nb[3] = { 0, 0, 0 };
-        int res_side[3] = { -1, -1, -1 };
-
-        //Check where each point is located
-        for (int i = 0; i < 3; i++)
-        {
-            int result = TestPoint(leaf_idx, v[i]);
-            if (result != LEAF_CURRENT)
-            {
-                res_nb[result]++;
-                res_side[i] = result;
-            }
-        }
-
-        //Points are located on each sides, let's do the mumbo-jumbo
-        if (res_nb[LEAF_BACK] && res_nb[LEAF_FRONT])
-        {
-            //there are two intersections, no more.
-            vec3 isec_v[2] = { vec3(.0f), vec3(.0f) };
-            int isec_base = 0;
-            int isec_idx = 0;
-
-            for (int i = 0; i < 3; i++)
-            {
-                //vec3 ray = v[(i + 1) % 3] - v[i];
-
-                if (TestRayVsPlane(v[i], v[(i + 1) % 3],
-                                    m_tree[leaf_idx].m_origin, m_tree[leaf_idx].m_normal,
-                                    isec_v[isec_idx]))
-                    ++isec_idx;
-                else
-                    isec_base = i;
-            }
-
-            int v_idx0 = (isec_base == 1)?(1):(0);
-            int v_idx1 = (isec_base == 1)?(0):(1);
-            int leaf_type = res_side[(isec_base + 2) % 3];
-
-            tri_to_process.pop();
-
-#if 1
-            if (m_tree[leaf_idx].m_leaves[leaf_type] == LEAF_CURRENT)
-                Leaf_to_add.push(leaf_type, leaf_idx, v[((isec_base + 2) % 3)], isec_v[v_idx1], isec_v[v_idx0], -1);
-            else
-                tri_to_process.push(leaf_idx, v[((isec_base + 2) % 3)], isec_v[v_idx1], isec_v[v_idx0]);
-
-            if (m_tree[leaf_idx].m_leaves[1 - leaf_type] == LEAF_CURRENT)
-            {
-                Leaf_to_add.push(1 - leaf_type, leaf_idx, v[isec_base], v[((isec_base + 1) % 3)], isec_v[v_idx0], -1);
-                Leaf_to_add.push(1 - leaf_type, leaf_idx, v[isec_base], isec_v[v_idx0], isec_v[v_idx1], Leaf_to_add.count() - 1);
-            }
-            else
-            {
-                tri_to_process.push(m_tree[leaf_idx].m_leaves[1 - leaf_type], v[isec_base], v[((isec_base + 1) % 3)], isec_v[v_idx0]);
-                tri_to_process.push(m_tree[leaf_idx].m_leaves[1 - leaf_type], v[isec_base], isec_v[v_idx0], isec_v[v_idx1]);
-            }
-#else
-            vec3 new_v[9] = { v[((isec_base + 2) % 3)], isec_v[v_idx1],             isec_v[v_idx0],
-                                v[isec_base],             v[((isec_base + 1) % 3)],   isec_v[v_idx0],
-                                v[isec_base],             isec_v[v_idx0],             isec_v[v_idx1] };
-
-            //Error check : Skip the triangle where two points are on the same location.
-            //it fixes the problem of having an intersection with one of the isec-point being on one of the triangle vertices.
-            //(the problem being a very funny infinite loop)
-            for(int k = 0; k < 9; k += 3)
-            {
-                bool skip_tri = false;
-                for(int l = 0; l < 3; l++)
-                {
-                    if (length(new_v[k + l] - new_v[k + (l + 1) % 3]) < TestEpsilon::Get())
-                    {
-                        skip_tri = true;
-                        break;
-                    }
-                }
-
-                if (skip_tri)
-                    continue;
-
-                tri_to_process.push(0, new_v[k], new_v[k + 1], new_v[k + 2]);
-            }
-#endif
-        }
-        //All points are on one side, transfer to the next leaf
-        else if (res_nb[LEAF_BACK] || res_nb[LEAF_FRONT])
-        {
-            int new_leaf_type = ((res_nb[LEAF_FRONT])?(LEAF_FRONT):(LEAF_BACK));
-            int new_leaf = m_tree[leaf_idx].m_leaves[new_leaf_type];
-
-            //No leaf exist, so add a new one
-            if (new_leaf == LEAF_CURRENT)
-            {
-                tri_to_process.pop();
-                Leaf_to_add.push(new_leaf_type, leaf_idx, v[0], v[1], v[2], -1);
-            }
-            else
-                tri_to_process.last().m1 = new_leaf;
-        }
-        //All points are on the current leaf, add the tri_idx to the list of this leaf.
-        else
-        {
-            tri_to_process.pop();
-
-            bool already_exist = false;
-            for (int i = 0; !already_exist && i < m_tree[leaf_idx].m_tri_list.count(); i++)
-                already_exist = (m_tree[leaf_idx].m_tri_list[i].m1 == tri_idx);
-            if (!already_exist)
-                m_tree[leaf_idx].m_tri_list.push(tri_idx, tri_p0, tri_p1, tri_p2);
-        }
-    }
-
-    //Add all leaves to the tree.
-    for (int i = 0; i < Leaf_to_add.count(); i++)
-    {
-        //If we had it to an already existing leaf.
-        if (Leaf_to_add[i].m2 < m_tree.count() && m_tree[Leaf_to_add[i].m2].m_leaves[Leaf_to_add[i].m1] == LEAF_CURRENT)
-        {
-            AddLeaf(Leaf_to_add[i].m1, tri_p0, cross(normalize(tri_p1 - tri_p0), normalize(tri_p2 - tri_p1)), Leaf_to_add[i].m2);
-            m_tree.last().m_tri_list.push(tri_idx, tri_p0, tri_p1, tri_p2);
-        }
-
-        /*
-        if (Leaf_to_add[i].m6 == -1)
-        {
-            AddLeaf(Leaf_to_add[i].m1, tri_p0, cross(normalize(tri_p1 - tri_p0), normalize(tri_p2 - tri_p1)), Leaf_to_add[i].m2);
-            m_tree.last().m_tri_list.push(tri_idx, tri_p0, tri_p1, tri_p2);
-        }
-        else
-            m_tree[Leaf_to_add[i].m6].m_tri_list.push(tri_idx, tri_p0, tri_p1, tri_p2);
-        */
-    }
-}
-
-//return 0 when no split has been done.
-//return 1 when split has been done.
-//return -1 when error.
-int CsgBsp::TestTriangleToTree(vec3 const &tri_p0, vec3 const &tri_p1, vec3 const &tri_p2,
-                               //In order to easily build the actual vertices list afterward, this list stores each Vertices location and its source vertices & Alpha.
-                               //<Point_Loc, Src_V0, Src_V1, Alpha> as { Point_Loc = Src_V0 + (Src_V1 - Src_V0) * Alpha; }
-                               array< vec3, int, int, float > &vert_list,
-                               //This is the final triangle list : If Side_Status is LEAF_CURRENT, a new test will be done point by point.
-                               //<{IN|OUT}side_status, v0, v1, v2>
-                               array< int, int, int, int > &tri_list)
-{
-    //This list stores the current triangles to process.
-    //<Leaf_Id_List, v0, v1, v2, Should_Point_Test>
-    array< array< int >, int, int, int, int > tri_to_process;
-
-    //Tree is empty, ABORT !
-    if (m_tree.count() == 0)
-        return -1;
-
-    //Let's push the source vertices in here.
-    vert_list.push(tri_p0, -1, -1, .0f);
-    vert_list.push(tri_p1, -1, -1, .0f);
-    vert_list.push(tri_p2, -1, -1, .0f);
-
-    //Let's push the triangle in here.
-    tri_to_process.reserve(20);
-    tri_to_process.push( array< int >(), 0, 1, 2, 0);
-    tri_to_process.last().m1.push(0);
-
-    while (tri_to_process.count())
-    {
-        while (tri_to_process.count())
-        {
-            int leaf_idx = tri_to_process.last().m1.last();
-            int t[3] = { tri_to_process.last().m2,
-                            tri_to_process.last().m3,
-                            tri_to_process.last().m4 };
-            vec3 v[3] = { vert_list[t[0]].m1,
-                            vert_list[t[1]].m1,
-                            vert_list[t[2]].m1 };
-
-            int res_nb[3] = { 0, 0, 0 };
-            int res_side[3] = { -1, -1, -1 };
-            //Check where each point is located
-            for (int i = 0; i < 3; i++)
-            {
-                int result = TestPoint(leaf_idx, v[i]);
-                if (result != LEAF_CURRENT)
-                {
-                    res_nb[result]++;
-                    res_side[i] = result;
-                }
-            }
-
-            //Points are located on each sides, let's do the mumbo-jumbo
-            if (res_nb[LEAF_BACK] && res_nb[LEAF_FRONT])
-            {
-                //there are two intersections, no more.
-                vec3 isec_v[2] = { vec3(.0f), vec3(.0f) };
-                int isec_i[2] = { 0, 0 };
-                int new_v_idx[2] = { 0, 0 };
-                int isec_base = 0;
-
-                int i = 0;
-                for (; i < m_tree[leaf_idx].m_tri_list.count(); i++)
-                {
-                    if (TestTriangleVsTriangle(v[0], v[1], v[2],
-                                                m_tree[leaf_idx].m_tri_list[i].m2, m_tree[leaf_idx].m_tri_list[i].m3, m_tree[leaf_idx].m_tri_list[i].m4,
-                                                isec_v[0], isec_v[1]))
-                        break;
-                }
-
-                //There was no triangle intersection, the complex case.
-                if (i == m_tree[leaf_idx].m_tri_list.count())
-                {
-                    if (m_tree[leaf_idx].m_leaves[LEAF_FRONT] == LEAF_CURRENT &&
-                        m_tree[leaf_idx].m_leaves[LEAF_BACK] == LEAF_CURRENT &&
-                        tri_to_process.last().m1.count() == 1)
-                    {
-                        tri_list.push(LEAF_CURRENT, tri_to_process.last().m2, tri_to_process.last().m3, tri_to_process.last().m4);
-                        tri_to_process.pop();
-                    }
-                    else
-                    {
-                        tri_to_process.last().m1.pop();
-
-                        //Register the triangle as needing to intersect with Front & back leaves.
-                        if (m_tree[leaf_idx].m_leaves[LEAF_FRONT] != LEAF_CURRENT)
-                            tri_to_process.last().m1.push(m_tree[leaf_idx].m_leaves[LEAF_FRONT]);
-                        if (m_tree[leaf_idx].m_leaves[LEAF_BACK] != LEAF_CURRENT)
-                            tri_to_process.last().m1.push(m_tree[leaf_idx].m_leaves[LEAF_BACK]);
-                        //Mark the triangle as needing point by point test
-
-                        tri_to_process.last().m5 = 1;
-                    }
-                }
-                //there was an intersection, so let's split the triangle.
-                else
-                {
-                    //Get intersection on actual triangle sides.
-                    if (TestRayVsTriangleSide(v[0], v[1], v[2],
-                                                isec_v[0], isec_v[1],
-                                                isec_v[0], isec_i[0], isec_v[1], isec_i[1]))
-                    {
-                        {
-                            for(int k = 0; k < 2; k++)
-                            {
-                                if (isec_base == isec_i[k])
-                                    isec_base++;
-
-#if 1 //Skip point creation if it's on the same location a one of the triangle.
-                                bool skip_point = false;
-                                int l = 0;
-                                for(; l < 3; l++)
-                                {
-                                    if (length(v[l] - isec_v[k]) < TestEpsilon::Get())
-                                    {
-                                        skip_point = true;
-                                        new_v_idx[k] = t[l];
-                                        break;
-                                    }
-                                }
-
-                                if (skip_point)
-                                    continue;
-#endif
-                                new_v_idx[k] = vert_list.count();
-                                vec3 PmV0 = (isec_v[k] - vert_list[t[isec_i[k]]].m1);
-                                vec3 V1mV0 = (vert_list[t[(isec_i[k] + 1) % 3]].m1 - vert_list[t[isec_i[k]]].m1);
-                                float alpha = length(PmV0) / length(V1mV0);
-                                vert_list.push(isec_v[k],
-                                                t[isec_i[k]], t[(isec_i[k] + 1) % 3],
-                                                //Alpha = length((Point_Loc - Src_V0) / (Src_V1 - Src_V0));
-                                                alpha);
-                            }
-
-                            int v_idx0 = (isec_base == 1)?(1):(0);
-                            int v_idx1 = (isec_base == 1)?(0):(1);
-                            int tri_to_remove = tri_to_process.count() - 1;
-#if 0
-                            //Leaf_type is the type for the triangle that is alone on its side.
-                            int leaf_type = res_side[(isec_base + 2) % 3];
-
-                            if (m_tree[leaf_idx].m_leaves[leaf_type] == LEAF_CURRENT && tri_to_process.last().m1.last() == 1)
-                                tri_list.push(leaf_type,
-                                                t[(isec_base + 2) % 3], new_v_idx[v_idx1], new_v_idx[v_idx0]);
-                            else
-                            {
-                                tri_to_process.push(array< int >(), t[(isec_base + 2) % 3], new_v_idx[v_idx1], new_v_idx[v_idx0], 0);
-                                tri_to_process.last().m1.push(0);
-                            }
-
-                            if (m_tree[leaf_idx].m_leaves[1 - leaf_type] == LEAF_CURRENT && tri_to_process.last().m1.last() == 1)
-                            {
-                                tri_list.push((tri_to_process.last().m5)?(LEAF_CURRENT):(1 - leaf_type),
-                                                t[isec_base], new_v_idx[((isec_base + 1) % 3)], new_v_idx[v_idx0]);
-                                tri_list.push((tri_to_process.last().m5)?(LEAF_CURRENT):(1 - leaf_type),
-                                                t[isec_base], new_v_idx[v_idx0], new_v_idx[v_idx1]);
-                            }
-                            else
-                            {
-                                tri_to_process.push(array< int >(), t[isec_base], t[((isec_base + 1) % 3)], new_v_idx[v_idx0], 0);
-                                tri_to_process.last().m1.push(0);
-                                tri_to_process.push(array< int >(), t[isec_base], new_v_idx[v_idx0], new_v_idx[v_idx1], 0);
-                                tri_to_process.last().m1.push(0);
-                            }
-#else
-                            int new_t[9] = { t[(isec_base + 2) % 3], new_v_idx[v_idx1],         new_v_idx[v_idx0],
-                                                t[isec_base],           t[((isec_base + 1) % 3)],  new_v_idx[v_idx0],
-                                                t[isec_base],           new_v_idx[v_idx0],         new_v_idx[v_idx1] };
-                            int new_side[3] = { res_side[(isec_base + 2) % 3],
-                                                (res_side[isec_base] == LEAF_CURRENT)?(res_side[((isec_base + 1) % 3)]):(res_side[isec_base]),
-                                                res_side[isec_base] };
-
-                            //Error check : Skip the triangle where two points are on the same location.
-                            //it fixes the problem of having an intersection with one of the isec-point being on one of the triangle vertices.
-                            //(the problem being a very funny infinite loop)
-                            for(int k = 0; k < 9; k += 3)
-                            {
-#if 1 //Error check
-                                bool skip_tri = false;
-                                for(int l = 0; l < 3; l++)
-                                {
-                                    if (length(vert_list[new_t[k + l]].m1 - vert_list[new_t[k + (l + 1) % 3]].m1) < TestEpsilon::Get())
-                                    {
-                                        skip_tri = true;
-                                        break;
-                                    }
-                                }
-
-                                if (skip_tri)
-                                    continue;
-#endif
-#if 0 //Send the newly created triangle back to the beginning
-                                tri_to_process.push(array< int >(), new_t[k], new_t[k + 1], new_t[k + 2], 0);
-                                tri_to_process.last().m1.push(0);
-#else //Inherit parent tree
-                                if (m_tree[leaf_idx].m_leaves[new_side[k / 3]] == LEAF_CURRENT && tri_to_process[tri_to_remove].m1.count() == 1)
-                                    tri_list.push(new_side[k / 3], new_t[k], new_t[k + 1], new_t[k + 2]);
-                                else
-                                {
-                                    tri_to_process.push(array< int >(), new_t[k], new_t[k + 1], new_t[k + 2], 0);
-                                    tri_to_process.last().m1 = tri_to_process[tri_to_remove].m1;
-                                    if (m_tree[leaf_idx].m_leaves[new_side[k / 3]] == LEAF_CURRENT)
-                                        tri_to_process.last().m1.pop();
-                                    else
-                                        tri_to_process.last().m1.last() = m_tree[leaf_idx].m_leaves[new_side[k / 3]];
-                                }
-#endif
-                            }
-#endif
-
-                            tri_to_process.remove(tri_to_remove);
-                        }
-                    }
-                }
-            }
-            //All points are on one side, transfer to the next leaf
-            else if (res_nb[LEAF_BACK] || res_nb[LEAF_FRONT])
-            {
-                int new_leaf_type = ((res_nb[LEAF_FRONT])?(LEAF_FRONT):(LEAF_BACK));
-                int new_leaf = m_tree[leaf_idx].m_leaves[new_leaf_type];
-
-                //No leaf exist, we're at the end
-                if (new_leaf == LEAF_CURRENT)
-                {
-                    //We still need to test other leaves.
-                    if (tri_to_process.last().m1.count() > 1)
-                        tri_to_process.last().m1.pop();
-                    else
-                    {
-                        tri_list.push((tri_to_process.last().m5)?(LEAF_CURRENT):(new_leaf_type),
-                                        tri_to_process.last().m2, tri_to_process.last().m3, tri_to_process.last().m4);
-                        tri_to_process.pop();
-                    }
-                }
-                else
-                    tri_to_process.last().m1.last() = new_leaf;
-            }
-            //All points are on the current leaf, add the tri_idx to the list of this leaf.
-            else
-            {
-                //TODO : Special case, handle coplanar cut.
-                tri_list.push(LEAF_CURRENT, tri_to_process.last().m2, tri_to_process.last().m3, tri_to_process.last().m4);
-                tri_to_process.pop();
-            }
-        }
-
-        //Now that we have all the split points, let's double-check the results
-        for (int i = 0; i < tri_list.count(); i++)
-        {
-#define TEST_MAX 4
-            int t[3] = { tri_list[i].m2,
-                            tri_list[i].m3,
-                            tri_list[i].m4 };
-            vec3 v[4] = { vert_list[t[0]].m1,
-                            vert_list[t[1]].m1,
-                            vert_list[t[2]].m1,
-                            (vert_list[t[0]].m1 +
-                            vert_list[t[1]].m1 +
-                            vert_list[t[2]].m1) / 3.0f };
-
-            int res_total = 0;
-            int res_nb[3] = { 0, 0, 0 };
-
-            int res_Leaf[4] = { 0, 0, 0, 0 };
-            int res_side[4] = { -1, -1, -1, -1 };
-            while (res_total < TEST_MAX)
-            {
-                for (int k = 0; k < TEST_MAX; k++)
-                {
-                    if (res_Leaf[k] != LEAF_CURRENT)
-                    {
-                        int result = TestPoint(res_Leaf[k], v[k]);
-                        if (result != LEAF_CURRENT)
-                        {
-                            res_Leaf[k] = m_tree[res_Leaf[k]].m_leaves[result];
-                            res_side[k] = result;
-                            if (res_Leaf[k] == LEAF_CURRENT)
-                            {
-                                res_total++;
-                                res_nb[result]++;
-                            }
-                        }
-                        else
-                        {
-                            res_Leaf[k] = LEAF_CURRENT;
-                            res_side[k] = LEAF_CURRENT;
-                            res_total++;
-                        }
-                    }
-                }
-            }
-            int k = 0;
-            if (res_nb[LEAF_BACK] && res_nb[LEAF_FRONT])
-            {
-#if 0
-                res_total = res_total;
-#endif
-                tri_list[i].m1 = LEAF_BACK;
-#if 0
-                tri_to_process.push( array< int >(), tri_list[i].m2, tri_list[i].m3, tri_list[i].m4, 0);
-                tri_to_process.last().m1.push(0);
-                tri_list.remove(i--);
-                break;
-#endif
-            }
-            else
-            {
-                for (; k < TEST_MAX; k++)
-                {
-                    if (res_side[k] != LEAF_CURRENT)
-                    {
-                        tri_list[i].m1 = res_side[k];
-                        break;
-                    }
-                }
-                if (k == TEST_MAX)
-                    tri_list[i].m1 = LEAF_FRONT;
-            }
-        }
-    }
-
-    if (tri_list.count() == 1)
-        return 0;
-    return 1;
-}
-
-} /* namespace lol */
-
diff --git a/src/easymesh/csgbsp.h b/src/easymesh/csgbsp.h
deleted file mode 100644
index aa3e4d59..00000000
--- a/src/easymesh/csgbsp.h
+++ /dev/null
@@ -1,70 +0,0 @@
-//
-// EasyMesh-Csg: The code belonging to CSG operations
-//
-// Copyright: (c) 2010-2013 Sam Hocevar <sam@hocevar.net>
-//            (c) 2010-2013 Benjamin "Touky" Huet <huet.benjamin@gmail.com>
-//   This program is free software; you can redistribute it and/or
-//   modify it under the terms of the Do What The Fuck You Want To
-//   Public License, Version 2, as published by Sam Hocevar. See
-//   http://www.wtfpl.net/ for more details.
-//
-
-#pragma once
-
-namespace lol
-{
-
-#define LEAF_ABOVE      2
-#define LEAF_FRONT      1
-#define LEAF_BACK       0
-#define LEAF_CURRENT   -1
-
-//Naïve bsp for the poor people
-class CsgBspLeaf
-{
-    friend class CsgBsp;
-
-public:
-    CsgBspLeaf(vec3 origin, vec3 normal, int above_idx)
-    {
-        m_origin = origin;
-        m_normal = normal;
-        m_leaves[LEAF_ABOVE] = above_idx;
-
-        m_leaves[LEAF_FRONT] = -1;
-        m_leaves[LEAF_BACK] = -1;
-    }
-
-private:
-    vec3            m_origin;
-    vec3            m_normal;
-    array< int, vec3, vec3, vec3 >    m_tri_list;
-    ivec3           m_leaves;
-};
-
-//Naïve bsp for the poor people
-class CsgBsp
-{
-public:
-    void AddTriangleToTree(int const &tri_idx, vec3 const &tri_p0, vec3 const &tri_p1, vec3 const &tri_p2);
-
-    //return 0 when no split has been done.
-    //return 1 when split has been done.
-    //return -1 when error.
-    int TestTriangleToTree(vec3 const &tri_p0, vec3 const &tri_p1, vec3 const &tri_p2,
-                            //In order to easily build the actual vertices list afterward, this list stores each Vertices location and its source vertices & Alpha.
-                            //<Point_Loc, Src_V0, Src_V1, Alpha> as { Point_Loc = Src_V0 + (Src_V1 - Src_V0) * Alpha; }
-                            array< vec3, int, int, float > &vert_list,
-                            //This is the final triangle list : If Side_Status is LEAF_CURRENT, a new test will be done point by point.
-                            //<{IN|OUT}side_status, v0, v1, v2>
-                            array< int, int, int, int > &tri_list);
-
-private:
-    int AddLeaf(int leaf_type, vec3 origin, vec3 normal, int above_idx);
-    int TestPoint(int leaf_idx, vec3 point);
-
-    array<CsgBspLeaf> m_tree;
-};
-
-} /* namespace lol */
-
diff --git a/src/easymesh/easymesh.cpp b/src/easymesh/easymesh.cpp
deleted file mode 100644
index ec125002..00000000
--- a/src/easymesh/easymesh.cpp
+++ /dev/null
@@ -1,62 +0,0 @@
-//
-// EasyMesh: A class about generating 3D mesh without using the hands
-//           Mesh can be generated using C++ or lua code
-//
-// Copyright: (c) 2010-2015 Sam Hocevar <sam@hocevar.net>
-//            (c) 2009-2015 Cédric Lecacheur <jordx@free.fr>
-//            (c) 2009-2015 Benjamin "Touky" Huet <huet.benjamin@gmail.com>
-//   This program is free software; you can redistribute it and/or
-//   modify it under the terms of the Do What The Fuck You Want To
-//   Public License, Version 2, as published by Sam Hocevar. See
-//   http://www.wtfpl.net/ for more details.
-//
-
-#include <lol/engine-internal.h>
-
-LOLFX_RESOURCE_DECLARE(easymesh_shiny);
-
-namespace lol
-{
-
-//-----------------------------------------------------------------------------
-EasyMesh::EasyMesh()
-  : m_build_data(nullptr)
-{
-    m_cursors.push(0, 0);
-    m_state = MeshRender::NeedData;
-}
-
-//-----------------------------------------------------------------------------
-EasyMesh::EasyMesh(const EasyMesh& em)
-{
-    m_indices = em.m_indices;
-    m_vert = em.m_vert;
-    m_cursors = em.m_cursors;
-    m_build_data = nullptr;
-    if (em.m_build_data)
-        m_build_data = new EasyMeshBuildData(*em.m_build_data);
-    if (m_indices.count() && m_vert.count() && m_cursors.count())
-        m_state = MeshRender::NeedConvert;
-    else
-        m_state = MeshRender::NeedData;
-}
-
-//-----------------------------------------------------------------------------
-bool EasyMesh::SetRender(bool should_render)
-{
-    if (m_state == MeshRender::CanRender)
-    {
-        if (!should_render)
-            m_state = MeshRender::IgnoreRender;
-        return true;
-    }
-    else if (m_state == MeshRender::IgnoreRender)
-    {
-        if (should_render)
-            m_state = MeshRender::CanRender;
-        return true;
-    }
-    return false;
-}
-
-} /* namespace lol */
diff --git a/src/easymesh/easymesh.h b/src/easymesh/easymesh.h
deleted file mode 100644
index 145c92d8..00000000
--- a/src/easymesh/easymesh.h
+++ /dev/null
@@ -1,440 +0,0 @@
-//
-//  Lol Engine
-//
-//  Copyright © 2009—2013 Cédric Lecacheur <jordx@free.fr>
-//            © 2009—2013 Benjamin “Touky” Huet <huet.benjamin@gmail.com>
-//            © 2010—2018 Sam Hocevar <sam@hocevar.net>
-//
-//  Lol Engine is free software. It comes without any warranty, to
-//  the extent permitted by applicable law. You can redistribute it
-//  and/or modify it under the terms of the Do What the Fuck You Want
-//  to Public License, Version 2, as published by the WTFPL Task Force.
-//  See http://www.wtfpl.net/ for more details.
-//
-
-#pragma once
-
-#include "commandstack.h"
-#include "easymeshrender.h"
-#include "easymeshbuild.h"
-
-#include <map>
-
-//
-// EasyMesh: A class about generating 3D mesh without using the hands
-//           Mesh can be generated using C++ or lua code
-//
-
-namespace lol
-{
-
-//CSGUsage --------------------------------------------------------------------
-/* A safe enum for MeshCSG operations. */
-struct CSGUsageBase : public StructSafeEnum
-{
-    enum Type
-    {
-        Union,
-        Substract,
-        SubstractLoss, // will remove B from A, but not add inverted B
-        And,
-        Xor
-    };
-protected:
-    virtual bool BuildEnumMap(std::map<int64_t, std::string>& enum_map)
-    {
-        enum_map[Union] = "Union";
-        enum_map[Substract] = "Substract";
-        enum_map[SubstractLoss] = "SubstractLoss";
-        enum_map[And] = "And";
-        enum_map[Xor] = "Xor";
-        return true;
-    }
-};
-typedef SafeEnum<CSGUsageBase> CSGUsage;
-
-//MeshTransform ---------------------------------------------------------------
-struct MeshTransformBase : public StructSafeEnum
-{
-    enum Type
-    {
-        Taper,
-        Twist,
-        Bend,
-        Stretch,
-        Shear
-    };
-protected:
-    virtual bool BuildEnumMap(std::map<int64_t, std::string>& enum_map)
-    {
-        enum_map[Taper] = "Taper";
-        enum_map[Twist] = "Twist";
-        enum_map[Bend] = "Bend";
-        enum_map[Stretch] = "Stretch";
-        enum_map[Shear] = "Shear";
-        return true;
-    }
-};
-typedef SafeEnum<MeshTransformBase> MeshTransform;
-
-class EasyMesh : public Mesh
-{
-    friend class EasyMeshParser;
-    friend class GpuEasyMeshData;
-
-public:
-    EasyMesh();
-    EasyMesh(const EasyMesh& em);
-    MeshRender GetMeshState() { return m_state; }
-    bool SetRender(bool should_render);
-
-    //-------------------------------------------------------------------------
-    //Render-build operation
-    //-------------------------------------------------------------------------
-    void MeshConvert();
-
-    //-------------------------------------------------------------------------
-    //Command-build (lua now) operations
-    //-------------------------------------------------------------------------
-    bool Compile(char const *command, bool Execute = true);
-    void ExecuteCmdStack(bool ExecAllStack = true);
-
-private:
-    void UpdateVertexDict(array< int, int > &vertex_dict);
-
-    //-------------------------------------------------------------------------
-    //Mesh CSG operations
-    //-------------------------------------------------------------------------
-public:
-    /* [cmd:csgu] Performs a Union operation as (mesh0_Outside + mesh1_Outside) */
-    void CsgUnion();
-    /* [cmd:csgs] Performs a Substract operation as (mesh0_Outside + mesh1_Inside-inverted) */
-    void CsgSub();
-    /* [cmd:csgsl] Performs a Substract operation without keeping the mesh1 part */
-    void CsgSubL();
-    /* [cmd:csga] Performs an And operation as (mesh0_Inside + mesh1_Inside) */
-    void CsgAnd();
-    /* [cmd:csgx] Performs a Xor operation as (m0_Outside/m0_Inside-inverted + m1_Outside/m1_Inside-inverted) */
-    void CsgXor();
-
-private:
-    void MeshCsg(CSGUsage csg_operation);
-
-    //-------------------------------------------------------------------------
-    //Mesh Cursor operations
-    //-------------------------------------------------------------------------
-public:
-    /* [cmd:lp[ ]] will perform a loop of loopnb */
-    void LoopStart(int loopnb);
-    /* No cmd, implicit ] */
-    void LoopEnd();
-    /* [cmd:[] from this point onward, any operation will not be performed on previous vertices */
-    void OpenBrace();
-    /* [cmd:]] Merge current vertices with previous context */
-    void CloseBrace();
-    /* [cmd:tsw] When active, on negative-scaling, normal-vector correction will not occur */
-    void ToggleScaleWinding();
-    /* [cmd:tqw] When active, quad will have a fifth center vertex */
-    void ToggleQuadWeighting();
-    /* [cmd:tpbn] When active, normal will be computed after the build */
-    void TogglePostBuildNormal();
-    /* [cmd:tpbn] When active, prevents vertices cleanup */
-    void ToggleVerticeNoCleanup();
-    /* [cmd:sc] Set both color */
-    void SetCurColor(vec4 const &color);
-    /* [cmd:sca] Set base color A */
-    void SetCurColorA(vec4 const &color);
-    /* [cmd:scb] Set base color B */
-    void SetCurColorB(vec4 const &color);
-    /* [cmd:scv] Sets all vertices in this scope color. */
-    void SetVertColor(vec4 const &color);
-
-    //-------------------------------------------------------------------------
-    //Internal : Basic triangle/vertex operations
-    //-------------------------------------------------------------------------
-private:
-    void AddVertex(vec3 const &coord);
-    void AddDupVertex(int i);
-    void AddLerpVertex(int i, int j, float alpha);
-    void AddLerpVertex(VertexData const &vi, VertexData const &vj, float alpha);
-    VertexData GetLerpVertex(int i, int j, float alpha);
-    VertexData GetLerpVertex(VertexData const &vi, VertexData const &vj, float alpha);
-    void AddQuad(int i1, int i2, int i3, int i4, int base, bool duplicate = false);
-    void AddTriangle(int i1, int i2, int i3, int base, bool duplicate = false);
-    void ComputeNormals(int start, int vcount);
-public:
-    /* Remove all unused */
-    void VerticesCleanup();
-    /* Merge vertices AKA: smooth */
-    void VerticesMerge();
-    /* Merge vertices AKA: Flat */
-    void VerticesSeparate();
-public: //DEBUG
-    void ComputeTexCoord(float uv_scale, int uv_offset);
-
-    //-------------------------------------------------------------------------
-    //Internal : Vertices operations
-    //-------------------------------------------------------------------------
-private:
-    void SetTexCoordData(vec2 const &new_offset, vec2 const &new_scale);
-    void SetTexCoordData2(vec2 const &new_offset, vec2 const &new_scale);
-
-    void SetCurVertNormal(vec3 const &normal);
-    void SetCurVertColor(vec4 const &color);
-    void SetCurVertTexCoord(vec2 const &texcoord);
-    void SetCurVertTexCoord2(vec2 const &texcoord);
-
-public:
-    //-------------------------------------------------------------------------
-    //Mesh transform operations
-    //-------------------------------------------------------------------------
-    /* See Translate */
-    void TranslateX(float t);
-    /* See Translate */
-    void TranslateY(float t);
-    /* See Translate */
-    void TranslateZ(float t);
-    /* [cmd:t/tx/ty/tz] Translate vertices
-        - v : Translation quantity.
-     */
-    void Translate(vec3 const &v);
-    /* See Rotate */
-    void RotateX(float degrees);
-    /* See Rotate */
-    void RotateY(float degrees);
-    /* See Rotate */
-    void RotateZ(float degrees);
-    /* [cmd:r/rx/ry/rz] Rotate vertices
-        - degrees : rotation quantity.
-        - axis : rotation axis.
-     */
-    void Rotate(float degrees, vec3 const &axis);
-    /* [cmd:rj] Randomly move vertices along Origin-to-vertex as f(vtx) = vtx + o2v * (1.0 + rand(r))
-        - r : jitter maximum value.
-     */
-    void RadialJitter(float r);
-    /* [cmd:tax] multiply axis y&z by x as f(y) = y * (1.0 + (ny * x + xoff))
-        - ny : value of n for y.
-        - nz : value of n for z.
-        - xoff : value of xoff.
-        - absolute (def:true) : if (true) Multiply will use an absolute x.
-     */
-    void TaperX(float ny, float nz, float xoff=0.f, bool absolute=true);
-    /* [cmd:tay] Same as TaperX, with Y */
-    void TaperY(float nx, float nz, float yoff=0.f, bool absolute=true);
-    /* [cmd:taz] Same as TaperX, with Z */
-    void TaperZ(float nx, float ny, float zoff=0.f, bool absolute=true);
-    /* [cmd:twx] Twist vertices around x axis with x as rotation value as f(p) = (RotateX(x * t + toff) * p)
-        - t : Angle multiplier.
-        - toff : Applied offset.
-     */
-    void TwistX(float t, float toff=0.f);
-    /* [cmd:twy] Same as TwistX, with Y */
-    void TwistY(float t, float toff=0.f);
-    /* [cmd:twz] Same as TwistX, with Z */
-    void TwistZ(float t, float toff=0.f);
-    /* [cmd:shx] Shear vertices using x value as shear quantity as f(y) = y + (ny * x + xoff)
-        - ny : Value of n for y.
-        - nz : Value of n for z.
-        - xoff : Value of xoff.
-        - absolute (def:true) : if (true) Multiply will use an absolute x.
-     */
-    void ShearX(float ny, float nz, float xoff=0.f, bool absolute=true);
-    /* [cmd:shy] Same as ShearX, with Y */
-    void ShearY(float nx, float nz, float yoff=0.f, bool absolute=true);
-    /* [cmd:shz] Same as ShearX, with Z */
-    void ShearZ(float nx, float ny, float zoff=0.f, bool absolute=true);
-    /* [cmd:stx] Stretch vertices using x value as stretch quantity as f(y) = y + (pow(x, ny) + xoff)
-        - ny : Value of n for y.
-        - nz : Value of n for z.
-        - xoff : Value of xoff.
-     */
-    void StretchX(float ny, float nz, float xoff=0.f);
-    /* [cmd:sty] Same as StretchX, with Y */
-    void StretchY(float nx, float nz, float yoff=0.f);
-    /* [cmd:stz] Same as StretchX, with Z */
-    void StretchZ(float nx, float ny, float zoff=0.f);
-    /* [cmd:bdxy] Bend vertices using x as bend quantity along y axis using f(p) = (RotateY(x * t + toff) * p)
-        - t : Angle multiplier.
-        - xoff : Applied offset.
-     */
-    void BendXY(float t, float toff=0.f);
-    /* [cmd:bdxz] Same as BendXY, with X & Z */
-    void BendXZ(float t, float toff=0.f);
-    /* [cmd:bdyx] Same as BendXY, with Y & X */
-    void BendYX(float t, float toff=0.f);
-    /* [cmd:bdyz] Same as BendXY, with Y & Z */
-    void BendYZ(float t, float toff=0.f);
-    /* [cmd:bdzx] Same as BendXY, with Z & X */
-    void BendZX(float t, float toff=0.f);
-    /* [cmd:bdzy] Same as BendXY, with Z & Y */
-    void BendZY(float t, float toff=0.f);
-private:
-    void DoMeshTransform(MeshTransform ct, Axis axis0, Axis axis1, float n0, float n1, float noff, bool absolute=false);
-public:
-    /* [cmd:s/sx/sy/sz] Scale vertices
-        - s : scale quantity.
-     */
-    void Scale(float s);
-    void ScaleX(float s);
-    void ScaleY(float s);
-    void ScaleZ(float s);
-    void Scale(vec3 const &s);
-    /* [cmd:m*] Mirror vertices through *-plane
-        Acts as an OpenBrace
-     */
-    void MirrorX();
-    void MirrorY();
-    void MirrorZ();
-    /* [no-cmd] Duplicates vertices and scale duplicate
-        Acts as an OpenBrace
-     */
-    void DupAndScale(vec3 const &s, bool open_brace=false);
-    /* [cmd:ch] Performs a chamfer operation //TODO : Make it work
-        - f : Chamfer quantity.
-     */
-    void Chamfer(float f);
-    /* [cmd:splt] split triangles in 4 smaller ones
-        - pass : Number of pass applied.
-     */
-    void SplitTriangles(int pass);
-private:
-    void SplitTriangles(int pass, VertexDictionnary *vert_dict);
-public:
-    /* [cmd:smth] Smooth the mesh by subdivising it.
-        - pass : a pass is made of (n0 split then n1 smooth) repeat.
-        - split_per_pass : n0 value in above explanation.
-        - smooth_per_pass : n1 value in above explanation.
-     */
-    void SmoothMesh(int pass, int split_per_pass, int smooth_per_pass);
-
-    //-------------------------------------------------------------------------
-    //Mesh shape primitive operations
-    //-------------------------------------------------------------------------
-    /* [cmd:ac] Cylinder centered on (0,0,0) with BBox [-.5*max(d1, d2), -.5*h, -.5*max(d1, d2)]
-        - nbsides : Number of sides.                   [+.5*max(d1, d2), +.5*h, +.5*max(d1, d2)]
-        - h : Height of the cylinder.
-        - d1 : Lower diameter.
-        - d2 : Upper diameter.
-        - dualside : if (true) will also create inner sides : TOOD:TOREMOVE?? : needed ?
-        - smooth : if (true) will smooth normals : TOOD:TOREMOVE : smooth should be handled elsewhere
-        - close : if (true) will add discs to close the cylinder
-     */
-    void AppendCylinder(int nsides, float h, float d1, float d2,
-                        bool dualside=false, bool smooth=false, bool close=false);
-    /* [cmd:asph] Sphere centered on (0,0,0) with BBox [-.5*d][.5*d]
-        - ndivisions : number of subdivisions each Sphere triangle will sustain.
-        - d : Diameter.
-     */
-    void AppendSphere(int ndivisions, float d);
-    /* [cmd:acap] Capsule centered on (0,0,0) with BBox [-.5*d, -(.5*d+h), -.5*d][.5*d, (.5*d+h), .5*d]
-        - ndivisions : number of subdivisions each Sphere triangle will sustain.
-        - h : Inner height.
-        - d : Diameter.
-     */
-    void AppendCapsule(int ndivisions, float h, float d);
-    /* [cmd:ato] Torus centered on (0,0,0) with BBox [-.5*d2][.5*d2]
-        - ndivisions : number of subdivisions of the torus.
-        - d1 : Inner diameter.
-        - d2 : Outer diameter.
-     */
-    void AppendTorus(int ndivisions, float d1, float d2);
-    /* [cmd:ab] Box centered on (0,0,0) with BBox [-.5 * size][.5 * size]
-        - size : size of the box.
-        - chamf : size of the chamfer.
-     */
-    void AppendBox(vec3 const &size, float chamf=0.f);
-    //Same as AppendBox
-    void AppendSmoothChamfBox(vec3 const &size, float chamf);
-    //Same as AppendBox
-    void AppendFlatChamfBox(vec3 const &size, float chamf);
-    //Same as AppendBox
-    void AppendBox(vec3 const &size, float chamf, bool smooth);
-    /* [cmd:as]
-       Append a Star centered on (0,0,0) contained within a disc of "max(d1, d2)" diameter.
-        - nbranches : Number of branches.
-        - d1 : double Length of the branches.
-        - d2 : double Length of the "branch" located between d1-branches.
-        - fade : if (true) in-between branches use ColorB.
-        - fade2 : if (true) Star branches use ColorB.
-     */
-    void AppendStar(int nbranches, float d1, float d2,
-                    bool fade=false, bool fade2=false);
-    /* [cmd:aes] Star centered on (0,0,0) contained within a disc of "max(max(d1, d2), max(d1 + extrad, d2 + extrad))" diameter.
-       Expanded star branches use ColorB.
-        - nbranches : Number of branches.
-        - d1 : Double Length of the branches.
-        - d2 : Double Length of the "branch" located between r1-branches.
-        - extrad : Extra length added to expand all branches.
-     */
-    void AppendExpandedStar(int nbranches, float d1, float d2, float extrad=0.f);
-    /* [cmd:ad] Disc centered on (0,0,0) with d diameter.
-        - nbsides : Number of sides.
-        - d : Diameter.
-        - fade : if (true) Outer vertices will use ColorB
-     */
-    void AppendDisc(int nsides, float d, bool fade=false);
-    /* [cmd:at] Triangle centered on (0,0,0) contained within a disc of "d" diameter.
-        - d : diameter of the containing disc..
-        - fade : if (true) 2nd & 3rd Vertices will use ColorB
-     */
-    void AppendSimpleTriangle(float d, bool fade=false);
-    /* [cmd:aq] Quad centered on (0,0,0) contained within BBox [-size*.5f, 0, -size*.5f][size*.5f, 0, size*.5f]
-        - size : Size of quad.
-        - fade : if (true) 3rd & 4th Vertices will use ColorB
-     */
-    void AppendSimpleQuad(float size, bool fade=false);
-private:
-    //complex version of above one
-    void AppendSimpleQuad(vec2 p1, vec2 p2, float z=0.f, bool fade=false);
-public:
-    /* [cmd:acg] Gear centered on (0,0,0) contained within BBox [-.5*max(d1,d2), -.5*h, -.5*max(d1, d2)]
-        - h : Height of the Gear.                               [+.5*max(d1,d2), +.5*h, +.5*max(d1, d2)]
-        - d10 : Upper Inner diameter.
-        - d20 : Lower Inner diameter.
-        - d1  : Upper Outer diameter.
-        - d2  : Lower Outer diameter.
-        - d12 : Upper Cog diameter.
-        - d22 : Lower Cog diameter.
-        - sidemul : multiplier for the size of the cogs.
-        - offset : useless
-     */
-    void AppendCog(int nbsides, float h, float d10, float d20, float d11,
-                   float d21, float d12, float d22, float sidemul = 0.f, bool offset = false);
-    void AppendCog(int nbsides, float h, vec2 d0, vec2 d1, vec2 d2, float sidemul = 0.f, bool offset = false)
-    {
-        AppendCog(nbsides, h, d0.x, d0.y, d1.x, d1.y, d2.x, d2.y, sidemul, offset);
-    }
-
-    //-------------------------------------------------------------------------
-    //TODO : Mesh Bone operations
-    //-------------------------------------------------------------------------
-    //void AddBone(int parent_id) {}
-
-    //Convenience functions
-public:
-    int GetVertexCount() { return m_vert.count(); }
-    vec3 const &GetVertexLocation(int i) { return m_vert[i].m_coord; }
-
-//private:
-    array<uint16_t>     m_indices;
-    array<VertexData>   m_vert;
-
-    //<vert count, indices count>
-    array<int, int>     m_cursors;
-
-    MeshRender          m_state;
-
-public:
-    inline EasyMeshBuildData* BD()
-    {
-        if (!m_build_data)
-            m_build_data = new EasyMeshBuildData();
-        return m_build_data;
-    };
-private:
-    class EasyMeshBuildData* m_build_data;
-};
-
-} /* namespace lol */
-
diff --git a/src/easymesh/easymeshbuild.cpp b/src/easymesh/easymeshbuild.cpp
deleted file mode 100644
index f73bc77c..00000000
--- a/src/easymesh/easymeshbuild.cpp
+++ /dev/null
@@ -1,208 +0,0 @@
-//
-//  Lol Engine
-//
-//  Copyright © 2009—2013 Benjamin “Touky” Huet <huet.benjamin@gmail.com>
-//            © 2010—2017 Sam Hocevar <sam@hocevar.net>
-//            © 2009—2013 Cédric Lecacheur <jordx@free.fr>
-//
-//  Lol Engine is free software. It comes without any warranty, to
-//  the extent permitted by applicable law. You can redistribute it
-//  and/or modify it under the terms of the Do What the Fuck You Want
-//  to Public License, Version 2, as published by the WTFPL Task Force.
-//  See http://www.wtfpl.net/ for more details.
-
-#include <lol/engine-internal.h>
-
-namespace lol
-{
-
-//-----------------------------------------------------------------------------
-//helpers func to retrieve a vertex.
-int VertexDictionnary::FindVertexMaster(const int search_idx)
-{
-    //Resolve current vertex idx in the dictionnary (if exist)
-    for (int j = 0; j < vertex_list.count(); j++)
-        if (vertex_list[j].m1 == search_idx)
-            return vertex_list[j].m3;
-    return VDictType::DoesNotExist;
-}
-
-//-----------------------------------------------------------------------------
-//retrieve a list of matching vertices, doesn't include search_idx.
-bool VertexDictionnary::FindMatchingVertices(const int search_idx, array<int> &matching_ids)
-{
-    int cur_mast = FindVertexMaster(search_idx);
-
-    if (cur_mast == VDictType::DoesNotExist || cur_mast == VDictType::Alone)
-        return false;
-
-    if (cur_mast == VDictType::Master)
-        cur_mast = search_idx;
-    else
-        matching_ids << vertex_list[cur_mast].m1;
-
-    for (int j = 0; j < vertex_list.count(); j++)
-        if (vertex_list[j].m3 == cur_mast && vertex_list[j].m1 != search_idx)
-            matching_ids << vertex_list[j].m1;
-
-    return (matching_ids.count() > 0);
-}
-
-//-----------------------------------------------------------------------------
-//Will return connected vertices (through triangles), if returned vertex has matching ones, it only returns the master.
-bool VertexDictionnary::FindConnectedVertices(const int search_idx, const array<uint16_t> &tri_list, const int tri0, array<int> &connected_vert, array<int> const *ignored_tri)
-{
-    array<int> connected_tri;
-    FindConnectedTriangles(search_idx, tri_list, tri0, connected_tri, ignored_tri);
-
-    for (int i = 0; i < connected_tri.count(); i++)
-    {
-        for (int j = 0; j < 3; j++)
-        {
-            int v_indice = tri_list[connected_tri[i] + j];
-            if (v_indice != search_idx)
-            {
-                int found_master = FindVertexMaster(tri_list[connected_tri[i] + j]);
-                if (found_master == VDictType::Alone || found_master == VDictType::Master)
-                    found_master = v_indice;
-                if (found_master != search_idx)
-                {
-                    bool already_exist = false;
-                    for (int k = 0; !already_exist && k < connected_vert.count(); k++)
-                        if (connected_vert[k] == found_master)
-                            already_exist = true;
-                    if (!already_exist)
-                        connected_vert << found_master;
-                }
-            }
-        }
-    }
-    return (connected_vert.count() > 0);
-}
-//-----------------------------------------------------------------------------
-bool VertexDictionnary::FindConnectedTriangles(const int search_idx, const array<uint16_t> &tri_list, const int tri0, array<int> &connected_tri, array<int> const *ignored_tri)
-{
-    return FindConnectedTriangles(ivec3(search_idx, search_idx, search_idx), tri_list, tri0, connected_tri, ignored_tri);
-}
-//-----------------------------------------------------------------------------
-bool VertexDictionnary::FindConnectedTriangles(const ivec2 &search_idx, const array<uint16_t> &tri_list, const int tri0, array<int> &connected_tri, array<int> const *ignored_tri)
-{
-    return FindConnectedTriangles(ivec3(search_idx, search_idx.x), tri_list, tri0, connected_tri, ignored_tri);
-}
-//-----------------------------------------------------------------------------
-bool VertexDictionnary::FindConnectedTriangles(const ivec3 &search_idx, const array<uint16_t> &tri_list, const int tri0, array<int> &connected_tri, array<int> const *ignored_tri)
-{
-    int needed_validation = 0;
-    array<int> vert_list[3];
-    for (int i = 0; i < 3; i++)
-    {
-        //Small optim since above func will use this one
-        if ((i == 1 && search_idx[0] == search_idx[1]) ||
-            (i == 2 && (search_idx[0] == search_idx[2] || search_idx[1] == search_idx[2])))
-            continue;
-        else
-        {
-            //increment the validation info, hence empty list aren't taken into account.
-            needed_validation++;
-            vert_list[i] << search_idx[i];
-            FindMatchingVertices(search_idx[i], vert_list[i]);
-        }
-    }
-
-    for (int i = tri0; i < tri_list.count(); i += 3)
-    {
-        if (ignored_tri)
-        {
-            bool should_pass = false;
-            for (int j = 0; !should_pass && j < ignored_tri->count(); j++)
-                if ((*ignored_tri)[j] == i)
-                    should_pass = true;
-            if (should_pass)
-                continue;
-        }
-        int found_validation = 0;
-        for (int j = 0; j < 3; j++)
-        {
-            bool validated = false;
-            for (int k = 0; !validated && k < vert_list[j].count(); k++)
-                for (int l = 0; !validated && l < 3; l++)
-                    if (vert_list[j][k] == tri_list[i + l])
-                        validated = true;
-            found_validation += (validated)?(1):(0);
-        }
-        //triangle is validated store it
-        if (found_validation == needed_validation)
-            connected_tri << i;
-    }
-
-    return (connected_tri.count() > 0);
-}
-
-//-----------------------------------------------------------------------------
-//Will update the given list with all the vertices on the same spot.
-void VertexDictionnary::RegisterVertex(const int vert_id, const vec3 vert_coord)
-{
-    for (int j = 0; j < vertex_list.count(); j++)
-        if (vertex_list[j].m1 == vert_id)
-            return;
-
-    //First, build the vertex Dictionnary
-    int i = 0;
-    for (; i < master_list.count(); i++)
-    {
-        int cur_mast  = master_list[i];
-        int cur_id    = vertex_list[cur_mast].m1;
-        vec3 cur_loc  = vertex_list[cur_mast].m2;
-        int &cur_type = vertex_list[cur_mast].m3;
-
-        if (cur_id == vert_id)
-            return;
-
-        if (sqlength(cur_loc - vert_coord) < TestEpsilon::Get())
-        {
-            if (cur_type == VDictType::Alone)
-                cur_type = VDictType::Master;
-            vertex_list.push(vert_id, vert_coord, cur_mast);
-            return;
-        }
-    }
-
-    //We're here because we couldn't find any matching vertex
-    master_list.push(vertex_list.count());
-    vertex_list.push(vert_id, vert_coord, VDictType::Alone);
-}
-
-//-----------------------------------------------------------------------------
-//Will update the given list with all the vertices on the same spot.
-void VertexDictionnary::RemoveVertex(const int vert_id)
-{
-    int j = 0;
-    for (; j < vertex_list.count(); j++)
-        if (vertex_list[j].m1 == vert_id)
-            break;
-
-    if (vertex_list[j].m3 == VDictType::Master)
-    {
-        int jf = -1;
-        //change all the master ref in the list
-        for (int i = 0; i < vertex_list.count(); i++)
-        {
-            if (vertex_list[i].m3 == j)
-            {
-                if (jf < 0)
-                {
-                    jf = i;
-                    vertex_list[i].m3 = VDictType::Master;
-                }
-                else
-                    vertex_list[i].m3 = jf;
-            }
-        }
-    }
-    vertex_list.remove(j);
-    for (int i = 0; i < master_list.count(); i++)
-        if (master_list[j] == j)
-            break;
-}
-
-} /* namespace lol */
diff --git a/src/easymesh/easymeshbuild.h b/src/easymesh/easymeshbuild.h
deleted file mode 100644
index 5f2f71d6..00000000
--- a/src/easymesh/easymeshbuild.h
+++ /dev/null
@@ -1,556 +0,0 @@
-//
-//  Lol Engine
-//
-//  Copyright © 2009—2013 Cédric Lecacheur <jordx@free.fr>
-//            © 2009—2013 Benjamin “Touky” Huet <huet.benjamin@gmail.com>
-//            © 2010—2018 Sam Hocevar <sam@hocevar.net>
-//
-//  Lol Engine is free software. It comes without any warranty, to
-//  the extent permitted by applicable law. You can redistribute it
-//  and/or modify it under the terms of the Do What the Fuck You Want
-//  to Public License, Version 2, as published by the WTFPL Task Force.
-//  See http://www.wtfpl.net/ for more details.
-//
-
-#pragma once
-
-#include <map>
-
-// Vertex building operations
-
-namespace lol
-{
-
-//MeshBuildOperation ----------------------------------------------------------
-struct MeshBuildOperationBase : public StructSafeEnum
-{
-    enum Type
-    {
-        //When this flag is up, negative scaling will not invert faces.
-        ScaleWinding = (1 << 0),
-        CommandRecording = (1 << 1),
-        CommandExecution = (1 << 2),
-        QuadWeighting = (1 << 3),
-        IgnoreQuadWeighting = (1 << 4),
-        PostBuildComputeNormals = (1 << 5),
-        PreventVertCleanup = (1 << 6),
-
-        All = 0xffff,
-    };
-protected:
-    virtual bool BuildEnumMap(std::map<int64_t, std::string>& enum_map)
-    {
-        enum_map[ScaleWinding] = "ScaleWinding";
-        enum_map[CommandRecording] = "CommandRecording";
-        enum_map[CommandExecution] = "CommandExecution";
-        enum_map[QuadWeighting] = "QuadWeighting";
-        enum_map[IgnoreQuadWeighting] = "IgnoreQuadWeighting";
-        enum_map[PostBuildComputeNormals] = "PostBuildComputeNormals";
-        enum_map[PreventVertCleanup] = "PreventVertCleanup";
-        enum_map[All] = "All";
-        return true;
-    }
-};
-typedef SafeEnum<MeshBuildOperationBase> MeshBuildOperation;
-
-//EasyMeshCmdType -------------------------------------------------------------
-struct EasyMeshCmdTypeBase : public StructSafeEnum
-{
-    enum Type
-    {
-        MeshCsg,
-
-        LoopStart,
-        LoopEnd,
-        OpenBrace,
-        CloseBrace,
-
-        ScaleWinding,
-        QuadWeighting,
-        PostBuildNormal,
-        PreventVertCleanup,
-        SetColorA,
-        SetColorB,
-        SetVertColor,
-
-        VerticesMerge,
-        VerticesSeparate,
-
-        Translate,
-        Rotate,
-        RadialJitter,
-        MeshTranform,
-        Scale,
-        DupAndScale,
-        Chamfer,
-
-        SplitTriangles,
-        SmoothMesh,
-
-        AppendCylinder,
-        AppendCapsule,
-        AppendTorus,
-        AppendBox,
-        AppendStar,
-        AppendExpandedStar,
-        AppendDisc,
-        AppendSimpleTriangle,
-        AppendSimpleQuad,
-        AppendCog,
-    };
-protected:
-    virtual bool BuildEnumMap(std::map<int64_t, std::string>& enum_map)
-    {
-        enum_map[MeshCsg] = "MeshCsg";
-        enum_map[LoopStart] = "LoopStart";
-        enum_map[LoopEnd] = "LoopEnd";
-        enum_map[OpenBrace] = "OpenBrace";
-        enum_map[CloseBrace] = "CloseBrace";
-        enum_map[ScaleWinding] = "ScaleWinding";
-        enum_map[QuadWeighting] = "QuadWeighting";
-        enum_map[PostBuildNormal] = "PostBuildNormal";
-        enum_map[PreventVertCleanup] = "PreventVertCleanup";
-        enum_map[SetColorA] = "SetColorA";
-        enum_map[SetColorB] = "SetColorB";
-        enum_map[SetVertColor] = "SetVertColor";
-        enum_map[VerticesMerge] = "VerticesMerge";
-        enum_map[VerticesSeparate] = "VerticesSeparate";
-        enum_map[Translate] = "Translate";
-        enum_map[Rotate] = "Rotate";
-        enum_map[RadialJitter] = "RadialJitter";
-        enum_map[MeshTranform] = "MeshTranform";
-        enum_map[Scale] = "Scale";
-        enum_map[DupAndScale] = "DupAndScale";
-        enum_map[Chamfer] = "Chamfer";
-        enum_map[SplitTriangles] = "SplitTriangles";
-        enum_map[SmoothMesh] = "SmoothMesh";
-        enum_map[AppendCylinder] = "AppendCylinder";
-        enum_map[AppendCapsule] = "AppendCapsule";
-        enum_map[AppendTorus] = "AppendTorus";
-        enum_map[AppendBox] = "AppendBox";
-        enum_map[AppendStar] = "AppendStar";
-        enum_map[AppendExpandedStar] = "AppendExpandedStar";
-        enum_map[AppendDisc] = "AppendDisc";
-        enum_map[AppendSimpleTriangle] = "AppendSimpleTriangle";
-        enum_map[AppendSimpleQuad] = "AppendSimpleQuad";
-        enum_map[AppendCog] = "AppendCog";
-        return true;
-    }
-};
-typedef SafeEnum<EasyMeshCmdTypeBase> EasyMeshCmdType;
-
-//MeshTypeBase ----------------------------------------------------------------
-struct MeshTypeBase : public StructSafeEnum
-{
-    /* A safe enum for Primitive edge face. */
-    enum Type
-    {
-        Triangle,
-        Quad,
-        Box,
-        Sphere,
-        Capsule,
-        Torus,
-        Cylinder,
-        Disc,
-        Star,
-        ExpandedStar,
-        Cog,
-
-        MAX
-    };
-protected:
-    virtual bool BuildEnumMap(std::map<int64_t, std::string>& enum_map)
-    {
-        enum_map[Triangle] = "Triangle";
-        enum_map[Quad] = "Quad";
-        enum_map[Box] = "Box";
-        enum_map[Sphere] = "Sphere";
-        enum_map[Capsule] = "Capsule";
-        enum_map[Torus] = "Torus";
-        enum_map[Cylinder] = "Cylinder";
-        enum_map[Disc] = "Disc";
-        enum_map[Star] = "Star";
-        enum_map[ExpandedStar] = "ExpandedStar";
-        enum_map[Cog] = "Cog";
-        enum_map[MAX] = "MAX";
-        return true;
-    }
-};
-typedef SafeEnum<MeshTypeBase> MeshType;
-
-//TexCoordBuildType -----------------------------------------------------------
-struct TexCoordBuildTypeBase : public StructSafeEnum
-{
-    enum Type
-    {
-        TriangleDefault,
-        QuadDefault,
-        BoxDefault,
-        SphereDefault,
-        CapsuleDefault,
-        TorusDefault,
-        CylinderDefault,
-        DiscDefault,
-        StarDefault,
-        ExpandedStarDefault,
-        CogDefault,
-
-        //NEVER FORGET TO INCREMENT THIS WHEN ADDING A VALUE
-        Max
-    };
-protected:
-    virtual bool BuildEnumMap(std::map<int64_t, std::string>& enum_map)
-    {
-        enum_map[TriangleDefault] = "TriangleDefault";
-        enum_map[QuadDefault] = "QuadDefault";
-        enum_map[BoxDefault] = "BoxDefault";
-        enum_map[SphereDefault] = "SphereDefault";
-        enum_map[CapsuleDefault] = "CapsuleDefault";
-        enum_map[TorusDefault] = "TorusDefault";
-        enum_map[CylinderDefault] = "CylinderDefault";
-        enum_map[DiscDefault] = "DiscDefault";
-        enum_map[StarDefault] = "StarDefault";
-        enum_map[ExpandedStarDefault] = "ExpandedStarDefault";
-        enum_map[CogDefault] = "CogDefault";
-        enum_map[Max] = "Max";
-        return true;
-    }
-};
-typedef SafeEnum<TexCoordBuildTypeBase> TexCoordBuildType;
-
-//MeshFaceType ----------------------------------------------------------------
-struct MeshFaceTypeBase : public StructSafeEnum
-{
-    enum Type
-    {
-        BoxFront = 0,
-        QuadDefault = 0,
-        BoxLeft = 1,
-        BoxBack = 2,
-        BoxRight = 3,
-        BoxTop = 4,
-        BoxBottom = 5,
-
-        MAX
-    };
-protected:
-    virtual bool BuildEnumMap(std::map<int64_t, std::string>& enum_map)
-    {
-        enum_map[BoxFront] = "BoxFront";
-        enum_map[QuadDefault] = "QuadDefault";
-        enum_map[BoxLeft] = "BoxLeft";
-        enum_map[BoxBack] = "BoxBack";
-        enum_map[BoxRight] = "BoxRight";
-        enum_map[BoxTop] = "BoxTop";
-        enum_map[BoxBottom] = "BoxBottom";
-        enum_map[MAX] = "MAX";
-        return true;
-    }
-};
-typedef SafeEnum<MeshFaceTypeBase> MeshFaceType;
-
-//TexCoordPos -----------------------------------------------------------------
-struct TexCoordPosBase : public StructSafeEnum
-{
-    enum Type
-    {
-        BL, // Bottom Left
-        BR, // Bottom Right
-        TL, // Top Left
-        TR  // Top Right
-    };
-protected:
-    virtual bool BuildEnumMap(std::map<int64_t, std::string>& enum_map)
-    {
-        enum_map[BL] = "BL";
-        enum_map[BR] = "BR";
-        enum_map[TL] = "TL";
-        enum_map[TR] = "TR";
-        return true;
-    }
-};
-typedef SafeEnum<TexCoordPosBase> TexCoordPos;
-
-class EasyMeshBuildData
-{
-public:
-    EasyMeshBuildData()
-    {
-        m_color_a = vec4(0.f, 0.f, 0.f, 1.f);
-        m_color_b = vec4(0.f, 0.f, 0.f, 1.f);
-        m_texcoord_offset = vec2(0.f);
-        m_texcoord_offset2 = vec2(0.f);
-        m_texcoord_scale = vec2(1.f);
-        m_texcoord_scale2 = vec2(1.f);
-        m_build_flags = 0;
-        m_i_cmd = 0;
-        m_exec_nb = -1;
-        for (int i = 0; i < MeshType::MAX; ++i)
-        {
-            m_texcoord_build_type[i] = TexCoordBuildType::TriangleDefault;
-            m_texcoord_build_type2[i] = TexCoordBuildType::TriangleDefault;
-        }
-    }
-
-    inline CommandStack &CmdStack() { return m_stack; }
-    inline int &Cmdi()              { return m_i_cmd; }
-    inline int &CmdExecNb()         { return m_exec_nb; }
-    inline array<int, int> &LoopStack(){ return m_loop_stack; }
-    inline vec4 &ColorA()           { return m_color_a; }
-    inline vec4 &ColorB()           { return m_color_b; }
-    inline vec2 &TexCoordOffset()   { return m_texcoord_offset; }
-    inline vec2 &TexCoordScale()    { return m_texcoord_scale; }
-    inline vec2 &TexCoordOffset2()  { return m_texcoord_offset2; }
-    inline vec2 &TexCoordScale2()   { return m_texcoord_scale2; }
-
-    //UV1
-    void SetTexCoordBuildType(MeshType mt, TexCoordBuildType tcbt) { m_texcoord_build_type[mt.ToScalar()] = (1 << (tcbt.ToScalar() + 1)) | (m_texcoord_build_type[mt.ToScalar()] & 1); }
-    TexCoordBuildType GetTexCoordBuildType(MeshType mt)
-    {
-        uint32_t flag = (uint32_t)((m_texcoord_build_type[mt.ToScalar()] & ~(1)) >> 1);
-        int i = 0;
-        while (flag >>= 1)
-            i++;
-        return TexCoordBuildType(i);
-    }
-    void SetTexCoordCustomBuild(MeshType mt, MeshFaceType face, vec2 BL, vec2 TR)
-    {
-        if (face.ToScalar() >= m_texcoord_custom_build[mt.ToScalar()].count())
-            m_texcoord_custom_build[mt.ToScalar()].resize(face.ToScalar() + 1);
-        m_texcoord_custom_build[mt.ToScalar()][face.ToScalar()].m1 = BL;
-        m_texcoord_custom_build[mt.ToScalar()][face.ToScalar()].m2 = TR;
-        m_texcoord_build_type[mt.ToScalar()] |= 1;
-    }
-    void ClearTexCoordCustomBuild(MeshType mt) { m_texcoord_build_type[mt.ToScalar()] &= ~1; }
-    /* FIXME : Do something better ? */
-    vec2 TexCoord(MeshType mt, TexCoordPos tcp, MeshFaceType face)
-    {
-        vec2 BL = vec2(0.f);
-        vec2 TR = vec2(0.f);
-        if (m_texcoord_build_type[mt.ToScalar()] & 1
-             && face.ToScalar() < m_texcoord_custom_build[mt.ToScalar()].count())
-        {
-            BL = m_texcoord_custom_build[mt.ToScalar()][face.ToScalar()].m1;
-            TR = m_texcoord_custom_build[mt.ToScalar()][face.ToScalar()].m2;
-        }
-        else
-        {
-            /* unused for now, but will be if new BuildType are added. */
-            TexCoordBuildType tcbt = GetTexCoordBuildType(mt);
-            UNUSED(tcbt);
-            if (mt == MeshType::Quad)
-            {
-                // There's nothin' else than QuadDefault
-                BL = vec2(0.f);
-                TR = vec2(1.f);
-            }
-#if 0
-            else if (mt == MeshType::Triangle)
-                mt = mt;
-#endif
-            else if (mt == MeshType::Box)
-            {
-                vec2 data[][2] =
-                { // TexCoordBuildType::BoxDefault
-                    { vec2(0.f), vec2(.5f) },
-                    { vec2(.5f, 0.f), vec2(1.f, .5f) },
-                    { vec2(0.f), vec2(.5f) },
-                    { vec2(.5f, 0.f), vec2(1.f, .5f) },
-                    { vec2(0.f, .5f), vec2(.5f, 1.f) },
-                    { vec2(.5f, .5f), vec2(1.f, 1.f) }
-                };
-                BL = data[face.ToScalar()][0]; // [tcbt]
-                TR = data[face.ToScalar()][1]; // [tcbt]
-            }
-#if 0
-            else if (mt == MeshType::Sphere)
-                mt = mt;
-            else if (mt == MeshType::Capsule)
-                mt = mt;
-            else if (mt == MeshType::Torus)
-                mt = mt;
-            else if (mt == MeshType::Cylinder)
-                mt = mt;
-            else if (mt == MeshType::Disc)
-                mt = mt;
-            else if (mt == MeshType::Star)
-                mt = mt;
-            else if (mt == MeshType::ExpandedStar)
-                mt = mt;
-            else if (mt == MeshType::Cog)
-                mt = mt;
-#endif
-        }
-
-        vec2 res = vec2(.0f);
-        if (tcp == TexCoordPos::BL)
-            res = BL;
-        else if (tcp == TexCoordPos::BR)
-            res = vec2(TR.x, BL.y);
-        else if (tcp == TexCoordPos::TL)
-            res = vec2(BL.x, TR.y);
-        else if (tcp == TexCoordPos::TR)
-            res = TR;
-
-        return res * m_texcoord_scale + m_texcoord_offset2;
-    }
-
-    // UV2
-    void SetTexCoordBuildType2(MeshType mt, TexCoordBuildType tcbt) { m_texcoord_build_type2[mt.ToScalar()] = (1 << (tcbt.ToScalar() + 1)) | (m_texcoord_build_type2[mt.ToScalar()] & 1); }
-    TexCoordBuildType GetTexCoordBuildType2(MeshType mt)
-    {
-        uint32_t flag = ((m_texcoord_build_type2[mt.ToScalar()] & ~(1)) >> 1);
-        int i = 0;
-        while (flag >>= 1)
-            i++;
-        return TexCoordBuildType(i);
-    }
-    void SetTexCoordCustomBuild2(MeshType mt, MeshFaceType face, vec2 BL, vec2 TR)
-    {
-        if (face.ToScalar() >= m_texcoord_custom_build2[mt.ToScalar()].count())
-            m_texcoord_custom_build2[mt.ToScalar()].resize(face.ToScalar() + 1);
-        m_texcoord_custom_build2[mt.ToScalar()][face.ToScalar()].m1 = BL;
-        m_texcoord_custom_build2[mt.ToScalar()][face.ToScalar()].m2 = TR;
-        m_texcoord_build_type2[mt.ToScalar()] |= 1;
-    }
-    void ClearTexCoordCustomBuild2(MeshType mt) { m_texcoord_build_type2[mt.ToScalar()] &= ~1; }
-    vec2 TexCoord2(MeshType mt, TexCoordPos tcp, MeshFaceType face)
-    {
-        vec2 BL = vec2(0.f);
-        vec2 TR = vec2(0.f);
-        if (m_texcoord_build_type2[mt.ToScalar()] & 1
-             && face.ToScalar() < m_texcoord_custom_build2[mt.ToScalar()].count())
-        {
-            BL = m_texcoord_custom_build2[mt.ToScalar()][face.ToScalar()].m1;
-            TR = m_texcoord_custom_build2[mt.ToScalar()][face.ToScalar()].m2;
-        }
-        else
-        {
-            TexCoordBuildType tcbt = GetTexCoordBuildType2(mt);
-            UNUSED(tcbt);
-            if (mt == MeshType::Quad)
-            {
-                // There's nothin' else than QuadDefault
-                BL = vec2(0.f);
-                TR = vec2(1.f);
-            }
-#if 0
-            else if (mt == MeshType::Triangle)
-                mt = mt;
-#endif
-            else if (mt == MeshType::Box)
-            {
-                vec2 data[][2] =
-                { // TexCoordBuildType::BoxDefault
-                    { vec2(0.f), vec2(.5f) },
-                    { vec2(.5f, 0.f), vec2(1.f, .5f) },
-                    { vec2(0.f), vec2(.5f) },
-                    { vec2(.5f, 0.f), vec2(1.f, .5f) },
-                    { vec2(0.f, .5f), vec2(.5f, 1.f) },
-                    { vec2(.5f, .5f), vec2(1.f, 1.f) }
-                };
-                BL = data[face.ToScalar()][0]; // [tcbt]
-                TR = data[face.ToScalar()][1]; // [tcbt]
-            }
-#if 0
-            else if (mt == MeshType::Sphere)
-                mt = mt;
-            else if (mt == MeshType::Capsule)
-                mt = mt;
-            else if (mt == MeshType::Torus)
-                mt = mt;
-            else if (mt == MeshType::Cylinder)
-                mt = mt;
-            else if (mt == MeshType::Disc)
-                mt = mt;
-            else if (mt == MeshType::Star)
-                mt = mt;
-            else if (mt == MeshType::ExpandedStar)
-                mt = mt;
-            else if (mt == MeshType::Cog)
-                mt = mt;
-#endif
-        }
-
-        vec2 res = vec2(.0f);
-        if (tcp == TexCoordPos::BL)
-            res = BL;
-        else if (tcp == TexCoordPos::BR)
-            res = vec2(TR.x, BL.y);
-        else if (tcp == TexCoordPos::TL)
-            res = vec2(BL.x, TR.y);
-        else if (tcp == TexCoordPos::TR)
-            res = TR;
-
-        return res * m_texcoord_scale + m_texcoord_offset2;
-    }
-
-    inline bool IsEnabled(MeshBuildOperation mbo) { return (m_build_flags & mbo.ToScalar()) != 0; }
-    inline void Enable(MeshBuildOperation mbo) { m_build_flags |= mbo.ToScalar(); }
-    inline void Disable(MeshBuildOperation mbo) { m_build_flags &= ~mbo.ToScalar(); }
-    inline void Toggle(MeshBuildOperation mbo) { m_build_flags ^= mbo.ToScalar(); }
-    inline void Set(MeshBuildOperation mbo, bool value) { if (value) Enable(mbo); else Disable(mbo); }
-
-public:
-    CommandStack        m_stack;
-    int                 m_i_cmd;
-    int                 m_exec_nb;
-    array<int, int>     m_loop_stack;
-    vec4                m_color_a;
-    vec4                m_color_b;
-    vec2                m_texcoord_offset;
-    vec2                m_texcoord_offset2;
-    vec2                m_texcoord_scale;
-    vec2                m_texcoord_scale2;
-    array<vec2, vec2>   m_texcoord_custom_build[MeshType::MAX];
-    array<vec2, vec2>   m_texcoord_custom_build2[MeshType::MAX];
-    uint32_t            m_texcoord_build_type[MeshType::MAX];
-    uint32_t            m_texcoord_build_type2[MeshType::MAX];
-    uint32_t            m_build_flags = MeshBuildOperation::PreventVertCleanup;
-};
-
-//VDictType -- A safe enum for VertexDictionnary operations. ------------------
-struct VDictTypeBase : public StructSafeEnum
-{
-    enum Type
-    {
-        DoesNotExist = -3,
-        Alone = -2,
-        Master = -1,
-    };
-protected:
-    virtual bool BuildEnumMap(std::map<int64_t, std::string>& enum_map)
-    {
-        enum_map[DoesNotExist] = "DoesNotExist";
-        enum_map[Alone] = "Alone";
-        enum_map[Master] = "Master";
-        return true;
-    }
-};
-typedef SafeEnum<VDictTypeBase> VDictType;
-
-/* TODO : replace VDict by a proper Half-edge system */
-//a class whose goal is to keep a list of the adjacent vertices for mesh operations purposes
-class VertexDictionnary
-{
-public:
-    int FindVertexMaster(const int search_idx);
-    bool FindMatchingVertices(const int search_idx, array<int> &matching_ids);
-    bool FindConnectedVertices(const int search_idx, const array<uint16_t> &tri_list, const int tri0, array<int> &connected_vert, array<int> const *ignored_tri = nullptr);
-    bool FindConnectedTriangles(const int search_idx, const array<uint16_t> &tri_list, const int tri0, array<int> &connected_tri, array<int> const *ignored_tri = nullptr);
-    bool FindConnectedTriangles(const ivec2 &search_idx, const array<uint16_t> &tri_list, const int tri0, array<int> &connected_tri, array<int> const *ignored_tri = nullptr);
-    bool FindConnectedTriangles(const ivec3 &search_idx, const array<uint16_t> &tri_list, const int tri0, array<int> &connected_tri, array<int> const *ignored_tri = nullptr);
-    void RegisterVertex(int vert_id, vec3 vert_coord);
-    void RemoveVertex(int vert_id);
-    bool GetMasterList(array<int> &ret_master_list) { ret_master_list = master_list; return ret_master_list.count() > 0; }
-    void Clear() { vertex_list.clear(); }
-private:
-    //<VertexId, VertexLocation, VertexMasterId>
-    array<int, vec3, int>   vertex_list;
-    //List of the master_ vertices
-    array<int>              master_list;
-};
-
-} /* namespace lol */
-
diff --git a/src/easymesh/easymeshcsg.cpp b/src/easymesh/easymeshcsg.cpp
deleted file mode 100644
index 3560b0a2..00000000
--- a/src/easymesh/easymeshcsg.cpp
+++ /dev/null
@@ -1,219 +0,0 @@
-//
-//  EasyMesh-Csg: The code belonging to CSG operations
-//
-//  Copyright © 2010—2019 Sam Hocevar <sam@hocevar.net>
-//            © 2009—2015 Cédric Lecacheur <jordx@free.fr>
-//            © 2009—2015 Benjamin "Touky" Huet <huet.benjamin@gmail.com>
-//
-//  Lol Engine is free software. It comes without any warranty, to
-//  the extent permitted by applicable law. You can redistribute it
-//  and/or modify it under the terms of the Do What the Fuck You Want
-//  to Public License, Version 2, as published by the WTFPL Task Force.
-//  See http://www.wtfpl.net/ for more details.
-//
-
-#include <lol/engine-internal.h>
-
-namespace lol
-{
-
-//-----------------------------------------------------------------------------
-void EasyMesh::CsgUnion() { MeshCsg(CSGUsage::Union); }
-void EasyMesh::CsgSub()   { MeshCsg(CSGUsage::Substract); }
-void EasyMesh::CsgSubL()  { MeshCsg(CSGUsage::SubstractLoss); }
-void EasyMesh::CsgAnd()   { MeshCsg(CSGUsage::And); }
-void EasyMesh::CsgXor()   { MeshCsg(CSGUsage::Xor); }
-
-//-----------------------------------------------------------------------------
-void EasyMesh::MeshCsg(CSGUsage csg_operation)
-{
-    if (BD()->IsEnabled(MeshBuildOperation::CommandRecording))
-    {
-        BD()->CmdStack().AddCmd(EasyMeshCmdType::MeshCsg);
-        BD()->CmdStack() << csg_operation;
-        return;
-    }
-
-    //A vertex dictionnary for vertices on the same spot.
-    array< int, int > vertex_dict;
-    //This list keeps track of the triangle that will need deletion at the end.
-    array< int > triangle_to_kill;
-    //Listing for each triangle of the vectors intersecting it. <tri_Id, <Point0, Point1, tri_isec_Normal>>
-    array< int, array< vec3, vec3, vec3 > > triangle_isec;
-    //keep a track of the intersection point on the triangle. <pos, side_id>
-    array< vec3, int > triangle_vertex;
-    for (int k = 0; k < 10; k++)
-        triangle_vertex.push(vec3(.0f), 0);
-
-    //bsp infos
-    CsgBsp mesh_bsp_0;
-    CsgBsp mesh_bsp_1;
-
-    if (m_cursors.count() == 0)
-        return;
-
-    //BSP BUILD : We use the brace logic, csg should be used as : "[ exp .... [exp .... csg]]"
-    int cursor_start = (m_cursors.count() < 2)?(0):(m_cursors[(m_cursors.count() - 2)].m2);
-    for (int mesh_id = 0; mesh_id < 2; mesh_id++)
-    {
-        int start_point = (mesh_id == 0) ? (cursor_start) : (m_cursors.last().m2);
-        int end_point   = (mesh_id == 0) ? (m_cursors.last().m2) : (m_indices.count());
-        CsgBsp &mesh_bsp      = (mesh_id == 0) ? (mesh_bsp_0) : (mesh_bsp_1);
-        for (int i = start_point; i < end_point; i += 3)
-            mesh_bsp.AddTriangleToTree(i, m_vert[m_indices[i]].m_coord,
-                                          m_vert[m_indices[i + 1]].m_coord,
-                                          m_vert[m_indices[i + 2]].m_coord);
-    }
-
-    //BSP Usage : let's crunch all triangles on the correct BSP
-    int indices_count = m_indices.count();
-    for (int mesh_id = 0; mesh_id < 2; mesh_id++)
-    {
-        int start_point = (mesh_id == 0) ? (cursor_start) : (m_cursors.last().m2);
-        int end_point   = (mesh_id == 0) ? (m_cursors.last().m2) : (indices_count);
-        CsgBsp &mesh_bsp      = (mesh_id == 0) ? (mesh_bsp_1) : (mesh_bsp_0);
-        array< vec3, int, int, float > vert_list;
-        array< int, int, int, int > tri_list;
-        vec3 n0(.0f); vec3 n1(.0f);
-        vec4 c0(.0f); vec4 c1(.0f);
-
-        //Reserve some memory
-        vert_list.reserve(3);
-        tri_list.reserve(3);
-
-        for (int i = start_point; i < end_point; i += 3)
-        {
-            int Result = mesh_bsp.TestTriangleToTree(m_vert[m_indices[i]].m_coord,
-                                                     m_vert[m_indices[i + 1]].m_coord,
-                                                     m_vert[m_indices[i + 2]].m_coord, vert_list, tri_list);
-            int tri_base_idx = m_indices.count();
-
-            //one split has been done, we need to had the new vertices & the new triangles.
-            if (Result == 1)
-            {
-                triangle_to_kill.push(i);
-#if 1
-                int base_idx = m_vert.count();
-                for (int k = 3; k < vert_list.count(); k++)
-                {
-                    int P0 = (vert_list[k].m2 < 3) ? (m_indices[i + vert_list[k].m2]) : (base_idx + vert_list[k].m2 - 3);
-                    int P1 = (vert_list[k].m3 < 3) ? (m_indices[i + vert_list[k].m3]) : (base_idx + vert_list[k].m3 - 3);
-
-                    AddVertex(vert_list[k].m1);
-
-                    //Normal : bad calculations there.
-                    n0 = m_vert[P0].m_normal;
-                    n1 = m_vert[P1].m_normal;
-                    SetCurVertNormal(normalize(n0 + (n1 - n0) * vert_list[k].m4));
-
-#if 1
-                    //Color
-                    c0 = m_vert[P0].m_color;
-                    c1 = m_vert[P1].m_color;
-                    vec4 res = c0 + ((c1 - c0) * vert_list[k].m4);
-                    SetCurVertColor(res);
-#else
-                    if (mesh_id == 0)
-                        SetCurVertColor(vec4(1.0f, .0f, .0f, 1.0f));
-                    else
-                        SetCurVertColor(vec4(.0f, 1.0f, 1.0f, 1.0f));
-#endif
-                }
-                for (int k = 0; k < tri_list.count(); k++)
-                {
-                    int P0 = (tri_list[k].m2 < 3) ? (m_indices[i + tri_list[k].m2]) : (base_idx + (tri_list[k].m2 - 3));
-                    int P1 = (tri_list[k].m3 < 3) ? (m_indices[i + tri_list[k].m3]) : (base_idx + (tri_list[k].m3 - 3));
-                    int P2 = (tri_list[k].m4 < 3) ? (m_indices[i + tri_list[k].m4]) : (base_idx + (tri_list[k].m4 - 3));
-                    AddTriangle(P0, P1, P2, 0);
-                }
-#endif
-            }
-#if 1
-            //Main case
-            if (Result >= 0)
-            {
-                for (int k = 0; k < tri_list.count(); k++)
-                {
-                    int tri_idx = (tri_list.count() == 1) ? (i) : (tri_base_idx + k * 3);
-
-                    //Triangle Kill Test
-                    if (//csgu : CSGUnion() -> m0_Outside + m1_Outside
-                        (csg_operation == CSGUsage::Union && tri_list[k].m1 == LEAF_BACK) ||
-                        //csgs : CsgSub() -> m0_Outside + m1_Inside-inverted
-                        (csg_operation == CSGUsage::Substract &&
-                            ((mesh_id == 0 && tri_list[k].m1 == LEAF_BACK) ||
-                            (mesh_id == 1 && tri_list[k].m1 == LEAF_FRONT))) ||
-                        //csgs : CsgSubL() -> m0_Outside
-                        (csg_operation == CSGUsage::SubstractLoss &&
-                            ((mesh_id == 0 && tri_list[k].m1 == LEAF_BACK) || mesh_id == 1)) ||
-                        //csga : CSGAnd() -> m0_Inside + m1_Inside
-                        (csg_operation == CSGUsage::And && tri_list[k].m1 == LEAF_FRONT))
-                    {
-                        triangle_to_kill.push(tri_idx);
-                    }
-
-                    //Triangle Invert Test
-                    if (//csgs : CsgSub() -> m0_Outside + m1_Inside-inverted
-                        (csg_operation == CSGUsage::Substract && mesh_id == 1 && tri_list[k].m1 == LEAF_BACK) ||
-                        //csgx : CSGXor() -> m0_Outside/m0_Inside-inverted + m1_Outside/m1_Inside-inverted
-                        (csg_operation == CSGUsage::Xor && tri_list[k].m1 == LEAF_BACK))
-                    {
-                        //a Xor means we will share vertices with the outside, so duplicate the vertices.
-                        //TODO : This operation disconnect all triangle, in some cases, not a good thing.
-                        if (csg_operation == CSGUsage::Xor)
-                        {
-                            for (int l = 0; l < 3; l++)
-                            {
-                                AddDupVertex(m_indices[tri_idx + l]);
-                                m_indices[tri_idx + l] = (uint16_t)m_vert.count() - 1;
-                            }
-                        }
-                        m_indices[tri_idx + 1] += m_indices[tri_idx + 2];
-                        m_indices[tri_idx + 2]  = m_indices[tri_idx + 1] - m_indices[tri_idx + 2];
-                        m_indices[tri_idx + 1]  = m_indices[tri_idx + 1] - m_indices[tri_idx + 2];
-                        ComputeNormals(tri_idx, 3);
-                    }
-                }
-            }
-#endif
-            vert_list.clear();
-            tri_list.clear();
-        }
-    }
-
-//    FIXME: what was this code for?
-//    for (int i = 0; i < m_vert.count(); i++)
-//        if (length(m_vert[i].m_normal) < 1.0f)
-//            i = i;
-
-    int dir = 1;
-    for (int i = 0; i >= 0 && i < triangle_to_kill.count() - 1; i += dir)
-    {
-        if (triangle_to_kill[i] < triangle_to_kill[i + 1] && dir < 0)
-            dir = 1;
-        if (triangle_to_kill[i] == triangle_to_kill[i + 1])
-        {
-            triangle_to_kill.remove(i);
-            dir = -1;
-        }
-        if (triangle_to_kill[i] > triangle_to_kill[i + 1])
-        {
-            triangle_to_kill[i]     += triangle_to_kill[i + 1];
-            triangle_to_kill[i + 1]  = triangle_to_kill[i] - triangle_to_kill[i + 1];
-            triangle_to_kill[i]      = triangle_to_kill[i] - triangle_to_kill[i + 1];
-            dir = -1;
-        }
-        if (i == 0 && dir == -1)
-            dir = 1;
-    }
-    for (int i = triangle_to_kill.count() - 1; i >= 0; i--)
-        m_indices.remove(triangle_to_kill[i], 3);
-
-    m_cursors.last().m1 = m_vert.count();
-    m_cursors.last().m2 = m_indices.count();
-
-    VerticesCleanup();
-    //DONE for the splitting !
-}
-
-} /* namespace lol */
diff --git a/src/easymesh/easymeshcursor.cpp b/src/easymesh/easymeshcursor.cpp
deleted file mode 100644
index 274d8f16..00000000
--- a/src/easymesh/easymeshcursor.cpp
+++ /dev/null
@@ -1,178 +0,0 @@
-//
-// EasyMesh-Cursor: The code belonging to Cursor operations
-//
-// Copyright: (c) 2010-2015 Sam Hocevar <sam@hocevar.net>
-//            (c) 2009-2015 Cédric Lecacheur <jordx@free.fr>
-//            (c) 2009-2015 Benjamin "Touky" Huet <huet.benjamin@gmail.com>
-//   This program is free software; you can redistribute it and/or
-//   modify it under the terms of the Do What The Fuck You Want To
-//   Public License, Version 2, as published by Sam Hocevar. See
-//   http://www.wtfpl.net/ for more details.
-//
-
-#include <lol/engine-internal.h>
-
-namespace lol
-{
-
-//-----------------------------------------------------------------------------
-void EasyMesh::LoopStart(int loopnb)
-{
-    if (BD()->IsEnabled(MeshBuildOperation::CommandRecording))
-    {
-        BD()->CmdStack().AddCmd(EasyMeshCmdType::LoopStart);
-        BD()->CmdStack() << loopnb;
-        return;
-    }
-    //Loop is only available when executing a command recording
-    else if (BD()->IsEnabled(MeshBuildOperation::CommandExecution))
-    {
-        //Only register if we're not the current loop command
-        if (!BD()->LoopStack().count() || BD()->LoopStack().last().m1 != BD()->Cmdi())
-            BD()->LoopStack().push(BD()->Cmdi(), loopnb);
-    }
-}
-
-//-----------------------------------------------------------------------------
-void EasyMesh::LoopEnd()
-{
-    if (BD()->IsEnabled(MeshBuildOperation::CommandRecording))
-    {
-        BD()->CmdStack().AddCmd(EasyMeshCmdType::LoopEnd);
-        return;
-    }
-    //Loop is only available when executing a command recording
-    else if (BD()->IsEnabled(MeshBuildOperation::CommandExecution))
-    {
-        //Only register if we're not the current loop command
-        if (BD()->LoopStack().count())
-        {
-            BD()->LoopStack().last().m2--;
-            if (BD()->LoopStack().last().m2 > 0)
-                BD()->Cmdi() = BD()->LoopStack().last().m1 - 1;
-            else
-                BD()->LoopStack().pop();
-        }
-    }
-}
-
-//-----------------------------------------------------------------------------
-void EasyMesh::OpenBrace()
-{
-    if (BD()->IsEnabled(MeshBuildOperation::CommandRecording))
-    {
-        BD()->CmdStack().AddCmd(EasyMeshCmdType::OpenBrace);
-        return;
-    }
-
-    m_cursors.push(m_vert.count(), m_indices.count());
-}
-
-//-----------------------------------------------------------------------------
-void EasyMesh::CloseBrace()
-{
-    if (BD()->IsEnabled(MeshBuildOperation::CommandRecording))
-    {
-        BD()->CmdStack().AddCmd(EasyMeshCmdType::CloseBrace);
-        return;
-    }
-
-    m_cursors.pop();
-}
-
-//-----------------------------------------------------------------------------
-void EasyMesh::ToggleScaleWinding()
-{
-    if (BD()->IsEnabled(MeshBuildOperation::CommandRecording))
-    {
-        BD()->CmdStack().AddCmd(EasyMeshCmdType::ScaleWinding);
-        return;
-    }
-
-    BD()->Toggle(MeshBuildOperation::ScaleWinding);
-}
-
-//-----------------------------------------------------------------------------
-void EasyMesh::ToggleQuadWeighting()
-{
-    if (BD()->IsEnabled(MeshBuildOperation::CommandRecording))
-    {
-        BD()->CmdStack().AddCmd(EasyMeshCmdType::QuadWeighting);
-        return;
-    }
-
-    BD()->Toggle(MeshBuildOperation::QuadWeighting);
-}
-
-//-----------------------------------------------------------------------------
-void EasyMesh::TogglePostBuildNormal()
-{
-    if (BD()->IsEnabled(MeshBuildOperation::CommandRecording))
-    {
-        BD()->CmdStack().AddCmd(EasyMeshCmdType::PostBuildNormal);
-        return;
-    }
-
-    BD()->Toggle(MeshBuildOperation::PostBuildComputeNormals);
-}
-
-//-----------------------------------------------------------------------------
-void EasyMesh::ToggleVerticeNoCleanup()
-{
-    if (BD()->IsEnabled(MeshBuildOperation::CommandRecording))
-    {
-        BD()->CmdStack().AddCmd(EasyMeshCmdType::PreventVertCleanup);
-        return;
-    }
-
-    BD()->Toggle(MeshBuildOperation::PreventVertCleanup);
-}
-
-//-----------------------------------------------------------------------------
-void EasyMesh::SetCurColor(vec4 const &color)
-{
-    SetCurColorA(color);
-    SetCurColorB(color);
-}
-
-//-----------------------------------------------------------------------------
-void EasyMesh::SetCurColorA(vec4 const &color)
-{
-    if (BD()->IsEnabled(MeshBuildOperation::CommandRecording))
-    {
-        BD()->CmdStack().AddCmd(EasyMeshCmdType::SetColorA);
-        BD()->CmdStack() << color;
-        return;
-    }
-
-    BD()->ColorA() = color;
-}
-
-//-----------------------------------------------------------------------------
-void EasyMesh::SetCurColorB(vec4 const &color)
-{
-    if (BD()->IsEnabled(MeshBuildOperation::CommandRecording))
-    {
-        BD()->CmdStack().AddCmd(EasyMeshCmdType::SetColorB);
-        BD()->CmdStack() << color;
-        return;
-    }
-
-    BD()->ColorB() = color;
-}
-
-//-----------------------------------------------------------------------------
-void EasyMesh::SetVertColor(vec4 const &color)
-{
-    if (BD()->IsEnabled(MeshBuildOperation::CommandRecording))
-    {
-        BD()->CmdStack().AddCmd(EasyMeshCmdType::SetVertColor);
-        BD()->CmdStack() << color;
-        return;
-    }
-
-    for (int i = m_cursors.last().m1; i < m_vert.count(); i++)
-        m_vert[i].m_color = color;
-}
-
-} /* namespace lol */
diff --git a/src/easymesh/easymeshinternal.cpp b/src/easymesh/easymeshinternal.cpp
deleted file mode 100644
index 7733e226..00000000
--- a/src/easymesh/easymeshinternal.cpp
+++ /dev/null
@@ -1,501 +0,0 @@
-//
-// EasyMesh-Internal: The code belonging to internal operations
-//
-// Copyright: (c) 2010-2015 Sam Hocevar <sam@hocevar.net>
-//            (c) 2009-2015 Cédric Lecacheur <jordx@free.fr>
-//            (c) 2009-2015 Benjamin "Touky" Huet <huet.benjamin@gmail.com>
-//   This program is free software; you can redistribute it and/or
-//   modify it under the terms of the Do What The Fuck You Want To
-//   Public License, Version 2, as published by Sam Hocevar. See
-//   http://www.wtfpl.net/ for more details.
-//
-
-#include <lol/engine-internal.h>
-
-namespace lol
-{
-
-//-----------------------------------------------------------------------------
-void EasyMesh::AddVertex(vec3 const &coord)
-{
-    m_vert.push(VertexData(coord, vec3(0.f, 1.f, 0.f), BD()->ColorA()));
-    m_state = MeshRender::NeedConvert;
-}
-
-//-----------------------------------------------------------------------------
-void EasyMesh::AddDupVertex(int i)
-{
-    m_vert << m_vert[i];
-    m_state = MeshRender::NeedConvert;
-}
-
-//-----------------------------------------------------------------------------
-void EasyMesh::AddLerpVertex(int i, int j, float alpha) { AddLerpVertex(m_vert[i], m_vert[j], alpha); }
-void EasyMesh::AddLerpVertex(VertexData const &vi, VertexData const &vj, float alpha)
-{
-    m_vert.push(GetLerpVertex(vi, vj, alpha));
-    m_state = MeshRender::NeedConvert;
-}
-
-//-----------------------------------------------------------------------------
-VertexData EasyMesh::GetLerpVertex(int i, int j, float alpha) { return GetLerpVertex(m_vert[i], m_vert[j], alpha); }
-VertexData EasyMesh::GetLerpVertex(VertexData const &vi, VertexData const &vj, float alpha)
-{
-    return VertexData(
-        lol::lerp(vi.m_coord,    vj.m_coord,      alpha),
-        lol::lerp(vi.m_normal,   vj.m_normal,     alpha),
-        lol::lerp(vi.m_color,    vj.m_color,      alpha),
-        lol::lerp(vi.m_texcoord, vj.m_texcoord,   alpha),
-        ((alpha < .5f) ? (vi.m_bone_id) : (vj.m_bone_id)), /* FIXME ? */
-        lol::lerp(vi.m_bone_weight, vj.m_bone_weight, alpha));
-}
-
-//-----------------------------------------------------------------------------
-void EasyMesh::AddQuad(int i1, int i2, int i3, int i4, int base, bool duplicate)
-{
-    if (duplicate)
-    {
-        int vbase = m_vert.count();
-        AddDupVertex(base + i1);
-        AddDupVertex(base + i2);
-        AddDupVertex(base + i3);
-        AddDupVertex(base + i4);
-
-        AddQuad(0, 1, 2, 3, vbase);
-    }
-    else
-    {
-        if (BD()->IsEnabled(MeshBuildOperation::QuadWeighting) &&
-            !BD()->IsEnabled(MeshBuildOperation::IgnoreQuadWeighting))
-        {
-            int i5 = m_vert.count();
-            AddLerpVertex(GetLerpVertex(base + i1, base + i3, .5f),
-                          GetLerpVertex(base + i2, base + i4, .5f), .5f);
-            m_indices << i1 + base;
-            m_indices << i2 + base;
-            m_indices << i5;
-
-            m_indices << i2 + base;
-            m_indices << i3 + base;
-            m_indices << i5;
-
-            m_indices << i4 + base;
-            m_indices << i1 + base;
-            m_indices << i5;
-
-            m_indices << i5;
-            m_indices << i3 + base;
-            m_indices << i4 + base;
-        }
-        else
-        {
-            m_indices << i1 + base;
-            m_indices << i2 + base;
-            m_indices << i3 + base;
-
-            m_indices << i4 + base;
-            m_indices << i1 + base;
-            m_indices << i3 + base;
-        }
-    }
-}
-
-//-----------------------------------------------------------------------------
-void EasyMesh::AddTriangle(int i1, int i2, int i3, int base, bool duplicate)
-{
-    if (duplicate)
-    {
-        m_indices << (uint16_t)m_vert.count(); AddDupVertex(base + i1);
-        m_indices << (uint16_t)m_vert.count(); AddDupVertex(base + i2);
-        m_indices << (uint16_t)m_vert.count(); AddDupVertex(base + i3);
-    }
-    else
-    {
-        m_indices << base + i1;
-        m_indices << base + i2;
-        m_indices << base + i3;
-    }
-}
-
-//-----------------------------------------------------------------------------
-void EasyMesh::ComputeNormals(int start, int vcount)
-{
-
-    if (BD()->IsEnabled(MeshBuildOperation::CommandExecution) &&
-        BD()->IsEnabled(MeshBuildOperation::PostBuildComputeNormals))
-        return;
-
-    array< array<vec3> > normals;
-    normals.resize(m_vert.count());
-    for (int i = 0; i < vcount; i += 3)
-    {
-        vec3 v0 = m_vert[m_indices[start + i + 2]].m_coord
-                - m_vert[m_indices[start + i + 0]].m_coord;
-        vec3 v1 = m_vert[m_indices[start + i + 1]].m_coord
-                - m_vert[m_indices[start + i + 0]].m_coord;
-        vec3 n = normalize(cross(v1, v0));
-
-        for (int j = 0; j < 3; j++)
-            normals[m_indices[start + i + j]] << n;
-    }
-
-    for (int i = 0; i < normals.count(); i++)
-    {
-        if (normals[i].count() > 0)
-        {
-            //remove doubles
-            for (int j = 0; j < normals[i].count(); ++j)
-                for (int k = j + 1; k < normals[i].count(); ++k)
-                    if (1.f - dot(normals[i][k], normals[i][j]) < .00001f)
-                        normals[i].remove(k--);
-
-            vec3 newv = vec3::zero;
-            for (int j = 0; j < normals[i].count(); ++j)
-                newv += normals[i][j];
-            m_vert[i].m_normal = normalize(newv / (float)normals[i].count());
-        }
-    }
-}
-
-//-----------------------------------------------------------------------------
-void EasyMesh::VerticesCleanup()
-{
-    array<int> vert_ids;
-    vert_ids.resize(m_vert.count(), 0);
-
-    //1: Remove triangles with two vertices on each other
-    for (int i = 0; i < m_indices.count(); i += 3)
-    {
-        bool remove = false;
-        for (int j = 0; !remove && j < 3; ++j)
-            if (length(m_vert[m_indices[i + j]].m_coord - m_vert[m_indices[i + (j + 1) % 3]].m_coord) < .00001f)
-                remove = true;
-        if (remove)
-        {
-            m_indices.remove_swap(i, 3);
-            i -= 3;
-        }
-        else
-        {
-            //1.5: Mark all used vertices
-            for (int j = 0; j < 3; ++j)
-                vert_ids[m_indices[i + j]] = 1;
-        }
-    }
-
-    //2: Remove all unused vertices
-    array<VertexData> old_vert = m_vert;
-    int shift = 0;
-    m_vert.clear();
-    for (int i = 0; i < vert_ids.count(); ++i)
-    {
-        //Unused vertex, update the shift quantity instead of keeping it.
-        if (vert_ids[i] == 0)
-            shift++;
-        else
-            m_vert << old_vert[i];
-        //Always mark it with the shift quantity
-        vert_ids[i] = shift;
-    }
-
-    //3: Update the indices
-    for (int i = 0; i < m_indices.count(); ++i)
-        m_indices[i] -= vert_ids[m_indices[i]];
-}
-
-//-----------------------------------------------------------------------------
-void EasyMesh::VerticesMerge()
-{
-    if (BD()->IsEnabled(MeshBuildOperation::CommandRecording))
-    {
-        BD()->CmdStack().AddCmd(EasyMeshCmdType::VerticesMerge);
-        return;
-    }
-
-    //1: Crunch all vertices in the dictionnary
-    VertexDictionnary vert_dict;
-    for (int i = m_cursors.last().m1; i < m_vert.count(); i++)
-        vert_dict.RegisterVertex(i, m_vert[i].m_coord);
-
-    //2: Update the indices
-    for (int i = 0; i < m_indices.count(); ++i)
-    {
-        int master = vert_dict.FindVertexMaster(m_indices[i]);
-        if (master >= 0)
-            m_indices[i] = master;
-    }
-
-    //2: Cleanup
-    VerticesCleanup();
-}
-
-//-----------------------------------------------------------------------------
-void EasyMesh::VerticesSeparate()
-{
-    if (BD()->IsEnabled(MeshBuildOperation::CommandRecording))
-    {
-        BD()->CmdStack().AddCmd(EasyMeshCmdType::VerticesSeparate);
-        return;
-    }
-
-    array< array<int> > new_ids;
-    array<int> vert_ids;
-    vert_ids.resize(m_vert.count(), 0);
-
-    //1: Mark all used vertices
-    for (int i = 0; i < m_indices.count(); ++i)
-        vert_ids[m_indices[i]]++;
-
-    //2: Update the vertices
-    int vbase = m_cursors.last().m1;
-    int vcount = m_vert.count();
-    new_ids.resize(vcount);
-    for (int i = vbase; i < vcount; i++)
-    {
-        while (vert_ids[i] > 1)
-        {
-            //Add duplicate
-            new_ids[i] << m_vert.count();
-            AddDupVertex(i);
-            vert_ids[i]--;
-        }
-    }
-
-    //3: Update the indices
-    for (int i = 0; i < m_indices.count(); ++i)
-    {
-        if (new_ids[m_indices[i]].count())
-        {
-            int j = new_ids[m_indices[i]].pop();
-            m_indices[i] = j;
-        }
-    }
-
-    //4: Cleanup
-    VerticesCleanup();
-}
-
-//-----------------------------------------------------------------------------
-void EasyMesh::ComputeTexCoord(float uv_scale, int uv_offset)
-{
-    UNUSED(uv_scale, uv_offset);
-#if 0
-    VertexDictionnary vert_dict;
-    array<int> tri_list;
-
-    tri_list.Reserve(m_indices.count() - m_cursors.last().m2);
-    for (int i = m_cursors.last().m2; i < m_indices.count(); i++)
-    {
-        vert_dict.RegisterVertex(m_indices[i], m_vert[m_indices[i]].m_coord);
-        tri_list << m_indices[i];
-    }
-
-    //full triangle count
-    array<int> tri_done;
-    array<int> tri_check;
-    int tri_count = (m_indices.count() - m_cursors.last().m2) / 3;
-
-    tri_check << tri_list[0];
-
-    while (tri_check.count())
-    {
-        int cur_tri = tri_check[0];
-        int v[3]   = { tri_list[cur_tri + uv_offset % 3], tri_list[cur_tri + (1 + uv_offset) % 3], tri_list[cur_tri + (2 + uv_offset) % 3] };
-        vec2 uv[3] = { m_vert[tri_list[cur_tri]].m_texcoord.xy, m_vert[tri_list[cur_tri + 1]].m_texcoord.xy, m_vert[tri_list[cur_tri + 2]].m_texcoord.xy };
-        for (int j = 0; j < 3; j++)
-        {
-            if (uv[j] != vec2(-1.0f) && uv[j] == uv[(j + 1) % 3])
-            {
-                uv[0] = vec2(-1.0f);
-                uv[1] = vec2(-1.0f);
-                uv[2] = vec2(-1.0f);
-                break;
-            }
-        }
-        int uv_set = 0;
-        for (int j = 0; j < 3; j++)
-            uv_set += (uv[j].x < 0.f)?(0):(1);
-
-        //this case shouldn't happen.
-        if (uv_set == 1)
-        {
-            /*
-            for (int j = 0; j < 3; j++)
-            {
-                if (uv[j] != vec2(-1.0f))
-                {
-                    uv[(j + 1) % 2] = uv[j] + vec2(.0f, uv_scale * length(m_vert[v[j]].m1 - m_vert[v[(j + 1) % 3]].m1));
-                    uv_set = 2;
-                    break;
-                }
-            }
-            */
-        }
-        //No UV is set, let's do the arbitrary set and use the basic method.
-        if (uv_set == 0)
-        {
-            float new_dot = FLT_MAX;
-            int base_i = 0;
-            for (int j = 0; j < 3; j++)
-            {
-                float tmp_dot = abs(dot(normalize(m_vert[v[(j + 1) % 3]].m_coord - m_vert[v[j]].m_coord),
-                                        normalize(m_vert[v[(j + 2) % 3]].m_coord - m_vert[v[j]].m_coord)));
-                if (tmp_dot < new_dot)
-                {
-                    base_i = j;
-                    new_dot = tmp_dot;
-                }
-            }
-            uv[base_i] = vec2(.0f);
-            uv[(base_i + 1) % 3] = vec2(.0f, uv_scale * length(m_vert[v[base_i]].m_coord - m_vert[v[(base_i + 1) % 3]].m_coord));
-            uv_set = 2;
-        }
-        //2 points have been set, let's figure the third
-        if (uv_set == 2)
-        {
-            {
-                //invert values so the two set uv are in [0, 1] slots.
-                int new_v[3];
-                vec2 new_uv[3];
-                bool ignore_set = false;
-                if (uv[0].x >= 0.f && uv[1].x < 0.f)
-                {
-                    new_v[0] = v[2]; new_v[1] = v[0]; new_v[2] = v[1];
-                    new_uv[0] = uv[2]; new_uv[1] = uv[0]; new_uv[2] = uv[1];
-                }
-                else if (uv[0].x < 0.f && uv[1].x >= 0.f)
-                {
-                    new_v[0] = v[1]; new_v[1] = v[2]; new_v[2] = v[0];
-                    new_uv[0] = uv[1]; new_uv[1] = uv[2]; new_uv[2] = uv[0];
-                }
-                else
-                    ignore_set = true;
-                if (!ignore_set)
-                {
-                    v[0]  = new_v[0];  v[1]  = new_v[1];  v[2]  = new_v[2];
-                    uv[0] = new_uv[0]; uv[1] = new_uv[1]; uv[2] = new_uv[2];
-                }
-            }
-
-            //Do this to be sure the normal is OK.
-            ComputeNormals(cur_tri, 3);
-            vec3 v01 = normalize(m_vert[v[1]].m_coord - m_vert[v[0]].m_coord);
-            vec3 v02 = m_vert[v[2]].m_coord - m_vert[v[0]].m_coord;
-            vec3 v_dir = normalize(cross(m_vert[m_indices[cur_tri]].m_normal, v01));
-            vec2 texu_dir = uv[1] - uv[0];
-            vec2 texv_dir = vec2(texu_dir.y, texu_dir.x);
-            //Final calculations
-            uv[2] = texu_dir * dot(v01, v02) + texv_dir * dot(v_dir, v02);
-
-            //Set UV on ALL matching vertices!
-            array<int> matching_vert;
-            for (int i = 0; i < 3; i++)
-            {
-#if 1
-                //This marks all same position UV to the same values
-                //Deactivation is a test.
-                matching_vert << v[i];
-                vert_dict.FindMatchingVertices(v[i], matching_vert);
-                for (int j = 0; j < matching_vert.count(); j++)
-                    if (m_vert[matching_vert[j]].m_texcoord.xy == vec2(-1.0f))
-                        m_vert[matching_vert[j]].m_texcoord = vec4(abs(uv[i]), m_vert[matching_vert[j]].m_texcoord.zw);
-#else
-                m_vert[v[i]].m_texcoord = abs(uv[i]);
-#endif
-            }
-
-            tri_done << cur_tri;
-            tri_check.remove(0);
-
-            //Get connected triangles and go from there.
-            for (int j = 0; j < 3; j++)
-            {
-#if 1
-                //This finds triangle that are connected to this triangle
-                vert_dict.FindConnectedTriangles(ivec2(v[j], v[(j + 1) % 3]), tri_list, tri_check, &tri_done);
-#else
-                //This finds triangle that are connected to the vertices of this triangle
-                vert_dict.FindConnectedTriangles(v[j], tri_list, tri_check, &tri_done);
-#endif
-            }
-        }
-        else if (uv_set == 3)
-        {
-            for (int j = 0; j < 3; j++)
-            {
-                m_vert[tri_list[cur_tri]].m_texcoord     = vec4(vec2(-1.0f), m_vert[tri_list[cur_tri]].m_texcoord.zw);
-                m_vert[tri_list[cur_tri + 1]].m_texcoord = vec4(vec2(-1.0f), m_vert[tri_list[cur_tri + 1]].m_texcoord.zw);
-                m_vert[tri_list[cur_tri + 2]].m_texcoord = vec4(vec2(-1.0f), m_vert[tri_list[cur_tri + 2]].m_texcoord.zw);
-            }
-
-            //uv[0] = vec2(-1.0f);
-            //uv[1] = vec2(-1.0f);
-            //uv[2] = vec2(-1.0f);
-            /*
-            bool tri_present = false;
-            for (int j = 0; j < tri_done.count(); j++)
-                if (cur_tri == tri_done[j])
-                    tri_present = true;
-            if (!tri_present)
-                tri_done << cur_tri;
-            tri_check.remove(0);
-            */
-        }
-
-        if (tri_check.count() == 0 && tri_done.count() != tri_count)
-        {
-            //look for unset triangle
-            for (int i = 0; !tri_check.count() && i < tri_list.count(); i += 3)
-            {
-                bool tri_present = false;
-                for (int j = 0; j < tri_done.count(); j++)
-                    if (i == tri_done[j])
-                        tri_present = true;
-                if (!tri_present)
-                    tri_check << i;
-            }
-        }
-    }
-#endif
-}
-
-//-----------------------------------------------------------------------------
-void EasyMesh::SetTexCoordData(vec2 const &new_offset, vec2 const &new_scale)
-{
-    BD()->TexCoordOffset() = new_offset;
-    BD()->TexCoordScale() = new_scale;
-}
-
-//-----------------------------------------------------------------------------
-void EasyMesh::SetTexCoordData2(vec2 const &new_offset, vec2 const &new_scale)
-{
-    BD()->TexCoordOffset2() = new_offset;
-    BD()->TexCoordScale2() = new_scale;
-}
-
-//-----------------------------------------------------------------------------
-void EasyMesh::SetCurVertNormal(vec3 const &normal)
-{
-    m_vert.last().m_normal = normal;
-}
-
-//-----------------------------------------------------------------------------
-void EasyMesh::SetCurVertColor(vec4 const &color)
-{
-    m_vert.last().m_color = color;
-}
-
-//-----------------------------------------------------------------------------
-void EasyMesh::SetCurVertTexCoord(vec2 const &texcoord)
-{
-    m_vert.last().m_texcoord = vec4(texcoord, m_vert.last().m_texcoord.zw);
-}
-
-//-----------------------------------------------------------------------------
-void EasyMesh::SetCurVertTexCoord2(vec2 const &texcoord)
-{
-    m_vert.last().m_texcoord = vec4(m_vert.last().m_texcoord.xy, texcoord);
-}
-
-} /* namespace lol */
-
diff --git a/src/easymesh/easymeshlua.cpp b/src/easymesh/easymeshlua.cpp
deleted file mode 100644
index 30fdf7fe..00000000
--- a/src/easymesh/easymeshlua.cpp
+++ /dev/null
@@ -1,316 +0,0 @@
-//
-//  Lol Engine
-//
-//  Copyright © 2009—2015 Benjamin “Touky” Huet <huet.benjamin@gmail.com>
-//            © 2017—2018 Sam Hocevar <sam@hocevar.net>
-//
-//  Lol Engine is free software. It comes without any warranty, to
-//  the extent permitted by applicable law. You can redistribute it
-//  and/or modify it under the terms of the Do What the Fuck You Want
-//  to Public License, Version 2, as published by the WTFPL Task Force.
-//  See http://www.wtfpl.net/ for more details.
-//
-
-#if HAVE_CONFIG_H
-#   include "config.h"
-#endif
-
-#include <lol/engine.h>
-#include <lol/lua.h>
-
-#include <cstdio>
-#include <string>
-#include <map>
-
-#include "loldebug.h"
-
-//
-//  EasyMesh Lua loader
-//
-
-using namespace lol;
-
-//-----------------------------------------------------------------------------
-EasyMeshLuaLoader::EasyMeshLuaLoader() : LuaLoader()
-{
-    lua_State* l = GetLuaState();
-
-    //Registering demo object
-    LuaObjectHelper::Register<EasyMeshLuaObject>(l);
-}
-
-//-----------------------------------------------------------------------------
-EasyMeshLuaLoader::~EasyMeshLuaLoader()
-{
-
-}
-
-//-----------------------------------------------------------------------------
-static array<EasyMeshLuaObject*> g_instances;
-void EasyMeshLuaLoader::Store(LuaObject* obj)
-{
-    EasyMeshLuaObject* ezm = static_cast<EasyMeshLuaObject*>(obj);
-    g_instances << ezm;
-}
-
-//-----------------------------------------------------------------------------
-array<EasyMeshLuaObject*>& EasyMeshLuaLoader::GetInstances()
-{
-    return g_instances;
-}
-
-//-----------------------------------------------------------------------------
-std::map<std::string, EasyMeshLuaObject*> EasyMeshLuaLoader::m_meshes;
-void EasyMeshLuaLoader::RegisterMesh(EasyMeshLuaObject* mesh, std::string const& name)
-{
-    m_meshes[name] = mesh;
-}
-
-//-----------------------------------------------------------------------------
-bool EasyMeshLuaLoader::GetRegisteredMeshes(std::map<std::string, EasyMeshLuaObject*>& meshes)
-{
-    meshes = m_meshes;
-    return m_meshes.size() > 0;
-}
-
-//-----------------------------------------------------------------------------
-EasyMeshLuaObject::EasyMeshLuaObject(std::string const& name) : LuaObject()
-{
-    if (name.length() > 0)
-        EasyMeshLuaLoader::RegisterMesh(this, name);
-}
-
-//-----------------------------------------------------------------------------
-EasyMeshLuaObject::~EasyMeshLuaObject()
-{
-}
-
-//-----------------------------------------------------------------------------
-EasyMeshLuaObject* EasyMeshLuaObject::New(lua_State* l, int arg_nb)
-{
-    UNUSED(l);
-    UNUSED(arg_nb);
-    LuaStack s = LuaStack::Begin(l);
-    std::string str = s.Get<std::string>("");
-    return new EasyMeshLuaObject(str);
-}
-
-//-----------------------------------------------------------------------------
-const LuaObjectLibrary* EasyMeshLuaObject::GetLib()
-{
-#define EMLO EasyMeshLuaObject
-
-    static const LuaObjectLibrary lib = LuaObjectLibrary(
-        "EasyMesh",
-        //Statics
-        { { nullptr, nullptr } },
-        //Methods
-        {
-            //-----------------------------------------------------------------
-            { "AddCylinder", &EMLO::AppendCylinder }, { "ac", &EMLO::AppendCylinder },
-            { "AddSphere", &EMLO::AppendSphere }, { "asph", &EMLO::AppendSphere },
-            { "AddCapsule", &EMLO::AppendCapsule }, { "acap", &EMLO::AppendCapsule },
-            { "AddTorus", &EMLO::AppendTorus }, { "ato", &EMLO::AppendTorus },
-            { "AddBox", &EMLO::AppendBox }, { "ab", &EMLO::AppendBox },
-            { "AddStar", &EMLO::AppendStar }, { "as", &EMLO::AppendStar },
-            { "AddExpandedStar", &EMLO::AppendExpandedStar }, { "aes", &EMLO::AppendExpandedStar },
-            { "AddDisc", &EMLO::AppendDisc }, { "ad", &EMLO::AppendDisc },
-            { "AddTriangle", &EMLO::AppendSimpleTriangle }, { "at", &EMLO::AppendSimpleTriangle },
-            { "AddQuad", &EMLO::AppendSimpleQuad }, { "aq", &EMLO::AppendSimpleQuad },
-            { "AddCog", &EMLO::AppendCog }, { "acog", &EMLO::AppendCog },
-            //-----------------------------------------------------------------
-            { "SetColor", &EMLO::SetCurColor }, { "sc", &EMLO::SetCurColor },
-            { "SetColorA", &EMLO::SetCurColorA }, { "sca", &EMLO::SetCurColorA },
-            { "SetColorB", &EMLO::SetCurColorB }, { "scb", &EMLO::SetCurColorB },
-            { "SetColorV", &EMLO::SetVertColor }, { "scv", &EMLO::SetVertColor },
-            //-----------------------------------------------------------------
-            { "TranslateX", &EMLO::TranslateX }, { "tx", &EMLO::TranslateX },
-            { "TranslateY", &EMLO::TranslateY }, { "ty", &EMLO::TranslateY },
-            { "TranslateZ", &EMLO::TranslateZ }, { "tz", &EMLO::TranslateZ },
-            { "Translate",  &Translate },  { "t",  &Translate },
-            //-----------------------------------------------------------------
-            { "RotateX", &EMLO::RotateX }, { "rx", &EMLO::RotateX },
-            { "RotateY", &EMLO::RotateY }, { "ry", &EMLO::RotateY },
-            { "RotateZ", &EMLO::RotateZ }, { "rz", &EMLO::RotateZ },
-            { "Rotate",  &Rotate },  { "r",  &Rotate },
-            //-----------------------------------------------------------------
-            { "ScaleX", &EMLO::ScaleX }, { "sx", &EMLO::ScaleX },
-            { "ScaleY", &EMLO::ScaleY }, { "sy", &EMLO::ScaleY },
-            { "ScaleZ", &EMLO::ScaleZ }, { "sz", &EMLO::ScaleZ },
-            { "Scale", &EMLO::Scale }, { "s", &EMLO::Scale },
-            //-----------------------------------------------------------------
-            { "RadialJitter", &EMLO::RadialJitter }, { "rj", &EMLO::RadialJitter },
-            //-----------------------------------------------------------------
-            { "TaperX", &EMLO::TaperX }, { "tax", &EMLO::TaperX },
-            { "TaperY", &EMLO::TaperY }, { "tay", &EMLO::TaperY },
-            { "TaperZ", &EMLO::TaperZ }, { "taz", &EMLO::TaperZ },
-            //-----------------------------------------------------------------
-            { "TwistX", &EMLO::TwistX }, { "twx", &EMLO::TwistX },
-            { "TwistY", &EMLO::TwistY }, { "twy", &EMLO::TwistY },
-            { "TwistZ", &EMLO::TwistZ }, { "twz", &EMLO::TwistZ },
-            //-----------------------------------------------------------------
-            { "ShearX", &EMLO::ShearX }, { "shx", &EMLO::ShearX },
-            { "ShearY", &EMLO::ShearY }, { "shy", &EMLO::ShearY },
-            { "ShearZ", &EMLO::ShearZ }, { "shz", &EMLO::ShearZ },
-            //-----------------------------------------------------------------
-            { "StretchX", &EMLO::StretchX }, { "stx", &EMLO::StretchX },
-            { "StretchY", &EMLO::StretchY }, { "sty", &EMLO::StretchY },
-            { "StretchZ", &EMLO::StretchZ }, { "stz", &EMLO::StretchZ },
-            //-----------------------------------------------------------------
-            { "BendXY", &EMLO::BendXY }, { "bdxy", &EMLO::BendXY },
-            { "BendXZ", &EMLO::BendXZ }, { "bdxz", &EMLO::BendXZ },
-            { "BendYX", &EMLO::BendYX }, { "bdyx", &EMLO::BendYX },
-            { "BendYZ", &EMLO::BendYZ }, { "bdyz", &EMLO::BendYZ },
-            { "BendZX", &EMLO::BendZX }, { "bdzx", &EMLO::BendZX },
-            { "BendZY", &EMLO::BendZY }, { "bdzy", &EMLO::BendZY },
-            //-----------------------------------------------------------------
-            { "MirrorX", &EMLO::MirrorX }, { "mx", &EMLO::MirrorX },
-            { "MirrorY", &EMLO::MirrorY }, { "my", &EMLO::MirrorY },
-            { "MirrorZ", &EMLO::MirrorZ }, { "mz", &EMLO::MirrorZ },
-            //-----------------------------------------------------------------
-            { "Loop", &EMLO::LoopStart }, { "lp", &EMLO::LoopStart },
-            { "LoopDo", &EMLO::LoopEnd }, { "ld", &EMLO::LoopEnd },
-            { "BraceOpen", &EMLO::OpenBrace }, { "bop", &EMLO::OpenBrace },
-            { "BraceClose", &EMLO::CloseBrace }, { "bcl", &EMLO::CloseBrace },
-            //-----------------------------------------------------------------
-            { "VerticeMerge", &EMLO::VerticesMerge }, { "vm", &EMLO::VerticesMerge },
-            { "VerticeSeparate", &EMLO::VerticesSeparate }, { "vs", &EMLO::VerticesSeparate },
-            { "VerticesCleanup", &EMLO::VerticesCleanup }, { "vc", &EMLO::VerticesCleanup },
-            //-----------------------------------------------------------------
-            { "Duplicate", &EMLO::Duplicate }, { "dup", &EMLO::Duplicate },
-            { "Smooth", &EMLO::Smooth }, { "smth", &EMLO::Smooth },
-            { "SplitTriangles", &EMLO::SplitTriangles }, { "splt", &EMLO::SplitTriangles },
-            { "Chamfer", &EMLO::Chamfer }, { "cf", &EMLO::Chamfer },
-            //-----------------------------------------------------------------
-            { "ToggleScaleWinding", &EMLO::ToggleScaleWinding }, { "tsw", &EMLO::ToggleScaleWinding },
-            { "ToggleQuadWeighting", &EMLO::ToggleQuadWeighting }, { "tqw", &EMLO::ToggleQuadWeighting },
-            { "TogglePostBuildNormal", &EMLO::TogglePostBuildNormal }, { "tpbn", &EMLO::TogglePostBuildNormal },
-            { "ToggleVerticeNoCleanup", &EMLO::ToggleVerticeNoCleanup }, { "tvnc", &EMLO::ToggleVerticeNoCleanup },
-            //-----------------------------------------------------------------
-        },
-        //Variables
-        { { nullptr, nullptr, nullptr } });
-    return &lib;
-
-#undef EMLO
-}
-
-//-----------------------------------------------------------------------------
-bool EasyMesh::Compile(char const *command, bool execute)
-{
-    bool res = false;
-    // FIXME: make this work again
-    UNUSED(command, execute);
-#if 0
-    EasyMeshCompiler mc(*this);
-    BD()->Enable(MeshBuildOperation::CommandRecording);
-    if ((res = mc.ParseString(command)))
-    {
-        BD()->Disable(MeshBuildOperation::CommandRecording);
-        if (execute)
-            ExecuteCmdStack();
-    }
-#endif
-    return res;
-}
-
-//-----------------------------------------------------------------------------
-#define EZSET(M0)                                               BD()->CmdStack().GetValue(M0);
-#define EZDEF_1(T0)                                             T0 m0; EZSET(m0)
-#define EZDEF_2(T0, T1)                                         EZDEF_1(T0) T1 m1; EZSET(m1)
-#define EZDEF_3(T0, T1, T2)                                     EZDEF_2(T0, T1) T2 m2; EZSET(m2)
-#define EZDEF_4(T0, T1, T2, T3)                                 EZDEF_3(T0, T1, T2) T3 m3; EZSET(m3)
-#define EZDEF_5(T0, T1, T2, T3, T4)                             EZDEF_4(T0, T1, T2, T3) T4 m4; EZSET(m4)
-#define EZDEF_6(T0, T1, T2, T3, T4, T5)                         EZDEF_5(T0, T1, T2, T3, T4) T5 m5; EZSET(m5)
-#define EZDEF_7(T0, T1, T2, T3, T4, T5, T6)                     EZDEF_6(T0, T1, T2, T3, T4, T5) T6 m6; EZSET(m6)
-#define EZDEF_8(T0, T1, T2, T3, T4, T5, T6, T7)                 EZDEF_7(T0, T1, T2, T3, T4, T5, T6) T7 m7; EZSET(m7)
-#define EZDEF_9(T0, T1, T2, T3, T4, T5, T6, T7, T8)             EZDEF_8(T0, T1, T2, T3, T4, T5, T6, T7) T8 m8; EZSET(m8)
-#define EZDEF_10(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9)        EZDEF_9(T0, T1, T2, T3, T4, T5, T6, T7, T8) T9 m9; EZSET(m9)
-
-//----
-#define EZCALL_1(F)                                             F();
-#define EZCALL_2(F, T0)                                         EZDEF_1(T0) F(m0);
-#define EZCALL_3(F, T0, T1)                                     EZDEF_2(T0, T1) F(m0, m1);
-#define EZCALL_4(F, T0, T1, T2)                                 EZDEF_3(T0, T1, T2) F(m0, m1, m2);
-#define EZCALL_5(F, T0, T1, T2, T3)                             EZDEF_4(T0, T1, T2, T3) F(m0, m1, m2, m3);
-#define EZCALL_6(F, T0, T1, T2, T3, T4)                         EZDEF_5(T0, T1, T2, T3, T4) F(m0, m1, m2, m3, m4);
-#define EZCALL_7(F, T0, T1, T2, T3, T4, T5)                     EZDEF_6(T0, T1, T2, T3, T4, T5) F(m0, m1, m2, m3, m4, m5);
-#define EZCALL_8(F, T0, T1, T2, T3, T4, T5, T6)                 EZDEF_7(T0, T1, T2, T3, T4, T5, T6) F(m0, m1, m2, m3, m4, m5, m6);
-#define EZCALL_9(F, T0, T1, T2, T3, T4, T5, T6, T7)             EZDEF_8(T0, T1, T2, T3, T4, T5, T6, T7) F(m0, m1, m2, m3, m4, m5, m6, m7);
-#define EZCALL_10(F, T0, T1, T2, T3, T4, T5, T6, T7, T8)        EZDEF_9(T0, T1, T2, T3, T4, T5, T6, T7, T8) F(m0, m1, m2, m3, m4, m5, m6, m7, m8);
-#define EZCALL_11(F, T0, T1, T2, T3, T4, T5, T6, T7, T8, T9)    EZDEF_10(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9) F(m0, m1, m2, m3, m4, m5, m6, m7, m8, m9);
-
-//----
-#define EZM_CALL_FUNC(...) \
-    LOL_CALL(LOL_CAT(EZCALL_, LOL_CALL(LOL_COUNT_TO_12, (__VA_ARGS__))), (__VA_ARGS__))
-
-//-----------------------------------------------------------------------------
-void EasyMesh::ExecuteCmdStack(bool ExecAllStack)
-{
-#define DO_EXEC_CMD(MESH_CMD, FUNC_PARAMS)  \
-        case EasyMeshCmdType::MESH_CMD:     \
-    { EZM_CALL_FUNC FUNC_PARAMS; break; }
-
-    BD()->Enable(MeshBuildOperation::CommandExecution);
-    if (ExecAllStack)
-        BD()->Cmdi() = 0;
-
-    for (; BD()->Cmdi() < BD()->CmdStack().GetCmdNb() && BD()->CmdExecNb() != 0; ++BD()->Cmdi())
-    {
-        if (BD()->CmdExecNb() > 0)
-            --BD()->CmdExecNb();
-
-        switch (BD()->CmdStack().GetCmd(BD()->Cmdi()))
-        {
-            DO_EXEC_CMD(MeshCsg, (MeshCsg, CSGUsage))
-                DO_EXEC_CMD(LoopStart, (LoopStart, int))
-                DO_EXEC_CMD(LoopEnd, (LoopEnd))
-                DO_EXEC_CMD(OpenBrace, (OpenBrace))
-                DO_EXEC_CMD(CloseBrace, (CloseBrace))
-                DO_EXEC_CMD(ScaleWinding, (ToggleScaleWinding))
-                DO_EXEC_CMD(QuadWeighting, (ToggleQuadWeighting))
-                DO_EXEC_CMD(PostBuildNormal, (TogglePostBuildNormal))
-                DO_EXEC_CMD(PreventVertCleanup, (ToggleVerticeNoCleanup))
-                DO_EXEC_CMD(VerticesMerge, (VerticesMerge))
-                DO_EXEC_CMD(VerticesSeparate, (VerticesSeparate))
-                DO_EXEC_CMD(SetColorA, (SetCurColorA, vec4))
-                DO_EXEC_CMD(SetColorB, (SetCurColorB, vec4))
-                DO_EXEC_CMD(SetVertColor, (SetVertColor, vec4))
-                DO_EXEC_CMD(Translate, (Translate, vec3))
-                DO_EXEC_CMD(Rotate, (Rotate, float, vec3))
-                DO_EXEC_CMD(RadialJitter, (RadialJitter, float))
-                DO_EXEC_CMD(MeshTranform, (DoMeshTransform, MeshTransform, Axis, Axis, float, float, float, bool))
-                DO_EXEC_CMD(Scale, (Scale, vec3))
-                DO_EXEC_CMD(DupAndScale, (DupAndScale, vec3, bool))
-                DO_EXEC_CMD(Chamfer, (Chamfer, float))
-                DO_EXEC_CMD(SplitTriangles, (SplitTriangles, int))
-                DO_EXEC_CMD(SmoothMesh, (SmoothMesh, int, int, int))
-                DO_EXEC_CMD(AppendCylinder, (AppendCylinder, int, float, float, float, bool, bool, bool))
-                DO_EXEC_CMD(AppendCapsule, (AppendCapsule, int, float, float))
-                DO_EXEC_CMD(AppendTorus, (AppendTorus, int, float, float))
-                DO_EXEC_CMD(AppendBox, (AppendBox, vec3, float, bool))
-                DO_EXEC_CMD(AppendStar, (AppendStar, int, float, float, bool, bool))
-                DO_EXEC_CMD(AppendExpandedStar, (AppendExpandedStar, int, float, float, float))
-                DO_EXEC_CMD(AppendDisc, (AppendDisc, int, float, bool))
-                DO_EXEC_CMD(AppendSimpleTriangle, (AppendSimpleTriangle, float, bool))
-                DO_EXEC_CMD(AppendSimpleQuad, (AppendSimpleQuad, vec2, vec2, float, bool))
-                DO_EXEC_CMD(AppendCog, (AppendCog, int, float, float, float, float, float, float, float, float, bool))
-        default:
-            ASSERT(0, "Unknown command pseudo bytecode");
-        }
-    }
-    BD()->Disable(MeshBuildOperation::CommandExecution);
-
-    if (!BD()->IsEnabled(MeshBuildOperation::PreventVertCleanup))
-        VerticesCleanup();
-
-    if (BD()->IsEnabled(MeshBuildOperation::PostBuildComputeNormals))
-        ComputeNormals(0, m_indices.count());
-
-    BD()->Disable(MeshBuildOperation::PostBuildComputeNormals);
-    BD()->Disable(MeshBuildOperation::PreventVertCleanup);
-
-    if (BD()->CmdExecNb() > 0)
-        BD()->CmdExecNb() = -1;
-}
-
diff --git a/src/easymesh/easymeshlua.h b/src/easymesh/easymeshlua.h
deleted file mode 100644
index 1a5e3dee..00000000
--- a/src/easymesh/easymeshlua.h
+++ /dev/null
@@ -1,156 +0,0 @@
-//
-//  Lol Engine
-//
-//  Copyright © 2009—2015 Benjamin “Touky” Huet <huet.benjamin@gmail.com>
-//            © 2017—2018 Sam Hocevar <sam@hocevar.net>
-//
-//  Lol Engine is free software. It comes without any warranty, to
-//  the extent permitted by applicable law. You can redistribute it
-//  and/or modify it under the terms of the Do What the Fuck You Want
-//  to Public License, Version 2, as published by the WTFPL Task Force.
-//  See http://www.wtfpl.net/ for more details.
-//
-
-#pragma once
-
-#include <string>
-#include <map>
-
-//
-//  EasyMesh Lua loader
-//
-
-namespace lol
-{
-
-//-----------------------------------------------------------------------------
-class EasyMeshLuaObject : public LuaObject
-{
-    EasyMesh m_instance;
-public:
-    //-------------------------------------------------------------------------
-    EasyMeshLuaObject(std::string const& name);
-    virtual ~EasyMeshLuaObject();
-    EasyMesh& GetMesh() { return m_instance; }
-
-    //-------------------------------------------------------------------------
-    static EasyMeshLuaObject* New(lua_State* l, int arg_nb);
-    static const LuaObjectLibrary* GetLib();
-
-#define EMLO GetPtr<EasyMeshLuaObject>()
-
-    //-------------------------------------------------------------------------
-    LOLUA_DECLARE_VOID_METHOD_ARGS(AppendCylinder, EMLO, m_instance.AppendCylinder, Get<int32_t>(), Get<float>(), Get<float>(), Get<float>(), Get<bool>(false), Get<bool>(false), Get<bool>(false));
-    LOLUA_DECLARE_VOID_METHOD_ARGS(AppendSphere, EMLO, m_instance.AppendSphere, Get<int32_t>(), Get<float>());
-    LOLUA_DECLARE_VOID_METHOD_ARGS(AppendCapsule, EMLO, m_instance.AppendCapsule, Get<int32_t>(), Get<float>(), Get<float>());
-    LOLUA_DECLARE_VOID_METHOD_ARGS(AppendTorus, EMLO, m_instance.AppendTorus, Get<int32_t>(), Get<float>(), Get<float>());
-    LOLUA_DECLARE_VOID_METHOD_ARGS(AppendBox, EMLO, m_instance.AppendBox, Get<vec3>(), Get<float>(0.f), Get<bool>(false));
-    LOLUA_DECLARE_VOID_METHOD_ARGS(AppendStar, EMLO, m_instance.AppendStar, Get<int32_t>(), Get<float>(), Get<float>(), Get<bool>(false), Get<bool>(false));
-    LOLUA_DECLARE_VOID_METHOD_ARGS(AppendExpandedStar, EMLO, m_instance.AppendExpandedStar, Get<int32_t>(), Get<float>(), Get<float>(), Get<float>(0.f));
-    LOLUA_DECLARE_VOID_METHOD_ARGS(AppendDisc, EMLO, m_instance.AppendDisc, Get<int32_t>(), Get<float>(), Get<bool>(false));
-    LOLUA_DECLARE_VOID_METHOD_ARGS(AppendSimpleTriangle, EMLO, m_instance.AppendSimpleTriangle, Get<float>(), Get<bool>(false));
-    LOLUA_DECLARE_VOID_METHOD_ARGS(AppendSimpleQuad, EMLO, m_instance.AppendSimpleQuad, Get<float>(), Get<bool>(false));
-    LOLUA_DECLARE_VOID_METHOD_ARGS(AppendCog, EMLO, m_instance.AppendCog, Get<int32_t>(), Get<float>(), Get<vec2>(), Get<vec2>(), Get<vec2>(), Get<float>(0.f), Get<bool>(false));
-    //-------------------------------------------------------------------------
-    LOLUA_DECLARE_VOID_METHOD_ARGS(TranslateX, EMLO, m_instance.TranslateX, Get<float>());
-    LOLUA_DECLARE_VOID_METHOD_ARGS(TranslateY, EMLO, m_instance.TranslateY, Get<float>());
-    LOLUA_DECLARE_VOID_METHOD_ARGS(TranslateZ, EMLO, m_instance.TranslateZ, Get<float>());
-    LOLUA_DECLARE_VOID_METHOD_ARGS(Translate, EMLO, m_instance.Translate, Get<vec3>());
-    //-------------------------------------------------------------------------
-    LOLUA_DECLARE_VOID_METHOD_ARGS(RotateX, EMLO, m_instance.RotateX, Get<float>());
-    LOLUA_DECLARE_VOID_METHOD_ARGS(RotateY, EMLO, m_instance.RotateY, Get<float>());
-    LOLUA_DECLARE_VOID_METHOD_ARGS(RotateZ, EMLO, m_instance.RotateZ, Get<float>());
-    LOLUA_DECLARE_VOID_METHOD_ARGS(Rotate, EMLO, m_instance.Rotate, Get<float>(), Get<vec3>());
-    //-------------------------------------------------------------------------
-    LOLUA_DECLARE_VOID_METHOD_ARGS(ScaleX, EMLO, m_instance.ScaleX, Get<float>());
-    LOLUA_DECLARE_VOID_METHOD_ARGS(ScaleY, EMLO, m_instance.ScaleY, Get<float>());
-    LOLUA_DECLARE_VOID_METHOD_ARGS(ScaleZ, EMLO, m_instance.ScaleZ, Get<float>());
-    LOLUA_DECLARE_VOID_METHOD_ARGS(Scale, EMLO,  m_instance.Scale, Get<vec3>());
-    //-------------------------------------------------------------------------
-    LOLUA_DECLARE_VOID_METHOD_ARGS(RadialJitter, EMLO, m_instance.RadialJitter, Get<float>());
-    //-------------------------------------------------------------------------
-    LOLUA_DECLARE_VOID_METHOD_ARGS(TaperX, EMLO, m_instance.TaperX, Get<float>(), Get<float>(), Get<float>(0.f), Get<bool>(true));
-    LOLUA_DECLARE_VOID_METHOD_ARGS(TaperY, EMLO, m_instance.TaperY, Get<float>(), Get<float>(), Get<float>(0.f), Get<bool>(true));
-    LOLUA_DECLARE_VOID_METHOD_ARGS(TaperZ, EMLO, m_instance.TaperZ, Get<float>(), Get<float>(), Get<float>(0.f), Get<bool>(true));
-    //-------------------------------------------------------------------------
-    LOLUA_DECLARE_VOID_METHOD_ARGS(TwistX, EMLO, m_instance.TwistX, Get<float>(), Get<float>(0.f));
-    LOLUA_DECLARE_VOID_METHOD_ARGS(TwistY, EMLO, m_instance.TwistY, Get<float>(), Get<float>(0.f));
-    LOLUA_DECLARE_VOID_METHOD_ARGS(TwistZ, EMLO, m_instance.TwistZ, Get<float>(), Get<float>(0.f));
-    //-------------------------------------------------------------------------
-    LOLUA_DECLARE_VOID_METHOD_ARGS(ShearX, EMLO, m_instance.ShearX, Get<float>(), Get<float>(), Get<float>(0.f), Get<bool>(true));
-    LOLUA_DECLARE_VOID_METHOD_ARGS(ShearY, EMLO, m_instance.ShearY, Get<float>(), Get<float>(), Get<float>(0.f), Get<bool>(true));
-    LOLUA_DECLARE_VOID_METHOD_ARGS(ShearZ, EMLO, m_instance.ShearZ, Get<float>(), Get<float>(), Get<float>(0.f), Get<bool>(true));
-    //-------------------------------------------------------------------------
-    LOLUA_DECLARE_VOID_METHOD_ARGS(StretchX, EMLO, m_instance.StretchX, Get<float>(), Get<float>(), Get<float>(0.f));
-    LOLUA_DECLARE_VOID_METHOD_ARGS(StretchY, EMLO, m_instance.StretchY, Get<float>(), Get<float>(), Get<float>(0.f));
-    LOLUA_DECLARE_VOID_METHOD_ARGS(StretchZ, EMLO, m_instance.StretchZ, Get<float>(), Get<float>(), Get<float>(0.f));
-    //-------------------------------------------------------------------------
-    LOLUA_DECLARE_VOID_METHOD_ARGS(BendXY, EMLO, m_instance.BendXY, Get<float>(), Get<float>(0.f));
-    LOLUA_DECLARE_VOID_METHOD_ARGS(BendXZ, EMLO, m_instance.BendXZ, Get<float>(), Get<float>(0.f));
-    LOLUA_DECLARE_VOID_METHOD_ARGS(BendYX, EMLO, m_instance.BendYX, Get<float>(), Get<float>(0.f));
-    LOLUA_DECLARE_VOID_METHOD_ARGS(BendYZ, EMLO, m_instance.BendYZ, Get<float>(), Get<float>(0.f));
-    LOLUA_DECLARE_VOID_METHOD_ARGS(BendZX, EMLO, m_instance.BendZX, Get<float>(), Get<float>(0.f));
-    LOLUA_DECLARE_VOID_METHOD_ARGS(BendZY, EMLO, m_instance.BendZY, Get<float>(), Get<float>(0.f));
-    //-------------------------------------------------------------------------
-    LOLUA_DECLARE_VOID_METHOD_VOID(MirrorX, EMLO, m_instance.MirrorX);
-    LOLUA_DECLARE_VOID_METHOD_VOID(MirrorY, EMLO, m_instance.MirrorY);
-    LOLUA_DECLARE_VOID_METHOD_VOID(MirrorZ, EMLO, m_instance.MirrorZ);
-    //-------------------------------------------------------------------------
-    LOLUA_DECLARE_VOID_METHOD_ARGS(LoopStart, EMLO, m_instance.LoopStart, Get<int32_t>());
-    LOLUA_DECLARE_VOID_METHOD_VOID(LoopEnd, EMLO, m_instance.LoopEnd);
-    LOLUA_DECLARE_VOID_METHOD_VOID(OpenBrace, EMLO, m_instance.OpenBrace, Get<float>());
-    LOLUA_DECLARE_VOID_METHOD_VOID(CloseBrace, EMLO, m_instance.CloseBrace, Get<float>());
-    //-------------------------------------------------------------------------
-    LOLUA_DECLARE_VOID_METHOD_VOID(ToggleScaleWinding, EMLO, m_instance.ToggleScaleWinding);
-    LOLUA_DECLARE_VOID_METHOD_VOID(ToggleQuadWeighting, EMLO, m_instance.ToggleQuadWeighting);
-    LOLUA_DECLARE_VOID_METHOD_VOID(TogglePostBuildNormal, EMLO, m_instance.TogglePostBuildNormal);
-    LOLUA_DECLARE_VOID_METHOD_VOID(ToggleVerticeNoCleanup, EMLO, m_instance.ToggleVerticeNoCleanup);
-    //-------------------------------------------------------------------------
-    LOLUA_DECLARE_VOID_METHOD_VOID(VerticesMerge, EMLO, m_instance.VerticesMerge);
-    LOLUA_DECLARE_VOID_METHOD_VOID(VerticesSeparate, EMLO, m_instance.VerticesSeparate);
-    LOLUA_DECLARE_VOID_METHOD_VOID(VerticesCleanup, EMLO, m_instance.VerticesCleanup);
-    //-------------------------------------------------------------------------
-    LOLUA_DECLARE_VOID_METHOD_ARGS(Duplicate, EMLO, m_instance.DupAndScale, Get<vec3>(vec3(1.f)), Get<bool>(true));
-    LOLUA_DECLARE_VOID_METHOD_ARGS(Smooth, EMLO, m_instance.SmoothMesh, Get<int32_t>(), Get<int32_t>(), Get<int32_t>());
-    LOLUA_DECLARE_VOID_METHOD_ARGS(SplitTriangles, EMLO, m_instance.SplitTriangles, Get<int32_t>());
-    LOLUA_DECLARE_VOID_METHOD_ARGS(Chamfer, EMLO, m_instance.Chamfer, Get<float>());
-    //-------------------------------------------------------------------------
-    LOLUA_DECLARE_VOID_METHOD_ARGS(SetCurColor, EMLO, m_instance.SetCurColor, Get<vec4>());
-    LOLUA_DECLARE_VOID_METHOD_ARGS(SetCurColorA, EMLO, m_instance.SetCurColorA, Get<vec4>());
-    LOLUA_DECLARE_VOID_METHOD_ARGS(SetCurColorB, EMLO, m_instance.SetCurColorB, Get<vec4>());
-    LOLUA_DECLARE_VOID_METHOD_ARGS(SetVertColor, EMLO, m_instance.SetVertColor, Get<vec4>());
-
-    /*
-    (csgu|csgunion)          { return token::T_CSGUNION; }
-    (csgs|CsgSub)            { return token::T_CSGSUBSTRACT; }
-    (csgsl|CsgSubL)          { return token::T_CSGSUBSTRACTLOSS; }
-    (csga|csgand)            { return token::T_CSGAND; }
-    (csgx|csgxor)            { return token::T_CSGXOR; }
-    */
-
-    #undef EMLO
-};
-
-//-----------------------------------------------------------------------------
-class EasyMeshLuaLoader : public LuaLoader
-{
-    friend class EasyMeshLuaObject;
-
-public:
-    EasyMeshLuaLoader();
-    virtual ~EasyMeshLuaLoader();
-    //Virtual Store lua object ------------------------------------------------
-    virtual void Store(LuaObject* obj);
-    array<EasyMeshLuaObject*>& GetInstances();
-
-    //-------------------------------------------------------------------------
-protected:
-    static void RegisterMesh(EasyMeshLuaObject* mesh, std::string const& name);
-public:
-    static bool GetRegisteredMeshes(std::map<std::string, EasyMeshLuaObject*>& meshes);
-
-private:
-    static std::map<std::string, EasyMeshLuaObject*> m_meshes;
-};
-
-} /* namespace lol */
diff --git a/src/easymesh/easymeshprimitive.cpp b/src/easymesh/easymeshprimitive.cpp
deleted file mode 100644
index ac1b25f0..00000000
--- a/src/easymesh/easymeshprimitive.cpp
+++ /dev/null
@@ -1,1027 +0,0 @@
-//
-//  Lol Engine
-//
-//  Copyright © 2010—2015 Sam Hocevar <sam@hocevar.net>
-//            © 2009—2015 Cédric Lecacheur <jordx@free.fr>
-//            © 2009—2015 Benjamin “Touky” Huet <huet.benjamin@gmail.com>
-//
-//  Lol Engine is free software. It comes without any warranty, to
-//  the extent permitted by applicable law. You can redistribute it
-//  and/or modify it under the terms of the Do What the Fuck You Want
-//  to Public License, Version 2, as published by the WTFPL Task Force.
-//  See http://www.wtfpl.net/ for more details.
-//
-
-#include <lol/engine-internal.h>
-
-// EasyMesh-Primitive — The code belonging to primitive operations
-
-namespace lol
-{
-
-//-----------------------------------------------------------------------------
-void EasyMesh::AppendCylinder(int nsides, float h, float d1, float d2,
-                              bool dualside, bool smooth, bool close)
-{
-    if (BD()->IsEnabled(MeshBuildOperation::CommandRecording))
-    {
-        BD()->CmdStack().AddCmd(EasyMeshCmdType::AppendCylinder);
-        BD()->CmdStack() << nsides << h << d1 << d2 << dualside << smooth << close;
-        return;
-    }
-
-    //XXX : This operation is done to convert radius to diameter without changing all the code.
-    float r1 = d1 * .5f;
-    float r2 = d2 * .5f;
-
-    //SAVE
-    vec4 Saved_ColorA = BD()->ColorA();
-    vec4 Saved_ColorB = BD()->ColorB();
-    vec2 Save_texcoord_offset = BD()->TexCoordOffset();
-    vec2 Save_texcoord_scale = BD()->TexCoordScale();
-
-    int vbase = m_vert.count();
-
-    mat3 rotmat = mat3::rotate(radians(360.0f) / (float)nsides, 0.f, 1.f, 0.f);
-    vec3 p1(r1, -h * .5f, 0.f), p2(r2, h * .5f, 0.f), n;
-    vec2 uv1(.0f, .0f), uv2(.0f, 1.0f), uvadd(1.0f / (float)nsides, .0f);
-    if (close)
-        SetTexCoordData(vec2(.0f), vec2(1.0f, .5f));
-
-    /* Construct normal */
-    if (r2 != .0f)
-        n = vec3(r2, h * .5f, 0.f);
-    else
-        n = vec3(r1, h * .5f, 0.f);
-    n.y = r1 * (r1 - r2) / h;
-    if (!smooth)
-        n = mat3::rotate(radians(180.0f) / nsides, 0.f, 1.f, 0.f) * n;
-    n = normalize(n);
-
-    //Two passes necessary to ensure "weighted quad" compatibility
-    //First pass : Add vertices
-    for (int i = 0; i < nsides; i++)
-    {
-        /* FIXME: normals should be flipped in two-sided mode, but that
-         * means duplicating the vertices again... */
-        AddVertex(p1); SetCurVertNormal(n); SetCurVertTexCoord(uv1); SetCurVertTexCoord2(uv1);
-        AddVertex(p2); SetCurVertNormal(n); SetCurVertTexCoord(uv2); SetCurVertTexCoord2(uv2); SetCurVertColor(BD()->ColorB());
-
-        p1 = rotmat * p1; uv1 += uvadd;
-        p2 = rotmat * p2; uv2 += uvadd;
-
-        if (!smooth)
-        {
-            AddVertex(p1); SetCurVertNormal(n); SetCurVertTexCoord(uv1); SetCurVertTexCoord2(uv1);
-            AddVertex(p2); SetCurVertNormal(n); SetCurVertTexCoord(uv2); SetCurVertTexCoord2(uv2); SetCurVertColor(BD()->ColorB());
-        }
-
-        n = rotmat * n;
-    }
-    //Second pass : Build quad
-    for (int i = 0; i < nsides; i++)
-    {
-        if (smooth)
-        {
-            int j = (i + 1) % nsides;
-            AddQuad(j * 2, j * 2 + 1, i * 2 + 1, i * 2, vbase);
-            if (dualside)
-                AddQuad(i * 2, i * 2 + 1, j * 2 + 1, j * 2, vbase);
-        }
-        else
-        {
-            AddQuad(i * 4 + 2, i * 4 + 3, i * 4 + 1, i * 4, vbase);
-            if (dualside)
-                AddQuad(i * 4, i * 4 + 1, i * 4 + 3, i * 4 + 2, vbase);
-        }
-
-    }
-
-    if (close)
-    {
-        //START
-        OpenBrace();
-        //LOWER DISC
-        SetTexCoordData(vec2(.0f, .5f), vec2(.5f, .5f));
-        SetCurColorA(BD()->ColorA());
-        AppendDisc(nsides, d1);
-        Translate(vec3(.0f, h, .0f));
-        RotateX(180.0f);
-        //UPPER DISC
-        SetTexCoordData(vec2(.5f, .5f), vec2(.5f, .5f));
-        SetCurColorA(BD()->ColorB());
-        AppendDisc(nsides, d2);
-        Translate(vec3(.0f, h * .5f, .0f));
-        CloseBrace();
-    }
-    //RESTORE
-    SetCurColorA(Saved_ColorA);
-    SetCurColorB(Saved_ColorB);
-    SetTexCoordData(Save_texcoord_offset, Save_texcoord_scale);
-}
-
-//-----------------------------------------------------------------------------
-void EasyMesh::AppendSphere(int ndivisions, float d)
-{
-    AppendCapsule(ndivisions, 0.f, d);
-}
-
-//-----------------------------------------------------------------------------
-void EasyMesh::AppendCapsule(int ndivisions, float h, float d)
-{
-    if (BD()->IsEnabled(MeshBuildOperation::CommandRecording))
-    {
-        BD()->CmdStack().AddCmd(EasyMeshCmdType::AppendCapsule);
-        BD()->CmdStack() << ndivisions << h << d;
-        return;
-    }
-
-    //XXX : This operation is done to convert radius to diameter without changing all the code.
-    float r = d * .5f;
-
-    int ibase = m_indices.count();
-
-    array<vec3> vertices;
-    float uv_h = 0;
-    float uv_r = 0;
-
-    /* FIXME: we don't know how to handle even-divided capsules, so we
-     * force the count to be odd. */
-    if (h)
-    {
-        ndivisions |= 1;
-        //calculate uv h&r percents
-        uv_h = (float)h / (float)(h + r * 2);
-        uv_r = (float)r / (float)(h + r * 2);
-    }
-
-    /* Fill in the icosahedron vertices, rotating them so that there
-     * is a vertex at [0 1 0] and [0 -1 0] after normalisation. */
-    float phi = 0.5f + 0.5f * sqrt(5.f);
-    mat3 m = mat3::rotate(asin(1.f / sqrt(2.f + phi)),
-                          vec3(0.f, 0.f, 1.f));
-    for (int i = 0; i < 4; i++)
-    {
-        float x = (i & 1) ? 0.5f : -0.5f;
-        float y = (i & 2) ? phi * 0.5f : phi * -0.5f;
-        vertices << m * vec3(x, y, 0.f);
-        vertices << m * vec3(0.f, x, y);
-        vertices << m * vec3(y, 0.f, x);
-    }
-
-    static int const tris[] =
-    {
-        0, 1, 2, 2, 4, 6, 3, 8, 1, 9, 4, 8,
-        7, 0, 5, 7, 11, 3, 10, 5, 6, 10, 9, 11,
-
-        0, 3, 1, 7, 3, 0, 1, 4, 2, 8, 4, 1,
-        2, 5, 0, 6, 5, 2, 6, 9, 10, 4, 9, 6,
-        7, 10, 11, 5, 10, 7, 8, 11, 9, 3, 11, 8
-    };
-
-    for (unsigned i = 0; i < sizeof(tris) / sizeof(*tris); i += 3)
-    {
-        vec3 const &a = vertices[tris[i]];
-        vec3 const &b = vertices[tris[i + 1]];
-        vec3 const &c = vertices[tris[i + 2]];
-
-        vec3 const vb = 1.f / ndivisions * (b - a);
-        vec3 const vc = 1.f / ndivisions * (c - a);
-
-        int line = ndivisions + 1;
-
-        for (int v = 0, x = 0, y = 0; x < ndivisions + 1; v++)
-        {
-            vec3 p[] = { a + (float)x * vb + (float)y * vc,
-                         p[0] + vb,
-                         p[0] + vc,
-                         p[0] + vb + vc };
-            vec2 uv[4];
-
-            /* FIXME: when we normalise here, we get a volume that is slightly
-             * smaller than the sphere of radius 1, since we are not using
-             * the midradius. */
-            for (int k = 0; k < 4; k++)
-            {
-                //keep normalized until the end of the UV calculations
-                p[k] = normalize(p[k]);
-
-                uv[k].x = (lol::atan2(p[k].z, p[k].x) + F_PI) / (F_PI * 2.f);
-                if (abs(p[k].y) >= 1.0f)
-                    uv[k].x = -1.f;
-                uv[k].y = lol::atan2(p[k].y, dot(p[k], normalize(p[k] * vec3(1.f,0.f,1.f)))) / F_PI + 0.5f;
-                if (h)
-                {
-                    if (uv[k].y > .5f)
-                        uv[k].y = uv_r + uv_h + (uv[k].y - .5f) * uv_r * 2.f;
-                    else
-                        uv[k].y *= uv_r * 2.f;
-                }
-                p[k] *= r;
-            }
-
-            /* If this is a capsule, grow in the Y direction */
-            if (h > 0.f)
-            {
-                for (int k = 0; k < 4; k++)
-                    p[k].y += (p[k].y > 0.f) ? 0.5f * h : -0.5f * h;
-            }
-
-            /* Add zero, one or two triangles */
-            int id[] = { 0, 1, 2,
-                         1, 3 ,2 };
-            int l = 6;
-            while ((l -= 3) >= 0)
-            {
-                if ((l == 0 && y < line - 1) || (l == 3 && y < line - 2))
-                {
-                    int k = -1;
-                    while (++k < 3)
-                    {
-                        int rid[] = { id[k + l], id[(k + 1) % 3 + l] };
-                        if (uv[rid[0]].x >= .0f &&
-                            uv[rid[1]].x >= .0f &&
-                            abs(uv[rid[0]].x - uv[rid[1]].x) > .5f)
-                        {
-                            if (uv[rid[0]].x < uv[rid[1]].x)
-                                uv[rid[0]].x += 1.0f;
-                            else
-                                uv[rid[1]].x += 1.0f;
-                        }
-                    }
-                    k = -1;
-                    while (++k < 3)
-                    {
-                        int rid[] = { id[k + l], id[(k + 1) % 3 + l], id[(k + 2) % 3 + l] };
-                        AddVertex(p[rid[0]]);
-                        vec2 new_uv;
-                        if (uv[rid[0]].x < .0f)
-                            new_uv = vec2((uv[rid[1]].x + uv[rid[2]].x) * .5f, uv[rid[0]].y);
-                        else
-                            new_uv = uv[rid[0]];
-                        SetCurVertTexCoord(vec2(0.f, 1.f) - new_uv);
-                        SetCurVertTexCoord2(vec2(0.f, 1.f) - new_uv);
-                    }
-                    AddTriangle(0, 2, 1, m_vert.count() - 3);
-                }
-            }
-
-            y++;
-            if (y == line)
-            {
-                x++;
-                y = 0;
-                line--;
-            }
-        }
-    }
-
-    ComputeNormals(ibase, m_indices.count() - ibase);
-}
-
-//-----------------------------------------------------------------------------
-void EasyMesh::AppendTorus(int ndivisions, float d1, float d2)
-{
-    if (BD()->IsEnabled(MeshBuildOperation::CommandRecording))
-    {
-        BD()->CmdStack().AddCmd(EasyMeshCmdType::AppendTorus);
-        BD()->CmdStack() << ndivisions << d1 << d2;
-        return;
-    }
-
-    //XXX : This operation is done to convert radius to diameter without changing all the code.
-    float r1 = d1 * .5f;
-    float r2 = d2 * .5f;
-
-    int ibase = m_indices.count();
-    int nidiv = ndivisions; /* Cross-section */
-    int njdiv = ndivisions; /* Full circumference */
-
-    for (int j = 0; j < njdiv; j++)
-    for (int i = 0; i < 2 * nidiv; i++)
-    {
-        for (int di = 0; di < 2; di++)
-        for (int dj = 0; dj < 2; dj++)
-        {
-            int i2 = (i + di) % nidiv;
-            int j2 = (j + dj) % njdiv;
-
-            //Location on the donut
-            float x = 0.5f * (r2 - r1) * (float)lol::cos(2.f * F_PI * i2 / nidiv) + 0.5f * (r1 + r2);
-            float y = 0.5f * (r2 - r1) * (float)lol::sin(2.f * F_PI * i2 / nidiv);
-            float z = 0.0f;
-
-            //Center circle
-            float ca = (float)lol::cos(2.f * F_PI * j2 / njdiv);
-            float sa = (float)lol::sin(2.f * F_PI * j2 / njdiv);
-
-            //Actual location
-            float x2 = x * ca - z * sa;
-            float z2 = z * ca + x * sa;
-
-            AddVertex(vec3(x2, y, z2));
-            SetCurVertTexCoord(vec2((float)(i + di) / (float)nidiv, (float)(j + dj) / (float)nidiv));
-            SetCurVertTexCoord2(vec2((float)(i + di) / (float)nidiv, (float)(j + dj) / (float)nidiv));
-        }
-
-        AddTriangle(0, 2, 3, m_vert.count() - 4);
-        AddTriangle(0, 3, 1, m_vert.count() - 4);
-    }
-
-    ComputeNormals(ibase, m_indices.count() - ibase);
-}
-
-//-----------------------------------------------------------------------------
-void EasyMesh::AppendBox(vec3 const &size, float chamf)
-{
-    AppendBox(size, chamf, false);
-}
-
-//-----------------------------------------------------------------------------
-void EasyMesh::AppendSmoothChamfBox(vec3 const &size, float chamf)
-{
-    AppendBox(size, chamf, true);
-}
-
-//-----------------------------------------------------------------------------
-void EasyMesh::AppendFlatChamfBox(vec3 const &size, float chamf)
-{
-    AppendBox(size, chamf, false);
-}
-
-//-----------------------------------------------------------------------------
-void EasyMesh::AppendBox(vec3 const &size, float chamf, bool smooth)
-{
-    if (BD()->IsEnabled(MeshBuildOperation::CommandRecording))
-    {
-        BD()->CmdStack().AddCmd(EasyMeshCmdType::AppendBox);
-        BD()->CmdStack() << size << chamf << smooth;
-        return;
-    }
-
-    if (chamf < 0.0f)
-    {
-        AppendBox(size + vec3(chamf * 2.0f), -chamf, smooth);
-        return;
-    }
-
-    int vbase = m_vert.count();
-    int ibase = m_indices.count();
-
-    vec3 d = size * 0.5f;
-
-    MeshType mt = MeshType::Box;
-    TexCoordPos bl = TexCoordPos::BL;
-    TexCoordPos br = TexCoordPos::BR;
-    TexCoordPos tl = TexCoordPos::TL;
-    TexCoordPos tr = TexCoordPos::TR;
-
-    //--
-    //Side vertices
-    //--
-    MeshFaceType mft = MeshFaceType::BoxFront;
-    AddVertex(vec3(-d.x, -d.y, -d.z - chamf));
-    SetCurVertTexCoord(BD()->TexCoord(mt, tr, mft));
-    SetCurVertTexCoord2(BD()->TexCoord2(mt, tr, mft));
-    //--
-    AddVertex(vec3(-d.x, +d.y, -d.z - chamf));
-    SetCurVertTexCoord(BD()->TexCoord(mt, br, mft));
-    SetCurVertTexCoord2(BD()->TexCoord2(mt, tr, mft));
-    //--
-    AddVertex(vec3(+d.x, +d.y, -d.z - chamf));
-    SetCurVertTexCoord(BD()->TexCoord(mt, bl, mft));
-    SetCurVertTexCoord2(BD()->TexCoord2(mt, tr, mft));
-    //--
-    AddVertex(vec3(+d.x, -d.y, -d.z - chamf));
-    SetCurVertTexCoord(BD()->TexCoord(mt, tl, mft));
-    SetCurVertTexCoord2(BD()->TexCoord2(mt, tr, mft));
-
-    //--
-    mft = MeshFaceType::BoxLeft;
-    AddVertex(vec3(-d.x - chamf, -d.y, +d.z));
-    SetCurVertTexCoord(BD()->TexCoord(mt, tr, mft));
-    SetCurVertTexCoord2(BD()->TexCoord2(mt, tr, mft));
-    //--
-    AddVertex(vec3(-d.x - chamf, +d.y, +d.z));
-    SetCurVertTexCoord(BD()->TexCoord(mt, br, mft));
-    SetCurVertTexCoord2(BD()->TexCoord2(mt, tr, mft));
-    //--
-    AddVertex(vec3(-d.x - chamf, +d.y, -d.z));
-    SetCurVertTexCoord(BD()->TexCoord(mt, bl, mft));
-    SetCurVertTexCoord2(BD()->TexCoord2(mt, tr, mft));
-    //--
-    AddVertex(vec3(-d.x - chamf, -d.y, -d.z));
-    SetCurVertTexCoord(BD()->TexCoord(mt, tl, mft));
-    SetCurVertTexCoord2(BD()->TexCoord2(mt, tr, mft));
-
-    //--
-    mft = MeshFaceType::BoxBack;
-    AddVertex(vec3(+d.x, -d.y, +d.z + chamf));
-    SetCurVertTexCoord(BD()->TexCoord(mt, tr, mft));
-    SetCurVertTexCoord2(BD()->TexCoord2(mt, tr, mft));
-    //--
-    AddVertex(vec3(+d.x, +d.y, +d.z + chamf));
-    SetCurVertTexCoord(BD()->TexCoord(mt, br, mft));
-    SetCurVertTexCoord2(BD()->TexCoord2(mt, tr, mft));
-    //--
-    AddVertex(vec3(-d.x, +d.y, +d.z + chamf));
-    SetCurVertTexCoord(BD()->TexCoord(mt, bl, mft));
-    SetCurVertTexCoord2(BD()->TexCoord2(mt, tr, mft));
-    //--
-    AddVertex(vec3(-d.x, -d.y, +d.z + chamf));
-    SetCurVertTexCoord(BD()->TexCoord(mt, tl, mft));
-    SetCurVertTexCoord2(BD()->TexCoord2(mt, tr, mft));
-
-    //--
-    mft = MeshFaceType::BoxRight;
-    AddVertex(vec3(+d.x + chamf, -d.y, -d.z));
-    SetCurVertTexCoord(BD()->TexCoord(mt, tr, mft));
-    SetCurVertTexCoord2(BD()->TexCoord2(mt, tr, mft));
-    //--
-    AddVertex(vec3(+d.x + chamf, +d.y, -d.z));
-    SetCurVertTexCoord(BD()->TexCoord(mt, br, mft));
-    SetCurVertTexCoord2(BD()->TexCoord2(mt, tr, mft));
-    //--
-    AddVertex(vec3(+d.x + chamf, +d.y, +d.z));
-    SetCurVertTexCoord(BD()->TexCoord(mt, bl, mft));
-    SetCurVertTexCoord2(BD()->TexCoord2(mt, tr, mft));
-    //--
-    AddVertex(vec3(+d.x + chamf, -d.y, +d.z));
-    SetCurVertTexCoord(BD()->TexCoord(mt, tl, mft));
-    SetCurVertTexCoord2(BD()->TexCoord2(mt, tr, mft));
-
-    //--
-    //Bottom vertices
-    //--
-    mft = MeshFaceType::BoxBottom;
-    AddVertex(vec3(-d.x, -d.y - chamf, +d.z));
-    SetCurVertTexCoord(BD()->TexCoord(mt, tr, mft));
-    SetCurVertTexCoord2(BD()->TexCoord2(mt, tr, mft));
-    //--
-    AddVertex(vec3(-d.x, -d.y - chamf, -d.z));
-    SetCurVertTexCoord(BD()->TexCoord(mt, br, mft));
-    SetCurVertTexCoord2(BD()->TexCoord2(mt, tr, mft));
-    //--
-    AddVertex(vec3(+d.x, -d.y - chamf, -d.z));
-    SetCurVertTexCoord(BD()->TexCoord(mt, bl, mft));
-    SetCurVertTexCoord2(BD()->TexCoord2(mt, tr, mft));
-    //--
-    AddVertex(vec3(+d.x, -d.y - chamf, +d.z));
-    SetCurVertTexCoord(BD()->TexCoord(mt, tl, mft));
-    SetCurVertTexCoord2(BD()->TexCoord2(mt, tr, mft));
-
-    //--
-    //Top vertices
-    //--
-    mft = MeshFaceType::BoxTop;
-    AddVertex(vec3(-d.x, +d.y + chamf, -d.z));
-    SetCurVertTexCoord(BD()->TexCoord(mt, tr, mft));
-    SetCurVertTexCoord2(BD()->TexCoord2(mt, tr, mft));
-    //--
-    AddVertex(vec3(-d.x, +d.y + chamf, +d.z));
-    SetCurVertTexCoord(BD()->TexCoord(mt, br, mft));
-    SetCurVertTexCoord2(BD()->TexCoord2(mt, tr, mft));
-    //--
-    AddVertex(vec3(+d.x, +d.y + chamf, +d.z));
-    SetCurVertTexCoord(BD()->TexCoord(mt, bl, mft));
-    SetCurVertTexCoord2(BD()->TexCoord2(mt, tr, mft));
-    //--
-    AddVertex(vec3(+d.x, +d.y + chamf, -d.z));
-    SetCurVertTexCoord(BD()->TexCoord(mt, tl, mft));
-    SetCurVertTexCoord2(BD()->TexCoord2(mt, tr, mft));
-
-    ComputeNormals(ibase, m_indices.count() - ibase);
-    ibase = m_indices.count();
-
-    //Build the box at the end : The 6 quads on each side of the box.
-    for (int i = 0; i < 24; i += 4)
-        AddQuad(i, i + 1, i + 2, i + 3, vbase);
-
-    /* The 8 quads at each edge of the box */
-    if (chamf)
-    {
-        static int const quads[48] =
-        {
-            0, 3, 18, 17, 4, 7, 17, 16, 8, 11, 16, 19, 12, 15, 19, 18,
-            2, 1, 20, 23, 6, 5, 21, 20, 10, 9, 22, 21, 14, 13, 23, 22,
-            1, 0, 7, 6, 5, 4, 11, 10, 9, 8, 15, 14, 13, 12, 3, 2,
-        };
-
-        for (int i = 0; i < 48; i += 4)
-            AddQuad(quads[i], quads[i + 1], quads[i + 2], quads[i + 3], vbase, !smooth);
-    }
-
-    /* The 8 triangles at each corner of the box */
-    if (chamf)
-    {
-        static int const tris[24] =
-        {
-            3, 12, 18, 15, 8, 19, 11, 4, 16, 7, 0, 17,
-            2, 23, 13, 14, 22, 9, 10, 21, 5, 6, 20, 1,
-        };
-
-        for (int i = 0; i < 24; i += 3)
-            AddTriangle(tris[i], tris[i + 1], tris[i + 2], vbase, !smooth);
-    }
-
-    if (!smooth)
-        ComputeNormals(ibase, m_indices.count() - ibase);
-}
-
-//-----------------------------------------------------------------------------
-void EasyMesh::AppendStar(int nbranches, float d1, float d2,
-                          bool fade, bool fade2)
-{
-    if (BD()->IsEnabled(MeshBuildOperation::CommandRecording))
-    {
-        BD()->CmdStack().AddCmd(EasyMeshCmdType::AppendStar);
-        BD()->CmdStack() << nbranches << d1 << d2 << fade << fade2;
-        return;
-    }
-
-    //Should ignore quad weight, as it does not destroy star symmetry
-    BD()->Enable(MeshBuildOperation::IgnoreQuadWeighting);
-
-    //XXX : This operation is done to convert radius to diameter without changing all the code.
-    float r1 = d1 * .5f;
-    float r2 = d2 * .5f;
-
-    //TODO: It would probably be good to think of another way of UV painting this, like "branch repeating"
-    int vbase = m_vert.count();
-    float maxr = max(r1, r2);
-
-    AddVertex(vec3(0.f, 0.f, 0.f)); SetCurVertTexCoord(vec2(.5f, .5f)); SetCurVertTexCoord2(vec2(.5f, .5f));
-
-    mat3 rotmat = mat3::rotate(radians(180.0f) / nbranches, 0.f, 1.f, 0.f);
-    vec3 p1(r1, 0.f, 0.f), p2(r2, 0.f, 0.f);
-    vec3 uv1(0.f, 0.f, -.5f * ((float)r1 / maxr)),
-         uv2(0.f, 0.f, -.5f * ((float)r2 / maxr));
-
-    p2 = rotmat * p2; uv2 = rotmat * uv2;
-    rotmat = rotmat * rotmat;
-
-    for (int i = 0; i < nbranches; i++)
-    {
-        AddVertex(p1); SetCurVertTexCoord(uv1.xz + vec2(.5f)); SetCurVertTexCoord2(uv1.xz + vec2(.5f));
-        if (fade2)
-            SetCurVertColor(BD()->ColorB());
-
-        AddVertex(p2); SetCurVertTexCoord(uv2.xz + vec2(.5f)); SetCurVertTexCoord2(uv2.xz + vec2(.5f));
-        if (fade)
-            SetCurVertColor(BD()->ColorB());
-
-        //Append quad at the end
-        AddQuad(0, 2 * i + 1, 2 * i + 2, (2 * i + 3) % (2 * nbranches), vbase);
-
-        p1 = rotmat * p1; uv1 = rotmat * uv1;
-        p2 = rotmat * p2; uv2 = rotmat * uv2;
-    }
-
-    //Restore
-    BD()->Disable(MeshBuildOperation::IgnoreQuadWeighting);
-}
-
-//-----------------------------------------------------------------------------
-void EasyMesh::AppendExpandedStar(int nbranches, float d1, float d2, float extrad)
-{
-    if (BD()->IsEnabled(MeshBuildOperation::CommandRecording))
-    {
-        BD()->CmdStack().AddCmd(EasyMeshCmdType::AppendExpandedStar);
-        BD()->CmdStack() << nbranches << d1 << d2 << extrad;
-        return;
-    }
-
-    //Should ignore quad weight, as it does not destroy star symmetry
-    BD()->Enable(MeshBuildOperation::IgnoreQuadWeighting);
-
-    //XXX : This operation is done to convert radius to diameter without changing all the code.
-    float r1 = d1 * .5f;
-    float r2 = d2 * .5f;
-    float extrar = extrad * .5f;
-
-    int vbase = m_vert.count();
-    float maxr = lol::max(lol::max(r1, r2), lol::max(r1 + extrar, r2 + extrar));
-
-    AddVertex(vec3(0.f, 0.f, 0.f)); SetCurVertTexCoord(vec2(.5f, .5f)); SetCurVertTexCoord2(vec2(.5f, .5f));
-
-    mat3 rotmat = mat3::rotate(radians(180.0f) / nbranches, 0.f, 1.f, 0.f);
-    vec3 p1(r1, 0.f, 0.f), p2(r2, 0.f, 0.f),
-         p3(r1 + extrar, 0.f, 0.f), p4(r2 + extrar, 0.f, 0.f);;
-    vec3 uv1(0.f, 0.f, -.5f * ((float)r1 / maxr)),
-         uv2(0.f, 0.f, -.5f * ((float)r2 / maxr)),
-         uv3(0.f, 0.f, -.5f * ((float)(r1 + extrar) / maxr)),
-         uv4(0.f, 0.f, -.5f * ((float)(r2 + extrar) / maxr));
-
-    p2 = rotmat * p2; uv2 = rotmat * uv2;
-    p4 = rotmat * p4; uv4 = rotmat * uv4;
-    rotmat = rotmat * rotmat;
-
-    for (int i = 0; i < nbranches; i++)
-    {
-        AddVertex(p1); SetCurVertTexCoord(uv1.xz + vec2(.5f)); SetCurVertTexCoord2(uv1.xz + vec2(.5f));
-        AddVertex(p2); SetCurVertTexCoord(uv2.xz + vec2(.5f)); SetCurVertTexCoord2(uv2.xz + vec2(.5f));
-        AddVertex(p3); SetCurVertTexCoord(uv3.xz + vec2(.5f)); SetCurVertTexCoord2(uv3.xz + vec2(.5f)); SetCurVertColor(BD()->ColorB());
-        AddVertex(p4); SetCurVertTexCoord(uv4.xz + vec2(.5f)); SetCurVertTexCoord2(uv4.xz + vec2(.5f)); SetCurVertColor(BD()->ColorB());
-
-        int j = (i + 1) % nbranches;
-        //
-        AddQuad(0, 4 * i + 1, 4 * i + 2, 4 * j + 1, vbase);
-        AddQuad(4 * i + 1, 4 * i + 3, 4 * i + 4, 4 * i + 2, vbase);
-        AddQuad(4 * j + 1, 4 * i + 2, 4 * i + 4, 4 * j + 3, vbase);
-
-        p1 = rotmat * p1; uv1 = rotmat * uv1;
-        p2 = rotmat * p2; uv2 = rotmat * uv2;
-        p3 = rotmat * p3; uv3 = rotmat * uv3;
-        p4 = rotmat * p4; uv4 = rotmat * uv4;
-    }
-
-    //Restore
-    BD()->Disable(MeshBuildOperation::IgnoreQuadWeighting);
-}
-
-//-----------------------------------------------------------------------------
-void EasyMesh::AppendDisc(int nsides, float d, bool fade)
-{
-    if (BD()->IsEnabled(MeshBuildOperation::CommandRecording))
-    {
-        BD()->CmdStack().AddCmd(EasyMeshCmdType::AppendDisc);
-        BD()->CmdStack() << nsides << d << fade;
-        return;
-    }
-
-    //XXX : This operation is done to convert radius to diameter without changing all the code.
-    float r = d * .5f;
-
-    int vbase = m_vert.count();
-
-    AddVertex(vec3(0.f, 0.f, 0.f)); SetCurVertTexCoord(vec2(.5f, .5f)); SetCurVertTexCoord2(vec2(.5f, .5f));
-
-    mat3 rotmat = mat3::rotate(radians(360.0f) / nsides, 0.f, 1.f, 0.f);
-    vec3 p1(r, 0.f, 0.f);
-    vec3 uv(.5f, .0f, .0f);
-
-    for (int i = 0; i < nsides; i++)
-    {
-        AddVertex(p1); SetCurVertTexCoord(uv.xz + vec2(.5f, .5f)); SetCurVertTexCoord2(uv.xz + vec2(.5f, .5f));
-        if (fade)
-            SetCurVertColor(BD()->ColorB());
-        AddTriangle(0, i + 1, ((i + 1) % nsides) + 1, vbase);
-        p1 = rotmat * p1;
-        uv = rotmat * uv;
-    }
-}
-
-//-----------------------------------------------------------------------------
-void EasyMesh::AppendSimpleTriangle(float d, bool fade)
-{
-    if (BD()->IsEnabled(MeshBuildOperation::CommandRecording))
-    {
-        BD()->CmdStack().AddCmd(EasyMeshCmdType::AppendSimpleTriangle);
-        BD()->CmdStack() << d << fade;
-        return;
-    }
-
-    //XXX : This operation is done to convert radius to diameter without changing all the code.
-    float size = d * .5f;
-
-    mat3 m = mat3::rotate(radians(120.f), 0.f, 1.f, 0.f);
-    vec3 p(0.f, 0.f, size);
-
-    AddVertex(p); SetCurVertTexCoord(vec2(.5f, 0.133975f)); SetCurVertTexCoord2(vec2(.5f, 0.133975f));
-    p = m * p;
-    AddVertex(p); SetCurVertTexCoord(vec2(0.f, 1.f)); SetCurVertTexCoord2(vec2(0.f, 1.f));
-    if (fade)
-        SetCurVertColor(BD()->ColorB());
-    p = m * p;
-    AddVertex(p); SetCurVertTexCoord(vec2(1.f, 1.f)); SetCurVertTexCoord2(vec2(1.f, 1.f));
-    if (fade)
-        SetCurVertColor(BD()->ColorB());
-
-    AddTriangle(0, 1, 2, m_vert.count() - 3);
-}
-
-//-----------------------------------------------------------------------------
-void EasyMesh::AppendSimpleQuad(float size, bool fade)
-{
-    AppendSimpleQuad(vec2(size * .5f), vec2(size * -.5f), 0.f, fade);
-}
-
-//-----------------------------------------------------------------------------
-void EasyMesh::AppendSimpleQuad(vec2 p1, vec2 p2, float z, bool fade)
-{
-    if (BD()->IsEnabled(MeshBuildOperation::CommandRecording))
-    {
-        BD()->CmdStack().AddCmd(EasyMeshCmdType::AppendSimpleQuad);
-        BD()->CmdStack() << p1 << p2 << z << fade;
-        return;
-    }
-
-    MeshType mt = MeshType::Quad;
-    MeshFaceType mft = MeshFaceType::QuadDefault;
-
-    //--
-    AddVertex(vec3(p2.x, z, -p1.y));
-    TexCoordPos br = TexCoordPos::BR;
-    SetCurVertTexCoord(BD()->TexCoord(mt, br, mft));
-    SetCurVertTexCoord2(BD()->TexCoord2(mt, br, mft));
-    //--
-    AddVertex(vec3(p2.x, z, -p2.y));
-    TexCoordPos bl = TexCoordPos::BL;
-    SetCurVertTexCoord(BD()->TexCoord(mt, bl, mft));
-    SetCurVertTexCoord2(BD()->TexCoord2(mt, bl, mft));
-    //--
-    AddVertex(vec3(p1.x, z, -p2.y));
-    TexCoordPos tl = TexCoordPos::TL;
-    SetCurVertTexCoord(BD()->TexCoord(mt, tl, mft));
-    SetCurVertTexCoord2(BD()->TexCoord2(mt, tl, mft));
-    if (fade) SetCurVertColor(BD()->ColorB());
-    //--
-    AddVertex(vec3(p1.x, z, -p1.y));
-    TexCoordPos tr = TexCoordPos::TR;
-    SetCurVertTexCoord(BD()->TexCoord(mt, tr, mft));
-    SetCurVertTexCoord2(BD()->TexCoord2(mt, tr, mft));
-    if (fade) SetCurVertColor(BD()->ColorB());
-
-    AddQuad(0, 1, 2, 3, m_vert.count() - 4);
-    ComputeNormals(m_indices.count() - 6, 6);
-}
-
-//-----------------------------------------------------------------------------
-void EasyMesh::AppendCog(int nbsides, float h, float d10, float d20,
-                         float d11, float d21, float d12, float d22,
-                         float sidemul, bool offset)
-{
-    if (BD()->IsEnabled(MeshBuildOperation::CommandRecording))
-    {
-        BD()->CmdStack().AddCmd(EasyMeshCmdType::AppendCog);
-        BD()->CmdStack() << nbsides << h
-                         << d10 << d20
-                         << d11 << d21
-                         << d12 << d22
-                         << sidemul << offset;
-        return;
-    }
-
-    //XXX : This operation is done to convert radius to diameter without changing all the code.
-    float r10 = d10 * .5f;
-    float r20 = d20 * .5f;
-    float r11 = d11 * .5f;
-    float r21 = d21 * .5f;
-    float r12 = d12 * .5f;
-    float r22 = d22 * .5f;
-
-    int ibase = m_indices.count();
-    int vbase = m_vert.count();
-
-    /* FIXME: enforce this some other way */
-    if (r12 < 0)
-        h = -h;
-
-    mat3 rotmat = mat3::rotate(radians(180.0f) / nbsides, 0.f, 1.f, 0.f);
-    mat3 smat1 = mat3::rotate(sidemul * radians(180.0f) / nbsides, 0.f, 1.f, 0.f);
-    mat3 smat2 = mat3::rotate(sidemul * radians(-360.0f) / nbsides, 0.f, 1.f, 0.f);
-
-    vec3 p[12];
-
-    //Upper points
-    p[0] = vec3(r10, h * .5f, 0.f);
-    p[1] = rotmat * p[0];
-    p[2] = vec3(r11, h * .5f, 0.f);
-    p[3] = rotmat * p[2];
-    p[4] = smat1 * (rotmat * vec3(r11 + r12, h * .5f, 0.f));
-    p[5] = smat2 * (rotmat * p[4]);
-
-    //Lower points
-    p[6] = vec3(r20, h * -.5f, 0.f);
-    p[7] = rotmat * p[6];
-    p[8] = vec3(r21, h * -.5f, 0.f);
-    p[9] = rotmat * p[8];
-    p[10] = smat1 * (rotmat * vec3(r21 + r22, h * -.5f, 0.f));
-    p[11] = smat2 * (rotmat * p[10]);
-
-    if (offset)
-        for (int n = 0; n < 12; n++)
-            p[n] = rotmat * p[n];
-
-    rotmat = rotmat * rotmat;
-
-    //UV base computation
-    float maxr = max(max(r11 + r12, r21 + r22), max(r10, r20));
-    float InLn = length(p[1] - p[0]);
-    float CogLn[8] = { .0f, .0f, .0f, .0f, .0f, .0f, .0f, .0f };
-    for (int i = 0; i < 3; i++)
-    {
-        for (int j = 0, k = 2; j < 8 && k < 12; j += 4, k += 6)
-        {
-            CogLn[j + i] = length(p[k + i + 1] - p[k + i]);
-            CogLn[j + 3] += CogLn[j + i];
-            if (i == 1) //Add 3to4 twice since it's automatically completed by +1 loop.
-                CogLn[j + 3] += CogLn[j + i];
-        }
-    }
-
-    //Choose the biggest cog length
-    int CogSrc = (CogLn[7] > CogLn[3])?(4):(0);
-    CogLn[3] = CogLn[CogSrc + 3];
-    for (int i = 0; i < 3; i++)
-        CogLn[i] = CogLn[CogSrc + i] / CogLn[CogSrc + 3];
-
-    //Calculate Cog Modifiers
-    vec2 InUV[2] = { vec2(.0f), vec2(.5f) };
-    vec2 CogUV[2] = { vec2(.0f), vec2(.5f) };
-    vec2 upadd = vec2(.25f, .75f);
-    vec2 lowadd = vec2(.75f, .75f);
-    {
-        if (h < InLn)
-        {
-            InUV[0].x  = 1.0f;
-            InUV[0].y  = h / InLn;
-            InUV[1].x  = .0f;
-            InUV[1].y -= InUV[0].y * .5f;
-        }
-        else
-        {
-            InUV[0].x  = InLn / h;
-            InUV[0].y  = 1.0f;
-            InUV[1].x -= InUV[0].x * .5f;
-            InUV[1].y = .0f;
-        }
-        if (h < CogLn[3])
-        {
-            CogUV[0].x  = 1.0f;
-            CogUV[0].y  = h / CogLn[3];
-            CogUV[1].x  = .0f;
-            CogUV[1].y -= CogUV[0].y * .5f;
-        }
-        else
-        {
-            CogUV[0].x  = CogLn[3] / h;
-            CogUV[0].y  = 1.0f;
-            CogUV[1].x -= CogUV[0].x * .5f;
-            CogUV[1].y  = .0f;
-        }
-        if (InUV[0].x + CogUV[0].x < .5f)
-        {
-            InUV[1].x = .0f;
-            CogUV[1].x = .5f - CogUV[0].x;
-            upadd  = vec2(.75f, .25f);
-            lowadd = vec2(.75f, .75f);
-        }
-        else if (InUV[0].y + CogUV[0].y < .5f)
-        {
-            InUV[1].y = .0f;
-            CogUV[1].y = .5f - CogUV[0].y;
-        }
-        else
-        {
-            InUV[0] *= .5f;
-            InUV[1] *= .5f;
-            CogUV[0] *= .5f;
-            CogUV[1] *= .5f;
-            InUV[1] += vec2(.5f, .0f);
-        }
-    }
-
-    //Build UV tab
-    vec2 uv[12]; float CogSz;
-    //Upper points
-    CogSz = 1.0f - CogLn[1];
-    uv[0]  = vec2(0.f,   0.f) * InUV[0]  + InUV[1];
-    uv[1]  = vec2(1.f,   0.f) * InUV[0]  + InUV[1];
-    uv[5]  = vec2(CogSz, 0.f) * CogUV[0] + CogUV[1]; CogSz -= CogLn[2];
-    uv[4]  = vec2(CogSz, 0.f) * CogUV[0] + CogUV[1]; CogSz -= CogLn[1];
-    uv[3]  = vec2(CogSz, 0.f) * CogUV[0] + CogUV[1]; CogSz -= CogLn[0];
-    uv[2]  = vec2(0.f,   0.f) * CogUV[0] + CogUV[1];
-
-    //Lower points
-    CogSz = 1.0f - CogLn[1];
-    uv[6]  = vec2(0.f,   1.f) * InUV[0]  + InUV[1];
-    uv[7]  = vec2(1.f,   1.f) * InUV[0]  + InUV[1];
-    uv[11] = vec2(CogSz, 1.f) * CogUV[0] + CogUV[1]; CogSz -= CogLn[2];
-    uv[10] = vec2(CogSz, 1.f) * CogUV[0] + CogUV[1]; CogSz -= CogLn[1];
-    uv[ 9] = vec2(CogSz, 1.f) * CogUV[0] + CogUV[1]; CogSz -= CogLn[0];
-    uv[ 8] = vec2(0.f,   1.f) * CogUV[0] + CogUV[1];
-
-#define DEF_J_K_Q                         \
-    int j = 3 * 12 * i,                   \
-        k = 3 * 12 * ((i + 1) % nbsides); \
-    int q[] = {                \
-/* The top and bottom faces */ \
-                j, j, j, j, \
-                j, j, j, j, \
-                j, j, k, k, \
-                k, k, j, j, \
-                j, j, j, k, \
-                k, j, j, j, \
-/* The inner side quads */  \
-                j, j, j, j, \
-                j, k, k, j, \
-/* The outer side quads */  \
-                j, j, j, j, \
-                j, j, j, j, \
-                j, j, j, j, \
-                k, j, j, k  \
-                };          \
-    UNUSED(q);
-    int m[] = { /* The top and bottom faces */
-                0,  2,  3,  1,
-                7,  9,  8,  6,
-                1,  3,  2,  0,
-                6,  8,  9,  7,
-                3,  4,  5,  2,
-                8, 11, 10,  9,
-                /* The inner side quads */
-                0,  1,  7,  6,
-                1,  0,  6,  7,
-                /* The outer side quads */
-                3,  2,  8,  9,
-                4,  3,  9, 10,
-                5,  4, 10, 11,
-                2,  5, 11, 8
-                };
-    int a[] = { /* The top and bottom faces */
-                0, 0, 0, 0,
-                0, 0, 0, 0,
-                0, 0, 0, 0,
-                0, 0, 0, 0,
-                0, 0, 0, 0,
-                0, 0, 0, 0,
-                /* The inner side quads */
-                1, 1, 1, 1,
-                2, 2, 2, 2,
-                /* The outer side quads */
-                1, 1, 1, 1,
-                1, 2, 2, 1,
-                1, 2, 2, 1,
-                2, 2, 2, 2
-                };
-    //Gear generation loop
-    //Two passes necessary to ensure "weighted quad" compatibility
-    //First pass : Add vertices
-    for (int i = 0; i < nbsides; i++)
-    {
-        DEF_J_K_Q;
-
-        /* Each vertex will share three faces, so three different
-         * normals, therefore we add each vertex three times. */
-        for (int n = 0; n < 3 * 12; n++)
-        {
-            int d = n / 3;
-            int e = d % 6;
-            AddVertex(p[d]);
-            if (n % 3 == 0) //Top-Bottom logic
-            {
-                vec2 tmp = (p[d].xz / maxr);
-                vec2 add;
-                if (d >= 6)
-                {
-                    tmp *= -1.0f;
-                    add = lowadd;
-                }
-                else
-                    add = upadd;
-                SetCurVertTexCoord(tmp * vec2(.25f) + add);
-                SetCurVertTexCoord2(tmp * vec2(.25f) + add);
-            }
-            else if (e == 0 || e == 1) //inner Logic
-            {
-                SetCurVertTexCoord(uv[d]);
-                SetCurVertTexCoord2(uv[d]);
-            }
-            else //Cog logic
-            {
-                if (e == 2 && n % 3 == 2)
-                {
-                    SetCurVertTexCoord(vec2(1.f, (d == 2)?(0.f):(1.f)) * CogUV[0] + CogUV[1]);
-                    SetCurVertTexCoord2(vec2(1.f, (d == 2)?(0.f):(1.f)) * CogUV[0] + CogUV[1]);
-                }
-                else
-                {
-                    SetCurVertTexCoord(uv[d]);
-                    SetCurVertTexCoord2(uv[d]);
-                }
-            }
-            if (d >= 6)
-                SetCurVertColor(BD()->ColorB());
-        }
-
-        for (int n = 0; n < 12; n++)
-            p[n] = rotmat * p[n];
-    }
-    //Second pass : Build quad
-    for (int i = 0; i < nbsides; i++)
-    {
-        DEF_J_K_Q;
-        int l = -4;
-        while ((l += 4) < 48)
-            AddQuad(q[l + 0] + m[l + 0] * 3 + a[l + 0],
-                    q[l + 1] + m[l + 1] * 3 + a[l + 1],
-                    q[l + 2] + m[l + 2] * 3 + a[l + 2],
-                    q[l + 3] + m[l + 3] * 3 + a[l + 3],
-                    vbase);
-    }
-
-    ComputeNormals(ibase, m_indices.count() - ibase);
-}
-
-} /* namespace lol */
diff --git a/src/easymesh/easymeshrender.cpp b/src/easymesh/easymeshrender.cpp
deleted file mode 100644
index e46b1c5f..00000000
--- a/src/easymesh/easymeshrender.cpp
+++ /dev/null
@@ -1,458 +0,0 @@
-//
-//  Lol Engine
-//
-//  Copyright © 2009—2013 Benjamin “Touky” Huet <huet.benjamin@gmail.com>
-//            © 2010—2019 Sam Hocevar <sam@hocevar.net>
-//            © 2009—2013 Cédric Lecacheur <jordx@free.fr>
-//
-//  Lol Engine is free software. It comes without any warranty, to
-//  the extent permitted by applicable law. You can redistribute it
-//  and/or modify it under the terms of the Do What the Fuck You Want
-//  to Public License, Version 2, as published by the WTFPL Task Force.
-//  See http://www.wtfpl.net/ for more details.
-//
-
-#include <lol/engine-internal.h>
-
-namespace lol
-{
-
-LOLFX_RESOURCE_DECLARE(easymesh_shiny);
-LOLFX_RESOURCE_DECLARE(easymesh_shinyflat);
-LOLFX_RESOURCE_DECLARE(easymesh_shinydebugwireframe);
-LOLFX_RESOURCE_DECLARE(easymesh_shinydebuglighting);
-LOLFX_RESOURCE_DECLARE(easymesh_shinydebugnormal);
-LOLFX_RESOURCE_DECLARE(easymesh_shinydebugUV);
-LOLFX_RESOURCE_DECLARE(easymesh_shiny_SK);
-
-//-----------------------------------------------------------------------------
-void EasyMesh::MeshConvert()
-{
-    /* Default material */
-    auto shader = Shader::Create(LOLFX_RESOURCE_NAME(easymesh_shiny));
-
-    /* Push index buffer to GPU */
-    auto ibo = std::make_shared<IndexBuffer>(m_indices.count() * sizeof(uint16_t));
-    uint16_t *indices = (uint16_t *)ibo->lock(0, 0);
-    for (int i = 0; i < m_indices.count(); ++i)
-        indices[i] = m_indices[i];
-    ibo->unlock();
-
-    /* Push vertex buffer to GPU */
-    struct Vertex
-    {
-        vec3 pos, normal;
-        u8vec4 color;
-        vec4 texcoord;
-    };
-
-    auto vdecl = std::make_shared<VertexDeclaration>(
-        VertexStream<vec3, vec3, u8vec4, vec4>(VertexUsage::Position,
-                                               VertexUsage::Normal,
-                                               VertexUsage::Color,
-                                               VertexUsage::TexCoord));
-
-    auto vbo = std::make_shared<VertexBuffer>(m_vert.count() * sizeof(Vertex));
-    Vertex *vert = (Vertex *)vbo->lock(0, 0);
-    for (int i = 0; i < m_vert.count(); ++i)
-    {
-        vert[i].pos = m_vert[i].m_coord,
-        vert[i].normal = m_vert[i].m_normal,
-        vert[i].color = (u8vec4)(m_vert[i].m_color * 255.f);
-        vert[i].texcoord = m_vert[i].m_texcoord;
-    }
-    vbo->unlock();
-
-    /* Reference our new data in our submesh */
-    m_submeshes.push_back(std::make_shared<SubMesh>(shader, vdecl));
-    m_submeshes.back()->SetIndexBuffer(ibo);
-    m_submeshes.back()->SetVertexBuffer(0, vbo);
-
-    m_state = MeshRender::CanRender;
-}
-
-//-----------------------------------------------------------------------------
-GpuShaderData::GpuShaderData()
-{
-    m_render_mode = DebugRenderMode::Default;
-}
-
-//-----------------------------------------------------------------------------
-GpuShaderData::GpuShaderData(uint16_t vert_decl_flags, std::shared_ptr<Shader> shader, DebugRenderMode render_mode)
-  : m_shader(shader),
-    m_render_mode(render_mode),
-    m_vert_decl_flags(vert_decl_flags)
-{
-}
-
-//-----------------------------------------------------------------------------
-GpuShaderData::~GpuShaderData()
-{
-    m_shader_uniform.clear();
-    m_shader_attrib.clear();
-}
-
-//-----------------------------------------------------------------------------
-void GpuShaderData::AddUniform(std::string const &new_uniform)
-{
-    m_shader_uniform.push(new_uniform, m_shader->GetUniformLocation(new_uniform));
-}
-
-//-----------------------------------------------------------------------------
-void GpuShaderData::AddAttribute(VertexUsage usage, int index)
-{
-    m_shader_attrib.push(m_shader->GetAttribLocation(usage, index));
-}
-
-//-----------------------------------------------------------------------------
-ShaderUniform const *GpuShaderData::GetUniform(std::string const &uniform)
-{
-    for (int i = 0; i < m_shader_uniform.count(); ++i)
-        if (m_shader_uniform[i].m1 == uniform)
-            return &m_shader_uniform[i].m2;
-    return nullptr;
-}
-
-//-----------------------------------------------------------------------------
-ShaderAttrib const *GpuShaderData::GetAttribute(VertexUsage usage, int index)
-{
-    for (int i = 0; i < m_shader_attrib.count(); ++i)
-        if (m_shader_attrib[i].GetUsage() == usage && m_shader_attrib[i].GetIndex() == index)
-            return &m_shader_attrib[i];
-    return nullptr;
-}
-
-//-----------------------------------------------------------------------------
-DefaultShaderData::DefaultShaderData(DebugRenderMode render_mode)
-{
-    bool with_UV = false;
-    m_render_mode = render_mode;
-    m_vert_decl_flags = (1 << VertexUsage::Position) |
-                        (1 << VertexUsage::Normal)   |
-                        (1 << VertexUsage::Color);
-
-    if (render_mode == DebugRenderMode::Default)
-        m_shader = Shader::Create(LOLFX_RESOURCE_NAME(easymesh_shiny));
-    else if (render_mode == DebugRenderMode::Flat)
-        m_shader = Shader::Create(LOLFX_RESOURCE_NAME(easymesh_shinyflat));
-    else if (render_mode == DebugRenderMode::Wireframe)
-        m_shader = Shader::Create(LOLFX_RESOURCE_NAME(easymesh_shinydebugwireframe));
-    else if (render_mode == DebugRenderMode::Lighting)
-        m_shader = Shader::Create(LOLFX_RESOURCE_NAME(easymesh_shinydebuglighting));
-    else if (render_mode == DebugRenderMode::Normal)
-        m_shader = Shader::Create(LOLFX_RESOURCE_NAME(easymesh_shinydebugnormal));
-    else if (render_mode == DebugRenderMode::UV)
-    {
-        m_shader = Shader::Create(LOLFX_RESOURCE_NAME(easymesh_shinydebugUV));
-        m_vert_decl_flags |= (1 << VertexUsage::TexCoord);
-        with_UV = true;
-    }
-    StoreUniformNames();
-    SetupDefaultData(with_UV);
-}
-
-//-----------------------------------------------------------------------------
-DefaultShaderData::DefaultShaderData(uint16_t vert_decl_flags, std::shared_ptr<Shader> shader, bool with_UV)
-    : GpuShaderData(vert_decl_flags, shader, DebugRenderMode::Default)
-{
-    StoreUniformNames();
-    SetupDefaultData(with_UV);
-}
-
-static std::string const DefaultUniforms[8] =
-{
-    "u_lights",
-    "u_model",
-    "u_modelview",
-    "u_view",
-    "u_inv_view",
-    "u_proj",
-    "u_normalmat",
-    "u_damage",
-};
-
-//-----------------------------------------------------------------------------
-void DefaultShaderData::StoreUniformNames()
-{
-}
-
-//-----------------------------------------------------------------------------
-void DefaultShaderData::SetupDefaultData(bool with_UV)
-{
-    UNUSED(with_UV);
-    for (int i = 0; i < 7; i++)
-        AddUniform(DefaultUniforms[i]);
-}
-
-//-----------------------------------------------------------------------------
-void DefaultShaderData::SetupShaderDatas(mat4 const &model)
-{
-    Scene& scene = Scene::GetScene();
-    mat4 proj = scene.GetCamera()->GetProjection();
-    mat4 view = scene.GetCamera()->GetView();
-    mat4 modelview = view * model;
-    mat3 normalmat = transpose(inverse(mat3(modelview)));
-    /* FIXME: this should be hidden in the shader */
-    array<Light *> const &lights = scene.GetLights();
-    array<vec4> light_data;
-    //This is not very nice, but necessary for emscripten WebGL generation.
-    float f = 0.f;
-
-    /* FIXME: the 4th component of the position can be used for other things */
-    /* FIXME: GetUniform("blabla") is costly */
-    for (int i = 0; i < lights.count(); ++i)
-        light_data << vec4(lights[i]->GetPosition(), (float)lights[i]->GetType()) << lights[i]->GetColor();
-    while (light_data.count() < LOL_MAX_LIGHT_COUNT)
-        light_data << vec4::zero << vec4::zero;
-
-    int i = 0;
-    m_shader->SetUniform(*GetUniform(DefaultUniforms[i++]), light_data);
-
-    m_shader->SetUniform(*GetUniform(DefaultUniforms[i++]), model);
-    m_shader->SetUniform(*GetUniform(DefaultUniforms[i++]), modelview);
-    m_shader->SetUniform(*GetUniform(DefaultUniforms[i++]), view);
-    m_shader->SetUniform(*GetUniform(DefaultUniforms[i++]), inverse(view));
-    m_shader->SetUniform(*GetUniform(DefaultUniforms[i++]), proj);
-    m_shader->SetUniform(*GetUniform(DefaultUniforms[i++]), normalmat);
-    m_shader->SetUniform(*GetUniform(DefaultUniforms[i++]), f);
-}
-
-//-----------------------------------------------------------------------------
-GpuEasyMeshData::GpuEasyMeshData()
-{
-    m_vertexcount = 0;
-    m_indexcount = 0;
-}
-
-//-----------------------------------------------------------------------------
-GpuEasyMeshData::~GpuEasyMeshData()
-{
-    m_gpudata.clear();
-    m_vdata.clear();
-}
-
-#define BUILD_VFLAG(bool_value, flag_value, check_flag) \
-    bool bool_value = (check_flag & (1 << flag_value)) != 0; \
-    check_flag &= ~(1 << flag_value);
-#define BUILD_VFLAG_OR(bool_value, flag_value, check_flag) \
-    bool_value = (bool_value || (check_flag & (1 << flag_value)) != 0); \
-    check_flag &= ~(1 << flag_value);
-#define BUILD_VFLAG_COUNT(bool_value, flag_value, check_flag, count_value) \
-    BUILD_VFLAG(bool_value, flag_value, check_flag) \
-    count_value += (int)bool_value;
-
-//-----------------------------------------------------------------------------
-void GpuEasyMeshData::AddGpuData(std::shared_ptr<GpuShaderData> gpudata, std::shared_ptr<EasyMesh> src_mesh)
-{
-    uint16_t vflags = gpudata->m_vert_decl_flags;
-
-    BUILD_VFLAG(has_position,    VertexUsage::Position,     vflags);
-    BUILD_VFLAG(has_normal,      VertexUsage::Normal,       vflags);
-    BUILD_VFLAG(has_color,       VertexUsage::Color,        vflags);
-    BUILD_VFLAG(has_texcoord,    VertexUsage::TexCoord,     vflags);
-    BUILD_VFLAG_OR(has_texcoord, VertexUsage::TexCoordExt,  vflags);
-    ASSERT(!vflags, "no Vertex Usage setup for 0x%04x", vflags);
-
-    if (has_position)   gpudata->AddAttribute(VertexUsage::Position, 0);
-    if (has_normal)     gpudata->AddAttribute(VertexUsage::Normal, 0);
-    if (has_color)      gpudata->AddAttribute(VertexUsage::Color, 0);
-    if (has_texcoord)   gpudata->AddAttribute(VertexUsage::TexCoord, 0);
-
-    SetupVertexData(gpudata->m_vert_decl_flags, src_mesh);
-
-    if (!m_ibo)
-    {
-        array<uint16_t> indexlist;
-        for (int i = 0; i < src_mesh->m_indices.count(); i += 3)
-        {
-            indexlist << src_mesh->m_indices[i + 0];
-            indexlist << src_mesh->m_indices[i + 1];
-            indexlist << src_mesh->m_indices[i + 2];
-        }
-
-        m_ibo = std::make_shared<IndexBuffer>(indexlist.bytes());
-        m_ibo->set_data(indexlist.data(), indexlist.bytes());
-
-        m_indexcount = indexlist.count();
-    }
-
-    //init to a minimum of gpudata->m_render_mode size
-    if (m_gpudata.count() <= gpudata->m_render_mode)
-    {
-        int i = m_gpudata.count();
-        int max = gpudata->m_render_mode + 1;
-        m_gpudata.reserve(max);
-        for (; i < max; i++)
-            m_gpudata.push(nullptr);
-    }
-    m_gpudata[gpudata->m_render_mode] = gpudata;
-}
-
-//-----------------------------------------------------------------------------
-void GpuEasyMeshData::SetupVertexData(uint16_t vflags, std::shared_ptr<EasyMesh> src_mesh)
-{
-    for (int i = 0; i < m_vdata.count(); ++i)
-        if (m_vdata[i].m1 == vflags)
-            return;
-
-    std::shared_ptr<VertexDeclaration> new_vdecl;
-    std::shared_ptr<VertexBuffer> new_vbo;
-    void *vbo_data = nullptr;
-    int vbo_bytes = 0;
-
-#define COPY_VBO \
-    vbo_data = &vertexlist[0]; \
-    vbo_bytes = vertexlist.bytes(); \
-    m_vertexcount = vertexlist.count(); \
-    new_vbo = std::make_shared<VertexBuffer>(vbo_bytes); \
-    new_vbo->set_data(vbo_data, vbo_bytes);
-
-    //Keep a count of the flags
-    uint16_t saveflags = vflags;
-    int flagnb = 0;
-    BUILD_VFLAG_COUNT(has_position,   VertexUsage::Position,    saveflags, flagnb);
-    BUILD_VFLAG_COUNT(has_normal,     VertexUsage::Normal,      saveflags, flagnb);
-    BUILD_VFLAG_COUNT(has_color,      VertexUsage::Color,       saveflags, flagnb);
-    BUILD_VFLAG_COUNT(has_texcoord,   VertexUsage::TexCoord,    saveflags, flagnb);
-    BUILD_VFLAG_COUNT(has_texcoordExt,VertexUsage::TexCoordExt, saveflags, flagnb);
-    ASSERT(!saveflags, "no Vertex Declaration setup for 0x%04x", vflags);
-
-    if (flagnb == 5 && has_position && has_normal && has_color && has_texcoord && has_texcoordExt)
-    {
-        new_vdecl = std::make_shared<VertexDeclaration>(
-                         VertexStream<vec3,vec3,u8vec4,vec4>(
-                          VertexUsage::Position,
-                          VertexUsage::Normal,
-                          VertexUsage::Color,
-                          VertexUsage::TexCoord));
-
-        array<vec3, vec3, u8vec4, vec4> vertexlist;
-        for (int i = 0; i < src_mesh->m_vert.count(); i++)
-            vertexlist.push(src_mesh->m_vert[i].m_coord,
-                            src_mesh->m_vert[i].m_normal,
-                            (u8vec4)(src_mesh->m_vert[i].m_color * 255.f),
-                            src_mesh->m_vert[i].m_texcoord);
-        COPY_VBO;
-    }
-    else if (flagnb == 4 && has_position && has_normal && has_color && has_texcoord)
-    {
-        new_vdecl = std::make_shared<VertexDeclaration>(
-                         VertexStream<vec3,vec3,u8vec4,vec2>(
-                          VertexUsage::Position,
-                          VertexUsage::Normal,
-                          VertexUsage::Color,
-                          VertexUsage::TexCoord));
-
-        array<vec3, vec3, u8vec4, vec2> vertexlist;
-        for (int i = 0; i < src_mesh->m_vert.count(); i++)
-            vertexlist.push(src_mesh->m_vert[i].m_coord,
-                            src_mesh->m_vert[i].m_normal,
-                            (u8vec4)(src_mesh->m_vert[i].m_color * 255.f),
-                            src_mesh->m_vert[i].m_texcoord.xy);
-        COPY_VBO;
-    }
-    else if (flagnb == 4 && has_position && has_color && has_texcoord && has_texcoordExt)
-    {
-        new_vdecl = std::make_shared<VertexDeclaration>(VertexStream<vec3,vec4,vec4>(VertexUsage::Position, VertexUsage::Color, VertexUsage::TexCoord));
-
-        array<vec3, vec4, vec4> vertexlist;
-        for (int i = 0; i < src_mesh->m_vert.count(); i++)
-            vertexlist.push(src_mesh->m_vert[i].m_coord, src_mesh->m_vert[i].m_color, src_mesh->m_vert[i].m_texcoord);
-        COPY_VBO;
-    }
-    else if (flagnb == 3 && has_position && has_normal && has_color)
-    {
-        new_vdecl = std::make_shared<VertexDeclaration>(
-                         VertexStream<vec3,vec3,u8vec4>(
-                          VertexUsage::Position,
-                          VertexUsage::Normal,
-                          VertexUsage::Color));
-
-        array<vec3,vec3,u8vec4> vertexlist;
-        for (int i = 0; i < src_mesh->m_vert.count(); i++)
-            vertexlist.push(src_mesh->m_vert[i].m_coord,
-                            src_mesh->m_vert[i].m_normal,
-                            (u8vec4)(src_mesh->m_vert[i].m_color * 255.f));
-        COPY_VBO;
-    }
-    else if (flagnb == 3 && has_position && has_texcoord && has_texcoordExt)
-    {
-        new_vdecl = std::make_shared<VertexDeclaration>(VertexStream<vec3,vec4>(VertexUsage::Position, VertexUsage::TexCoord));
-
-        array<vec3, vec4> vertexlist;
-        for (int i = 0; i < src_mesh->m_vert.count(); i++)
-            vertexlist.push(src_mesh->m_vert[i].m_coord, src_mesh->m_vert[i].m_texcoord);
-        COPY_VBO;
-    }
-    else if (flagnb == 2 && has_position && has_texcoord)
-    {
-        new_vdecl = std::make_shared<VertexDeclaration>(VertexStream<vec3,vec2>(VertexUsage::Position, VertexUsage::TexCoord));
-
-        array<vec3, vec2> vertexlist;
-        for (int i = 0; i < src_mesh->m_vert.count(); i++)
-            vertexlist.push(src_mesh->m_vert[i].m_coord, src_mesh->m_vert[i].m_texcoord.xy);
-        COPY_VBO;
-    }
-    else if (flagnb == 2 && has_position && has_color)
-    {
-        new_vdecl = std::make_shared<VertexDeclaration>(VertexStream<vec3,u8vec4>(VertexUsage::Position, VertexUsage::Color));
-
-        array<vec3, u8vec4> vertexlist;
-        for (int i = 0; i < src_mesh->m_vert.count(); i++)
-            vertexlist.push(src_mesh->m_vert[i].m_coord, (u8vec4)(src_mesh->m_vert[i].m_color * 255.f));
-        COPY_VBO;
-    }
-    else
-        ASSERT(0, "no Vertex Declaration combination for 0x%04x", vflags);
-
-    m_vdata.push(vflags, new_vdecl, new_vbo);
-}
-
-//-----------------------------------------------------------------------------
-void GpuEasyMeshData::RenderMeshData(mat4 const &model, int render_mode)
-{
-    ASSERT(0 <= render_mode && render_mode < m_gpudata.count(), "render mode is not in the defined range");
-    ASSERT(m_gpudata[render_mode], "gpu datas for this render mode don't exist");
-    GpuShaderData& gpu_sd = *(m_gpudata[render_mode]);
-
-    int vdecl_idx = 0;
-    for (; vdecl_idx < m_vdata.count(); ++vdecl_idx)
-        if (m_vdata[vdecl_idx].m1 == gpu_sd.m_vert_decl_flags)
-            break;
-
-    if (vdecl_idx >= m_vdata.count())
-        return;
-
-    uint16_t vflags = m_vdata[vdecl_idx].m1;
-    auto vdecl = m_vdata[vdecl_idx].m2;
-    auto vbo = m_vdata[vdecl_idx].m3;
-
-    gpu_sd.m_shader->Bind();
-    gpu_sd.SetupShaderDatas(model);
-
-    vdecl->Bind();
-
-    BUILD_VFLAG(has_position,   VertexUsage::Position,    vflags);
-    BUILD_VFLAG(has_normal,     VertexUsage::Normal,      vflags);
-    BUILD_VFLAG(has_color,      VertexUsage::Color,       vflags);
-    BUILD_VFLAG(has_texcoord,   VertexUsage::TexCoord,    vflags);
-    BUILD_VFLAG_OR(has_texcoord,VertexUsage::TexCoordExt, vflags);
-    ASSERT(!vflags, "no Vertex Stream setup for 0x%04x", vflags);
-
-    int idx = 0;
-    ShaderAttrib Attribs[4] = { lol::ShaderAttrib(), lol::ShaderAttrib(), lol::ShaderAttrib(), lol::ShaderAttrib() };
-
-    if (has_position)   Attribs[idx++] = *gpu_sd.GetAttribute(VertexUsage::Position, 0);
-    if (has_normal)     Attribs[idx++] = *gpu_sd.GetAttribute(VertexUsage::Normal, 0);
-    if (has_color)      Attribs[idx++] = *gpu_sd.GetAttribute(VertexUsage::Color, 0);
-    if (has_texcoord)   Attribs[idx++] = *gpu_sd.GetAttribute(VertexUsage::TexCoord, 0);
-
-    vdecl->SetStream(vbo, Attribs[0], Attribs[1], Attribs[2], Attribs[3]);
-
-    m_ibo->Bind();
-    vdecl->DrawIndexedElements(MeshPrimitive::Triangles, m_indexcount);
-    m_ibo->Unbind();
-    vdecl->Unbind();
-}
-
-} /* namespace lol */
diff --git a/src/easymesh/easymeshrender.h b/src/easymesh/easymeshrender.h
deleted file mode 100644
index 5bc41721..00000000
--- a/src/easymesh/easymeshrender.h
+++ /dev/null
@@ -1,142 +0,0 @@
-//
-//  Lol Engine
-//
-//  Copyright © 2009—2013 Benjamin “Touky” Huet <huet.benjamin@gmail.com>
-//            © 2010—2019 Sam Hocevar <sam@hocevar.net>
-//            © 2009—2013 Cédric Lecacheur <jordx@free.fr>
-//
-//  Lol Engine is free software. It comes without any warranty, to
-//  the extent permitted by applicable law. You can redistribute it
-//  and/or modify it under the terms of the Do What the Fuck You Want
-//  to Public License, Version 2, as published by the WTFPL Task Force.
-//  See http://www.wtfpl.net/ for more details.
-//
-
-#pragma once
-
-#include <string>
-#include <map>
-
-namespace lol
-{
-
-//MeshRenderBase --------------------------------------------------------------
-//Utility enum for renderers
-struct MeshRenderBase : public StructSafeEnum
-{
-    enum Type
-    {
-        NeedData,
-        NeedConvert,
-        CanRender,
-        IgnoreRender,
-    };
-protected:
-    virtual bool BuildEnumMap(std::map<int64_t, std::string>& enum_map)
-    {
-        enum_map[NeedData] = "NeedData";
-        enum_map[NeedConvert] = "NeedConvert";
-        enum_map[CanRender] = "CanRender";
-        enum_map[IgnoreRender] = "IgnoreRender";
-        return true;
-    }
-};
-typedef SafeEnum<MeshRenderBase> MeshRender;
-
-//Vertex datas for easymesh vertex list.
-//TODO : <COORD, NORM, COLOR, UV>
-struct VertexData
-{
-    vec3    m_coord;
-    vec3    m_normal;
-    vec4    m_color;
-    vec4    m_texcoord;
-    ivec4   m_bone_id;
-    vec4    m_bone_weight;
-
-    VertexData(vec3  new_coord      = vec3(0.f),
-               vec3  new_normal     = vec3(0.f, 1.f, 0.f),
-               vec4  new_color      = vec4(0.f),
-               vec4  new_texcoord   = vec4(0.f),
-               ivec4 new_bone_id    = ivec4(0),
-               vec4  new_bone_weight= vec4(0.f))
-    {
-        m_coord         = new_coord;
-        m_normal        = new_normal;
-        m_color         = new_color;
-        m_texcoord      = new_texcoord;
-        m_bone_id       = new_bone_id;
-        m_bone_weight   = new_bone_weight;
-    }
-};
-
-//Base class to declare shader datas
-class GpuShaderData
-{
-    friend class GpuEasyMeshData;
-
-protected:
-    GpuShaderData();
-public:
-    //--
-    GpuShaderData(uint16_t vert_decl_flags, std::shared_ptr<Shader> shader, DebugRenderMode render_mode);
-    virtual ~GpuShaderData();
-    //--
-    void AddUniform(std::string const &new_uniform);
-    void AddAttribute(VertexUsage usage, int index);
-    ShaderUniform const *GetUniform(std::string const &uniform);
-    ShaderAttrib const *GetAttribute(VertexUsage usage, int index);
-    //--
-    virtual void SetupShaderDatas(mat4 const &model) { UNUSED(model); }
-    //--
-
-protected:
-    std::shared_ptr<Shader> m_shader;
-    int m_render_mode;
-    uint16_t m_vert_decl_flags;
-    array<std::string, ShaderUniform> m_shader_uniform;
-    array<ShaderAttrib> m_shader_attrib;
-};
-
-class DefaultShaderData : public GpuShaderData
-{
-public:
-    //---
-    DefaultShaderData(DebugRenderMode render_mode);
-    DefaultShaderData(uint16_t vert_decl_flags, std::shared_ptr<Shader> shader, bool with_UV);
-    virtual ~DefaultShaderData() {}
-    void StoreUniformNames();
-    //---
-    void SetupDefaultData(bool with_UV);
-    virtual void SetupShaderDatas(mat4 const &model);
-    //--
-    array<std::string> m_uniform_names;
-};
-
-class GpuEasyMeshData
-{
-    friend class EasyMesh;
-
-public:
-    //---
-    GpuEasyMeshData();
-    ~GpuEasyMeshData();
-    //---
-    void AddGpuData(std::shared_ptr<GpuShaderData> gpudata, std::shared_ptr<class EasyMesh> src_mesh);
-    void RenderMeshData(mat4 const &model, int render_mode=Video::GetDebugRenderMode());
-    bool HasData(int render_mode) { return (0 <= render_mode && render_mode < m_gpudata.count() && !!m_gpudata[render_mode]); }
-
-private:
-    void SetupVertexData(uint16_t vdecl_flags, std::shared_ptr<EasyMesh> src_mesh);
-
-    array<std::shared_ptr<GpuShaderData>> m_gpudata;
-    //uint16_t are the vdecl/vbo flags to avoid copy same vdecl several times.
-    array<uint16_t, std::shared_ptr<VertexDeclaration>, std::shared_ptr<VertexBuffer>> m_vdata;
-    int m_vertexcount;
-    //We only need only one ibo for the whole mesh
-    std::shared_ptr<IndexBuffer> m_ibo;
-    int m_indexcount;
-};
-
-} /* namespace lol */
-
diff --git a/src/easymesh/easymeshtransform.cpp b/src/easymesh/easymeshtransform.cpp
deleted file mode 100644
index bf8c9e9e..00000000
--- a/src/easymesh/easymeshtransform.cpp
+++ /dev/null
@@ -1,440 +0,0 @@
-//
-//  Lol Engine
-//
-//  Copyright © 2010—2015 Sam Hocevar <sam@hocevar.net>
-//            © 2009—2015 Cédric Lecacheur <jordx@free.fr>
-//            © 2009—2015 Benjamin “Touky” Huet <huet.benjamin@gmail.com>
-//
-//  Lol Engine is free software. It comes without any warranty, to
-//  the extent permitted by applicable law. You can redistribute it
-//  and/or modify it under the terms of the Do What the Fuck You Want
-//  to Public License, Version 2, as published by the WTFPL Task Force.
-//  See http://www.wtfpl.net/ for more details.
-//
-
-#include <lol/engine-internal.h>
-
-// EasyMesh-Transform — The code belonging to transform operations
-
-namespace lol
-{
-
-//-----------------------------------------------------------------------------
-void EasyMesh::TranslateX(float t) { Translate(vec3(t, 0.f, 0.f)); }
-void EasyMesh::TranslateY(float t) { Translate(vec3(0.f, t, 0.f)); }
-void EasyMesh::TranslateZ(float t) { Translate(vec3(0.f, 0.f, t)); }
-
-//-----------------------------------------------------------------------------
-void EasyMesh::Translate(vec3 const &v)
-{
-    if (BD()->IsEnabled(MeshBuildOperation::CommandRecording))
-    {
-        BD()->CmdStack().AddCmd(EasyMeshCmdType::Translate);
-        BD()->CmdStack() << v;
-        return;
-    }
-
-    for (int i = m_cursors.last().m1; i < m_vert.count(); i++)
-        m_vert[i].m_coord += v;
-}
-
-//-----------------------------------------------------------------------------
-void EasyMesh::RotateX(float degrees) { Rotate(degrees, vec3(1, 0, 0)); }
-void EasyMesh::RotateY(float degrees) { Rotate(degrees, vec3(0, 1, 0)); }
-void EasyMesh::RotateZ(float degrees) { Rotate(degrees, vec3(0, 0, 1)); }
-
-//-----------------------------------------------------------------------------
-void EasyMesh::Rotate(float degrees, vec3 const &axis)
-{
-    if (BD()->IsEnabled(MeshBuildOperation::CommandRecording))
-    {
-        BD()->CmdStack().AddCmd(EasyMeshCmdType::Rotate);
-        BD()->CmdStack() << degrees << axis;
-        return;
-    }
-
-    mat3 m = mat3::rotate(radians(degrees), axis);
-    for (int i = m_cursors.last().m1; i < m_vert.count(); i++)
-    {
-        m_vert[i].m_coord  = m * m_vert[i].m_coord;
-        m_vert[i].m_normal = m * m_vert[i].m_normal;
-    }
-}
-
-//-----------------------------------------------------------------------------
-void EasyMesh::RadialJitter(float r)
-{
-    if (BD()->IsEnabled(MeshBuildOperation::CommandRecording))
-    {
-        BD()->CmdStack().AddCmd(EasyMeshCmdType::RadialJitter);
-        BD()->CmdStack() << r;
-        return;
-    }
-
-    array<int> welded;
-    welded.push(-1);
-    for (int i = m_cursors.last().m1 + 1; i < m_vert.count(); i++)
-    {
-        int j, k;
-        for (j = m_cursors.last().m1, k = 0; j < i; j++, k++)
-        {
-            if(welded[k] < 0)
-            {
-                vec3 diff = m_vert[i].m_coord - m_vert[j].m_coord;
-
-                if(diff.x > 0.1f || diff.x < -0.1f)
-                    continue;
-
-                if(diff.y > 0.1f || diff.y < -0.1f)
-                    continue;
-
-                if(diff.z > 0.1f || diff.z < -0.1f)
-                    continue;
-
-                break;
-            }
-        }
-
-        welded.push(j != i ? j : -1);
-    }
-
-    int i, j;
-    for (i = m_cursors.last().m1, j = 0; i < m_vert.count(); i++, j++)
-    {
-        if(welded[j] == -1)
-            m_vert[i].m_coord *= 1.0f + rand(r);
-        else
-            m_vert[i].m_coord = m_vert[welded[j]].m_coord;
-    }
-
-    ComputeNormals(m_cursors.last().m2, m_indices.count() - m_cursors.last().m2);
-}
-
-//-----------------------------------------------------------------------------
-void EasyMesh::TaperX(float ny, float nz, float xoff, bool absolute) { DoMeshTransform(MeshTransform::Taper, Axis::X, Axis::X, ny, nz, xoff, absolute); }
-void EasyMesh::TaperY(float nx, float nz, float yoff, bool absolute) { DoMeshTransform(MeshTransform::Taper, Axis::Y, Axis::Y, nz, nx, yoff, absolute); }
-void EasyMesh::TaperZ(float nx, float ny, float zoff, bool absolute) { DoMeshTransform(MeshTransform::Taper, Axis::Z, Axis::Z, nx, ny, zoff, absolute); }
-
-//-----------------------------------------------------------------------------
-void EasyMesh::TwistX(float t, float toff) { DoMeshTransform(MeshTransform::Twist, Axis::X, Axis::X, t, t, toff); }
-void EasyMesh::TwistY(float t, float toff) { DoMeshTransform(MeshTransform::Twist, Axis::Y, Axis::Y, t, t, toff); }
-void EasyMesh::TwistZ(float t, float toff) { DoMeshTransform(MeshTransform::Twist, Axis::Z, Axis::Z, t, t, toff); }
-
-//-----------------------------------------------------------------------------
-void EasyMesh::ShearX(float ny, float nz, float xoff, bool absolute) { DoMeshTransform(MeshTransform::Shear, Axis::X, Axis::X, ny, nz, xoff, absolute); }
-void EasyMesh::ShearY(float nx, float nz, float yoff, bool absolute) { DoMeshTransform(MeshTransform::Shear, Axis::Y, Axis::Y, nz, nx, yoff, absolute); }
-void EasyMesh::ShearZ(float nx, float ny, float zoff, bool absolute) { DoMeshTransform(MeshTransform::Shear, Axis::Z, Axis::Z, nx, ny, zoff, absolute); }
-
-//-----------------------------------------------------------------------------
-void EasyMesh::StretchX(float ny, float nz, float xoff) { DoMeshTransform(MeshTransform::Stretch, Axis::X, Axis::X, ny, nz, xoff); }
-void EasyMesh::StretchY(float nx, float nz, float yoff) { DoMeshTransform(MeshTransform::Stretch, Axis::Y, Axis::Y, nz, nx, yoff); }
-void EasyMesh::StretchZ(float nx, float ny, float zoff) { DoMeshTransform(MeshTransform::Stretch, Axis::Z, Axis::Z, nx, ny, zoff); }
-
-//-----------------------------------------------------------------------------
-void EasyMesh::BendXY(float t, float toff) { DoMeshTransform(MeshTransform::Bend, Axis::X, Axis::Y, t, t, toff); }
-void EasyMesh::BendXZ(float t, float toff) { DoMeshTransform(MeshTransform::Bend, Axis::X, Axis::Z, t, t, toff); }
-void EasyMesh::BendYX(float t, float toff) { DoMeshTransform(MeshTransform::Bend, Axis::Y, Axis::X, t, t, toff); }
-void EasyMesh::BendYZ(float t, float toff) { DoMeshTransform(MeshTransform::Bend, Axis::Y, Axis::Z, t, t, toff); }
-void EasyMesh::BendZX(float t, float toff) { DoMeshTransform(MeshTransform::Bend, Axis::Z, Axis::X, t, t, toff); }
-void EasyMesh::BendZY(float t, float toff) { DoMeshTransform(MeshTransform::Bend, Axis::Z, Axis::Y, t, t, toff); }
-
-//-----------------------------------------------------------------------------
-void EasyMesh::DoMeshTransform(MeshTransform ct, Axis axis0, Axis axis1, float n0, float n1, float noff, bool absolute)
-{
-    if (BD()->IsEnabled(MeshBuildOperation::CommandRecording))
-    {
-        BD()->CmdStack().AddCmd(EasyMeshCmdType::MeshTranform);
-        BD()->CmdStack() << ct << axis0 << axis1 << n0 << n1 << noff << absolute;
-        return;
-    }
-
-    for (int i = m_cursors.last().m1; i < m_vert.count(); i++)
-    {
-        switch (ct.ToScalar())
-        {
-            case MeshTransform::Taper:
-            {
-                float value = m_vert[i].m_coord[axis0.ToScalar()];
-                if (absolute) value = abs(value);
-                m_vert[i].m_coord[(axis0.ToScalar() + 1) % 3] *= max(0.f, 1.f + (n0 * value + noff));
-                m_vert[i].m_coord[(axis0.ToScalar() + 2) % 3] *= max(0.f, 1.f + (n1 * value + noff));
-                break;
-            }
-            case MeshTransform::Twist:
-            {
-                vec3 rotaxis = vec3(1.f); rotaxis[(axis0.ToScalar() + 1) % 3] = .0f; rotaxis[(axis0.ToScalar() + 2) % 3] = .0f;
-                m_vert[i].m_coord = mat3::rotate(radians(m_vert[i].m_coord[axis0.ToScalar()] * n0 + noff), rotaxis) * m_vert[i].m_coord;
-                break;
-            }
-            case MeshTransform::Shear:
-            {
-                float value = m_vert[i].m_coord[axis0.ToScalar()];
-                if (absolute) value = abs(value);
-                m_vert[i].m_coord[(axis0.ToScalar() + 1) % 3] += (n0 * value + noff);
-                m_vert[i].m_coord[(axis0.ToScalar() + 2) % 3] += (n1 * value + noff);
-                break;
-            }
-            case MeshTransform::Stretch:
-            {
-                //float value = abs(m_vert[i].m1[axis0.ToScalar()]);
-                //m_vert[i].m1[(axis0.ToScalar() + 1) % 3] += (lol::pow(value, n0) + noff);
-                //m_vert[i].m1[(axis0.ToScalar() + 2) % 3] += (lol::pow(value, n1) + noff);
-                break;
-            }
-            case MeshTransform::Bend:
-            {
-                vec3 rotaxis = vec3(1.f); rotaxis[(axis1.ToScalar() + 1) % 3] = .0f; rotaxis[(axis1.ToScalar() + 2) % 3] = .0f;
-                m_vert[i].m_coord = mat3::rotate(radians(m_vert[i].m_coord[axis0.ToScalar()] * n0 + noff), rotaxis) * m_vert[i].m_coord;
-                break;
-            }
-        }
-    }
-    ComputeNormals(m_cursors.last().m2, m_indices.count() - m_cursors.last().m2);
-}
-
-//-----------------------------------------------------------------------------
-void EasyMesh::Scale(float s) { Scale(vec3(s)); }
-void EasyMesh::ScaleX(float s) { Scale(vec3(s, 0.f, 0.f)); }
-void EasyMesh::ScaleY(float s) { Scale(vec3(0.f, s, 0.f)); }
-void EasyMesh::ScaleZ(float s) { Scale(vec3(0.f, 0.f, s)); }
-void EasyMesh::Scale(vec3 const &s)
-{
-    if (BD()->IsEnabled(MeshBuildOperation::CommandRecording))
-    {
-        BD()->CmdStack().AddCmd(EasyMeshCmdType::Scale);
-        BD()->CmdStack() << s;
-        return;
-    }
-
-    vec3 const invs = vec3(1) / s;
-
-    for (int i = m_cursors.last().m1; i < m_vert.count(); i++)
-    {
-        m_vert[i].m_coord *= s;
-        m_vert[i].m_normal = normalize(m_vert[i].m_normal * invs);
-    }
-
-    /* Flip winding if the scaling involves mirroring */
-    if (!BD()->IsEnabled(MeshBuildOperation::ScaleWinding) && s.x * s.y * s.z < 0)
-    {
-        for (int i = m_cursors.last().m2; i < m_indices.count(); i += 3)
-        {
-            uint16_t tmp = m_indices[i + 0];
-            m_indices[i + 0] = m_indices[i + 1];
-            m_indices[i + 1] = tmp;
-        }
-    }
-}
-
-//-----------------------------------------------------------------------------
-void EasyMesh::MirrorX() { DupAndScale(vec3(-1, 1, 1)); }
-void EasyMesh::MirrorY() { DupAndScale(vec3(1, -1, 1)); }
-void EasyMesh::MirrorZ() { DupAndScale(vec3(1, 1, -1)); }
-
-//-----------------------------------------------------------------------------
-void EasyMesh::DupAndScale(vec3 const &s, bool open_brace)
-{
-    if (BD()->IsEnabled(MeshBuildOperation::CommandRecording))
-    {
-        BD()->CmdStack().AddCmd(EasyMeshCmdType::DupAndScale);
-        BD()->CmdStack() << s << open_brace;
-        return;
-    }
-
-    int vlen = m_vert.count() - m_cursors.last().m1;
-    int tlen = m_indices.count() - m_cursors.last().m2;
-
-    for (int i = 0; i < vlen; i++)
-        AddDupVertex(m_cursors.last().m1++);
-
-    for (int i = 0; i < tlen; i++)
-        m_indices << m_indices[m_cursors.last().m2++] + vlen;
-
-    Scale(s);
-
-    m_cursors.last().m1 -= vlen;
-    m_cursors.last().m2 -= tlen;
-
-    if (open_brace)
-    {
-        OpenBrace();
-
-        m_cursors.last().m1 -= vlen;
-        m_cursors.last().m2 -= tlen;
-    }
-}
-
-//-----------------------------------------------------------------------------
-void EasyMesh::Chamfer(float f)
-{
-    if (BD()->IsEnabled(MeshBuildOperation::CommandRecording))
-    {
-        BD()->CmdStack().AddCmd(EasyMeshCmdType::Chamfer);
-        BD()->CmdStack() << f;
-        return;
-    }
-
-    int vlen = m_vert.count() - m_cursors.last().m1;
-    int ilen = m_indices.count() - m_cursors.last().m2;
-
-    /* Step 1: enumerate all faces. This is done by merging triangles
-     * that are coplanar and share an edge. */
-    int *triangle_classes = new int[ilen / 3];
-    for (int i = 0; i < ilen / 3; i++)
-        triangle_classes[i] = -1;
-
-    for (int i = 0; i < ilen / 3; i++)
-    {
-
-    }
-
-    /* Fun shit: reduce all triangles */
-    int *vertices = new int[vlen];
-    memset(vertices, 0, vlen * sizeof(int));
-    for (int i = 0; i < ilen; i++)
-        vertices[m_indices[i]]++;
-
-    for (int i = 0; i < ilen / 3; i++)
-
-    {
-    #if 0
-        if (vertices[m_indices[i * 3]] > 1)
-            continue;
-        if (vertices[m_indices[i * 3 + 1]] > 1)
-            continue;
-        if (vertices[m_indices[i * 3 + 2]] > 1)
-            continue;
-    #endif
-
-        vec3 bary = 1.f / 3.f * (m_vert[m_indices[i * 3]].m_coord +
-                                 m_vert[m_indices[i * 3 + 1]].m_coord +
-                                 m_vert[m_indices[i * 3 + 2]].m_coord);
-        for (int k = 0; k < 3; k++)
-        {
-            vec3 &p = m_vert[m_indices[i * 3 + k]].m_coord;
-            p -= normalize(p - bary) * f;
-        }
-    }
-}
-
-//-----------------------------------------------------------------------------
-void EasyMesh::SplitTriangles(int pass)
-{
-    if (BD()->IsEnabled(MeshBuildOperation::CommandRecording))
-    {
-        BD()->CmdStack().AddCmd(EasyMeshCmdType::SplitTriangles);
-        BD()->CmdStack() << pass;
-        return;
-    }
-
-    SplitTriangles(pass, nullptr);
-}
-
-//-----------------------------------------------------------------------------
-void EasyMesh::SplitTriangles(int pass, VertexDictionnary *vert_dict)
-{
-    while (pass--)
-    {
-        int trimax = m_indices.count();
-        for (int i = m_cursors.last().m2; i < trimax; i += 3)
-        {
-            int vbase = m_vert.count();
-            int j = -1;
-            while (++j < 3)
-            {
-                AddLerpVertex(m_indices[i + j], m_indices[i + (j + 1) % 3], .5f);
-                if (vert_dict)
-                    vert_dict->RegisterVertex(vbase + j, m_vert[vbase + j].m_coord);
-            }
-            //Add new triangles
-            AddTriangle(vbase, m_indices[i + 1], vbase + 1, 0);
-            AddTriangle(vbase + 2, vbase + 1, m_indices[i + 2], 0);
-            AddTriangle(vbase, vbase + 1, vbase + 2, 0);
-            //Change current triangle
-            m_indices[i + 1] = vbase;
-            m_indices[i + 2] = vbase + 2;
-        }
-    }
-    ComputeNormals(m_cursors.last().m2, m_indices.count() - m_cursors.last().m2);
-}
-
-//-----------------------------------------------------------------------------
-//TODO : Add an half-edges implementation to refine smooth.
-//TODO : Smooth should only use connected vertices that are on edges of the mesh (See box).
-void EasyMesh::SmoothMesh(int main_pass, int split_per_main_pass, int smooth_per_main_pass)
-{
-    if (BD()->IsEnabled(MeshBuildOperation::CommandRecording))
-    {
-        BD()->CmdStack().AddCmd(EasyMeshCmdType::SmoothMesh);
-        BD()->CmdStack() << main_pass << split_per_main_pass << smooth_per_main_pass;
-        return;
-    }
-
-    VertexDictionnary vert_dict;
-    array<vec3> smooth_buf[2];
-    array<int> master_list;
-    array<int> matching_ids;
-    array<int> connected_vert;
-    int smbuf = 0;
-
-    for (int i = m_cursors.last().m1; i < m_vert.count(); i++)
-        vert_dict.RegisterVertex(i, m_vert[i].m_coord);
-
-    while (main_pass--)
-    {
-        int split_pass = split_per_main_pass;
-        int smooth_pass = smooth_per_main_pass;
-
-        SplitTriangles(split_pass, &vert_dict);
-
-        matching_ids.reserve(m_vert.count() - m_cursors.last().m1);
-        connected_vert.reserve(m_vert.count() - m_cursors.last().m1);
-        smooth_buf[0].resize(m_vert.count() - m_cursors.last().m1);
-        smooth_buf[1].resize(m_vert.count() - m_cursors.last().m1);
-
-        for (int i = m_cursors.last().m1; i < m_vert.count(); i++)
-            smooth_buf[smbuf][i - m_cursors.last().m1] = m_vert[i].m_coord;
-
-        while (smooth_pass--)
-        {
-            master_list.clear();
-            if (vert_dict.GetMasterList(master_list))
-            {
-                for (int i = 0; i < master_list.count(); i++)
-                {
-                    connected_vert.clear();
-                    if (vert_dict.FindConnectedVertices(master_list[i], m_indices, m_cursors.last().m2, connected_vert))
-                    {
-                        //Calculate vertices sum
-                        vec3 vert_sum = vec3(.0f);
-                        for (int j = 0; j < connected_vert.count(); j++)
-                            vert_sum += smooth_buf[smbuf][connected_vert[j] - m_cursors.last().m1];
-
-                        //Calculate new master vertex
-                        float n = (float)connected_vert.count();
-                        //b(n) = 5/4 - pow(3 + 2 * cos(2.f * F_PI / n), 2) / 32
-                        float beta = 3.f + 2.f * cos(2.f * F_PI / n);
-                        beta = 5.f / 4.f - beta * beta / 32.f;
-                        //a(n) = n * (1 - b(n)) / b(n)
-                        float alpha = (n * (1 - beta)) / beta;
-                        //V = (a(n) * v + v1 + ... + vn) / (a(n) + n)
-                        vec3 new_vert = (alpha * smooth_buf[smbuf][master_list[i] - m_cursors.last().m1] + vert_sum) / (alpha + n);
-
-                        //Set all matching vertices to new value
-                        matching_ids.clear();
-                        matching_ids << master_list[i];
-                        vert_dict.FindMatchingVertices(master_list[i], matching_ids);
-                        for (int j = 0; j < matching_ids.count(); j++)
-                            smooth_buf[1 - smbuf][matching_ids[j] - m_cursors.last().m1] = new_vert;
-                    }
-                }
-            }
-            smbuf = 1 - smbuf;
-        }
-
-        for (int i = 0; i < smooth_buf[smbuf].count(); i++)
-            m_vert[i + m_cursors.last().m1].m_coord = smooth_buf[smbuf][i];
-    }
-}
-
-} /* namespace lol */
diff --git a/src/easymesh/shiny.lolfx b/src/easymesh/shiny.lolfx
deleted file mode 100644
index 9f629d1f..00000000
--- a/src/easymesh/shiny.lolfx
+++ /dev/null
@@ -1,135 +0,0 @@
-
-[vert.glsl]
-#version 130
-
-in vec3 in_Position;
-in vec3 in_Normal;
-in vec4 in_Color;
-
-uniform mat4 u_modelview;
-uniform mat4 u_view;
-uniform mat4 u_projection;
-uniform mat3 u_normalmat;
-
-out vec4 pass_vertex; /* View space */
-out vec3 pass_tnormal;
-out vec4 pass_color;
-
-void main(void)
-{
-    vec4 vertex = u_modelview * vec4(in_Position, 1.0);
-    vec3 tnorm = normalize(u_normalmat * in_Normal);
-
-    pass_vertex = vertex;
-    pass_tnormal = tnorm;
-    pass_color = in_Color;
-
-    gl_Position = u_projection * vertex;
-}
-
-[frag.glsl]
-#version 130
-
-#if defined GL_ES
-precision highp float;
-#endif
-
-in vec4 pass_vertex; /* View space */
-in vec3 pass_tnormal;
-in vec4 pass_color;
-
-uniform mat4 u_view;
-uniform mat4 u_inv_view;
-
-uniform vec4 u_lights[8 * 2];
-
-uniform float u_damage; /* FIXME: remove this */
-
-#if 0
-//Cos(45) = 0.70710678118
-//1.0 - Cos(45) = 0.29289321881
-
-const float cos_45      = 0.70710678118;
-const float inv_cos_45  = 0.29289321881;
-
-//Cube Light
-vec4 in_Light3_Pos = vec4(-10.0, 10.0, 5.0, 1.0);
-vec3 in_Light3_Size_Inner = vec3(3.0, 1.0, 3.0);
-vec3 in_Light3_Size_Outer = vec3(15.0, 15.0, 15.0);
-vec3 in_Light3_diffuse = vec3(0.4, 1.0, 0.4);
-#endif
-
-void main(void)
-{
-    vec3 tnormal = pass_tnormal;
-
-    /* Material properties */
-    vec3 specular_reflect = vec3(0.8, 0.75, 0.4);
-    float specular_power = 60.0;
-
-    /* World properties */
-    vec3 ambient = vec3(0.1, 0.1, 0.1);
-    vec3 specular = vec3(0.0, 0.0, 0.0);
-    vec3 diffuse = vec3(0.0, 0.0, 0.0);
-
-    /* Light precalculations */
-    vec3 v = normalize(-pass_vertex.xyz);
-
-    /* Apply lighting */
-    for (int i = 0; i < 8; i++)
-    {
-        vec4 pos = u_lights[i * 2];
-        vec4 color = u_lights[i * 2 + 1];
-        vec3 s, r, p;
-
-        p = (u_view * pos).xyz;
-        if (pos.w > 0.0)
-        {
-            /* Point light -- no attenuation yet */
-            s = normalize(p - pass_vertex.xyz);
-        }
-        else
-        {
-            /* Directional light */
-            s = normalize(-p);
-        }
-        r = reflect(-s, tnormal);
-
-        float sdotn = max(dot(s, tnormal), 0.0);
-        diffuse += color.xyz * sdotn;
-        if (sdotn > 0.0)
-            specular += color.xyz * specular_reflect
-                         * pow(max(dot(r, v), 0.0), specular_power);
-    }
-
-#if 0
-    //Light calculation for cube light
-    vec3 specular_color = vec3(1.0, 1.0, 0.6);
-    vec3 Local_Vertex = (u_inv_view * pass_vertex).xyz - (in_Light3_Pos).xyz;
-    vec3 Proj_Vertex = clamp(Local_Vertex.xyz, -in_Light3_Size_Inner, in_Light3_Size_Inner);
-    vec3 new_LightDir = Local_Vertex - Proj_Vertex;
-
-    vec3 light_radius = max(vec3(0.0,0.0,0.0), vec3(1.0,1.0,1.0) - abs(new_LightDir / in_Light3_Size_Outer));
-    float light_radius_mod = min(light_radius.x, min(light_radius.y, light_radius.z));
-
-    if (length(new_LightDir) == 0.0)
-        sdotn = 1.0;
-    else
-    {
-        new_LightDir = normalize((u_view * vec4(Proj_Vertex + in_Light3_Pos.xyz,1.0)).xyz - pass_vertex.xyz);
-        sdotn = max(dot(new_LightDir, tnormal), 0.0);
-        r = reflect(-new_LightDir, tnormal);
-        if (sdotn > 0.0 && light_radius_mod > 0.0)
-            specular += specular_color * min(specular_reflect, light_radius_mod)
-                     * pow(max(dot(r, v), 0.0), specular_power);
-    }
-    diffuse += in_Light3_diffuse * min(sdotn, light_radius_mod);
-    //----------
-#endif
-
-    vec3 light = ambient + diffuse + specular;
-
-    vec4 real_color = mix(pass_color, vec4(1.2, 1.2, 1.2, 1.0), u_damage);
-    gl_FragColor = real_color * vec4(light, 1.0);
-}
-
diff --git a/src/easymesh/shiny_SK.lolfx b/src/easymesh/shiny_SK.lolfx
deleted file mode 100644
index 1516a0d6..00000000
--- a/src/easymesh/shiny_SK.lolfx
+++ /dev/null
@@ -1,159 +0,0 @@
-
-[vert.glsl]
-#version 130
-
-in vec3 in_position;
-in vec3 in_Normal;
-in vec4 in_color;
-in vec2 in_Index;
-in vec2 in_Weight;
-
-uniform mat4 u_modelview;
-uniform mat4 u_view;
-uniform mat4 u_projection;
-uniform mat3 u_normalmat;
-//10is not a fix idea, should be more.
-uniform mat4 u_bone_list[10];
-
-out vec4 pass_vertex; /* View space */
-out vec3 pass_tnormal;
-out vec4 pass_color;
-
-void main(void)
-{
-    vec4 vertex = u_modelview * vec4(in_position, 1.0);
-    vec3 tnorm = normalize(u_normalmat * in_Normal);
-
-    pass_vertex = vertex;
-    pass_tnormal = tnorm;
-    pass_color = in_color;
-
-    gl_Position = u_projection * vertex;
-}
-
-[frag.glsl]
-#version 130
-
-#if defined GL_ES
-precision highp float;
-#endif
-
-in vec4 pass_vertex; /* View space */
-in vec3 pass_tnormal;
-in vec4 pass_color;
-
-uniform float u_damage;
-uniform mat4 u_view;
-uniform mat4 u_inv_view;
-
-uniform vec4 u_lights[8 * 2];
-
-#if 0
-//Cube Light
-//Cos(45) = 0.70710678118
-//1.0 - Cos(45) = 0.29289321881
-
-const float cos_45      = 0.70710678118;
-const float inv_cos_45  = 0.29289321881;
-
-vec4 in_Light3_Pos = vec4(-10.0, 20.0, 0.0, 1.0);
-vec3 in_Light3_Size_Inner = vec3(12.0, 12.0, 12.0);
-vec3 in_Light3_Size_Outer = vec3(10.0, 10.0, 10.0);
-vec3 in_Light3_diffuse = vec3(0.4, 1.0, 0.4);
-#endif
-
-void main(void)
-{
-    /* Material properties */
-    vec3 specular_reflect = vec3(0.8, 0.75, 0.4);
-    float specular_power = 60.0;
-
-    /* World properties */
-    vec3 ambient = vec3(0.7, 0.7, 0.7);
-    vec3 specular = vec3(0.0, 0.0, 0.0);
-    vec3 diffuse = vec3(0.0, 0.0, 0.0);
-
-    /* Light precalculations */
-    vec3 v = normalize(-pass_vertex.xyz);
-
-    /* Apply lighting */
-    for (int i = 0; i < 8; i++)
-    {
-        vec4 pos = u_lights[i * 2];
-        vec4 color = u_lights[i * 2 + 1];
-        vec3 s, r;
-
-        if (pos.w > 0.0)
-        {
-            /* Point light -- no attenuation yet */
-            s = normalize((u_view * pos).xyz - pass_vertex.xyz);
-            r = reflect(-s, pass_tnormal);
-        }
-        else
-        {
-            /* Directional light */
-            s = normalize(-pos.xyz);
-            r = reflect(s, pass_tnormal);
-        }
-
-        float sdotn = max(dot(s, pass_tnormal), 0.0);
-        diffuse += color.xyz * sdotn;
-        if (sdotn > 0.0)
-            specular += color.xyz * specular_reflect
-                         * pow(max(dot(r, v), 0.0), specular_power);
-    }
-
-#if 0
-    //Light calculation for cube light
-    //const float cos_45      = 0.70710678118;
-    //const float inv_cos_45  = 0.29289321881;
-    vec3 local_vertex = (u_inv_view * pass_vertex).xyz - (in_Light3_Pos).xyz;
-    vec3 proj_vertex = clamp(local_vertex.xyz, -in_Light3_Size_Inner, in_Light3_Size_Inner);
-    vec3 proj_local_dir = local_vertex - proj_vertex;
-    vec3 inner_dir = proj_vertex / in_Light3_Size_Inner;
-    inner_dir.x = (inner_dir.x == 1.0)?(1.0):(0.0);
-    inner_dir.y = (inner_dir.y == 1.0)?(1.0):(0.0);
-    inner_dir.z = (inner_dir.z == 1.0)?(1.0):(0.0);
-
-    //inside the cube
-    if (length(proj_local_dir) == 0.0)
-    {
-        sdotn = 1.0;
-        light_radius_mod = 1.0;
-    }
-    //spec calculation
-    else
-    {
-        //Distance calculation
-        vec3 proj_local_light = proj_local_dir / in_Light3_Size_Outer;
-        light_radius_mod = max(0.0, 1.0 - length(proj_local_light));
-        //cube orientation
-        sdotn = max(0.0, dot(normalize(proj_local_dir), normalize(inner_dir)));
-
-
-        //if (length(inner_dir) > 1.0)
-        //    sdotn = 0.0;
-        //else
-        //{
-        //    //vec3 proj_local_light = max(vec3(0.0,0.0,0.0), vec3(1.0,1.0,1.0) - abs(proj_local_dir / in_Light3_Size_Outer));
-        //}
-        /*
-        proj_local_dir = normalize((u_view * vec4(proj_vertex + in_Light3_Pos.xyz,1.0)).xyz - pass_vertex.xyz);
-        sdotn = max(dot(proj_local_dir, pass_tnormal), 0.0);
-        r = reflect(-proj_local_dir, pass_tnormal);
-        if (sdotn > 0.0 && light_radius_mod > 0.0)
-            specular += specular_color * min(specular_reflect, light_radius_mod)
-                     * pow(max(dot(r, v), 0.0), specular_power);
-        */
-    }
-    //diffuse calculation
-    diffuse += in_Light3_diffuse * sdotn; //min(sdotn, light_radius_mod);
-    //----------
-#endif
-
-    vec3 light = ambient + diffuse + specular;
-
-    vec4 real_color = mix(pass_color, vec4(1.2, 1.2, 1.2, 1.0), u_damage);
-    gl_FragColor = real_color * vec4(light, 1.0);
-}
-
diff --git a/src/easymesh/shinydebugUV.lolfx b/src/easymesh/shinydebugUV.lolfx
deleted file mode 100644
index 077c1be9..00000000
--- a/src/easymesh/shinydebugUV.lolfx
+++ /dev/null
@@ -1,93 +0,0 @@
-
-[vert.glsl]
-#version 130
-
-in vec3 in_position;
-in vec3 in_Normal;
-in vec4 in_color;
-in vec2 in_texcoord;
-
-uniform mat4 u_modelview;
-uniform mat4 u_view;
-uniform mat4 u_projection;
-uniform mat3 u_normalmat;
-
-out vec4 pass_vertex; /* View space */
-out vec3 pass_tnormal;
-out vec4 pass_color;
-out vec2 pass_texcoord;
-
-void main(void)
-{
-    vec4 vertex = u_modelview * vec4(in_position, 1.0);
-    vec3 tnorm = normalize(u_normalmat * in_Normal);
-
-    pass_vertex = vertex;
-    pass_tnormal = tnorm;
-    pass_color = in_color;
-    pass_texcoord = in_texcoord;
-
-    gl_Position = u_projection * vertex;
-}
-
-[frag.glsl]
-#version 130
-
-#if defined GL_ES
-precision highp float;
-#endif
-
-in vec4 pass_vertex; /* View space */
-in vec3 pass_tnormal;
-in vec4 pass_color;
-in vec2 pass_texcoord;
-
-uniform float u_damage;
-uniform mat4 u_view;
-uniform mat4 u_inv_view;
-
-uniform vec4 u_lights[8 * 2];
-
-void main(void)
-{
-    float mode = 0.0;
-    if (mode == 0.0)
-    {
-        gl_FragColor = vec4(mod(pass_texcoord.x, 1.0),
-                            0.1,
-                            mod(pass_texcoord.y, 1.0), 1.0);
-    }
-    else
-    {
-        float col = ((mod(mode, 2.0) == 1.0)?(mod(pass_texcoord.x, 1.0)):(mod(pass_texcoord.y, 1.0)));
-        if (mode == 1.0 || mode == 2.0)
-        {
-            if (col > 1.0/3.0) gl_FragColor.r = 0.0;
-            else gl_FragColor.r = min(col, 1.0/3.0);
-            if (col > 2.0/3.0) gl_FragColor.g = 0.0;
-            else gl_FragColor.g = min(max(col, 1.0/3.0) - 1.0/3.0, 1.0/3.0);
-            gl_FragColor.b = min(max(col, 2.0/3.0) - 2.0/3.0, 1.0/3.0);
-        }
-        else if (mode == 3.0 || mode == 4.0)
-        {
-            if (col > 0.5) gl_FragColor.r = 0.0;
-            else gl_FragColor.r = min(col, 0.5);
-            gl_FragColor.g = min(max(col, 0.5) - 0.5, 0.5);
-            gl_FragColor.b = 0.1;
-        }
-        else if (mode == 5.0 || mode == 6.0)
-        {
-            gl_FragColor.r = col;
-            gl_FragColor.g = 0.1;
-            gl_FragColor.b = 0.1;
-        }
-    }
-
-    gl_FragColor.a = 1.0;
-    gl_FragColor *=
-                 //= pass_color *
-                    length(normalize(pass_texcoord)) *
-                    length(normalize(pass_color.xyz)) *
-                    length(normalize(pass_tnormal));
-}
-
diff --git a/src/easymesh/shinydebuglighting.lolfx b/src/easymesh/shinydebuglighting.lolfx
deleted file mode 100644
index f43774c9..00000000
--- a/src/easymesh/shinydebuglighting.lolfx
+++ /dev/null
@@ -1,93 +0,0 @@
-
-[vert.glsl]
-#version 130
-
-in vec3 in_position;
-in vec3 in_Normal;
-in vec4 in_color;
-
-uniform mat4 u_modelview;
-uniform mat4 u_view;
-uniform mat4 u_projection;
-uniform mat3 u_normalmat;
-
-out vec4 pass_vertex; /* View space */
-out vec3 pass_tnormal;
-out vec4 pass_color;
-
-void main(void)
-{
-    vec4 vertex = u_modelview * vec4(in_position, 1.0);
-    vec3 tnorm = normalize(u_normalmat * in_Normal);
-
-    pass_vertex = vertex;
-    pass_tnormal = tnorm;
-    pass_color = vec4(1.0, 1.0, 1.0, in_color.w);//;
-
-    gl_Position = u_projection * vertex;
-}
-
-[frag.glsl]
-#version 130
-
-#if defined GL_ES
-precision highp float;
-#endif
-
-in vec4 pass_vertex; /* View space */
-in vec3 pass_tnormal;
-in vec4 pass_color;
-
-uniform float u_damage;
-uniform mat4 u_view;
-uniform mat4 u_inv_view;
-
-uniform vec4 u_lights[8 * 2];
-
-void main(void)
-{
-    /* Material properties */
-    vec3 specular_reflect = vec3(0.8, 0.75, 0.4);
-    float specular_power = 60.0;
-
-    /* World properties */
-    vec3 ambient = vec3(0.1, 0.1, 0.1);
-    vec3 specular = vec3(0.0, 0.0, 0.0);
-    vec3 diffuse = vec3(0.0, 0.0, 0.0);
-
-    /* Light precalculations */
-    vec3 v = normalize(-pass_vertex.xyz);
-
-    /* Apply lighting */
-    for (int i = 0; i < 8; i++)
-    {
-        vec4 pos = u_lights[i * 2];
-        vec4 color = u_lights[i * 2 + 1];
-        vec3 s, r;
-
-        if (pos.w > 0.0)
-        {
-            /* Point light -- no attenuation yet */
-            s = normalize((u_view * pos).xyz - pass_vertex.xyz);
-            r = reflect(-s, pass_tnormal);
-        }
-        else
-        {
-            /* Directional light */
-            s = normalize(-pos.xyz);
-            r = reflect(s, pass_tnormal);
-        }
-
-        float sdotn = max(dot(s, pass_tnormal), 0.0);
-        diffuse += color.xyz * sdotn;
-        if (sdotn > 0.0)
-            specular += color.xyz * specular_reflect
-                         * pow(max(dot(r, v), 0.0), specular_power);
-    }
-
-    vec3 light = ambient + diffuse + specular;
-
-    //vec4 real_color = mix(pass_color, vec4(1.0, 1.0, 1.0, 1.0), 1.0);
-    gl_FragColor = pass_color * vec4(light, 1.0);
-}
-
diff --git a/src/easymesh/shinydebugnormal.lolfx b/src/easymesh/shinydebugnormal.lolfx
deleted file mode 100644
index 6b5fe001..00000000
--- a/src/easymesh/shinydebugnormal.lolfx
+++ /dev/null
@@ -1,55 +0,0 @@
-
-[vert.glsl]
-#version 130
-
-in vec3 in_position;
-in vec3 in_Normal;
-in vec4 in_color;
-
-uniform mat4 u_modelview;
-uniform mat4 u_view;
-uniform mat4 u_projection;
-uniform mat3 u_normalmat;
-
-out vec4 pass_vertex; /* View space */
-out vec3 pass_tnormal;
-out vec4 pass_color;
-
-void main(void)
-{
-    vec4 vertex = u_modelview * vec4(in_position, 1.0);
-    vec3 tnorm = normalize(in_Normal);
-
-    pass_vertex = vertex;
-    pass_tnormal = tnorm;
-    pass_color = in_color;
-
-    gl_Position = u_projection * vertex;
-}
-
-[frag.glsl]
-#version 130
-
-#if defined GL_ES
-precision highp float;
-#endif
-
-in vec4 pass_vertex; /* View space */
-in vec3 pass_tnormal;
-in vec4 pass_color;
-
-uniform float u_damage;
-uniform mat4 u_view;
-uniform mat4 u_inv_view;
-
-uniform vec4 u_lights[8 * 2];
-
-void main(void)
-{
-    vec3 real_color = vec3(0.0, 0.0, 0.0);
-    real_color += abs(pass_tnormal.x) * ((pass_tnormal.x < 0.0)?(vec3(0.0, 1.0, 1.0)):(vec3(1.0, 0.0, 0.0)));
-    real_color += abs(pass_tnormal.y) * ((pass_tnormal.y < 0.0)?(vec3(1.0, 0.0, 1.0)):(vec3(0.0, 1.0, 0.0)));
-    real_color += abs(pass_tnormal.z) * ((pass_tnormal.z < 0.0)?(vec3(1.0, 1.0, 0.0)):(vec3(0.0, 0.0, 1.0)));
-    gl_FragColor = vec4(real_color, pass_color.w);
-}
-
diff --git a/src/easymesh/shinydebugwireframe.lolfx b/src/easymesh/shinydebugwireframe.lolfx
deleted file mode 100644
index 47747bd2..00000000
--- a/src/easymesh/shinydebugwireframe.lolfx
+++ /dev/null
@@ -1,51 +0,0 @@
-
-[vert.glsl]
-#version 130
-
-in vec3 in_position;
-in vec3 in_Normal;
-in vec4 in_color;
-
-uniform mat4 u_modelview;
-uniform mat4 u_view;
-uniform mat4 u_projection;
-uniform mat3 u_normalmat;
-
-out vec4 pass_vertex; /* View space */
-out vec3 pass_tnormal;
-out vec4 pass_color;
-
-void main(void)
-{
-    vec4 vertex = u_modelview * vec4(in_position, 1.0);
-    vec3 tnorm = normalize(u_normalmat * in_Normal);
-
-    pass_vertex = vertex;
-    pass_tnormal = tnorm;
-    pass_color = in_color;
-
-    gl_Position = u_projection * vertex;
-}
-
-[frag.glsl]
-#version 130
-
-#if defined GL_ES
-precision highp float;
-#endif
-
-in vec4 pass_vertex; /* View space */
-in vec3 pass_tnormal;
-in vec4 pass_color;
-
-uniform float u_damage;
-uniform mat4 u_view;
-uniform mat4 u_inv_view;
-
-uniform vec4 u_lights[8 * 2];
-
-void main(void)
-{
-    gl_FragColor = pass_color * length(normalize(pass_tnormal));
-}
-
diff --git a/src/easymesh/shinyflat.lolfx b/src/easymesh/shinyflat.lolfx
deleted file mode 100644
index b602fb85..00000000
--- a/src/easymesh/shinyflat.lolfx
+++ /dev/null
@@ -1,137 +0,0 @@
-
-[vert.glsl]
-#version 130
-
-in vec3 in_position;
-in vec3 in_Normal;
-in vec4 in_color;
-
-uniform mat4 u_modelview;
-uniform mat4 u_view;
-uniform mat4 u_projection;
-uniform mat3 u_normalmat;
-
-out vec4 pass_vertex; /* View space */
-out vec3 pass_tnormal;
-out vec4 pass_color;
-
-void main(void)
-{
-    vec4 vertex = u_modelview * vec4(in_position, 1.0);
-    vec3 tnorm = normalize(u_normalmat * in_Normal);
-
-    pass_vertex = vertex;
-    pass_tnormal = tnorm;
-    pass_color = in_color;
-
-    gl_Position = u_projection * vertex;
-}
-
-[frag.glsl]
-#version 130
-
-#if defined GL_ES
-precision highp float;
-#endif
-
-in vec4 pass_vertex; /* View space */
-in vec3 pass_tnormal;
-in vec4 pass_color;
-
-uniform float u_damage;
-uniform mat4 u_view;
-uniform mat4 u_inv_view;
-
-uniform vec4 u_lights[8 * 2];
-
-#if 0
-//Cos(45) = 0.70710678118
-//1.0 - Cos(45) = 0.29289321881
-
-const float cos_45      = 0.70710678118;
-const float inv_cos_45  = 0.29289321881;
-
-//Cube Light
-vec4 in_Light3_Pos = vec4(-10.0, 10.0, 5.0, 1.0);
-vec3 in_Light3_Size_Inner = vec3(3.0, 1.0, 3.0);
-vec3 in_Light3_Size_Outer = vec3(15.0, 15.0, 15.0);
-vec3 in_Light3_diffuse = vec3(0.4, 1.0, 0.4);
-#endif
-
-void main(void)
-{
-    vec3 TNormal = pass_tnormal;
-    vec3 X = dFdx(pass_vertex.xyz);
-    vec3 Y = dFdy(pass_vertex.xyz);
-    TNormal = normalize(cross(Y, X)) * length(normalize(pass_tnormal));
-
-    /* Material properties */
-    vec3 specular_reflect = vec3(0.8, 0.75, 0.4);
-    float specular_power = 60.0;
-
-    /* World properties */
-    vec3 ambient = vec3(0.1, 0.1, 0.1);
-    vec3 specular = vec3(0.0, 0.0, 0.0);
-    vec3 diffuse = vec3(0.0, 0.0, 0.0);
-
-    /* Light precalculations */
-    vec3 v = normalize(-pass_vertex.xyz);
-
-    /* Apply lighting */
-    for (int i = 0; i < 8; i++)
-    {
-        vec4 pos = u_lights[i * 2];
-        vec4 color = u_lights[i * 2 + 1];
-        vec3 s, r, p;
-
-        p = (u_view * pos).xyz;
-        if (pos.w > 0.0)
-        {
-            /* Point light -- no attenuation yet */
-            s = normalize(p - pass_vertex.xyz);
-        }
-        else
-        {
-            /* Directional light */
-            s = normalize(-p);
-        }
-        r = reflect(-s, TNormal);
-
-        float sdotn = max(dot(s, TNormal), 0.0);
-        diffuse += color.xyz * sdotn;
-        if (sdotn > 0.0)
-            specular += color.xyz * specular_reflect
-                         * pow(max(dot(r, v), 0.0), specular_power);
-    }
-
-#if 0
-    //Light calculation for cube light
-    vec3 specular_color = vec3(1.0, 1.0, 0.6);
-    vec3 Local_Vertex = (u_inv_view * pass_vertex).xyz - (in_Light3_Pos).xyz;
-    vec3 Proj_Vertex = clamp(Local_Vertex.xyz, -in_Light3_Size_Inner, in_Light3_Size_Inner);
-    vec3 new_LightDir = Local_Vertex - Proj_Vertex;
-
-    vec3 light_radius = max(vec3(0.0,0.0,0.0), vec3(1.0,1.0,1.0) - abs(new_LightDir / in_Light3_Size_Outer));
-    float light_radius_mod = min(light_radius.x, min(light_radius.y, light_radius.z));
-
-    if (length(new_LightDir) == 0.0)
-        sdotn = 1.0;
-    else
-    {
-        new_LightDir = normalize((u_view * vec4(Proj_Vertex + in_Light3_Pos.xyz,1.0)).xyz - pass_vertex.xyz);
-        sdotn = max(dot(new_LightDir, TNormal), 0.0);
-        r = reflect(-new_LightDir, TNormal);
-        if (sdotn > 0.0 && light_radius_mod > 0.0)
-            specular += specular_color * min(specular_reflect, light_radius_mod)
-                     * pow(max(dot(r, v), 0.0), specular_power);
-    }
-    diffuse += in_Light3_diffuse * min(sdotn, light_radius_mod);
-    //----------
-#endif
-
-    vec3 light = ambient + diffuse + specular;
-
-    vec4 real_color = mix(pass_color, vec4(1.2, 1.2, 1.2, 1.0), u_damage);
-    gl_FragColor = real_color * vec4(light, 1.0);
-}
-
diff --git a/src/emitter.cpp b/src/emitter.cpp
deleted file mode 100644
index 4e4ffa8d..00000000
--- a/src/emitter.cpp
+++ /dev/null
@@ -1,95 +0,0 @@
-//
-//  Lol Engine
-//
-//  Copyright © 2010—2019 Sam Hocevar <sam@hocevar.net>
-//
-//  Lol Engine is free software. It comes without any warranty, to
-//  the extent permitted by applicable law. You can redistribute it
-//  and/or modify it under the terms of the Do What the Fuck You Want
-//  to Public License, Version 2, as published by the WTFPL Task Force.
-//  See http://www.wtfpl.net/ for more details.
-//
-
-#include <lol/engine-internal.h>
-
-namespace lol
-{
-
-/*
- * Emitter implementation class
- */
-
-class EmitterData
-{
-    friend class Emitter;
-
-    static const int MAX_PARTICLES = 1000;
-
-private:
-    TileSet *tileset;
-    vec3 gravity;
-    int particles[MAX_PARTICLES];
-    vec3 positions[MAX_PARTICLES];
-    vec3 velocities[MAX_PARTICLES];
-    int nparticles;
-};
-
-/*
- * Public Emitter class
- */
-
-Emitter::Emitter(TileSet *tileset, vec3 gravity)
-  : data(new EmitterData())
-{
-    data->tileset = tileset;
-    data->gravity = gravity;
-    data->nparticles = 0;
-}
-
-void Emitter::tick_game(float seconds)
-{
-    for (int i = 0; i < data->nparticles; i++)
-    {
-        vec3 oldvelocity = data->velocities[i];
-        data->velocities[i] += seconds * data->gravity;
-        data->positions[i] += seconds * 0.5f
-                                      * (oldvelocity + data->velocities[i]);
-        if (data->positions[i].y < -100)
-        {
-            data->particles[i] = data->particles[data->nparticles - 1];
-            data->positions[i] = data->positions[data->nparticles - 1];
-            data->velocities[i] = data->velocities[data->nparticles - 1];
-            data->nparticles--;
-        }
-    }
-
-    entity::tick_game(seconds);
-}
-
-void Emitter::tick_draw(float seconds, Scene &scene)
-{
-    entity::tick_draw(seconds, scene);
-
-    for (int i = 0; i < data->nparticles; i++)
-        scene.AddTile(data->tileset, data->particles[i],
-                      data->positions[i], vec2(1.0f), 0.0f);
-}
-
-void Emitter::AddParticle(int id, vec3 pos, vec3 vel)
-{
-    if (data->nparticles >= EmitterData::MAX_PARTICLES)
-        return;
-
-    data->particles[data->nparticles] = id;
-    data->positions[data->nparticles] = pos;
-    data->velocities[data->nparticles] = vel;
-    data->nparticles++;
-}
-
-Emitter::~Emitter()
-{
-    delete data;
-}
-
-} /* namespace lol */
-
diff --git a/src/emitter.h b/src/emitter.h
deleted file mode 100644
index cfc7a37d..00000000
--- a/src/emitter.h
+++ /dev/null
@@ -1,45 +0,0 @@
-//
-//  Lol Engine
-//
-//  Copyright © 2010—2019 Sam Hocevar <sam@hocevar.net>
-//
-//  Lol Engine is free software. It comes without any warranty, to
-//  the extent permitted by applicable law. You can redistribute it
-//  and/or modify it under the terms of the Do What the Fuck You Want
-//  to Public License, Version 2, as published by the WTFPL Task Force.
-//  See http://www.wtfpl.net/ for more details.
-//
-
-#pragma once
-
-//
-// The Emitter class
-// -----------------
-//
-
-#include "engine/entity.h"
-#include "tileset.h"
-
-namespace lol
-{
-
-class EmitterData;
-
-class Emitter : public entity
-{
-public:
-    Emitter(TileSet *tileset, vec3 gravity);
-    virtual ~Emitter();
-
-    void AddParticle(int id, vec3 pos, vec3 vel);
-
-protected:
-    virtual void tick_game(float seconds);
-    virtual void tick_draw(float seconds, Scene &scene);
-
-private:
-    EmitterData *data;
-};
-
-} /* namespace lol */
-
diff --git a/src/engine/entity.cpp b/src/engine/entity.cpp
deleted file mode 100644
index fe5897ef..00000000
--- a/src/engine/entity.cpp
+++ /dev/null
@@ -1,70 +0,0 @@
-//
-//  Lol Engine
-//
-//  Copyright © 2010—2019 Sam Hocevar <sam@hocevar.net>
-//
-//  Lol Engine is free software. It comes without any warranty, to
-//  the extent permitted by applicable law. You can redistribute it
-//  and/or modify it under the terms of the Do What the Fuck You Want
-//  to Public License, Version 2, as published by the WTFPL Task Force.
-//  See http://www.wtfpl.net/ for more details.
-//
-
-#include <lol/engine-internal.h>
-
-#include <cstdlib>
-
-namespace lol
-{
-
-/*
- * Public entity class
- */
-
-entity::entity()
-{
-#if !LOL_BUILD_RELEASE
-    m_tickstate = tickable::state::idle;
-#endif
-    m_gamegroup = tickable::group::game::entity;
-    m_drawgroup = tickable::group::draw::entity;
-    /* FIXME: is this a problem? because the object can
-     * be ticked before the constructor is finished! */
-    Ticker::Register(this);
-}
-
-entity::~entity()
-{
-#if !LOL_BUILD_RELEASE
-    if (!has_flags(flags::destroying))
-        msg::error("entity destructor called directly\n");
-#endif
-}
-
-std::string entity::GetName() const
-{
-    return "<entity>";
-}
-
-void entity::tick_game(float seconds)
-{
-    UNUSED(seconds);
-#if !LOL_BUILD_RELEASE
-    if (m_tickstate != tickable::state::pre_game)
-        msg::error("invalid entity game tick\n");
-    m_tickstate = tickable::state::post_game;
-#endif
-}
-
-void entity::tick_draw(float seconds, Scene &scene)
-{
-    UNUSED(seconds, scene);
-#if !LOL_BUILD_RELEASE
-    if (m_tickstate != tickable::state::pre_draw)
-        msg::error("invalid entity draw tick\n");
-    m_tickstate = tickable::state::post_draw;
-#endif
-}
-
-} /* namespace lol */
-
diff --git a/src/engine/entity.h b/src/engine/entity.h
deleted file mode 100644
index ff117e81..00000000
--- a/src/engine/entity.h
+++ /dev/null
@@ -1,124 +0,0 @@
-//
-//  Lol Engine
-//
-//  Copyright © 2010—2019 Sam Hocevar <sam@hocevar.net>
-//
-//  Lol Engine is free software. It comes without any warranty, to
-//  the extent permitted by applicable law. You can redistribute it
-//  and/or modify it under the terms of the Do What the Fuck You Want
-//  to Public License, Version 2, as published by the WTFPL Task Force.
-//  See http://www.wtfpl.net/ for more details.
-//
-
-#pragma once
-
-//
-// The entity class
-// ----------------
-// Entities are objects that can be ticked by the game loop and/or the render
-// loop. Entities are implemented as one or several linked lists. See the
-// Ticker class for the ticking logic and the linked list implementation.
-//
-
-#include <cstdint>
-
-#include <lol/engine/tickable.h>
-
-namespace lol
-{
-
-class entity
-{
-    friend class Scene;
-    friend class ticker;
-    friend class ticker_data;
-
-public:
-    virtual std::string GetName() const;
-
-    enum class flags : uint16_t
-    {
-        none = 0,
-        init_game    = 1 << 0,
-        init_draw    = 1 << 1,
-        release_game = 1 << 2,
-        release_draw = 1 << 4,
-        destroying   = 1 << 5,
-        autorelease  = 1 << 6,
-    };
-
-    inline void add_flags(flags f);
-    inline void remove_flags(flags f);
-    inline bool has_flags(flags f);
-
-protected:
-    entity();
-    virtual ~entity();
-
-    virtual bool init_game() { return true; }
-    virtual bool init_draw() { return true; }
-    virtual bool release_game() { return true; }
-    virtual bool release_draw() { return true; }
-
-    virtual void tick_game(float seconds);
-    virtual void tick_draw(float seconds, class Scene &scene);
-
-#if !LOL_BUILD_RELEASE
-    tickable::state m_tickstate;
-#endif
-    tickable::group::game m_gamegroup;
-    tickable::group::draw m_drawgroup;
-
-private:
-    flags m_flags = flags::none;
-    int m_ref = 0;
-    uint64_t m_scene_mask = 0;
-};
-
-static inline entity::flags operator |(entity::flags a, entity::flags b)
-{
-    return (entity::flags)((uint16_t)a | (uint16_t)b);
-}
-
-static inline entity::flags operator &(entity::flags a, entity::flags b)
-{
-    return (entity::flags)((uint16_t)a & (uint16_t)b);
-}
-
-static inline entity::flags operator ^(entity::flags a, entity::flags b)
-{
-    return (entity::flags)((uint16_t)a ^ (uint16_t)b);
-}
-
-inline void entity::add_flags(entity::flags f) { m_flags = m_flags | f; }
-inline void entity::remove_flags(entity::flags f) { m_flags = (m_flags | f) ^ f; }
-inline bool entity::has_flags(entity::flags f) { return (m_flags & f) != flags::none; }
-
-template<typename T> struct entity_dict
-{
-    T *get(std::string const &key)
-    {
-        auto it = m_cache1.find(key);
-        return it != m_cache1.end() ? it->second : nullptr;
-    }
-
-    T *set(std::string const &key, T *entity)
-    {
-        m_cache1[key] = entity;
-        m_cache2[entity] = key;
-        return entity;
-    }
-
-    void erase(T *entity)
-    {
-        // FIXME: temporary; we need Ticker::Ref etc.
-        m_cache1.erase(m_cache2[entity]);
-        m_cache2.erase(entity);
-    }
-
-    std::map<std::string, T*> m_cache1;
-    std::map<T*, std::string> m_cache2;
-};
-
-} /* namespace lol */
-
diff --git a/src/engine/tickable.cpp b/src/engine/tickable.cpp
deleted file mode 100644
index 4dfcaac1..00000000
--- a/src/engine/tickable.cpp
+++ /dev/null
@@ -1,49 +0,0 @@
-//
-//  Lol Engine
-//
-//  Copyright © 2010—2019 Sam Hocevar <sam@hocevar.net>
-//
-//  Lol Engine is free software. It comes without any warranty, to
-//  the extent permitted by applicable law. You can redistribute it
-//  and/or modify it under the terms of the Do What the Fuck You Want
-//  to Public License, Version 2, as published by the WTFPL Task Force.
-//  See http://www.wtfpl.net/ for more details.
-//
-
-#include <lol/engine-internal.h>
-
-#include <cstdlib>
-#include <cstdint>
-#include <functional>
-
-namespace lol
-{
-
-//auto p = tickable::create<tickable>();
-
-tickable::tickable()
-{
-}
-
-tickable::~tickable()
-{
-}
-
-void tickable::init()
-{
-}
-
-void tickable::fini()
-{
-}
-
-void tickable::tick_game(float seconds)
-{
-}
-
-void tickable::tick_draw(float seconds, class Scene &scene)
-{
-}
-
-} /* namespace lol */
-
diff --git a/src/engine/ticker.cpp b/src/engine/ticker.cpp
deleted file mode 100644
index 02a9f543..00000000
--- a/src/engine/ticker.cpp
+++ /dev/null
@@ -1,645 +0,0 @@
-//
-//  Lol Engine
-//
-//  Copyright © 2010—2020 Sam Hocevar <sam@hocevar.net>
-//
-//  Lol Engine is free software. It comes without any warranty, to
-//  the extent permitted by applicable law. You can redistribute it
-//  and/or modify it under the terms of the Do What the Fuck You Want
-//  to Public License, Version 2, as published by the WTFPL Task Force.
-//  See http://www.wtfpl.net/ for more details.
-//
-
-#include <lol/engine-internal.h>
-
-#include <cstdlib>
-#include <cstdint>
-#include <functional>
-
-namespace lol
-{
-
-/*
- * Ticker implementation class
- */
-
-class ticker_data
-{
-    friend class ticker;
-
-public:
-    ticker_data()
-    {
-        msg::debug("platform %s threads\n", has_threads() ? "has" : "has no");
-        if (has_threads())
-        {
-            gamethread = std::make_unique<thread>(std::bind(&ticker_data::GameThreadMain, this));
-            drawtick.push(1);
-
-            diskthread = std::make_unique<thread>(std::bind(&ticker_data::DiskThreadMain, this));
-        }
-    }
-
-    ~ticker_data()
-    {
-        ASSERT(DEPRECATED_nentities == 0,
-               "still %d entities in ticker\n", DEPRECATED_nentities);
-        ASSERT(DEPRECATED_m_autolist.count() == 0,
-               "still %d autoreleased entities\n", DEPRECATED_m_autolist.count());
-        msg::debug("%d frames required to quit\n", m_frame - m_quitframe);
-
-        if (has_threads())
-        {
-            gametick.push(0);
-            disktick.push(0);
-            gamethread.release();
-            diskthread.release();
-            ASSERT(drawtick.size() == 0);
-        }
-    }
-
-    void handle_shutdown();
-    void collect_garbage();
-
-private:
-    // Tickables waiting to be inserted
-    queue<std::shared_ptr<tickable>> m_todo;
-
-    std::unordered_set<std::shared_ptr<tickable>> m_tickables;
-
-    /* Entity management */
-    array<entity *> DEPRECATED_m_todolist, DEPRECATED_m_todolist_delayed, DEPRECATED_m_autolist;
-    array<entity *> DEPRECATED_m_list[(int)tickable::group::all::end];
-    array<int> DEPRECATED_m_scenes[(int)tickable::group::all::end];
-    int DEPRECATED_nentities = 0;
-
-    /* Fixed framerate management */
-    int m_frame = 0, m_recording = 0;
-    timer m_timer;
-    float deltatime = 0.f, bias = 0.f, fps = 0.f;
-#if LOL_BUILD_DEBUG
-    float keepalive = 0;
-#endif
-
-    /* The three main functions (for now) */
-    static void GameThreadTick();
-    static void DrawThreadTick();
-    static void DiskThreadTick();
-
-    /* The associated background threads */
-    void GameThreadMain();
-    void DrawThreadMain(); /* unused for now */
-    void DiskThreadMain();
-    std::unique_ptr<thread> gamethread, diskthread;
-    queue<int> gametick, drawtick, disktick;
-
-    /* Shutdown management */
-    int m_quit = 0, m_quitframe = 0, m_quitdelay = 20, m_panic = 0;
-};
-
-static std::unique_ptr<ticker_data> data;
-
-//
-// Add/remove tickable objects
-//
-
-void ticker::add(std::shared_ptr<tickable> entity)
-{
-    data->m_tickables.insert(entity);
-}
-
-void ticker::remove(std::shared_ptr<tickable> entity)
-{
-    //weak_ptr<tickable> p = entity;
-    data->m_tickables.erase(entity);
-}
-
-//
-// Old API for entities
-//
-
-void Ticker::Register(entity *entity)
-{
-    /* If we are called from its constructor, the object's vtable is not
-     * ready yet, so we do not know which group this entity belongs to. Wait
-     * until the first tick. */
-    data->DEPRECATED_m_todolist_delayed.push(entity);
-
-    /* Objects are autoreleased by default. Put them in a list. */
-    data->DEPRECATED_m_autolist.push(entity);
-    entity->add_flags(entity::flags::autorelease);
-    entity->m_ref = 1;
-
-    data->DEPRECATED_nentities++;
-}
-
-void Ticker::Ref(entity *entity)
-{
-    ASSERT(entity, "dereferencing nullptr entity\n");
-    ASSERT(!entity->has_flags(entity::flags::destroying),
-           "referencing entity scheduled for destruction %s\n",
-           entity->GetName().c_str());
-
-    if (entity->has_flags(entity::flags::autorelease))
-    {
-        /* Get the entity out of the autorelease list. This is usually
-         * very fast since the last entry in autolist is the last
-         * registered entity. */
-        for (int i = data->DEPRECATED_m_autolist.count(); i--; )
-        {
-            if (data->DEPRECATED_m_autolist[i] == entity)
-            {
-                data->DEPRECATED_m_autolist.remove_swap(i);
-                break;
-            }
-        }
-        entity->remove_flags(entity::flags::autorelease);
-    }
-    else
-        entity->m_ref++;
-}
-
-int Ticker::Unref(entity *entity)
-{
-    ASSERT(entity, "dereferencing null entity\n");
-    ASSERT(entity->m_ref > 0,
-           "dereferencing unreferenced entity %s\n", entity->GetName().c_str());
-    ASSERT(!entity->has_flags(entity::flags::autorelease),
-           "dereferencing autoreleased entity %s\n", entity->GetName().c_str());
-
-    return --entity->m_ref;
-}
-
-void ticker_data::GameThreadMain()
-{
-#if LOL_BUILD_DEBUG
-    msg::debug("ticker game thread initialised\n");
-#endif
-
-    for (;;)
-    {
-        int tick = gametick.pop();
-        if (!tick)
-            break;
-
-        GameThreadTick();
-
-        drawtick.push(1);
-    }
-
-    drawtick.push(0);
-
-#if LOL_BUILD_DEBUG
-    msg::debug("ticker game thread terminated\n");
-#endif
-}
-
-void ticker_data::DrawThreadMain() /* unused */
-{
-#if LOL_BUILD_DEBUG
-    msg::debug("ticker draw thread initialised\n");
-#endif
-
-    for (;;)
-    {
-        int tick = drawtick.pop();
-        if (!tick)
-            break;
-
-        DrawThreadTick();
-
-        gametick.push(1);
-    }
-
-#if LOL_BUILD_DEBUG
-    msg::debug("ticker draw thread terminated\n");
-#endif
-}
-
-void ticker_data::DiskThreadMain()
-{
-    /* FIXME: temporary hack to avoid crashes on the PS3 */
-    disktick.pop();
-}
-
-//-----------------------------------------------------------------------------
-void ticker_data::GameThreadTick()
-{
-    Profiler::Stop(Profiler::STAT_TICK_FRAME);
-    Profiler::Start(Profiler::STAT_TICK_FRAME);
-
-    Profiler::Start(Profiler::STAT_TICK_GAME);
-
-#if 0
-    msg::debug("-------------------------------------\n");
-    for (int g = 0; g < (int)tickable::group::all::end; ++g)
-    {
-        msg::debug("%s Group %d\n",
-                   (g < (int)tickable::group::game::end) ? "Game" : "Draw", g);
-
-        for (int i = 0; i < data->DEPRECATED_m_list[g].count(); ++i)
-        {
-            entity *e = data->DEPRECATED_m_list[g][i];
-            msg::debug("  \\-- [%p] %s (m_ref %d, destroy %d)\n",
-                       e, e->GetName().c_str(), e->m_ref, e->has_flags(entity::flags::destroying));
-        }
-    }
-#endif
-
-    data->m_frame++;
-
-    /* Ensure some randomness */
-    (void)rand<int>();
-
-    /* If recording with fixed framerate, set deltatime to a fixed value */
-    if (data->m_recording && data->fps)
-    {
-        data->deltatime = 1.f / data->fps;
-    }
-    else
-    {
-        data->deltatime = data->m_timer.get();
-        data->bias += data->deltatime;
-    }
-
-    /* Do not go below 15 fps */
-    if (data->deltatime > 1.f / 15.f)
-    {
-        data->deltatime = 1.f / 15.f;
-        data->bias = 0.f;
-    }
-
-#if LOL_BUILD_DEBUG
-    data->keepalive += data->deltatime;
-    if (data->keepalive > 10.f)
-    {
-        msg::debug("ticker keepalive: tick!\n");
-        data->keepalive = 0.f;
-    }
-#endif
-
-    data->handle_shutdown();
-    data->collect_garbage();
-
-    /* Insert waiting objects into the appropriate lists */
-    while (data->DEPRECATED_m_todolist.count())
-    {
-        entity *e = data->DEPRECATED_m_todolist.last();
-
-        //If the entity has no mask, default it
-        if (e->m_scene_mask == 0)
-        {
-            Scene::GetScene().Link(e);
-        }
-
-        data->DEPRECATED_m_todolist.remove(-1);
-        data->DEPRECATED_m_list[(int)e->m_gamegroup].push(e);
-        if (e->m_drawgroup != tickable::group::draw::none)
-        {
-            if (data->DEPRECATED_m_scenes[(int)e->m_drawgroup].count() < Scene::GetCount())
-                data->DEPRECATED_m_scenes[(int)e->m_drawgroup].resize(Scene::GetCount());
-
-            int added_count = 0;
-            for (int i = 0; i < Scene::GetCount(); i++)
-            {
-                //If entity is concerned by this scene, add it in the list
-                if (Scene::GetScene(i).IsRelevant(e))
-                {
-                    data->DEPRECATED_m_list[(int)e->m_drawgroup].insert(e, data->DEPRECATED_m_scenes[(int)e->m_drawgroup][i]);
-                    added_count++;
-                }
-                //Update scene index
-                data->DEPRECATED_m_scenes[(int)e->m_drawgroup][i] += added_count;
-            }
-        }
-    }
-
-    data->DEPRECATED_m_todolist = data->DEPRECATED_m_todolist_delayed;
-    data->DEPRECATED_m_todolist_delayed.clear();
-
-    for (int g = (int)tickable::group::game::begin; g < (int)tickable::group::game::end; ++g)
-    {
-        for (int i = 0; i < data->DEPRECATED_m_list[g].count(); ++i)
-        {
-            entity *e = data->DEPRECATED_m_list[g][i];
-
-            if (!e->has_flags(entity::flags::init_game))
-            {
-                // Ensure the entity is initialised on the game thread
-                if (e->init_game())
-                    e->add_flags(entity::flags::init_game);
-            }
-            else if (e->has_flags(entity::flags::destroying))
-            {
-                // If entity is being destroyed, call the release code
-                if (!e->has_flags(entity::flags::release_game) && e->release_game())
-                    e->add_flags(entity::flags::release_game);
-            }
-        }
-    }
-
-    /* Tick objects for the game loop */
-    for (int g = (int)tickable::group::game::begin; g < (int)tickable::group::game::end && !data->m_quit /* Stop as soon as required */; ++g)
-    {
-        for (int i = 0; i < data->DEPRECATED_m_list[g].count() && !data->m_quit /* Stop as soon as required */; ++i)
-        {
-            entity *e = data->DEPRECATED_m_list[g][i];
-
-            if (e->has_flags(entity::flags::init_game)
-                 && !e->has_flags(entity::flags::destroying))
-            {
-#if !LOL_BUILD_RELEASE
-                if (e->m_tickstate != tickable::state::idle)
-                    msg::error("entity %s [%p] not idle for game tick\n",
-                               e->GetName().c_str(), e);
-                e->m_tickstate = tickable::state::pre_game;
-#endif
-                e->tick_game(data->deltatime);
-#if !LOL_BUILD_RELEASE
-                if (e->m_tickstate != tickable::state::post_game)
-                    msg::error("entity %s [%p] missed super game tick\n",
-                               e->GetName().c_str(), e);
-                e->m_tickstate = tickable::state::idle;
-#endif
-            }
-        }
-    }
-
-    Profiler::Stop(Profiler::STAT_TICK_GAME);
-}
-
-//-----------------------------------------------------------------------------
-void ticker_data::DrawThreadTick()
-{
-    Profiler::Start(Profiler::STAT_TICK_DRAW);
-
-    for (int g = (int)tickable::group::draw::begin; g < (int)tickable::group::draw::end; ++g)
-    {
-        for (int i = 0; i < data->DEPRECATED_m_list[g].count(); ++i)
-        {
-            entity *e = data->DEPRECATED_m_list[g][i];
-
-            if (!e->has_flags(entity::flags::init_draw))
-            {
-                // Ensure the entity is initialised on the draw thread
-                if (e->init_draw())
-                    e->add_flags(entity::flags::init_draw);
-            }
-            else if (e->has_flags(entity::flags::destroying))
-            {
-                // If entity is being destroyed, call the release code
-                if (!e->has_flags(entity::flags::release_draw) && e->release_draw())
-                    e->add_flags(entity::flags::release_draw);
-            }
-        }
-    }
-
-    /* Render each scene one after the other */
-    for (int idx = 0; idx < Scene::GetCount() && !data->m_quit /* Stop as soon as required */; ++idx)
-    {
-        Scene& scene = Scene::GetScene(idx);
-
-        /* Enable display */
-        scene.EnableDisplay();
-
-        scene.pre_render(data->deltatime);
-
-        /* Tick objects for the draw loop */
-        for (int g = (int)tickable::group::draw::begin; g < (int)tickable::group::draw::end && !data->m_quit /* Stop as soon as required */; ++g)
-        {
-            switch (g)
-            {
-            case (int)tickable::group::draw::begin:
-                scene.Reset();
-                break;
-            default:
-                break;
-            }
-
-            for (int i = 0; i < data->DEPRECATED_m_list[g].count() && !data->m_quit /* Stop as soon as required */; ++i)
-            {
-                entity *e = data->DEPRECATED_m_list[g][i];
-
-                if (e->has_flags(entity::flags::init_draw)
-                     && !e->has_flags(entity::flags::destroying))
-                {
-#if !LOL_BUILD_RELEASE
-                    if (e->m_tickstate != tickable::state::idle)
-                        msg::error("entity %s [%p] not idle for draw tick\n",
-                                   e->GetName().c_str(), e);
-                    e->m_tickstate = tickable::state::pre_draw;
-#endif
-                    e->tick_draw(data->deltatime, scene);
-#if !LOL_BUILD_RELEASE
-                    if (e->m_tickstate != tickable::state::post_draw)
-                        msg::error("entity %s [%p] missed super draw tick\n",
-                                   e->GetName().c_str(), e);
-                    e->m_tickstate = tickable::state::idle;
-#endif
-                }
-            }
-        }
-
-        /* Do the render step */
-        scene.render(data->deltatime);
-
-        scene.post_render(data->deltatime);
-
-        /* Disable display */
-        scene.DisableDisplay();
-    }
-
-    Profiler::Stop(Profiler::STAT_TICK_DRAW);
-}
-
-// If shutdown is stuck, kick the first entity we meet and see
-// whether it makes things better. Note that it is always a bug to
-// have referenced entities after 20 frames, but at least this
-// safeguard makes it possible to exit the program cleanly.
-void ticker_data::handle_shutdown()
-{
-    if (m_quit && !((m_frame - m_quitframe) % m_quitdelay))
-    {
-        int n = 0;
-        m_panic = 2 * (m_panic + 1);
-
-        for (int g = 0; g < (int)tickable::group::all::end && n < m_panic; ++g)
-        for (int i = 0; i < DEPRECATED_m_list[g].count() && n < m_panic; ++i)
-        {
-            entity * e = DEPRECATED_m_list[g][i];
-            if (e->m_ref)
-            {
-#if !LOL_BUILD_RELEASE
-                msg::error("poking %s\n", e->GetName().c_str());
-#endif
-                e->m_ref--;
-                n++;
-            }
-        }
-
-#if !LOL_BUILD_RELEASE
-        if (n)
-            msg::error("%d entities stuck after %d frames, poked %d\n",
-                       DEPRECATED_nentities, m_quitdelay, n);
-#endif
-
-        m_quitdelay = m_quitdelay > 1 ? m_quitdelay / 2 : 1;
-    }
-}
-
-void ticker_data::collect_garbage()
-{
-    /* Garbage collect objects that can be destroyed. We can do this
-     * before inserting awaiting objects, because only objects already
-     * in the tick lists can be marked for destruction. */
-    array<entity*> destroy_list;
-    for (int g = 0; g < (int)tickable::group::all::end; ++g)
-    {
-        for (int i = DEPRECATED_m_list[g].count(); i--;)
-        {
-            entity *e = DEPRECATED_m_list[g][i];
-
-            if (!e->has_flags(entity::flags::destroying))
-            {
-                if (e->m_ref <= 0 && g >= (int)tickable::group::draw::begin)
-                    e->add_flags(entity::flags::destroying);
-                continue;
-            }
-
-            // If entity is being destroyed but not released yet, retry later.
-            if (!e->has_flags(entity::flags::release_game)
-                 || !e->has_flags(entity::flags::release_draw))
-                continue;
-
-            // If entity is to be destroyed, remove it.
-            DEPRECATED_m_list[g].remove_swap(i);
-
-            // Draw group specific logic
-            if (g >= (int)tickable::group::game::end)
-            {
-                int removal_count = 0;
-                for (int j = 0; j < Scene::GetCount(); j++)
-                {
-                    // If entity is concerned by this scene, add it in the list
-                    if (Scene::GetScene(j).IsRelevant(e))
-                        removal_count++;
-                    // Update scene index
-                    DEPRECATED_m_scenes[(int)e->m_drawgroup][j] -= removal_count;
-                }
-            }
-
-            destroy_list.push_unique(e);
-        }
-    }
-
-    if (!!destroy_list.count())
-    {
-        DEPRECATED_nentities -= destroy_list.count();
-        for (entity* e : destroy_list)
-            delete e;
-    }
-}
-
-void ticker_data::DiskThreadTick()
-{
-    ;
-}
-
-void Ticker::SetState(entity * /* entity */, uint32_t /* state */)
-{
-
-}
-
-void Ticker::SetStateWhenMatch(entity * /* entity */, uint32_t /* state */,
-                               entity * /* other_entity */, uint32_t /* other_state */)
-{
-
-}
-
-void ticker::setup(float fps)
-{
-    msg::debug("creating ticker\n");
-    data = std::make_unique<ticker_data>();
-    data->fps = fps;
-}
-
-void ticker::teardown()
-{
-    data.release();
-}
-
-void ticker::tick_draw()
-{
-    if (has_threads())
-    {
-        int n = data->drawtick.pop();
-        if (n == 0)
-            return;
-    }
-    else
-        ticker_data::GameThreadTick();
-
-    ticker_data::DrawThreadTick();
-
-    Profiler::Start(Profiler::STAT_TICK_BLIT);
-
-    /* Signal game thread that it can carry on */
-    if (has_threads())
-        data->gametick.push(1);
-    else
-        ticker_data::DiskThreadTick();
-
-    /* Clamp FPS */
-    Profiler::Stop(Profiler::STAT_TICK_BLIT);
-
-#if !__EMSCRIPTEN__
-    /* If framerate is fixed, force wait time to 1/FPS. Otherwise, set wait
-     * time to 0. */
-    float frametime = data->fps ? 1.f / data->fps : 0.f;
-
-    if (frametime > data->bias + .2f)
-        frametime = data->bias + .2f; /* Don't go below 5 fps */
-    if (frametime > data->bias)
-        data->m_timer.wait(frametime - data->bias);
-
-    /* If recording, do not try to compensate for lag. */
-    if (!data->m_recording)
-        data->bias -= frametime;
-#endif
-}
-
-void Ticker::StartRecording()
-{
-    ++data->m_recording;
-}
-
-void Ticker::StopRecording()
-{
-    --data->m_recording;
-}
-
-int Ticker::GetFrameNum()
-{
-    return data->m_frame;
-}
-
-void Ticker::Shutdown()
-{
-    /* We're bailing out. Release all autorelease objects. */
-    while (data->DEPRECATED_m_autolist.count())
-    {
-        data->DEPRECATED_m_autolist.last()->m_ref--;
-        data->DEPRECATED_m_autolist.remove(-1);
-    }
-
-    data->m_quit = 1;
-    data->m_quitframe = data->m_frame;
-}
-
-int Ticker::Finished()
-{
-    return !data->DEPRECATED_nentities;
-}
-
-} /* namespace lol */
-
diff --git a/src/engine/ticker.h b/src/engine/ticker.h
deleted file mode 100644
index 312e40f1..00000000
--- a/src/engine/ticker.h
+++ /dev/null
@@ -1,65 +0,0 @@
-//
-//  Lol Engine
-//
-//  Copyright © 2010—2019 Sam Hocevar <sam@hocevar.net>
-//
-//  Lol Engine is free software. It comes without any warranty, to
-//  the extent permitted by applicable law. You can redistribute it
-//  and/or modify it under the terms of the Do What the Fuck You Want
-//  to Public License, Version 2, as published by the WTFPL Task Force.
-//  See http://www.wtfpl.net/ for more details.
-//
-
-#pragma once
-
-//
-// The ticker class
-// ————————————————
-// The ticker is a static class that registers entities and ticks them.
-//
-
-#include <lol/engine/tickable.h>
-
-#include <cstdint>
-#include <memory>
-
-namespace lol
-{
-
-class ticker
-{
-public:
-    static void setup(float fps);
-    static void tick_draw();
-    static void teardown();
-
-    static void add(std::shared_ptr<tickable> entity);
-    static void remove(std::shared_ptr<tickable> entity);
-
-    // The old API
-    static void Register(class entity *entity);
-    static void Ref(class entity *entity);
-    static int Unref(class entity *entity);
-
-    static void StartBenchmark();
-    static void StopBenchmark();
-    static void StartRecording();
-    static void StopRecording();
-    static int GetFrameNum();
-
-    static void SetState(class entity *entity, uint32_t state);
-    static void SetStateWhenMatch(class entity *entity, uint32_t state,
-                                  class entity *other_entity, uint32_t other_state);
-
-    static void Shutdown();
-    static int Finished();
-
-private:
-    ticker() {}
-};
-
-// The old API
-typedef ticker Ticker;
-
-} /* namespace lol */
-
diff --git a/src/engine/world.cpp b/src/engine/world.cpp
deleted file mode 100644
index 2952015a..00000000
--- a/src/engine/world.cpp
+++ /dev/null
@@ -1,45 +0,0 @@
-//
-// Lol Engine
-//
-// Copyright: (c) 2010-2013 Sam Hocevar <sam@hocevar.net>
-//   This program is free software; you can redistribute it and/or
-//   modify it under the terms of the Do What The Fuck You Want To
-//   Public License, Version 2, as published by Sam Hocevar. See
-//   http://www.wtfpl.net/ for more details.
-//
-
-#include <lol/engine-internal.h>
-
-#include <cstring>
-#include <cstdlib>
-#include <ctype.h>
-
-namespace lol
-{
-
-/*
- * World implementation class
- */
-
-class WorldData
-{
-    friend class World;
-};
-
-static WorldData g_world_data;
-World g_world;
-
-/*
- * Public World class
- */
-
-World::World()
-{
-}
-
-World::~World()
-{
-}
-
-} /* namespace lol */
-
diff --git a/src/engine/world.h b/src/engine/world.h
deleted file mode 100644
index 4389e19a..00000000
--- a/src/engine/world.h
+++ /dev/null
@@ -1,31 +0,0 @@
-//
-// Lol Engine
-//
-// Copyright: (c) 2010-2013 Sam Hocevar <sam@hocevar.net>
-//   This program is free software; you can redistribute it and/or
-//   modify it under the terms of the Do What The Fuck You Want To
-//   Public License, Version 2, as published by Sam Hocevar. See
-//   http://www.wtfpl.net/ for more details.
-//
-
-#pragma once
-
-//
-// The World class
-// ---------------
-//
-
-namespace lol
-{
-
-class World
-{
-public:
-    World();
-    virtual ~World();
-};
-
-extern World g_world;
-
-} /* namespace lol */
-
diff --git a/src/engine/worldentity.cpp b/src/engine/worldentity.cpp
deleted file mode 100644
index 773ed50f..00000000
--- a/src/engine/worldentity.cpp
+++ /dev/null
@@ -1,53 +0,0 @@
-//
-//  Lol Engine
-//
-//  Copyright © 2010—2019 Sam Hocevar <sam@hocevar.net>
-//
-//  Lol Engine is free software. It comes without any warranty, to
-//  the extent permitted by applicable law. You can redistribute it
-//  and/or modify it under the terms of the Do What the Fuck You Want
-//  to Public License, Version 2, as published by the WTFPL Task Force.
-//  See http://www.wtfpl.net/ for more details.
-//
-
-#include <lol/engine-internal.h>
-
-#include <cstdlib>
-
-namespace lol
-{
-
-/*
- * Public WorldEntity class
- */
-
-WorldEntity::WorldEntity()
-  : m_aabb(vec3(0.f), vec3(0.f)),
-    m_position(0.f),
-    m_velocity(0.f),
-    m_rotation(1.f),
-    m_rotation_velocity(0.f)
-{
-}
-
-WorldEntity::~WorldEntity()
-{
-}
-
-std::string WorldEntity::GetName() const
-{
-    return "<worldentity>";
-}
-
-void WorldEntity::tick_game(float seconds)
-{
-    entity::tick_game(seconds);
-}
-
-void WorldEntity::tick_draw(float seconds, Scene &scene)
-{
-    entity::tick_draw(seconds, scene);
-}
-
-} /* namespace lol */
-
diff --git a/src/engine/worldentity.h b/src/engine/worldentity.h
deleted file mode 100644
index 54e8a033..00000000
--- a/src/engine/worldentity.h
+++ /dev/null
@@ -1,48 +0,0 @@
-//
-//  Lol Engine
-//
-//  Copyright © 2010—2019 Sam Hocevar <sam@hocevar.net>
-//
-//  Lol Engine is free software. It comes without any warranty, to
-//  the extent permitted by applicable law. You can redistribute it
-//  and/or modify it under the terms of the Do What the Fuck You Want
-//  to Public License, Version 2, as published by the WTFPL Task Force.
-//  See http://www.wtfpl.net/ for more details.
-//
-
-#pragma once
-
-//
-// The GraphicEntity class
-// -----------------------
-//
-
-#include <lol/math/transform.h>
-
-#include "engine/entity.h"
-
-namespace lol
-{
-
-class WorldEntity : public entity
-{
-public:
-    virtual std::string GetName() const;
-
-public:
-    box3 m_aabb;
-    vec3 m_position = vec3::zero;
-    vec3 m_velocity = vec3::zero;
-    quat m_rotation = quat(1);
-    vec3 m_rotation_velocity = vec3::zero;
-
-protected:
-    WorldEntity();
-    virtual ~WorldEntity();
-
-    virtual void tick_game(float seconds);
-    virtual void tick_draw(float seconds, Scene &scene);
-};
-
-} /* namespace lol */
-
diff --git a/src/font.cpp b/src/font.cpp
deleted file mode 100644
index eaed6301..00000000
--- a/src/font.cpp
+++ /dev/null
@@ -1,124 +0,0 @@
-//
-//  Lol Engine
-//
-//  Copyright © 2010—2019 Sam Hocevar <sam@hocevar.net>
-//                   2013 Jean-Yves Lamoureux <jylam@lnxscene.org>
-//
-//  Lol Engine is free software. It comes without any warranty, to
-//  the extent permitted by applicable law. You can redistribute it
-//  and/or modify it under the terms of the Do What the Fuck You Want
-//  to Public License, Version 2, as published by the WTFPL Task Force.
-//  See http://www.wtfpl.net/ for more details.
-//
-
-#include <lol/engine-internal.h>
-
-#include <cstring>
-#include <cstdio>
-
-namespace lol
-{
-
-/* The font cache */
-static entity_dict<Font> font_cache;
-
-/*
- * Font implementation class
- */
-
-class FontData
-{
-    friend class Font;
-
-private:
-    std::string m_name;
-    TileSet *tileset;
-    ivec2 size;
-};
-
-/*
- * Public Font class
- */
-
-Font *Font::create(std::string const &path)
-{
-    auto ret = font_cache.get(path);
-    return ret ? ret : font_cache.set(path, new Font(path));
-}
-
-void Font::destroy(Font *f)
-{
-    // FIXME: decrement!
-    font_cache.erase(f);
-}
-
-Font::Font(std::string const &path)
-  : data(new FontData())
-{
-    data->m_name = "<font> " + path;
-
-    data->tileset = TileSet::create(path, ivec2::zero, ivec2(16));
-    data->size = data->tileset->GetTileSize(0);
-
-    m_drawgroup = tickable::group::draw::texture;
-}
-
-Font::~Font()
-{
-    TileSet::destroy(data->tileset);
-    delete data;
-}
-
-void Font::tick_draw(float seconds, Scene &scene)
-{
-    entity::tick_draw(seconds, scene);
-
-    if (data->tileset->GetTexture())
-    {
-        data->tileset->GetTexture()->SetMinFiltering(TextureMinFilter::LINEAR_TEXEL_NO_MIPMAP);
-        data->tileset->GetTexture()->SetMagFiltering(TextureMagFilter::LINEAR_TEXEL);
-    }
-}
-
-std::string Font::GetName() const
-{
-    return data->m_name;
-}
-
-void Font::Print(Scene &scene, vec3 pos, std::string const &str, vec2 scale, float spacing)
-{
-    float origin_x = pos.x;
-    for (int i = 0; i < (int)str.length(); ++i)
-    {
-        uint32_t ch = str[i];
-
-        switch (ch)
-        {
-        case '\r': /* carriage return */
-            pos.x = origin_x;
-            break;
-        case '\b': /* backspace */
-            pos.x -= data->size.x * scale.x;
-            break;
-        case '\n': /* new line */
-            pos.x = origin_x;
-            pos.y -= data->size.y * scale.y;
-            break;
-        default:
-            if (ch != ' ')
-                scene.AddTile(data->tileset, ch & 255, pos, scale, 0.0f);
-            pos.x += data->size.x * scale.x;
-            break;
-        }
-
-        pos.x += data->size.x * scale.x * spacing;
-    }
-}
-
-ivec2 Font::GetSize() const
-{
-    return data->size;
-}
-
-} /* namespace lol */
-
diff --git a/src/font.h b/src/font.h
deleted file mode 100644
index 807ebf09..00000000
--- a/src/font.h
+++ /dev/null
@@ -1,51 +0,0 @@
-//
-//  Lol Engine
-//
-//  Copyright © 2010—2019 Sam Hocevar <sam@hocevar.net>
-//
-//  Lol Engine is free software. It comes without any warranty, to
-//  the extent permitted by applicable law. You can redistribute it
-//  and/or modify it under the terms of the Do What the Fuck You Want
-//  to Public License, Version 2, as published by the WTFPL Task Force.
-//  See http://www.wtfpl.net/ for more details.
-//
-
-#pragma once
-
-//
-// The Font class
-// --------------
-//
-
-#include "engine/entity.h"
-
-namespace lol
-{
-
-class FontData;
-
-class Font : public entity
-{
-public:
-    static Font *create(std::string const &path);
-    static void destroy(Font *);
-
-protected:
-    Font(std::string const &path);
-    ~Font();
-
-    /* Inherited from entity */
-    virtual std::string GetName() const;
-    virtual void tick_draw(float seconds, Scene &scene);
-
-public:
-    /* New methods */
-    void Print(Scene &scene, vec3 pos, std::string const &str, vec2 scale = vec2(1.0f), float spacing = 0.0f);
-    ivec2 GetSize() const;
-
-private:
-    FontData *data;
-};
-
-} /* namespace lol */
-
diff --git a/src/gpu/blit.lolfx b/src/gpu/blit.lolfx
deleted file mode 100644
index f5ce2e4e..00000000
--- a/src/gpu/blit.lolfx
+++ /dev/null
@@ -1,33 +0,0 @@
-[vert.glsl]
-
-#version 130
-
-in vec2 in_position;
-out vec2 pass_position;
-
-void main()
-{
-    pass_position = in_position;
-    gl_Position = vec4(in_position, 0.0, 1.0);
-}
-
-[frag.glsl]
-
-#version 130
-
-#if defined GL_ES
-precision highp float;
-#endif
-
-uniform sampler2D u_buffer;
-
-in vec2 pass_position;
-out vec4 out_color;
-
-void main(void)
-{
-    vec2 pos = pass_position;
-    vec2 texcoords = pos * 0.5 + vec2(0.5, 0.5);
-    out_color = vec4(texture2D(u_buffer, texcoords).rgb, 1);
-}
-
diff --git a/src/gpu/debug.cpp b/src/gpu/debug.cpp
deleted file mode 100644
index e3e176a9..00000000
--- a/src/gpu/debug.cpp
+++ /dev/null
@@ -1,121 +0,0 @@
-//
-//  Lol Engine
-//
-//  Copyright © 2010—2020 Sam Hocevar <sam@hocevar.net>
-//
-//  Lol Engine is free software. It comes without any warranty, to
-//  the extent permitted by applicable law. You can redistribute it
-//  and/or modify it under the terms of the Do What the Fuck You Want
-//  to Public License, Version 2, as published by the WTFPL Task Force.
-//  See http://www.wtfpl.net/ for more details.
-//
-
-#include <lol/engine-internal.h>
-
-#include "lolgl.h"
-
-namespace lol
-{
-
-#if LOL_BUILD_DEBUG && !defined __EMSCRIPTEN__
-static std::map<GLenum, char const *> gl_dbg_source_to_str
-{
-    { GL_DEBUG_SOURCE_API, "API" },
-    { GL_DEBUG_SOURCE_WINDOW_SYSTEM, "Window System" },
-    { GL_DEBUG_SOURCE_SHADER_COMPILER, "Shader Compiler" },
-    { GL_DEBUG_SOURCE_THIRD_PARTY, "Third Party" },
-    { GL_DEBUG_SOURCE_APPLICATION, "Application" },
-    { GL_DEBUG_SOURCE_OTHER, "Other" },
-};
-
-static std::map<GLenum, char const *> gl_dbg_type_to_str
-{
-    { GL_DEBUG_TYPE_ERROR, "Error" },
-    { GL_DEBUG_TYPE_DEPRECATED_BEHAVIOR, "Deprecated Behaviour" },
-    { GL_DEBUG_TYPE_UNDEFINED_BEHAVIOR, "Undefined Behaviour" },
-    { GL_DEBUG_TYPE_PORTABILITY, "Portability" },
-    { GL_DEBUG_TYPE_PERFORMANCE, "Performance" },
-    { GL_DEBUG_TYPE_MARKER, "Marker" },
-    { GL_DEBUG_TYPE_PUSH_GROUP, "Push Group" },
-    { GL_DEBUG_TYPE_POP_GROUP, "Pop Group" },
-    { GL_DEBUG_TYPE_OTHER, "Other" },
-};
-
-static std::map<GLenum, char const *> gl_dbg_severity_to_str
-{
-    { GL_DEBUG_SEVERITY_HIGH, "high" },
-    { GL_DEBUG_SEVERITY_MEDIUM, "medium" },
-    { GL_DEBUG_SEVERITY_LOW, "low" },
-    { GL_DEBUG_SEVERITY_NOTIFICATION, "notification" },
-};
-
-static void LOL_ATTR_STDCALL
-    gl_debug(GLenum source, GLenum type, GLuint id,
-             GLenum severity, GLsizei length,
-             const GLchar *message, const void *user_param)
-{
-    std::string error;
-
-    switch (id)
-    {
-    default:
-        if (gl_dbg_source_to_str.count(source) == 1)
-            error += lol::format(" %s", gl_dbg_source_to_str[source]);
-        if (gl_dbg_type_to_str.count(type) == 1)
-            error += lol::format(" %s", gl_dbg_type_to_str[type]);
-        if (gl_dbg_severity_to_str.count(severity) == 1)
-            error += lol::format(" (%s)", gl_dbg_severity_to_str[severity]);
-        msg::debug("GL%s [id:%x]: %s\n", error.c_str(), id, message);
-        break;
-    // Some debug messages are just annoying informational messages
-    case 0x20061: // glFramebufferRenderbuffer
-    case 0x20071: // glBufferData
-        break;
-    }
-}
-
-#if defined LOL_USE_GLEW && !defined __APPLE__
-static void LOL_ATTR_STDCALL
-    gl_debug_amd(GLuint id, GLenum category, GLenum severity,
-                 GLsizei length, const GLchar* message,
-                 GLvoid* user_param)
-{
-    gl_debug(GL_DEBUG_SOURCE_API, GL_DEBUG_TYPE_ERROR, id,
-             severity, length, message, user_param);
-}
-#endif
-#endif
-
-void gpu::setup_debug()
-{
-#if LOL_BUILD_DEBUG && !defined __EMSCRIPTEN__
-    GLint glflags;
-    glGetIntegerv(GL_CONTEXT_FLAGS, &glflags);
-
-    if (glflags & GL_CONTEXT_FLAG_DEBUG_BIT)
-    {
-        // Debug Output available
-
-        glEnable(GL_DEBUG_OUTPUT);
-        glEnable(GL_DEBUG_OUTPUT_SYNCHRONOUS);
-#if defined LOL_USE_GLEW && !defined __APPLE__
-        if (GLEW_ARB_debug_output)
-            glDebugMessageCallbackARB(gl_debug, NULL);
-        else if (GLEW_AMD_debug_output)
-            glDebugMessageCallbackAMD(gl_debug_amd, NULL);
-        else if (GLEW_KHR_debug)
-#endif
-            glDebugMessageCallback(gl_debug, NULL);
-
-        glDebugMessageControl(GL_DONT_CARE, GL_DONT_CARE, GL_DONT_CARE, 0, NULL, GL_TRUE);
-    }
-#endif
-}
-
-void gpu::error(char const *msg, int error)
-{
-    msg::error("%s: GL error 0x%04x\n", msg, error);
-}
-
-}
-
diff --git a/src/gpu/default-material.lolfx b/src/gpu/default-material.lolfx
deleted file mode 100644
index c325f9c7..00000000
--- a/src/gpu/default-material.lolfx
+++ /dev/null
@@ -1,2 +0,0 @@
-/* Default material example file */
-
diff --git a/src/gpu/empty-material.lolfx b/src/gpu/empty-material.lolfx
deleted file mode 100644
index 4b5f0c6e..00000000
--- a/src/gpu/empty-material.lolfx
+++ /dev/null
@@ -1,2 +0,0 @@
-/* Empty material example file */
-
diff --git a/src/gpu/framebuffer.cpp b/src/gpu/framebuffer.cpp
deleted file mode 100644
index c0a81013..00000000
--- a/src/gpu/framebuffer.cpp
+++ /dev/null
@@ -1,332 +0,0 @@
-//
-//  Lol Engine
-//
-//  Copyright © 2010—2019 Sam Hocevar <sam@hocevar.net>
-//
-//  Lol Engine is free software. It comes without any warranty, to
-//  the extent permitted by applicable law. You can redistribute it
-//  and/or modify it under the terms of the Do What the Fuck You Want
-//  to Public License, Version 2, as published by the WTFPL Task Force.
-//  See http://www.wtfpl.net/ for more details.
-//
-
-#include <lol/engine-internal.h>
-
-// FIXME: fine-tune this define
-#if defined LOL_USE_GLEW || defined HAVE_GL_2X || defined HAVE_GLES_2X
-
-#include "lolgl.h"
-
-namespace lol
-{
-
-//
-// The FramebufferData class
-// -------------------------
-//
-
-class FramebufferData
-{
-    friend class Framebuffer;
-
-    ibox2 m_saved_viewport;
-    ivec2 m_size;
-    bool m_bound;
-
-    GLuint m_fbo, m_texture, m_depth;
-};
-
-//
-// The FramebufferFormat struct
-// ----------------------
-//
-
-uint32_t FramebufferFormat::GetFormat()
-{
-    switch (m_format)
-    {
-#if defined HAVE_GLES_2X
-    /* FIXME: incomplete */
-    case RGBA_8:
-    case RGBA_8_I:
-    case RGBA_8_UI:     return GL_RGBA;
-#else
-    case R_8:           return GL_R8;
-    case R_8_I:         return GL_R8I;
-    case R_8_UI:        return GL_R8UI;
-
-    case R_16:          return GL_R16;
-    case R_16_I:        return GL_R16I;
-    case R_16_UI:       return GL_R16UI;
-    case R_16_F:        return GL_R16F;
-
-    case R_32_I:        return GL_R32I;
-    case R_32_UI:       return GL_R32UI;
-    case R_32_F:        return GL_R32F;
-
-    case RG_8:          return GL_RG8;
-    case RG_8_I:        return GL_RG8I;
-    case RG_8_UI:       return GL_RG8UI;
-
-    case RG_16:         return GL_RG16;
-    case RG_16_I:       return GL_RG16I;
-    case RG_16_UI:      return GL_RG16UI;
-    case RG_16_F:       return GL_RG16F;
-
-    case RG_32_I:       return GL_RG32I;
-    case RG_32_UI:      return GL_RG32UI;
-    case RG_32_F:       return GL_RG32F;
-
-    case RGB_8:         return GL_RGB8;
-#ifdef GL_RGB8I
-    case RGB_8_I:       return GL_RGB8I;
-    case RGB_8_UI:      return GL_RGB8UI;
-#endif
-
-    case RGB_16:        return GL_RGB16;
-#ifdef GL_RGB16I
-    case RGB_16_I:      return GL_RGB16I;
-    case RGB_16_UI:     return GL_RGB16UI;
-    case RGB_16_F:      return GL_RGB16F;
-#endif
-
-#ifdef GL_RGB32I
-    case RGB_32_I:      return GL_RGB32I;
-    case RGB_32_UI:     return GL_RGB32UI;
-    case RGB_32_F:      return GL_RGB32F;
-#endif
-
-    case RGBA_8:        return GL_RGBA8;
-#ifdef GL_RGBA8I
-    case RGBA_8_I:      return GL_RGBA8I;
-    case RGBA_8_UI:     return GL_RGBA8UI;
-#endif
-
-    case RGBA_16:       return GL_RGBA16;
-#ifdef GL_RGBA16I
-    case RGBA_16_I:     return GL_RGBA16I;
-    case RGBA_16_UI:    return GL_RGBA16UI;
-    case RGBA_16_F:     return GL_RGBA16F;
-#endif
-
-#ifdef GL_RGBA32I
-    case RGBA_32_I:     return GL_RGBA32I;
-    case RGBA_32_UI:    return GL_RGBA32UI;
-    case RGBA_32_F:     return GL_RGBA32F;
-#endif
-#endif
-    default:
-        ASSERT(false, "unknown framebuffer format %d", m_format);
-        return 0;
-    }
-}
-
-uint32_t FramebufferFormat::GetFormatOrder()
-{
-    switch (m_format)
-    {
-#if defined HAVE_GLES_2X
-    /* FIXME: incomplete */
-    case R_8:   case RG_8:   case RGB_8:   case RGBA_8:
-    case R_8_I: case RG_8_I: case RGB_8_I: case RGBA_8_I:
-        return GL_BYTE;
-    case R_8_UI: case RG_8_UI: case RGB_8_UI: case RGBA_8_UI:
-        return GL_UNSIGNED_BYTE;
-#else
-    case R_8:  case R_8_I:  case R_8_UI:  case R_8_F:
-    case R_16: case R_16_I: case R_16_UI: case R_16_F:
-    case R_32: case R_32_I: case R_32_UI: case R_32_F:
-        return GL_RED;
-
-    case RG_8:  case RG_8_I:  case RG_8_UI:  case RG_8_F:
-    case RG_16: case RG_16_I: case RG_16_UI: case RG_16_F:
-    case RG_32: case RG_32_I: case RG_32_UI: case RG_32_F:
-        return GL_RG;
-
-    case RGB_8:  case RGB_8_I:  case RGB_8_UI:  case RGB_8_F:
-    case RGB_16: case RGB_16_I: case RGB_16_UI: case RGB_16_F:
-    case RGB_32: case RGB_32_I: case RGB_32_UI: case RGB_32_F:
-        return m_invert_rgb ? GL_BGR : GL_RGB;
-
-    case RGBA_8:  case RGBA_8_I:  case RGBA_8_UI:  case RGBA_8_F:
-    case RGBA_16: case RGBA_16_I: case RGBA_16_UI: case RGBA_16_F:
-    case RGBA_32: case RGBA_32_I: case RGBA_32_UI: case RGBA_32_F:
-#   if defined GL_BGRA && !defined __APPLE__ && !defined __NX__
-        return (m_invert_rgb)?(GL_BGRA):(GL_RGBA);
-#   else
-        return GL_RGBA;
-#   endif
-#endif
-    default:
-        ASSERT(false, "unknown framebuffer format order %d", m_format);
-        return 0;
-    }
-}
-
-//
-// The Framebuffer class
-// ----------------------
-//
-
-Framebuffer::Framebuffer(ivec2 size, FramebufferFormat fbo_format)
-  : m_data(new FramebufferData)
-{
-    m_data->m_size = size;
-    m_data->m_bound = false;
-#if defined GL_VERSION_4_2
-    GLenum internal_format = fbo_format.GetFormat();
-    GLenum depth = GL_DEPTH_COMPONENT16; /* for WebGL */
-#elif defined GL_ES_VERSION_2_0
-    /* In OpenGL ES, internal format and format must match. */
-    GLenum internal_format = fbo_format.GetFormat();
-    GLenum format = fbo_format.GetFormat();
-    GLenum depth = GL_DEPTH_COMPONENT16; /* for WebGL */
-#elif defined GL_VERSION_1_1
-    GLenum internal_format = fbo_format.GetFormat();
-    GLenum format = fbo_format.GetFormatOrder();
-    GLenum depth = GL_DEPTH_COMPONENT;
-#else
-    /* In OpenGL ES, internal format and format must match. */
-    GLenum internal_format = fbo_format.GetFormat();
-    GLenum format = fbo_format.GetFormat();
-#endif
-    GLenum wrapmode = GL_CLAMP_TO_EDGE;
-    GLenum filtering = GL_LINEAR;
-
-#if defined GL_VERSION_1_1 || defined GL_ES_VERSION_2_0
-    glGenFramebuffers(1, &m_data->m_fbo);
-    glBindFramebuffer(GL_FRAMEBUFFER, m_data->m_fbo);
-#else
-    glGenFramebuffersOES(1, &m_data->m_fbo);
-    glBindFramebufferOES(GL_FRAMEBUFFER_OES, m_data->m_fbo);
-#endif
-
-    glGenTextures(1, &m_data->m_texture);
-    glActiveTexture(GL_TEXTURE0);
-    glBindTexture(GL_TEXTURE_2D, m_data->m_texture);
-    glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, wrapmode);
-    glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, wrapmode);
-    glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, filtering);
-    glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, filtering);
-#if defined GL_VERSION_4_2
-    glTexStorage2D(GL_TEXTURE_2D, 1, internal_format, size.x, size.y);
-#else
-    glTexImage2D(GL_TEXTURE_2D, 0, internal_format, size.x, size.y, 0,
-                 format, GL_UNSIGNED_BYTE, nullptr);
-#endif
-
-#if defined GL_VERSION_1_1 || defined GL_ES_VERSION_2_0
-    glFramebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0,
-                           GL_TEXTURE_2D, m_data->m_texture, 0);
-#else
-    glFramebufferTexture2DOES(GL_FRAMEBUFFER_OES, GL_COLOR_ATTACHMENT0_EXT,
-                              GL_TEXTURE_2D, m_data->m_texture, 0);
-#endif
-
-    m_data->m_depth = GL_INVALID_ENUM;
-#if defined GL_VERSION_1_1 || defined GL_ES_VERSION_2_0
-    if (depth != GL_INVALID_ENUM)
-    {
-        /* XXX: might not work on GL ES, see
-         * http://stackoverflow.com/q/4041682/111461
-         * See also http://qt-project.org/forums/viewthread/11734 */
-        glGenRenderbuffers(1, &m_data->m_depth);
-        glBindRenderbuffer(GL_RENDERBUFFER, m_data->m_depth);
-        glRenderbufferStorage(GL_RENDERBUFFER, depth, size.x, size.y);
-        glFramebufferRenderbuffer(GL_FRAMEBUFFER, GL_DEPTH_ATTACHMENT,
-                                  GL_RENDERBUFFER, m_data->m_depth);
-    }
-#endif
-
-    glBindTexture(GL_TEXTURE_2D, 0);
-
-#if defined GL_VERSION_1_1 || defined GL_ES_VERSION_2_0
-    GLenum status = glCheckFramebufferStatus(GL_FRAMEBUFFER);
-    ASSERT(status == GL_FRAMEBUFFER_COMPLETE,
-           "invalid framebuffer status 0x%x", status);
-#endif
-
-#if defined GL_VERSION_1_1 || defined GL_ES_VERSION_2_0
-    glBindFramebuffer(GL_FRAMEBUFFER, 0);
-#else
-    glBindFramebufferOES(GL_FRAMEBUFFER_OES, 0);
-#endif
-}
-
-Framebuffer::~Framebuffer()
-{
-#if defined GL_VERSION_1_1 || defined GL_ES_VERSION_2_0
-    glDeleteFramebuffers(1, &m_data->m_fbo);
-#else
-    glDeleteFramebuffersOES(1, &m_data->m_fbo);
-#endif
-    glDeleteTextures(1, &m_data->m_texture);
-#if defined GL_VERSION_1_1 || defined GL_ES_VERSION_2_0
-    if (m_data->m_depth != GL_INVALID_ENUM)
-        glDeleteRenderbuffers(1, &m_data->m_depth);
-#endif
-    delete m_data;
-}
-
-TextureUniform Framebuffer::GetTextureUniform() const
-{
-    TextureUniform ret;
-    ret.m_flags = m_data->m_texture;
-    return ret;
-}
-
-ivec2 Framebuffer::GetSize() const
-{
-    return m_data->m_size;
-}
-
-image Framebuffer::GetImage() const
-{
-    image ret(m_data->m_size);
-
-    u8vec4 *buffer = ret.lock<PixelFormat::RGBA_8>();
-    glReadPixels(0, 0, m_data->m_size.x, m_data->m_size.y,
-                 GL_RGBA, GL_UNSIGNED_BYTE, buffer);
-    ret.unlock(buffer);
-
-    return ret;
-}
-
-void Framebuffer::Bind()
-{
-    ASSERT(!m_data->m_bound, "trying to bind an already bound framebuffer");
-
-#if defined GL_VERSION_1_1 || defined GL_ES_VERSION_2_0
-    glBindFramebuffer(GL_FRAMEBUFFER, m_data->m_fbo);
-#else
-    glBindFramebufferOES(GL_FRAMEBUFFER_OES, m_data->m_fbo);
-#endif
-
-    /* FIXME: this should be done in the RenderContext object
-     * instead, maybe by getting rid of Framebuffer::Bind() and
-     * creating RenderContext::SetFramebuffer() instead. */
-    auto renderer = Scene::GetScene(0).get_renderer();
-    m_data->m_saved_viewport = renderer->viewport();
-    renderer->viewport(ibox2(ivec2::zero, m_data->m_size));
-    m_data->m_bound = true;
-}
-
-void Framebuffer::Unbind()
-{
-    ASSERT(m_data->m_bound, "trying to unbind an unbound framebuffer");
-
-#if defined GL_VERSION_1_1 || defined GL_ES_VERSION_2_0
-    glBindFramebuffer(GL_FRAMEBUFFER, 0);
-#else
-    glBindFramebufferOES(GL_FRAMEBUFFER_OES, 0);
-#endif
-
-    auto renderer = Scene::GetScene(0).get_renderer();
-    renderer->viewport(m_data->m_saved_viewport);
-    m_data->m_bound = false;
-}
-
-} /* namespace lol */
-
-#endif
-
diff --git a/src/gpu/indexbuffer.cpp b/src/gpu/indexbuffer.cpp
deleted file mode 100644
index 2468f1e5..00000000
--- a/src/gpu/indexbuffer.cpp
+++ /dev/null
@@ -1,108 +0,0 @@
-//
-//  Lol Engine
-//
-//  Copyright © 2010—2017 Sam Hocevar <sam@hocevar.net>
-//
-//  Lol Engine is free software. It comes without any warranty, to
-//  the extent permitted by applicable law. You can redistribute it
-//  and/or modify it under the terms of the Do What the Fuck You Want
-//  to Public License, Version 2, as published by the WTFPL Task Force.
-//  See http://www.wtfpl.net/ for more details.
-//
-
-#include <lol/engine-internal.h>
-
-// FIXME: fine-tune this define
-#if defined LOL_USE_GLEW || defined HAVE_GL_2X || defined HAVE_GLES_2X
-
-#include "lolgl.h"
-
-namespace lol
-{
-
-//
-// The IndexBufferData class
-// -------------------------
-//
-
-class IndexBufferData
-{
-    friend class IndexBuffer;
-
-    size_t m_size;
-    GLuint m_ibo;
-    uint8_t *m_memory;
-};
-
-//
-// The IndexBuffer class
-// ----------------------
-//
-
-IndexBuffer::IndexBuffer(size_t size)
-  : m_data(new IndexBufferData)
-{
-    m_data->m_size = size;
-    if (!size)
-        return;
-    glGenBuffers(1, &m_data->m_ibo);
-    m_data->m_memory = new uint8_t[size];
-}
-
-IndexBuffer::~IndexBuffer()
-{
-    if (m_data->m_size)
-    {
-        glDeleteBuffers(1, &m_data->m_ibo);
-        delete[] m_data->m_memory;
-    }
-    delete m_data;
-}
-
-size_t IndexBuffer::size()
-{
-    return m_data->m_size;
-}
-
-void *IndexBuffer::lock(size_t offset, size_t size)
-{
-    if (!m_data->m_size)
-        return nullptr;
-
-    UNUSED(size);
-    return m_data->m_memory + offset;
-}
-
-void IndexBuffer::unlock()
-{
-    if (!m_data->m_size)
-        return;
-
-    glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, m_data->m_ibo);
-    glBufferData(GL_ELEMENT_ARRAY_BUFFER, m_data->m_size, m_data->m_memory,
-                 GL_STATIC_DRAW);
-}
-
-void IndexBuffer::Bind()
-{
-    if (!m_data->m_size)
-        return;
-
-    glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, m_data->m_ibo);
-    /* XXX: not necessary because we kept track of the size */
-    //int size;
-    //glGetBufferParameteriv(GL_ELEMENT_ARRAY_BUFFER, GL_BUFFER_SIZE, &size);
-}
-
-void IndexBuffer::Unbind()
-{
-    if (!m_data->m_size)
-        return;
-
-    glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, 0);
-}
-
-} /* namespace lol */
-
-#endif
-
diff --git a/src/gpu/line.lolfx b/src/gpu/line.lolfx
deleted file mode 100644
index deac8552..00000000
--- a/src/gpu/line.lolfx
+++ /dev/null
@@ -1,37 +0,0 @@
-[vert.glsl]
-
-#version 130
-
-in vec4 in_Position;
-in vec4 in_Color;
-out vec4 pass_color;
-
-uniform mat4 u_projection;
-uniform mat4 u_view;
-
-void main()
-{
-    if (in_Position.w > 0.5)
-        gl_Position = vec4(in_Position.xyz, 1.0);
-    else
-        gl_Position = u_projection * u_view
-                      * vec4(in_Position.xyz, 1.0);
-    pass_color = in_Color;
-}
-
-[frag.glsl]
-
-#version 130
-
-#if defined GL_ES
-precision mediump float;
-#endif
-
-in vec4 pass_color;
-out vec4 out_color;
-
-void main()
-{
-    out_color = pass_color;
-}
-
diff --git a/src/gpu/lolfx.cpp b/src/gpu/lolfx.cpp
deleted file mode 100644
index 9ef6290e..00000000
--- a/src/gpu/lolfx.cpp
+++ /dev/null
@@ -1,40 +0,0 @@
-//
-// Lol Engine
-//
-// Copyright: (c) 2010-2013 Sam Hocevar <sam@hocevar.net>
-//   This program is free software; you can redistribute it and/or
-//   modify it under the terms of the Do What The Fuck You Want To
-//   Public License, Version 2, as published by Sam Hocevar. See
-//   http://www.wtfpl.net/ for more details.
-//
-
-//
-// The LolFx class
-// ---------------
-//
-
-#include <lol/engine-internal.h>
-
-namespace lol
-{
-
-LolFx::LolFx()
-  : m_blend(false),
-    m_alphatest(false),
-    m_cullface(false),
-    m_depthtest(false),
-    m_depthmask(false),
-    m_shader(0)
-{
-    ;
-}
-
-bool LolFx::Compile(char const *command)
-{
-    UNUSED(command);
-
-    return false;
-}
-
-} /* namespace lol */
-
diff --git a/src/gpu/palette.lolfx b/src/gpu/palette.lolfx
deleted file mode 100644
index b649cb35..00000000
--- a/src/gpu/palette.lolfx
+++ /dev/null
@@ -1,43 +0,0 @@
-[vert.glsl]
-
-#version 130
-
-in vec3 in_position;
-in vec2 in_texcoord;
-
-uniform mat4 u_projection;
-uniform mat4 u_view;
-uniform mat4 u_model;
-
-out vec2 pass_texcoord;
-
-void main()
-{
-    gl_Position = u_projection * u_view * u_model
-                * vec4(in_position, 1.0);
-    pass_texcoord = in_texcoord;
-}
-
-[frag.glsl]
-
-#version 130
-
-#if defined GL_ES
-precision mediump float;
-#endif
-
-in vec2 pass_texcoord;
-
-uniform sampler2D u_texture;
-uniform sampler2D u_palette;
-uniform vec2 u_texsize;
-
-void main()
-{
-    vec4 pal = texture2D(u_texture, pass_texcoord);
-    vec4 col = texture2D(u_palette, vec2(pal.x, 0.0));
-    if (pal.x == 0.0)
-        discard;
-    gl_FragColor = col;
-}
-
diff --git a/src/gpu/postprocess.lolfx b/src/gpu/postprocess.lolfx
deleted file mode 100644
index 4770fc33..00000000
--- a/src/gpu/postprocess.lolfx
+++ /dev/null
@@ -1,49 +0,0 @@
-[vert.glsl]
-
-#version 130
-
-in vec2 in_position;
-out vec2 pass_position;
-
-void main()
-{
-    pass_position = in_position;
-    gl_Position = vec4(in_position, 0.0, 1.0);
-}
-
-[frag.glsl]
-
-#version 130
-
-#if defined GL_ES
-precision highp float;
-#endif
-
-uniform sampler2D u_buffer;
-uniform sampler2D u_prev_buffer;
-uniform sampler2D u_prev_final;
-
-// Persistence settings:
-//  x: persistence of backbuffer (default 0)
-//  y: persistence of whites in render buffer (default 0)
-uniform vec3 u_persistence;
-
-in vec2 pass_position;
-out vec4 out_color;
-
-void main(void)
-{
-    vec2 pos = pass_position;
-
-    vec2 texcoords = pos * 0.5 + vec2(0.5, 0.5);
-    vec4 color = vec4(texture2D(u_buffer, texcoords).rgb, 1.0);
-    vec4 prev_color = vec4(texture2D(u_prev_buffer, texcoords).rgb, 1.0);
-
-    /* (do stuff with color here) */
-    vec4 final_color = mix(color, prev_color, u_persistence.x);
-
-    /* Blend final color with previous frame’s final color */
-    vec4 prev_final_color = vec4(texture2D(u_prev_final, texcoords).rgb, 1.0);
-    out_color = mix(final_color, prev_final_color, u_persistence.y * (vec4(1.6666) + prev_final_color - final_color));
-}
-
diff --git a/src/gpu/rendercontext.cpp b/src/gpu/rendercontext.cpp
deleted file mode 100644
index cda1246a..00000000
--- a/src/gpu/rendercontext.cpp
+++ /dev/null
@@ -1,291 +0,0 @@
-//
-//  Lol Engine
-//
-//  Copyright © 2010—2019 Sam Hocevar <sam@hocevar.net>
-//
-//  Lol Engine is free software. It comes without any warranty, to
-//  the extent permitted by applicable law. You can redistribute it
-//  and/or modify it under the terms of the Do What the Fuck You Want
-//  to Public License, Version 2, as published by the WTFPL Task Force.
-//  See http://www.wtfpl.net/ for more details.
-//
-
-#include <lol/engine-internal.h>
-
-#include <cstdlib>
-
-namespace lol
-{
-
-template<typename T> class tracked_var
-{
-public:
-    inline tracked_var()
-      : m_dirty(false)
-    {}
-
-    inline void set(T const &value)
-    {
-        m_value = value;
-        m_dirty = true;
-    }
-
-    inline bool is_dirty()
-    {
-        return m_dirty;
-    }
-
-    inline T get()
-    {
-        return m_value;
-    }
-
-private:
-    T m_value;
-    bool m_dirty;
-};
-
-class RenderContextData
-{
-    friend class render_context;
-
-private:
-    tracked_var<ibox2> m_viewport;
-    tracked_var<vec4> m_clear_color;
-    tracked_var<float> m_clear_depth;
-    tracked_var<AlphaFunc> m_alpha_func;
-    tracked_var<float> m_alpha_value;
-    tracked_var<BlendEquation> m_blend_rgb, m_blend_alpha;
-    tracked_var<BlendFunc> m_blend_src, m_blend_dst;
-    tracked_var<DepthFunc> m_depth_func;
-    tracked_var<DepthMask> m_depth_mask;
-    tracked_var<CullMode> m_cull_mode;
-    tracked_var<PolygonMode> m_polygon_mode;
-    tracked_var<ScissorMode> m_scissor_mode;
-    tracked_var<vec4> m_scissor_rect;
-};
-
-/*
- * Public render_context class
- */
-
-render_context::render_context(std::shared_ptr<Renderer> renderer)
-  : m_renderer(renderer),
-    m_data(std::make_unique<RenderContextData>())
-{
-}
-
-render_context::~render_context()
-{
-    if (m_data->m_viewport.is_dirty())
-        m_renderer->viewport(m_data->m_viewport.get());
-
-    if (m_data->m_clear_color.is_dirty())
-        m_renderer->clear_color(m_data->m_clear_color.get());
-
-    if (m_data->m_clear_depth.is_dirty())
-        m_renderer->clear_depth(m_data->m_clear_depth.get());
-
-    if (m_data->m_alpha_func.is_dirty())
-        m_renderer->SetAlphaFunc(m_data->m_alpha_func.get(),
-                                 m_data->m_alpha_value.get());
-
-    if (m_data->m_blend_src.is_dirty())
-        m_renderer->SetBlendFunc(m_data->m_blend_src.get(),
-                                 m_data->m_blend_dst.get());
-
-    if (m_data->m_depth_func.is_dirty())
-        m_renderer->SetDepthFunc(m_data->m_depth_func.get());
-
-    if (m_data->m_depth_mask.is_dirty())
-        m_renderer->SetDepthMask(m_data->m_depth_mask.get());
-
-    if (m_data->m_cull_mode.is_dirty())
-        m_renderer->SetCullMode(m_data->m_cull_mode.get());
-
-    if (m_data->m_polygon_mode.is_dirty())
-        m_renderer->SetPolygonMode(m_data->m_polygon_mode.get());
-
-    if (m_data->m_scissor_mode.is_dirty())
-        m_renderer->SetScissorMode(m_data->m_scissor_mode.get());
-}
-
-void render_context::viewport(ibox2 viewport)
-{
-    if (!m_data->m_viewport.is_dirty())
-        m_data->m_viewport.set(m_renderer->viewport());
-
-    m_renderer->viewport(viewport);
-}
-
-ibox2 render_context::viewport()
-{
-    return m_renderer->viewport();
-}
-
-void render_context::clear_color(vec4 color)
-{
-    if (!m_data->m_clear_color.is_dirty())
-        m_data->m_clear_color.set(m_renderer->clear_color());
-
-    m_renderer->clear_color(color);
-}
-
-vec4 render_context::clear_color()
-{
-    return m_renderer->clear_color();
-}
-
-void render_context::clear_depth(float depth)
-{
-    if (!m_data->m_clear_depth.is_dirty())
-        m_data->m_clear_depth.set(m_renderer->clear_depth());
-
-    m_renderer->clear_depth(depth);
-}
-
-float render_context::clear_depth()
-{
-    return m_renderer->clear_depth();
-}
-
-void render_context::alpha_func(AlphaFunc func, float alpha)
-{
-    if (!m_data->m_alpha_func.is_dirty())
-        m_data->m_alpha_func.set(m_renderer->GetAlphaFunc());
-    if (!m_data->m_alpha_value.is_dirty())
-        m_data->m_alpha_value.set(m_renderer->GetAlphaValue());
-
-    m_renderer->SetAlphaFunc(func, alpha);
-}
-
-AlphaFunc render_context::alpha_func()
-{
-    return m_renderer->GetAlphaFunc();
-}
-
-float render_context::alpha_value()
-{
-    return m_renderer->GetAlphaValue();
-}
-
-void render_context::blend_equation(BlendEquation rgb, BlendEquation alpha)
-{
-    if (!m_data->m_blend_rgb.is_dirty())
-        m_data->m_blend_rgb.set(m_renderer->GetBlendEquationRgb());
-    if (!m_data->m_blend_alpha.is_dirty())
-        m_data->m_blend_alpha.set(m_renderer->GetBlendEquationAlpha());
-
-    m_renderer->SetBlendEquation(rgb, alpha);
-}
-
-BlendEquation render_context::blend_equation_rgb()
-{
-    return m_renderer->GetBlendEquationRgb();
-}
-
-BlendEquation render_context::blend_equation_alpha()
-{
-    return m_renderer->GetBlendEquationAlpha();
-}
-
-void render_context::blend_func(BlendFunc src, BlendFunc dst)
-{
-    if (!m_data->m_blend_src.is_dirty())
-        m_data->m_blend_src.set(m_renderer->GetBlendFuncSrc());
-    if (!m_data->m_blend_dst.is_dirty())
-        m_data->m_blend_dst.set(m_renderer->GetBlendFuncDst());
-
-    m_renderer->SetBlendFunc(src, dst);
-}
-
-BlendFunc render_context::blend_func_src()
-{
-    return m_renderer->GetBlendFuncSrc();
-}
-
-BlendFunc render_context::blend_func_dst()
-{
-    return m_renderer->GetBlendFuncDst();
-}
-
-void render_context::depth_func(DepthFunc func)
-{
-    if (!m_data->m_depth_func.is_dirty())
-        m_data->m_depth_func.set(m_renderer->GetDepthFunc());
-
-    m_renderer->SetDepthFunc(func);
-}
-
-DepthFunc render_context::depth_func()
-{
-    return m_renderer->GetDepthFunc();
-}
-
-void render_context::depth_mask(DepthMask mask)
-{
-    if (!m_data->m_depth_mask.is_dirty())
-        m_data->m_depth_mask.set(m_renderer->GetDepthMask());
-
-    m_renderer->SetDepthMask(mask);
-}
-
-DepthMask render_context::depth_mask()
-{
-    return m_renderer->GetDepthMask();
-}
-
-void render_context::cull_mode(CullMode mode)
-{
-    if (!m_data->m_cull_mode.is_dirty())
-        m_data->m_cull_mode.set(m_renderer->GetCullMode());
-
-    m_renderer->SetCullMode(mode);
-}
-
-CullMode render_context::cull_mode()
-{
-    return m_renderer->GetCullMode();
-}
-
-void render_context::polygon_mode(PolygonMode mode)
-{
-    if (!m_data->m_polygon_mode.is_dirty())
-        m_data->m_polygon_mode.set(m_renderer->GetPolygonMode());
-
-    m_renderer->SetPolygonMode(mode);
-}
-
-PolygonMode render_context::polygon_mode()
-{
-    return m_renderer->GetPolygonMode();
-}
-
-void render_context::scissor_mode(ScissorMode mode)
-{
-    if (!m_data->m_scissor_mode.is_dirty())
-        m_data->m_scissor_mode.set(m_renderer->GetScissorMode());
-
-    m_renderer->SetScissorMode(mode);
-}
-
-void render_context::scissor_rect(vec4 rect)
-{
-    if (!m_data->m_scissor_rect.is_dirty())
-        m_data->m_scissor_rect.set(m_renderer->GetScissorRect());
-
-    m_renderer->SetScissorRect(rect);
-}
-
-ScissorMode render_context::scissor_mode()
-{
-    return m_renderer->GetScissorMode();
-}
-
-vec4 render_context::scissor_rect()
-{
-    return m_renderer->GetScissorRect();
-}
-
-} /* namespace lol */
-
diff --git a/src/gpu/renderer.cpp b/src/gpu/renderer.cpp
deleted file mode 100644
index 49ecb7b9..00000000
--- a/src/gpu/renderer.cpp
+++ /dev/null
@@ -1,570 +0,0 @@
-//
-//  Lol Engine
-//
-//  Copyright © 2010—2019 Sam Hocevar <sam@hocevar.net>
-//
-//  Lol Engine is free software. It comes without any warranty, to
-//  the extent permitted by applicable law. You can redistribute it
-//  and/or modify it under the terms of the Do What the Fuck You Want
-//  to Public License, Version 2, as published by the WTFPL Task Force.
-//  See http://www.wtfpl.net/ for more details.
-//
-
-#include <lol/engine-internal.h>
-
-#include <cstdlib>
-
-#if defined _WIN32
-#   define WIN32_LEAN_AND_MEAN 1
-#   include <windows.h>
-#   undef WIN32_LEAN_AND_MEAN
-#   undef near /* Fuck Microsoft */
-#   undef far /* Fuck Microsoft again */
-#endif
-
-// FIXME: fine-tune this define
-#if defined LOL_USE_GLEW || defined HAVE_GL_2X || defined HAVE_GLES_2X
-
-#include "lolgl.h"
-
-namespace lol
-{
-
-/*
- * Private RendererData class
- */
-
-class RendererData
-{
-    friend class Renderer;
-
-private:
-    ibox2 m_viewport;
-    vec4 m_clear_color;
-    float m_clear_depth;
-    AlphaFunc m_alpha_func;
-    float m_alpha_value;
-    BlendEquation m_blend_rgb, m_blend_alpha;
-    BlendFunc m_blend_src, m_blend_dst;
-    DepthFunc m_depth_func;
-    DepthMask m_depth_mask;
-    CullMode m_cull_mode;
-    PolygonMode m_polygon_mode;
-    ScissorMode m_scissor_mode;
-    vec4 m_scissor_rect;
-};
-
-/*
- * Public Renderer class
- */
-
-Renderer::Renderer(ivec2 size)
-  : m_data(new RendererData())
-{
-#if defined LOL_USE_GLEW && !defined __APPLE__
-    // Initialise GLEW if necessary
-    // FIXME: move this somewhere else
-    GLenum glerr = glewInit();
-    if (glerr != GLEW_OK)
-    {
-        msg::error("cannot initialise GLEW: %s\n", glewGetErrorString(glerr));
-        exit(EXIT_FAILURE);
-    }
-#endif
-
-    gpu::setup_debug();
-
-    /* Initialise rendering states */
-    m_data->m_viewport = ibox2(0, 0, 0, 0);
-    viewport(ibox2(ivec2::zero, size));
-
-    m_data->m_clear_color = vec4(-1.f);
-    clear_color(vec4(0.1f, 0.2f, 0.3f, 1.0f));
-
-    m_data->m_clear_depth = -1.f;
-    clear_depth(1.f);
-
-    m_data->m_alpha_func = AlphaFunc::Never;
-    m_data->m_alpha_value = -1.0f;
-    SetAlphaFunc(AlphaFunc::Disabled, 0.0f);
-
-    m_data->m_blend_rgb = BlendEquation::Subtract;
-    m_data->m_blend_alpha = BlendEquation::Subtract;
-    SetBlendEquation(BlendEquation::Add, BlendEquation::Add);
-
-    m_data->m_blend_src = BlendFunc::Disabled;
-    m_data->m_blend_dst = BlendFunc::Disabled;
-    SetBlendFunc(BlendFunc::SrcAlpha, BlendFunc::OneMinusSrcAlpha);
-
-    m_data->m_depth_func = DepthFunc::Disabled;
-    SetDepthFunc(DepthFunc::LessOrEqual);
-
-    m_data->m_depth_mask = DepthMask::Disabled;
-    SetDepthMask(DepthMask::Enabled);
-
-    m_data->m_cull_mode = CullMode::Disabled;
-    SetCullMode(CullMode::Clockwise);
-
-    m_data->m_polygon_mode = PolygonMode::Point;
-    SetPolygonMode(PolygonMode::Fill);
-
-    m_data->m_scissor_mode = ScissorMode::Disabled;
-    SetPolygonMode(PolygonMode::Fill);
-
-    /* Add some rendering states that we don't export to the user */
-#if defined HAVE_GL_2X && !defined GL_VERSION_3_1
-    glHint(GL_PERSPECTIVE_CORRECTION_HINT, GL_NICEST);
-#endif
-}
-
-Renderer::~Renderer()
-{
-}
-
-/*
- * Buffer clearing
- */
-
-void Renderer::clear(ClearMask mask)
-{
-    GLbitfield m = 0;
-    if (mask & ClearMask::Color)
-        m |= GL_COLOR_BUFFER_BIT;
-    if (mask & ClearMask::Depth)
-        m |= GL_DEPTH_BUFFER_BIT;
-    if (mask & ClearMask::Stencil)
-        m |= GL_STENCIL_BUFFER_BIT;
-    glClear(m);
-}
-
-/*
- * Viewport dimensions
- */
-
-void Renderer::viewport(ibox2 bounds)
-{
-    if (m_data->m_viewport == bounds)
-        return;
-
-    glViewport(bounds.aa.x, bounds.aa.y, bounds.bb.x, bounds.bb.y);
-
-    m_data->m_viewport = bounds;
-}
-
-ibox2 Renderer::viewport() const
-{
-    return m_data->m_viewport;
-}
-
-float Renderer::xy_ratio() const
-{
-    ivec2 s = viewport().extent();
-    return (float)s.x / s.y;
-}
-
-float Renderer::yx_ratio() const
-{
-    ivec2 s = viewport().extent();
-    return (float)s.y / s.x;
-}
-
-/*
- * Clear color
- */
-
-void Renderer::clear_color(vec4 color)
-{
-    if (m_data->m_clear_color == color)
-        return;
-
-    glClearColor(color.r, color.g, color.b, color.a);
-
-    m_data->m_clear_color = color;
-}
-
-vec4 Renderer::clear_color() const
-{
-    return m_data->m_clear_color;
-}
-
-/*
- * Clear depth
- */
-
-void Renderer::clear_depth(float depth)
-{
-    if (m_data->m_clear_depth == depth)
-        return;
-
-#if defined HAVE_GLES_2X
-    glClearDepthf(depth);
-#else
-    glClearDepth(depth);
-#endif
-
-    m_data->m_clear_depth = depth;
-}
-
-float Renderer::clear_depth() const
-{
-    return m_data->m_clear_depth;
-}
-
-/*
- * Alpha testing
- */
-
-void Renderer::SetAlphaFunc(AlphaFunc func, float alpha)
-{
-    if (m_data->m_alpha_func == func && m_data->m_alpha_value == alpha)
-        return;
-
-#if defined HAVE_GLES_2X
-    /* not supported */
-#elif defined GL_VERSION_3_1
-    /* deprecated */
-#elif defined GL_VERSION_1_1
-    switch (func)
-    {
-        case AlphaFunc::Disabled:
-            break; /* Nothing to do */
-        case AlphaFunc::Never:
-            glAlphaFunc(GL_NEVER, alpha); break;
-        case AlphaFunc::Less:
-            glAlphaFunc(GL_LESS, alpha); break;
-        case AlphaFunc::Equal:
-            glAlphaFunc(GL_EQUAL, alpha); break;
-        case AlphaFunc::LessOrEqual:
-            glAlphaFunc(GL_LEQUAL, alpha); break;
-        case AlphaFunc::Greater:
-            glAlphaFunc(GL_GREATER, alpha); break;
-        case AlphaFunc::NotEqual:
-            glAlphaFunc(GL_NOTEQUAL, alpha); break;
-        case AlphaFunc::GreaterOrEqual:
-            glAlphaFunc(GL_GEQUAL, alpha); break;
-        case AlphaFunc::Always:
-            glAlphaFunc(GL_ALWAYS, alpha); break;
-    }
-
-    if (func == AlphaFunc::Disabled)
-        glDisable(GL_ALPHA_TEST);
-    else
-        glEnable(GL_ALPHA_TEST);
-#else
-    /* XXX: alpha test not available in GL ES and deprecated anyway. */
-#endif
-
-    m_data->m_alpha_func = func;
-    m_data->m_alpha_value = alpha;
-}
-
-AlphaFunc Renderer::GetAlphaFunc() const
-{
-    return m_data->m_alpha_func;
-}
-
-float Renderer::GetAlphaValue() const
-{
-    return m_data->m_alpha_value;
-}
-
-/*
- * Blend equation
- */
-
-void Renderer::SetBlendEquation(BlendEquation rgb, BlendEquation alpha)
-{
-    if (m_data->m_blend_rgb == rgb && m_data->m_blend_alpha == alpha)
-        return;
-
-    GLenum s1[2] = { GL_FUNC_ADD, GL_FUNC_ADD };
-    BlendEquation s2[2] = { rgb, alpha };
-
-    for (int i = 0; i < 2; ++i)
-    {
-        switch (s2[i])
-        {
-            case BlendEquation::Add:
-                s1[i] = GL_FUNC_ADD; break;
-            case BlendEquation::Subtract:
-                s1[i] = GL_FUNC_SUBTRACT; break;
-            case BlendEquation::ReverseSubtract:
-                s1[i] = GL_FUNC_REVERSE_SUBTRACT; break;
-#if defined GL_MIN && defined GL_MAX
-            case BlendEquation::Min:
-                s1[i] = GL_MIN; break;
-            case BlendEquation::Max:
-                s1[i] = GL_MAX; break;
-#else
-            case BlendEquation::Min:
-                s1[i] = GL_MIN_EXT; break;
-            case BlendEquation::Max:
-                s1[i] = GL_MAX_EXT; break;
-#endif
-        }
-    }
-
-    glBlendEquationSeparate(s1[0], s1[1]);
-
-    m_data->m_blend_rgb = rgb;
-    m_data->m_blend_alpha = alpha;
-}
-
-BlendEquation Renderer::GetBlendEquationRgb() const
-{
-    return m_data->m_blend_rgb;
-}
-
-BlendEquation Renderer::GetBlendEquationAlpha() const
-{
-    return m_data->m_blend_alpha;
-}
-
-/*
- * Blend function
- */
-
-void Renderer::SetBlendFunc(BlendFunc src, BlendFunc dst)
-{
-    if (m_data->m_blend_src == src && m_data->m_blend_dst == dst)
-        return;
-
-    GLenum s1[2] = { GL_ONE, GL_ZERO };
-    BlendFunc s2[2] = { src, dst };
-
-    for (int i = 0; i < 2; ++i)
-    {
-        switch (s2[i])
-        {
-            case BlendFunc::Disabled:
-                break; /* Nothing to do */
-            case BlendFunc::Zero:
-                s1[i] = GL_ZERO; break;
-            case BlendFunc::One:
-                s1[i] = GL_ONE; break;
-            case BlendFunc::SrcColor:
-                s1[i] = GL_SRC_COLOR; break;
-            case BlendFunc::OneMinusSrcColor:
-                s1[i] = GL_ONE_MINUS_SRC_COLOR; break;
-            case BlendFunc::DstColor:
-                s1[i] = GL_DST_COLOR; break;
-            case BlendFunc::OneMinusDstColor:
-                s1[i] = GL_ONE_MINUS_DST_COLOR; break;
-            case BlendFunc::SrcAlpha:
-                s1[i] = GL_SRC_ALPHA; break;
-            case BlendFunc::OneMinusSrcAlpha:
-                s1[i] = GL_ONE_MINUS_SRC_ALPHA; break;
-            case BlendFunc::DstAlpha:
-                s1[i] = GL_DST_ALPHA; break;
-            case BlendFunc::OneMinusDstAlpha:
-                s1[i] = GL_ONE_MINUS_DST_ALPHA; break;
-            case BlendFunc::ConstantColor:
-                s1[i] = GL_CONSTANT_COLOR; break;
-            case BlendFunc::OneMinusConstantColor:
-                s1[i] = GL_ONE_MINUS_CONSTANT_COLOR; break;
-            case BlendFunc::ConstantAlpha:
-                s1[i] = GL_CONSTANT_ALPHA; break;
-            case BlendFunc::OneMinusConstantAlpha:
-                s1[i] = GL_ONE_MINUS_CONSTANT_ALPHA; break;
-        }
-    }
-
-    if (src == BlendFunc::Disabled)
-    {
-        glDisable(GL_BLEND);
-    }
-    else
-    {
-        glEnable(GL_BLEND);
-        glBlendFunc(s1[0], s1[1]);
-    }
-
-    m_data->m_blend_src = src;
-    m_data->m_blend_dst = dst;
-}
-
-BlendFunc Renderer::GetBlendFuncSrc() const
-{
-    return m_data->m_blend_src;
-}
-
-BlendFunc Renderer::GetBlendFuncDst() const
-{
-    return m_data->m_blend_dst;
-}
-
-/*
- * Depth test
- */
-
-void Renderer::SetDepthFunc(DepthFunc func)
-{
-    if (m_data->m_depth_func == func)
-        return;
-
-    switch (func)
-    {
-        case DepthFunc::Disabled:
-            break; /* Nothing to do */
-        case DepthFunc::Never:
-            glDepthFunc(GL_NEVER); break;
-        case DepthFunc::Less:
-            glDepthFunc(GL_LESS); break;
-        case DepthFunc::Equal:
-            glDepthFunc(GL_EQUAL); break;
-        case DepthFunc::LessOrEqual:
-            glDepthFunc(GL_LEQUAL); break;
-        case DepthFunc::Greater:
-            glDepthFunc(GL_GREATER); break;
-        case DepthFunc::NotEqual:
-            glDepthFunc(GL_NOTEQUAL); break;
-        case DepthFunc::GreaterOrEqual:
-            glDepthFunc(GL_GEQUAL); break;
-        case DepthFunc::Always:
-            glDepthFunc(GL_ALWAYS); break;
-    }
-
-    if (func == DepthFunc::Disabled)
-        glDisable(GL_DEPTH_TEST);
-    else
-        glEnable(GL_DEPTH_TEST);
-
-    m_data->m_depth_func = func;
-}
-
-DepthFunc Renderer::GetDepthFunc() const
-{
-    return m_data->m_depth_func;
-}
-
-/*
- * Depth mask
- */
-
-void Renderer::SetDepthMask(DepthMask mask)
-{
-    if (m_data->m_depth_mask == mask)
-        return;
-
-    if (mask == DepthMask::Disabled)
-        glDepthMask(GL_FALSE);
-    else
-        glDepthMask(GL_TRUE);
-
-    m_data->m_depth_mask = mask;
-}
-
-DepthMask Renderer::GetDepthMask() const
-{
-    return m_data->m_depth_mask;
-}
-
-/*
- * Face culling
- */
-
-void Renderer::SetCullMode(CullMode mode)
-{
-    if (m_data->m_cull_mode == mode)
-        return;
-
-    switch (mode)
-    {
-    case CullMode::Disabled:
-        glDisable(GL_CULL_FACE);
-        break;
-    case CullMode::Clockwise:
-        glEnable(GL_CULL_FACE);
-        glCullFace(GL_FRONT);
-        glFrontFace(GL_CW);
-        break;
-    case CullMode::CounterClockwise:
-        glEnable(GL_CULL_FACE);
-        glCullFace(GL_FRONT);
-        glFrontFace(GL_CCW);
-        break;
-    }
-
-    m_data->m_cull_mode = mode;
-}
-
-CullMode Renderer::GetCullMode() const
-{
-    return m_data->m_cull_mode;
-}
-
-/*
- * Polygon rendering mode
- */
-
-void Renderer::SetPolygonMode(PolygonMode mode)
-{
-    if (m_data->m_polygon_mode == mode)
-        return;
-
-#if defined HAVE_GLES_2X
-    /* not supported */
-#elif defined GL_VERSION_1_1
-    switch (mode)
-    {
-    case PolygonMode::Point:
-        glPolygonMode(GL_FRONT_AND_BACK, GL_POINT);
-        break;
-    case PolygonMode::Line:
-        glPolygonMode(GL_FRONT_AND_BACK, GL_LINE);
-        break;
-    case PolygonMode::Fill:
-        glPolygonMode(GL_FRONT_AND_BACK, GL_FILL);
-        break;
-    }
-#endif
-
-    m_data->m_polygon_mode = mode;
-}
-
-PolygonMode Renderer::GetPolygonMode() const
-{
-    return m_data->m_polygon_mode;
-}
-
-/*
-* Scissor test mode
-*/
-
-void Renderer::SetScissorMode(ScissorMode mode)
-{
-    if (m_data->m_scissor_mode == mode)
-        return;
-
-    if (mode == ScissorMode::Enabled)
-        glEnable(GL_SCISSOR_TEST);
-    else
-        glDisable(GL_SCISSOR_TEST);
-
-    m_data->m_scissor_mode = mode;
-}
-
-void Renderer::SetScissorRect(vec4 rect)
-{
-    m_data->m_scissor_rect = rect;
-    if (m_data->m_scissor_mode == ScissorMode::Enabled)
-    {
-        glScissor((int)rect.x, (int)(Video::GetSize().y - rect.w), (int)(rect.z - rect.x), (int)(rect.w - rect.y));
-        //glScissor((int)rect.x, (int)rect.y, (int)(rect.z - rect.x), (int)(rect.w - rect.y));
-    }
-}
-
-ScissorMode Renderer::GetScissorMode() const
-{
-    return m_data->m_scissor_mode;
-}
-
-vec4 Renderer::GetScissorRect() const
-{
-    return m_data->m_scissor_rect;
-}
-
-} /* namespace lol */
-
-#endif
-
diff --git a/src/gpu/shader.cpp b/src/gpu/shader.cpp
deleted file mode 100644
index 2589b690..00000000
--- a/src/gpu/shader.cpp
+++ /dev/null
@@ -1,1056 +0,0 @@
-//
-//  Lol Engine
-//
-//  Copyright © 2010—2019 Sam Hocevar <sam@hocevar.net>
-//
-//  Lol Engine is free software. It comes without any warranty, to
-//  the extent permitted by applicable law. You can redistribute it
-//  and/or modify it under the terms of the Do What the Fuck You Want
-//  to Public License, Version 2, as published by the WTFPL Task Force.
-//  See http://www.wtfpl.net/ for more details.
-//
-
-#include <lol/engine-internal.h>
-
-#include <string>
-#include <memory>
-#include <map>
-#include <set>
-#include <cstring>
-#include <cstdio>
-
-#if defined _WIN32
-#   define WIN32_LEAN_AND_MEAN 1
-#   include <windows.h>
-#   undef WIN32_LEAN_AND_MEAN
-#endif
-
-#include "tao/pegtl.hpp"
-
-#include "lolgl.h"
-
-// FIXME: fine-tune this define
-#if defined LOL_USE_GLEW || defined HAVE_GL_2X || defined HAVE_GLES_2X
-
-namespace lol
-{
-
-struct ShaderType
-{
-    enum Value
-    {
-        Vertex = 1,
-        Fragment,
-        Geometry,
-        TessControl,
-        TessEval,
-    }
-    m_value;
-
-    inline ShaderType(Value v) : m_value(v) {}
-    inline ShaderType(int v) : m_value((Value)v) {}
-    inline operator Value() { return m_value; }
-};
-
-static const char* attribute_names[] =
-{
-    "in_Position",
-    "in_BlendWeight",
-    "in_BlendIndices",
-    "in_Normal",
-    "in_PointSize",
-    "in_TexCoord",
-    "in_TexCoordExt",
-    "in_Tangent",
-    "in_Binormal",
-    "in_TessFactor",
-    "in_PositionT",
-    "in_Color",
-    "in_Fog",
-    "in_Depth",
-    "in_Sample"
-};
-
-/*
- * Shader implementation class
- */
-
-class ShaderData
-{
-    friend class Shader;
-
-private:
-    std::string m_name;
-
-    GLuint prog_id, vert_id, frag_id;
-    // Benlitz: using a simple array could be faster since there is never more than a few attribute locations to store
-    std::map<uint64_t, GLint> attrib_locations;
-    std::map<uint64_t, bool> attrib_errors;
-    size_t vert_crc, frag_crc;
-
-    /* Shader patcher */
-    static int GetVersion();
-    static std::string Patch(std::string const &code, ShaderType type);
-};
-
-/* Global shader cache */
-static std::set<std::shared_ptr<Shader>> g_shaders;
-
-/*
- * LolFx parser
- */
-
-using namespace tao;
-using namespace pegtl;
-
-struct lolfx_parser
-{
-public:
-    std::string m_section;
-    std::map<std::string, std::string> m_programs;
-
-private:
-    // title <- '[' (!']')+ ']' .{eol}
-    struct do_title
-      : plus<not_one<']'>> {};
-
-    struct title
-      : seq<one<'['>,
-            do_title,
-            one<']'>,
-            until<eol, any>> {};
-
-    // FIXME: I’m using this rule because the do_title above also
-    // gets triggered when using at<> which is non-consuming.
-    struct title_ignore
-      : seq<one<'['>,
-            plus<not_one<']'>>,
-            one<']'>,
-            until<eol, any>> {};
-
-    // code_line <- .{eol}
-    struct code_line
-      : until<eol, any> {};
-
-    // code_section < code_line{&(title / eof)}
-    struct code_section
-      : until<at<sor<title_ignore, pegtl::eof>>, code_line> {};
-
-    // shader < title code_section
-    struct shader
-      : seq<title, code_section> {};
-
-    // header < code_section
-    struct header
-      : code_section {};
-
-    // lolfx < header code_section*
-    struct lolfx
-      : seq<header, star<shader>> {};
-
-    // default action: nothing
-    template<typename RULE>
-    struct action : nothing<RULE> {};
-
-public:
-    lolfx_parser(std::string const &code)
-      : m_section("header")
-    {
-        string_input<> in(code, "shader");
-        pegtl::parse<lolfx, action>(in, this);
-    }
-};
-
-template<>
-struct lolfx_parser::action<lolfx_parser::do_title>
-{
-    template<typename INPUT>
-    static void apply(INPUT const &in, lolfx_parser *that)
-    {
-        that->m_section = in.string();
-    }
-};
-
-template<>
-struct lolfx_parser::action<lolfx_parser::code_section>
-{
-    template<typename INPUT>
-    static void apply(INPUT const &in, lolfx_parser *that)
-    {
-        that->m_programs[that->m_section] = in.string();
-    }
-};
-
-/*
- * Public Shader class
- */
-
-std::shared_ptr<Shader> Shader::Create(std::string const &name, std::string const &code)
-{
-    lolfx_parser p(code);
-
-    ASSERT(has_key(p.m_programs, "vert.glsl"),
-           "no vertex shader in %s", name.c_str());
-
-    ASSERT(has_key(p.m_programs, "frag.glsl"),
-           "no fragment shader in %s", name.c_str());
-
-    std::string vert = p.m_programs["vert.glsl"];
-    std::string frag = p.m_programs["frag.glsl"];
-
-    size_t new_vert_crc = std::hash<std::string>{}(vert);
-    size_t new_frag_crc = std::hash<std::string>{}(frag);
-
-    for (auto shader : g_shaders)
-    {
-        if (shader->data->vert_crc == new_vert_crc
-             && shader->data->frag_crc == new_frag_crc)
-            return shader;
-    }
-
-    // FIXME: the cache never expires!
-    auto ret = std::make_shared<Shader>(name, vert, frag);
-    g_shaders.insert(ret);
-    return ret;
-}
-
-Shader::Shader(std::string const &name,
-               std::string const &vert, std::string const &frag)
-  : data(std::make_unique<ShaderData>())
-{
-    data->m_name = name;
-
-    char errbuf[4096];
-    std::string shader_code;
-    GLchar const *gl_code;
-    GLint status;
-    GLsizei len;
-
-    /* Compile vertex shader */
-    data->vert_crc = std::hash<std::string>{}(vert);
-
-    shader_code = ShaderData::Patch(vert, ShaderType::Vertex);
-    data->vert_id = glCreateShader(GL_VERTEX_SHADER);
-    gl_code = shader_code.c_str();
-    glShaderSource(data->vert_id, 1, &gl_code, nullptr);
-    glCompileShader(data->vert_id);
-
-    glGetShaderInfoLog(data->vert_id, sizeof(errbuf), &len, errbuf);
-    glGetShaderiv(data->vert_id, GL_COMPILE_STATUS, &status);
-    if (status != GL_TRUE)
-    {
-        msg::error("failed to compile vertex shader %s: %s\n",
-                   name.c_str(), errbuf);
-        msg::error("shader source:\n%s\n", shader_code.c_str());
-    }
-    else if (len > 16)
-    {
-        msg::debug("compile log for vertex shader %s: %s\n", name.c_str(), errbuf);
-        msg::debug("shader source:\n%s\n", shader_code.c_str());
-    }
-
-    /* Compile fragment shader */
-    data->frag_crc = std::hash<std::string>{}(frag);
-
-    shader_code = ShaderData::Patch(frag, ShaderType::Fragment);
-    data->frag_id = glCreateShader(GL_FRAGMENT_SHADER);
-    gl_code = shader_code.c_str();
-    glShaderSource(data->frag_id, 1, &gl_code, nullptr);
-    glCompileShader(data->frag_id);
-
-    glGetShaderInfoLog(data->frag_id, sizeof(errbuf), &len, errbuf);
-    glGetShaderiv(data->frag_id, GL_COMPILE_STATUS, &status);
-    if (status != GL_TRUE)
-    {
-        msg::error("failed to compile fragment shader %s: %s\n",
-                   name.c_str(), errbuf);
-        msg::error("shader source:\n%s\n", shader_code.c_str());
-    }
-    else if (len > 16)
-    {
-        msg::debug("compile log for fragment shader %s: %s\n",
-                   name.c_str(), errbuf);
-        msg::debug("shader source:\n%s\n", shader_code.c_str());
-    }
-
-    /* Create program */
-    data->prog_id = glCreateProgram();
-    glAttachShader(data->prog_id, data->vert_id);
-    glAttachShader(data->prog_id, data->frag_id);
-
-    glLinkProgram(data->prog_id);
-    glGetProgramInfoLog(data->prog_id, sizeof(errbuf), &len, errbuf);
-    glGetProgramiv(data->prog_id, GL_LINK_STATUS, &status);
-    if (status != GL_TRUE)
-    {
-        msg::error("failed to link program %s: %s\n", name.c_str(), errbuf);
-    }
-    else if (len > 16)
-    {
-        msg::debug("link log for program %s: %s\n", name.c_str(), errbuf);
-    }
-
-    GLint validated;
-    glValidateProgram(data->prog_id);
-    glGetProgramiv(data->prog_id, GL_VALIDATE_STATUS, &validated);
-    if (validated != GL_TRUE)
-    {
-        msg::error("failed to validate program %s\n", name.c_str());
-    }
-
-    GLint num_attribs;
-    glGetProgramiv(data->prog_id, GL_ACTIVE_ATTRIBUTES, &num_attribs);
-
-#if __EMSCRIPTEN__ // WebGL doesn't support GL_ACTIVE_ATTRIBUTE_MAX_LENGTH, so chose a default size value.
-    GLint max_len = 256;
-#else
-    GLint max_len;
-    glGetProgramiv(data->prog_id, GL_ACTIVE_ATTRIBUTE_MAX_LENGTH, &max_len);
-#endif
-
-    char* name_buffer = new char[max_len];
-    for (int i = 0; i < num_attribs; ++i)
-    {
-        int attrib_len;
-        int attrib_size;
-        int attrib_type;
-        glGetActiveAttrib(data->prog_id, i, max_len, &attrib_len, (GLint*)&attrib_size, (GLenum*)&attrib_type, name_buffer);
-
-        std::string attr_name(name_buffer);
-        int index = -1;
-        VertexUsage usage = VertexUsage::MAX;
-        for (int j = 0; j < (int)VertexUsage::MAX; ++j)
-        {
-            if (starts_with(attr_name, attribute_names[j]) ||
-                starts_with(attr_name, tolower(attribute_names[j])))
-            {
-                usage = VertexUsage(j);
-                char* idx_ptr = &attr_name[0] + strlen(attribute_names[j]);
-                index = strtol(idx_ptr, nullptr, 10);
-                break;
-            }
-        }
-
-        if (usage == VertexUsage::MAX || index == -1)
-        {
-            msg::error("unable to parse attribute semantic from name: %s\n",
-                       name_buffer);
-        }
-        else
-        {
-            GLint location = glGetAttribLocation(data->prog_id, name_buffer);
-            uint64_t flags = (uint64_t)(uint16_t)usage.ToScalar() << 16;
-            flags |= (uint64_t)(uint16_t)index;
-            // TODO: this is here just in case. Remove this once everything has been correctly tested
-#if LOL_BUILD_DEBUG
-            if (has_key(data->attrib_locations, flags))
-            {
-                msg::error("error while parsing attribute semantics in %s\n",
-                           attr_name.c_str());
-            }
-#endif
-            data->attrib_locations[flags] = location;
-        }
-    }
-
-    delete[] name_buffer;
-}
-
-int Shader::GetAttribCount() const
-{
-    return (int)data->attrib_locations.size();
-}
-
-ShaderAttrib Shader::GetAttribLocation(VertexUsage usage, int index) const
-{
-    ShaderAttrib ret;
-    ret.m_flags = (uint64_t)(uint16_t)usage.ToScalar() << 16;
-    ret.m_flags |= (uint64_t)(uint16_t)index;
-
-    GLint l = -1;
-
-    if (!try_get(data->attrib_locations, ret.m_flags, l))
-    {
-        /* Only spit an error once, we don’t need to flood the console. */
-        if (!has_key(data->attrib_errors, ret.m_flags))
-        {
-            msg::error("attribute %s not found in shader %s\n",
-                       usage.tostring().c_str(), data->m_name.c_str());
-            data->attrib_errors[ret.m_flags] = true;
-        }
-    }
-    ret.m_flags |= (uint64_t)(uint32_t)l << 32;
-    return ret;
-}
-
-ShaderUniform Shader::GetUniformLocation(std::string const& uni) const
-{
-    return GetUniformLocation(uni.c_str());
-}
-ShaderUniform Shader::GetUniformLocation(char const *uni) const
-{
-    ShaderUniform ret;
-    ret.frag = (uintptr_t)glGetUniformLocation(data->prog_id, uni);
-    ret.vert = 0;
-    return ret;
-}
-
-/*
- * Uniform setters for scalars
- */
-
-void Shader::SetUniform(ShaderUniform const &uni, int i)
-{
-    glUniform1i((GLint)uni.frag, i);
-}
-
-void Shader::SetUniform(ShaderUniform const &uni, ivec2 const &v)
-{
-    glUniform2i((GLint)uni.frag, v.x, v.y);
-}
-
-void Shader::SetUniform(ShaderUniform const &uni, ivec3 const &v)
-{
-    glUniform3i((GLint)uni.frag, v.x, v.y, v.z);
-}
-
-void Shader::SetUniform(ShaderUniform const &uni, ivec4 const &v)
-{
-    glUniform4i((GLint)uni.frag, v.x, v.y, v.z, v.w);
-}
-
-void Shader::SetUniform(ShaderUniform const &uni, float f)
-{
-    glUniform1f((GLint)uni.frag, f);
-}
-
-void Shader::SetUniform(ShaderUniform const &uni, vec2 const &v)
-{
-    glUniform2fv((GLint)uni.frag, 1, &v[0]);
-}
-
-void Shader::SetUniform(ShaderUniform const &uni, vec3 const &v)
-{
-    glUniform3fv((GLint)uni.frag, 1, &v[0]);
-}
-
-void Shader::SetUniform(ShaderUniform const &uni, vec4 const &v)
-{
-    glUniform4fv((GLint)uni.frag, 1, &v[0]);
-}
-
-void Shader::SetUniform(ShaderUniform const &uni, mat2 const &m)
-{
-    glUniformMatrix2fv((GLint)uni.frag, 1, GL_FALSE, &m[0][0]);
-}
-
-void Shader::SetUniform(ShaderUniform const &uni, mat3 const &m)
-{
-    glUniformMatrix3fv((GLint)uni.frag, 1, GL_FALSE, &m[0][0]);
-}
-
-void Shader::SetUniform(ShaderUniform const &uni, mat4 const &m)
-{
-    glUniformMatrix4fv((GLint)uni.frag, 1, GL_FALSE, &m[0][0]);
-}
-
-void Shader::SetUniform(ShaderUniform const &uni, TextureUniform tex, int index)
-{
-    glActiveTexture(GL_TEXTURE0 + index);
-    glBindTexture(GL_TEXTURE_2D, (int)tex.m_flags);
-    SetUniform(uni, index);
-}
-
-/*
- * Uniform setters for arrays
- */
-
-void Shader::SetUniform(ShaderUniform const &uni, array<float> const &v)
-{
-    glUniform1fv((GLint)uni.frag, (GLsizei)v.count(), &v[0]);
-}
-
-void Shader::SetUniform(ShaderUniform const &uni, array<vec2> const &v)
-{
-    glUniform2fv((GLint)uni.frag, (GLsizei)v.count(), &v[0][0]);
-}
-
-void Shader::SetUniform(ShaderUniform const &uni, array<vec3> const &v)
-{
-    glUniform3fv((GLint)uni.frag, (GLsizei)v.count(), &v[0][0]);
-}
-
-void Shader::SetUniform(ShaderUniform const &uni, array<vec4> const &v)
-{
-    glUniform4fv((GLint)uni.frag, (GLsizei)v.count(), &v[0][0]);
-}
-
-void Shader::Bind() const
-{
-    glUseProgram(data->prog_id);
-}
-
-void Shader::Unbind() const
-{
-    /* FIXME: untested */
-    glUseProgram(0);
-}
-
-Shader::~Shader()
-{
-    glDetachShader(data->prog_id, data->vert_id);
-    glDetachShader(data->prog_id, data->frag_id);
-    glDeleteShader(data->vert_id);
-    glDeleteShader(data->frag_id);
-    glDeleteProgram(data->prog_id);
-}
-
-/* Try to detect shader compiler features */
-int ShaderData::GetVersion()
-{
-    static int version = 0;
-
-    if (!version)
-    {
-#if defined HAVE_GLES_2X
-        /* GLES 2.x supports #version 100, that's all. */
-        return 100;
-#else
-        char buf[4096];
-        GLsizei len;
-
-        int id = glCreateShader(GL_VERTEX_SHADER);
-
-        /* Can we compile 1.30 shaders? */
-        char const *test130 =
-            "#version 130\n"
-            "void main() { gl_Position = vec4(0.0, 0.0, 0.0, 0.0); }";
-        glShaderSource(id, 1, &test130, nullptr);
-        glCompileShader(id);
-        glGetShaderInfoLog(id, sizeof(buf), &len, buf);
-        if (len <= 0)
-            version = 130;
-
-        /* If not, can we compile 1.20 shaders? */
-        if (!version)
-        {
-            char const *test120 =
-                "#version 120\n"
-                "void main() { gl_Position = vec4(0.0, 0.0, 0.0, 0.0); }";
-            glShaderSource(id, 1, &test120, nullptr);
-            glCompileShader(id);
-            glGetShaderInfoLog(id, sizeof(buf), &len, buf);
-            if (len <= 0)
-                version = 120;
-        }
-
-        /* Otherwise, assume we can compile 1.10 shaders. */
-        if (!version)
-            version = 110;
-
-        glDeleteShader(id);
-#endif
-    }
-
-    return version;
-}
-
-/*
- * Simple shader source patching for old GLSL versions.
- */
-std::string ShaderData::Patch(std::string const &code, ShaderType type)
-{
-    int ver_driver = GetVersion();
-
-    std::string patched_code = code;
-    if (ver_driver >= 130)
-        return patched_code;
-
-    /* FIXME: use std::string instead of char * for parsing? */
-    int ver_shader = 110;
-    char *parser = strstr(&patched_code[0], "#version");
-    if (parser)
-        ver_shader = atoi(parser + strlen("#version"));
-
-    /* This is GL ES, we only know version 100. */
-    if (ver_shader > 100 && ver_driver == 100)
-    {
-        /* FIXME: this isn't elegant but honestly, we don't care, this
-         * whole file is going to die soon. */
-        char *p = strstr(&patched_code[0], "#version");
-        if (p)
-        {
-            p += 8;
-            while (*p == ' ')
-                p++;
-            if (p[0] == '1' && p[1] && p[2])
-                p[1] = p[2] = '0';
-        }
-    }
-
-    if (ver_shader > 120 && ver_driver <= 120)
-    {
-        char const *end = patched_code.c_str() + patched_code.length() + 1;
-
-        /* Find main() */
-        parser = strstr(&patched_code[0], "main");
-        if (!parser) return patched_code;
-        parser = strstr(parser, "(");
-        if (!parser) return patched_code;
-        parser = strstr(parser, ")");
-        if (!parser) return patched_code;
-        parser = strstr(parser, "{");
-        if (!parser) return patched_code;
-        char *main = parser + 1;
-
-        /* Perform main() replaces */
-        char const * const main_replaces[] =
-        {
-#if 0
-            "in vec2 in_Vertex;", "vec2 in_Vertex = gl_Vertex.xy;",
-            "in vec3 in_Vertex;", "vec3 in_Vertex = gl_Vertex.xyz;",
-            "in vec4 in_Vertex;", "vec4 in_Vertex = gl_Vertex.xyzw;",
-
-            "in vec2 in_Color;", "vec2 in_Color = gl_Color.xy;",
-            "in vec3 in_Color;", "vec3 in_Color = gl_Color.xyz;",
-            "in vec4 in_Color;", "vec4 in_Color = gl_Color.xyzw;",
-
-            "in vec2 in_MultiTexCoord0;",
-               "vec2 in_MultiTexCoord0 = gl_MultiTexCoord0.xy;",
-            "in vec2 in_MultiTexCoord1;",
-               "vec2 in_MultiTexCoord1 = gl_MultiTexCoord1.xy;",
-            "in vec2 in_MultiTexCoord2;",
-               "vec2 in_MultiTexCoord2 = gl_MultiTexCoord2.xy;",
-            "in vec2 in_MultiTexCoord3;",
-               "vec2 in_MultiTexCoord3 = gl_MultiTexCoord3.xy;",
-            "in vec2 in_MultiTexCoord4;",
-               "vec2 in_MultiTexCoord4 = gl_MultiTexCoord4.xy;",
-            "in vec2 in_MultiTexCoord5;",
-               "vec2 in_MultiTexCoord5 = gl_MultiTexCoord5.xy;",
-            "in vec2 in_MultiTexCoord6;",
-               "vec2 in_MultiTexCoord6 = gl_MultiTexCoord6.xy;",
-            "in vec2 in_MultiTexCoord7;",
-               "vec2 in_MultiTexCoord7 = gl_MultiTexCoord7.xy;",
-#endif
-
-            nullptr
-        };
-
-        for (char const * const *rep = main_replaces; rep[0]; rep += 2)
-        {
-            char *match = strstr(&patched_code[0], rep[0]);
-            if (match && match < main)
-            {
-                size_t l0 = strlen(rep[0]);
-                size_t l1 = strlen(rep[1]);
-                memmove(main + l1, main, end - main);
-                memcpy(main, rep[1], l1);
-                memset(match, ' ', l0);
-                main += l1;
-                end += l1;
-            }
-        }
-
-        /* Perform small replaces */
-        char const * const fast_replaces[] =
-        {
-            "#version 130", "#version 120",
-            "out vec4 out_color;", " ",
-            "out_color =", "gl_FragColor =",
-            "in vec2", type == ShaderType::Vertex ? "attribute vec2" : "varying vec2",
-            "in vec3", type == ShaderType::Vertex ? "attribute vec3" : "varying vec3",
-            "in vec4", type == ShaderType::Vertex ? "attribute vec4" : "varying vec4",
-            "in mat4", type == ShaderType::Vertex ? "attribute mat4" : "varying mat4",
-            "out vec2", "varying vec2",
-            "out vec3", "varying vec3",
-            "out vec4", "varying vec4",
-            "out mat4", "varying mat4",
-            nullptr
-        };
-
-        for (char const * const *rep = fast_replaces; rep[0]; rep += 2)
-        {
-            while (true)
-            {
-                size_t index = patched_code.find(rep[0]);
-                if (index == std::string::npos)
-                    break;
-
-                size_t l0 = strlen(rep[0]);
-                size_t l1 = strlen(rep[1]);
-                UNUSED(l1);
-
-                std::string left = patched_code.substr(0, index);
-                std::string right = patched_code.substr(index + l0, patched_code.length() - (index + l0));
-
-                patched_code = left + std::string(rep[1]) + right;
-            }
-        }
-    }
-
-    return patched_code;
-}
-
-//----
-std::string Shader::GetVariablePrefix(const ShaderVariable variable)
-{
-    switch (variable.ToScalar())
-    {
-        case ShaderVariable::Attribute:  return "in_";
-        case ShaderVariable::Uniform:    return "u_";
-        case ShaderVariable::Varying:    return "pass_";
-        case ShaderVariable::InOut:
-        default: return "";
-    }
-}
-
-//----
-std::string Shader::GetVariableQualifier(const ShaderVariable variable)
-{
-    switch (variable.ToScalar())
-    {
-        case ShaderVariable::Attribute: return "attribute";
-        case ShaderVariable::Uniform:   return "uniform";
-        case ShaderVariable::Varying:   return "varying";
-        case ShaderVariable::InOut:
-        default: return "";
-    }
-}
-
-//----
-std::string Shader::GetFunctionQualifier(const ShaderVariable variable, const ShaderProgram program)
-{
-    switch (program.ToScalar())
-    {
-        case ShaderProgram::Geometry:
-        {
-            //TODO : L O L ----------------
-            return "";
-        }
-        case ShaderProgram::Vertex:
-        {
-            switch (variable.ToScalar())
-            {
-                case ShaderVariable::Attribute:  return "in";
-                case ShaderVariable::Uniform:    return "in";
-                case ShaderVariable::Varying:    return "inout";
-                case ShaderVariable::InOut:      return "inout";
-                default: return "";
-            }
-            return "";
-        }
-        case ShaderProgram::Pixel:
-        {
-            switch (variable.ToScalar())
-            {
-                case ShaderVariable::Attribute:  return "in";
-                case ShaderVariable::Uniform:    return "in";
-                case ShaderVariable::Varying:    return "in";
-                case ShaderVariable::InOut:      return "inout";
-                default: return "";
-            }
-            return "";
-        }
-        default:
-        {
-            return "";
-        }
-    }
-}
-
-//----
-std::string Shader::GetProgramQualifier(const ShaderProgram program)
-{
-    switch (program.ToScalar())
-    {
-        case ShaderProgram::Geometry: return ""; //TODO : L O L ---------
-        case ShaderProgram::Vertex:   return "[vert.glsl]";
-        case ShaderProgram::Pixel:    return "[frag.glsl]";
-        default: return "";
-    }
-}
-
-//----
-std::string Shader::GetProgramOutVariable(const ShaderProgram program)
-{
-    switch (program.ToScalar())
-    {
-        case ShaderProgram::Geometry: return ""; //TODO : L O L ---------
-        case ShaderProgram::Vertex:   return "gl_Position";
-        case ShaderProgram::Pixel:    return "gl_FragColor";
-        default: return "";
-    }
-}
-
-//----
-std::string Shader::GetProgramOutVariableLocal(const ShaderProgram program)
-{
-    switch (program.ToScalar())
-    {
-        case ShaderProgram::Geometry: return ""; //TODO : L O L ---------
-        case ShaderProgram::Vertex:   return "out_position";
-        case ShaderProgram::Pixel:    return "out_frag_color";
-        default: return "";
-    }
-}
-
-//ShaderVar -------------------------------------------------------------------
-ShaderVar ShaderVar::GetShaderOut(ShaderProgram program)
-{
-    switch (program.ToScalar())
-    {
-    case ShaderProgram::Geometry: //TODO : L O L ------------------------------
-    default: ASSERT(false); return ShaderVar();
-    case ShaderProgram::Vertex:   return ShaderVar(ShaderVariable::InOut, ShaderVariableType::Vec4, Shader::GetProgramOutVariableLocal(program));
-    case ShaderProgram::Pixel:    return ShaderVar(ShaderVariable::InOut, ShaderVariableType::Vec4, Shader::GetProgramOutVariableLocal(program));
-    }
-}
-
-//Shader Block implementation class -------------------------------------------
-void ShaderBlock::AddVar(ShaderVar const& var)
-{
-    ShaderVariable qualifier = var.GetQualifier();
-    std::string type = var.GetType();
-    std::string name = Shader::GetVariablePrefix(qualifier) + var.m_name;
-    ASSERT(!has_key(m_parameters[qualifier.ToScalar()], name));
-    m_parameters[qualifier.ToScalar()][name] = type;
-}
-
-//----
-void ShaderBlock::AddCallParameters(std::map<std::string, std::string> const& variables, std::string& result)
-{
-    for (auto const &key : variables)
-    {
-        if (result.length() > 0)
-            result += ", ";
-        result += key.first;
-    }
-}
-
-//----
-void ShaderBlock::AddDefinitionParameters(const ShaderVariable type, const ShaderProgram program, std::map<std::string, std::string>& variables, std::string& result)
-{
-    for (auto const &key : variables)
-    {
-        if (result.length() > 0)
-            result += ", ";
-        result += Shader::GetFunctionQualifier(type, program) + " ";
-        result += key.second;
-        result += " ";
-        result += key.first;
-    }
-}
-
-//----
-void ShaderBlock::Build(const ShaderProgram program, std::string& call, std::string& function)
-{
-    ASSERT(m_name.length());
-    ASSERT(m_parameters[ShaderVariable::InOut].size());
-
-    //Build call in main
-    std::string call_name = std::string("Call_") + m_name;
-    call = call_name + "(";
-    std::string call_parameters;
-    for (int i = 0; i < ShaderVariable::MAX; i++)
-        AddCallParameters(/*(ShaderVariable)i, */m_parameters[i], call_parameters);
-    call += call_parameters + ");";
-
-    //Build function declaration
-    function = std::string("void ") + call_name + "(";
-    std::string def_parameters;
-    for (int i = 0; i < ShaderVariable::MAX; i++)
-        AddDefinitionParameters((ShaderVariable)i, program, m_parameters[i], def_parameters);
-    function += def_parameters + ")\n{\n"
-        + m_code_main + (ends_with(m_code_main, "\n") ? std::string() : "\n") +
-        "}";
-}
-
-//Shader Builder implementation class -----------------------------------------
-ShaderBuilder::ShaderBuilder(std::string const& name, std::string const& version)
-    : m_name(name), m_version(version)
-{
-    ASSERT(name.length());
-    ASSERT(version.length());
-}
-
-//----
-ShaderBuilder::~ShaderBuilder()
-{
-}
-
-//----
-std::string const& ShaderBuilder::GetName()
-{
-    return m_name;
-}
-
-//----
-ShaderBuilder& ShaderBuilder::operator<<(const ShaderProgram program)
-{
-    m_current_program = program;
-    return *this;
-}
-
-//----
-ShaderBuilder& ShaderBuilder::operator<<(ShaderBlock* block)
-{
-    ASSERT(m_current_program != ShaderProgram::MAX);
-    m_blocks[m_current_program.ToScalar()].push_unique(block);
-    return *this;
-}
-
-//----
-ShaderBuilder& ShaderBuilder::operator<<(ShaderBlock const& block)
-{
-    ASSERT(m_current_program != ShaderProgram::MAX);
-    m_blocks[m_current_program.ToScalar()].push_unique(new ShaderBlock(block));
-    return *this;
-}
-
-//----
-std::string ShaderBuilder::AddSlotOutVariableLocal(const ShaderProgram program)
-{
-    ShaderVariable var = ShaderVariable::InOut;
-    std::string result = Shader::GetProgramOutVariableLocal(program);
-    switch (program.ToScalar())
-    {
-        case ShaderProgram::Geometry:
-        {
-            //TODO : L O L ----------------
-            break;
-        }
-        case ShaderProgram::Vertex:
-        {
-            m_parameters[program.ToScalar()][var.ToScalar()][result] = "vec4";
-            break;
-        }
-        case ShaderProgram::Pixel:
-        {
-            m_parameters[program.ToScalar()][var.ToScalar()][result] = "vec4";
-            break;
-        }
-        default:
-        {
-            break;
-        }
-    }
-    return result;
-}
-
-//----
-void ShaderBuilder::MergeParameters(std::map<std::string, std::string>& variables, std::map<std::string, std::string>& merged)
-{
-    for (auto const &key : variables)
-    {
-        bool has_param = has_key(merged, key.first);
-
-        //Key exists, check the type to make sure it's the same
-        ASSERT(!has_param || (has_param && merged[key.first] == variables[key.first]),
-            "has_param=%d, key=%s merged[key]=%s, variables[key]=%s\n",
-            (int)has_param, key.first.c_str(), merged[key.first].c_str(), key.second.c_str());
-
-        //does not exist, had it
-        if (!has_param)
-            merged[key.first] = key.second;
-    }
-}
-
-//----
-std::string ShaderBuilder::Build()
-{
-    std::string code;
-
-    //Cleanup first
-    for (int prog = 0; prog < ShaderProgram::MAX; prog++)
-        for (int var = 0; var < ShaderVariable::MAX; var++)
-            m_parameters[prog][var].clear();
-
-    //Start building
-    for (int prog = 0; prog < ShaderProgram::MAX; prog++)
-    {
-        //Add default local out in merged variables
-        std::string out_local_var = AddSlotOutVariableLocal((ShaderProgram)prog);
-
-        if (!out_local_var.length())
-            continue;
-
-        //Merge all variables
-        for (int var = 0; var < ShaderVariable::MAX; var++)
-            for (int block = 0; block < m_blocks[prog].count(); block++)
-                MergeParameters(m_blocks[prog][block]->m_parameters[var], m_parameters[prog][var]);
-
-        //Actually write code
-        code += Shader::GetProgramQualifier((ShaderProgram)prog) + "\n";
-
-        //Add actual code
-        code += std::string("#version ") + m_version + "\n\n";
-
-        // Safety for GLES
-        code += "#if defined GL_ES\nprecision mediump float;\n#endif\n";
-
-        //Added shader variables
-        for (int var = 0; var < ShaderVariable::InOut; var++)
-        {
-            array<std::string> all_keys = keys(m_parameters[prog][var]);
-            if (all_keys.count())
-            {
-                code += std::string("//- ") + Shader::GetVariableQualifier((ShaderVariable)var) + " ----\n";
-                for (auto const &key : all_keys)
-                {
-                    code += Shader::GetVariableQualifier((ShaderVariable)var) + " ";
-                    code += m_parameters[prog][var][key] + " " + key + ";\n";
-                }
-                if (var + 1 < ShaderVariable::InOut)
-                    code += "\n";
-            }
-        }
-        code += "\n";
-
-        //Build Blocks code and add it
-        array<std::string> calls;
-        for (int block = 0; block < m_blocks[prog].count(); block++)
-        {
-            std::string call;
-            std::string function;
-            m_blocks[prog][block]->Build(ShaderProgram(prog), call, function);
-            calls << call;
-            if (m_blocks[prog][block]->m_code_custom.length())
-            {
-                code += std::string("//- ") + m_blocks[prog][block]->GetName() + " custom code ----\n";
-                code += m_blocks[prog][block]->m_code_custom + "\n\n";
-            }
-            code += std::string("//- ") + m_blocks[prog][block]->GetName() + " main code ----\n";
-            code += function + "\n\n";
-        }
-
-        //Added main definition
-        code += "//- Main ----\nvoid main(void)\n{\n";
-
-        //Add local variables
-        int var = ShaderVariable::InOut;
-        array<std::string> all_keys = keys(m_parameters[prog][var]);
-        for (auto const &key : all_keys)
-        {
-            if (all_keys.count())
-            {
-                code += "    " + m_parameters[prog][var][key] + " " + key + ";\n";
-            }
-        }
-        code += "\n";
-
-        //Add calls
-        code += "//- Calls ----\n";
-        for (auto const &call : calls)
-            code += "    " + call + "\n";
-        code += "\n";
-
-        code += "    " + Shader::GetProgramOutVariable((ShaderProgram)prog) + " = " + out_local_var + ";\n}\n\n";
-    }
-
-    return code;
-}
-
-} /* namespace lol */
-
-#endif
-
diff --git a/src/gpu/test-material.lolfx b/src/gpu/test-material.lolfx
deleted file mode 100644
index 3f08dc0a..00000000
--- a/src/gpu/test-material.lolfx
+++ /dev/null
@@ -1,94 +0,0 @@
-/*
- * LolFx Test Material
- */
-
-// Can have lots of different techniques in a single lolfx file,
-// especially if they share common shader code.
-technique Foo
-{
-    // Multiple passes, with alpha on/off, with various blending methods,
-    // with depth test disabled...
-    pass p0
-    {
-        texture[0] = null;
-        texture[1] = null;
-        texture[2] = null;
-
-        cullmode = none; // ccw
-        lighting = false;
-        zenable = true; // false
-        alphablendenable = true; // false
-        srcblend = src_alpha; // one
-        destblend = inv_src_alpha;
-
-        colorop[0] = select_arg1;
-        colorarg1[0] = diffuse;
-
-        alphaop[0] = select_arg1;
-        alphaarg1[0] = diffuse;
-
-        colorop[1] = disable;
-
-        alphaop[1] = disable;
-
-        // Ye old way
-        vertexshader = blah;
-        geometryshader = blah;
-        pixelshader = blah;
-
-        // Ogre crap
-
-        // The D3D11 way, but we must make it work with GLSL too
-        //SetBlendState(AdditiveBlending, float4(0.0f, 0.0f, 0.0f, 0.0f), 0xFFFFFFFF);
-        //SetDepthStencilState(DisableDepth, 0);
-        //SetRasterizerState()
-
-        //SetVertexShader
-        //SetDomainShader
-        //SetHullShader
-        //SetGeometryShader
-        //SetPixelShader
-        //SetComputeShader /* WTF? */
-
-        //SetRenderTargets(RTV0, DSV);
-        //SetRenderTargets(RTV0, RTV1, DSV);
-        //...
-        //SetRenderTargets(RTV0, RTV1, RTV2, RTV3, RTV4, RTV5, RTV6, RTV7, DSV);
-    }
-
-    pass p1
-    {
-        // Autres vertex/pixel shaders avec éventuellement des
-        // dépendances sur le résultat des passes précédentes
-        vertexshader = something_else;
-    }
-}
-
-/* Defines GLSL shader "Prout" */
-
-[prout.glsl]
-#version 120
-
-/* Valid with my GLSL compiler */
-//#pragma lolfx semantic(in_Position, POSITION)
-//#pragma lolfx semantic(in_Normal, NORMAL)
-//#pragma lolfx semantic(in_Color, COLOR)
-attribute vec3 in_Position;
-attribute vec3 in_Normal;
-attribute vec4 in_Color;
-
-void main(void)
-{
-    /* ... */
-}
-
-/* Defines GLSL shader "Zob" */
-[zob.glsl]
-
-void main(void)
-{
-    shit(); fuck(); fuck(); shit();
-}
-
-/* Defines HLSL vertex shader "Prout" */
-
diff --git a/src/gpu/texture.cpp b/src/gpu/texture.cpp
deleted file mode 100644
index 09e285db..00000000
--- a/src/gpu/texture.cpp
+++ /dev/null
@@ -1,182 +0,0 @@
-//
-//  Lol Engine
-//
-//  Copyright © 2010—2017 Sam Hocevar <sam@hocevar.net>
-//
-//  Lol Engine is free software. It comes without any warranty, to
-//  the extent permitted by applicable law. You can redistribute it
-//  and/or modify it under the terms of the Do What the Fuck You Want
-//  to Public License, Version 2, as published by the WTFPL Task Force.
-//  See http://www.wtfpl.net/ for more details.
-//
-
-#include <lol/engine-internal.h>
-
-#include "lolgl.h"
-
-// FIXME: fine-tune this define
-#if defined LOL_USE_GLEW || defined HAVE_GL_2X || defined HAVE_GLES_2X
-
-namespace lol
-{
-
-//
-// The TextureData class
-// ---------------------
-//
-
-class TextureData
-{
-    friend class Texture;
-
-    ivec2 m_size;
-    PixelFormat m_format;
-
-    GLuint m_texture;
-    GLint m_internal_format;
-    GLenum m_gl_format, m_gl_type;
-    int m_bytes_per_elem;
-};
-
-//
-// The Texture class
-// -----------------
-//
-
-#define GET_CLAMPED(array, index) \
-    array[std::max(0, std::min((int)(index), \
-                   (int)sizeof(array) / (int)sizeof(*array)))]
-
-Texture::Texture(ivec2 size, PixelFormat format)
-  : m_data(new TextureData)
-{
-    m_data->m_size = size;
-    m_data->m_format = format;
-
-    static struct
-    {
-        GLint internal_format;
-        GLenum format, type;
-        int bytes;
-    }
-    const gl_formats[] =
-    {
-        { 0, 0, 0, 0 }, /* Unknown */
-
-        /* FIXME: this is all mixed up for the RGBA/ARGB combinations */
-#if defined HAVE_GLES_2X
-        { GL_LUMINANCE, GL_LUMINANCE, GL_UNSIGNED_BYTE, 1 },
-        { GL_RGB, GL_RGB, GL_UNSIGNED_BYTE, 3 },
-        { GL_RGBA, GL_RGBA, GL_UNSIGNED_BYTE, 4 },
-        /* FIXME: if GL_RGBA is not available, we should advertise
-         * this format as "not available" on this platform. */
-#else
-        { GL_R8, GL_RED, GL_UNSIGNED_BYTE, 1 }, /* A8 */
-        { GL_RGB8, GL_RGB, GL_UNSIGNED_BYTE, 3 }, /* RGB_8 */
-        /* Seems efficient for little endian textures */
-        { GL_RGBA8, GL_RGBA, GL_UNSIGNED_INT_8_8_8_8_REV, 4 }, /* ARGB_8 */
-#endif
-        { 0, 0, 0, 0 }, /* Y_F32 */
-        { 0, 0, 0, 0 }, /* RGB_F32 */
-        { 0, 0, 0, 0 }, /* RGBA_F32 */
-    };
-
-    m_data->m_internal_format = GET_CLAMPED(gl_formats, format).internal_format;
-    m_data->m_gl_format = GET_CLAMPED(gl_formats, format).format;
-    m_data->m_gl_type = GET_CLAMPED(gl_formats, format).type;
-    m_data->m_bytes_per_elem = GET_CLAMPED(gl_formats, format).bytes;
-
-    glGenTextures(1, &m_data->m_texture);
-    glBindTexture(GL_TEXTURE_2D, m_data->m_texture);
-
-    glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
-    glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
-}
-
-TextureUniform Texture::GetTextureUniform() const
-{
-    TextureUniform ret;
-    ret.m_flags = m_data->m_texture;
-    return ret;
-}
-
-void Texture::Bind()
-{
-    glBindTexture(GL_TEXTURE_2D, m_data->m_texture);
-}
-
-void Texture::SetData(void *data)
-{
-    glTexImage2D(GL_TEXTURE_2D, 0, m_data->m_internal_format,
-                 m_data->m_size.x, m_data->m_size.y, 0,
-                 m_data->m_gl_format, m_data->m_gl_type, data);
-}
-
-void Texture::SetSubData(ivec2 origin, ivec2 size, void *data)
-{
-    glTexSubImage2D(GL_TEXTURE_2D, 0, origin.x, origin.y, size.x, size.y,
-                    m_data->m_gl_format, m_data->m_gl_type, data);
-}
-
-void Texture::SetMagFiltering(TextureMagFilter filter)
-{
-    glBindTexture(GL_TEXTURE_2D, m_data->m_texture);
-    GLenum gl_filter;
-    switch (filter)
-    {
-        case TextureMagFilter::LINEAR_TEXEL:
-            gl_filter = GL_LINEAR;
-            break;
-        case TextureMagFilter::NEAREST_TEXEL:
-        default:
-            gl_filter = GL_NEAREST;
-            break;
-    }
-    glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, gl_filter);
-}
-
-void Texture::SetMinFiltering(TextureMinFilter filter)
-{
-    glBindTexture(GL_TEXTURE_2D, m_data->m_texture);
-    GLenum gl_filter;
-    switch (filter)
-    {
-        case TextureMinFilter::LINEAR_TEXEL_NO_MIPMAP:
-            gl_filter = GL_LINEAR;
-            break;
-        case TextureMinFilter::NEAREST_TEXEL_NEAREST_MIPMAP:
-            gl_filter = GL_NEAREST_MIPMAP_NEAREST;
-            break;
-        case TextureMinFilter::NEAREST_TEXEL_LINEAR_MIPMAP:
-            gl_filter = GL_NEAREST_MIPMAP_LINEAR;
-            break;
-        case TextureMinFilter::LINEAR_TEXEL_NEAREST_MIPMAP:
-            gl_filter = GL_LINEAR_MIPMAP_NEAREST;
-            break;
-        case TextureMinFilter::LINEAR_TEXEL_LINEAR_MIPMAP:
-            gl_filter = GL_LINEAR_MIPMAP_LINEAR;
-            break;
-        case TextureMinFilter::NEAREST_TEXEL_NO_MIPMAP:
-        default:
-            gl_filter = GL_NEAREST;
-            break;
-    }
-    glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, gl_filter);
-}
-
-void Texture::GenerateMipmaps()
-{
-    glBindTexture(GL_TEXTURE_2D, m_data->m_texture);
-    glGenerateMipmap(GL_TEXTURE_2D);
-}
-
-Texture::~Texture()
-{
-    glDeleteTextures(1, &m_data->m_texture);
-    delete m_data;
-}
-
-} /* namespace lol */
-
-#endif
-
diff --git a/src/gpu/tile.lolfx b/src/gpu/tile.lolfx
deleted file mode 100644
index dc1abd62..00000000
--- a/src/gpu/tile.lolfx
+++ /dev/null
@@ -1,41 +0,0 @@
-[vert.glsl]
-
-#version 130
-
-in vec3 in_Position;
-in vec2 in_TexCoord;
-out vec2 pass_texcoord;
-
-uniform mat4 u_projection;
-uniform mat4 u_view;
-uniform mat4 u_model;
-
-void main()
-{
-    gl_Position = u_projection * u_view * u_model
-                * vec4(in_Position, 1.0);
-    pass_texcoord = in_TexCoord;
-}
-
-[frag.glsl]
-
-#version 130
-
-#if defined GL_ES
-precision mediump float;
-#endif
-
-in vec2 pass_texcoord;
-out vec4 out_color;
-
-uniform sampler2D u_texture;
-uniform vec2 u_texsize;
-
-void main()
-{
-    vec4 col = texture2D(u_texture, pass_texcoord);
-    if (col.a == 0.0)
-        discard;
-    out_color = col;
-}
-
diff --git a/src/gpu/vertexbuffer.cpp b/src/gpu/vertexbuffer.cpp
deleted file mode 100644
index e50e35b5..00000000
--- a/src/gpu/vertexbuffer.cpp
+++ /dev/null
@@ -1,403 +0,0 @@
-//
-//  Lol Engine
-//
-//  Copyright © 2010—2019 Sam Hocevar <sam@hocevar.net>
-//
-//  Lol Engine is free software. It comes without any warranty, to
-//  the extent permitted by applicable law. You can redistribute it
-//  and/or modify it under the terms of the Do What the Fuck You Want
-//  to Public License, Version 2, as published by the WTFPL Task Force.
-//  See http://www.wtfpl.net/ for more details.
-//
-
-#include <lol/engine-internal.h>
-
-#include "lolgl.h"
-
-// FIXME: can we make this more generic?
-#if defined __EMSCRIPTEN__
-    #define glGenVertexArrays glGenVertexArraysOES
-    #define glBindVertexArray glBindVertexArrayOES
-    #define glDeleteVertexArrays glDeleteVertexArraysOES
-#endif
-
-// FIXME: fine-tune this define
-#if defined LOL_USE_GLEW || defined HAVE_GL_2X || defined HAVE_GLES_2X
-
-namespace lol
-{
-
-//
-// The VertexBufferData class
-// --------------------------
-//
-
-class VertexBufferData
-{
-    friend class VertexBuffer;
-    friend class VertexDeclaration;
-
-    size_t m_size;
-
-    GLuint m_vbo;
-    uint8_t *m_memory;
-};
-
-//
-// The VertexDeclaration class
-// ---------------------------
-//
-
-VertexStreamBase const VertexStreamBase::Empty;
-
-VertexDeclaration::VertexDeclaration(VertexStreamBase const &s1,
-                                     VertexStreamBase const &s2,
-                                     VertexStreamBase const &s3,
-                                     VertexStreamBase const &s4,
-                                     VertexStreamBase const &s5,
-                                     VertexStreamBase const &s6,
-                                     VertexStreamBase const &s7,
-                                     VertexStreamBase const &s8,
-                                     VertexStreamBase const &s9,
-                                     VertexStreamBase const &s10,
-                                     VertexStreamBase const &s11,
-                                     VertexStreamBase const &s12)
-  : m_count(0)
-{
-    if (&s1 != &VertexStreamBase::Empty) AddStream(s1);
-    if (&s2 != &VertexStreamBase::Empty) AddStream(s2);
-    if (&s3 != &VertexStreamBase::Empty) AddStream(s3);
-    if (&s4 != &VertexStreamBase::Empty) AddStream(s4);
-    if (&s5 != &VertexStreamBase::Empty) AddStream(s5);
-    if (&s6 != &VertexStreamBase::Empty) AddStream(s6);
-    if (&s7 != &VertexStreamBase::Empty) AddStream(s7);
-    if (&s8 != &VertexStreamBase::Empty) AddStream(s8);
-    if (&s9 != &VertexStreamBase::Empty) AddStream(s9);
-    if (&s10 != &VertexStreamBase::Empty) AddStream(s10);
-    if (&s11 != &VertexStreamBase::Empty) AddStream(s11);
-    if (&s12 != &VertexStreamBase::Empty) AddStream(s12);
-
-    glGenVertexArrays(1, &m_vao);
-}
-
-VertexDeclaration::~VertexDeclaration()
-{
-    glDeleteVertexArrays(1, &m_vao);
-}
-
-void VertexDeclaration::Bind()
-{
-    /* FIXME: Nothing to do? */
-    glBindVertexArray(m_vao);
-}
-
-void VertexDeclaration::DrawElements(MeshPrimitive type, int skip, int count)
-{
-    if (count <= 0)
-        return;
-
-    /* FIXME: this has nothing to do here! */
-    switch (type.ToScalar())
-    {
-    case MeshPrimitive::Triangles:
-        glDrawArrays(GL_TRIANGLES, skip, count);
-        break;
-    case MeshPrimitive::TriangleStrips:
-        glDrawArrays(GL_TRIANGLE_STRIP, skip, count);
-        break;
-    case MeshPrimitive::TriangleFans:
-        glDrawArrays(GL_TRIANGLE_FAN, skip, count);
-        break;
-    case MeshPrimitive::Points:
-        glDrawArrays(GL_POINTS, skip, count);
-        break;
-    case MeshPrimitive::Lines:
-        glDrawArrays(GL_LINES, skip, count);
-        break;
-    }
-}
-
-void VertexDeclaration::DrawIndexedElements(MeshPrimitive type, int count, const short* skip, short typeSize)
-{
-    if (count <= 0)
-        return;
-
-    uint32_t elementType = typeSize == 2 ? GL_UNSIGNED_SHORT : GL_UNSIGNED_INT;
-
-    /* FIXME: this has nothing to do here! */
-    switch (type.ToScalar())
-    {
-    case MeshPrimitive::Triangles:
-        glDrawElements(GL_TRIANGLES, count, elementType, skip);
-        break;
-    case MeshPrimitive::TriangleStrips:
-        glDrawElements(GL_TRIANGLE_STRIP, count, elementType, skip);
-        break;
-    case MeshPrimitive::TriangleFans:
-        glDrawElements(GL_TRIANGLE_FAN, count, elementType, skip);
-        break;
-    case MeshPrimitive::Points:
-        glDrawElements(GL_POINTS, count, elementType, skip);
-        break;
-    case MeshPrimitive::Lines:
-        glDrawElements(GL_LINES, count, elementType, skip);
-        break;
-    }
-}
-
-void VertexDeclaration::Unbind()
-{
-    for (int i = 0; i < m_count; i++)
-    {
-        if (m_streams[i].reg >= 0)
-        {
-            for (int j = i + 1; j < m_count; j++)
-                if (m_streams[j].reg == m_streams[i].reg)
-                    m_streams[j].reg = -1;
-
-            glDisableVertexAttribArray(m_streams[i].reg);
-        }
-    }
-    glBindBuffer(GL_ARRAY_BUFFER, 0);
-    glBindVertexArray(0);
-}
-
-void VertexDeclaration::SetStream(std::shared_ptr<VertexBuffer> vb,
-                                  ShaderAttrib attr1,
-                                  ShaderAttrib attr2,
-                                  ShaderAttrib attr3,
-                                  ShaderAttrib attr4,
-                                  ShaderAttrib attr5,
-                                  ShaderAttrib attr6,
-                                  ShaderAttrib attr7,
-                                  ShaderAttrib attr8,
-                                  ShaderAttrib attr9,
-                                  ShaderAttrib attr10,
-                                  ShaderAttrib attr11,
-                                  ShaderAttrib attr12)
-{
-    ShaderAttrib attribs[12] = { attr1, attr2, attr3, attr4, attr5, attr6,
-                           attr7, attr8, attr9, attr10, attr11, attr12 };
-
-    SetStream(vb, attribs);
-}
-
-void VertexDeclaration::SetStream(std::shared_ptr<VertexBuffer> vb, ShaderAttrib attribs[])
-{
-    if (!vb->m_data->m_size)
-        return;
-
-    glBindBuffer(GL_ARRAY_BUFFER, vb->m_data->m_vbo);
-
-    for (int n = 0; n < 12 && attribs[n].m_flags != (uint64_t)0 - 1; n++)
-    {
-        VertexUsage usage = VertexUsage((attribs[n].m_flags >> 16) & 0xffff);
-        uint32_t index = attribs[n].m_flags & 0xffff;
-        uint32_t reg = attribs[n].m_flags >> 32;
-
-        /* We need to parse the whole vertex declaration to retrieve
-         * the information. It sucks. */
-
-        int attr_index = 0;
-        /* First, find the stream index */
-        for (uint32_t usage_index = 0; attr_index < m_count; attr_index++)
-            if (m_streams[attr_index].usage == usage)
-                if (usage_index++ == index)
-                    break;
-
-        if (attr_index == m_count)
-        {
-            msg::error("stream #%d with usage %x not found in declaration\n",
-                       index, usage.ToScalar());
-            attr_index = 0;
-        }
-
-        /* Now compute the stride and offset up to this stream index */
-        int stride = 0, offset = 0;
-        for (int i = 0; i < m_count; i++)
-            if (m_streams[i].index == m_streams[attr_index].index)
-            {
-                stride += m_streams[i].size;
-                if (i < attr_index)
-                    offset += m_streams[i].size;
-            }
-
-        /* Remember the register used for this stream */
-        m_streams[attr_index].reg = reg;
-
-        /* Finally, we need to retrieve the type of the data */
-#if !defined GL_DOUBLE
-#   define GL_DOUBLE 0
-#endif
-        static struct { GLint size; GLenum type; } const tlut[] =
-        {
-            { 0, 0 },
-            { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, /* half */
-            { 1, GL_FLOAT }, { 2, GL_FLOAT }, { 3, GL_FLOAT },
-                { 4, GL_FLOAT }, /* float */
-            { 1, GL_DOUBLE }, { 2, GL_DOUBLE }, { 3, GL_DOUBLE },
-                { 4, GL_DOUBLE }, /* double */
-            { 1, GL_BYTE }, { 2, GL_BYTE }, { 3, GL_BYTE },
-                { 4, GL_BYTE }, /* int8_t */
-            { 1, GL_UNSIGNED_BYTE }, { 2, GL_UNSIGNED_BYTE },
-                { 3, GL_UNSIGNED_BYTE }, { 4, GL_UNSIGNED_BYTE }, /* uint8_t */
-            { 1, GL_SHORT }, { 2, GL_SHORT }, { 3, GL_SHORT },
-                { 4, GL_SHORT }, /* int16_t */
-            { 1, GL_UNSIGNED_SHORT }, { 2, GL_UNSIGNED_SHORT }, { 3,
-                GL_UNSIGNED_SHORT }, { 4, GL_UNSIGNED_SHORT }, /* uint16_t */
-            { 1, GL_INT }, { 2, GL_INT }, { 3, GL_INT },
-                { 4, GL_INT }, /* int32_t */
-            { 1, GL_UNSIGNED_INT }, { 2, GL_UNSIGNED_INT },
-                { 3, GL_UNSIGNED_INT }, { 4, GL_UNSIGNED_INT }, /* uint32_t */
-        };
-
-        int type_index = m_streams[attr_index].stream_type;
-        if (type_index < 0 || type_index >= (int)(sizeof(tlut) / sizeof(*tlut)))
-            type_index = 0;
-
-        if (reg != 0xffffffffu)
-        {
-            glEnableVertexAttribArray((GLint)reg);
-            if (tlut[type_index].type == GL_FLOAT
-                 || tlut[type_index].type == GL_DOUBLE
-                 || tlut[type_index].type == GL_BYTE
-                 || tlut[type_index].type == GL_UNSIGNED_BYTE
-#if defined LOL_USE_GLEW && defined glVertexAttribIPointer && !defined __APPLE__
-                 /* If this is not available, don't use it */
-                 || !glVertexAttribIPointer
-#endif
-                 || false)
-            {
-                /* Normalize unsigned bytes by default, because it's usually
-                 * some color information. */
-                GLboolean normalize = (tlut[type_index].type == GL_UNSIGNED_BYTE)
-                                   || (tlut[type_index].type == GL_BYTE);
-                glVertexAttribPointer((GLint)reg, tlut[type_index].size,
-                                      tlut[type_index].type, normalize,
-                                      stride, (GLvoid const *)(uintptr_t)offset);
-            }
-#if defined GL_VERSION_3_0 && !(defined LOL_USE_GLEW && !defined glVertexAttribIPointer)
-            else
-            {
-                glVertexAttribIPointer((GLint)reg, tlut[type_index].size,
-                                       tlut[type_index].type,
-                                       stride, (GLvoid const *)(uintptr_t)offset);
-            }
-#endif
-        }
-    }
-}
-
-void VertexDeclaration::AddStream(VertexStreamBase const &s)
-{
-    int index = m_count ? m_streams[m_count - 1].index + 1 : 0;
-
-    for (int i = 0; s.m_streams[i].size; i++)
-    {
-        m_streams[m_count].stream_type = s.m_streams[i].stream_type;
-        m_streams[m_count].usage = s.m_streams[i].usage;
-        m_streams[m_count].size = s.m_streams[i].size;
-        m_streams[m_count].index = index;
-        m_streams[m_count].reg = -1;
-        m_count++;
-    }
-}
-
-int VertexDeclaration::GetStreamCount() const
-{
-    return m_count ? m_streams[m_count - 1].index + 1 : 0;
-}
-
-VertexStreamBase VertexDeclaration::GetStream(int index) const
-{
-    VertexStreamBase stream;
-    int n = 0;
-    int count = 0;
-
-    for (int i = 0; i < m_count; ++i)
-    {
-        if (m_streams[i].index != index)
-            continue;
-
-        switch (m_streams[i].stream_type)
-        {
-#define __T(T) \
-            case VertexStreamBase::Type##T: stream.AddStream<T>(n++, m_streams[i].usage); break;
-
-            __T(void)
-            __T(half)     __T(f16vec2) __T(f16vec3) __T(f16vec4)
-            __T(float)    __T(vec2)    __T(vec3)    __T(vec4)
-            __T(double)   __T(dvec2)   __T(dvec3)   __T(dvec4)
-            __T(int8_t)   __T(i8vec2)  __T(i8vec3)  __T(i8vec4)
-            __T(uint8_t)  __T(u8vec2)  __T(u8vec3)  __T(u8vec4)
-            __T(int16_t)  __T(i16vec2) __T(i16vec3) __T(i16vec4)
-            __T(uint16_t) __T(u16vec2) __T(u16vec3) __T(u16vec4)
-            __T(int32_t)  __T(ivec2)   __T(ivec3)   __T(ivec4)
-            __T(uint32_t) __T(uvec2)   __T(uvec3)   __T(uvec4)
-#undef __T
-        }
-        ++count;
-    }
-
-    while (count < 12)
-        stream.AddStream<void>(count++, VertexUsage::Position);
-
-    return stream;
-}
-
-//
-// The VertexBuffer class
-// ----------------------
-//
-
-VertexBuffer::VertexBuffer(size_t size)
-  : m_data(new VertexBufferData)
-{
-    m_data->m_size = size;
-    if (!size)
-        return;
-
-    glGenBuffers(1, &m_data->m_vbo);
-    m_data->m_memory = new uint8_t[size];
-}
-
-VertexBuffer::~VertexBuffer()
-{
-    if (m_data->m_size)
-    {
-        glDeleteBuffers(1, &m_data->m_vbo);
-        delete[] m_data->m_memory;
-    }
-    delete m_data;
-}
-
-size_t VertexBuffer::size()
-{
-    return m_data->m_size;
-}
-
-void *VertexBuffer::lock(size_t offset, size_t size)
-{
-    if (!m_data->m_size)
-        return nullptr;
-
-    /* FIXME: is there a way to use "size"? */
-    UNUSED(size);
-    return m_data->m_memory + offset;
-}
-
-void VertexBuffer::unlock()
-{
-    if (!m_data->m_size)
-        return;
-
-    glBindBuffer(GL_ARRAY_BUFFER, m_data->m_vbo);
-    glBufferData(GL_ARRAY_BUFFER, m_data->m_size, m_data->m_memory,
-                 GL_STATIC_DRAW);
-    glBindBuffer(GL_ARRAY_BUFFER, 0);
-}
-
-} /* namespace lol */
-
-#endif
-
diff --git a/src/gradient.cpp b/src/gradient.cpp
deleted file mode 100644
index 488045b8..00000000
--- a/src/gradient.cpp
+++ /dev/null
@@ -1,118 +0,0 @@
-//
-//  Lol Engine
-//
-//  Copyright © 2010—2019 Sam Hocevar <sam@hocevar.net>
-//
-//  Lol Engine is free software. It comes without any warranty, to
-//  the extent permitted by applicable law. You can redistribute it
-//  and/or modify it under the terms of the Do What the Fuck You Want
-//  to Public License, Version 2, as published by the WTFPL Task Force.
-//  See http://www.wtfpl.net/ for more details.
-//
-
-#include <lol/engine-internal.h>
-
-#include <memory>
-
-LOLFX_RESOURCE_DECLARE(gradient);
-
-namespace lol
-{
-
-/*
- * Gradient implementation class
- */
-
-class GradientData
-{
-    friend class Gradient;
-
-private:
-    std::shared_ptr<Shader> shader;
-    std::shared_ptr<VertexDeclaration> m_vdecl;
-    std::shared_ptr<VertexBuffer> m_vbo, m_cbo;
-};
-
-/*
- * Public Gradient class
- */
-
-Gradient::Gradient(vec3 aa, vec3 bb)
-  : data(std::make_unique<GradientData>())
-{
-    /* FIXME: this should not be hardcoded */
-    m_position = aa;
-    m_aabb.aa = aa;
-    m_aabb.bb = bb;
-}
-
-void Gradient::tick_game(float seconds)
-{
-    entity::tick_game(seconds);
-}
-
-void Gradient::tick_draw(float seconds, Scene &scene)
-{
-    entity::tick_draw(seconds, scene);
-
-    float const vertex[] = { m_aabb.aa.x, m_aabb.aa.y, 0.0f,
-                             m_aabb.bb.x, m_aabb.aa.y, 0.0f,
-                             m_aabb.aa.x, m_aabb.bb.y, 0.0f,
-                             m_aabb.bb.x, m_aabb.bb.y, 0.0f,
-                             m_aabb.aa.x, m_aabb.bb.y, 0.0f,
-                             m_aabb.bb.x, m_aabb.aa.y, 0.0f, };
-
-    float const color[] = { 0.73f, 0.85f, 0.85f, 1.0f,
-                            0.73f, 0.85f, 0.85f, 1.0f,
-                            0.0f, 0.0f, 1.0f, 1.0f,
-                            0.0f, 0.0f, 1.0f, 1.0f,
-                            0.0f, 0.0f, 1.0f, 1.0f,
-                            0.73f, 0.85f, 0.85f, 1.0f, };
-
-    if (!data->shader)
-    {
-        data->shader = Shader::Create(LOLFX_RESOURCE_NAME(gradient));
-
-        data->m_vbo = std::make_shared<VertexBuffer>(sizeof(vertex));
-        data->m_cbo = std::make_shared<VertexBuffer>(sizeof(color));
-
-        data->m_vdecl = std::make_shared<VertexDeclaration>
-                            (VertexStream<vec3>(VertexUsage::Position),
-                             VertexStream<vec4>(VertexUsage::Color));
-    }
-
-    mat4 model_matrix = mat4(1.0f);
-
-    ShaderUniform uni_mat;
-    ShaderAttrib attr_pos, attr_col;
-    attr_pos = data->shader->GetAttribLocation(VertexUsage::Position, 0);
-    attr_col = data->shader->GetAttribLocation(VertexUsage::Color, 0);
-
-    data->shader->Bind();
-
-    uni_mat = data->shader->GetUniformLocation("u_projection");
-    uni_mat = data->shader->GetUniformLocation("u_view");
-    uni_mat = data->shader->GetUniformLocation("u_model");
-    data->shader->SetUniform(uni_mat, scene.GetCamera()->GetProjection());
-    data->shader->SetUniform(uni_mat, scene.GetCamera()->GetView());
-    data->shader->SetUniform(uni_mat, model_matrix);
-
-    data->shader->Bind();
-    data->m_vdecl->Bind();
-
-    data->m_vbo->set_data(vertex, sizeof(vertex));
-    data->m_cbo->set_data(color, sizeof(color));
-
-    /* Bind vertex and color buffers */
-    data->m_vdecl->SetStream(data->m_vbo, attr_pos);
-    data->m_vdecl->SetStream(data->m_cbo, attr_col);
-
-    /* Draw arrays */
-    data->m_vdecl->DrawElements(MeshPrimitive::Triangles, 0, 6);
-}
-
-Gradient::~Gradient()
-{
-}
-
-} /* namespace lol */
diff --git a/src/gradient.h b/src/gradient.h
deleted file mode 100644
index 054dfa2a..00000000
--- a/src/gradient.h
+++ /dev/null
@@ -1,46 +0,0 @@
-//
-//  Lol Engine
-//
-//  Copyright © 2010—2019 Sam Hocevar <sam@hocevar.net>
-//
-//  Lol Engine is free software. It comes without any warranty, to
-//  the extent permitted by applicable law. You can redistribute it
-//  and/or modify it under the terms of the Do What the Fuck You Want
-//  to Public License, Version 2, as published by the WTFPL Task Force.
-//  See http://www.wtfpl.net/ for more details.
-//
-
-#pragma once
-
-//
-// The Gradient class
-// ------------------
-//
-
-#include "engine/worldentity.h"
-
-#include <memory>
-
-namespace lol
-{
-
-class GradientData;
-
-class Gradient : public WorldEntity
-{
-public:
-    Gradient(vec3 aa, vec3 bb);
-    virtual ~Gradient();
-
-    std::string GetName() const { return "<gradient>"; }
-
-protected:
-    virtual void tick_game(float seconds);
-    virtual void tick_draw(float seconds, Scene &scene);
-
-private:
-    std::unique_ptr<GradientData> data;
-};
-
-} /* namespace lol */
-
diff --git a/src/gradient.lolfx b/src/gradient.lolfx
deleted file mode 100644
index 14e29fc9..00000000
--- a/src/gradient.lolfx
+++ /dev/null
@@ -1,80 +0,0 @@
-[vert.glsl]
-
-#version 130
-
-in vec3 in_position;
-in vec4 in_color;
-
-uniform mat4 u_projection;
-uniform mat4 u_view;
-uniform mat4 u_model;
-
-out vec4 pass_color;
-
-void main()
-{
-    gl_Position = u_projection * u_view * u_model
-                * vec4(in_position, 1.0);
-    pass_color = in_color;
-}
-
-[frag.glsl]
-
-#version 130
-
-#if defined GL_ES
-precision highp float;
-#endif
-
-in vec4 pass_color;
-
-mat4 bayer = mat4( 0.0, 12.0,  3.0, 15.0,
-                   8.0,  4.0, 11.0,  7.0,
-                   2.0, 14.0,  1.0, 13.0,
-                  10.0,  6.0,  9.0,  5.0);
-
-mat4 cluster = mat4(12.0,  5.0,  6.0, 13.0,
-                     4.0,  0.0,  1.0,  7.0,
-                    11.0,  3.0,  2.0,  8.0,
-                    15.0, 10.0,  9.0, 14.0);
-
-float rand(vec2 p)
-{
-    return fract(sin(dot(p, vec2(12.9898, 78.2333))) * 123.4567);
-}
-
-void main()
-{
-    vec4 col = pass_color;
-#if defined GL_ES
-    int dx = int(mod(gl_FragCoord.x, 4.0));
-    int dy = int(mod(gl_FragCoord.y, 4.0));
-    float t;
-    if (dx == 0)
-    {
-        if (dy == 0) t = cluster[0][0]; else if (dy == 1) t = cluster[0][1]; else if (dy == 2) t = cluster[0][2]; else t = cluster[0][3];
-    }
-    else if (dx == 1)
-    {
-        if (dy == 0) t = cluster[1][0]; else if (dy == 1) t = cluster[1][1]; else if (dy == 2) t = cluster[1][2]; else t = cluster[1][3];
-    }
-    else if (dx == 2)
-    {
-        if (dy == 0) t = cluster[2][0]; else if (dy == 1) t = cluster[2][1]; else if (dy == 2) t = cluster[2][2]; else t = cluster[2][3];
-    }
-    else
-    {
-        if (dy == 0) t = cluster[3][0]; else if (dy == 1) t = cluster[3][1]; else if (dy == 2) t = cluster[3][2]; else t = cluster[3][3];
-    }
-#else
-    float t = cluster[int(mod(gl_FragCoord.x, 4.0))]
-                     [int(mod(gl_FragCoord.y, 4.0))];
-#endif
-    t += rand(gl_FragCoord.xy) - 0.5;
-    t = (t + 0.5) / 17.0;
-    col.x += fract(t - col.x) - t;
-    col.y += fract(t - col.y) - t;
-    col.z += fract(t - col.z) - t;
-    gl_FragColor = col;
-}
-
diff --git a/src/image/codec/android-image.cpp b/src/image/codec/android-image.cpp
deleted file mode 100644
index 2ef3efc5..00000000
--- a/src/image/codec/android-image.cpp
+++ /dev/null
@@ -1,157 +0,0 @@
-//
-//  Lol Engine
-//
-//  Copyright © 2010—2018 Sam Hocevar <sam@hocevar.net>
-//
-//  Lol Engine is free software. It comes without any warranty, to
-//  the extent permitted by applicable law. You can redistribute it
-//  and/or modify it under the terms of the Do What the Fuck You Want
-//  to Public License, Version 2, as published by the WTFPL Task Force.
-//  See http://www.wtfpl.net/ for more details.
-//
-
-#include <lol/engine-internal.h>
-
-#if defined __ANDROID__
-
-#include <string>
-
-#include <jni.h>
-#include <android/log.h>
-
-extern "C" {
-#include <android_native_app_glue.h>
-}
-
-#include "../../image/resource-private.h"
-
-namespace lol
-{
-
-extern ANativeActivity *g_activity;
-
-/*
- * Image implementation class
- */
-
-class AndroidImageCodec : public ResourceCodec
-{
-public:
-    virtual std::string GetName() { return "<AndroidImageCodec>"; }
-    virtual ResourceCodecData* Load(std::string const &path);
-    virtual bool Save(std::string const &path, ResourceCodecData* data);
-    virtual bool Close();
-
-    virtual uint8_t *GetData() const;
-
-private:
-    jobject m_bmp;
-    jintArray m_array;
-    jint *m_pixels;
-};
-
-DECLARE_IMAGE_CODEC(AndroidImageCodec, 100)
-
-ResourceCodecData* AndroidImageCodec::Load(std::string const &path)
-{
-    JNIEnv *env;
-    jint res = g_activity->vm->GetEnv((void **)&env, JNI_VERSION_1_2);
-    if (res < 0)
-    {
-#if !LOL_BUILD_RELEASE
-        msg::error("JVM environment not found, trying to attach thread\n");
-#endif
-        res = g_activity->vm->AttachCurrentThread(&env, nullptr);
-    }
-    if (res < 0)
-    {
-#if !LOL_BUILD_RELEASE
-        msg::error("JVM environment not found, cannot open image %s\n", path.c_str());
-#endif
-        return nullptr;
-    }
-    jclass cls = env->GetObjectClass(g_activity->clazz);
-    jmethodID mid;
-
-    mid = env->GetMethodID(cls, "openImage",
-                           "(Ljava/lang/String;)Landroid/graphics/Bitmap;");
-    jstring name = env->NewStringUTF(path.c_str());
-    m_bmp = env->CallObjectMethod(g_activity->clazz, mid, name);
-    env->DeleteLocalRef(name);
-    if (!m_bmp)
-    {
-#if !LOL_BUILD_RELEASE
-        msg::error("could not load %s\n", path.c_str());
-#endif
-        return nullptr;
-    }
-    env->NewGlobalRef(m_bmp);
-
-    // Get image dimensions
-    mid = env->GetMethodID(cls, "getWidth", "(Landroid/graphics/Bitmap;)I");
-    int width = env->CallIntMethod(g_activity->clazz, mid, m_bmp);
-    mid = env->GetMethodID(cls, "getHeight", "(Landroid/graphics/Bitmap;)I");
-    int height = env->CallIntMethod(g_activity->clazz, mid, m_bmp);
-    ivec2 size(width, height);
-
-    auto data = new ResourceImageData(new image(size));
-
-    // Get pixels
-    m_array = env->NewIntArray(size.x * size.y);
-    env->NewGlobalRef(m_array);
-    mid = env->GetMethodID(cls, "getPixels", "(Landroid/graphics/Bitmap;[I)V");
-    env->CallVoidMethod(g_activity->clazz, mid, m_bmp, m_array);
-
-    m_pixels = env->GetIntArrayElements(m_array, 0);
-    for (int n = 0; n < size.x * size.y; n++)
-    {
-        uint32_t u = m_pixels[n];
-        u = (u & 0xff00ff00) | ((u & 0xff0000) >> 16) | ((u & 0xff) << 16);
-        m_pixels[n] = u;
-    }
-
-    return data;
-}
-
-bool AndroidImageCodec::Save(std::string const &path, ResourceCodecData* data)
-{
-    UNUSED(path, data);
-
-    /* TODO: unimplemented */
-    return false;
-}
-
-bool AndroidImageCodec::Close()
-{
-    JNIEnv *env;
-    jint res = g_activity->vm->GetEnv((void **)&env, JNI_VERSION_1_2);
-    if (res < 0)
-    {
-#if !LOL_BUILD_RELEASE
-        msg::error("JVM environment not found, cannot close image\n");
-#endif
-        return false;
-    }
-    jclass cls = env->GetObjectClass(g_activity->clazz);
-    jmethodID mid;
-
-    env->ReleaseIntArrayElements(m_array, m_pixels, 0);
-    env->DeleteGlobalRef(m_array);
-
-    /* Free image */
-    mid = env->GetMethodID(cls, "closeImage", "(Landroid/graphics/Bitmap;)V");
-    env->CallVoidMethod(g_activity->clazz, mid, m_bmp);
-    env->DeleteGlobalRef(m_bmp);
-
-    return true;
-}
-
-uint8_t *AndroidImageCodec::GetData() const
-{
-    return (uint8_t *)m_pixels;
-}
-
-} /* namespace lol */
-
-#endif /* __ANDROID__ */
-
diff --git a/src/image/codec/dummy-image.cpp b/src/image/codec/dummy-image.cpp
deleted file mode 100644
index 7885b390..00000000
--- a/src/image/codec/dummy-image.cpp
+++ /dev/null
@@ -1,71 +0,0 @@
-//
-//  Lol Engine
-//
-//  Copyright © 2010—2018 Sam Hocevar <sam@hocevar.net>
-//
-//  Lol Engine is free software. It comes without any warranty, to
-//  the extent permitted by applicable law. You can redistribute it
-//  and/or modify it under the terms of the Do What the Fuck You Want
-//  to Public License, Version 2, as published by the WTFPL Task Force.
-//  See http://www.wtfpl.net/ for more details.
-//
-
-#include <lol/engine-internal.h>
-
-#include <string>
-
-#include "../../image/resource-private.h"
-
-namespace lol
-{
-
-/*
- * Image implementation class
- */
-
-class DummyImageCodec : public ResourceCodec
-{
-public:
-    virtual std::string GetName() { return "<DummyImageCodec>"; }
-    virtual ResourceCodecData* Load(std::string const &path);
-    virtual bool Save(std::string const &path, ResourceCodecData* data);
-};
-
-//Priority 0 because it's supposed to be the last one
-DECLARE_IMAGE_CODEC(DummyImageCodec, 0)
-
-/*
- * Public Image class
- */
-
-ResourceCodecData* DummyImageCodec::Load(std::string const &path)
-{
-    if (path == "DUMMY")
-        return nullptr;
-
-    auto data = new ResourceImageData(new image(ivec2(256)));
-    auto image = data->m_image;
-    u8vec4 *pixels = image->lock<PixelFormat::RGBA_8>(), *tmp = pixels;
-    for (int j = 0; j < 256; j++)
-        for (int i = 0; i < 256; i++)
-        {
-            tmp->r = ((i ^ j) & 1) * 0xff;
-            tmp->g = (uint8_t)i;
-            tmp->b = (uint8_t)j;
-            tmp->a = (((i >> 4) ^ (j >> 4)) & 1) * 0xff;
-            ++tmp;
-        }
-    image->unlock(pixels);
-
-    return data;
-}
-
-bool DummyImageCodec::Save(std::string const &path, ResourceCodecData* data)
-{
-    UNUSED(path, data);
-
-    return false;
-}
-
-} /* namespace lol */
-
diff --git a/src/image/codec/gdiplus-image.cpp b/src/image/codec/gdiplus-image.cpp
deleted file mode 100644
index 0d9862ef..00000000
--- a/src/image/codec/gdiplus-image.cpp
+++ /dev/null
@@ -1,231 +0,0 @@
-//
-//  Lol Engine
-//
-//  Copyright © 2010—2018 Sam Hocevar <sam@hocevar.net>
-//
-//  Lol Engine is free software. It comes without any warranty, to
-//  the extent permitted by applicable law. You can redistribute it
-//  and/or modify it under the terms of the Do What the Fuck You Want
-//  to Public License, Version 2, as published by the WTFPL Task Force.
-//  See http://www.wtfpl.net/ for more details.
-//
-
-#include <lol/engine-internal.h>
-
-#if LOL_USE_GDIPLUS
-#   include <string>
-#   include <algorithm>
-using std::min;
-using std::max;
-#   define WIN32_LEAN_AND_MEAN 1
-#   include <windows.h>
-#   undef NEAR // avoids errors in <objidl.h>
-#   undef FAR
-#   define NEAR
-#   define FAR
-#   include <objidl.h> // for DEFINE_GUID
-#   include <gdiplus.h>
-
-#include "../../image/resource-private.h"
-
-namespace lol
-{
-
-/*
- * Image implementation class
- */
-
-class GdiPlusImageCodec : public ResourceCodec
-{
-public:
-    virtual std::string GetName() { return "<GdiPlusImageCodec>"; }
-    virtual ResourceCodecData* Load(std::string const &path);
-    virtual bool Save(std::string const &path, ResourceCodecData* data);
-};
-
-DECLARE_IMAGE_CODEC(GdiPlusImageCodec, 100)
-
-/*
- * Public Image class
- */
-
-ResourceCodecData* GdiPlusImageCodec::Load(std::string const &path)
-{
-    Gdiplus::Status status;
-    ULONG_PTR token;
-    Gdiplus::GdiplusStartupInput input;
-    status = Gdiplus::GdiplusStartup(&token, &input, nullptr);
-    if (status != Gdiplus::Ok)
-    {
-        msg::error("error %d while initialising GDI+\n", status);
-        return nullptr;
-    }
-
-    array<std::string> pathlist = sys::get_path_list(path);
-    Gdiplus::Bitmap *bitmap = nullptr;
-    for (auto const &fullpath : pathlist)
-    {
-        size_t len;
-        len = mbstowcs(nullptr, fullpath.c_str(), 0);
-        wchar_t *wpath = new wchar_t[len + 1];
-        if (mbstowcs(wpath, fullpath.c_str(), len + 1) == (size_t)-1)
-        {
-            msg::error("invalid image name %s\n", fullpath.c_str());
-            delete[] wpath;
-            continue;
-        }
-
-        status = Gdiplus::Ok;
-        bitmap = Gdiplus::Bitmap::FromFile(wpath, 0);
-
-        if (bitmap)
-        {
-            status = bitmap->GetLastStatus();
-            if (status != Gdiplus::Ok)
-            {
-                if (status != Gdiplus::InvalidParameter)
-                    msg::error("error %d loading %s\n",
-                               status, fullpath.c_str());
-                delete bitmap;
-                bitmap = nullptr;
-            }
-        }
-
-        delete[] wpath;
-        if (bitmap)
-            break;
-    }
-
-    if (!bitmap)
-    {
-        msg::error("could not load %s\n", path.c_str());
-        return nullptr;
-    }
-
-    ivec2 size(bitmap->GetWidth(), bitmap->GetHeight());
-    Gdiplus::Rect rect(0, 0, size.x, size.y);
-    Gdiplus::BitmapData bdata;
-    if (bitmap->LockBits(&rect, Gdiplus::ImageLockModeRead,
-                           PixelFormat32bppARGB, &bdata) != Gdiplus::Ok)
-    {
-        msg::error("could not lock bits in %s\n", path.c_str());
-        delete bitmap;
-        return nullptr;
-    }
-
-    /* FIXME: GDI+ doesn't know about RGBA, only ARGB. And OpenGL doesn't
-     * know about ARGB, only RGBA. So we swap bytes. We could also fix
-     * this in the shader. */
-    auto data = new ResourceImageData(new image(ivec2(size)));
-    auto image = data->m_image;
-    u8vec4 *pdst = image->lock<PixelFormat::RGBA_8>();
-    u8vec4 *psrc = static_cast<u8vec4 *>(bdata.Scan0);
-    for (int n = 0; n < size.x * size.y; n++)
-        pdst[n] = psrc[n].bgra;
-    image->unlock(pdst);
-
-    bitmap->UnlockBits(&bdata);
-    delete bitmap;
-
-    return data;
-}
-
-bool GdiPlusImageCodec::Save(std::string const &path, ResourceCodecData* data)
-{
-    auto data_image = dynamic_cast<ResourceImageData*>(data);
-    if (data_image == nullptr)
-        return false;
-
-    ULONG_PTR token;
-    Gdiplus::GdiplusStartupInput input;
-    Gdiplus::GdiplusStartup(&token, &input, nullptr);
-
-    wchar_t const *fmt;
-    if (ends_with(path, ".gif"))
-        fmt = L"image/gif";
-    else if (ends_with(path, ".jpg") || ends_with(path, ".jpeg"))
-        fmt = L"image/jpeg";
-    else if (ends_with(path, ".png"))
-        fmt = L"image/png";
-    else if (ends_with(path, ".tiff"))
-        fmt = L"image/tiff";
-    else /* if (ends_with(path, ".bmp")) */
-        fmt = L"image/bmp";
-
-    unsigned int num = 0, encoder_size = 0;
-    Gdiplus::GetImageEncodersSize(&num, &encoder_size);
-    if (num == 0)
-    {
-        msg::error("no GDI+ image encoders found\n");
-        return false;
-    }
-    Gdiplus::ImageCodecInfo *codecs
-        = (Gdiplus::ImageCodecInfo *)new uint8_t[encoder_size];
-    Gdiplus::GetImageEncoders(num, encoder_size, codecs);
-    CLSID clsid;
-    for (unsigned int i = 0; i < num; i++)
-    {
-        if (wcscmp(codecs[i].MimeType, fmt) == 0)
-        {
-            clsid = codecs[i].Clsid;
-            break;
-        }
-    }
-
-    size_t len;
-    len = mbstowcs(nullptr, path.c_str(), 0);
-    wchar_t *wpath = new wchar_t[len + 1];
-    if (mbstowcs(wpath, path.c_str(), len + 1) == (size_t)-1)
-    {
-        msg::error("could not convert GDI+ filename '%s' to widechar\n", path.c_str());
-        delete[] wpath;
-        delete[] codecs;
-        return false;
-    }
-
-    auto image = data_image->m_image;
-    ivec2 size = image->size();
-
-    Gdiplus::Bitmap *b = new Gdiplus::Bitmap(size.x, size.y,
-                                             PixelFormat32bppARGB);
-    Gdiplus::BitmapData bdata;
-    Gdiplus::Rect rect(0, 0, size.x, size.y);
-
-    if (b->LockBits(&rect, (unsigned int)Gdiplus::ImageLockModeWrite,
-                    PixelFormat32bppARGB, &bdata) != Gdiplus::Ok)
-    {
-        msg::error("could not lock GDI+ image bits\n");
-        delete b;
-        delete[] wpath;
-        delete[] codecs;
-        return false;
-    }
-
-    u8vec4 *psrc = image->lock<PixelFormat::RGBA_8>();
-    u8vec4 *psrc0 = psrc;
-    u8vec4 *pdst = static_cast<u8vec4 *>(bdata.Scan0);
-    for (int y = 0; y < size.y; y++)
-        for (int x = 0; x < size.x; x++)
-            *pdst++ = (*psrc++).bgra;
-    image->unlock(psrc0);
-    b->UnlockBits(&bdata);
-
-    if (b->Save(wpath, &clsid, nullptr) != Gdiplus::Ok)
-    {
-        msg::error("could not save GDI+ image '%s'\n", path.c_str());
-        delete[] wpath;
-        delete[] codecs;
-        delete b;
-        return false;
-    }
-    delete[] wpath;
-    delete[] codecs;
-    delete b;
-
-    return true;
-}
-
-} /* namespace lol */
-
-#endif /* defined LOL_USE_GDIPLUS */
-
diff --git a/src/image/codec/imlib2-image.cpp b/src/image/codec/imlib2-image.cpp
deleted file mode 100644
index 437cd490..00000000
--- a/src/image/codec/imlib2-image.cpp
+++ /dev/null
@@ -1,134 +0,0 @@
-//
-//  Lol Engine
-//
-//  Copyright © 2010—2018 Sam Hocevar <sam@hocevar.net>
-//
-//  Lol Engine is free software. It comes without any warranty, to
-//  the extent permitted by applicable law. You can redistribute it
-//  and/or modify it under the terms of the Do What the Fuck You Want
-//  to Public License, Version 2, as published by the WTFPL Task Force.
-//  See http://www.wtfpl.net/ for more details.
-//
-
-#include <lol/engine-internal.h>
-
-#if defined LOL_USE_IMLIB2
-
-#include <string>
-
-#include <Imlib2.h>
-
-/* Check that the Imlib2 types are safe */
-static_assert(sizeof(DATA64) == sizeof(uint64_t), "Imlib2 type DATA64 is broken");
-static_assert(sizeof(DATA32) == sizeof(uint32_t), "Imlib2 type DATA32 is broken");
-static_assert(sizeof(DATA16) == sizeof(uint16_t), "Imlib2 type DATA16 is broken");
-static_assert(sizeof(DATA8)  == sizeof(uint8_t),  "Imlib2 type DATA8 is broken");
-
-#include "../../image/resource-private.h"
-
-namespace lol
-{
-
-/*
- * Imlib2 image codec
- */
-
-class Imlib2ImageCodec : public ResourceCodec
-{
-public:
-    virtual std::string GetName() { return "<Imlib2ImageCodec>"; }
-    virtual ResourceCodecData* Load(std::string const &path);
-    virtual bool Save(std::string const &path, ResourceCodecData* data);
-};
-
-/* Set priority higher than SDL because we can save in many formats. */
-DECLARE_IMAGE_CODEC(Imlib2ImageCodec, 70)
-
-ResourceCodecData *Imlib2ImageCodec::Load(std::string const &path)
-{
-    Imlib_Image im = nullptr;
-
-    for (auto const &candidate : sys::get_path_list(path))
-    {
-        im = imlib_load_image(candidate.c_str());
-        if (im)
-            break;
-    }
-
-    if (!im)
-    {
-#if !LOL_BUILD_RELEASE
-        msg::error("could not load image %s\n", path.c_str());
-#endif
-        return nullptr;
-    }
-
-    imlib_context_set_image(im);
-    u8vec4 const *srcdata = (u8vec4 *)imlib_image_get_data_for_reading_only();
-
-    if (!srcdata)
-    {
-        imlib_free_image();
-#if !LOL_BUILD_RELEASE
-        msg::error("could not get image data for %s\n", path.c_str());
-#endif
-        return nullptr;
-    }
-
-    ivec2 size(imlib_image_get_width(), imlib_image_get_height());
-    auto data = new ResourceImageData(new image(size));
-    auto image = data->m_image;
-
-    u8vec4 *dstdata = image->lock<PixelFormat::RGBA_8>();
-
-    for (int i = 0; i < size.x * size.y; i++)
-    {
-        if (is_big_endian())
-            dstdata[i] = srcdata[i].argb;
-        else
-            dstdata[i] = srcdata[i].bgra;
-    }
-    image->unlock(dstdata);
-
-    imlib_free_image();
-
-    return data;
-}
-
-bool Imlib2ImageCodec::Save(std::string const &path, ResourceCodecData *data)
-{
-    auto data_image = dynamic_cast<ResourceImageData*>(data);
-    if (data_image == nullptr)
-        return false;
-
-    auto image = data_image->m_image;
-    ivec2 size = image->size();
-    Imlib_Image priv = imlib_create_image(size.x, size.y);
-
-    imlib_context_set_image(priv);
-    imlib_image_set_has_alpha(1);
-
-    u8vec4 const *srcdata = image->lock<PixelFormat::RGBA_8>();
-    u8vec4 *dstdata = (u8vec4 *)imlib_image_get_data();
-
-    for (int i = 0; i < size.x * size.y; i++)
-    {
-        if (is_big_endian())
-            dstdata[i] = srcdata[i].argb;
-        else
-            dstdata[i] = srcdata[i].bgra;
-    }
-
-    imlib_image_put_back_data((DATA32 *)dstdata);
-    image->unlock(srcdata);
-
-    imlib_save_image(path.c_str());
-    imlib_free_image();
-
-    return true;
-}
-
-} /* namespace lol */
-
-#endif /* defined LOL_USE_IMLIB2 */
-
diff --git a/src/image/codec/ios-image.cpp b/src/image/codec/ios-image.cpp
deleted file mode 100644
index 18d3b6a2..00000000
--- a/src/image/codec/ios-image.cpp
+++ /dev/null
@@ -1,106 +0,0 @@
-//
-//  Lol Engine
-//
-//  Copyright © 2010—2018 Sam Hocevar <sam@hocevar.net>
-//
-//  Lol Engine is free software. It comes without any warranty, to
-//  the extent permitted by applicable law. You can redistribute it
-//  and/or modify it under the terms of the Do What the Fuck You Want
-//  to Public License, Version 2, as published by the WTFPL Task Force.
-//  See http://www.wtfpl.net/ for more details.
-//
-
-#include <lol/engine-internal.h>
-
-#if defined __APPLE__ && defined __MACH__ && defined __arm__
-
-#include <string>
-
-#import <UIKit/UIKit.h>
-
-#include "../../image/resource-private.h"
-
-namespace lol
-{
-
-/*
- * Image implementation class
- */
-
-class IosImageCodec : public ResourceCodec
-{
-public:
-    virtual std::string GetName() { return "<IosImageCodec>"; }
-    virtual ResourceCodecData* Load(std::string const &path);
-    virtual bool Save(std::string const &path, ResourceCodecData* data);
-};
-
-DECLARE_IMAGE_CODEC(IosImageCodec, 100)
-
-/*
- * Public Image class
- */
-
-ResourceCodecData* IosImageCodec::Load(std::string const &path)
-{
-    NSString *fullpath = [NSString stringWithUTF8String:path.c_str()];
-    NSArray *chunks = [fullpath componentsSeparatedByString: @"/"];
-    NSString *filename = [chunks objectAtIndex: [chunks count] - 1];
-    chunks = [filename componentsSeparatedByString: @"."];
-    NSString *prefix = [chunks objectAtIndex: 0];
-    NSString *mypath = [[NSBundle mainBundle] pathForResource:prefix ofType:@"png"];
-    NSData *pngdata = [[NSData alloc] initWithContentsOfFile:mypath];
-    UIImage *image = [[UIImage alloc] initWithData:pngdata];
-    if (!image)
-    {
-#if !LOL_BUILD_RELEASE
-        msg::error("could not load %s\n", path.c_str());
-#endif
-        return nullptr;
-    }
-
-    int w = CGImageGetWidth(image.CGImage);
-    int h = CGImageGetHeight(image.CGImage);
-    m_size = ivec2(w, h);
-    m_format = PixelFormat::RGBA_8;
-
-    CGColorSpaceRef cspace = CGColorSpaceCreateDeviceRGB();
-    pixels = (uint8_t *)malloc(w * h * 4);
-    CGContextRef ctx =
-            CGBitmapContextCreate(pixels, w, h, 8, 4 * w, cspace,
-                    kCGImageAlphaPremultipliedLast | kCGBitmapByteOrder32Big);
-    CGColorSpaceRelease(cspace);
-    CGContextClearRect(ctx, CGRectMake(0, 0, w, h));
-    CGContextTranslateCTM(ctx, 0, h - h);
-    CGContextDrawImage(ctx, CGRectMake(0, 0, w, h), image.CGImage);
-    CGContextRelease(ctx);
-    [image release];
-    [pngdata release];
-
-    return new ResourceCodecData();
-}
-
-bool IosImageCodec::Save(std::string const &path, ResourceCodecData* data)
-{
-    UNUSED(path, data);
-
-    /* TODO: unimplemented */
-    return true;
-}
-
-bool IosImageCodec::Close()
-{
-    free(pixels);
-
-    return true;
-}
-
-uint8_t * IosImageCodec::GetData() const
-{
-    return pixels;
-}
-
-} /* namespace lol */
-
-#endif /* defined __APPLE__ && defined __MACH__ && defined __arm__ */
-
diff --git a/src/image/codec/oric-image.cpp b/src/image/codec/oric-image.cpp
deleted file mode 100644
index d092786c..00000000
--- a/src/image/codec/oric-image.cpp
+++ /dev/null
@@ -1,538 +0,0 @@
-//
-//  Lol Engine
-//
-//  Copyright © 2010—2019 Sam Hocevar <sam@hocevar.net>
-//
-//  Lol Engine is free software. It comes without any warranty, to
-//  the extent permitted by applicable law. You can redistribute it
-//  and/or modify it under the terms of the Do What the Fuck You Want
-//  to Public License, Version 2, as published by the WTFPL Task Force.
-//  See http://www.wtfpl.net/ for more details.
-//
-
-#include <lol/engine-internal.h>
-
-#include <cctype>
-#include <string>
-
-#include "../../image/resource-private.h"
-
-namespace lol
-{
-
-/* Image dimensions and recursion depth. DEPTH = 2 is a reasonable value,
- * DEPTH = 3 gives good quality, and higher values may improve the results
- * even more but at the cost of significantly longer computation times. */
-#define WIDTH 240
-#define DEPTH 2
-
-/*
- * Image implementation class
- */
-
-class OricImageCodec : public ResourceCodec
-{
-public:
-    virtual std::string GetName() { return "<OricImageCodec>"; }
-    virtual ResourceCodecData* Load(std::string const &path);
-    virtual bool Save(std::string const &path, ResourceCodecData* data);
-
-private:
-    static std::string ReadScreen(std::string const &name);
-    static void WriteScreen(image &image, array<uint8_t> &result);
-};
-
-DECLARE_IMAGE_CODEC(OricImageCodec, 100)
-
-/*
- * Public Image class
- */
-
-ResourceCodecData* OricImageCodec::Load(std::string const &path)
-{
-    static u8vec4 const pal[8] =
-    {
-        u8vec4(0x00, 0x00, 0x00, 0xff),
-        u8vec4(0x00, 0x00, 0xff, 0xff),
-        u8vec4(0x00, 0xff, 0x00, 0xff),
-        u8vec4(0x00, 0xff, 0xff, 0xff),
-        u8vec4(0xff, 0x00, 0x00, 0xff),
-        u8vec4(0xff, 0x00, 0xff, 0xff),
-        u8vec4(0xff, 0xff, 0x00, 0xff),
-        u8vec4(0xff, 0xff, 0xff, 0xff),
-    };
-
-    std::string screen = ReadScreen(path);
-    if (screen.length() == 0)
-        return nullptr;
-
-    auto data = new ResourceImageData(new image(ivec2(WIDTH, (int)screen.length() * 6 / WIDTH)));
-    auto img = data->m_image;
-
-    u8vec4 *pixels = img->lock<PixelFormat::RGBA_8>();
-
-    for (int y = 0; y < img->size().y; y++)
-    {
-        u8vec2 bgfg(0, 7);
-
-        for (int x = 0; x < 40; x++)
-        {
-            uint8_t c = screen[y * 40 + x];
-
-            if (c & 0x40)
-            {
-                for (int i = 0; i < 6; i++)
-                {
-                    uint8_t id = (c & (1 << (5 - i))) ? bgfg[1] : bgfg[0];
-                    int col = (c & 0x80) ? 7 - id : id;
-                    pixels[y * WIDTH + x * 6 + i] = pal[col];
-                }
-            }
-            else if ((c & 0x60) == 0x00)
-            {
-                if (c & 0x10)
-                    bgfg[0] = c & 0x7;
-                else
-                    bgfg[1] = c & 0x7;
-
-                int col = (c & 0x80) ? 7 - bgfg[0] : bgfg[0];
-
-                for (int i = 0; i < 6; i++)
-                    pixels[y * WIDTH + x * 6 + i] = pal[col];
-            }
-            /* else: invalid sequence */
-        }
-    }
-
-    img->unlock(pixels);
-
-    return data;
-}
-
-bool OricImageCodec::Save(std::string const &path, ResourceCodecData* data)
-{
-    auto data_image = dynamic_cast<ResourceImageData*>(data);
-    if (data_image == nullptr)
-        return false;
-
-    int len = (int)path.length();
-    if (len < 4 || path[len - 4] != '.'
-        || std::toupper(path[len - 3]) != 'T'
-        || std::toupper(path[len - 2]) != 'A'
-        || std::toupper(path[len - 1]) != 'P')
-        return false;
-
-    array<uint8_t> result;
-
-    result << 0x16 << 0x16 << 0x16 << 0x16 << 0x24;
-    result << 0 << 0xff << 0x80 << 0 << 0xbf << 0x3f << 0xa0 << 0;
-
-    /* Add filename, except the last 4 characters */
-    for (char const *name = path.c_str(); name[4]; ++name)
-        result << (uint8_t)name[0];
-    result << 0;
-
-    auto img = data_image->m_image;
-    image tmp;
-    ivec2 size = img->size();
-    if (size.x != WIDTH)
-    {
-        size.y = (int)((float)size.y * WIDTH / size.x);
-        size.x = WIDTH;
-        tmp = img->Resize(size, ResampleAlgorithm::Bresenham);
-        img = &tmp;
-    }
-
-    WriteScreen(*img, result);
-
-    File f;
-    f.Open(path, FileAccess::Write);
-    f.Write(result.data(), result.bytes());
-    f.Close();
-
-    return true;
-}
-
-std::string OricImageCodec::ReadScreen(std::string const &name)
-{
-    File f;
-    f.Open(name, FileAccess::Read);
-    std::string data = f.ReadString();
-    f.Close();
-
-    /* Skip the sync bytes */
-    if (data[0] != 0x16)
-        return "";
-    int header = 1;
-    while (data[header] == 0x16)
-        ++header;
-    if (data[header] != 0x24)
-        return "";
-    ++header;
-
-    /* Skip the header, ignoring the last byte’s value */
-    if (!starts_with(data, std::string("\x00\xff\x80\x00\xbf\x3f\xa0\x00", 8)))
-        return "";
-
-    /* Skip the file name, including trailing nul char */
-    data = data.substr(header + 8);
-    size_t filename_end = data.find('\0');
-    if (filename_end == std::string::npos)
-        return "";
-
-    /* Read screen data */
-    return data.substr(filename_end + 1);
-}
-
-/* Error diffusion table, similar to Floyd-Steinberg. I choose not to
- * propagate 100% of the error, because doing so creates awful artifacts
- * (full lines of the same colour, massive colour bleeding) for unclear
- * reasons. Atkinson dithering propagates 3/4 of the error, which is even
- * less than our 31/32. I also choose to propagate slightly more in the
- * X direction to avoid banding effects due to rounding errors.
- * It would be interesting, for future versions of this software, to
- * propagate the error to the second line, too. But right now I find it far
- * too complex to do.
- *
- *             +-------+-------+
- *             | error |FS0/FSX|
- *     +-------+-------+-------+
- *     |FS1/FSX|FS2/FSX|FS3/FSX|
- *     +-------+-------+-------+
- */
-#define FS0 15
-#define FS1 6
-#define FS2 9
-#define FS3 1
-#define FSX 32
-
-/* The simple Oric RGB palette, made of the 8 Neugebauer primary colours. Each
- * colour is repeated 6 times so that we can point to the palette to paste
- * whole blocks of 6 pixels. It’s also organised so that palette[7-x] is the
- * RGB negative of palette[x], and screen command X uses palette[X & 7]. */
-#define V(a,b,c) ivec3(a,b,c),ivec3(a,b,c),ivec3(a,b,c),\
-                 ivec3(a,b,c),ivec3(a,b,c),ivec3(a,b,c),
-static const ivec3 palette[8][6] =
-{
-    { V(0x0000, 0x0000, 0x0000) },
-    { V(0xffff, 0x0000, 0x0000) },
-    { V(0x0000, 0xffff, 0x0000) },
-    { V(0xffff, 0xffff, 0x0000) },
-    { V(0x0000, 0x0000, 0xffff) },
-    { V(0xffff, 0x0000, 0xffff) },
-    { V(0x0000, 0xffff, 0xffff) },
-    { V(0xffff, 0xffff, 0xffff) },
-};
-#undef V
-
-/* Set new background and foreground colours according to the given command. */
-static inline u8vec2 domove(uint8_t command, u8vec2 bgfg)
-{
-    if ((command & 0x78) == 0x00)
-        bgfg[1] = command & 0x7;
-    else if ((command & 0x78) == 0x10)
-        bgfg[0] = command & 0x7;
-    return bgfg;
-}
-
-/* Clamp pixel value to avoid colour bleeding. Deactivated because it
- * does not give satisfactory results. */
-static inline ivec3 myclamp(ivec3 p)
-{
-#if 0
-    static int const CLAMP = 0x1000;
-    /* FIXME: doesn’t give terribly good results on eg. eatme.png */
-    p = lol::clamp(p, -CLAMP, 0xffff + CLAMP);
-#endif
-    return p;
-}
-
-/* Compute the perceptual error caused by replacing the input pixels "in"
- * with the output pixels "out". "indelta" is the diffused error that should
- * be applied to "in"’s first pixel. "outdelta" will hold the diffused error
- * to apply after "in"’s last pixel upon next call. The return value does
- * not mean much physically; it is one part of the algorithm where you need
- * to play a bit in order to get appealing results. That’s how image
- * processing works, folks. */
-static inline int geterror(ivec3 const *in, ivec3 indelta,
-                           ivec3 const *out, ivec3 *outdelta)
-{
-    /* 9 cells: 1 for the end of line, 8 for the errors below */
-    ivec3 tmpdelta[9] = { indelta, ivec3(0) };
-
-    int ret = 0;
-
-    /* Experiment shows that this is important at small depths */
-    for (int i = 0; i < 6; i++)
-    {
-        ivec3 a = myclamp(in[i] + tmpdelta[0]);
-        ivec3 b = out[i];
-
-        tmpdelta[0] = (a - b) * FS0 / FSX;
-        tmpdelta[i + 1] += (a - b) * FS1 / FSX;
-        tmpdelta[i + 2] += (a - b) * FS2 / FSX;
-        tmpdelta[i + 3] += (a - b) * FS3 / FSX;
-
-        ret += dot((a - b) / 256, (a - b) / 256);
-    }
-
-    /* Experiment shows that this is important at large depths */
-    for (int i = 0; i < 4; i++)
-    {
-        ivec3 a = (in[i] + in[i + 1] + in[i + 2]) / 3;
-        ivec3 b = (out[i] + out[i + 1] + out[i + 2]) / 3;
-
-        ret += dot((a - b) / 256, (a - b) / 256);
-    }
-
-    /* Using the diffused error as a perceptual error component is stupid,
-     * because that’s not what it is at all, but I found that it helped a
-     * bit in some cases. */
-    ret += dot(tmpdelta[0] / 256, tmpdelta[0] / 256);
-
-    *outdelta = tmpdelta[0];
-
-    return ret;
-}
-
-static uint8_t bestmove(ivec3 const *in, u8vec2 bgfg,
-                        ivec3 delta, int depth, int maxerror,
-                        int *error, ivec3 *out)
-{
-    ivec3 tmprgb[6], bestrgb[6];
-    ivec3 nop_rgb_delta, inop_rgb_delta;
-    ivec3 const *rgb, *nop_rgb, *inop_rgb;
-    int suberror, statice, nop_error, inop_error;
-
-    /* Precompute error for the case where we change the foreground colour
-     * and hence only print the background colour or its negative */
-    nop_rgb = palette[bgfg[0]];
-    nop_error = geterror(in, delta, nop_rgb, &nop_rgb_delta);
-    inop_rgb = palette[7 - bgfg[0]];
-    inop_error = geterror(in, delta, inop_rgb, &inop_rgb_delta);
-
-    /* Precompute sub-error for the case where we print pixels (and hence
-     * don’t change the palette). It’s not the exact error because we should
-     * be propagating the error to the first pixel here. */
-    if (depth > 0)
-    {
-        bestmove(in + 6, bgfg, ivec3(0), depth - 1,
-                 maxerror, &statice, nullptr);
-    }
-
-    /* Check every likely command:
-     * 0-7: change foreground to 0-7
-     * 8-15: change foreground to 0-7, print negative background
-     * 16-23: change background to 0-7
-     * 24-31: change background to 0-7, print negative background
-     * 32: normal stuff
-     * 33: inverse video stuff */
-    static uint8_t const command_list[] =
-    {
-        0x00, 0x04, 0x01, 0x05, 0x02, 0x06, 0x03, 0x07,
-        0x80, 0x84, 0x81, 0x85, 0x82, 0x86, 0x83, 0x87,
-        0x10, 0x14, 0x11, 0x15, 0x12, 0x16, 0x13, 0x17,
-        0x90, 0x94, 0x91, 0x95, 0x92, 0x96, 0x93, 0x97,
-        0x40, 0xc0
-    };
-
-    int besterror = 0x7ffffff;
-    uint8_t bestcommand = 0x10;
-    memcpy((void *)bestrgb, nop_rgb, sizeof(bestrgb));
-
-    for (uint8_t command : command_list)
-    {
-        ivec3 nexterr = ivec3(0);
-        int curerror = 0;
-
-        u8vec2 newbgfg = domove(command, bgfg);
-
-        /* Keeping bg and fg is useless, because we could use standard
-         * pixel printing instead */
-        if ((command & 0x40) == 0x00 && newbgfg == bgfg)
-            continue;
-
-        /* I *think* having newfg == newbg is useless, too, but I don’t
-         * want to miss some corner case where swapping bg and fg may be
-         * interesting, so we continue anyway. */
-
-#if 0
-        /* Bit 6 off and bit 5 on seems illegal */
-        if ((command & 0x60) == 0x20)
-            continue;
-
-        /* Bits 6 and 5 off and bit 3 on seems illegal */
-        if ((command & 0x68) == 0x08)
-            continue;
-#endif
-
-        if ((command & 0xf8) == 0x00)
-        {
-            curerror = nop_error;
-            rgb = nop_rgb;
-            nexterr = nop_rgb_delta;
-        }
-        else if ((command & 0xf8) == 0x80)
-        {
-            curerror = inop_error;
-            rgb = inop_rgb;
-            nexterr = inop_rgb_delta;
-        }
-        else if ((command & 0xf8) == 0x10)
-        {
-            rgb = palette[newbgfg[0]];
-            curerror = geterror(in, delta, rgb, &nexterr);
-        }
-        else if ((command & 0xf8) == 0x90)
-        {
-            rgb = palette[7 - newbgfg[0]];
-            curerror = geterror(in, delta, rgb, &nexterr);
-        }
-        else
-        {
-            ivec3 bgcolor, fgcolor;
-
-            if ((command & 0x80) == 0x00)
-            {
-                bgcolor = palette[bgfg[0]][0];
-                fgcolor = palette[bgfg[1]][0];
-            }
-            else
-            {
-                bgcolor = palette[7 - bgfg[0]][0];
-                fgcolor = palette[7 - bgfg[1]][0];
-            }
-
-            ivec3 tmpvec = delta;
-
-            for (int i = 0; i < 6; i++)
-            {
-                ivec3 delta1 = myclamp(in[i] + tmpvec) - bgcolor;
-                ivec3 delta2 = myclamp(in[i] + tmpvec) - fgcolor;
-
-                if (dot(delta1 / 256, delta1) < dot(delta2 / 256, delta2))
-                {
-                    tmpvec = delta1 * FS0 / FSX;
-                    tmprgb[i] = bgcolor;
-                }
-                else
-                {
-                    tmpvec = delta2 * FS0 / FSX;
-                    tmprgb[i] = fgcolor;
-                    command |= (1 << (5 - i));
-                }
-            }
-
-            /* Recompute full error */
-            curerror += geterror(in, delta, tmprgb, &nexterr);
-
-            rgb = tmprgb;
-        }
-
-        if (curerror > besterror)
-            continue;
-
-        /* Try to avoid bad decisions now that will have a high cost
-         * later in the line by making the next error more important than
-         * the current error. */
-        curerror = curerror * 3 / 4;
-
-        if (depth == 0)
-            suberror = 0; /* It’s the end of the tree */
-        else if ((command & 0x68) == 0x00)
-        {
-            bestmove(in + 6, newbgfg, nexterr, depth - 1,
-                     besterror - curerror, &suberror, nullptr);
-
-#if 0
-            /* Slight penalty for colour changes; they're hard to revert. The
-             * value of 2 was determined empirically. 1.5 is not enough and
-             * 3 is too much. */
-            if (newbgfg[0] != bgfg[0])
-                suberror = suberror * 10 / 8;
-            else if (newbgfg[1] != bgfg[1])
-                suberror = suberror * 9 / 8;
-#endif
-        }
-        else
-            suberror = statice;
-
-        if (curerror + suberror < besterror)
-        {
-            besterror = curerror + suberror;
-            bestcommand = command;
-            memcpy((void *)bestrgb, rgb, sizeof(bestrgb));
-        }
-    }
-
-    *error = besterror;
-    if (out)
-        memcpy((void *)out, bestrgb, sizeof(bestrgb));
-
-    return bestcommand;
-}
-
-void OricImageCodec::WriteScreen(image &img, array<uint8_t> &result)
-{
-    ivec2 size = img.size();
-    vec4 *pixels = img.lock<PixelFormat::RGBA_F32>();
-
-    int stride = (size.x + 1);
-
-    array2d<ivec3> src, dst;
-    src.resize(size + ivec2(1));
-    dst.resize(size + ivec2(1));
-
-    memset((void *)src.data(), 0, src.bytes());
-    memset((void *)dst.data(), 0, dst.bytes());
-
-    /* Import pixels into our custom format */
-    for (int y = 0; y < size.y; y++)
-        for (int x = 0; x < size.x; x++)
-            for (int c = 0; c < 3; c++)
-                src[x][y][c] = 0xffff * (int32_t)pixels[y * size.x + x][2 - c];
-
-    /* Let the fun begin */
-    for (int y = 0; y < size.y; y++)
-    {
-        u8vec2 bgfg(0, 7);
-
-        //fprintf(stderr, "\rProcessing... %i%%", (y * 100 + 99) / size.y);
-
-        for (int x = 0; x < size.x; x += 6)
-        {
-            int depth = (x + DEPTH < size.x) ? DEPTH : (size.x - x) / 6 - 1;
-            ivec3 *srcl = &src[x][y];
-            ivec3 *dstl = &dst[x][y];
-
-            /* Recursively compute and apply best command */
-            int dummy;
-            uint8_t command = bestmove(srcl, bgfg, ivec3(0), depth,
-                                       0x7fffff, &dummy, dstl);
-            /* Propagate error */
-            for (int i = 0; i < 6; i++)
-            {
-                ivec3 delta = srcl[i] - dstl[i];
-                srcl[i + 1] = myclamp(srcl[i + 1] + delta * FS0 / FSX);
-                srcl[i + stride - 1] += delta * FS1 / FSX;
-                srcl[i + stride] += delta * FS2 / FSX;
-                srcl[i + stride + 1] += delta * FS3 / FSX;
-            }
-
-            for (int i = -1; i < 7; i++)
-                srcl[i + stride] = myclamp(srcl[i + stride]);
-
-            /* Iterate */
-            bgfg = domove(command, bgfg);
-            /* Write byte to file */
-            result << command;
-        }
-    }
-
-    img.unlock(pixels);
-
-    //fprintf(stderr, " done.\n");
-}
-
-} /* namespace lol */
-
diff --git a/src/image/codec/sdl-image.cpp b/src/image/codec/sdl-image.cpp
deleted file mode 100644
index ef3327aa..00000000
--- a/src/image/codec/sdl-image.cpp
+++ /dev/null
@@ -1,130 +0,0 @@
-//
-//  Lol Engine
-//
-//  Copyright © 2010—2019 Sam Hocevar <sam@hocevar.net>
-//
-//  Lol Engine is free software. It comes without any warranty, to
-//  the extent permitted by applicable law. You can redistribute it
-//  and/or modify it under the terms of the Do What the Fuck You Want
-//  to Public License, Version 2, as published by the WTFPL Task Force.
-//  See http://www.wtfpl.net/ for more details.
-//
-
-#include <lol/engine-internal.h>
-
-#if LOL_USE_SDL_IMAGE
-
-#if HAVE_SDL2_SDL_H
-#   include <SDL2/SDL.h>
-#   include <SDL2/SDL_image.h>
-#elif HAVE_SDL_H
-#   include <SDL.h>
-#   include <SDL_image.h>
-#endif
-
-#include <string>
-
-#include "../../image/resource-private.h"
-
-namespace lol
-{
-
-/*
- * Image implementation class
- */
-
-class SdlImageCodec : public ResourceCodec
-{
-public:
-    virtual std::string GetName() { return "<SdlImageCodec>"; }
-    virtual ResourceCodecData* Load(std::string const &path);
-    virtual bool Save(std::string const &path, ResourceCodecData* data);
-
-    static SDL_Surface *Create32BppSurface(ivec2 size);
-};
-
-DECLARE_IMAGE_CODEC(SdlImageCodec, 50)
-
-ResourceCodecData* SdlImageCodec::Load(std::string const &path)
-{
-    SDL_Surface *surface = nullptr;
-
-    for (auto const &candidate : sys::get_path_list(path))
-    {
-        surface = IMG_Load(candidate.c_str());
-        if (surface)
-            break;
-    }
-
-    if (!surface)
-    {
-#if !LOL_BUILD_RELEASE
-        msg::error("could not load image %s\n", path.c_str());
-#endif
-        return nullptr;
-    }
-
-    ivec2 size(surface->w, surface->h);
-
-    if (surface->format->BytesPerPixel != 4)
-    {
-        SDL_Surface *tmp = Create32BppSurface(size);
-        SDL_BlitSurface(surface, nullptr, tmp, nullptr);
-        SDL_FreeSurface(surface);
-        surface = tmp;
-    }
-
-    auto data = new ResourceImageData(new image(size));
-    auto image = data->m_image;
-    u8vec4 *pixel_data = image->lock<PixelFormat::RGBA_8>();
-    memcpy((void *)pixel_data, surface->pixels, sizeof(*pixel_data) * size.x * size.y);
-    image->unlock(pixel_data);
-
-    SDL_FreeSurface(surface);
-
-    return data;
-}
-
-bool SdlImageCodec::Save(std::string const &path, ResourceCodecData* data)
-{
-    auto data_image = dynamic_cast<ResourceImageData*>(data);
-    if (data_image == nullptr)
-        return false;
-
-    auto image = data_image->m_image;
-    ivec2 size = image->size();
-    SDL_Surface *surface = Create32BppSurface(size);
-
-    u8vec4 *pixel_data = image->lock<PixelFormat::RGBA_8>();
-    memcpy(surface->pixels, pixel_data, 4 * size.x * size.y);
-    image->unlock(pixel_data);
-
-    int ret = SDL_SaveBMP(surface, path.c_str());
-    SDL_FreeSurface(surface);
-
-    return ret == 0;
-}
-
-SDL_Surface *SdlImageCodec::Create32BppSurface(ivec2 size)
-{
-    uint32_t rmask, gmask, bmask, amask;
-#if SDL_BYTEORDER == SDL_BIG_ENDIAN
-    rmask = 0xff000000;
-    gmask = 0x00ff0000;
-    bmask = 0x0000ff00;
-    amask = 0x000000ff;
-#else
-    rmask = 0x000000ff;
-    gmask = 0x0000ff00;
-    bmask = 0x00ff0000;
-    amask = 0xff000000;
-#endif
-
-    return SDL_CreateRGBSurface(SDL_SWSURFACE, size.x, size.y, 32,
-                                rmask, gmask, bmask, amask);
-}
-
-} /* namespace lol */
-
-#endif /* LOL_USE_SDL_IMAGE */
-
diff --git a/src/image/codec/zed-image.cpp b/src/image/codec/zed-image.cpp
deleted file mode 100644
index 582065f1..00000000
--- a/src/image/codec/zed-image.cpp
+++ /dev/null
@@ -1,306 +0,0 @@
-//
-//  Lol Engine
-//
-//  Copyright © 2009—2014 Benjamin “Touky” Huet <huet.benjamin@gmail.com>
-//            © 2010—2018 Sam Hocevar <sam@hocevar.net>
-//
-//  Lol Engine is free software. It comes without any warranty, to
-//  the extent permitted by applicable law. You can redistribute it
-//  and/or modify it under the terms of the Do What the Fuck You Want
-//  to Public License, Version 2, as published by the WTFPL Task Force.
-//  See http://www.wtfpl.net/ for more details.
-//
-
-#include <lol/engine-internal.h>
-
-#include <string>
-
-#include "../../image/resource-private.h"
-
-namespace lol
-{
-
-/*
- * Image implementation class
- */
-
-class ZedImageCodec : public ResourceCodec
-{
-public:
-    virtual std::string GetName() { return "<ZedImageCodec>"; }
-    virtual ResourceCodecData* Load(std::string const &path);
-    virtual bool Save(std::string const &path, ResourceCodecData* data);
-};
-
-DECLARE_IMAGE_CODEC(ZedImageCodec, 10)
-
-/*
- * Public Image class
- */
-
-ResourceCodecData* ZedImageCodec::Load(std::string const &path)
-{
-    if (!ends_with(path, ".RSC"))
-        return nullptr;
-
-    // Compacter definition
-    struct CompactSecondary
-    {
-        CompactSecondary(int32_t size) { m_size = size; }
-        int32_t m_size;
-        array<int32_t> m_tiles;
-    };
-    struct CompactMain
-    {
-        CompactMain(int32_t size) { m_size = size; m_count = 0; }
-        int32_t                 m_size;
-        int32_t                 m_count;
-        array<CompactSecondary> m_secondary;
-    };
-    struct Compacter2d
-    {
-        void PowSetup(int32_t start, int32_t count)
-        {
-            for (int i = 0; i < count; i++)
-            {
-                m_primary << CompactMain(start << i);
-                for (int j = 0; j < count; j++)
-                    m_primary.last().m_secondary << CompactSecondary(start << j);
-            }
-        }
-        void StepSetup(int32_t start, int32_t interval, int32_t count)
-        {
-            for (int i = 0; i < count; i++)
-            {
-                m_primary << CompactMain(start + interval * i);
-                for (int j = 0; j < count; j++)
-                    m_primary.last().m_secondary << CompactSecondary(start + interval * j);
-            }
-        }
-        void CustomSetup(array<int32_t> custom_list)
-        {
-            for (int i = 0; i < custom_list.count(); i++)
-            {
-                m_primary << CompactMain(custom_list[i]);
-                for (int j = 0; j < custom_list.count(); j++)
-                    m_primary.last().m_secondary << CompactSecondary(custom_list[j]);
-            }
-        }
-        void Store(int32_t tile, ivec2 size)
-        {
-            for (int i = 0; i < m_primary.count(); i++)
-            {
-                if (size.y <= m_primary[i].m_size || i == m_primary.count() - 1)
-                {
-                    for (int j = 0; j < m_primary[i].m_secondary.count(); j++)
-                    {
-                        if (size.x <= m_primary[i].m_secondary[j].m_size || j == m_primary[i].m_secondary.count() - 1)
-                        {
-                            m_primary[i].m_secondary[j].m_tiles << tile;
-                            m_primary[i].m_count++;
-                            break;
-                        }
-                    }
-                    break;
-                }
-            }
-        }
-        array<CompactMain>      m_primary;
-    };
-
-    File file;
-    file.Open(path, FileAccess::Read, true);
-
-    //Put file in memory
-    long file_size = file.size();
-    array<uint8_t> file_buffer;
-    file_buffer.resize(file_size);
-    file.Read((uint8_t*)&file_buffer[0], file_size);
-    file.Close();
-
-    //Get FileCount
-    uint32_t file_pos = 0;
-    uint16_t file_count = 0;
-    memcpy(&file_count, &file_buffer[file_pos], sizeof(uint16_t));
-    file_pos += sizeof(uint16_t);
-
-    array<uint32_t> file_offset;
-    file_offset.resize(file_count);
-    //Get all the file offsets
-    for (int i = 0; i < file_count; i++)
-    {
-        memcpy(&file_offset[i], &file_buffer[file_pos], sizeof(uint32_t));
-        file_pos += sizeof(uint32_t);
-    }
-    file_offset << file_size;
-
-    //<Pos, Size>
-    array<ivec2, ivec2> tiles;
-    tiles.reserve(file_count);
-
-    Compacter2d compacter;
-    compacter.StepSetup(8, 8, 10);
-
-    uint32_t total_size = 0;
-    array<uint8_t> file_convert;
-    file_convert.reserve(file_size);
-    array<ivec2> available_sizes;
-    //got through all the files and store them
-    for (int i = 0; i < file_count; i++)
-    {
-        file_pos = file_offset[i];
-
-        //Get image size
-        uint8_t size_x = 0;
-        uint8_t size_y = 0;
-        size_y = file_buffer[file_pos++];
-        size_x = file_buffer[file_pos++];
-
-        //special tweak
-        size_x *= 8;
-        total_size += (size_x * size_y);
-
-        //Prepare read
-        uint32_t header_length = (size_y + 5) & 0xFC;
-        uint32_t data_length = (file_offset[i+1] - file_offset[i]) - header_length;
-        uint32_t data_pos = file_offset[i] + header_length;
-
-        /* Seems useless in the end
-        //Retrieve Header & footer
-        array<uint8_t> header_data;
-        header_data.resize(header_length);
-        memcpy(&header_data[0], &file_buffer[file_offset[i]], header_length);
-        array<uint8_t> footer_data;
-        uint32_t footer_length = lol::min((uint32_t)file_buffer.count(), data_pos + data_length + header_length) - (data_pos + data_length);
-        if (footer_length > 0)
-        {
-            footer_data.resize(footer_length);
-            memcpy(&footer_data[0], &file_buffer[data_pos + data_length], footer_length);
-        }
-        */
-
-        //Prepare buffer and tiles infos
-        int32_t convert_pos = file_convert.count();
-        ivec2 size = ivec2(size_x, size_y);
-        //store tile in compacter
-        compacter.Store(tiles.count(), ivec2(size_x, size_y));
-        //push tile on the stack
-        tiles.push(ivec2(file_convert.count(), data_length), ivec2(size_x, size_y));
-        file_convert.resize(convert_pos + data_length);
-
-        //Retrieve actual datas
-        file_pos = data_pos;
-        memcpy(&file_convert[convert_pos], &file_buffer[file_pos], data_length);
-        file_pos += data_length;
-
-        //Store size type
-        {
-            ivec2 size_16 = size;
-            int32_t s_16 = 8;
-            while (1)
-            {
-                if (size_16.x < s_16)
-                {
-                    size_16.x = s_16;
-                    break;
-                }
-                s_16 <<= 1;
-            }
-            s_16 = 8;
-            while (1)
-            {
-                if (size_16.y < s_16)
-                {
-                    size_16.y = s_16;
-                    break;
-                }
-                s_16 <<= 1;
-            }
-            int j = 0;
-            for (; j < available_sizes.count(); j++)
-                if (available_sizes[j] == size_16)
-                    break;
-            if (j >= available_sizes.count())
-                available_sizes << size_16;
-        }
-    }
-
-    int32_t tex_sqrt = (int32_t)lol::sqrt((float)total_size);
-    int32_t tex_size = 2;
-    while (tex_size < tex_sqrt)
-        tex_size <<= 1;
-
-    //Prepare final image
-    auto data = new ResourceTilesetData(new image(ivec2(tex_size)));
-    auto image = data->m_image;
-    uint8_t *pixels = image->lock<PixelFormat::Y_8>();
-
-    //Data refactor stage
-    ivec2 pos = ivec2(0);
-    for (int j = compacter.m_primary.count() - 1; j >= 0; j--)
-    {
-        for (int k = compacter.m_primary[j].m_secondary.count() - 1; k >= 0; k--)
-        {
-            //Try something smaller
-            if (pos.x + compacter.m_primary[j].m_secondary[k].m_size >= tex_size)
-                continue;
-
-            while (compacter.m_primary[j].m_secondary[k].m_tiles.count() > 0)
-            {
-                //Try something smaller
-                if (pos.x + compacter.m_primary[j].m_secondary[k].m_size >= tex_size)
-                    break;
-
-                compacter.m_primary[j].m_count--;
-                int i = compacter.m_primary[j].m_secondary[k].m_tiles.pop();
-                int32_t file_off = tiles[i].m1[0];
-                ivec2 t_size = tiles[i].m2;
-
-                ASSERT(pos.y + t_size.y < tex_size);
-
-                //Move image to texture
-                int32_t img_off = pos.x + pos.y * tex_size;
-
-                //At this stage image data consists of 4 vertical interlaced blocks
-                for (int pass = 0; pass < 4; pass++)
-                {
-                    for (int y_cur = 0; y_cur < t_size.y; y_cur++)
-                    {
-                        for (int x_cur = 0; x_cur < t_size.x / 4; x_cur++)
-                        {
-                            int32_t img_pos = img_off + pass + 4 * x_cur + y_cur * (int32_t)tex_size;
-                            pixels[img_pos] = file_convert[file_off++];
-                        }
-                    }
-                }
-
-                //Register new pos and move to next
-                tiles[i].m1 = pos;
-                pos.x += t_size.x;
-            }
-        }
-
-        //Do another loop
-        if (compacter.m_primary[j].m_count > 0)
-        {
-            pos.x = 0;
-            pos.y += compacter.m_primary[j].m_size;
-            j++;
-        }
-    }
-    image->unlock(pixels);
-
-    data->m_tiles = tiles;
-
-    return data;
-}
-
-bool ZedImageCodec::Save(std::string const &path, ResourceCodecData* data)
-{
-    UNUSED(path, data);
-    /* FIXME: do we need to implement this? */
-    return true;
-}
-
-} /* namespace lol */
-
diff --git a/src/image/codec/zed-palette-image.cpp b/src/image/codec/zed-palette-image.cpp
deleted file mode 100644
index 2d724015..00000000
--- a/src/image/codec/zed-palette-image.cpp
+++ /dev/null
@@ -1,94 +0,0 @@
-//
-//  Lol Engine
-//
-//  Copyright © 2009—2014 Benjamin “Touky” Huet <huet.benjamin@gmail.com>
-//            © 2010—2018 Sam Hocevar <sam@hocevar.net>
-//
-//  Lol Engine is free software. It comes without any warranty, to
-//  the extent permitted by applicable law. You can redistribute it
-//  and/or modify it under the terms of the Do What the Fuck You Want
-//  to Public License, Version 2, as published by the WTFPL Task Force.
-//  See http://www.wtfpl.net/ for more details.
-//
-
-#include <lol/engine-internal.h>
-
-#include <string>
-
-#include "../../image/resource-private.h"
-
-namespace lol
-{
-
-/*
- * Image implementation class
- */
-
-class ZedPaletteImageCodec : public ResourceCodec
-{
-public:
-    virtual std::string GetName() { return "<ZedPaletteImageCodec>"; }
-    virtual ResourceCodecData* Load(std::string const &path);
-    virtual bool Save(std::string const &path, ResourceCodecData* data);
-};
-
-DECLARE_IMAGE_CODEC(ZedPaletteImageCodec, 10)
-
-/*
- * Public Image class
- */
-
-ResourceCodecData* ZedPaletteImageCodec::Load(std::string const &path)
-{
-    if (!ends_with(path, ".pal"))
-        return nullptr;
-
-    File file;
-    file.Open(path, FileAccess::Read, true);
-
-    // Put file in memory
-    long file_size = file.size();
-    array<uint8_t> file_buffer;
-    file_buffer.resize(file_size);
-    file.Read((uint8_t*)&file_buffer[0], file_size);
-    file.Close();
-
-#if 0 //2D PALETTE
-    int32_t tex_sqrt = (int32_t)lol::sqrt((float)file_size / 3);
-    int32_t tex_size = 2;
-    while (tex_size < tex_sqrt)
-        tex_size <<= 1;
-    auto data = new ResourceImageData(new image(ivec2(tex_size)));
-    auto image = data->m_image;
-#else
-    int32_t tex_sqrt = file_size / 3;
-    int32_t tex_size = 2;
-    while (tex_size < tex_sqrt)
-        tex_size <<= 1;
-    auto data = new ResourceImageData(new image(ivec2(tex_size, 1)));
-    auto image = data->m_image;
-#endif
-
-    u8vec4 *pixels = image->lock<PixelFormat::RGBA_8>();
-    for (int i = 0; i < file_buffer.count();)
-    {
-        pixels->r = file_buffer[i++];
-        pixels->g = file_buffer[i++];
-        pixels->b = file_buffer[i++];
-        pixels->a = (i == 0) ? 0 : 255;
-        ++pixels;
-    }
-    image->unlock(pixels);
-
-    return data;
-}
-
-bool ZedPaletteImageCodec::Save(std::string const &path, ResourceCodecData* data)
-{
-    UNUSED(path, data);
-    /* FIXME: do we need to implement this? */
-    return true;
-}
-
-} /* namespace lol */
-
diff --git a/src/image/color/cie1931.cpp b/src/image/color/cie1931.cpp
deleted file mode 100644
index 7b0f2e78..00000000
--- a/src/image/color/cie1931.cpp
+++ /dev/null
@@ -1,595 +0,0 @@
-//
-// Lol Engine
-//
-// Copyright: (c) 2010-2013 Sam Hocevar <sam@hocevar.net>
-//   This program is free software; you can redistribute it and/or
-//   modify it under the terms of the Do What The Fuck You Want To
-//   Public License, Version 2, as published by Sam Hocevar. See
-//   http://www.wtfpl.net/ for more details.
-//
-
-#include <lol/engine-internal.h>
-
-/*
- * This file contains code and data related to various CIE standards.
- *  - the CIE-1931 Standard Colorimetric Observer data
- *  - the CIE-1964 Standard Colorimetric Observer data
- *  - the CIEDE2000 metric
- */
-
-namespace lol
-{
-
-float Color::DistanceCIEDE2000(vec3 lab1, vec3 lab2)
-{
-    float C1 = length(lab1.yz);
-    float C2 = length(lab2.yz);
-    float C_ = 0.5f * (C1 + C2);
-
-    float L1 = lab1.x;
-    float L2 = lab2.x;
-    float dLp = L2 - L1;
-    float L_ = 0.5f * (L1 + L2);
-
-    float tmp1 = pow(C_, 7.f);
-    float tmp2 = 1.5f - 0.5f * sqrt(tmp1 / (tmp1 + pow(25.f, 7.f)));
-    float ap1 = lab1.y * tmp2;
-    float ap2 = lab2.y * tmp2;
-    float Cp1 = sqrt(ap1 * ap1 + lab1.z * lab1.z);
-    float Cp2 = sqrt(ap2 * ap2 + lab2.z * lab2.z);
-    float dCp = Cp2 - Cp1;
-    float Cp_ = 0.5f * (Cp1 + Cp2);
-
-    float hp1 = atan2(lab1.z, ap1);
-    float hp2 = atan2(lab2.z, ap2);
-    float dhp = fmod(hp2 - hp1 + 3.f * F_PI, 2.f * F_PI) - F_PI; /* -pi .. pi */
-    float dHp = 2.f * sqrt(Cp1 * Cp2) * sin(0.5f * dhp);
-    float Hp_ = (Cp1 && Cp2) ? fmod(hp1 + 0.5f * dhp + 2.f * F_PI, 2.f * F_PI) : hp1 + hp2; /* 0 .. 2pi */
-
-    float T = 1.f - 0.17f * cos(Hp_ - F_PI / 6.f)
-                  + 0.24f * cos(2.f * Hp_)
-                  + 0.32f * cos(3.f * Hp_ + F_PI / 30.f)
-                  - 0.20f * cos(4.f * Hp_ - 0.35f * F_PI);
-    float SL = 1.f + 0.015f * (L_ - 50) * (L_ - 50)
-                            / sqrt(20.f + (L_ - 50) * (L_ - 50));
-    float SC = 1.f + 0.045f * Cp_;
-    float SH = 1.f + 0.015f * Cp_ * T;
-    float RT = -2.f * sqrt(pow(Cp_, 7.f) / (pow(Cp_, 7.f) + pow(25.f, 7.f)))
-                    * sin(F_PI / 3.f * exp(-pow((Hp_ * 180.f / F_PI - 275.f) / 25.f, 2.f)));
-
-    dLp /= SL;
-    dCp /= SC;
-    dHp /= SH;
-
-    return sqrt(dLp * dLp + dCp * dCp + dHp * dHp + RT * dCp * dHp);
-}
-
-/* CIE 1931 Standard Colorimetric Observer, aka. 2º Observer
- * for wavelengths 360 to 830. */
-static float cie_1931_xyz[] =
-{
-    /* 360 — 399 nm */
-    0.0001299f, 3.917e-06f, 0.0006061f, 0.0001458f, 4.394e-06f, 0.0006809f,
-    0.0001638f, 4.930e-06f, 0.0007651f, 0.0001840f, 5.532e-06f, 0.0008600f,
-    0.0002067f, 6.208e-06f, 0.0009666f, 0.0002321f, 6.965e-06f, 0.0010860f,
-    0.0002607f, 7.813e-06f, 0.0012206f, 0.0002931f, 8.767e-06f, 0.0013727f,
-    0.0003294f, 9.840e-06f, 0.0015436f, 0.0003699f, 1.104e-05f, 0.0017343f,
-    0.0004149f, 1.239e-05f, 0.0019460f, 0.0004642f, 1.389e-05f, 0.0021778f,
-    0.0005190f, 1.556e-05f, 0.0024358f, 0.0005819f, 1.744e-05f, 0.0027320f,
-    0.0006552f, 1.958e-05f, 0.0030781f, 0.0007416f, 2.202e-05f, 0.0034860f,
-    0.0008450f, 2.484e-05f, 0.0039752f, 0.0009645f, 2.804e-05f, 0.0045409f,
-    0.0010949f, 3.153e-05f, 0.0051583f, 0.0012312f, 3.522e-05f, 0.0058029f,
-    0.0013680f, 3.900e-05f, 0.0064500f, 0.0015021f, 4.283e-05f, 0.0070832f,
-    0.0016423f, 4.691e-05f, 0.0077455f, 0.0018024f, 5.159e-05f, 0.0085012f,
-    0.0019958f, 5.718e-05f, 0.0094145f, 0.0022360f, 6.400e-05f, 0.0105500f,
-    0.0025354f, 7.234e-05f, 0.0119658f, 0.0028926f, 8.221e-05f, 0.0136559f,
-    0.0033008f, 9.351e-05f, 0.0155881f, 0.0037532f, 0.0001061f, 0.0177302f,
-    0.0042430f, 0.0001200f, 0.0200500f, 0.0047624f, 0.0001350f, 0.0225114f,
-    0.0053300f, 0.0001515f, 0.0252029f, 0.0059787f, 0.0001702f, 0.0282797f,
-    0.0067411f, 0.0001918f, 0.0318970f, 0.0076500f, 0.0002170f, 0.0362100f,
-    0.0087514f, 0.0002469f, 0.0414377f, 0.0100289f, 0.0002812f, 0.0475037f,
-    0.0114217f, 0.0003185f, 0.0541199f, 0.0128690f, 0.0003573f, 0.0609980f,
-    /* 400 — 439 nm */
-    0.0143100f, 0.0003960f, 0.0678500f, 0.0157044f, 0.0004337f, 0.0744863f,
-    0.0171474f, 0.0004730f, 0.0813616f, 0.0187812f, 0.0005179f, 0.0891536f,
-    0.0207480f, 0.0005722f, 0.0985405f, 0.0231900f, 0.0006400f, 0.1102000f,
-    0.0262074f, 0.0007246f, 0.1246133f, 0.0297825f, 0.0008255f, 0.1417017f,
-    0.0338809f, 0.0009412f, 0.1613035f, 0.0384682f, 0.0010699f, 0.1832568f,
-    0.0435100f, 0.0012100f, 0.2074000f, 0.0489956f, 0.0013621f, 0.2336921f,
-    0.0550226f, 0.0015308f, 0.2626114f, 0.0617188f, 0.0017204f, 0.2947746f,
-    0.0692120f, 0.0019353f, 0.3307985f, 0.0776300f, 0.0021800f, 0.3713000f,
-    0.0869581f, 0.0024548f, 0.4162091f, 0.0971767f, 0.0027640f, 0.4654642f,
-    0.1084063f, 0.0031178f, 0.5196948f, 0.1207672f, 0.0035264f, 0.5795303f,
-    0.1343800f, 0.0040000f, 0.6456000f, 0.1493582f, 0.0045462f, 0.7184838f,
-    0.1653957f, 0.0051593f, 0.7967133f, 0.1819831f, 0.0058293f, 0.8778459f,
-    0.1986110f, 0.0065462f, 0.9594390f, 0.2147700f, 0.0073000f, 1.0390501f,
-    0.2301868f, 0.0080865f, 1.1153673f, 0.2448797f, 0.0089087f, 1.1884971f,
-    0.2587773f, 0.0097677f, 1.2581233f, 0.2718079f, 0.0106644f, 1.3239296f,
-    0.2839000f, 0.0116000f, 1.3856000f, 0.2949438f, 0.0125732f, 1.4426352f,
-    0.3048965f, 0.0135827f, 1.4948035f, 0.3137873f, 0.0146297f, 1.5421903f,
-    0.3216454f, 0.0157151f, 1.5848807f, 0.3285000f, 0.0168400f, 1.6229600f,
-    0.3343513f, 0.0180074f, 1.6564048f, 0.3392101f, 0.0192145f, 1.6852959f,
-    0.3431213f, 0.0204539f, 1.7098745f, 0.3461296f, 0.0217182f, 1.7303821f,
-    /* 440 — 479 nm */
-    0.3482800f, 0.0230000f, 1.7470600f, 0.3495999f, 0.0242946f, 1.7600446f,
-    0.3501474f, 0.0256102f, 1.7696233f, 0.3500130f, 0.0269586f, 1.7762637f,
-    0.3492870f, 0.0283513f, 1.7804334f, 0.3480600f, 0.0298000f, 1.7826000f,
-    0.3463733f, 0.0313108f, 1.7829682f, 0.3442624f, 0.0328837f, 1.7816998f,
-    0.3418088f, 0.0345211f, 1.7791982f, 0.3390941f, 0.0362257f, 1.7758671f,
-    0.3362000f, 0.0380000f, 1.7721100f, 0.3331977f, 0.0398467f, 1.7682589f,
-    0.3300411f, 0.0417680f, 1.7640390f, 0.3266357f, 0.0437660f, 1.7589438f,
-    0.3228868f, 0.0458427f, 1.7524663f, 0.3187000f, 0.0480000f, 1.7441000f,
-    0.3140251f, 0.0502437f, 1.7335595f, 0.3088840f, 0.0525730f, 1.7208581f,
-    0.3032904f, 0.0549806f, 1.7059369f, 0.2972579f, 0.0574587f, 1.6887372f,
-    0.2908000f, 0.0600000f, 1.6692000f, 0.2839701f, 0.0626020f, 1.6475287f,
-    0.2767214f, 0.0652775f, 1.6234127f, 0.2689178f, 0.0680421f, 1.5960223f,
-    0.2604227f, 0.0709111f, 1.5645280f, 0.2511000f, 0.0739000f, 1.5281000f,
-    0.2408475f, 0.0770160f, 1.4861114f, 0.2298512f, 0.0802664f, 1.4395215f,
-    0.2184072f, 0.0836668f, 1.3898799f, 0.2068115f, 0.0872328f, 1.3387362f,
-    0.1953600f, 0.0909800f, 1.2876400f, 0.1842136f, 0.0949176f, 1.2374223f,
-    0.1733273f, 0.0990458f, 1.1878243f, 0.1626881f, 0.1033674f, 1.1387611f,
-    0.1522833f, 0.1078846f, 1.0901480f, 0.1421000f, 0.1126000f, 1.0419000f,
-    0.1321786f, 0.1175320f, 0.9941976f, 0.1225696f, 0.1226744f, 0.9473473f,
-    0.1132752f, 0.1279928f, 0.9014531f, 0.1042979f, 0.1334528f, 0.8566193f,
-    /* 480 — 519 nm */
-    0.0956400f, 0.1390200f, 0.8129501f, 0.0872996f, 0.1446764f, 0.7705173f,
-    0.0793080f, 0.1504693f, 0.7294448f, 0.0717178f, 0.1564619f, 0.6899136f,
-    0.0645810f, 0.1627177f, 0.6521049f, 0.0579500f, 0.1693000f, 0.6162000f,
-    0.0518621f, 0.1762431f, 0.5823286f, 0.0462815f, 0.1835581f, 0.5504162f,
-    0.0411509f, 0.1912735f, 0.5203376f, 0.0364128f, 0.1994180f, 0.4919673f,
-    0.0320100f, 0.2080200f, 0.4651800f, 0.0279172f, 0.2171199f, 0.4399246f,
-    0.0241444f, 0.2267345f, 0.4161836f, 0.0206870f, 0.2368571f, 0.3938822f,
-    0.0175404f, 0.2474812f, 0.3729459f, 0.0147000f, 0.2586000f, 0.3533000f,
-    0.0121618f, 0.2701849f, 0.3348578f, 0.0099200f, 0.2822939f, 0.3175521f,
-    0.0079672f, 0.2950505f, 0.3013375f, 0.0062963f, 0.3085780f, 0.2861686f,
-    0.0049000f, 0.3230000f, 0.2720000f, 0.0037772f, 0.3384021f, 0.2588171f,
-    0.0029453f, 0.3546858f, 0.2464838f, 0.0024249f, 0.3716986f, 0.2347718f,
-    0.0022363f, 0.3892875f, 0.2234533f, 0.0024000f, 0.4073000f, 0.2123000f,
-    0.0029255f, 0.4256299f, 0.2011692f, 0.0038366f, 0.4443096f, 0.1901196f,
-    0.0051748f, 0.4633944f, 0.1792254f, 0.0069821f, 0.4829395f, 0.1685608f,
-    0.0093000f, 0.5030000f, 0.1582000f, 0.0121495f, 0.5235693f, 0.1481383f,
-    0.0155359f, 0.5445120f, 0.1383758f, 0.0194775f, 0.5656900f, 0.1289942f,
-    0.0239928f, 0.5869653f, 0.1200751f, 0.0291000f, 0.6082000f, 0.1117000f,
-    0.0348149f, 0.6293456f, 0.1039048f, 0.0411202f, 0.6503068f, 0.0966675f,
-    0.0479850f, 0.6708752f, 0.0899827f, 0.0553786f, 0.6908424f, 0.0838453f,
-    /* 520 — 559 nm */
-    0.0632700f, 0.7100000f, 0.0782500f, 0.0716350f, 0.7281852f, 0.0732090f,
-    0.0804622f, 0.7454636f, 0.0686782f, 0.0897400f, 0.7619694f, 0.0645678f,
-    0.0994565f, 0.7778368f, 0.0607884f, 0.1096000f, 0.7932000f, 0.0572500f,
-    0.1201674f, 0.8081104f, 0.0539044f, 0.1311145f, 0.8224962f, 0.0507466f,
-    0.1423679f, 0.8363068f, 0.0477528f, 0.1538542f, 0.8494916f, 0.0448986f,
-    0.1655000f, 0.8620000f, 0.0421600f, 0.1772571f, 0.8738108f, 0.0395073f,
-    0.1891400f, 0.8849624f, 0.0369356f, 0.2011694f, 0.8954936f, 0.0344584f,
-    0.2133658f, 0.9054432f, 0.0320887f, 0.2257499f, 0.9148501f, 0.0298400f,
-    0.2383209f, 0.9237348f, 0.0277118f, 0.2510668f, 0.9320924f, 0.0256944f,
-    0.2639922f, 0.9399226f, 0.0237872f, 0.2771017f, 0.9472252f, 0.0219893f,
-    0.2904000f, 0.9540000f, 0.0203000f, 0.3038912f, 0.9602561f, 0.0187181f,
-    0.3175726f, 0.9660074f, 0.0172404f, 0.3314384f, 0.9712606f, 0.0158636f,
-    0.3454828f, 0.9760225f, 0.0145846f, 0.3597000f, 0.9803000f, 0.0134000f,
-    0.3740839f, 0.9840924f, 0.0123072f, 0.3886396f, 0.9874182f, 0.0113019f,
-    0.4033784f, 0.9903128f, 0.0103779f, 0.4183115f, 0.9928116f, 0.0095293f,
-    0.4334499f, 0.9949501f, 0.0087500f, 0.4487953f, 0.9967108f, 0.0080352f,
-    0.4643360f, 0.9980983f, 0.0073816f, 0.4800640f, 0.9991120f, 0.0067854f,
-    0.4959713f, 0.9997482f, 0.0062428f, 0.5120501f, 1.0000000f, 0.0057500f,
-    0.5282959f, 0.9998567f, 0.0053036f, 0.5446916f, 0.9993046f, 0.0048998f,
-    0.5612094f, 0.9983255f, 0.0045342f, 0.5778215f, 0.9968987f, 0.0042024f,
-    /* 560 — 599 nm */
-    0.5945000f, 0.9950000f, 0.0039000f, 0.6112209f, 0.9926005f, 0.0036232f,
-    0.6279758f, 0.9897426f, 0.0033706f, 0.6447602f, 0.9864444f, 0.0031414f,
-    0.6615697f, 0.9827241f, 0.0029348f, 0.6784000f, 0.9786000f, 0.0027500f,
-    0.6952392f, 0.9740837f, 0.0025852f, 0.7120586f, 0.9691712f, 0.0024386f,
-    0.7288284f, 0.9638568f, 0.0023094f, 0.7455188f, 0.9581349f, 0.0021968f,
-    0.7621000f, 0.9520000f, 0.0021000f, 0.7785432f, 0.9454504f, 0.0020177f,
-    0.7948256f, 0.9384992f, 0.0019482f, 0.8109264f, 0.9311628f, 0.0018898f,
-    0.8268248f, 0.9234576f, 0.0018409f, 0.8425000f, 0.9154000f, 0.0018000f,
-    0.8579325f, 0.9070064f, 0.0017663f, 0.8730816f, 0.8982772f, 0.0017378f,
-    0.8878944f, 0.8892048f, 0.0017112f, 0.9023181f, 0.8797816f, 0.0016831f,
-    0.9163000f, 0.8700000f, 0.0016500f, 0.9297995f, 0.8598613f, 0.0016101f,
-    0.9427984f, 0.8493920f, 0.0015644f, 0.9552776f, 0.8386220f, 0.0015136f,
-    0.9672179f, 0.8275813f, 0.0014585f, 0.9786000f, 0.8163000f, 0.0014000f,
-    0.9893856f, 0.8047947f, 0.0013367f, 0.9995488f, 0.7930820f, 0.0012700f,
-    1.0090892f, 0.7811920f, 0.0012050f, 1.0180064f, 0.7691547f, 0.0011467f,
-    1.0263000f, 0.7570000f, 0.0011000f, 1.0339827f, 0.7447541f, 0.0010688f,
-    1.0409860f, 0.7324224f, 0.0010494f, 1.0471880f, 0.7200036f, 0.0010356f,
-    1.0524667f, 0.7074965f, 0.0010212f, 1.0567000f, 0.6949000f, 0.0010000f,
-    1.0597944f, 0.6822192f, 0.0009686f, 1.0617992f, 0.6694716f, 0.0009299f,
-    1.0628068f, 0.6566744f, 0.0008869f, 1.0629096f, 0.6438448f, 0.0008426f,
-    /* 600 — 639 nm */
-    1.0622000f, 0.6310000f, 0.0008000f, 1.0607352f, 0.6181555f, 0.0007610f,
-    1.0584436f, 0.6053144f, 0.0007237f, 1.0552244f, 0.5924756f, 0.0006859f,
-    1.0509768f, 0.5796379f, 0.0006454f, 1.0456000f, 0.5668000f, 0.0006000f,
-    1.0390369f, 0.5539611f, 0.0005479f, 1.0313608f, 0.5411372f, 0.0004916f,
-    1.0226662f, 0.5283528f, 0.0004354f, 1.0130477f, 0.5156323f, 0.0003835f,
-    1.0026000f, 0.5030000f, 0.0003400f, 0.9913675f, 0.4904688f, 0.0003073f,
-    0.9793314f, 0.4780304f, 0.0002832f, 0.9664916f, 0.4656776f, 0.0002654f,
-    0.9528479f, 0.4534032f, 0.0002518f, 0.9384000f, 0.4412000f, 0.0002400f,
-    0.9231940f, 0.4290800f, 0.0002295f, 0.9072440f, 0.4170360f, 0.0002206f,
-    0.8905020f, 0.4050320f, 0.0002120f, 0.8729200f, 0.3930320f, 0.0002022f,
-    0.8544499f, 0.3810000f, 0.0001900f, 0.8350840f, 0.3689184f, 0.0001742f,
-    0.8149460f, 0.3568272f, 0.0001556f, 0.7941860f, 0.3447768f, 0.0001360f,
-    0.7729540f, 0.3328176f, 0.0001169f, 0.7514000f, 0.3210000f, 0.0001000f,
-    0.7295836f, 0.3093381f, 8.613e-05f, 0.7075888f, 0.2978504f, 7.460e-05f,
-    0.6856022f, 0.2865936f, 6.500e-05f, 0.6638104f, 0.2756245f, 5.693e-05f,
-    0.6424000f, 0.2650000f, 5.000e-05f, 0.6215149f, 0.2547632f, 4.416e-05f,
-    0.6011138f, 0.2448896f, 3.948e-05f, 0.5811052f, 0.2353344f, 3.572e-05f,
-    0.5613977f, 0.2260528f, 3.264e-05f, 0.5419000f, 0.2170000f, 3.000e-05f,
-    0.5225995f, 0.2081616f, 2.765e-05f, 0.5035464f, 0.1995488f, 2.556e-05f,
-    0.4847436f, 0.1911552f, 2.364e-05f, 0.4661939f, 0.1829744f, 2.181e-05f,
-    /* 640 — 679 nm */
-    0.4479000f, 0.1750000f, 2.000e-05f, 0.4298613f, 0.1672235f, 1.813e-05f,
-    0.4120980f, 0.1596464f, 1.620e-05f, 0.3946440f, 0.1522776f, 1.420e-05f,
-    0.3775333f, 0.1451259f, 1.213e-05f, 0.3608000f, 0.1382000f, 1.000e-05f,
-    0.3444563f, 0.1315003f, 7.733e-06f, 0.3285168f, 0.1250248f, 5.400e-06f,
-    0.3130192f, 0.1187792f, 3.200e-06f, 0.2980011f, 0.1127691f, 1.333e-06f,
-    0.2835000f, 0.1070000f, 0.0000000f, 0.2695448f, 0.1014762f, 0.0000000f,
-    0.2561184f, 0.0961886f, 0.0000000f, 0.2431896f, 0.0911230f, 0.0000000f,
-    0.2307272f, 0.0862649f, 0.0000000f, 0.2187000f, 0.0816000f, 0.0000000f,
-    0.2070971f, 0.0771206f, 0.0000000f, 0.1959232f, 0.0728255f, 0.0000000f,
-    0.1851708f, 0.0687101f, 0.0000000f, 0.1748323f, 0.0647698f, 0.0000000f,
-    0.1649000f, 0.0610000f, 0.0000000f, 0.1553667f, 0.0573962f, 0.0000000f,
-    0.1462300f, 0.0539550f, 0.0000000f, 0.1374900f, 0.0506738f, 0.0000000f,
-    0.1291467f, 0.0475497f, 0.0000000f, 0.1212000f, 0.0445800f, 0.0000000f,
-    0.1136397f, 0.0417587f, 0.0000000f, 0.1064650f, 0.0390850f, 0.0000000f,
-    0.0996904f, 0.0365638f, 0.0000000f, 0.0933306f, 0.0342005f, 0.0000000f,
-    0.0874000f, 0.0320000f, 0.0000000f, 0.0819010f, 0.0299626f, 0.0000000f,
-    0.0768043f, 0.0280766f, 0.0000000f, 0.0720771f, 0.0263294f, 0.0000000f,
-    0.0676866f, 0.0247081f, 0.0000000f, 0.0636000f, 0.0232000f, 0.0000000f,
-    0.0598069f, 0.0218008f, 0.0000000f, 0.0562822f, 0.0205011f, 0.0000000f,
-    0.0529710f, 0.0192811f, 0.0000000f, 0.0498186f, 0.0181207f, 0.0000000f,
-    /* 680 — 719 nm */
-    0.0467700f, 0.0170000f, 0.0000000f, 0.0437841f, 0.0159038f, 0.0000000f,
-    0.0408754f, 0.0148372f, 0.0000000f, 0.0380726f, 0.0138107f, 0.0000000f,
-    0.0354046f, 0.0128348f, 0.0000000f, 0.0329000f, 0.0119200f, 0.0000000f,
-    0.0305642f, 0.0110683f, 0.0000000f, 0.0283806f, 0.0102734f, 0.0000000f,
-    0.0263448f, 0.0095333f, 0.0000000f, 0.0244528f, 0.0088462f, 0.0000000f,
-    0.0227000f, 0.0082100f, 0.0000000f, 0.0210843f, 0.0076238f, 0.0000000f,
-    0.0195999f, 0.0070854f, 0.0000000f, 0.0182373f, 0.0065915f, 0.0000000f,
-    0.0169872f, 0.0061385f, 0.0000000f, 0.0158400f, 0.0057230f, 0.0000000f,
-    0.0147906f, 0.0053431f, 0.0000000f, 0.0138313f, 0.0049958f, 0.0000000f,
-    0.0129487f, 0.0046764f, 0.0000000f, 0.0121292f, 0.0043801f, 0.0000000f,
-    0.0113592f, 0.0041020f, 0.0000000f, 0.0106294f, 0.0038385f, 0.0000000f,
-    0.0099388f, 0.0035891f, 0.0000000f, 0.0092884f, 0.0033542f, 0.0000000f,
-    0.0086789f, 0.0031341f, 0.0000000f, 0.0081109f, 0.0029290f, 0.0000000f,
-    0.0075824f, 0.0027381f, 0.0000000f, 0.0070887f, 0.0025599f, 0.0000000f,
-    0.0066273f, 0.0023932f, 0.0000000f, 0.0061954f, 0.0022373f, 0.0000000f,
-    0.0057903f, 0.0020910f, 0.0000000f, 0.0054098f, 0.0019536f, 0.0000000f,
-    0.0050526f, 0.0018246f, 0.0000000f, 0.0047175f, 0.0017036f, 0.0000000f,
-    0.0044035f, 0.0015902f, 0.0000000f, 0.0041095f, 0.0014840f, 0.0000000f,
-    0.0038339f, 0.0013845f, 0.0000000f, 0.0035757f, 0.0012913f, 0.0000000f,
-    0.0033343f, 0.0012041f, 0.0000000f, 0.0031091f, 0.0011227f, 0.0000000f,
-    /* 720 — 759 nm */
-    0.0028993f, 0.0010470f, 0.0000000f, 0.0027043f, 0.0009766f, 0.0000000f,
-    0.0025230f, 0.0009111f, 0.0000000f, 0.0023542f, 0.0008501f, 0.0000000f,
-    0.0021966f, 0.0007932f, 0.0000000f, 0.0020492f, 0.0007400f, 0.0000000f,
-    0.0019110f, 0.0006901f, 0.0000000f, 0.0017814f, 0.0006433f, 0.0000000f,
-    0.0016601f, 0.0005995f, 0.0000000f, 0.0015465f, 0.0005585f, 0.0000000f,
-    0.0014400f, 0.0005200f, 0.0000000f, 0.0013400f, 0.0004839f, 0.0000000f,
-    0.0012463f, 0.0004501f, 0.0000000f, 0.0011585f, 0.0004183f, 0.0000000f,
-    0.0010764f, 0.0003887f, 0.0000000f, 0.0009999f, 0.0003611f, 0.0000000f,
-    0.0009287f, 0.0003354f, 0.0000000f, 0.0008624f, 0.0003114f, 0.0000000f,
-    0.0008008f, 0.0002892f, 0.0000000f, 0.0007434f, 0.0002685f, 0.0000000f,
-    0.0006901f, 0.0002492f, 0.0000000f, 0.0006405f, 0.0002313f, 0.0000000f,
-    0.0005945f, 0.0002147f, 0.0000000f, 0.0005519f, 0.0001993f, 0.0000000f,
-    0.0005124f, 0.0001850f, 0.0000000f, 0.0004760f, 0.0001719f, 0.0000000f,
-    0.0004425f, 0.0001598f, 0.0000000f, 0.0004115f, 0.0001486f, 0.0000000f,
-    0.0003830f, 0.0001383f, 0.0000000f, 0.0003566f, 0.0001288f, 0.0000000f,
-    0.0003323f, 0.0001200f, 0.0000000f, 0.0003098f, 0.0001119f, 0.0000000f,
-    0.0002889f, 0.0001043f, 0.0000000f, 0.0002695f, 9.734e-05f, 0.0000000f,
-    0.0002516f, 9.085e-05f, 0.0000000f, 0.0002348f, 8.480e-05f, 0.0000000f,
-    0.0002192f, 7.915e-05f, 0.0000000f, 0.0002045f, 7.386e-05f, 0.0000000f,
-    0.0001908f, 6.892e-05f, 0.0000000f, 0.0001781f, 6.430e-05f, 0.0000000f,
-    /* 760 — 799 nm */
-    0.0001662f, 6.000e-05f, 0.0000000f, 0.0001550f, 5.598e-05f, 0.0000000f,
-    0.0001446f, 5.223e-05f, 0.0000000f, 0.0001349f, 4.872e-05f, 0.0000000f,
-    0.0001259f, 4.545e-05f, 0.0000000f, 0.0001174f, 4.240e-05f, 0.0000000f,
-    0.0001096f, 3.956e-05f, 0.0000000f, 0.0001022f, 3.692e-05f, 0.0000000f,
-    9.539e-05f, 3.445e-05f, 0.0000000f, 8.902e-05f, 3.215e-05f, 0.0000000f,
-    8.308e-05f, 3.000e-05f, 0.0000000f, 7.751e-05f, 2.799e-05f, 0.0000000f,
-    7.231e-05f, 2.611e-05f, 0.0000000f, 6.746e-05f, 2.436e-05f, 0.0000000f,
-    6.293e-05f, 2.272e-05f, 0.0000000f, 5.871e-05f, 2.120e-05f, 0.0000000f,
-    5.477e-05f, 1.978e-05f, 0.0000000f, 5.110e-05f, 1.845e-05f, 0.0000000f,
-    4.768e-05f, 1.722e-05f, 0.0000000f, 4.449e-05f, 1.606e-05f, 0.0000000f,
-    4.151e-05f, 1.499e-05f, 0.0000000f, 3.873e-05f, 1.399e-05f, 0.0000000f,
-    3.614e-05f, 1.305e-05f, 0.0000000f, 3.372e-05f, 1.218e-05f, 0.0000000f,
-    3.146e-05f, 1.136e-05f, 0.0000000f, 2.935e-05f, 1.060e-05f, 0.0000000f,
-    2.738e-05f, 9.886e-06f, 0.0000000f, 2.552e-05f, 9.217e-06f, 0.0000000f,
-    2.379e-05f, 8.592e-06f, 0.0000000f, 2.218e-05f, 8.009e-06f, 0.0000000f,
-    2.067e-05f, 7.466e-06f, 0.0000000f, 1.927e-05f, 6.960e-06f, 0.0000000f,
-    1.797e-05f, 6.488e-06f, 0.0000000f, 1.675e-05f, 6.049e-06f, 0.0000000f,
-    1.562e-05f, 5.639e-06f, 0.0000000f, 1.456e-05f, 5.258e-06f, 0.0000000f,
-    1.357e-05f, 4.902e-06f, 0.0000000f, 1.265e-05f, 4.570e-06f, 0.0000000f,
-    1.180e-05f, 4.260e-06f, 0.0000000f, 1.100e-05f, 3.972e-06f, 0.0000000f,
-    /* 800 — 830 nm */
-    1.025e-05f, 3.703e-06f, 0.0000000f, 9.560e-06f, 3.452e-06f, 0.0000000f,
-    8.912e-06f, 3.218e-06f, 0.0000000f, 8.308e-06f, 3.000e-06f, 0.0000000f,
-    7.746e-06f, 2.797e-06f, 0.0000000f, 7.221e-06f, 2.608e-06f, 0.0000000f,
-    6.732e-06f, 2.431e-06f, 0.0000000f, 6.276e-06f, 2.267e-06f, 0.0000000f,
-    5.851e-06f, 2.113e-06f, 0.0000000f, 5.455e-06f, 1.970e-06f, 0.0000000f,
-    5.086e-06f, 1.837e-06f, 0.0000000f, 4.741e-06f, 1.712e-06f, 0.0000000f,
-    4.420e-06f, 1.596e-06f, 0.0000000f, 4.121e-06f, 1.488e-06f, 0.0000000f,
-    3.842e-06f, 1.387e-06f, 0.0000000f, 3.582e-06f, 1.293e-06f, 0.0000000f,
-    3.339e-06f, 1.206e-06f, 0.0000000f, 3.113e-06f, 1.124e-06f, 0.0000000f,
-    2.902e-06f, 1.048e-06f, 0.0000000f, 2.706e-06f, 9.771e-07f, 0.0000000f,
-    2.523e-06f, 9.109e-07f, 0.0000000f, 2.352e-06f, 8.493e-07f, 0.0000000f,
-    2.192e-06f, 7.917e-07f, 0.0000000f, 2.044e-06f, 7.381e-07f, 0.0000000f,
-    1.905e-06f, 6.881e-07f, 0.0000000f, 1.777e-06f, 6.415e-07f, 0.0000000f,
-    1.656e-06f, 5.981e-07f, 0.0000000f, 1.544e-06f, 5.576e-07f, 0.0000000f,
-    1.439e-06f, 5.198e-07f, 0.0000000f, 1.342e-06f, 4.846e-07f, 0.0000000f,
-    1.251e-06f, 4.518e-07f, 0.0000000f,
-};
-
-/* CIE 1964 Colorimetric Observer, aka. 10º Observer
- * for wavelengths 360 to 830. */
-#if 0
-static float cie_1964_xyz[] =
-{
-    /* 360 — 399 nm */
-    1.222e-07f, 1.340e-08f, 5.350e-07f, 1.851e-07f, 2.029e-08f, 8.107e-07f,
-    2.788e-07f, 3.056e-08f, 1.221e-06f, 4.175e-07f, 4.574e-08f, 1.829e-06f,
-    6.213e-07f, 6.805e-08f, 2.722e-06f, 9.193e-07f, 1.007e-07f, 4.028e-06f,
-    1.352e-06f, 1.480e-07f, 5.926e-06f, 1.977e-06f, 2.163e-07f, 8.665e-06f,
-    2.873e-06f, 3.142e-07f, 1.260e-05f, 4.150e-06f, 4.537e-07f, 1.820e-05f,
-    5.959e-06f, 6.511e-07f, 2.614e-05f, 8.506e-06f, 9.288e-07f, 3.733e-05f,
-    1.207e-05f, 1.318e-06f, 5.299e-05f, 1.702e-05f, 1.857e-06f, 7.476e-05f,
-    2.387e-05f, 2.602e-06f, 0.0001049f, 3.327e-05f, 3.625e-06f, 0.0001462f,
-    4.609e-05f, 5.019e-06f, 0.0002027f, 6.347e-05f, 6.907e-06f, 0.0002792f,
-    8.689e-05f, 9.449e-06f, 0.0003825f, 0.0001182f, 1.285e-05f, 0.0005207f,
-    0.0001600f, 1.736e-05f, 0.0007048f, 0.0002151f, 2.333e-05f, 0.0009482f,
-    0.0002875f, 3.115e-05f, 0.0012682f, 0.0003820f, 4.135e-05f, 0.0016861f,
-    0.0005046f, 5.456e-05f, 0.0022285f, 0.0006624f, 7.156e-05f, 0.0029278f,
-    0.0008645f, 0.0000933f, 0.0038237f, 0.0011215f, 0.0001209f, 0.0049642f,
-    0.0014462f, 0.0001556f, 0.0064067f, 0.0018536f, 0.0001992f, 0.0082193f,
-    0.0023616f, 0.0002534f, 0.0104822f, 0.0029906f, 0.0003202f, 0.0132890f,
-    0.0037645f, 0.0004024f, 0.0167470f, 0.0047102f, 0.0005023f, 0.0209800f,
-    0.0058581f, 0.0006232f, 0.0261270f, 0.0072423f, 0.0007685f, 0.0323440f,
-    0.0088996f, 0.0009417f, 0.0398020f, 0.0108709f, 0.0011478f, 0.0486910f,
-    0.0131989f, 0.0013903f, 0.0592100f, 0.0159292f, 0.0016740f, 0.0715760f,
-    /* 400 — 439 nm */
-    0.0191097f, 0.0020044f, 0.0860109f, 0.0227880f, 0.0023860f, 0.1027400f,
-    0.0270110f, 0.0028220f, 0.1220000f, 0.0318290f, 0.0033190f, 0.1440200f,
-    0.0372780f, 0.0038800f, 0.1689900f, 0.0434000f, 0.0045090f, 0.1971200f,
-    0.0502230f, 0.0052090f, 0.2285700f, 0.0577640f, 0.0059850f, 0.2634700f,
-    0.0660380f, 0.0068330f, 0.3019000f, 0.0750330f, 0.0077570f, 0.3438700f,
-    0.0847360f, 0.0087560f, 0.3893660f, 0.0950410f, 0.0098160f, 0.4379700f,
-    0.1058360f, 0.0109180f, 0.4892200f, 0.1170660f, 0.0120580f, 0.5429000f,
-    0.1286820f, 0.0132370f, 0.5988100f, 0.1406380f, 0.0144560f, 0.6567600f,
-    0.1528930f, 0.0157170f, 0.7165800f, 0.1654160f, 0.0170250f, 0.7781200f,
-    0.1781910f, 0.0183990f, 0.8413100f, 0.1912140f, 0.0198480f, 0.9061100f,
-    0.2044920f, 0.0213910f, 0.9725420f, 0.2176500f, 0.0229920f, 1.0389000f,
-    0.2302670f, 0.0245980f, 1.1031000f, 0.2423110f, 0.0262130f, 1.1651000f,
-    0.2537930f, 0.0278410f, 1.2249000f, 0.2647370f, 0.0294970f, 1.2825000f,
-    0.2751950f, 0.0311950f, 1.3382000f, 0.2853010f, 0.0329270f, 1.3926000f,
-    0.2951430f, 0.0347380f, 1.4461000f, 0.3048690f, 0.0366540f, 1.4994000f,
-    0.3146790f, 0.0386760f, 1.5534800f, 0.3243550f, 0.0407920f, 1.6072000f,
-    0.3335700f, 0.0429460f, 1.6589000f, 0.3422430f, 0.0451140f, 1.7082000f,
-    0.3503120f, 0.0473330f, 1.7548000f, 0.3577190f, 0.0496020f, 1.7985000f,
-    0.3644820f, 0.0519340f, 1.8392000f, 0.3704930f, 0.0543370f, 1.8766000f,
-    0.3757270f, 0.0568220f, 1.9105000f, 0.3801580f, 0.0593990f, 1.9408000f,
-    /* 440 — 479 nm */
-    0.3837340f, 0.0620770f, 1.9672800f, 0.3863270f, 0.0647370f, 1.9891000f,
-    0.3878580f, 0.0672850f, 2.0057000f, 0.3883960f, 0.0697640f, 2.0174000f,
-    0.3879780f, 0.0722180f, 2.0244000f, 0.3867260f, 0.0747040f, 2.0273000f,
-    0.3846960f, 0.0772720f, 2.0264000f, 0.3820060f, 0.0799790f, 2.0223000f,
-    0.3787090f, 0.0828740f, 2.0153000f, 0.3749150f, 0.0860000f, 2.0060000f,
-    0.3707020f, 0.0894560f, 1.9948000f, 0.3660890f, 0.0929470f, 1.9814000f,
-    0.3610450f, 0.0962750f, 1.9653000f, 0.3555180f, 0.0995350f, 1.9464000f,
-    0.3494860f, 0.1028290f, 1.9248000f, 0.3429570f, 0.1062560f, 1.9007000f,
-    0.3358930f, 0.1099010f, 1.8741000f, 0.3282840f, 0.1138350f, 1.8451000f,
-    0.3201500f, 0.1181670f, 1.8139000f, 0.3114750f, 0.1229320f, 1.7806000f,
-    0.3022730f, 0.1282010f, 1.7453700f, 0.2928580f, 0.1334570f, 1.7091000f,
-    0.2835020f, 0.1383230f, 1.6723000f, 0.2740440f, 0.1430420f, 1.6347000f,
-    0.2642630f, 0.1477870f, 1.5956000f, 0.2540850f, 0.1527610f, 1.5549000f,
-    0.2433920f, 0.1581020f, 1.5122000f, 0.2321870f, 0.1639410f, 1.4673000f,
-    0.2204880f, 0.1703620f, 1.4199000f, 0.2081980f, 0.1774250f, 1.3700000f,
-    0.1956180f, 0.1851900f, 1.3175600f, 0.1830340f, 0.1930250f, 1.2624000f,
-    0.1702220f, 0.2003130f, 1.2050000f, 0.1573480f, 0.2071560f, 1.1466000f,
-    0.1446500f, 0.2136440f, 1.0880000f, 0.1323490f, 0.2199400f, 1.0302000f,
-    0.1205840f, 0.2261700f, 0.9738300f, 0.1094560f, 0.2324670f, 0.9194300f,
-    0.0990420f, 0.2390250f, 0.8674600f, 0.0893880f, 0.2459970f, 0.8182800f,
-    /* 480 — 519 nm */
-    0.0805070f, 0.2535890f, 0.7721250f, 0.0720340f, 0.2618760f, 0.7282900f,
-    0.0637100f, 0.2706430f, 0.6860400f, 0.0556940f, 0.2796450f, 0.6455300f,
-    0.0481170f, 0.2886940f, 0.6068500f, 0.0410720f, 0.2976650f, 0.5700600f,
-    0.0346420f, 0.3064690f, 0.5352200f, 0.0288960f, 0.3150350f, 0.5023400f,
-    0.0238760f, 0.3233350f, 0.4714000f, 0.0196280f, 0.3313660f, 0.4423900f,
-    0.0161720f, 0.3391330f, 0.4152540f, 0.0133000f, 0.3478600f, 0.3900240f,
-    0.0107590f, 0.3583260f, 0.3663990f, 0.0085420f, 0.3700010f, 0.3440150f,
-    0.0066610f, 0.3824640f, 0.3226890f, 0.0051320f, 0.3953790f, 0.3023560f,
-    0.0039820f, 0.4084820f, 0.2830360f, 0.0032390f, 0.4215880f, 0.2648160f,
-    0.0029340f, 0.4346190f, 0.2478480f, 0.0031140f, 0.4476010f, 0.2323180f,
-    0.0038160f, 0.4607770f, 0.2185020f, 0.0050950f, 0.4743400f, 0.2058510f,
-    0.0069360f, 0.4882000f, 0.1935960f, 0.0092990f, 0.5023400f, 0.1817360f,
-    0.0121470f, 0.5167400f, 0.1702810f, 0.0154440f, 0.5313600f, 0.1592490f,
-    0.0191560f, 0.5461900f, 0.1486730f, 0.0232500f, 0.5611800f, 0.1386090f,
-    0.0276900f, 0.5762900f, 0.1290960f, 0.0324440f, 0.5915000f, 0.1202150f,
-    0.0374650f, 0.6067410f, 0.1120440f, 0.0429560f, 0.6221500f, 0.1047100f,
-    0.0491140f, 0.6378300f, 0.0981960f, 0.0559200f, 0.6537100f, 0.0923610f,
-    0.0633490f, 0.6696800f, 0.0870880f, 0.0713580f, 0.6856600f, 0.0822480f,
-    0.0799010f, 0.7015500f, 0.0777440f, 0.0889090f, 0.7172300f, 0.0734560f,
-    0.0982930f, 0.7325700f, 0.0692680f, 0.1079490f, 0.7474600f, 0.0650600f,
-    /* 520 — 559 nm */
-    0.1177490f, 0.7617570f, 0.0607090f, 0.1278390f, 0.7753400f, 0.0564570f,
-    0.1384500f, 0.7882200f, 0.0526090f, 0.1495160f, 0.8004600f, 0.0491220f,
-    0.1610410f, 0.8121400f, 0.0459540f, 0.1729530f, 0.8233300f, 0.0430500f,
-    0.1852090f, 0.8341200f, 0.0403680f, 0.1977550f, 0.8446000f, 0.0378390f,
-    0.2105380f, 0.8548700f, 0.0353840f, 0.2234600f, 0.8650400f, 0.0329490f,
-    0.2364910f, 0.8752110f, 0.0304510f, 0.2496330f, 0.8853700f, 0.0280290f,
-    0.2629720f, 0.8953700f, 0.0258620f, 0.2765150f, 0.9051500f, 0.0239200f,
-    0.2902690f, 0.9146500f, 0.0221740f, 0.3042130f, 0.9238100f, 0.0205840f,
-    0.3183610f, 0.9325500f, 0.0191270f, 0.3327050f, 0.9408100f, 0.0177400f,
-    0.3472320f, 0.9485200f, 0.0164030f, 0.3619260f, 0.9556000f, 0.0150640f,
-    0.3767720f, 0.9619880f, 0.0136760f, 0.3916830f, 0.9675400f, 0.0123080f,
-    0.4065940f, 0.9722300f, 0.0110560f, 0.4215390f, 0.9761700f, 0.0099150f,
-    0.4365170f, 0.9794600f, 0.0088720f, 0.4515840f, 0.9822000f, 0.0079180f,
-    0.4667820f, 0.9845200f, 0.0070300f, 0.4821470f, 0.9865200f, 0.0062230f,
-    0.4977380f, 0.9883200f, 0.0054530f, 0.5136060f, 0.9900200f, 0.0047140f,
-    0.5298260f, 0.9917610f, 0.0039880f, 0.5464400f, 0.9935300f, 0.0032890f,
-    0.5634260f, 0.9952300f, 0.0026460f, 0.5807260f, 0.9967700f, 0.0020630f,
-    0.5982900f, 0.9980900f, 0.0015330f, 0.6160530f, 0.9991100f, 0.0010910f,
-    0.6339480f, 0.9997700f, 0.0007110f, 0.6519010f, 1.0000000f, 0.0004070f,
-    0.6698240f, 0.9997100f, 0.0001840f, 0.6876320f, 0.9988500f, 0.0000470f,
-    /* 560 — 599 nm */
-    0.7052240f, 0.9973400f, 0.0000000f, 0.7227730f, 0.9952600f, 0.0000000f,
-    0.7404830f, 0.9927400f, 0.0000000f, 0.7582730f, 0.9897500f, 0.0000000f,
-    0.7760830f, 0.9863000f, 0.0000000f, 0.7938320f, 0.9823800f, 0.0000000f,
-    0.8114360f, 0.9779800f, 0.0000000f, 0.8288220f, 0.9731100f, 0.0000000f,
-    0.8458790f, 0.9677400f, 0.0000000f, 0.8625250f, 0.9618900f, 0.0000000f,
-    0.8786550f, 0.9555520f, 0.0000000f, 0.8942080f, 0.9486010f, 0.0000000f,
-    0.9092060f, 0.9409810f, 0.0000000f, 0.9236720f, 0.9327980f, 0.0000000f,
-    0.9376380f, 0.9241580f, 0.0000000f, 0.9511620f, 0.9151750f, 0.0000000f,
-    0.9642830f, 0.9059540f, 0.0000000f, 0.9770680f, 0.8966080f, 0.0000000f,
-    0.9895900f, 0.8872490f, 0.0000000f, 1.0019100f, 0.8779860f, 0.0000000f,
-    1.0141600f, 0.8689340f, 0.0000000f, 1.0265000f, 0.8601640f, 0.0000000f,
-    1.0388000f, 0.8515190f, 0.0000000f, 1.0510000f, 0.8429630f, 0.0000000f,
-    1.0629000f, 0.8343930f, 0.0000000f, 1.0743000f, 0.8256230f, 0.0000000f,
-    1.0852000f, 0.8167640f, 0.0000000f, 1.0952000f, 0.8075440f, 0.0000000f,
-    1.1042000f, 0.7979470f, 0.0000000f, 1.1120000f, 0.7878930f, 0.0000000f,
-    1.1185200f, 0.7774050f, 0.0000000f, 1.1238000f, 0.7664900f, 0.0000000f,
-    1.1280000f, 0.7553090f, 0.0000000f, 1.1311000f, 0.7438450f, 0.0000000f,
-    1.1332000f, 0.7321900f, 0.0000000f, 1.1343000f, 0.7203530f, 0.0000000f,
-    1.1343000f, 0.7082810f, 0.0000000f, 1.1333000f, 0.6960550f, 0.0000000f,
-    1.1312000f, 0.6836210f, 0.0000000f, 1.1281000f, 0.6710480f, 0.0000000f,
-    /* 600 — 639 nm */
-    1.1239900f, 0.6583410f, 0.0000000f, 1.1189000f, 0.6455450f, 0.0000000f,
-    1.1129000f, 0.6327180f, 0.0000000f, 1.1059000f, 0.6198150f, 0.0000000f,
-    1.0980000f, 0.6068870f, 0.0000000f, 1.0891000f, 0.5938780f, 0.0000000f,
-    1.0792000f, 0.5807810f, 0.0000000f, 1.0684000f, 0.5676530f, 0.0000000f,
-    1.0567000f, 0.5544900f, 0.0000000f, 1.0440000f, 0.5412280f, 0.0000000f,
-    1.0304800f, 0.5279630f, 0.0000000f, 1.0160000f, 0.5146340f, 0.0000000f,
-    1.0008000f, 0.5013630f, 0.0000000f, 0.9847900f, 0.4881240f, 0.0000000f,
-    0.9680800f, 0.4749350f, 0.0000000f, 0.9507400f, 0.4618340f, 0.0000000f,
-    0.9328000f, 0.4488230f, 0.0000000f, 0.9143400f, 0.4359170f, 0.0000000f,
-    0.8953900f, 0.4231530f, 0.0000000f, 0.8760300f, 0.4105260f, 0.0000000f,
-    0.8562970f, 0.3980570f, 0.0000000f, 0.8363500f, 0.3858350f, 0.0000000f,
-    0.8162900f, 0.3739510f, 0.0000000f, 0.7960500f, 0.3623110f, 0.0000000f,
-    0.7756100f, 0.3508630f, 0.0000000f, 0.7549300f, 0.3395540f, 0.0000000f,
-    0.7339900f, 0.3283090f, 0.0000000f, 0.7127800f, 0.3171180f, 0.0000000f,
-    0.6912900f, 0.3059360f, 0.0000000f, 0.6695200f, 0.2947370f, 0.0000000f,
-    0.6474670f, 0.2834930f, 0.0000000f, 0.6251100f, 0.2722220f, 0.0000000f,
-    0.6025200f, 0.2609900f, 0.0000000f, 0.5798900f, 0.2498770f, 0.0000000f,
-    0.5573700f, 0.2389460f, 0.0000000f, 0.5351100f, 0.2282540f, 0.0000000f,
-    0.5132400f, 0.2178530f, 0.0000000f, 0.4918600f, 0.2077800f, 0.0000000f,
-    0.4710800f, 0.1980720f, 0.0000000f, 0.4509600f, 0.1887480f, 0.0000000f,
-    /* 640 — 679 nm */
-    0.4315670f, 0.1798280f, 0.0000000f, 0.4128700f, 0.1712850f, 0.0000000f,
-    0.3947500f, 0.1630590f, 0.0000000f, 0.3772100f, 0.1551510f, 0.0000000f,
-    0.3601900f, 0.1475350f, 0.0000000f, 0.3436900f, 0.1402110f, 0.0000000f,
-    0.3276900f, 0.1331700f, 0.0000000f, 0.3121700f, 0.1264000f, 0.0000000f,
-    0.2971100f, 0.1198920f, 0.0000000f, 0.2825000f, 0.1136400f, 0.0000000f,
-    0.2683290f, 0.1076330f, 0.0000000f, 0.2545900f, 0.1018700f, 0.0000000f,
-    0.2413000f, 0.0963470f, 0.0000000f, 0.2284800f, 0.0910630f, 0.0000000f,
-    0.2161400f, 0.0860100f, 0.0000000f, 0.2043000f, 0.0811870f, 0.0000000f,
-    0.1929500f, 0.0765830f, 0.0000000f, 0.1821100f, 0.0721980f, 0.0000000f,
-    0.1717700f, 0.0680240f, 0.0000000f, 0.1619200f, 0.0640520f, 0.0000000f,
-    0.1525680f, 0.0602810f, 0.0000000f, 0.1436700f, 0.0566970f, 0.0000000f,
-    0.1352000f, 0.0532920f, 0.0000000f, 0.1271300f, 0.0500590f, 0.0000000f,
-    0.1194800f, 0.0469980f, 0.0000000f, 0.1122100f, 0.0440960f, 0.0000000f,
-    0.1053100f, 0.0413450f, 0.0000000f, 0.0987860f, 0.0387507f, 0.0000000f,
-    0.0926100f, 0.0362978f, 0.0000000f, 0.0867730f, 0.0339832f, 0.0000000f,
-    0.0812606f, 0.0318004f, 0.0000000f, 0.0760480f, 0.0297395f, 0.0000000f,
-    0.0711140f, 0.0277918f, 0.0000000f, 0.0664540f, 0.0259551f, 0.0000000f,
-    0.0620620f, 0.0242263f, 0.0000000f, 0.0579300f, 0.0226017f, 0.0000000f,
-    0.0540500f, 0.0210779f, 0.0000000f, 0.0504120f, 0.0196505f, 0.0000000f,
-    0.0470060f, 0.0183153f, 0.0000000f, 0.0438230f, 0.0170686f, 0.0000000f,
-    /* 680 — 719 nm */
-    0.0408508f, 0.0159051f, 0.0000000f, 0.0380720f, 0.0148183f, 0.0000000f,
-    0.0354680f, 0.0138008f, 0.0000000f, 0.0330310f, 0.0128495f, 0.0000000f,
-    0.0307530f, 0.0119607f, 0.0000000f, 0.0286230f, 0.0111303f, 0.0000000f,
-    0.0266350f, 0.0103555f, 0.0000000f, 0.0247810f, 0.0096332f, 0.0000000f,
-    0.0230520f, 0.0089599f, 0.0000000f, 0.0214410f, 0.0083324f, 0.0000000f,
-    0.0199413f, 0.0077488f, 0.0000000f, 0.0185440f, 0.0072046f, 0.0000000f,
-    0.0172410f, 0.0066975f, 0.0000000f, 0.0160270f, 0.0062251f, 0.0000000f,
-    0.0148960f, 0.0057850f, 0.0000000f, 0.0138420f, 0.0053751f, 0.0000000f,
-    0.0128620f, 0.0049941f, 0.0000000f, 0.0119490f, 0.0046392f, 0.0000000f,
-    0.0111000f, 0.0043093f, 0.0000000f, 0.0103110f, 0.0040028f, 0.0000000f,
-    0.0095769f, 0.0037177f, 0.0000000f, 0.0088940f, 0.0034526f, 0.0000000f,
-    0.0082581f, 0.0032058f, 0.0000000f, 0.0076664f, 0.0029762f, 0.0000000f,
-    0.0071163f, 0.0027628f, 0.0000000f, 0.0066052f, 0.0025646f, 0.0000000f,
-    0.0061306f, 0.0023805f, 0.0000000f, 0.0056903f, 0.0022097f, 0.0000000f,
-    0.0052819f, 0.0020513f, 0.0000000f, 0.0049033f, 0.0019045f, 0.0000000f,
-    0.0045526f, 0.0017685f, 0.0000000f, 0.0042275f, 0.0016424f, 0.0000000f,
-    0.0039258f, 0.0015254f, 0.0000000f, 0.0036457f, 0.0014167f, 0.0000000f,
-    0.0033859f, 0.0013160f, 0.0000000f, 0.0031447f, 0.0012224f, 0.0000000f,
-    0.0029208f, 0.0011356f, 0.0000000f, 0.0027130f, 0.0010549f, 0.0000000f,
-    0.0025202f, 0.0009801f, 0.0000000f, 0.0023411f, 0.0009107f, 0.0000000f,
-    /* 720 — 759 nm */
-    0.0021750f, 0.0008462f, 0.0000000f, 0.0020206f, 0.0007863f, 0.0000000f,
-    0.0018773f, 0.0007307f, 0.0000000f, 0.0017441f, 0.0006790f, 0.0000000f,
-    0.0016205f, 0.0006310f, 0.0000000f, 0.0015057f, 0.0005864f, 0.0000000f,
-    0.0013992f, 0.0005451f, 0.0000000f, 0.0013004f, 0.0005067f, 0.0000000f,
-    0.0012087f, 0.0004711f, 0.0000000f, 0.0011236f, 0.0004381f, 0.0000000f,
-    0.0010448f, 0.0004074f, 0.0000000f, 0.0009716f, 0.0003790f, 0.0000000f,
-    0.0009036f, 0.0003525f, 0.0000000f, 0.0008405f, 0.0003280f, 0.0000000f,
-    0.0007819f, 0.0003052f, 0.0000000f, 0.0007275f, 0.0002840f, 0.0000000f,
-    0.0006769f, 0.0002644f, 0.0000000f, 0.0006300f, 0.0002461f, 0.0000000f,
-    0.0005864f, 0.0002291f, 0.0000000f, 0.0005459f, 0.0002134f, 0.0000000f,
-    0.0005083f, 0.0001987f, 0.0000000f, 0.0004733f, 0.0001851f, 0.0000000f,
-    0.0004408f, 0.0001725f, 0.0000000f, 0.0004106f, 0.0001607f, 0.0000000f,
-    0.0003825f, 0.0001497f, 0.0000000f, 0.0003564f, 0.0001396f, 0.0000000f,
-    0.0003321f, 0.0001301f, 0.0000000f, 0.0003096f, 0.0001213f, 0.0000000f,
-    0.0002886f, 0.0001131f, 0.0000000f, 0.0002691f, 0.0001055f, 0.0000000f,
-    0.0002510f, 9.843e-05f, 0.0000000f, 0.0002341f, 9.185e-05f, 0.0000000f,
-    0.0002185f, 8.574e-05f, 0.0000000f, 2.0391e-4f, 8.005e-05f, 0.0000000f,
-    1.9040e-4f, 7.475e-05f, 0.0000000f, 1.7770e-4f, 6.982e-05f, 0.0000000f,
-    0.0001660f, 6.522e-05f, 0.0000000f, 0.0001550f, 6.094e-05f, 0.0000000f,
-    0.0001448f, 5.694e-05f, 0.0000000f, 0.0001353f, 5.322e-05f, 0.0000000f,
-    /* 760 — 799 nm */
-    0.0001264f, 4.974e-05f, 0.0000000f, 0.0001181f, 4.649e-05f, 0.0000000f,
-    0.0001104f, 4.346e-05f, 0.0000000f, 0.0001032f, 4.064e-05f, 0.0000000f,
-    9.643e-05f, 3.800e-05f, 0.0000000f, 9.015e-05f, 3.554e-05f, 0.0000000f,
-    8.429e-05f, 3.324e-05f, 0.0000000f, 7.883e-05f, 3.110e-05f, 0.0000000f,
-    7.373e-05f, 2.910e-05f, 0.0000000f, 6.897e-05f, 2.723e-05f, 0.0000000f,
-    6.453e-05f, 2.549e-05f, 0.0000000f, 6.038e-05f, 2.386e-05f, 0.0000000f,
-    0.0000565f, 2.233e-05f, 0.0000000f, 5.288e-05f, 2.091e-05f, 0.0000000f,
-    4.950e-05f, 1.958e-05f, 0.0000000f, 4.634e-05f, 1.834e-05f, 0.0000000f,
-    4.339e-05f, 1.718e-05f, 0.0000000f, 4.063e-05f, 1.609e-05f, 0.0000000f,
-    3.806e-05f, 1.508e-05f, 0.0000000f, 3.566e-05f, 1.413e-05f, 0.0000000f,
-    3.341e-05f, 1.325e-05f, 0.0000000f, 3.132e-05f, 1.242e-05f, 0.0000000f,
-    2.936e-05f, 1.165e-05f, 0.0000000f, 2.752e-05f, 1.093e-05f, 0.0000000f,
-    2.581e-05f, 1.025e-05f, 0.0000000f, 2.421e-05f, 9.620e-06f, 0.0000000f,
-    2.271e-05f, 9.028e-06f, 0.0000000f, 2.131e-05f, 8.474e-06f, 0.0000000f,
-    1.999e-05f, 7.955e-06f, 0.0000000f, 1.876e-05f, 7.469e-06f, 0.0000000f,
-    1.761e-05f, 7.013e-06f, 0.0000000f, 1.653e-05f, 6.586e-06f, 0.0000000f,
-    1.552e-05f, 6.186e-06f, 0.0000000f, 1.457e-05f, 5.811e-06f, 0.0000000f,
-    1.369e-05f, 5.459e-06f, 0.0000000f, 1.286e-05f, 5.130e-06f, 0.0000000f,
-    1.208e-05f, 4.821e-06f, 0.0000000f, 1.135e-05f, 4.531e-06f, 0.0000000f,
-    1.066e-05f, 4.259e-06f, 0.0000000f, 1.002e-05f, 4.004e-06f, 0.0000000f,
-    /* 800 — 830 nm */
-    9.414e-06f, 3.765e-06f, 0.0000000f, 8.848e-06f, 3.540e-06f, 0.0000000f,
-    8.317e-06f, 3.329e-06f, 0.0000000f, 7.819e-06f, 3.131e-06f, 0.0000000f,
-    7.352e-06f, 2.945e-06f, 0.0000000f, 6.913e-06f, 2.771e-06f, 0.0000000f,
-    6.502e-06f, 2.607e-06f, 0.0000000f, 6.115e-06f, 2.453e-06f, 0.0000000f,
-    5.753e-06f, 2.309e-06f, 0.0000000f, 5.413e-06f, 2.173e-06f, 0.0000000f,
-    5.093e-06f, 2.046e-06f, 0.0000000f, 4.794e-06f, 1.927e-06f, 0.0000000f,
-    4.513e-06f, 1.814e-06f, 0.0000000f, 4.248e-06f, 1.709e-06f, 0.0000000f,
-    4.000e-06f, 1.610e-06f, 0.0000000f, 3.767e-06f, 1.517e-06f, 0.0000000f,
-    3.548e-06f, 1.429e-06f, 0.0000000f, 3.342e-06f, 1.347e-06f, 0.0000000f,
-    3.149e-06f, 1.269e-06f, 0.0000000f, 2.967e-06f, 1.197e-06f, 0.0000000f,
-    2.795e-06f, 1.128e-06f, 0.0000000f, 2.635e-06f, 1.064e-06f, 0.0000000f,
-    2.483e-06f, 1.003e-06f, 0.0000000f, 2.341e-06f, 9.462e-07f, 0.0000000f,
-    2.208e-06f, 8.926e-07f, 0.0000000f, 2.082e-06f, 8.422e-07f, 0.0000000f,
-    1.964e-06f, 7.946e-07f, 0.0000000f, 1.852e-06f, 7.498e-07f, 0.0000000f,
-    1.747e-06f, 7.074e-07f, 0.0000000f, 1.647e-06f, 6.675e-07f, 0.0000000f,
-    1.553e-06f, 6.297e-07f, 0.0000000f,
-};
-#endif
-
-vec3 Color::WavelengthToCIExyY(float nm)
-{
-    nm -= 360.f;
-
-    int i = (int)nm;
-    if (i < 0 || i > 830 - 360)
-        return vec3::zero;
-
-    float t = nm - i;
-    float x = lol::lerp(cie_1931_xyz[i * 3 + 0], cie_1931_xyz[i * 3 + 3], t);
-    float y = lol::lerp(cie_1931_xyz[i * 3 + 1], cie_1931_xyz[i * 3 + 4], t);
-    float z = lol::lerp(cie_1931_xyz[i * 3 + 2], cie_1931_xyz[i * 3 + 5], t);
-    float normalize = 1.f / (x + y + z);
-
-    return vec3(x * normalize, y * normalize, 100.0f);
-}
-
-} /* namespace lol */
-
diff --git a/src/image/color/color.cpp b/src/image/color/color.cpp
deleted file mode 100644
index 0df0e37a..00000000
--- a/src/image/color/color.cpp
+++ /dev/null
@@ -1,140 +0,0 @@
-//
-//  Lol Engine
-//
-//  Copyright © 2010—2018 Sam Hocevar <sam@hocevar.net>
-//
-//  Lol Engine is free software. It comes without any warranty, to
-//  the extent permitted by applicable law. You can redistribute it
-//  and/or modify it under the terms of the Do What the Fuck You Want
-//  to Public License, Version 2, as published by the WTFPL Task Force.
-//  See http://www.wtfpl.net/ for more details.
-//
-
-#include <lol/engine-internal.h>
-
-namespace lol
-{
-
-/*
- * Hardcoded constants for colours
- */
-vec4 const Color::black      = vec4(0, 0, 0, 1);
-vec4 const Color::red        = vec4(1, 0, 0, 1);
-vec4 const Color::green      = vec4(0, 1, 0, 1);
-vec4 const Color::yellow     = vec4(1, 1, 0, 1);
-vec4 const Color::blue       = vec4(0, 0, 1, 1);
-vec4 const Color::magenta    = vec4(1, 0, 1, 1);
-vec4 const Color::cyan       = vec4(0, 1, 1, 1);
-vec4 const Color::white      = vec4(1, 1, 1, 1);
-vec4 const Color::dark_gray  = vec4(.25f, .25f, .25f, 1);
-vec4 const Color::gray       = vec4(.5f, .5f, .5f, 1);
-vec4 const Color::light_gray = vec4(.75f, .75f, .75f, 1);
-
-/*
- * Conversion from colours to hexadecimal
- */
-std::string Color::HexString4Bpp(vec3 c)
-{
-    uvec3 c2 = (uvec3)(clamp(c, 0.f, 1.f) * 255.999f);
-    return format("%01x%01x%01x", c2.r, c2.g, c2.b);
-}
-
-std::string Color::HexString4Bpp(vec4 c)
-{
-    uvec4 c2 = (uvec4)(clamp(c, 0.f, 1.f) * 15.999f);
-    return format("%01x%1x%01x%01x", c2.r, c2.g, c2.b, c2.a);
-}
-
-std::string Color::HexString8Bpp(vec3 c)
-{
-    uvec3 c2 = (uvec3)(clamp(c, 0.f, 1.f) * 255.999f);
-    return format("%02x%02x%02x", c2.r, c2.g, c2.b);
-}
-
-std::string Color::HexString8Bpp(vec4 c)
-{
-    uvec4 c2 = (uvec4)(clamp(c, 0.f, 1.f) * 15.999f);
-    return format("%02x%2x%02x%02x", c2.r, c2.g, c2.b, c2.a);
-}
-
-/*
-* Convert uint color to vec4.
-*/
-vec4 Color::FromRGBA32(uint32_t c)
-{
-    ivec4 v(c >> 24, (c >> 16) & 0xff, (c >> 8) & 0xff, c & 0xff);
-    return vec4(v) * (1.f / 255.f);
-}
-vec4 Color::FromRGB32(uint32_t c)
-{
-    return Color::FromRGBA32((c << 8) | 0x000000ffu);
-}
-vec4 Color::FromRGBA16(uint16_t c)
-{
-    return Color::FromRGBA32
-        ( 0x11000000u * (c >> 12)
-        | 0x00110000u * ((c >> 8) & 0xf)
-        | 0x00001100u * ((c >> 4) & 0xf)
-        | 0x00000011u * (c & 0xf));
-}
-vec4 Color::FromRGB16(uint16_t c)
-{
-    return Color::FromRGBA16((c << 4) | 0xfu);
-}
-
-/*
-* Convert uint color to vec4.
-*/
-uint32_t Color::ToRGBA32(vec4 c)
-{
-    ivec4 v(c * 0xff);
-    return (uint32_t)((v.r << 24) | (v.g << 16) | (v.b << 8) | v.a);
-}
-uint32_t Color::ToRGB32(vec4 c)
-{
-    ivec4 v(c * 0xff);
-    return (uint32_t)((v.r << 16) | (v.g << 8) | v.b);
-}
-uint16_t Color::ToRGBA16(vec4 c)
-{
-    ivec4 v(c * 0xf);
-    return (uint16_t)((v.r << 12) | (v.g << 8) | (v.b << 4) | v.a);
-}
-uint16_t Color::ToRGB16(vec4 c)
-{
-    ivec4 v(c * 0xf);
-    return (uint16_t)((v.r << 8) | (v.g << 4) | v.b);
-}
-
-/*
-* Conversion from colours to hexadecimal
-*/
-vec4 Color::C8BppHexString(std::string const &s)
-{
-    std::string c = s[0] == '#' ? &s[1] : s;
-    uint32_t tmp = std::strtol(c.c_str(), nullptr, 16);
-    if (c.length() == 3)
-    {
-        tmp = 0x11000000u * (tmp >> 8)
-            | 0x00110000u * ((tmp >> 4) & 0xf)
-            | 0x00001100u * (tmp & 0xf)
-            | 0x000000ffu;
-    }
-    else if (c.length() == 4)
-    {
-        tmp = 0x11000000u * (tmp >> 12)
-            | 0x00110000u * ((tmp >> 8) & 0xf)
-            | 0x00001100u * ((tmp >> 4) & 0xf)
-            | 0x00000011u * (tmp & 0xf);
-    }
-    else if (c.length() == 6)
-    {
-        tmp = 0xffu | 0x100u * tmp;
-    }
-    vec4 color(0.f);
-    ivec4 v(tmp >> 24, (tmp >> 16) & 0xff, (tmp >> 8) & 0xff, tmp & 0xff);
-    return vec4(v) * (1.f / 255.f);
-}
-
-} /* namespace lol */
-
diff --git a/src/image/combine.cpp b/src/image/combine.cpp
deleted file mode 100644
index d37fc832..00000000
--- a/src/image/combine.cpp
+++ /dev/null
@@ -1,153 +0,0 @@
-//
-//  Lol Engine
-//
-//  Copyright © 2004—2017 Sam Hocevar <sam@hocevar.net>
-//
-//  Lol Engine is free software. It comes without any warranty, to
-//  the extent permitted by applicable law. You can redistribute it
-//  and/or modify it under the terms of the Do What the Fuck You Want
-//  to Public License, Version 2, as published by the WTFPL Task Force.
-//  See http://www.wtfpl.net/ for more details.
-//
-
-#include <lol/engine-internal.h>
-
-/*
- * Image merge operations: merge, min/max, overlay, screen, multiply,
- * divide, add, sub, difference
- */
-
-namespace lol
-{
-
-enum class MergeMode
-{
-    Mix,
-    Min,
-    Max,
-    Overlay,
-    Screen,
-    Divide,
-    Multiply,
-    Add,
-    Sub,
-    Difference,
-};
-
-template<PixelFormat FORMAT, MergeMode MODE>
-static image generic_merge(image &src1, image &src2, float alpha)
-{
-    typedef typename PixelType<FORMAT>::type pixel_t;
-
-    ASSERT(src1.size() == src2.size());
-    int const count = src1.size().x * src2.size().y;
-
-    image dst(src1.size());
-
-    pixel_t const *src1p = src1.lock<FORMAT>();
-    pixel_t const *src2p = src2.lock<FORMAT>();
-    pixel_t *dstp = dst.lock<FORMAT>();
-
-    for (int n = 0; n < count; ++n)
-    {
-        if (MODE == MergeMode::Mix)
-            dstp[n] = lol::mix(src1p[n], src2p[n], alpha);
-        else if (MODE == MergeMode::Min)
-            dstp[n] = lol::min(src1p[n], src2p[n]);
-        else if (MODE == MergeMode::Max)
-            dstp[n] = lol::max(src1p[n], src2p[n]);
-        else if (MODE == MergeMode::Overlay)
-            dstp[n] = src1p[n] * (src1p[n] + 2.f * src2p[n]
-                                                 * (pixel_t(1.f) - src1p[n]));
-        else if (MODE == MergeMode::Screen)
-            dstp[n] = src1p[n] + src2p[n] - src1p[n] * src2p[n];
-        else if (MODE == MergeMode::Divide)
-            dstp[n] = src1p[n] / (lol::max(src1p[n], src2p[n]) + pixel_t(1e-8f));
-        else if (MODE == MergeMode::Multiply)
-            dstp[n] = src1p[n] * src2p[n];
-        else if (MODE == MergeMode::Add)
-            dstp[n] = lol::min(src1p[n] + src2p[n], pixel_t(1.f));
-        else if (MODE == MergeMode::Sub)
-            dstp[n] = lol::max(src1p[n] - src2p[n], pixel_t(0.f));
-        else if (MODE == MergeMode::Difference)
-            dstp[n] = lol::abs(src1p[n] - src2p[n]);
-    }
-
-    src1.unlock(src1p);
-    src2.unlock(src2p);
-    dst.unlock(dstp);
-
-    return dst;
-}
-
-template<MergeMode MODE>
-static image generic_merge(image &src1, image &src2, float alpha)
-{
-    bool gray1 = src1.format() == PixelFormat::Y_8
-                  || src1.format() == PixelFormat::Y_F32;
-    bool gray2 = src2.format() == PixelFormat::Y_8
-                  || src2.format() == PixelFormat::Y_F32;
-    if (gray1 && gray2)
-        return generic_merge<PixelFormat::Y_F32, MODE>(src1, src2, alpha);
-    else
-        return generic_merge<PixelFormat::RGBA_F32, MODE>(src1, src2, alpha);
-
-}
-
-image image::Merge(image &src1, image &src2, float alpha)
-{
-    return generic_merge<MergeMode::Mix>(src1, src2, alpha);
-}
-
-image image::Mean(image &src1, image &src2)
-{
-    return generic_merge<MergeMode::Mix>(src1, src2, 0.5f);
-}
-
-image image::Min(image &src1, image &src2)
-{
-    return generic_merge<MergeMode::Min>(src1, src2, 0.0f);
-}
-
-image image::Max(image &src1, image &src2)
-{
-    return generic_merge<MergeMode::Max>(src1, src2, 0.0f);
-}
-
-image image::Overlay(image &src1, image &src2)
-{
-    return generic_merge<MergeMode::Overlay>(src1, src2, 0.0f);
-}
-
-image image::Screen(image &src1, image &src2)
-{
-    return generic_merge<MergeMode::Screen>(src1, src2, 0.0f);
-}
-
-image image::Divide(image &src1, image &src2)
-{
-    return generic_merge<MergeMode::Divide>(src1, src2, 0.0f);
-}
-
-image image::Multiply(image &src1, image &src2)
-{
-    return generic_merge<MergeMode::Multiply>(src1, src2, 0.0f);
-}
-
-image image::Add(image &src1, image &src2)
-{
-    return generic_merge<MergeMode::Add>(src1, src2, 0.0f);
-}
-
-image image::Sub(image &src1, image &src2)
-{
-    return generic_merge<MergeMode::Sub>(src1, src2, 0.0f);
-}
-
-image image::Difference(image &src1, image &src2)
-{
-    return generic_merge<MergeMode::Difference>(src1, src2, 0.0f);
-}
-
-} /* namespace lol */
-
diff --git a/src/image/crop.cpp b/src/image/crop.cpp
deleted file mode 100644
index 707ea85f..00000000
--- a/src/image/crop.cpp
+++ /dev/null
@@ -1,68 +0,0 @@
-//
-//  Lol Engine
-//
-//  Copyright © 2004—2017 Sam Hocevar <sam@hocevar.net>
-//
-//  Lol Engine is free software. It comes without any warranty, to
-//  the extent permitted by applicable law. You can redistribute it
-//  and/or modify it under the terms of the Do What the Fuck You Want
-//  to Public License, Version 2, as published by the WTFPL Task Force.
-//  See http://www.wtfpl.net/ for more details.
-//
-
-#include <lol/engine-internal.h>
-
-#include "image-private.h"
-
-/*
- * Image cropping functions
- */
-
-namespace lol
-{
-
-image image::Crop(ibox2 box) const
-{
-    ivec2 const srcsize = size();
-    ivec2 const dstsize = box.extent();
-
-    image dst(dstsize);
-    PixelFormat fmt = format();
-
-    if (fmt != PixelFormat::Unknown)
-    {
-        dst.set_format(fmt);
-        uint8_t const *srcp = (uint8_t const *)m_data->m_pixels[(int)fmt];
-        uint8_t *dstp = (uint8_t *)dst.m_data->m_pixels[(int)fmt];
-        uint8_t bpp = BytesPerPixel(fmt);
-
-        int len = dstsize.x;
-
-        if (box.aa.x < 0)
-        {
-            len += box.aa.x;
-            box.aa.x = 0;
-        }
-
-        if (box.aa.x + len > srcsize.x)
-            len = srcsize.x - box.aa.x;
-
-        if (len > 0)
-        {
-            for (int y = 0; y < dstsize.y; y++)
-            {
-                if (y + box.aa.y < 0 || y + box.aa.y >= srcsize.y)
-                    continue;
-
-                memcpy(dstp + y * dstsize.x * bpp,
-                       srcp + ((y + box.aa.y) * srcsize.x + box.aa.x) * bpp,
-                       len * bpp);
-            }
-        }
-    }
-
-    return dst;
-}
-
-} /* namespace lol */
-
diff --git a/src/image/dither/dbs.cpp b/src/image/dither/dbs.cpp
deleted file mode 100644
index 34885fb6..00000000
--- a/src/image/dither/dbs.cpp
+++ /dev/null
@@ -1,186 +0,0 @@
-//
-//  Lol Engine
-//
-//  Copyright © 2004—2019 Sam Hocevar <sam@hocevar.net>
-//
-//  Lol Engine is free software. It comes without any warranty, to
-//  the extent permitted by applicable law. You can redistribute it
-//  and/or modify it under the terms of the Do What the Fuck You Want
-//  to Public License, Version 2, as published by the WTFPL Task Force.
-//  See http://www.wtfpl.net/ for more details.
-//
-
-#include <lol/engine-internal.h>
-
-/*
- * Direct Binary Search dithering
- */
-
-#define CELL 16
-
-#define N 7
-#define NN ((N * 2 + 1))
-
-namespace lol
-{
-
-/* FIXME: though the algorithm is supposed to stop, we do not have a real,
- * guaranteed stop condition here. */
-image image::dither_dbs() const
-{
-    ivec2 isize = size();
-
-    /* Build our human visual system kernel. */
-    array2d<float> ker;
-    ker.resize(ivec2(NN, NN));
-    float t = 0.f;
-    for (int j = 0; j < NN; j++)
-        for (int i = 0; i < NN; i++)
-        {
-            vec2 v = vec2((float)(i - N), (float)(j - N));
-            ker[i][j] = exp(-sqlength(v / 1.6f) / 2.f)
-                      + exp(-sqlength(v / 0.6f) / 2.f);
-            t += ker[i][j];
-        }
-
-    for (int j = 0; j < NN; j++)
-        for (int i = 0; i < NN; i++)
-            ker[i][j] /= t;
-
-    /* A list of cells in our picture. If no change is done to a cell
-     * for two iterations, we stop considering changes to it. */
-    ivec2 const csize = (isize + ivec2(CELL - 1)) / CELL;
-    array2d<int> changelist(csize);
-    memset(changelist.data(), 0, changelist.bytes());
-
-    image dst = *this;
-    dst.set_format(PixelFormat::Y_F32);
-
-    image tmp1 = dst.Convolution(ker);
-    array2d<float> &tmp1data = tmp1.lock2d<PixelFormat::Y_F32>();
-
-    dst = dst.dither_random();
-    array2d<float> &dstdata = dst.lock2d<PixelFormat::Y_F32>();
-
-    image tmp2 = dst.Convolution(ker);
-    array2d<float> &tmp2data = tmp2.lock2d<PixelFormat::Y_F32>();
-
-    for (int run = 0, last_change = 0; ; ++run)
-    {
-        int const cell = run % (csize.x * csize.y);
-        int const cx = cell % csize.x;
-        int const cy = cell / csize.x;
-
-        /* Bail out if no change was done for the last full image run */
-        if (run > last_change + csize.x * csize.y)
-            break;
-
-        /* Skip cell if it was already ignored twice */
-        if (changelist[cx][cy] >= 2)
-            continue;
-
-        int changes = 0;
-
-        for (int pixel = 0; pixel < CELL * CELL; ++pixel)
-        {
-            ivec2 const pos(cx * CELL + pixel % CELL,
-                            cy * CELL + pixel / CELL);
-
-            if (!(pos >= ivec2(0)) || !(pos < isize))
-                continue;
-
-            /* The best operation we can do */
-            ivec2 best_op(0);
-            float best_error = 0.f;
-
-            float d = dstdata[pos];
-
-            /* Compute the effect of all possible toggle and swaps */
-            static ivec2 const op_list[] =
-            {
-                { 0, 0 },
-                { 0, 1 },   { 0, -1 }, { -1, 0 }, { 1, 0 },
-                { -1, -1 }, { -1, 1 }, { 1, -1 }, { 1, 1 },
-            };
-
-            for (ivec2 const op : op_list)
-            {
-                if (!(pos + op >= ivec2(0)) || !(pos + op < isize))
-                    continue;
-
-                bool flip = (op == ivec2(0));
-
-                float d2 = flip ? 1 - d : dstdata[pos + op];
-
-                if (!flip && d2 == d)
-                    continue;
-
-                /* TODO: implement min/max for 3+ arguments */
-                int imin = max(max(-N, op.x - N), -pos.x);
-                int imax = min(min(N + 1, op.x + NN - N), isize.x - pos.x);
-                int jmin = max(max(-N, op.y - N), -pos.y);
-                int jmax = min(min(N + 1, op.y + NN - N), isize.y - pos.y);
-
-                float error = 0.f;
-                for (int j = jmin; j < jmax; j++)
-                for (int i = imin; i < imax; i++)
-                {
-                    ivec2 pos2 = pos + ivec2(i, j);
-
-                    float m = ker[i + N][j + N];
-                    if (!flip)
-                        m -= ker[i - op.x + N][j - op.y + N];
-                    float p = tmp1data[pos2];
-                    float q1 = tmp2data[pos2];
-                    float q2 = q1 + m * (d2 - d);
-                    error += sq(q1 - p) - sq(q2 - p);
-                }
-
-                if (error > best_error)
-                {
-                    best_error = error;
-                    best_op = op;
-                }
-            }
-
-            /* Only apply the change if interesting */
-            if (best_error > 0.f)
-            {
-                bool flip = (best_op == ivec2(0));
-
-                float d2 = flip ? 1 - d : dstdata[pos + best_op];
-                dstdata[pos + best_op] = d;
-                dstdata[pos] = d2;
-
-                for (int j = -N; j <= N; j++)
-                for (int i = -N; i <= N; i++)
-                {
-                    ivec2 off(i, j);
-                    float delta = (d2 - d) * ker[i + N][j + N];
-
-                    if (pos + off >= ivec2(0) && pos + off < isize)
-                        tmp2data[pos + off] += delta;
-
-                    if (!flip && pos + off + best_op >= ivec2(0)
-                         && pos + off + best_op < isize)
-                        tmp2data[pos + off + best_op] -= delta;
-                }
-
-                ++changes;
-                last_change = run;
-            }
-        }
-
-        if (changes == 0)
-            ++changelist[cx][cy];
-    }
-
-    tmp1.unlock2d(tmp1data);
-    tmp2.unlock2d(tmp2data);
-    dst.unlock2d(dstdata);
-
-    return dst;
-}
-
-} /* namespace lol */
-
diff --git a/src/image/dither/ediff.cpp b/src/image/dither/ediff.cpp
deleted file mode 100644
index 5ff69428..00000000
--- a/src/image/dither/ediff.cpp
+++ /dev/null
@@ -1,76 +0,0 @@
-//
-//  Lol Engine
-//
-//  Copyright © 2004—2017 Sam Hocevar <sam@hocevar.net>
-//
-//  Lol Engine is free software. It comes without any warranty, to
-//  the extent permitted by applicable law. You can redistribute it
-//  and/or modify it under the terms of the Do What the Fuck You Want
-//  to Public License, Version 2, as published by the WTFPL Task Force.
-//  See http://www.wtfpl.net/ for more details.
-//
-
-#include <lol/engine-internal.h>
-
-/*
- * Generic error diffusion functions
- */
-
-namespace lol
-{
-
-/* Perform a generic error diffusion dithering. The first non-zero
- * element in ker is treated as the current pixel. All other non-zero
- * elements are the error diffusion coefficients.
- * Making the matrix generic is not terribly slower: the performance
- * hit is around 4% for Floyd-Steinberg and 13% for JaJuNi, with the
- * benefit of a lot less code. */
-image image::dither_ediff(array2d<float> const &ker, ScanMode scan) const
-{
-    image dst = *this;
-
-    ivec2 isize = dst.size();
-    ivec2 ksize = ker.size();
-
-    int kx;
-    for (kx = 0; kx < ksize.x; kx++)
-        if (ker[kx][0] > 0.f)
-            break;
-
-    float *pixels = dst.lock<PixelFormat::Y_F32>();
-    for (int y = 0; y < isize.y; y++)
-    {
-        bool reverse = (y & 1) && (scan == ScanMode::Serpentine);
-
-        for (int x = 0; x < isize.x; x++)
-        {
-            int x2 = reverse ? isize.x - 1 - x : x;
-            int s = reverse ? -1 : 1;
-
-            float p = pixels[y * isize.x + x2];
-            float q = p < 0.5f ? 0.f : 1.f;
-            pixels[y * isize.x + x2] = q;
-
-            float e = (p - q);
-
-            for (int j = 0; j < ksize.y && y < isize.y - j; j++)
-                for (int i = 0; i < ksize.x; i++)
-                {
-                    if (j == 0 && i <= kx)
-                        continue;
-
-                    if (x + i - kx < 0 || x + i - kx >= isize.x)
-                        continue;
-
-                    pixels[(y + j) * isize.x + x2 + (i - kx) * s]
-                       += e * ker[i][j];
-                }
-        }
-    }
-    dst.unlock(pixels);
-
-    return dst;
-}
-
-} /* namespace lol */
-
diff --git a/src/image/dither/ordered.cpp b/src/image/dither/ordered.cpp
deleted file mode 100644
index 8dc4f808..00000000
--- a/src/image/dither/ordered.cpp
+++ /dev/null
@@ -1,72 +0,0 @@
-//
-//  Lol Engine
-//
-//  Copyright © 2004—2019 Sam Hocevar <sam@hocevar.net>
-//
-//  Lol Engine is free software. It comes without any warranty, to
-//  the extent permitted by applicable law. You can redistribute it
-//  and/or modify it under the terms of the Do What the Fuck You Want
-//  to Public License, Version 2, as published by the WTFPL Task Force.
-//  See http://www.wtfpl.net/ for more details.
-//
-
-#include <lol/engine-internal.h>
-
-/*
- * Bayer ordered dithering functions
- */
-
-namespace lol
-{
-
-static image dither_helper(image const &img, array2d<float> const &ker,
-                           float scale, float angle);
-
-image image::dither_ordered(array2d<float> const &ker) const
-{
-    return dither_helper(*this, ker, 1.0f, 0.0f);
-}
-
-image image::dither_halftone(float radius, float angle) const
-{
-    /* Increasing the precision is necessary or the rotation will look
-     * like crap. So we create a kernel PRECISION times larger, and ask
-     * the ditherer to scale it by 1/PRECISION. */
-    float const PRECISION = 4.f;
-    int k = (int)std::round(radius * PRECISION * lol::sqrt(2.f));
-    array2d<float> ker = image::kernel::halftone(ivec2(k, k));
-
-    return dither_helper(*this, ker, 1.f / PRECISION, angle + F_PI / 4.f);
-}
-
-static image dither_helper(image const &img, array2d<float> const &ker,
-                           float scale, float angle)
-{
-    ivec2 isize = img.size();
-    ivec2 ksize = ker.size();
-
-    float cost = lol::cos(angle);
-    float sint = lol::sin(angle);
-
-    image ret = img;
-    float *dstp = ret.lock<PixelFormat::Y_F32>();
-
-    for (int y = 0; y < isize.y; y++)
-    {
-        for (int x = 0; x < isize.x; x++)
-        {
-            int kx = (int)((cost * x - sint * y + 2 * isize.x * isize.y) / scale) % ksize.x;
-            int ky = (int)((cost * y + sint * x + 2 * isize.x * isize.y) / scale) % ksize.y;
-
-            float p = dstp[y * isize.x + x];
-            dstp[y * isize.x + x] = (p > ker[kx][ky]) ? 1.f : 0.f;
-        }
-    }
-
-    ret.unlock(dstp);
-
-    return ret;
-}
-
-} /* namespace lol */
-
diff --git a/src/image/dither/ostromoukhov.cpp b/src/image/dither/ostromoukhov.cpp
deleted file mode 100644
index b392a867..00000000
--- a/src/image/dither/ostromoukhov.cpp
+++ /dev/null
@@ -1,114 +0,0 @@
-//
-//  Lol Engine
-//
-//  Copyright © 2004—2017 Sam Hocevar <sam@hocevar.net>
-//
-//  Lol Engine is free software. It comes without any warranty, to
-//  the extent permitted by applicable law. You can redistribute it
-//  and/or modify it under the terms of the Do What the Fuck You Want
-//  to Public License, Version 2, as published by the WTFPL Task Force.
-//  See http://www.wtfpl.net/ for more details.
-//
-
-#include <lol/engine-internal.h>
-
-/*
- * Ostromoukhov dithering functions
- *
- * This module implements Ostromoukhov's simple error diffusion algorithm,
- * as introduced in the paper "A Simple and Efficient Error-Diffusion
- * Algorithm", Proceedings of SIGGRAPH 2001, in ACM Computer Graphics,
- * Annual Conference Series, pp. 567--572, 2001.
- *
- * Note: the authors initially provided a large data table, but we
- * manually converted it to a piecewise linear function.
- */
-
-namespace lol
-{
-
-static inline vec3 GetDiffusion(float v)
-{
-    static vec3 const table[] =
-    {
-        vec3(0.0000f, 0.2777f, 0.0000f),
-        vec3(0.0039f, 0.2777f, 0.0000f),
-        vec3(0.0117f, 0.3636f, 0.0000f),
-        vec3(0.0157f, 0.3846f, 0.0000f),
-        vec3(0.0392f, 0.2308f, 0.2308f),
-        vec3(0.0863f, 0.1667f, 0.3333f),
-        vec3(0.1255f, 0.3878f, 0.2041f),
-        vec3(0.2510f, 0.0000f, 0.4762f),
-        vec3(0.2824f, 0.0769f, 0.5385f),
-        vec3(0.3020f, 0.1667f, 0.1667f),
-        vec3(0.3333f, 0.1667f, 0.1667f),
-        vec3(0.3725f, 0.2000f, 0.3000f),
-        vec3(0.4196f, 0.2000f, 0.3000f),
-        vec3(0.4980f, 0.1667f, 0.1667f),
-        vec3(1.0000f, 0.1667f, 0.1667f), /* Safe value */
-    };
-
-    vec3 ret(0.1667f);
-
-    if (v > 0.5f)
-       v = 1.f - v;
-    if (v < 0.f)
-       v = 0.f;
-
-    for (unsigned int i = 1; i < sizeof(table) / sizeof(table[0]); ++i)
-    {
-        if (v <= table[i][0])
-        {
-            ret[1] = lol::mix(table[i - 1][1], table[i][1],
-                         (table[i][0] - v) / (table[i][0] - table[i - 1][0]));
-            ret[2] = lol::mix(table[i - 1][2], table[i][2],
-                         (table[i][0] - v) / (table[i][0] - table[i - 1][0]));
-            break;
-        }
-    }
-
-    ret[0] = 1.f - ret[1] - ret[2];
-    return ret;
-}
-
-image image::dither_ostromoukhov(ScanMode scan) const
-{
-    image dst = *this;
-
-    float *pixels = dst.lock<PixelFormat::Y_F32>();
-    int w = dst.size().x;
-    int h = dst.size().y;
-
-    for (int y = 0; y < h; y++)
-    {
-        bool reverse = (y & 1) && (scan == ScanMode::Serpentine);
-
-        for (int x = 0; x < w; x++)
-        {
-            int x2 = reverse ? w - 1 - x : x;
-            int s = reverse ? -1 : 1;
-
-            float p = pixels[y * w + x2];
-            float q = p < 0.5f ? 0.f : 1.f;
-            pixels[y * w + x2] = q;
-
-            vec3 e = (p - q) * GetDiffusion(p);
-
-            if(x < w - 1)
-                pixels[y * w + x2 + s] += e[0];
-            if(y < h - 1)
-            {
-                if(x > 0)
-                    pixels[(y + 1) * w + x2 - s] += e[1];
-                pixels[(y + 1) * w + x2] += e[2];
-            }
-        }
-    }
-
-    dst.unlock(pixels);
-
-    return dst;
-}
-
-} /* namespace lol */
-
diff --git a/src/image/dither/random.cpp b/src/image/dither/random.cpp
deleted file mode 100644
index 283f6e3b..00000000
--- a/src/image/dither/random.cpp
+++ /dev/null
@@ -1,40 +0,0 @@
-//
-//  Lol Engine
-//
-//  Copyright © 2004—2017 Sam Hocevar <sam@hocevar.net>
-//
-//  Lol Engine is free software. It comes without any warranty, to
-//  the extent permitted by applicable law. You can redistribute it
-//  and/or modify it under the terms of the Do What the Fuck You Want
-//  to Public License, Version 2, as published by the WTFPL Task Force.
-//  See http://www.wtfpl.net/ for more details.
-//
-
-#include <lol/engine-internal.h>
-
-/*
- * Random dithering
- */
-
-namespace lol
-{
-
-image image::dither_random() const
-{
-    image dst = *this;
-
-    float *pixels = dst.lock<PixelFormat::Y_F32>();
-    int count = size().x * size().y;
-
-    for (int n = 0; n < count; ++n)
-    {
-        pixels[n] = (pixels[n] > lol::rand(0.5f)) ? 1.f : 0.f;
-    }
-
-    dst.unlock(pixels);
-
-    return dst;
-}
-
-} /* namespace lol */
-
diff --git a/src/image/filter/colors.cpp b/src/image/filter/colors.cpp
deleted file mode 100644
index 6ab1c4e6..00000000
--- a/src/image/filter/colors.cpp
+++ /dev/null
@@ -1,189 +0,0 @@
-//
-//  Lol Engine
-//
-//  Copyright © 2004—2017 Sam Hocevar <sam@hocevar.net>
-//
-//  Lol Engine is free software. It comes without any warranty, to
-//  the extent permitted by applicable law. You can redistribute it
-//  and/or modify it under the terms of the Do What the Fuck You Want
-//  to Public License, Version 2, as published by the WTFPL Task Force.
-//  See http://www.wtfpl.net/ for more details.
-//
-
-#include <lol/engine-internal.h>
-
-/*
- * Colour manipulation functions
- */
-
-namespace lol
-{
-
-image image::Brightness(float val) const
-{
-    image ret = *this;
-    int count = size().x * size().y;
-
-    if (format() == PixelFormat::Y_8 || format() == PixelFormat::Y_F32)
-    {
-        float *pixels = ret.lock<PixelFormat::Y_F32>();
-        for (int n = 0; n < count; ++n)
-            pixels[n] = lol::clamp(pixels[n] + val, 0.f, 1.f);
-        ret.unlock(pixels);
-    }
-    else
-    {
-        vec4 *pixels = ret.lock<PixelFormat::RGBA_F32>();
-        for (int n = 0; n < count; ++n)
-            pixels[n] = vec4(lol::clamp(pixels[n].rgb + vec3(val), 0.f, 1.f),
-                             pixels[n].a);
-        ret.unlock(pixels);
-    }
-
-    return ret;
-}
-
-image image::Contrast(float val) const
-{
-    image ret = *this;
-    int count = size().x * size().y;
-
-    if (val >= 0.f)
-    {
-        if (val > 0.99999f)
-            val = 0.99999f;
-
-        val = 1.f / (1.f - val);
-    }
-    else
-    {
-        val = lol::clamp(1.f + val, 0.f, 1.f);
-    }
-
-    if (format() == PixelFormat::Y_8 || format() == PixelFormat::Y_F32)
-    {
-        float add = -0.5f * val + 0.5f;
-        float *pixels = ret.lock<PixelFormat::Y_F32>();
-        for (int n = 0; n < count; ++n)
-            pixels[n] = lol::clamp(pixels[n] * val + add, 0.f, 1.f);
-        ret.unlock(pixels);
-    }
-    else
-    {
-        vec3 add = vec3(-0.5f * val + 0.5f);
-        vec4 *pixels = ret.lock<PixelFormat::RGBA_F32>();
-        for (int n = 0; n < count; ++n)
-            pixels[n] = vec4(lol::clamp(pixels[n].rgb * val + add, 0.f, 1.f),
-                             pixels[n].a);
-        ret.unlock(pixels);
-    }
-
-    return ret;
-}
-
-/*
- * TODO: the current approach is naive; we should use the histogram in order
- * to decide how to change the contrast.
- */
-image image::AutoContrast() const
-{
-    image ret = *this;
-
-    float min_val = 1.f, max_val = 0.f;
-    int count = size().x * size().y;
-
-    if (format() == PixelFormat::Y_8 || format() == PixelFormat::Y_F32)
-    {
-        float *pixels = ret.lock<PixelFormat::Y_F32>();
-        for (int n = 0; n < count; ++n)
-        {
-            min_val = lol::min(min_val, pixels[n]);
-            max_val = lol::max(max_val, pixels[n]);
-        }
-
-        float t = max_val > min_val ? 1.f / (max_val - min_val) : 1.f;
-        for (int n = 0; n < count; ++n)
-            pixels[n] = (pixels[n] - min_val) * t;
-
-        ret.unlock(pixels);
-    }
-    else
-    {
-        vec4 *pixels = ret.lock<PixelFormat::RGBA_F32>();
-        for (int n = 0; n < count; ++n)
-        {
-            min_val = lol::min(min_val, pixels[n].r);
-            min_val = lol::min(min_val, pixels[n].g);
-            min_val = lol::min(min_val, pixels[n].b);
-            max_val = lol::max(max_val, pixels[n].r);
-            max_val = lol::max(max_val, pixels[n].g);
-            max_val = lol::max(max_val, pixels[n].b);
-        }
-
-        float t = max_val > min_val ? 1.f / (max_val - min_val) : 1.f;
-        for (int n = 0; n < count; ++n)
-            pixels[n] = vec4((pixels[n].r - min_val) * t,
-                             (pixels[n].g - min_val) * t,
-                             (pixels[n].b - min_val) * t,
-                             pixels[n].a);;
-
-        ret.unlock(pixels);
-    }
-
-    return ret;
-}
-
-image image::Invert() const
-{
-    image ret = *this;
-    int count = size().x * size().y;
-
-    if (format() == PixelFormat::Y_8 || format() == PixelFormat::Y_F32)
-    {
-        float *pixels = ret.lock<PixelFormat::Y_F32>();
-        for (int n = 0; n < count; ++n)
-            pixels[n] = 1.f - pixels[n];
-        ret.unlock(pixels);
-    }
-    else
-    {
-        vec4 *pixels = ret.lock<PixelFormat::RGBA_F32>();
-        for (int n = 0; n < count; ++n)
-            pixels[n] = vec4(vec3(1.f) -pixels[n].rgb, pixels[n].a);
-        ret.unlock(pixels);
-    }
-
-    return ret;
-}
-
-image image::Threshold(float val) const
-{
-    image ret = *this;
-    int count = size().x * size().y;
-
-    float *pixels = ret.lock<PixelFormat::Y_F32>();
-    for (int n = 0; n < count; ++n)
-        pixels[n] = pixels[n] > val ? 1.f : 0.f;
-    ret.unlock(pixels);
-
-    return ret;
-}
-
-image image::Threshold(vec3 val) const
-{
-    image ret = *this;
-    int count = size().x * size().y;
-
-    vec4 *pixels = ret.lock<PixelFormat::RGBA_F32>();
-    for (int n = 0; n < count; ++n)
-        pixels[n] = vec4(pixels[n].r > val.r ? 1.f : 0.f,
-                         pixels[n].g > val.g ? 1.f : 0.f,
-                         pixels[n].b > val.b ? 1.f : 0.f,
-                         pixels[n].a);
-    ret.unlock(pixels);
-
-    return ret;
-}
-
-} /* namespace lol */
-
diff --git a/src/image/filter/convolution.cpp b/src/image/filter/convolution.cpp
deleted file mode 100644
index 08357e2c..00000000
--- a/src/image/filter/convolution.cpp
+++ /dev/null
@@ -1,299 +0,0 @@
-//
-//  Lol Engine
-//
-//  Copyright © 2004—2017 Sam Hocevar <sam@hocevar.net>
-//
-//  Lol Engine is free software. It comes without any warranty, to
-//  the extent permitted by applicable law. You can redistribute it
-//  and/or modify it under the terms of the Do What the Fuck You Want
-//  to Public License, Version 2, as published by the WTFPL Task Force.
-//  See http://www.wtfpl.net/ for more details.
-//
-
-#include <lol/engine-internal.h>
-
-/*
- * Generic convolution functions
- */
-
-namespace lol
-{
-
-static image SepConv(image &src, array<float> const &hvec,
-                     array<float> const &vvec);
-static image NonSepConv(image &src, array2d<float> const &in_kernel);
-
-image image::Convolution(array2d<float> const &in_kernel)
-{
-    /* Find the cell with the largest value */
-    ivec2 ksize = in_kernel.size();
-    int bestx = -1, besty = -1;
-    float tmp = 0.f;
-    for (int dy = 0; dy < ksize.y; ++dy)
-        for (int dx = 0; dx < ksize.x; ++dx)
-            if (lol::sq(in_kernel[dx][dy]) > tmp)
-            {
-                tmp = sq(in_kernel[dx][dy]);
-                bestx = dx;
-                besty = dy;
-            }
-
-    /* If the kernel is empty, return a copy of the picture */
-    if (tmp == 0.f)
-        return *this;
-
-    /* Check whether the matrix rank is 1 */
-    bool separable = true;
-    for (int dy = 0; dy < ksize.y && separable; ++dy)
-    {
-        if (dy == besty)
-            continue;
-
-        for (int dx = 0; dx < ksize.x && separable; ++dx)
-        {
-            if (dx == bestx)
-                continue;
-
-            float p = in_kernel[dx][dy] * in_kernel[bestx][besty];
-            float q = in_kernel[dx][besty] * in_kernel[bestx][dy];
-
-            if (lol::abs(p - q) > 1.0e-8f)
-                separable = false;
-        }
-    }
-
-    if (separable)
-    {
-        /* Matrix rank is 1! Separate the filter. */
-        array<float> hvec, vvec;
-
-        float norm = 1.0f / lol::sqrt(lol::abs(in_kernel[bestx][besty]));
-        for (int dx = 0; dx < ksize.x; dx++)
-            hvec << norm * in_kernel[dx][besty];
-        for (int dy = 0; dy < ksize.y; dy++)
-            vvec << norm * in_kernel[bestx][dy];
-
-        return SepConv(*this, hvec, vvec);
-    }
-    else
-    {
-        return NonSepConv(*this, in_kernel);
-    }
-}
-
-image image::Sharpen(array2d<float> const &in_kernel)
-{
-    ivec2 ksize = in_kernel.size();
-    array2d<float> newkernel(ksize);
-
-    for (int dy = 0; dy < ksize.y; ++dy)
-        for (int dx = 0; dx < ksize.x; ++dx)
-        {
-            newkernel[dx][dy] = - in_kernel[dx][dy];
-            if (dx == ksize.x / 2 && dy == ksize.y / 2)
-                newkernel[dx][dy] += 2.f;
-        }
-
-    return Convolution(newkernel);
-}
-
-template<PixelFormat FORMAT, int WRAP_X, int WRAP_Y>
-static image NonSepConv(image &src, array2d<float> const &in_kernel)
-{
-    typedef typename PixelType<FORMAT>::type pixel_t;
-
-    ivec2 const size = src.size();
-    ivec2 const ksize = in_kernel.size();
-    image dst(size);
-
-    array2d<pixel_t> const &srcp = src.lock2d<FORMAT>();
-    array2d<pixel_t> &dstp = dst.lock2d<FORMAT>();
-
-    for (int y = 0; y < size.y; y++)
-    {
-        for (int x = 0; x < size.x; x++)
-        {
-            pixel_t pixel(0.f);
-
-            for (int dy = 0; dy < ksize.y; dy++)
-            {
-                int y2 = y + dy - ksize.y / 2;
-                if (y2 < 0)
-                    y2 = WRAP_Y ? size.y - 1 - ((-y2 - 1) % size.y) : 0;
-                else if (y2 >= size.y)
-                    y2 = WRAP_Y ? y2 % size.y : size.y - 1;
-
-                for (int dx = 0; dx < ksize.x; dx++)
-                {
-                    float f = in_kernel[dx][dy];
-
-                    int x2 = x + dx - ksize.x / 2;
-                    if (x2 < 0)
-                        x2 = WRAP_X ? size.x - 1 - ((-x2 - 1) % size.x) : 0;
-                    else if (x2 >= size.x)
-                        x2 = WRAP_X ? x2 % size.x : size.x - 1;
-
-                    pixel += f * srcp[x2][y2];
-                }
-            }
-
-            dstp[x][y] = lol::clamp(pixel, 0.0f, 1.0f);
-        }
-    }
-
-    src.unlock2d(srcp);
-    dst.unlock2d(dstp);
-
-    return dst;
-}
-
-static image NonSepConv(image &src, array2d<float> const &in_kernel)
-{
-    bool const wrap_x = src.GetWrapX() == WrapMode::Repeat;
-    bool const wrap_y = src.GetWrapY() == WrapMode::Repeat;
-
-    if (src.format() == PixelFormat::Y_8
-         || src.format() == PixelFormat::Y_F32)
-    {
-        if (wrap_x)
-        {
-            if (wrap_y)
-                return NonSepConv<PixelFormat::Y_F32, 1, 1>(src, in_kernel);
-            else
-                return NonSepConv<PixelFormat::Y_F32, 1, 0>(src, in_kernel);
-        }
-        else
-        {
-            if (wrap_y)
-                return NonSepConv<PixelFormat::Y_F32, 0, 1>(src, in_kernel);
-            else
-                return NonSepConv<PixelFormat::Y_F32, 0, 0>(src, in_kernel);
-        }
-    }
-    else
-    {
-        if (wrap_x)
-        {
-            if (wrap_y)
-                return NonSepConv<PixelFormat::RGBA_F32, 1, 1>(src, in_kernel);
-            else
-                return NonSepConv<PixelFormat::RGBA_F32, 1, 0>(src, in_kernel);
-        }
-        else
-        {
-            if (wrap_y)
-                return NonSepConv<PixelFormat::RGBA_F32, 0, 1>(src, in_kernel);
-            else
-                return NonSepConv<PixelFormat::RGBA_F32, 0, 0>(src, in_kernel);
-        }
-    }
-}
-
-template<PixelFormat FORMAT, int WRAP_X, int WRAP_Y>
-static image SepConv(image &src, array<float> const &hvec,
-                     array<float> const &vvec)
-{
-    typedef typename PixelType<FORMAT>::type pixel_t;
-
-    ivec2 const size = src.size();
-    ivec2 const ksize(hvec.count(), vvec.count());
-    image dst(size);
-
-    array2d<pixel_t> const &srcp = src.lock2d<FORMAT>();
-    array2d<pixel_t> &dstp = dst.lock2d<FORMAT>();
-
-    array2d<pixel_t> tmp(size);
-
-    for (int y = 0; y < size.y; y++)
-    {
-        for (int x = 0; x < size.x; x++)
-        {
-            pixel_t pixel(0.f);
-
-            for (int dx = 0; dx < ksize.x; dx++)
-            {
-                int x2 = x + dx - ksize.x / 2;
-                if (x2 < 0)
-                    x2 = WRAP_X ? size.x - 1 - ((-x2 - 1) % size.x) : 0;
-                else if (x2 >= size.x)
-                    x2 = WRAP_X ? x2 % size.x : size.x - 1;
-
-                pixel += hvec[dx] * srcp[x2][y];
-            }
-
-            tmp[x][y] = pixel;
-        }
-    }
-
-    for (int y = 0; y < size.y; y++)
-    {
-        for (int x = 0; x < size.x; x++)
-        {
-            pixel_t pixel(0.f);
-
-            for (int j = 0; j < ksize.y; j++)
-            {
-                int y2 = y + j - ksize.y / 2;
-                if (y2 < 0)
-                    y2 = WRAP_Y ? size.y - 1 - ((-y2 - 1) % size.y) : 0;
-                else if (y2 >= size.y)
-                    y2 = WRAP_Y ? y2 % size.y : size.y - 1;
-
-                pixel += vvec[j] * tmp[x][y2];
-            }
-
-            dstp[x][y] = lol::clamp(pixel, 0.0f, 1.0f);
-        }
-    }
-
-    src.unlock2d(srcp);
-    dst.unlock2d(dstp);
-
-    return dst;
-}
-
-static image SepConv(image &src, array<float> const &hvec,
-                     array<float> const &vvec)
-{
-    bool const wrap_x = src.GetWrapX() == WrapMode::Repeat;
-    bool const wrap_y = src.GetWrapY() == WrapMode::Repeat;
-
-    if (src.format() == PixelFormat::Y_8
-         || src.format() == PixelFormat::Y_F32)
-    {
-        if (wrap_x)
-        {
-            if (wrap_y)
-                return SepConv<PixelFormat::Y_F32, 1, 1>(src, hvec, vvec);
-            else
-                return SepConv<PixelFormat::Y_F32, 1, 0>(src, hvec, vvec);
-        }
-        else
-        {
-            if (wrap_y)
-                return SepConv<PixelFormat::Y_F32, 0, 1>(src, hvec, vvec);
-            else
-                return SepConv<PixelFormat::Y_F32, 0, 0>(src, hvec, vvec);
-        }
-    }
-    else
-    {
-        if (wrap_x)
-        {
-            if (wrap_y)
-                return SepConv<PixelFormat::RGBA_F32, 1, 1>(src, hvec, vvec);
-            else
-                return SepConv<PixelFormat::RGBA_F32, 1, 0>(src, hvec, vvec);
-        }
-        else
-        {
-            if (wrap_y)
-                return SepConv<PixelFormat::RGBA_F32, 0, 1>(src, hvec, vvec);
-            else
-                return SepConv<PixelFormat::RGBA_F32, 0, 0>(src, hvec, vvec);
-        }
-    }
-}
-
-} /* namespace lol */
-
diff --git a/src/image/filter/dilate.cpp b/src/image/filter/dilate.cpp
deleted file mode 100644
index a92f96b7..00000000
--- a/src/image/filter/dilate.cpp
+++ /dev/null
@@ -1,142 +0,0 @@
-//
-//  Lol Engine
-//
-//  Copyright © 2004—2017 Sam Hocevar <sam@hocevar.net>
-//
-//  Lol Engine is free software. It comes without any warranty, to
-//  the extent permitted by applicable law. You can redistribute it
-//  and/or modify it under the terms of the Do What the Fuck You Want
-//  to Public License, Version 2, as published by the WTFPL Task Force.
-//  See http://www.wtfpl.net/ for more details.
-//
-
-#include <lol/engine-internal.h>
-
-/*
- * Dilate and erode functions
- */
-
-/* FIXME: these functions are almost the same, try to merge them
- * somewhat efficiently. */
-/* TODO: - dilate by k (Manhattan distance)
- *       - dilate by r (euclidian distance, with non-integer r) */
-
-namespace lol
-{
-
-image image::Dilate()
-{
-    ivec2 isize = size();
-    image ret(isize);
-
-    if (format() == PixelFormat::Y_8 || format() == PixelFormat::Y_F32)
-    {
-        float const *srcp = lock<PixelFormat::Y_F32>();
-        float *dstp = ret.lock<PixelFormat::Y_F32>();
-
-        for (int y = 0; y < isize.y; ++y)
-            for (int x = 0; x < isize.x; ++x)
-            {
-                int y2 = lol::max(y - 1, 0);
-                int x2 = lol::max(x - 1, 0);
-                int y3 = lol::min(y + 1, isize.y - 1);
-                int x3 = lol::min(x + 1, isize.x - 1);
-
-                float t = srcp[y * isize.x + x];
-                t = lol::max(t, srcp[y * isize.x + x2]);
-                t = lol::max(t, srcp[y * isize.x + x3]);
-                t = lol::max(t, srcp[y2 * isize.x + x]);
-                t = lol::max(t, srcp[y3 * isize.x + x]);
-                dstp[y * isize.x + x] = t;
-            }
-
-        unlock(srcp);
-        ret.unlock(dstp);
-    }
-    else
-    {
-        vec4 const *srcp = lock<PixelFormat::RGBA_F32>();
-        vec4 *dstp = ret.lock<PixelFormat::RGBA_F32>();
-
-        for (int y = 0; y < isize.y; ++y)
-            for (int x = 0; x < isize.x; ++x)
-            {
-                int y2 = lol::max(y - 1, 0);
-                int x2 = lol::max(x - 1, 0);
-                int y3 = lol::min(y + 1, isize.y - 1);
-                int x3 = lol::min(x + 1, isize.x - 1);
-
-                vec3 t = srcp[y * isize.x + x].rgb;
-                t = lol::max(t, srcp[y * isize.x + x2].rgb);
-                t = lol::max(t, srcp[y * isize.x + x3].rgb);
-                t = lol::max(t, srcp[y2 * isize.x + x].rgb);
-                t = lol::max(t, srcp[y3 * isize.x + x].rgb);
-                dstp[y * isize.x + x] = vec4(t, srcp[y * isize.x + x].a);
-            }
-
-        unlock(srcp);
-        ret.unlock(dstp);
-    }
-
-    return ret;
-}
-
-image image::Erode()
-{
-    ivec2 isize = size();
-    image ret(isize);
-
-    if (format() == PixelFormat::Y_8 || format() == PixelFormat::Y_F32)
-    {
-        float const *srcp = lock<PixelFormat::Y_F32>();
-        float *dstp = ret.lock<PixelFormat::Y_F32>();
-
-        for (int y = 0; y < isize.y; ++y)
-            for (int x = 0; x < isize.x; ++x)
-            {
-                int y2 = lol::max(y - 1, 0);
-                int x2 = lol::max(x - 1, 0);
-                int y3 = lol::min(y + 1, isize.y - 1);
-                int x3 = lol::min(x + 1, isize.x - 1);
-
-                float t = srcp[y * isize.x + x];
-                t = lol::max(t, srcp[y * isize.x + x2]);
-                t = lol::max(t, srcp[y * isize.x + x3]);
-                t = lol::max(t, srcp[y2 * isize.x + x]);
-                t = lol::max(t, srcp[y3 * isize.x + x]);
-                dstp[y * isize.x + x] = t;
-            }
-
-        unlock(srcp);
-        ret.unlock(dstp);
-    }
-    else
-    {
-        vec4 const *srcp = lock<PixelFormat::RGBA_F32>();
-        vec4 *dstp = ret.lock<PixelFormat::RGBA_F32>();
-
-        for (int y = 0; y < isize.y; ++y)
-            for (int x = 0; x < isize.x; ++x)
-            {
-                int y2 = lol::max(y - 1, 0);
-                int x2 = lol::max(x - 1, 0);
-                int y3 = lol::min(y + 1, isize.y - 1);
-                int x3 = lol::min(x + 1, isize.x - 1);
-
-                vec3 t = srcp[y * isize.x + x].rgb;
-                t = lol::min(t, srcp[y * isize.x + x2].rgb);
-                t = lol::min(t, srcp[y * isize.x + x3].rgb);
-                t = lol::min(t, srcp[y2 * isize.x + x].rgb);
-                t = lol::min(t, srcp[y3 * isize.x + x].rgb);
-                dstp[y * isize.x + x] = vec4(t, srcp[y * isize.x + x].a);
-            }
-
-        unlock(srcp);
-        ret.unlock(dstp);
-    }
-
-    return ret;
-}
-
-} /* namespace lol */
-
diff --git a/src/image/filter/median.cpp b/src/image/filter/median.cpp
deleted file mode 100644
index cf7a2a1a..00000000
--- a/src/image/filter/median.cpp
+++ /dev/null
@@ -1,239 +0,0 @@
-//
-//  Lol Engine
-//
-//  Copyright © 2004—2017 Sam Hocevar <sam@hocevar.net>
-//
-//  Lol Engine is free software. It comes without any warranty, to
-//  the extent permitted by applicable law. You can redistribute it
-//  and/or modify it under the terms of the Do What the Fuck You Want
-//  to Public License, Version 2, as published by the WTFPL Task Force.
-//  See http://www.wtfpl.net/ for more details.
-//
-
-#include <lol/engine-internal.h>
-
-/*
- * Median filter functions
- */
-
-/* FIXME: this is in desperate want of optimisation. Here is what could
- * be done to improve the performance:
- *  - prefetch the neighbourhood; most neighbours are the same as the
- *    previous pixels.
- *  - use a better sort algorithm; bubble sort is ridiculous
- *  - even better, use state-of-the art median selection, ie. O(3n), for
- *    most common combinations (9, 25, 49, 81). */
-
-namespace lol
-{
-
-static int cmpfloat(void const *i1, void const *i2)
-{
-    float a = *(float const *)i1;
-    float b = *(float const *)i2;
-
-    return (a > b) - (a < b);
-}
-
-image image::Median(ivec2 ksize) const
-{
-    ivec2 const isize = size();
-    image tmp = *this;
-    image ret(isize);
-
-    if (format() == PixelFormat::Y_8 || format() == PixelFormat::Y_F32)
-    {
-        ivec2 const lsize = 2 * ksize + ivec2(1);
-        array2d<float> list(lsize);
-
-        float *srcp = tmp.lock<PixelFormat::Y_F32>();
-        float *dstp = ret.lock<PixelFormat::Y_F32>();
-
-        for (int y = 0; y < isize.y; y++)
-        {
-            for (int x = 0; x < isize.x; x++)
-            {
-                /* Make a list of neighbours */
-                for (int j = -ksize.y; j <= ksize.y; j++)
-                {
-                    int y2 = y + j;
-                    if (y2 < 0) y2 = isize.y - 1 - ((-y2 - 1) % isize.y);
-                    else if (y2 > 0) y2 = y2 % isize.y;
-
-                    for (int i = -ksize.x; i <= ksize.x; i++)
-                    {
-                        int x2 = x + i;
-                        if (x2 < 0) x2 = isize.x - 1 - ((-x2 - 1) % isize.x);
-                        else if (x2 > 0) x2 = x2 % isize.x;
-
-                        list[i + ksize.x][j + ksize.y] = srcp[y2 * isize.x + x2];
-                    }
-                }
-
-                /* Sort the list */
-                qsort(&list[0][0], lsize.x * lsize.y, sizeof(float), cmpfloat);
-
-                /* Store the median value */
-                dstp[y * isize.x + x] = *(&list[0][0] + lsize.x * lsize.y / 2);
-            }
-        }
-
-        tmp.unlock(srcp);
-        ret.unlock(dstp);
-    }
-    else
-    {
-        ivec2 const lsize = 2 * ksize + ivec2(1);
-        array2d<vec3> list(lsize);
-
-        vec4 *srcp = tmp.lock<PixelFormat::RGBA_F32>();
-        vec4 *dstp = ret.lock<PixelFormat::RGBA_F32>();
-
-        for (int y = 0; y < isize.y; y++)
-        {
-            for (int x = 0; x < isize.x; x++)
-            {
-                /* Make a list of neighbours */
-                for (int j = -ksize.y; j <= ksize.y; j++)
-                {
-                    int y2 = y + j;
-                    if (y2 < 0) y2 = isize.y - 1 - ((-y2 - 1) % isize.y);
-                    else if (y2 > 0) y2 = y2 % isize.y;
-
-                    for (int i = -ksize.x; i <= ksize.x; i++)
-                    {
-                        int x2 = x + i;
-                        if (x2 < 0) x2 = isize.x - 1 - ((-x2 - 1) % isize.x);
-                        else if (x2 > 0) x2 = x2 % isize.x;
-
-                        list[i + ksize.x][j + ksize.y] = srcp[y2 * isize.x + x2].rgb;
-                    }
-                }
-
-                /* Algorithm constants, empirically chosen */
-                int const N = 5;
-                float const K = 1.5f;
-
-                /* Iterate using Weiszfeld’s algorithm */
-                vec3 oldmed(0.f), median(0.f);
-                for (int iter = 0; ; ++iter)
-                {
-                    oldmed = median;
-                    vec3 s1(0.f);
-                    float s2 = 0.f;
-                    for (int j = 0; j < lsize.y; ++j)
-                        for (int i = 0; i < lsize.x; ++i)
-                        {
-                            float d = 1.0f /
-                                      (1e-10f + distance(median, list[i][j]));
-                            s1 += list[i][j] * d;
-                            s2 += d;
-                        }
-                    median = s1 / s2;
-
-                    if (iter > 1 && iter < N)
-                    {
-                        median += K * (median - oldmed);
-                    }
-
-                    if (iter > 3 && distance(oldmed, median) < 1.e-5f)
-                        break;
-                }
-
-                /* Store the median value */
-                dstp[y * isize.x + x] = vec4(median, srcp[y * isize.x + x].a);
-            }
-        }
-
-        tmp.unlock(srcp);
-        ret.unlock(dstp);
-    }
-
-    return ret;
-}
-
-image image::Median(array2d<float> const &ker) const
-{
-    ivec2 const isize = size();
-    image tmp = *this;
-    image ret(isize);
-
-    /* FIXME: TODO */
-#if 0
-    if (format() == PixelFormat::Y_8 || format() == PixelFormat::Y_F32)
-    {
-    }
-    else
-#endif
-    {
-        ivec2 const ksize = ker.size();
-        array2d<vec3> list(ksize);
-
-        vec4 *srcp = tmp.lock<PixelFormat::RGBA_F32>();
-        vec4 *dstp = ret.lock<PixelFormat::RGBA_F32>();
-
-        for (int y = 0; y < isize.y; y++)
-        {
-            for (int x = 0; x < isize.x; x++)
-            {
-                /* Make a list of neighbours */
-                for (int j = 0; j < ksize.y; j++)
-                {
-                    int y2 = y + j - ksize.y / 2;
-                    if (y2 < 0) y2 = isize.y - 1 - ((-y2 - 1) % isize.y);
-                    else if (y2 > 0) y2 = y2 % isize.y;
-
-                    for (int i = 0; i < ksize.x; i++)
-                    {
-                        int x2 = x + i - ksize.x / 2;
-                        if (x2 < 0) x2 = isize.x - 1 - ((-x2 - 1) % isize.x);
-                        else if (x2 > 0) x2 = x2 % isize.x;
-
-                        list[i][j] = srcp[y2 * isize.x + x2].rgb;
-                    }
-                }
-
-                /* Algorithm constants, empirically chosen */
-                int const N = 5;
-                float const K = 1.5f;
-
-                /* Iterate using Weiszfeld’s algorithm */
-                vec3 oldmed(0.f), median(0.f);
-                for (int iter = 0; ; ++iter)
-                {
-                    oldmed = median;
-                    vec3 s1(0.f);
-                    float s2 = 0.f;
-                    for (int j = 0; j < ksize.y; ++j)
-                        for (int i = 0; i < ksize.x; ++i)
-                        {
-                            float d = ker[i][j] /
-                                      (1e-10f + distance(median, list[i][j]));
-                            s1 += list[i][j] * d;
-                            s2 += d;
-                        }
-                    median = s1 / s2;
-
-                    if (iter > 1 && iter < N)
-                    {
-                        median += K * (median - oldmed);
-                    }
-
-                    if (iter > 3 && distance(oldmed, median) < 1.e-5f)
-                        break;
-                }
-
-                /* Store the median value */
-                dstp[y * isize.x + x] = vec4(median, srcp[y * isize.x + x].a);
-            }
-        }
-
-        tmp.unlock(srcp);
-        ret.unlock(dstp);
-    }
-
-    return ret;
-}
-
-} /* namespace lol */
-
diff --git a/src/image/filter/yuv.cpp b/src/image/filter/yuv.cpp
deleted file mode 100644
index 61a8b199..00000000
--- a/src/image/filter/yuv.cpp
+++ /dev/null
@@ -1,49 +0,0 @@
-//
-//  Lol Engine
-//
-//  Copyright © 2004—2017 Sam Hocevar <sam@hocevar.net>
-//
-//  Lol Engine is free software. It comes without any warranty, to
-//  the extent permitted by applicable law. You can redistribute it
-//  and/or modify it under the terms of the Do What the Fuck You Want
-//  to Public License, Version 2, as published by the WTFPL Task Force.
-//  See http://www.wtfpl.net/ for more details.
-//
-
-#include <lol/engine-internal.h>
-
-/*
- * YUV conversion functions
- */
-
-namespace lol
-{
-
-image image::YUVToRGB() const
-{
-    image ret = *this;
-    int count = size().x * size().y;
-
-    vec4 *pixels = ret.lock<PixelFormat::RGBA_F32>();
-    for (int n = 0; n < count; ++n)
-        pixels[n] = Color::YUVToRGB(pixels[n]);
-    ret.unlock(pixels);
-
-    return ret;
-}
-
-image image::RGBToYUV() const
-{
-    image ret = *this;
-    int count = size().x * size().y;
-
-    vec4 *pixels = ret.lock<PixelFormat::RGBA_F32>();
-    for (int n = 0; n < count; ++n)
-        pixels[n] = Color::RGBToYUV(pixels[n]);
-    ret.unlock(pixels);
-
-    return ret;
-}
-
-} /* namespace lol */
-
diff --git a/src/image/image-private.h b/src/image/image-private.h
deleted file mode 100644
index 1ca715b0..00000000
--- a/src/image/image-private.h
+++ /dev/null
@@ -1,74 +0,0 @@
-//
-//  Lol Engine
-//
-//  Copyright © 2010—2018 Sam Hocevar <sam@hocevar.net>
-//
-//  Lol Engine is free software. It comes without any warranty, to
-//  the extent permitted by applicable law. You can redistribute it
-//  and/or modify it under the terms of the Do What the Fuck You Want
-//  to Public License, Version 2, as published by the WTFPL Task Force.
-//  See http://www.wtfpl.net/ for more details.
-//
-
-#pragma once
-
-#include <map>
-
-//
-// The ImageCodecData class
-// ------------------------
-//
-
-namespace lol
-{
-
-class PixelDataBase
-{
-public:
-    virtual void *data() = 0;
-    virtual void const *data() const = 0;
-    virtual void *data2d() = 0;
-    virtual void const *data2d() const = 0;
-
-    inline virtual ~PixelDataBase() {}
-};
-
-template<PixelFormat T>
-class PixelData : public PixelDataBase
-{
-public:
-    inline PixelData(ivec2 size) { m_array2d.resize(size); }
-
-    virtual void *data() { return m_array2d.data(); }
-    virtual void const *data() const { return m_array2d.data(); }
-    virtual void *data2d() { return &m_array2d; }
-    virtual void const *data2d() const { return &m_array2d; }
-
-    array2d<typename PixelType<T>::type> m_array2d;
-};
-
-class image_data
-{
-    friend class image;
-
-public:
-    image_data()
-      : m_size(0, 0),
-        m_wrap_x(WrapMode::Clamp),
-        m_wrap_y(WrapMode::Clamp),
-        m_format(PixelFormat::Unknown)
-    {}
-
-    ivec2 m_size;
-
-    /* The wrap modes for pixel access */
-    WrapMode m_wrap_x, m_wrap_y;
-
-    /* A map of the various available bitplanes */
-    std::map<int, PixelDataBase *> m_pixels;
-    /* The last bitplane being accessed for writing */
-    PixelFormat m_format;
-};
-
-} /* namespace lol */
-
diff --git a/src/image/image.cpp b/src/image/image.cpp
deleted file mode 100644
index 8aa613bb..00000000
--- a/src/image/image.cpp
+++ /dev/null
@@ -1,209 +0,0 @@
-//
-//  Lol Engine
-//
-//  Copyright © 2010—2018 Sam Hocevar <sam@hocevar.net>
-//
-//  Lol Engine is free software. It comes without any warranty, to
-//  the extent permitted by applicable law. You can redistribute it
-//  and/or modify it under the terms of the Do What the Fuck You Want
-//  to Public License, Version 2, as published by the WTFPL Task Force.
-//  See http://www.wtfpl.net/ for more details.
-//
-
-#include <lol/engine-internal.h>
-
-#include "image-private.h"
-
-#include <algorithm> /* for std::swap */
-
-namespace lol
-{
-
-/*
- * Public image class
- */
-
-image::image()
-  : m_data(new image_data())
-{
-}
-
-image::image(std::string const &path)
-  : m_data(new image_data())
-{
-    load(path);
-}
-
-image::image(ivec2 size)
-  : m_data(new image_data())
-{
-    resize(size);
-}
-
-image::image (image const &other)
-  : m_data(new image_data())
-{
-    Copy(other);
-}
-
-image & image::operator =(image other)
-{
-    /* Since the argument is passed by value, we’re assured it’s a new
-     * object and we can safely swap our m_data pointers. */
-    std::swap(m_data, other.m_data);
-    return *this;
-}
-
-image::~image()
-{
-    for (auto &kv : m_data->m_pixels)
-        delete kv.second;
-
-    delete m_data;
-}
-
-void image::Copy(uint8_t* src_pixels, ivec2 const& size, PixelFormat fmt)
-{
-    ASSERT(fmt != PixelFormat::Unknown);
-    resize(size);
-    set_format(fmt);
-    memcpy(m_data->m_pixels[(int)fmt]->data(), src_pixels,
-            size.x * size.y * BytesPerPixel(fmt));
-}
-
-void image::Copy(image const &src)
-{
-    ivec2 size = src.size();
-    PixelFormat fmt = src.format();
-
-    resize(size);
-    if (fmt != PixelFormat::Unknown)
-    {
-        set_format(fmt);
-        memcpy(m_data->m_pixels[(int)fmt]->data(),
-            src.m_data->m_pixels[(int)fmt]->data(),
-            size.x * size.y * BytesPerPixel(fmt));
-    }
-}
-
-void image::DummyFill()
-{
-    load("DUMMY");
-}
-
-bool image::load(std::string const &path)
-{
-    auto resource = ResourceLoader::Load(path);
-    if (resource == nullptr)
-        return false;
-
-    auto image_resource = dynamic_cast<ResourceImageData*>(resource);
-    if (image_resource == nullptr)
-    {
-        delete image_resource;
-        return false;
-    }
-
-    Copy(*image_resource->m_image);
-    delete image_resource;
-    return true;
-}
-
-bool image::save(std::string const &path)
-{
-    auto data = new ResourceImageData(new image(*this));
-    auto result = ResourceLoader::Save(path, data);
-    delete data;
-    return result;
-}
-
-ivec2 image::size() const
-{
-    return m_data->m_size;
-}
-
-void image::resize(ivec2 size)
-{
-    ASSERT(size.x > 0);
-    ASSERT(size.y > 0);
-
-    if (m_data->m_size != size)
-    {
-        for (auto &kv : m_data->m_pixels)
-            delete kv.second;
-        m_data->m_pixels.clear();
-        m_data->m_format = PixelFormat::Unknown;
-    }
-
-    m_data->m_size = size;
-}
-
-/* Wrap-around mode for some operations */
-WrapMode image::GetWrapX() const
-{
-    return m_data->m_wrap_x;
-}
-
-WrapMode image::GetWrapY() const
-{
-    return m_data->m_wrap_y;
-}
-
-void image::SetWrap(WrapMode wrap_x, WrapMode wrap_y)
-{
-    m_data->m_wrap_x = wrap_x;
-    m_data->m_wrap_y = wrap_y;
-}
-
-/* The lock() method */
-template<PixelFormat T> typename PixelType<T>::type *image::lock()
-{
-    set_format(T);
-
-    return (typename PixelType<T>::type *)m_data->m_pixels[(int)T]->data();
-}
-
-/* The lock2d() method */
-void *image::lock2d_helper(PixelFormat T)
-{
-    set_format(T);
-
-    return m_data->m_pixels[(int)T]->data2d();
-}
-
-template<typename T>
-void image::unlock2d(array2d<T> const &array)
-{
-    ASSERT(has_key(m_data->m_pixels, (int)m_data->m_format));
-    ASSERT(array.data() == m_data->m_pixels[(int)m_data->m_format]->data());
-}
-
-/* Explicit specialisations for the above templates */
-#define _T(T) \
-    template PixelType<T>::type *image::lock<T>(); \
-    template array2d<PixelType<T>::type> &image::lock2d<T>(); \
-    template void image::unlock2d(array2d<PixelType<T>::type> const &array);
-_T(PixelFormat::Y_8)
-_T(PixelFormat::RGB_8)
-_T(PixelFormat::RGBA_8)
-_T(PixelFormat::Y_F32)
-_T(PixelFormat::RGB_F32)
-_T(PixelFormat::RGBA_F32)
-#undef _T
-
-/* Special case for the "any" format: return the last active buffer */
-void *image::lock()
-{
-    ASSERT(m_data->m_format != PixelFormat::Unknown);
-
-    return m_data->m_pixels[(int)m_data->m_format]->data();
-}
-
-void image::unlock(void const *pixels)
-{
-    ASSERT(has_key(m_data->m_pixels, (int)m_data->m_format));
-    ASSERT(pixels == m_data->m_pixels[(int)m_data->m_format]->data());
-}
-
-} /* namespace lol */
-
diff --git a/src/image/kernel.cpp b/src/image/kernel.cpp
deleted file mode 100644
index 374db585..00000000
--- a/src/image/kernel.cpp
+++ /dev/null
@@ -1,350 +0,0 @@
-//
-//  Lol Engine
-//
-//  Copyright © 2004—2019 Sam Hocevar <sam@hocevar.net>
-//
-//  Lol Engine is free software. It comes without any warranty, to
-//  the extent permitted by applicable law. You can redistribute it
-//  and/or modify it under the terms of the Do What the Fuck You Want
-//  to Public License, Version 2, as published by the WTFPL Task Force.
-//  See http://www.wtfpl.net/ for more details.
-//
-
-#include <lol/engine-internal.h>
-
-/*
- * Stock kernels
- */
-
-namespace lol
-{
-
-array2d<float> image::kernel::bayer(ivec2 size)
-{
-    array2d<float> ret(size);
-
-    int n = 1;
-    while (n < size.x || n < size.y)
-        n *= 2;
-
-    for (int j = 0; j < size.y; j++)
-        for (int i = 0; i < size.x; i++)
-        {
-            int x = 0;
-
-            for (int k = 1, l = n * n / 4; k < n; k *= 2, l /= 4)
-            {
-                if ((i & k) && (j & k))
-                    x += l;
-                else if (i & k)
-                    x += 3 * l;
-                else if (j & k)
-                    x += 2 * l;
-            }
-
-            ret[i][j] = (float)(x + 1) / (n * n + 1);
-        }
-
-    return ret;
-}
-
-array2d<float> image::kernel::halftone(ivec2 size)
-{
-    array2d<float> ret(size);
-
-    for (int y = 0; y < size.y; y++)
-        for (int x = 0; x < size.x; x++)
-        {
-            float dx = 2.f * (x + 0.02f) / size.x - 0.5f;
-            float dy = 2.f * (y + 0.03f) / size.y - 0.5f;
-            bool flip = false;
-            if (dx > 0.5f)
-            {
-                flip = !flip;
-                dx -= 1.0f;
-            }
-            if (dy > 0.5f)
-            {
-                flip = !flip;
-                dy -= 1.0f;
-            }
-            /* Using dx²+dy² here creates another interesting halftone. */
-            float r = - lol::cos(F_PI * (dx - dy)) - lol::cos(F_PI * (dx + dy));
-
-            ret[x][y] = flip ? 10.f - r : r;
-        }
-
-    return normalize(ret);
-}
-
-array2d<float> image::kernel::blue_noise(ivec2 size, ivec2 gsize)
-{
-    float const epsilon = 1.f / (size.x * size.y + 1);
-    gsize = lol::min(size, gsize);
-
-    array2d<float> ret(size);
-    array2d<vec2> dots(size);
-
-    /* Create a small Gaussian kernel for filtering */
-    array2d<float> gaussian(gsize);
-    for (int j = 0; j < gsize.y; ++j)
-    for (int i = 0; i < gsize.x; ++i)
-    {
-        ivec2 const distance = gsize / 2 - ivec2(i, j);
-        gaussian[i][j] = lol::exp(-lol::sqlength(distance)
-                                    / (0.05f * gsize.x * gsize.y));
-    }
-
-    /* Helper function to find voids and clusters */
-    auto setdot = [&] (ivec2 pos, float val)
-    {
-        float const delta = val - dots[pos][0];
-        dots[pos][0] = val;
-
-        for (int j = 0; j < gsize.y; ++j)
-        for (int i = 0; i < gsize.x; ++i)
-            dots[(pos.x + i - gsize.x / 2 + size.x) % size.x]
-                [(pos.y + j - gsize.y / 2 + size.y) % size.y]
-                [1] += gaussian[i][j] * delta;
-    };
-
-    auto best = [&] (float val, float mul) -> ivec2
-    {
-        float maxval = -(float)(size.x * size.y);
-        ivec2 coord(0, 0);
-        for (int y = 0; y < size.y; ++y)
-        for (int x = 0; x < size.x; ++x)
-        {
-            if (dots[x][y][0] != val)
-                continue;
-
-            float total = dots[x][y][1];
-            if (total * mul > maxval)
-            {
-                maxval = total * mul;
-                coord = ivec2(x, y);
-            }
-        }
-
-        return coord;
-    };
-
-    /* Generate an array with about 10% random dots */
-    int const ndots = (size.x * size.y + 9) / 10;
-    memset((void *)dots.data(), 0, dots.bytes());
-    for (int n = 0; n < ndots; )
-    {
-        ivec2 pos(lol::rand(size.x), lol::rand(size.y));
-        if (dots[pos][0])
-            continue;
-        setdot(ivec2(pos), 1.0f);
-        ++n;
-    }
-
-    /* Rearrange 1s so that they occupy the largest voids */
-    for (;;)
-    {
-        ivec2 bestcluster = best(1.0f, 1.0f);
-        setdot(bestcluster, 0.0f);
-        ivec2 bestvoid = best(0.0f, -1.0f);
-        setdot(bestvoid, 1.0f);
-        if (bestcluster == bestvoid)
-            break;
-    }
-
-    /* Reorder all 1s and replace them with 0.0001 */
-    for (int n = ndots; n--; )
-    {
-        ivec2 bestcluster = best(1.0f, 1.0f);
-        ret[bestcluster] = (n + 1.0f) * epsilon;
-        setdot(bestcluster, 0.0001f);
-    }
-
-    /* Reorder all 0s and replace them with 0.0001 */
-    for (int n = ndots; n < size.x * size.y; ++n)
-    {
-        ivec2 bestvoid = best(0.0f, -1.0f);
-        ret[bestvoid] = (n + 1.0f) * epsilon;
-        setdot(bestvoid, 0.0001f);
-    }
-
-    return ret;
-}
-
-struct Dot
-{
-    int x, y;
-    float val;
-};
-
-static int cmpdot(const void *p1, const void *p2)
-{
-    return ((Dot const *)p1)->val > ((Dot const *)p2)->val;
-}
-
-array2d<float> image::kernel::normalize(array2d<float> const &kernel)
-{
-    ivec2 size = kernel.size();
-
-    array<Dot> tmp;
-    tmp.resize(size.x * size.y);
-
-    for (int y = 0; y < size.y; y++)
-        for (int x = 0; x < size.x; x++)
-        {
-            tmp[y * size.x + x].x = x;
-            tmp[y * size.x + x].y = y;
-            tmp[y * size.x + x].val = kernel[x][y];
-        }
-    std::qsort(tmp.data(), size.x * size.y, sizeof(Dot), cmpdot);
-
-    array2d<float> dst(size);
-
-    float const epsilon = 1.f / (size.x * size.y + 1);
-    for (int n = 0; n < size.x * size.y; n++)
-    {
-        int x = tmp[n].x;
-        int y = tmp[n].y;
-        dst[x][y] = (n + 1.f) * epsilon;
-    }
-
-    return dst;
-}
-
-array2d<float> image::kernel::ediff(EdiffAlgorithm algorithm)
-{
-    switch (algorithm)
-    {
-    case EdiffAlgorithm::FloydSteinberg:
-        return { {    0.f,     1.f,  7.f/16, },
-                 { 3.f/16,  5.f/16,  1.f/16, }, };
-
-    case EdiffAlgorithm::JaJuNi:
-        return { {    0.f,     0.f,     1.f,  7.f/48,  5.f/48, },
-                 { 3.f/48,  5.f/48,  7.f/48,  5.f/48,  3.f/48, },
-                 { 1.f/48,  3.f/48,  5.f/48,  3.f/48,  1.f/48, }, };
-
-    case EdiffAlgorithm::Atkinson:
-        return { {   0.f,    1.f,  1.f/8,  1.f/8, },
-                 { 1.f/8,  1.f/8,  1.f/8,    0.f, },
-                 {   0.f,  1.f/8,    0.f,    0.f, }, };
-
-    case EdiffAlgorithm::Fan:
-        return { {    0.f,     0.f,     1.f,  7.f/16, },
-                 { 1.f/16,  3.f/16,  5.f/16,     0.f, }, };
-
-    case EdiffAlgorithm::ShiauFan:
-        return { {   0.f,    0.f,    1.f,  1.f/2, },
-                 { 1.f/8,  1.f/8,  1.f/4,    0.f, }, };
-
-    case EdiffAlgorithm::ShiauFan2:
-        return { {    0.f,     0.f,    0.f,    1.f,  1.f/2, },
-                 { 1.f/16,  1.f/16,  1.f/8,  1.f/4,    0.f, }, };
-
-    case EdiffAlgorithm::Stucki:
-        return { {    0.f,     0.f,     1.f,  8.f/42,  4.f/42, },
-                 { 2.f/42,  4.f/42,  8.f/42,  4.f/42,  2.f/42, },
-                 { 1.f/42,  2.f/42,  4.f/42,  2.f/42,  1.f/42, }, };
-
-    case EdiffAlgorithm::Burkes:
-        return { {    0.f,     0.f,     1.f,  4.f/16,  2.f/16, },
-                 { 1.f/16,  2.f/16,  4.f/16,  2.f/16,  1.f/16, }, };
-
-    case EdiffAlgorithm::Sierra:
-        return { {    0.f,     0.f,     1.f,  5.f/32,  3.f/32, },
-                 { 2.f/32,  4.f/32,  5.f/32,  4.f/32,  2.f/32, },
-                 {    0.f,  2.f/32,  3.f/32,  2.f/32,     0.f, }, };
-
-    case EdiffAlgorithm::Sierra2:
-        return { {    0.f,     0.f,     1.f,  4.f/16,  3.f/16, },
-                 { 1.f/16,  2.f/16,  3.f/16,  2.f/16,  1.f/16, }, };
-
-    case EdiffAlgorithm::Lite:
-        return { {   0.f,    1.f,  1.f/2, },
-                 { 1.f/4,  1.f/4,    0.f, }, };
-    }
-
-    return { { 1.f } };
-}
-
-/* Any standard deviation below this value will be rounded up, in order
- * to avoid ridiculously low values. exp(-1/(2*0.2*0.2)) is < 10^-5 so
- * there is little chance that any value below 0.2 will be useful. */
-#define BLUR_EPSILON 0.2f
-
-array2d<float> image::kernel::gaussian(vec2 radius, float angle, vec2 delta)
-{
-    array2d<float> kernel;
-
-    if (radius.x < BLUR_EPSILON)
-        radius.x = BLUR_EPSILON;
-    if (radius.y < BLUR_EPSILON)
-        radius.y = BLUR_EPSILON;
-
-    float const sint = lol::sin(angle);
-    float const cost = lol::cos(angle);
-
-    /* Compute the final ellipse's bounding box */
-    float const bbx = lol::sqrt(sq(radius.x * cost) + sq(radius.y * sint));
-    float const bby = lol::sqrt(sq(radius.y * cost) + sq(radius.x * sint));
-
-    /* FIXME: the kernel becomes far too big with large values of dx, because
-     * we grow both left and right. Fix the growing direction. */
-    int const krx = (int)(3.f * bbx + .99999f + lol::ceil(lol::abs(delta.x)));
-    int const kry = (int)(3.f * bby + .99999f + lol::ceil(lol::abs(delta.y)));
-    ivec2 size(2 * krx + 1, 2 * kry + 1);
-    float const Kx = -1.f / (2.f * radius.x * radius.x);
-    float const Ky = -1.f / (2.f * radius.y * radius.y);
-
-    kernel.resize(size);
-
-    float t = 0.f;
-
-    for (int j = -kry; j <= kry; j++)
-    {
-        for (int i = -krx; i <= krx; i++)
-        {
-            /* FIXME: this level of interpolation sucks. We should
-             * interpolate on the full NxN grid for better quality. */
-            static vec3 const samples[] =
-            {
-                vec3( 0.0f,  0.0f, 1.0f),
-                vec3(-0.4f, -0.4f, 0.8f),
-                vec3(-0.3f,  0.0f, 0.9f),
-                vec3(-0.4f,  0.4f, 0.8f),
-                vec3( 0.0f,  0.3f, 0.9f),
-                vec3( 0.4f,  0.4f, 0.8f),
-                vec3( 0.3f,  0.0f, 0.9f),
-                vec3( 0.4f, -0.4f, 0.8f),
-                vec3( 0.0f, -0.3f, 0.9f),
-            };
-
-            float d = 0.f;
-
-            for (auto p : samples)
-            {
-                float u = (i + p.x) * cost - (j + p.y) * sint + delta.x;
-                float v = (i + p.x) * sint + (j + p.y) * cost + delta.y;
-                float ex = Kx * u * u;
-                float ey = Ky * v * v;
-                d += p.z * lol::exp(ex + ey);
-
-                /* Do not interpolate if this is a standard gaussian. */
-                if (!delta.x && !delta.y && !angle)
-                    break;
-            }
-
-            kernel[i + krx][j + kry] = d;
-            t += d;
-        }
-    }
-
-    for (int j = 0; j < size.y; j++)
-        for (int i = 0; i < size.x; i++)
-            kernel[i][j] *= (1.f / t);
-
-    return kernel;
-}
-
-} /* namespace lol */
-
diff --git a/src/image/movie.cpp b/src/image/movie.cpp
deleted file mode 100644
index 8ff06aff..00000000
--- a/src/image/movie.cpp
+++ /dev/null
@@ -1,229 +0,0 @@
-//
-//  Lol Engine
-//
-//  Copyright © 2010—2018 Sam Hocevar <sam@hocevar.net>
-//
-//  Lol Engine is free software. It comes without any warranty, to
-//  the extent permitted by applicable law. You can redistribute it
-//  and/or modify it under the terms of the Do What the Fuck You Want
-//  to Public License, Version 2, as published by the WTFPL Task Force.
-//  See http://www.wtfpl.net/ for more details.
-//
-
-#include <lol/engine-internal.h>
-
-#if LOL_USE_FFMPEG
-extern "C"
-{
-#   include <libavutil/avassert.h>
-#   include <libavutil/channel_layout.h>
-#   include <libavutil/mathematics.h>
-#   include <libavutil/timestamp.h>
-#   include <libavformat/avformat.h>
-#   include <libswscale/swscale.h>
-#   include <libswresample/swresample.h>
-}
-#endif
-
-namespace lol
-{
-
-#if LOL_USE_FFMPEG
-#define ERROR_TO_STRING(errnum) (error2string((errnum)).c_str())
-static std::string error2string(int errnum)
-{
-    char tmp[AV_ERROR_MAX_STRING_SIZE];
-    av_strerror(errnum, tmp, AV_ERROR_MAX_STRING_SIZE);
-    return std::string(tmp);
-}
-
-/*static void ffmpeg_logger(void *ptr, int level, const char *fmt, va_list vl)
-{
-    // FIXME: use lol::msg::debug
-    UNUSED(ptr, level);
-    vfprintf(stderr, fmt, vl);
-}*/
-#endif
-
-movie::movie(ivec2 size)
-  : m_avformat(nullptr),
-    m_avcodec(nullptr),
-    m_stream(nullptr),
-    m_frame(nullptr),
-    m_size(size),
-    m_index(0)
-{
-#if LOL_USE_FFMPEG
-    m_frame = av_frame_alloc();
-    ASSERT(m_frame);
-
-    m_frame->format = AV_PIX_FMT_RGB8; // 3:3:2 packed for GIF
-    m_frame->width = m_size.x;
-    m_frame->height = m_size.y;
-
-    int ret = av_frame_get_buffer(m_frame, 32);
-    ASSERT(ret >= 0);
-#endif
-}
-
-bool movie::open_file(std::string const &filename)
-{
-#if LOL_USE_FFMPEG
-    /* Third argument specifies format */
-    avformat_alloc_output_context2(&m_avformat, nullptr, "gif", filename.c_str());
-    if (!m_avformat)
-    {
-        msg::debug("could not create output context");
-        return false;
-    }
-
-    if (!open_codec())
-        return false;
-
-    if (!(m_avformat->oformat->flags & AVFMT_NOFILE))
-    {
-        int ret = avio_open(&m_avformat->pb, filename.c_str(), AVIO_FLAG_WRITE);
-        if (ret < 0)
-        {
-            msg::error("could not open '%s': %s\n", filename.c_str(), ERROR_TO_STRING(ret));
-            return false;
-        }
-    }
-
-    int ret = avformat_write_header(m_avformat, nullptr);
-    if (ret < 0)
-    {
-        msg::error("could not write header: %s\n", ERROR_TO_STRING(ret));
-        return false;
-    }
-    return true;
-#else
-    UNUSED(filename);
-    return false;
-#endif
-}
-
-bool movie::push_image(image &im)
-{
-#if LOL_USE_FFMPEG
-    // Make sure the encoder does not hold a reference on our
-    // frame (GIF does that in order to compress using deltas).
-    if (av_frame_make_writable(m_frame) < 0)
-        return false;
-
-    // Convert image to 3:3:2. TODO: add some dithering
-    u8vec3 *data = im.lock<PixelFormat::RGB_8>();
-    for (int n = 0; n < im.size().x * im.size().y; ++n)
-        m_frame->data[0][n] = (data[n].r & 0xe0) | ((data[n].g & 0xe0) >> 3) | (data[n].b >> 6);
-    im.unlock(data);
-
-    m_frame->pts = m_index++;
-
-    int ret = avcodec_send_frame(m_avcodec, m_frame);
-    if (ret < 0)
-    {
-        msg::error("cannot send video frame: %s\n", ERROR_TO_STRING(ret));
-        return false;
-    }
-
-    while (ret >= 0)
-    {
-        AVPacket pkt;
-        memset(&pkt, 0, sizeof(pkt));
-        av_init_packet(&pkt);
-
-        ret = avcodec_receive_packet(m_avcodec, &pkt);
-        if (ret == AVERROR(EAGAIN) || ret == AVERROR_EOF)
-            return true;
-        if (ret < 0)
-        {
-            msg::error("cannot retrieve video packet: %s\n", ERROR_TO_STRING(ret));
-            return false;
-        }
-
-        pkt.stream_index = m_stream->index;
-        ret = av_interleaved_write_frame(m_avformat, &pkt);
-        if (ret < 0)
-        {
-            msg::error("cannot write video frame: %s\n", ERROR_TO_STRING(ret));
-            return false;
-        }
-    }
-#else
-    UNUSED(im);
-#endif
-
-    return true;
-}
-
-void movie::close()
-{
-#if LOL_USE_FFMPEG
-    // this must be done before m_avcodec is freed
-    av_write_trailer(m_avformat);
-
-    avcodec_free_context(&m_avcodec);
-    av_frame_free(&m_frame);
-
-    if (!(m_avformat->oformat->flags & AVFMT_NOFILE))
-        avio_closep(&m_avformat->pb);
-
-    avformat_free_context(m_avformat);
-#endif
-}
-
-bool movie::open_codec()
-{
-#if LOL_USE_FFMPEG
-    AVCodec *codec = avcodec_find_encoder(m_avformat->oformat->video_codec);
-    if (!codec)
-    {
-        msg::error("no encoder found for %s\n", avcodec_get_name(m_avformat->oformat->video_codec));
-        return false;
-    }
-
-    m_stream = avformat_new_stream(m_avformat, nullptr);
-    if (!m_stream)
-    {
-        msg::error("cannot allocate stream\n");
-        return false;
-    }
-    m_stream->id = 0; // first (and only?) stream
-    m_stream->time_base = AVRational{ 1, 30 }; // 30 fps
-
-    m_avcodec = avcodec_alloc_context3(codec);
-    if (!m_avcodec)
-    {
-        msg::error("cannot allocate encoding context\n");
-        return false;
-    }
-
-    m_avcodec->codec_id = m_avformat->oformat->video_codec;
-    m_avcodec->width = m_frame->width;
-    m_avcodec->height = m_frame->height;
-    m_avcodec->pix_fmt = AVPixelFormat(m_frame->format);
-    m_avcodec->time_base = m_stream->time_base;
-
-    if (m_avformat->oformat->flags & AVFMT_GLOBALHEADER)
-        m_avcodec->flags |= AV_CODEC_FLAG_GLOBAL_HEADER;
-
-    int ret = avcodec_open2(m_avcodec, codec, nullptr);
-    if (ret < 0)
-    {
-        msg::error("cannot open video codec: %s\n", ERROR_TO_STRING(ret));
-        return false;
-    }
-
-    ret = avcodec_parameters_from_context(m_stream->codecpar, m_avcodec);
-    if (ret < 0)
-    {
-        msg::error("cannot copy stream parameters\n");
-        return false;
-    }
-#endif
-
-    return true;
-}
-
-} // namespace lol
-
diff --git a/src/image/noise.cpp b/src/image/noise.cpp
deleted file mode 100644
index 408ea524..00000000
--- a/src/image/noise.cpp
+++ /dev/null
@@ -1,39 +0,0 @@
-//
-//  Lol Engine
-//
-//  Copyright © 2004—2017 Sam Hocevar <sam@hocevar.net>
-//
-//  Lol Engine is free software. It comes without any warranty, to
-//  the extent permitted by applicable law. You can redistribute it
-//  and/or modify it under the terms of the Do What the Fuck You Want
-//  to Public License, Version 2, as published by the WTFPL Task Force.
-//  See http://www.wtfpl.net/ for more details.
-//
-
-#include <lol/engine-internal.h>
-
-/*
- * Noise rendering functions
- */
-
-namespace lol
-{
-
-bool image::RenderRandom(ivec2 size)
-{
-    resize(size);
-    vec4 *pixels = lock<PixelFormat::RGBA_F32>();
-
-    for (int n = 0; n < size.x * size.y; ++n)
-        pixels[n] = vec4(lol::rand(1.f),
-                         lol::rand(1.f),
-                         lol::rand(1.f),
-                         1.f);
-
-    unlock(pixels);
-
-    return true;
-}
-
-} /* namespace lol */
-
diff --git a/src/image/pixel.cpp b/src/image/pixel.cpp
deleted file mode 100644
index 0e000cb5..00000000
--- a/src/image/pixel.cpp
+++ /dev/null
@@ -1,354 +0,0 @@
-//
-//  Lol Engine
-//
-//  Copyright © 2004—2019 Sam Hocevar <sam@hocevar.net>
-//
-//  Lol Engine is free software. It comes without any warranty, to
-//  the extent permitted by applicable law. You can redistribute it
-//  and/or modify it under the terms of the Do What the Fuck You Want
-//  to Public License, Version 2, as published by the WTFPL Task Force.
-//  See http://www.wtfpl.net/ for more details.
-//
-
-#include <lol/engine-internal.h>
-
-#include "image-private.h"
-
-namespace lol
-{
-
-static float u8tof32(uint8_t pixel)
-{
-    //return pow((float)pixel / 255.f, global_gamma);
-    return pixel / 255.f;
-}
-
-static vec4 u8tof32(u8vec4 pixel)
-{
-    //vec4 ret;
-    //ret.r = pow((float)pixel.r / 255.f, global_gamma);
-    //ret.g = pow((float)pixel.g / 255.f, global_gamma);
-    //ret.b = pow((float)pixel.b / 255.f, global_gamma);
-    return (vec4)pixel / 255.f;
-}
-
-static vec3 u8tof32(u8vec3 pixel)
-{
-    //vec3 ret;
-    //ret.r = pow((float)pixel.r / 255.f, global_gamma);
-    //ret.g = pow((float)pixel.g / 255.f, global_gamma);
-    //ret.b = pow((float)pixel.b / 255.f, global_gamma);
-    return (vec3)pixel / 255.f;
-}
-
-static uint8_t f32tou8(float pixel)
-{
-    return (uint8_t)(pixel * 255.99f);
-}
-
-static u8vec3 f32tou8(vec3 pixel)
-{
-    return (u8vec3)(pixel * 255.99f);
-}
-
-static u8vec4 f32tou8(vec4 pixel)
-{
-    return (u8vec4)(pixel * 255.99f);
-}
-
-/*
- * Pixel-level image manipulation
- */
-
-PixelFormat image::format() const
-{
-    return m_data->m_format;
-}
-
-/* Conversion rules matrix
- *
- * From:   To→  1  2  3  4  5  6
- * Y_8       1  .  o  o  x  x  x
- * RGB_8     2  ~  .  o  ~  x  x
- * RGBA_8    3  ~  o  .  ~  x  x
- * Y_F32     4  #  ~  ~  .  o  o
- * RGB_F32   5  ~  #  ~  #  .  o
- * RGBA_F32  6  ~  ~  #  ~  o  .
- *
- * . no conversion necessary
- * ~ intermediate conversion to RGBA_F32 or RGB_F32
- * o easy conversion (add/remove alpha and/or convert gray→color)
- * x lossless conversion (u8 to float)
- * # lossy conversion (dithering and/or convert color→gray)
- */
-void image::set_format(PixelFormat fmt)
-{
-    PixelFormat old_fmt = m_data->m_format;
-
-    /* Preliminary intermediate conversions */
-    if (old_fmt == PixelFormat::RGBA_8 && fmt == PixelFormat::Y_F32)
-        set_format(PixelFormat::RGBA_F32);
-    else if (old_fmt == PixelFormat::RGB_8 && fmt == PixelFormat::Y_F32)
-        set_format(PixelFormat::RGBA_F32);
-    else if (old_fmt == PixelFormat::Y_F32 && fmt == PixelFormat::RGBA_8)
-        set_format(PixelFormat::RGBA_F32);
-    else if (old_fmt == PixelFormat::Y_F32 && fmt == PixelFormat::RGB_8)
-        set_format(PixelFormat::RGBA_F32);
-    else if (old_fmt == PixelFormat::RGB_F32 && fmt == PixelFormat::RGBA_8)
-        set_format(PixelFormat::RGBA_F32);
-    else if (old_fmt == PixelFormat::RGBA_F32 && fmt == PixelFormat::Y_F32)
-        set_format(PixelFormat::RGB_F32);
-    else if (old_fmt == PixelFormat::RGBA_F32 && fmt == PixelFormat::RGB_8)
-        set_format(PixelFormat::RGB_F32);
-    else if (old_fmt == PixelFormat::RGB_8 && fmt == PixelFormat::Y_8)
-        set_format(PixelFormat::RGB_F32);
-    else if (old_fmt == PixelFormat::RGBA_8 && fmt == PixelFormat::Y_8)
-        set_format(PixelFormat::RGB_F32);
-    else if (old_fmt == PixelFormat::RGB_F32 && fmt == PixelFormat::Y_8)
-        set_format(PixelFormat::Y_F32);
-    else if (old_fmt == PixelFormat::RGBA_F32 && fmt == PixelFormat::Y_8)
-        set_format(PixelFormat::Y_F32);
-
-    old_fmt = m_data->m_format;
-
-    /* Set the new active pixel format */
-    m_data->m_format = fmt;
-
-    ivec2 isize = size();
-    int count = isize.x * isize.y;
-
-    /* If we never used this format, allocate a new buffer: we will
-     * obviously need it. */
-    if (m_data->m_pixels[(int)fmt] == nullptr)
-    {
-        PixelDataBase *data = nullptr;
-#if __GNUC__
-#pragma GCC diagnostic push
-#pragma GCC diagnostic error "-Wswitch"
-#endif
-        switch (fmt)
-        {
-            case PixelFormat::Unknown:
-                break;
-            case PixelFormat::Y_8:
-                data = new PixelData<PixelFormat::Y_8>(isize); break;
-            case PixelFormat::RGB_8:
-                data = new PixelData<PixelFormat::RGB_8>(isize); break;
-            case PixelFormat::RGBA_8:
-                data = new PixelData<PixelFormat::RGBA_8>(isize); break;
-            case PixelFormat::Y_F32:
-                data = new PixelData<PixelFormat::Y_F32>(isize); break;
-            case PixelFormat::RGB_F32:
-                data = new PixelData<PixelFormat::RGB_F32>(isize); break;
-            case PixelFormat::RGBA_F32:
-                data = new PixelData<PixelFormat::RGBA_F32>(isize); break;
-        }
-#if __GNUC__
-#pragma GCC diagnostic pop
-#endif
-        ASSERT(data, "invalid pixel type %d", (int)fmt);
-        m_data->m_pixels[(int)fmt] = data;
-    }
-
-    /* If the requested format is already the current format, or if the
-     * current format is invalid, there is nothing to convert. */
-    if (fmt == old_fmt || old_fmt == PixelFormat::Unknown)
-        return;
-
-    /* Easy conversions: just add or remove channels */
-    if (old_fmt == PixelFormat::Y_8 && fmt == PixelFormat::RGB_8)
-    {
-        uint8_t *src = (uint8_t *)m_data->m_pixels[(int)old_fmt]->data();
-        u8vec3 *dest = (u8vec3 *)m_data->m_pixels[(int)fmt]->data();
-
-        for (int n = 0; n < count; ++n)
-            dest[n] = u8vec3(src[n]);
-    }
-    else if (old_fmt == PixelFormat::Y_8 && fmt == PixelFormat::RGBA_8)
-    {
-        uint8_t *src = (uint8_t *)m_data->m_pixels[(int)old_fmt]->data();
-        u8vec4 *dest = (u8vec4 *)m_data->m_pixels[(int)fmt]->data();
-
-        for (int n = 0; n < count; ++n)
-            dest[n] = u8vec4(u8vec3(src[n]), 255);
-    }
-    else if (old_fmt == PixelFormat::RGBA_8 && fmt == PixelFormat::RGB_8)
-    {
-        u8vec4 *src = (u8vec4 *)m_data->m_pixels[(int)old_fmt]->data();
-        u8vec3 *dest = (u8vec3 *)m_data->m_pixels[(int)fmt]->data();
-
-        for (int n = 0; n < count; ++n)
-            dest[n] = src[n].rgb;
-    }
-    else if (old_fmt == PixelFormat::RGB_8 && fmt == PixelFormat::RGBA_8)
-    {
-        u8vec3 *src = (u8vec3 *)m_data->m_pixels[(int)old_fmt]->data();
-        u8vec4 *dest = (u8vec4 *)m_data->m_pixels[(int)fmt]->data();
-
-        for (int n = 0; n < count; ++n)
-            dest[n] = u8vec4(src[n], 255);
-    }
-    else if (old_fmt == PixelFormat::RGBA_F32 && fmt == PixelFormat::RGB_F32)
-    {
-        vec4 *src = (vec4 *)m_data->m_pixels[(int)old_fmt]->data();
-        vec3 *dest = (vec3 *)m_data->m_pixels[(int)fmt]->data();
-
-        for (int n = 0; n < count; ++n)
-            dest[n] = src[n].rgb;
-    }
-    else if (old_fmt == PixelFormat::RGB_F32 && fmt == PixelFormat::RGBA_F32)
-    {
-        vec3 *src = (vec3 *)m_data->m_pixels[(int)old_fmt]->data();
-        vec4 *dest = (vec4 *)m_data->m_pixels[(int)fmt]->data();
-
-        for (int n = 0; n < count; ++n)
-            dest[n] = vec4(src[n], 1.f);
-    }
-    else if (old_fmt == PixelFormat::Y_F32 && fmt == PixelFormat::RGB_F32)
-    {
-        float *src = (float *)m_data->m_pixels[(int)old_fmt]->data();
-        vec3 *dest = (vec3 *)m_data->m_pixels[(int)fmt]->data();
-
-        for (int n = 0; n < count; ++n)
-            dest[n] = vec3(src[n]);
-    }
-    else if (old_fmt == PixelFormat::Y_F32 && fmt == PixelFormat::RGBA_F32)
-    {
-        float *src = (float *)m_data->m_pixels[(int)old_fmt]->data();
-        vec4 *dest = (vec4 *)m_data->m_pixels[(int)fmt]->data();
-
-        for (int n = 0; n < count; ++n)
-            dest[n] = vec4(vec3(src[n]), 1.0f);
-    }
-    /* Lossless conversions: u8 to float */
-    else if (old_fmt == PixelFormat::Y_8 && fmt == PixelFormat::Y_F32)
-    {
-        uint8_t *src = (uint8_t *)m_data->m_pixels[(int)old_fmt]->data();
-        float *dest = (float *)m_data->m_pixels[(int)fmt]->data();
-
-        for (int n = 0; n < count; ++n)
-            dest[n] = u8tof32(src[n]);
-    }
-    else if (old_fmt == PixelFormat::Y_8 && fmt == PixelFormat::RGB_F32)
-    {
-        uint8_t *src = (uint8_t *)m_data->m_pixels[(int)old_fmt]->data();
-        vec3 *dest = (vec3 *)m_data->m_pixels[(int)fmt]->data();
-
-        for (int n = 0; n < count; ++n)
-            dest[n] = u8tof32(u8vec3(src[n]));
-    }
-    else if (old_fmt == PixelFormat::RGB_8 && fmt == PixelFormat::RGB_F32)
-    {
-        u8vec3 *src = (u8vec3 *)m_data->m_pixels[(int)old_fmt]->data();
-        vec3 *dest = (vec3 *)m_data->m_pixels[(int)fmt]->data();
-
-        for (int n = 0; n < count; ++n)
-            dest[n] = u8tof32(src[n]);
-    }
-    else if (old_fmt == PixelFormat::RGBA_8 && fmt == PixelFormat::RGB_F32)
-    {
-        u8vec4 *src = (u8vec4 *)m_data->m_pixels[(int)old_fmt]->data();
-        vec3 *dest = (vec3 *)m_data->m_pixels[(int)fmt]->data();
-
-        for (int n = 0; n < count; ++n)
-            dest[n] = u8tof32(src[n].rgb);
-    }
-    else if (old_fmt == PixelFormat::Y_8 && fmt == PixelFormat::RGBA_F32)
-    {
-        uint8_t *src = (uint8_t *)m_data->m_pixels[(int)old_fmt]->data();
-        vec4 *dest = (vec4 *)m_data->m_pixels[(int)fmt]->data();
-
-        for (int n = 0; n < count; ++n)
-            dest[n] = u8tof32(u8vec4(u8vec3(src[n]), 255));
-    }
-    else if (old_fmt == PixelFormat::RGB_8 && fmt == PixelFormat::RGBA_F32)
-    {
-        u8vec3 *src = (u8vec3 *)m_data->m_pixels[(int)old_fmt]->data();
-        vec4 *dest = (vec4 *)m_data->m_pixels[(int)fmt]->data();
-
-        for (int n = 0; n < count; ++n)
-            dest[n] = u8tof32(u8vec4(src[n], 255));
-    }
-    else if (old_fmt == PixelFormat::RGBA_8 && fmt == PixelFormat::RGBA_F32)
-    {
-        u8vec4 *src = (u8vec4 *)m_data->m_pixels[(int)old_fmt]->data();
-        vec4 *dest = (vec4 *)m_data->m_pixels[(int)fmt]->data();
-
-        for (int n = 0; n < count; ++n)
-            dest[n] = u8tof32(src[n]);
-    }
-    /* Other conversions */
-    else if (old_fmt == PixelFormat::RGB_F32 && fmt == PixelFormat::Y_F32)
-    {
-        vec3 *src = (vec3 *)m_data->m_pixels[(int)old_fmt]->data();
-        float *dest = (float *)m_data->m_pixels[(int)fmt]->data();
-
-        vec3 const coeff(0.299f, 0.587f, 0.114f);
-
-        for (int n = 0; n < count; ++n)
-            dest[n] = dot(coeff, src[n]);
-    }
-    else if (old_fmt == PixelFormat::Y_F32 && fmt == PixelFormat::Y_8)
-    {
-        float *src = (float *)m_data->m_pixels[(int)old_fmt]->data();
-        uint8_t *dest = (uint8_t *)m_data->m_pixels[(int)fmt]->data();
-
-        for (int n = 0; n < count; ++n)
-            dest[n] = f32tou8(src[n]);
-    }
-    else if (old_fmt == PixelFormat::RGB_F32 && fmt == PixelFormat::RGB_8)
-    {
-        vec3 *src = (vec3 *)m_data->m_pixels[(int)old_fmt]->data();
-        u8vec3 *dest = (u8vec3 *)m_data->m_pixels[(int)fmt]->data();
-
-        for (int n = 0; n < count; ++n)
-            dest[n] = f32tou8(src[n]);
-    }
-    else if (old_fmt == PixelFormat::RGBA_F32 && fmt == PixelFormat::RGBA_8)
-    {
-        vec4 *src = (vec4 *)m_data->m_pixels[(int)old_fmt]->data();
-        u8vec4 *dest = (u8vec4 *)m_data->m_pixels[(int)fmt]->data();
-
-        for (int n = 0; n < count; ++n)
-            dest[n] = f32tou8(src[n]);
-#if 0
-        init_tables();
-
-        for (int y = 0; y < isize.y; y++)
-            for (int x = 0; x < isize.x; x++)
-                for (i = 0; i < 4; i++)
-                {
-                    double p, e;
-                    uint8_t d;
-
-                    p = src[4 * (y * isize.x + x) + i];
-
-                    if (p < 0.) d = 0.;
-                    else if (p > 1.) d = 255;
-                    else d = (int)(255.999 * pow(p, 1. / global_gamma));
-
-                    dest[4 * (y * isize.x + x) + i] = d;
-
-                    e = (p - u8tof32(d)) / 16;
-                    if (x < isize.x - 1)
-                        src[4 * (y * isize.x + x + 1) + i] += e * 7;
-                    if (y < isize.y - 1)
-                    {
-                        if (x > 0)
-                            src[4 * ((y + 1) * isize.x + x - 1) + i] += e * 3;
-                        src[4 * ((y + 1) * isize.x + x) + i] += e * 5;
-                        if (x < isize.x - 1)
-                            src[4 * ((y + 1) * isize.x + x + 1) + i] += e;
-                    }
-                }
-#endif
-    }
-    else
-    {
-        ASSERT(false, "Unable to find image conversion from %d to %d",
-               (int)old_fmt, (int)fmt);
-    }
-}
-
-} /* namespace lol */
-
diff --git a/src/image/resample.cpp b/src/image/resample.cpp
deleted file mode 100644
index 7eec0276..00000000
--- a/src/image/resample.cpp
+++ /dev/null
@@ -1,210 +0,0 @@
-//
-//  Lol Engine
-//
-//  Copyright © 2004—2017 Sam Hocevar <sam@hocevar.net>
-//
-//  Lol Engine is free software. It comes without any warranty, to
-//  the extent permitted by applicable law. You can redistribute it
-//  and/or modify it under the terms of the Do What the Fuck You Want
-//  to Public License, Version 2, as published by the WTFPL Task Force.
-//  See http://www.wtfpl.net/ for more details.
-//
-
-#include <lol/engine-internal.h>
-
-/*
- * Image resizing functions
- */
-
-namespace lol
-{
-
-static image ResizeBicubic(image &src, ivec2 size);
-static image ResizeBresenham(image &src, ivec2 size);
-
-image image::Resize(ivec2 size, ResampleAlgorithm algorithm)
-{
-    switch (algorithm)
-    {
-        case ResampleAlgorithm::Bicubic:
-            return ResizeBicubic(*this, size);
-        case ResampleAlgorithm::Bresenham:
-        default:
-            return ResizeBresenham(*this, size);
-    }
-}
-
-static image ResizeBicubic(image &src, ivec2 size)
-{
-    image dst(size);
-    ivec2 const oldsize = src.size();
-
-    vec4 const *srcp = src.lock<PixelFormat::RGBA_F32>();
-    vec4 *dstp = dst.lock<PixelFormat::RGBA_F32>();
-
-    float scalex = size.x > 1 ? (oldsize.x - 1.f) / (size.x - 1) : 1.f;
-    float scaley = size.y > 1 ? (oldsize.y - 1.f) / (size.y - 1) : 1.f;
-
-    for (int y = 0; y < size.y; ++y)
-    {
-        float yfloat = scaley * y;
-        int yint = (int)yfloat;
-        float y1 = yfloat - yint;
-
-        vec4 const *p0 = srcp + oldsize.x * lol::min(lol::max(0, yint - 1), oldsize.y - 1);
-        vec4 const *p1 = srcp + oldsize.x * lol::min(lol::max(0, yint    ), oldsize.y - 1);
-        vec4 const *p2 = srcp + oldsize.x * lol::min(lol::max(0, yint + 1), oldsize.y - 1);
-        vec4 const *p3 = srcp + oldsize.x * lol::min(lol::max(0, yint + 2), oldsize.y - 1);
-
-        for (int x = 0; x < size.x; ++x)
-        {
-            float xfloat = scalex * x;
-            int xint = (int)xfloat;
-            float x1 = xfloat - xint;
-
-            int const i0 = lol::min(lol::max(0, xint - 1), oldsize.x - 1);
-            int const i1 = lol::min(lol::max(0, xint    ), oldsize.x - 1);
-            int const i2 = lol::min(lol::max(0, xint + 1), oldsize.x - 1);
-            int const i3 = lol::min(lol::max(0, xint + 2), oldsize.x - 1);
-
-            vec4 a00 = p1[i1];
-            vec4 a01 = .5f * (p2[i1] - p0[i1]);
-            vec4 a02 = p0[i1] - 2.5f * p1[i1]
-                        + 2.f * p2[i1] - .5f * p3[i1];
-            vec4 a03 = .5f * (p3[i1] - p0[i1]) + 1.5f * (p1[i1] - p2[i1]);
-
-            vec4 a10 = .5f * (p1[i2] - p1[i0]);
-            vec4 a11 = .25f * (p0[i0] - p2[i0] - p0[i2] + p2[i2]);
-            vec4 a12 = .5f * (p0[i2] - p0[i0]) + 1.25f * (p1[i0] - p1[i2])
-                        + .25f * (p3[i0] - p3[i2]) + p2[i2] - p2[i0];
-            vec4 a13 = .25f * (p0[i0] - p3[i0] - p0[i2] + p3[i2])
-                        + .75f * (p2[i0] - p1[i0] + p1[i2] - p2[i2]);
-
-            vec4 a20 = p1[i0] - 2.5f * p1[i1]
-                        + 2.f * p1[i2] - .5f * p1[i3];
-            vec4 a21 = .5f * (p2[i0] - p0[i0]) + 1.25f * (p0[i1] - p2[i1])
-                        + .25f * (p0[i3] - p2[i3]) - p0[i2] + p2[i2];
-            vec4 a22 = p0[i0] - p3[i2] - 2.5f * (p1[i0] + p0[i1])
-                        + 2.f * (p2[i0] + p0[i2]) - .5f * (p3[i0] + p0[i3])
-                        + 6.25f * p1[i1] - 5.f * (p2[i1] + p1[i2])
-                        + 1.25f * (p3[i1] + p1[i3])
-                        + 4.f * p2[i2] - p2[i3] + .25f * p3[i3];
-            vec4 a23 = 1.5f * (p1[i0] - p2[i0]) + .5f * (p3[i0] - p0[i0])
-                        + 1.25f * (p0[i1] - p3[i1])
-                        + 3.75f * (p2[i1] - p1[i1]) + p3[i2] - p0[i2]
-                        + 3.f * (p1[i2] - p2[i2]) + .25f * (p0[i3] - p3[i3])
-                        + .75f * (p2[i3] - p1[i3]);
-
-            vec4 a30 = .5f * (p1[i3] - p1[i0]) + 1.5f * (p1[i1] - p1[i2]);
-            vec4 a31 = .25f * (p0[i0] - p2[i0]) + .25f * (p2[i3] - p0[i3])
-                        + .75f * (p2[i1] - p0[i1] + p0[i2] - p2[i2]);
-            vec4 a32 = -.5f * p0[i0] + 1.25f * p1[i0] - p2[i0]
-                        + .25f * p3[i0] + 1.5f * p0[i1] - 3.75f * p1[i1]
-                        + 3.f * p2[i1] - .75f * p3[i1] - 1.5f * p0[i2]
-                        + 3.75f * p1[i2] - 3.f * p2[i2] + .75f * p3[i2]
-                        + .5f * p0[i3] - 1.25f * p1[i3] + p2[i3]
-                        - .25f * p3[i3];
-            vec4 a33 = .25f * p0[i0] - .75f * p1[i0] + .75f * p2[i0]
-                        - .25f * p3[i0] - .75f * p0[i1] + 2.25f * p1[i1]
-                        - 2.25f * p2[i1] + .75f * p3[i1] + .75f * p0[i2]
-                        - 2.25f * p1[i2] + 2.25f * p2[i2] - .75f * p3[i2]
-                        - .25f * p0[i3] + .75f * p1[i3] - .75f * p2[i3]
-                        + .25f * p3[i3];
-
-            float y2 = y1 * y1; float y3 = y2 * y1;
-            float x2 = x1 * x1; float x3 = x2 * x1;
-
-            vec4 p = a00 + a01 * y1 + a02 * y2 + a03 * y3
-                   + a10 * x1 + a11 * x1 * y1 + a12 * x1 * y2 + a13 * x1 * y3
-                   + a20 * x2 + a21 * x2 * y1 + a22 * x2 * y2 + a23 * x2 * y3
-                   + a30 * x3 + a31 * x3 * y1 + a32 * x3 * y2 + a33 * x3 * y3;
-
-            dstp[y * size.x + x] = lol::clamp(p, 0.f, 1.f);
-        }
-    }
-
-    dst.unlock(dstp);
-    src.unlock(srcp);
-
-    return dst;
-}
-
-/* This is Bresenham resizing. I “rediscovered” it independently but
- * it was actually first described in 1995 by Tim Kientzle in “Scaling
- * Bitmaps with Bresenham”. */
-
-/* FIXME: the algorithm does not handle alpha components properly. Resulting
- * alpha should be the mean alpha value of the neightbouring pixels, but
- * the colour components should be weighted with the alpha value. */
-static image ResizeBresenham(image &src, ivec2 size)
-{
-    image dst(size);
-    ivec2 const oldsize = src.size();
-    float const invswsh = 1.0f / (oldsize.x * oldsize.y);
-
-    vec4 const *srcp = src.lock<PixelFormat::RGBA_F32>();
-    vec4 *dstp = dst.lock<PixelFormat::RGBA_F32>();
-
-    array<vec4> aline, line;
-    aline.resize(size.x);
-    line.resize(size.x);
-    memset((void *)line.data(), 0, line.bytes());
-
-    int remy = 0;
-
-    for (int y = 0, y0 = 0; y < size.y; y++)
-    {
-        memset((void *)aline.data(), 0, aline.bytes());
-
-        for (int toty = 0; toty < oldsize.y; )
-        {
-            if (remy == 0)
-            {
-                vec4 color(0.f);
-                int remx = 0;
-
-                for (int x = 0, x0 = 0; x < size.x; x++)
-                {
-                    vec4 acolor(0.f);
-
-                    for (int totx = 0; totx < oldsize.x; )
-                    {
-                        if (remx == 0)
-                        {
-                            color = srcp[y0 * oldsize.x + x0];
-                            x0++;
-                            remx = size.x;
-                        }
-
-                        int nx = lol::min(remx, oldsize.x - totx);
-                        acolor += (float)nx * color;
-                        totx += nx;
-                        remx -= nx;
-                    }
-
-                    line[x] = acolor;
-                }
-
-                y0++;
-                remy = size.y;
-            }
-
-            int ny = lol::min(remy, oldsize.y - toty);
-            for (int x = 0; x < size.x; x++)
-                aline[x] += (float)ny * line[x];
-            toty += ny;
-            remy -= ny;
-        }
-
-        for (int x = 0; x < size.x; x++)
-            dstp[y * size.x + x] = aline[x] * invswsh;
-    }
-
-    dst.unlock(dstp);
-    src.unlock(srcp);
-
-    return dst;
-}
-
-} /* namespace lol */
-
diff --git a/src/image/resource-private.h b/src/image/resource-private.h
deleted file mode 100644
index 616fdb0a..00000000
--- a/src/image/resource-private.h
+++ /dev/null
@@ -1,58 +0,0 @@
-//
-//  Lol Engine
-//
-//  Copyright © 2010—2018 Sam Hocevar <sam@hocevar.net>
-//            © 2016—2017 Benjamin “Touky” Huet <huet.benjamin@gmail.com>
-//
-//  Lol Engine is free software. It comes without any warranty, to
-//  the extent permitted by applicable law. You can redistribute it
-//  and/or modify it under the terms of the Do What the Fuck You Want
-//  to Public License, Version 2, as published by the WTFPL Task Force.
-//  See http://www.wtfpl.net/ for more details.
-//
-
-#pragma once
-
-//
-// The ResourceCodecData class
-// ------------------------
-//
-
-namespace lol
-{
-
-    class ResourceCodec
-    {
-    public:
-        virtual std::string GetName() { return "<ResourceCodec>"; }
-        virtual ResourceCodecData* Load(std::string const &path) = 0;
-        virtual bool Save(std::string const &path, ResourceCodecData* data) = 0;
-
-        /* TODO: this should become more fine-grained */
-        int m_priority;
-    };
-
-#define REGISTER_IMAGE_CODEC(name) \
-    extern ResourceCodec *Register##name(); \
-    { \
-        /* Insert image codecs in a sorted list */ \
-        ResourceCodec *codec = Register##name(); \
-        int i = 0, prio = codec->m_priority; \
-        for ( ; i < codeclist.count(); ++i) \
-        { \
-            if (codeclist[i]->m_priority <= prio) \
-                break; \
-        } \
-        codeclist.insert(codec, i); \
-    }
-
-#define DECLARE_IMAGE_CODEC(name, priority) \
-    ResourceCodec *Register##name() \
-    { \
-        ResourceCodec *ret = new name(); \
-        ret->m_priority = priority; \
-        return ret; \
-    }
-
-} /* namespace lol */
-
diff --git a/src/image/resource.cpp b/src/image/resource.cpp
deleted file mode 100644
index ab5ec34b..00000000
--- a/src/image/resource.cpp
+++ /dev/null
@@ -1,125 +0,0 @@
-//
-//  Lol Engine
-//
-//  Copyright © 2010—2018 Sam Hocevar <sam@hocevar.net>
-//  Copyright © 2016—2017 Benjamin “Touky” Huet <huet.benjamin@gmail.com>
-//
-//  Lol Engine is free software. It comes without any warranty, to
-//  the extent permitted by applicable law. You can redistribute it
-//  and/or modify it under the terms of the Do What the Fuck You Want
-//  to Public License, Version 2, as published by the WTFPL Task Force.
-//  See http://www.wtfpl.net/ for more details.
-//
-
-#include <lol/engine-internal.h>
-
-#include "resource-private.h"
-
-#include <algorithm> /* for std::swap */
-
-namespace lol
-{
-
-/* HACK: We cannot make this an ImageLoader member function, because the
- * REGISTER_IMAGE_CODEC macro forward-declares free functions from
- * the "lol" namespace. An apparent bug in Visual Studio's compiler
- * makes it think these functions are actually in the top-level
- * namespace when the forward declaration is in a class member function.
- * To avoid the problem, we make the forward declaration in a free
- * function.
- * The bug was reported to Microsoft and fixed by them, but the fix
- * is not yet available.
- * https://connect.microsoft.com/VisualStudio/feedback/details/730878/ */
-static bool RegisterAllCodecs(array<ResourceCodec *> &codeclist)
-{
-#if defined __ANDROID__
-    REGISTER_IMAGE_CODEC(AndroidImageCodec)
-#endif
-#if defined LOL_USE_GDIPLUS
-    REGISTER_IMAGE_CODEC(GdiPlusImageCodec)
-#endif
-#if defined __APPLE__ && defined __MACH__ && defined __arm__
-    REGISTER_IMAGE_CODEC(IosImageCodec)
-#endif
-#if defined LOL_USE_SDL_IMAGE
-    REGISTER_IMAGE_CODEC(SdlImageCodec)
-#endif
-#if defined LOL_USE_IMLIB2
-    REGISTER_IMAGE_CODEC(Imlib2ImageCodec)
-#endif
-    REGISTER_IMAGE_CODEC(ZedImageCodec)
-    REGISTER_IMAGE_CODEC(ZedPaletteImageCodec)
-    REGISTER_IMAGE_CODEC(OricImageCodec)
-
-    REGISTER_IMAGE_CODEC(DummyImageCodec)
-
-    return true;
-}
-
-/*
-* Our static image loader
-*/
-
-static class StaticResourceLoader
-{
-    friend class ResourceLoader;
-
-public:
-    inline StaticResourceLoader()
-    {
-        RegisterAllCodecs(m_codecs);
-    }
-
-private:
-    array<ResourceCodec *> m_codecs;
-}
-g_resource_loader;
-
-/*
-* The public resource loader
-*/
-
-ResourceCodecData* ResourceLoader::Load(std::string const &path)
-{
-    ResourceCodec* last_codec = nullptr;
-    for (auto codec : g_resource_loader.m_codecs)
-    {
-        last_codec = codec;
-        auto data = codec->Load(path);
-        if (data != nullptr)
-        {
-            msg::debug("image::load: codec %s succesfully loaded %s.\n",
-                       codec->GetName().c_str(), path.c_str());
-            return data;
-        }
-    }
-
-    //Log error, because we shouldn't be here
-    msg::error("image::load: last codec %s, error loading resource %s.\n",
-               last_codec->GetName().c_str(), path.c_str());
-    return nullptr;
-}
-
-bool ResourceLoader::Save(std::string const &path, ResourceCodecData* data)
-{
-    ResourceCodec* last_codec = nullptr;
-    for (auto codec : g_resource_loader.m_codecs)
-    {
-        last_codec = codec;
-        if (codec->Save(path, data))
-        {
-            msg::debug("image::save: codec %s succesfully saved %s.\n",
-                      codec->GetName().c_str(), path.c_str());
-            return true;
-        }
-    }
-
-    //Log error, because we shouldn't be here
-    msg::error("image::save: last codec %s, error saving resource %s.\n",
-               last_codec->GetName().c_str(), path.c_str());
-    return false;
-}
-
-
-} /* namespace lol */
-
diff --git a/src/image/todo/bezier.cpp b/src/image/todo/bezier.cpp
deleted file mode 100644
index 27cc89b5..00000000
--- a/src/image/todo/bezier.cpp
+++ /dev/null
@@ -1,56 +0,0 @@
-/*
- *  Lol Engine
- *
- *  Copyright © 2004—2008 Sam Hocevar <sam@hocevar.net>
- *            © 2008 Jean-Yves Lamoureux <jylam@lnxscene.org>
- *
- *  This library is free software. It comes without any warranty, to
- *  the extent permitted by applicable law. You can redistribute it
- *  and/or modify it under the terms of the Do What the Fuck You Want
- *  to Public License, Version 2, as published by the WTFPL Task Force.
- *  See http://www.wtfpl.net/ for more details.
- */
-
-/*
- * bezier.c: bezier curves rendering functions
- */
-
-#include "config.h"
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-
-#include "pipi.h"
-#include "pipi-internals.h"
-
-
-int pipi_draw_bezier4(pipi_image_t *img ,
-                      int x1, int y1,
-                      int x2, int y2,
-                      int x3, int y3,
-                      int x4, int y4,
-                      uint32_t c, int n, int aa)
-{
-    if(img->last_modified == PIPI_PIXELS_RGBA_U8)
-    {
-        float t;
-        float x= x1, y= y1;
-        float lx, ly;
-        for(t=0; t<1; t+=(1.0f/n))
-        {
-            float a = t;
-            float b = 1 - t;
-
-            lx = x; ly = y;
-
-            x = (x1*(b*b*b)) + 3*x2*(b*b)*a + 3*x4*b*(a*a) + x3*(a*a*a);
-            y = (y1*(b*b*b)) + 3*y2*(b*b)*a + 3*y4*b*(a*a) + y3*(a*a*a);
-
-            pipi_draw_line(img , lx, ly, x, y, c, aa);
-        }
-        pipi_draw_line(img , x, y, x3, y3, c, aa);
-    }
-
-    return 0;
-}
diff --git a/src/image/todo/blit.cpp b/src/image/todo/blit.cpp
deleted file mode 100644
index 1693f648..00000000
--- a/src/image/todo/blit.cpp
+++ /dev/null
@@ -1,87 +0,0 @@
-/*
- *  Lol Engine
- *
- *  Copyright © 2004—2008 Sam Hocevar <sam@hocevar.net>
- *
- *  This library is free software. It comes without any warranty, to
- *  the extent permitted by applicable law. You can redistribute it
- *  and/or modify it under the terms of the Do What the Fuck You Want
- *  to Public License, Version 2, as published by the WTFPL Task Force.
- *  See http://www.wtfpl.net/ for more details.
- */
-
-/*
- * mean.c: Mean computation function
- */
-
-#include "config.h"
-
-#include <stdlib.h>
-
-#include "pipi.h"
-#include "pipi-internals.h"
-
-pipi_image_t *pipi_blit(pipi_image_t *img1, pipi_image_t *img2, int x, int y)
-{
-    pipi_image_t *dst;
-    pipi_pixels_t *img1p, *img2p, *dstp;
-    float *img1data, *img2data, *dstdata;
-    int dx, dy, w1, h1, w2, h2;
-
-    w1 = img1->w;
-    h1 = img1->h;
-    w2 = img2->w;
-    h2 = img2->h;
-
-    dst = pipi_copy(img1);
-    dstp = pipi_get_pixels(dst, PIPI_PIXELS_RGBA_F32);
-    dstdata = (float *)dstp->pixels;
-
-    img1p = pipi_get_pixels(img1, PIPI_PIXELS_RGBA_F32);
-    img1data = (float *)img1p->pixels;
-    img2p = pipi_get_pixels(img2, PIPI_PIXELS_RGBA_F32);
-    img2data = (float *)img2p->pixels;
-
-    for(dy = 0; dy < h2; dy++)
-    {
-        if (y + dy < 0)
-            continue;
-
-        if (y + dy >= h1)
-            break;
-
-        for(dx = 0; dx < w2; dx++)
-        {
-            float p, q;
-            double t1, t2;
-
-            if (x + dx < 0)
-                continue;
-
-            if (x + dx >= w1)
-                break;
-
-            t1 = img2data[4 * (dy * w2 + dx) + 3];
-            t2 = 1.0 - t1;
-
-            p = img1data[4 * ((y + dy) * w1 + (x + dx))];
-            q = img2data[4 * (dy * w2 + dx)];
-            dstdata[4 * ((y + dy) * w1 + (x + dx))] = t2 * p + t1 * q;
-
-            p = img1data[4 * ((y + dy) * w1 + (x + dx)) + 1];
-            q = img2data[4 * (dy * w2 + dx) + 1];
-            dstdata[4 * ((y + dy) * w1 + (x + dx)) + 1] = t2 * p + t1 * q;
-
-            p = img1data[4 * ((y + dy) * w1 + (x + dx)) + 2];
-            q = img2data[4 * (dy * w2 + dx) + 2];
-            dstdata[4 * ((y + dy) * w1 + (x + dx)) + 2] = t2 * p + t1 * q;
-
-            p = img1data[4 * ((y + dy) * w1 + (x + dx)) + 3];
-            q = img2data[4 * (dy * w2 + dx) + 3];
-            dstdata[4 * ((y + dy) * w1 + (x + dx)) + 3] = t2 * p + t1 * q;
-        }
-    }
-
-    return dst;
-}
-
diff --git a/src/image/todo/blur.cpp b/src/image/todo/blur.cpp
deleted file mode 100644
index 826d5bf7..00000000
--- a/src/image/todo/blur.cpp
+++ /dev/null
@@ -1,221 +0,0 @@
-/*
- *  Lol Engine
- *
- *  Copyright © 2004—2008 Sam Hocevar <sam@hocevar.net>
- *
- *  This library is free software. It comes without any warranty, to
- *  the extent permitted by applicable law. You can redistribute it
- *  and/or modify it under the terms of the Do What the Fuck You Want
- *  to Public License, Version 2, as published by the WTFPL Task Force.
- *  See http://www.wtfpl.net/ for more details.
- */
-
-/*
- * blur.c: blur functions
- */
-
-#include "config.h"
-
-#include <stdlib.h>
-#include <stdio.h>
-#include <string.h>
-#include <math.h>
-#ifndef M_PI
-#   define M_PI 3.14159265358979323846
-#endif
-
-#include "pipi.h"
-#include "pipi-internals.h"
-
-#if !defined TEMPLATE_FILE /* This file uses the template system */
-#define TEMPLATE_FLAGS SET_FLAG_GRAY | SET_FLAG_WRAP
-#define TEMPLATE_FILE "filter/blur.c"
-#include "pipi-template.h"
-
-pipi_image_t *pipi_box_blur(pipi_image_t *src, int size)
-{
-    return pipi_box_blur_ext(src, size, size);
-}
-
-pipi_image_t *pipi_box_blur_ext(pipi_image_t *src, int m, int n)
-{
-    if(src->wrap)
-    {
-        if(src->last_modified == PIPI_PIXELS_Y_F32)
-            return boxblur_gray_wrap(src, m, n);
-
-        return boxblur_wrap(src, m, n);
-    }
-    else
-    {
-        if(src->last_modified == PIPI_PIXELS_Y_F32)
-            return boxblur_gray(src, m, n);
-
-        return boxblur(src, m, n);
-    }
-}
-
-#else /* XXX: the following functions use the template system */
-
-static pipi_image_t *T(boxblur)(pipi_image_t *src, int m, int n)
-{
-    pipi_image_t *dst;
-    pipi_pixels_t *srcp, *dstp;
-    float *srcdata, *dstdata;
-    double *acc;
-    int x, y, w, h, i, j, i2, j2, size;
-
-    w = src->w;
-    h = src->h;
-    size = (2 * m + 1) * (2 * n + 1);
-
-    srcp = FLAG_GRAY ? pipi_get_pixels(src, PIPI_PIXELS_Y_F32)
-                     : pipi_get_pixels(src, PIPI_PIXELS_RGBA_F32);
-    srcdata = (float *)srcp->pixels;
-
-    dst = pipi_new(w, h);
-    dstp = FLAG_GRAY ? pipi_get_pixels(dst, PIPI_PIXELS_Y_F32)
-                     : pipi_get_pixels(dst, PIPI_PIXELS_RGBA_F32);
-    dstdata = (float *)dstp->pixels;
-
-    acc = malloc(w * (FLAG_GRAY ? 1 : 4) * sizeof(double));
-
-    /* Step 1: fill the accumulator */
-    for(x = 0; x < w; x++)
-    {
-        double r = 0., g = 0., b = 0., a = 0.;
-        double t = 0.;
-
-        for(j = -n; j <= n; j++)
-        {
-            if(FLAG_WRAP)
-                j2 = (j < 0) ? h - 1 - ((-j - 1) % h) : j % h;
-            else
-                j2 = (j < 0) ? 0 : (j >= h) ? h - 1 : j;
-
-            if(FLAG_GRAY)
-                t += srcdata[j2 * w + x];
-            else
-            {
-                r += srcdata[4 * (j2 * w + x)];
-                g += srcdata[4 * (j2 * w + x) + 1];
-                b += srcdata[4 * (j2 * w + x) + 2];
-                a += srcdata[4 * (j2 * w + x) + 3];
-            }
-        }
-
-        if(FLAG_GRAY)
-            acc[x] = t;
-        else
-        {
-            acc[4 * x] = r;
-            acc[4 * x + 1] = g;
-            acc[4 * x + 2] = b;
-            acc[4 * x + 3] = a;
-        }
-    }
-
-    /* Step 2: blur the image, line by line */
-    for(y = 0; y < h; y++)
-    {
-        double r = 0., g = 0., b = 0., a = 0.;
-        double t = 0.;
-
-        /* 2.1: compute the first pixel */
-        for(i = -m; i <= m; i++)
-        {
-            if(FLAG_WRAP)
-                i2 = (i < 0) ? w - 1 - ((-i - 1) % w) : i % w;
-            else
-                i2 = (i < 0) ? 0 : (i >= w) ? w - 1 : i;
-
-            if(FLAG_GRAY)
-                t += acc[i2];
-            else
-            {
-                r += acc[4 * i2];
-                g += acc[4 * i2 + 1];
-                b += acc[4 * i2 + 2];
-                a += acc[4 * i2 + 3];
-            }
-        }
-
-        /* 2.2: iterate on the whole line */
-        for(x = 0; x < w; x++)
-        {
-            int u, u2, v, v2;
-
-            if(FLAG_GRAY)
-            {
-                dstdata[y * w + x] = t / size;
-            }
-            else
-            {
-                dstdata[4 * (y * w + x)] = r / size;
-                dstdata[4 * (y * w + x) + 1] = g / size;
-                dstdata[4 * (y * w + x) + 2] = b / size;
-                dstdata[4 * (y * w + x) + 3] = a / size;
-            }
-
-            u = x - m;
-            if(FLAG_WRAP)
-                u2 = (u < 0) ? w - 1 - ((-u - 1) % w) : u % w;
-            else
-                u2 = (u < 0) ? 0 : (u >= w) ? w - 1 : u;
-            v = x + m + 1;
-            if(FLAG_WRAP)
-                v2 = (v < 0) ? w - 1 - ((-v - 1) % w) : v % w;
-            else
-                v2 = (v < 0) ? 0 : (v >= w) ? w - 1 : v;
-            if(FLAG_GRAY)
-            {
-                t = t - acc[u2] + acc[v2];
-            }
-            else
-            {
-                r = r - acc[4 * u2] + acc[4 * v2];
-                g = g - acc[4 * u2 + 1] + acc[4 * v2 + 1];
-                b = b - acc[4 * u2 + 2] + acc[4 * v2 + 2];
-                a = a - acc[4 * u2 + 3] + acc[4 * v2 + 3];
-            }
-        }
-
-        /* 2.3: update the accumulator */
-        for(x = 0; x < w; x++)
-        {
-            int u, u2, v, v2;
-
-            u = y - n;
-            if(FLAG_WRAP)
-                u2 = (u < 0) ? h - 1 - ((-u - 1) % h) : u % h;
-            else
-                u2 = (u < 0) ? 0 : (u >= h) ? h - 1 : u;
-            v = y + n + 1;
-            if(FLAG_WRAP)
-                v2 = (v < 0) ? h - 1 - ((-v - 1) % h) : v % h;
-            else
-                v2 = (v < 0) ? 0 : (v >= h) ? h - 1 : v;
-            if(FLAG_GRAY)
-            {
-                acc[x] += srcdata[v2 * w + x] - srcdata[u2 * w + x];
-            }
-            else
-            {
-                int uoff = 4 * (u2 * w + x);
-                int voff = 4 * (v2 * w + x);
-
-                acc[4 * x] += srcdata[voff] - srcdata[uoff];
-                acc[4 * x + 1] += srcdata[voff + 1] - srcdata[uoff + 1];
-                acc[4 * x + 2] += srcdata[voff + 2] - srcdata[uoff + 2];
-                acc[4 * x + 3] += srcdata[voff + 3] - srcdata[uoff + 3];
-            }
-        }
-    }
-
-    free(acc);
-
-    return dst;
-}
-
-#endif
-
diff --git a/src/image/todo/context.cpp b/src/image/todo/context.cpp
deleted file mode 100644
index 80b19c6d..00000000
--- a/src/image/todo/context.cpp
+++ /dev/null
@@ -1,734 +0,0 @@
-/*
- *  Lol Engine
- *
- *  Copyright © 2004—2008 Sam Hocevar <sam@hocevar.net>
- *
- *  This library is free software. It comes without any warranty, to
- *  the extent permitted by applicable law. You can redistribute it
- *  and/or modify it under the terms of the Do What the Fuck You Want
- *  to Public License, Version 2, as published by the WTFPL Task Force.
- *  See http://www.wtfpl.net/ for more details.
- */
-
-/*
- * context.c: processing stack handling routines
- */
-
-#include "config.h"
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <stdarg.h>
-#include <string.h>
-
-#include "pipi.h"
-#include "pipi-internals.h"
-
-pipi_context_t *pipi_create_context()
-{
-    pipi_context_t *ret;
-
-    ret = malloc(sizeof(pipi_context_t));
-    memset(ret, 0, sizeof(pipi_context_t));
-
-    return ret;
-}
-
-void pipi_destroy_context(pipi_context_t *ctx)
-{
-    free(ctx);
-}
-
-pipi_command_t const *pipi_get_command_list(void)
-{
-    static pipi_command_t const list[] =
-    {
-        { "load", 1 },
-        { "save", 1 },
-
-        { "dup", 0 },
-        { "swap", 0 },
-        { "roll", 1 },
-
-        { "gamma", 1 },
-        { "scale", 1 },
-        { "crop", 1 },
-        { "geometry", 1 },
-        { "tile", 1 },
-        { "dither", 1 },
-        { "blur", 1 },
-        { "boxblur", 1 },
-        { "median", 1 },
-        { "gray", 0 },
-        { "brightness", 1 },
-        { "contrast", 1 },
-        { "autocontrast", 0 },
-        { "order", 0 },
-        { "hflip", 0 },
-        { "vflip", 0 },
-        { "rotate90", 0 },
-        { "rotate180", 0 },
-        { "rotate270", 0 },
-        { "rotate", 1 },
-        { "invert", 0 },
-        { "threshold", 1 },
-        { "dilate", 0 },
-        { "erode", 0 },
-        { "wrap", 0 },
-        { "combine", 0 },
-        { "split", 0 },
-        { "blit", 1 },
-        { "mean", 0 },
-        { "merge", 1 },
-        { "min", 0 },
-        { "max", 0 },
-        { "add", 0 },
-        { "sub", 0 },
-        { "difference", 0 },
-        { "multiply", 0 },
-        { "divide", 0 },
-        { "screen", 0 },
-        { "overlay", 0 },
-        { "line", 1 },
-        { "sine", 1 },
-        { "wave", 1 },
-        { "rgb2yuv", 0 },
-        { "yuv2rgb", 0 },
-
-        /* End marker */
-        { NULL, 0 }
-    };
-
-    return list;
-}
-
-int pipi_command(pipi_context_t *ctx, char const *cmd, ...)
-{
-    if(!strcmp(cmd, "load"))
-    {
-        char const *file;
-        va_list ap;
-
-        va_start(ap, cmd);
-        file = va_arg(ap, char const *);
-        va_end(ap);
-        ctx->images[ctx->nimages] = pipi_load(file);
-        if(ctx->images[ctx->nimages] == NULL)
-            return -1;
-        ctx->nimages++;
-    }
-    else if(!strcmp(cmd, "save"))
-    {
-        char const *file;
-        va_list ap;
-
-        if(ctx->nimages < 1)
-            return -1;
-        ctx->nimages--;
-        va_start(ap, cmd);
-        file = va_arg(ap, char const *);
-        va_end(ap);
-        pipi_save(ctx->images[ctx->nimages], file);
-        pipi_free(ctx->images[ctx->nimages]);
-    }
-    else if(!strcmp(cmd, "gamma"))
-    {
-        char const *val;
-        va_list ap;
-
-        va_start(ap, cmd);
-        val = va_arg(ap, char const *);
-        va_end(ap);
-
-        pipi_set_gamma(atof(val));
-    }
-    else if(!strcmp(cmd, "dither"))
-    {
-        pipi_image_t *src, *dst;
-        char const *method;
-        va_list ap;
-
-        if(ctx->nimages < 1)
-            return -1;
-        va_start(ap, cmd);
-        method = va_arg(ap, char const *);
-        va_end(ap);
-        src = ctx->images[ctx->nimages - 1];
-        dst = NULL;
-        if(!strcmp(method, "ost"))
-            dst = pipi_dither_ostromoukhov(src, 0);
-        else if(!strcmp(method, "sost"))
-            dst = pipi_dither_ostromoukhov(src, 1);
-        else if(!strcmp(method, "ediff"))
-        {
-            if(ctx->nimages < 2)
-                return -1;
-            dst = pipi_dither_ediff(ctx->images[ctx->nimages - 2], src, 0);
-            pipi_free(ctx->images[ctx->nimages - 2]);
-            ctx->nimages--;
-        }
-        else if(!strcmp(method, "sediff"))
-        {
-            if(ctx->nimages < 2)
-                return -1;
-            dst = pipi_dither_ediff(ctx->images[ctx->nimages - 2], src, 1);
-            pipi_free(ctx->images[ctx->nimages - 2]);
-            ctx->nimages--;
-        }
-        else if(!strncmp(method, "ordered", 7))
-        {
-            double scale = 1., angle = .0;
-            if(ctx->nimages < 2)
-                return -1;
-            method = strchr(method, ':');
-            if(method)
-            {
-                scale = atof(method + 1);
-                method = strchr(method + 1, ':');
-                if(method)
-                    angle = atof(method + 1);
-            }
-            if(scale <= 0.)
-                scale = 1.;
-            dst = pipi_dither_ordered_ext(ctx->images[ctx->nimages - 2], src,
-                                          scale, angle);
-            pipi_free(ctx->images[ctx->nimages - 2]);
-            ctx->nimages--;
-        }
-        else if(!strncmp(method, "halftone", 8))
-        {
-            double r, angle = .0;
-            method = strchr(method, ':');
-            if(!method)
-                return -1;
-            r = atof(method + 1);
-            method = strchr(method + 1, ':');
-            if(method)
-                angle = atof(method + 1);
-            if(r < 1.)
-                r = 1.;
-            dst = pipi_dither_halftone(src, r, angle);
-        }
-        else if(!strcmp(method, "random"))
-            dst = pipi_dither_random(src);
-        else if(!strcmp(method, "dbs"))
-            dst = pipi_dither_dbs(src);
-        if(dst == NULL)
-            return -1;
-        pipi_free(src);
-        ctx->images[ctx->nimages - 1] = dst;
-    }
-    else if(!strcmp(cmd, "blur"))
-    {
-        pipi_image_t *src, *dst;
-        char const *arg;
-        va_list ap;
-        double w, h, a = 0.0;
-
-        if(ctx->nimages < 1)
-            return -1;
-        va_start(ap, cmd);
-        arg = va_arg(ap, char const *);
-        va_end(ap);
-        w = h = atof(arg);
-        arg = strchr(arg, 'x');
-        if(arg)
-        {
-            h = atof(arg + 1);
-            arg = strchr(arg, 'r');
-            if(arg)
-                a = atof(arg + 1);
-        }
-        src = ctx->images[ctx->nimages - 1];
-        dst = pipi_gaussian_blur_ext(src, w, h, a, 0.0, 0.0);
-        if(dst == NULL)
-            return -1;
-        pipi_free(src);
-        ctx->images[ctx->nimages - 1] = dst;
-    }
-    else if(!strcmp(cmd, "boxblur") || !strcmp(cmd, "median"))
-    {
-        pipi_image_t *src, *dst = NULL;
-        char const *arg;
-        va_list ap;
-        double w, h;
-
-        if(ctx->nimages < 1)
-            return -1;
-        va_start(ap, cmd);
-        arg = va_arg(ap, char const *);
-        va_end(ap);
-        w = h = atof(arg);
-        arg = strchr(arg, 'x');
-        if(arg)
-            h = atof(arg + 1);
-        src = ctx->images[ctx->nimages - 1];
-        switch(cmd[0])
-        {
-            case 'b': dst = pipi_box_blur_ext(src, w, h); break;
-            case 'm': dst = pipi_median_ext(src, w, h); break;
-        }
-        if(dst == NULL)
-            return -1;
-        pipi_free(src);
-        ctx->images[ctx->nimages - 1] = dst;
-    }
-    else if(!strcmp(cmd, "geometry") || !strcmp(cmd, "tile"))
-    {
-        pipi_image_t *src, *dst = NULL;
-        char const *arg;
-        va_list ap;
-        int w, h;
-
-        if(ctx->nimages < 1)
-            return -1;
-        va_start(ap, cmd);
-        arg = va_arg(ap, char const *);
-        va_end(ap);
-        w = atoi(arg);
-        arg = strchr(arg, 'x');
-        if(!arg)
-            return -1;
-        h = atoi(arg + 1);
-        if(w <= 0 || h <= 0)
-            return -1;
-        src = ctx->images[ctx->nimages - 1];
-        switch(cmd[0])
-        {
-            case 'g': dst = pipi_resize_bicubic(src, w, h); break;
-            case 't': dst = pipi_tile(src, w, h); break;
-        }
-        if(dst == NULL)
-            return -1;
-        pipi_free(src);
-        ctx->images[ctx->nimages - 1] = dst;
-    }
-    else if(!strcmp(cmd, "scale"))
-    {
-        pipi_image_t *src, *dst;
-        char const *arg;
-        va_list ap;
-        double scale;
-        int w, h;
-
-        if(ctx->nimages < 1)
-            return -1;
-        src = ctx->images[ctx->nimages - 1];
-        va_start(ap, cmd);
-        arg = va_arg(ap, char const *);
-        va_end(ap);
-        scale = atof(arg);
-        w = (int)(scale * src->w + 0.5);
-        h = (int)(scale * src->h + 0.5);
-        if(w <= 0 || h <= 0)
-            return -1;
-        dst = pipi_resize_bicubic(src, w, h);
-        if(dst == NULL)
-            return -1;
-        pipi_free(src);
-        ctx->images[ctx->nimages - 1] = dst;
-    }
-    else if(!strcmp(cmd, "crop"))
-    {
-        pipi_image_t *tmp;
-        char const *arg;
-        va_list ap;
-        int w, h, x = 0, y = 0;
-        int ret;
-
-        if(ctx->nimages < 1)
-            return -1;
-
-        va_start(ap, cmd);
-        arg = va_arg(ap, char const *);
-        va_end(ap);
-
-        ret = sscanf(arg, "%dx%d+%d+%d", &w, &h, &x, &y);
-        if(ret < 2)
-            return -1;
-
-        tmp = ctx->images[ctx->nimages - 1];
-        ctx->images[ctx->nimages - 1] = pipi_crop(tmp, w, h, x, y);
-        pipi_free(tmp);
-    }
-    else if(!strcmp(cmd, "brightness") || !strcmp(cmd, "contrast")
-             || !strcmp(cmd, "threshold") || !strcmp(cmd, "rotate"))
-    {
-        pipi_image_t *src, *dst = NULL;
-        char const *arg;
-        va_list ap;
-        double val;
-
-        if(ctx->nimages < 1)
-            return -1;
-        va_start(ap, cmd);
-        arg = va_arg(ap, char const *);
-        va_end(ap);
-        val = atof(arg);
-        src = ctx->images[ctx->nimages - 1];
-        switch(cmd[0])
-        {
-            case 'b': dst = pipi_brightness(src, val); break;
-            case 'c': dst = pipi_contrast(src, val); break;
-            case 'r': dst = pipi_rotate(src, val); break;
-            case 't': dst = pipi_threshold(src, val); break;
-        }
-        if(dst == NULL)
-            return -1;
-        pipi_free(src);
-        ctx->images[ctx->nimages - 1] = dst;
-    }
-    else if(!strcmp(cmd, "hflip"))
-    {
-        pipi_image_t *tmp;
-        if(ctx->nimages < 1)
-            return -1;
-        tmp = ctx->images[ctx->nimages - 1];
-        ctx->images[ctx->nimages - 1] = pipi_hflip(tmp);
-        pipi_free(tmp);
-    }
-    else if(!strcmp(cmd, "vflip"))
-    {
-        pipi_image_t *tmp;
-        if(ctx->nimages < 1)
-            return -1;
-        tmp = ctx->images[ctx->nimages - 1];
-        ctx->images[ctx->nimages - 1] = pipi_vflip(tmp);
-        pipi_free(tmp);
-    }
-    else if(!strcmp(cmd, "rotate90"))
-    {
-        pipi_image_t *tmp;
-        if(ctx->nimages < 1)
-            return -1;
-        tmp = ctx->images[ctx->nimages - 1];
-        ctx->images[ctx->nimages - 1] = pipi_rotate90(tmp);
-        pipi_free(tmp);
-    }
-    else if(!strcmp(cmd, "rotate180"))
-    {
-        pipi_image_t *tmp;
-        if(ctx->nimages < 1)
-            return -1;
-        tmp = ctx->images[ctx->nimages - 1];
-        ctx->images[ctx->nimages - 1] = pipi_rotate180(tmp);
-        pipi_free(tmp);
-    }
-    else if(!strcmp(cmd, "rotate270"))
-    {
-        pipi_image_t *tmp;
-        if(ctx->nimages < 1)
-            return -1;
-        tmp = ctx->images[ctx->nimages - 1];
-        ctx->images[ctx->nimages - 1] = pipi_rotate270(tmp);
-        pipi_free(tmp);
-    }
-    else if(!strcmp(cmd, "order"))
-    {
-        pipi_image_t *tmp;
-        if(ctx->nimages < 1)
-            return -1;
-        tmp = ctx->images[ctx->nimages - 1];
-        ctx->images[ctx->nimages - 1] = pipi_order(tmp);
-        pipi_free(tmp);
-    }
-    else if(!strcmp(cmd, "split"))
-    {
-        pipi_image_t *src;
-
-        if(ctx->nimages < 1)
-            return -1;
-        src = ctx->images[ctx->nimages - 1];
-        ctx->nimages += 2;
-        ctx->images[ctx->nimages - 3] = pipi_red(src);
-        ctx->images[ctx->nimages - 2] = pipi_green(src);
-        ctx->images[ctx->nimages - 1] = pipi_blue(src);
-        pipi_free(src);
-    }
-    else if(!strcmp(cmd, "combine"))
-    {
-        pipi_image_t *dst;
-
-        if(ctx->nimages < 3)
-            return -1;
-        dst = pipi_rgb(ctx->images[ctx->nimages - 3],
-                       ctx->images[ctx->nimages - 2],
-                       ctx->images[ctx->nimages - 1]);
-        if(dst == NULL)
-            return -1;
-        pipi_free(ctx->images[ctx->nimages - 3]);
-        pipi_free(ctx->images[ctx->nimages - 2]);
-        pipi_free(ctx->images[ctx->nimages - 1]);
-        ctx->images[ctx->nimages - 3] = dst;
-        ctx->nimages -= 2;
-    }
-    else if(!strcmp(cmd, "blit"))
-    {
-        pipi_image_t *dst;
-        char const *arg;
-        va_list ap;
-        int x, y;
-
-        if(ctx->nimages < 2)
-            return -1;
-        va_start(ap, cmd);
-        arg = va_arg(ap, char const *);
-        va_end(ap);
-        x = atoi(arg);
-        arg = strchr(arg, 'x');
-        if(!arg)
-            return -1;
-        y = atoi(arg + 1);
-
-        dst = pipi_blit(ctx->images[ctx->nimages - 2],
-                        ctx->images[ctx->nimages - 1], x, y);
-        if(dst == NULL)
-            return -1;
-        pipi_free(ctx->images[ctx->nimages - 2]);
-        pipi_free(ctx->images[ctx->nimages - 1]);
-        ctx->images[ctx->nimages - 2] = dst;
-        ctx->nimages--;
-    }
-    else if(!strcmp(cmd, "merge"))
-    {
-        pipi_image_t *dst;
-        char const *arg;
-        va_list ap;
-        double val;
-
-        if(ctx->nimages < 2)
-            return -1;
-
-        va_start(ap, cmd);
-        arg = va_arg(ap, char const *);
-        va_end(ap);
-        val = atof(arg);
-
-        dst = pipi_merge(ctx->images[ctx->nimages - 2],
-                         ctx->images[ctx->nimages - 1], val);
-        if(dst == NULL)
-            return -1;
-        pipi_free(ctx->images[ctx->nimages - 2]);
-        pipi_free(ctx->images[ctx->nimages - 1]);
-        ctx->images[ctx->nimages - 2] = dst;
-        ctx->nimages--;
-    }
-    else if(!strcmp(cmd, "mean") || !strcmp(cmd, "min") || !strcmp(cmd, "max")
-             || !strcmp(cmd, "add") || !strcmp(cmd, "sub")
-             || !strcmp(cmd, "difference") || !strcmp(cmd, "multiply")
-             || !strcmp(cmd, "divide") || !strcmp(cmd, "screen")
-             || !strcmp(cmd, "overlay"))
-    {
-        pipi_image_t *dst = NULL;
-
-        if(ctx->nimages < 2)
-            return -1;
-        switch(cmd[2])
-        {
-            case 'a': dst = pipi_mean(ctx->images[ctx->nimages - 2],
-                                      ctx->images[ctx->nimages - 1]);
-                      break;
-            case 'n': dst = pipi_min(ctx->images[ctx->nimages - 2],
-                                     ctx->images[ctx->nimages - 1]);
-                      break;
-            case 'x': dst = pipi_max(ctx->images[ctx->nimages - 2],
-                                     ctx->images[ctx->nimages - 1]);
-                      break;
-            case 'd': dst = pipi_add(ctx->images[ctx->nimages - 2],
-                                     ctx->images[ctx->nimages - 1]);
-                      break;
-            case 'b': dst = pipi_sub(ctx->images[ctx->nimages - 2],
-                                     ctx->images[ctx->nimages - 1]);
-                      break;
-            case 'f': dst = pipi_difference(ctx->images[ctx->nimages - 2],
-                                            ctx->images[ctx->nimages - 1]);
-                      break;
-            case 'l': dst = pipi_multiply(ctx->images[ctx->nimages - 2],
-                                          ctx->images[ctx->nimages - 1]);
-                      break;
-            case 'v': dst = pipi_divide(ctx->images[ctx->nimages - 2],
-                                        ctx->images[ctx->nimages - 1]);
-                      break;
-            case 'r': dst = pipi_screen(ctx->images[ctx->nimages - 2],
-                                        ctx->images[ctx->nimages - 1]);
-                      break;
-            case 'e': dst = pipi_overlay(ctx->images[ctx->nimages - 2],
-                                         ctx->images[ctx->nimages - 1]);
-                      break;
-        }
-        if(dst == NULL)
-            return -1;
-        pipi_free(ctx->images[ctx->nimages - 2]);
-        pipi_free(ctx->images[ctx->nimages - 1]);
-        ctx->images[ctx->nimages - 2] = dst;
-        ctx->nimages--;
-    }
-    else if(!strcmp(cmd, "wrap"))
-    {
-        if(ctx->nimages < 1)
-            return -1;
-        ctx->images[ctx->nimages - 1]->wrap = 1;
-    }
-    else if(!strcmp(cmd, "autocontrast"))
-    {
-        pipi_image_t *tmp;
-        if(ctx->nimages < 1)
-            return -1;
-        tmp = ctx->images[ctx->nimages - 1];
-        ctx->images[ctx->nimages - 1] = pipi_autocontrast(tmp);
-        pipi_free(tmp);
-    }
-    else if(!strcmp(cmd, "invert"))
-    {
-        pipi_image_t *tmp;
-        if(ctx->nimages < 1)
-            return -1;
-        tmp = ctx->images[ctx->nimages - 1];
-        ctx->images[ctx->nimages - 1] = pipi_invert(tmp);
-        pipi_free(tmp);
-    }
-    else if(!strcmp(cmd, "dilate"))
-    {
-        pipi_image_t *tmp;
-        if(ctx->nimages < 1)
-            return -1;
-        tmp = ctx->images[ctx->nimages - 1];
-        ctx->images[ctx->nimages - 1] = pipi_dilate(tmp);
-        pipi_free(tmp);
-    }
-    else if(!strcmp(cmd, "erode"))
-    {
-        pipi_image_t *tmp;
-        if(ctx->nimages < 1)
-            return -1;
-        tmp = ctx->images[ctx->nimages - 1];
-        ctx->images[ctx->nimages - 1] = pipi_erode(tmp);
-        pipi_free(tmp);
-    }
-    else if(!strcmp(cmd, "gray"))
-    {
-        if(ctx->nimages < 1)
-            return -1;
-        pipi_get_pixels(ctx->images[ctx->nimages - 1], PIPI_PIXELS_Y_F32);
-    }
-    else if(!strcmp(cmd, "free"))
-    {
-        if(ctx->nimages < 1)
-            return -1;
-        ctx->nimages--;
-        pipi_free(ctx->images[ctx->nimages]);
-    }
-    else if(!strcmp(cmd, "dup"))
-    {
-        if(ctx->nimages < 1)
-            return -1;
-        ctx->images[ctx->nimages] = pipi_copy(ctx->images[ctx->nimages - 1]);
-        ctx->nimages++;
-    }
-    else if(!strcmp(cmd, "swap"))
-    {
-        pipi_image_t *tmp;
-        if(ctx->nimages < 2)
-            return -1;
-        tmp = ctx->images[ctx->nimages - 1];
-        ctx->images[ctx->nimages - 1] = ctx->images[ctx->nimages - 2];
-        ctx->images[ctx->nimages - 2] = tmp;
-    }
-    else if(!strcmp(cmd, "roll"))
-    {
-        pipi_image_t *tmp;
-        char const *arg;
-        va_list ap;
-        int val;
-
-        va_start(ap, cmd);
-        arg = va_arg(ap, char const *);
-        va_end(ap);
-        val = atoi(arg);
-        if(val <= 0 || ctx->nimages < val)
-            return -1;
-        if(val == 1)
-            return 0;
-        tmp = ctx->images[ctx->nimages - val];
-        memmove(ctx->images + ctx->nimages - val,
-                ctx->images + ctx->nimages - val + 1,
-                (val - 1) * sizeof(*ctx->images));
-        ctx->images[ctx->nimages - 1] = tmp;
-    }
-    else if(!strcmp(cmd, "line"))
-    {
-        char const *arg;
-        va_list ap;
-        int x1, y1, x2, y2, aa = 0, ret;
-        uint32_t color = 0;
-
-        if(ctx->nimages < 1)
-            return -1;
-
-        va_start(ap, cmd);
-        arg = va_arg(ap, char const *);
-        va_end(ap);
-
-        ret = sscanf(arg, "%d,%d,%d,%d,%08x,%d",
-               &x1, &y1, &x2, &y2, &color, &aa);
-        if(ret < 5) return -1;
-
-        ctx->images[ctx->nimages] = pipi_copy(ctx->images[ctx->nimages - 1]);
-        pipi_draw_line(ctx->images[ctx->nimages],
-                       x1,  y1,  x2,  y2, color, aa);
-        ctx->nimages++;
-    }
-    else if(!strcmp(cmd, "sine") || !strcmp(cmd, "wave"))
-    {
-        pipi_image_t *src, *dst = NULL;
-        char const *arg;
-        va_list ap;
-        float dw, dh, d = 0.0, a = 0.0;
-        int ret;
-
-        if(ctx->nimages < 1)
-            return -1;
-
-        va_start(ap, cmd);
-        arg = va_arg(ap, char const *);
-        va_end(ap);
-
-        ret = sscanf(arg, "%gx%g+%gr%g", &dw, &dh, &d, &a);
-        if(ret < 2)
-            return -1;
-
-        src = ctx->images[ctx->nimages - 1];
-        switch(cmd[0])
-        {
-            case 's': dst = pipi_sine(src, dw, dh, d, a); break;
-            case 'w': dst = pipi_wave(src, dw, dh, d, a); break;
-        }
-        if(dst == NULL)
-            return -1;
-        pipi_free(src);
-        ctx->images[ctx->nimages - 1] = dst;
-    }
-    else if(!strcmp(cmd, "rgb2yuv") || !strcmp(cmd, "yuv2rgb"))
-    {
-        pipi_image_t *src, *dst = NULL;
-        if(ctx->nimages < 1)
-            return -1;
-        src = ctx->images[ctx->nimages - 1];
-        switch (cmd[0])
-        {
-            case 'r': dst = pipi_rgb2yuv(src); break;
-            case 'y': dst = pipi_yuv2rgb(src); break;
-        }
-        if(dst == NULL)
-            return -1;
-        pipi_free(src);
-        ctx->images[ctx->nimages - 1] = dst;
-    }
-    else
-    {
-        return -1;
-    }
-
-    return 0;
-}
-
diff --git a/src/image/todo/coreimage.cpp b/src/image/todo/coreimage.cpp
deleted file mode 100644
index 659f6d71..00000000
--- a/src/image/todo/coreimage.cpp
+++ /dev/null
@@ -1,178 +0,0 @@
-/*
- *  Lol Engine
- *
- *  Copyright © 2004—2008 Sam Hocevar <sam@hocevar.net>
- *            © 2008 Jean-Yves Lamoureux <jylam@lnxscene.org>
- *
- *  This library is free software. It comes without any warranty, to
- *  the extent permitted by applicable law. You can redistribute it
- *  and/or modify it under the terms of the Do What the Fuck You Want
- *  to Public License, Version 2, as published by the WTFPL Task Force.
- *  See http://www.wtfpl.net/ for more details.
- */
-
-/*
- * coreimage.m: CoreImage (OSX) I/O functions
- */
-
-#import "coreimage.h"
-
-#ifdef USE_COCOA
-
-static int pipi_free_coreimage(pipi_image_t *img);
-
-pipi_image_t *pipi_load_coreimage(const char *name)
-{
-    NSAutoreleasePool *autoreleasepool = [[NSAutoreleasePool alloc] init];
-    NSString *n = [NSString stringWithCString: name];
-    CIImage *source;
-    NSURL *url = [NSURL fileURLWithPath:n];
-
-    source = [CIImage imageWithContentsOfURL:url];
-
-    if(source == NULL) return NULL;
-
-    CGRect extent = [source extent];
-    size_t w = (size_t)extent.size.width;
-    size_t h = (size_t)extent.size.height;
-
-
-    NSBitmapImageRep * myImage;
-    myImage = [[NSBitmapImageRep alloc] initWithCIImage:source];
-
-    pipi_image_t *img;
-    img = pipi_new(w, h);
-
-    img->p[PIPI_PIXELS_RGBA_U8].w      = w;
-    img->p[PIPI_PIXELS_RGBA_U8].h      = h;
-    img->p[PIPI_PIXELS_RGBA_U8].pitch  = ([myImage bytesPerRow]/8) * img->w;
-    img->p[PIPI_PIXELS_RGBA_U8].bpp    = [myImage bitsPerPixel];
-    img->p[PIPI_PIXELS_RGBA_U8].bytes  = ([myImage bitsPerPixel]/8) * img->w * img->h;
-    img->last_modified                = PIPI_PIXELS_RGBA_U8;
-
-
-    /* CoreImage feeds us with BGRA while we need RGBA, so convert it.
-     * We also need to get a pitch==(w*bpp) in order to pipi to opper properly.
-     */
-
-    int pitch = (img->p[PIPI_PIXELS_RGBA_U8].bpp/8);
-    unsigned char *tmp  = (unsigned char*)malloc(h*w*pitch);
-    unsigned char *orig = (unsigned char*)[myImage bitmapData];
-    int x, y, k=0, o=0, a=[myImage bytesPerRow] - (w*([myImage bitsPerPixel]/8));
-
-    for(y=0; y<h; y++)
-    {
-        for(x=0; x<w*pitch; x+=4)
-        {
-            if(!([myImage bitmapFormat] & NSAlphaFirstBitmapFormat))
-            {
-                tmp[k+2] = orig[o];
-                tmp[k+1] = orig[o+1];
-                tmp[k+0] = orig[o+2];
-                tmp[k+3] = orig[o+3];
-            } else
-            {
-                tmp[k+0] = orig[o];
-                tmp[k+1] = orig[o+1];
-                tmp[k+2] = orig[o+2];
-                tmp[k+3] = orig[o+3];
-            }
-
-            o+=4;
-            k+=4;
-        }
-        o+=a;
-    }
-    img->p[PIPI_PIXELS_RGBA_U8].pixels = tmp;
-    img->p[PIPI_PIXELS_RGBA_U8].pitch  = w*([myImage bitsPerPixel]/8);
-
-
-
-
-    img->codec_priv = (struct pipi_codec_coreimage *) malloc(sizeof(struct pipi_codec_coreimage *));
-    struct pipi_codec_coreimage *infos = (struct pipi_codec_coreimage *) img->codec_priv;
-    infos->format = [myImage bitmapFormat];
-
-    pipi_pixels_t *p = pipi_get_pixels(img, PIPI_PIXELS_RGBA_U8);
-
-    img->codec_free = pipi_free_coreimage;
-
-    [autoreleasepool release];
-    return img;
-}
-
-
-int pipi_save_coreimage(pipi_image_t *img, const char *name)
-{
-    NSAutoreleasePool *autoreleasepool = [[NSAutoreleasePool alloc] init];
-    pipi_pixels_t *p = pipi_get_pixels(img, PIPI_PIXELS_RGBA_U8);
-
-    int i;
-    char *data = p->pixels;
-    for(i = 0; i < img->w*img->h; i++)
-    {
-        unsigned char r = data[i*4 + 0];
-        unsigned char g = data[i*4 + 1];
-        unsigned char b = data[i*4 + 2];
-        unsigned char a = data[i*4 + 3];
-
-        /* R */    data[i*4 + 0] = b;
-        /* G */    data[i*4 + 1] = g;
-        /* B */    data[i*4 + 2] = r;
-        /* A */    data[i*4 + 3] = a;
-    }
-
-
-    NSString *n = [NSString stringWithCString: name];
-    NSBitmapImageRep *bitmap = [[NSBitmapImageRep alloc]
-                                initWithBitmapDataPlanes:NULL
-                                pixelsWide:p->w
-                                pixelsHigh:p->h
-                                bitsPerSample:8
-                                samplesPerPixel:4
-                                hasAlpha:YES
-                                isPlanar:NO
-                                colorSpaceName:NSCalibratedRGBColorSpace
-                                bitmapFormat: 0//(NSBitmapFormat)img->codec_priv
-                                bytesPerRow:p->w*4
-                                bitsPerPixel:32
-                                ];
-    if(bitmap == nil) return -1;
-    memcpy([bitmap bitmapData], data, p->w*p->h*4);
-
-    NSBitmapImageFileType type = NSPNGFileType;
-
-
-    if(strlen(name) > 4)
-    {
-        char *ext = (char*)&name[strlen(name) - 4];
-        if(     !strncasecmp(ext, ".png",  3)) type = NSPNGFileType;
-        else if(!strncasecmp(ext, "jpeg",  4)) type = NSJPEGFileType;
-        else if(!strncasecmp(ext, ".jpg",  3)) type = NSJPEGFileType;
-        else if(!strncasecmp(ext, ".bmp",  3)) type = NSBMPFileType;
-        else if(!strncasecmp(ext, ".tif",  3)) type = NSTIFFFileType;
-        else if(!strncasecmp(ext, ".tiff", 3)) type = NSTIFFFileType;
-        else if(!strncasecmp(ext, ".gif",  3)) type = NSGIFFileType;
-        else if(!strncasecmp(ext, ".bmp",  3)) type = NSBMPFileType;
-        else if(!strncasecmp(ext, ".jp2",  3)) type = NSJPEG2000FileType;
-        else if(!strncasecmp(ext, ".j2k",  3)) type = NSJPEG2000FileType;
-    }
-
-    [[bitmap representationUsingType:type properties:nil] writeToFile:n  atomically:YES];
-    [autoreleasepool release];
-
-    return 1;
-}
-
-/*
- * XXX: The following functions are local.
- */
-
-static int pipi_free_coreimage(pipi_image_t *img)
-{
-    if(img->codec_priv)
-        free(img->codec_priv);
-    return 0;
-}
-
-#endif
diff --git a/src/image/todo/coreimage.h b/src/image/todo/coreimage.h
deleted file mode 100644
index a9b74128..00000000
--- a/src/image/todo/coreimage.h
+++ /dev/null
@@ -1,36 +0,0 @@
-/*
- *  Lol Engine
- *
- *  Copyright © 2004—2008 Sam Hocevar <sam@hocevar.net>
- *            © 2008 Jean-Yves Lamoureux <jylam@lnxscene.org>
- *
- *  This library is free software. It comes without any warranty, to
- *  the extent permitted by applicable law. You can redistribute it
- *  and/or modify it under the terms of the Do What the Fuck You Want
- *  to Public License, Version 2, as published by the WTFPL Task Force.
- *  See http://www.wtfpl.net/ for more details.
- */
-
-/*
- * coreimage.m: CoreImage (OSX) I/O functions
- */
-
-#include "config.h"
-#ifdef USE_COCOA
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-
-#import <Cocoa/Cocoa.h>
-
-#include "pipi.h"
-#include "pipi-internals.h"
-
-struct pipi_codec_coreimage
-{
-        NSBitmapFormat format;
-};
-
-
-#endif
diff --git a/src/image/todo/floodfill.cpp b/src/image/todo/floodfill.cpp
deleted file mode 100644
index 4dd0d7af..00000000
--- a/src/image/todo/floodfill.cpp
+++ /dev/null
@@ -1,316 +0,0 @@
-/*
- *  Lol Engine
- *
- *  Copyright © 2004—2008 Sam Hocevar <sam@hocevar.net>
- *            © 2008 Jean-Yves Lamoureux <jylam@lnxscene.org>
- *
- *  This library is free software. It comes without any warranty, to
- *  the extent permitted by applicable law. You can redistribute it
- *  and/or modify it under the terms of the Do What the Fuck You Want
- *  to Public License, Version 2, as published by the WTFPL Task Force.
- *  See http://www.wtfpl.net/ for more details.
- */
-
-/*
- * floodfill.c: flood fill (4 neighbours) functions
- */
-
-#include "config.h"
-
-#include <stdlib.h>
-#include <stdio.h>
-#include <string.h>
-#include <math.h>
-
-#include "pipi.h"
-#include "pipi-internals.h"
-
-#define STACKSIZE (1<<20)
-
-static void  pipi_flood_fill_stack_scanline_u32(pipi_pixels_t *dstp,
-                                                int x,    int y,
-                                                uint32_t new, uint32_t old);
-static void  pipi_flood_fill_stack_scanline_float(pipi_pixels_t *dstp,
-                                                  int x,    int y,
-                                                  float nr, float ng, float nb, float na,
-                                                  float or, float og, float ob, float oa);
-static int   pop (int *x,int *y, int h);
-static int   push(int x, int y, int h);
-static void  clear_stack(int h);
-static int   stack[STACKSIZE];
-static int   stack_pointer;
-
-static float get_max_color_diff(float r1, float g1, float b1,
-                                float r2, float g2, float b2);
-static int   validate_pixel_f(float r1, float g1, float b1,
-                              float r2, float g2, float b2);
-
-/*
-  Stack based flood fill.
-  Instead of using system stack (calling recursively functions,
-  which can lead to big problems as this stack is a fixed and small sized one),
-  we create our own one.
-  Additionnaly, we use a scanline trick to speed up the whole thing.
-
-  This method is more or less the one described at
-  http://student.kuleuven.be/~m0216922/CG/floodfill.html
-
-*/
-
-/* Public function */
-int pipi_flood_fill(pipi_image_t *src,
-                    int px, int py,
-                    float r, float g, float b, float a)
-{
-    pipi_image_t  *dst = src;
-    pipi_pixels_t *dstp;
-    int w, h;
-
-    if(!src) return -1;
-
-    w = src->w;
-    h = src->h;
-
-    if((px >= src->w) || (py >= src->h) ||
-       (px < 0) || (py < 0)) return -1;
-
-
-    if(src->last_modified == PIPI_PIXELS_RGBA_U8) {
-        uint32_t  *dstdata;
-        unsigned char nr, ng, nb, na;
-
-        /* Get ARGB32 pointer */
-        dstp = pipi_get_pixels(dst, PIPI_PIXELS_RGBA_U8);
-        dstdata = (uint32_t *)dstp->pixels;
-
-        nr = r*255.0f;
-        ng = g*255.0f;
-        nb = b*255.0f;
-        na = a*255.0f;
-
-        dstp->w = w;
-        dstp->h = h;
-        pipi_flood_fill_stack_scanline_u32(dstp, px, py, (na<<24)|(nr<<16)|(ng<<8)|(nb), dstdata[px+py*w]);
-
-    } else {
-        int gray = (dst->last_modified == PIPI_PIXELS_Y_F32);
-        float *dstdata;
-        float or, og, ob, oa;
-
-        dstp = gray ? pipi_get_pixels(dst, PIPI_PIXELS_Y_F32)
-            : pipi_get_pixels(dst, PIPI_PIXELS_RGBA_F32);
-
-        dstdata = (float *)dstp->pixels;
-
-        or = dstdata[(px+py*w)*4];
-        og = dstdata[(px+py*w)*4 + 1];
-        ob = dstdata[(px+py*w)*4 + 2];
-        oa = dstdata[(px+py*w)*4 + 3];
-
-        dstp->w = w;
-        dstp->h = h;
-
-        pipi_flood_fill_stack_scanline_float(dstp, px, py, r, g, b, a, or, og, ob, oa);
-    }
-
-    return 0;
-}
-
-
-/* ARGB32 */
-void pipi_flood_fill_stack_scanline_u32(pipi_pixels_t *dstp,
-                                        int x,    int y,
-                                        uint32_t new, uint32_t old)
-{
-    int yt;
-    int left, right;
-
-    uint32_t *dstdata = (uint32_t *)dstp->pixels;
-
-    if(new==old) return;
-
-    clear_stack(dstp->h);
-
-    if(!push(x, y, dstp->h)) return;
-
-    while(pop(&x, &y, dstp->h))
-    {
-        yt = y;
-        while(yt >= 0 && (dstdata[x+yt*dstp->w] == old)) {
-            yt--;
-        }
-
-        yt++;
-        left = right = 0;
-
-        while(yt < dstp->h && (dstdata[x+yt*dstp->w] == old))
-        {
-            uint32_t *cur_line = &dstdata[(yt*dstp->w)];
-            int   xp1 = (x+1);
-            int   xm1 = (x-1);
-            cur_line[x]     = new;
-
-            if(!left && x > 0 && (cur_line[xm1] == old))
-            {
-                if(!push(x - 1, yt, dstp->h)) return;
-                left = 1;
-            }
-            else if(left && x > 0 && (cur_line[xm1] != old))
-            {
-                left = 0;
-            }
-            if(!right && x < dstp->w - 1 && (cur_line[xp1] == old))
-            {
-                if(!push(x + 1, yt, dstp->h)) return;
-                right = 1;
-            }
-            else if(right && x < dstp->w - 1 && (cur_line[xp1] != old))
-            {
-                right = 0;
-            }
-            yt++;
-        }
-    }
-}
-
-/* Float version. Much slower, but supports HDR and (soon antialiasing) */
-static void pipi_flood_fill_stack_scanline_float(pipi_pixels_t *dstp,
-                                                 int x,    int y,
-                                                 float nr, float ng, float nb, float na,
-                                                 float or, float og, float ob, float oa)
-{
-    int yt;
-    int left, right;
-    float *dstdata = (float *)dstp->pixels;
-
-    if((nr==or) && (ng==og) && (nb==ob)) return;
-
-    clear_stack(dstp->h);
-
-    if(!push(x, y, dstp->h)) return;
-
-    while(pop(&x, &y, dstp->h))
-    {
-        yt = y;
-        while(yt >= 0 && validate_pixel_f(dstdata[(x+yt*dstp->w)*4] ,
-                                          dstdata[(x+yt*dstp->w)*4 + 1] ,
-                                          dstdata[(x+yt*dstp->w)*4 + 2] ,
-                                          or, og, ob)) {
-            yt--;
-        }
-
-        yt++;
-        left = right = 0;
-
-        while(yt < dstp->h && validate_pixel_f(dstdata[(x+yt*dstp->w)*4] ,
-                                               dstdata[(x+yt*dstp->w)*4 + 1] ,
-                                               dstdata[(x+yt*dstp->w)*4 + 2] ,
-                                               or, og, ob))
-        {
-            float *cur_line = &dstdata[(yt*dstp->w)*4];
-            int   xp1 = (x+1)*4;
-            int   xm1 = (x-1)*4;
-            cur_line[x*4]     = nr;
-            cur_line[x*4 + 1] = ng;
-            cur_line[x*4 + 2] = nb;
-            cur_line[x*4 + 3] = na;
-
-            if(!left && x > 0 && validate_pixel_f(cur_line[xm1],
-                                                  cur_line[xm1 + 1],
-                                                  cur_line[xm1 + 2],
-                                                  or, og, ob))
-            {
-                if(!push(x - 1, yt, dstp->h)) return;
-                left = 1;
-            }
-            else if(left && x > 0 && !validate_pixel_f(cur_line[xm1] ,
-                                                       cur_line[xm1 + 1] ,
-                                                       cur_line[xm1 + 2] ,
-                                                       or, og, ob))
-            {
-                left = 0;
-            }
-            if(!right && x < dstp->w - 1 && validate_pixel_f(cur_line[xp1] ,
-                                                             cur_line[xp1 + 1] ,
-                                                             cur_line[xp1 + 2] ,
-                                                             or, og, ob))
-            {
-                if(!push(x + 1, yt, dstp->h)) return;
-                right = 1;
-            }
-            else if(right && x < dstp->w - 1 && !validate_pixel_f(cur_line[xp1] ,
-                                                                  cur_line[xp1 + 1] ,
-                                                                  cur_line[xp1 + 2],
-                                                                  or, og, ob))
-            {
-                right = 0;
-            }
-            yt++;
-        }
-    }
-}
-
-
-/* Following functions are local  */
-
-static int pop(int *x, int *y, int h)
-{
-    if(stack_pointer > 0)
-    {
-        int p = stack[stack_pointer];
-        *x = p / h;
-        *y = p % h;
-        stack_pointer--;
-        return 1;
-    }
-    else
-    {
-        return 0;
-    }
-}
-
-static int push(int x, int y, int h)
-{
-    if(stack_pointer < STACKSIZE - 1)
-    {
-        stack_pointer++;
-        stack[stack_pointer] = h * x + y;
-        return 1;
-    }
-    else
-    {
-        return 0;
-    }
-}
-
-static void clear_stack(int h)
-{
-    int x, y;
-    while(pop(&x, &y, h));
-}
-
-#define MAX(a, b) (b>a?b:a)
-
-
-/* FIXME : Paves the way to antialiasing, but could be only 3 tests */
-static float get_max_color_diff(float r1, float g1, float b1,
-                                float r2, float g2, float b2)
-{
-    float r = abs(r2-r1);
-    float g = abs(g2-g1);
-    float b = abs(b2-b1);
-
-    return MAX(MAX(r, g), b);
-}
-
-
-static int validate_pixel_f(float r1, float g1, float b1,
-                            float r2, float g2, float b2)
-{
-
-    if(get_max_color_diff(r1, g1, b1,
-                          r2, g2, b2)
-       == 0) return 1;
-    else
-        return 0;
-}
diff --git a/src/image/todo/jpeg.cpp b/src/image/todo/jpeg.cpp
deleted file mode 100644
index 1025705c..00000000
--- a/src/image/todo/jpeg.cpp
+++ /dev/null
@@ -1,247 +0,0 @@
-/*
- *  Lol Engine
- *
- *  Copyright © 2004—2008 Sam Hocevar <sam@hocevar.net>
- *            © 2008 Jean-Yves Lamoureux <jylam@lnxscene.org>
- *
- *  This library is free software. It comes without any warranty, to
- *  the extent permitted by applicable law. You can redistribute it
- *  and/or modify it under the terms of the Do What the Fuck You Want
- *  to Public License, Version 2, as published by the WTFPL Task Force.
- *  See http://www.wtfpl.net/ for more details.
- */
-
-/*
- * jpeg.c: libjpeg I/O functions
- */
-
-#include "config.h"
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <ctype.h>
-#include <setjmp.h>
-
-#include <jpeglib.h>
-
-#include "pipi.h"
-#include "pipi-internals.h"
-
-static int pipi_free_jpeg(pipi_image_t *img);
-
-struct my_error_mgr
-{
-    struct jpeg_error_mgr pub;
-    jmp_buf setjmp_buffer;
-};
-
-typedef struct my_error_mgr * my_error_ptr;
-
-static void format_msg(j_common_ptr cinfo, char *buf)
-{
-}
-
-static void emit_msg(j_common_ptr cinfo, int level)
-{
-}
-
-static void error_msg(j_common_ptr cinfo)
-{
-    my_error_ptr myerr = (my_error_ptr) cinfo->err;
-    cinfo->client_data = (void*)0x1;
-    longjmp(myerr->setjmp_buffer, 1);
-}
-
-static void output_msg(j_common_ptr cinfo)
-{
-}
-
-pipi_image_t *pipi_load_jpeg(const char *name)
-{
-    struct jpeg_decompress_struct cinfo;
-    struct my_error_mgr jerr;
-    unsigned char *image = NULL, *scanline = NULL;
-    pipi_image_t *img = NULL;
-    unsigned int i, j, k = 0;
-    FILE *fp;
-
-    fp = fopen(name, "rb");
-    if(!fp)
-        return NULL;
-
-    if(setjmp(jerr.setjmp_buffer))
-        goto end;
-
-    cinfo.err = jpeg_std_error(&jerr.pub);
-    jerr.pub.error_exit = error_msg;
-    jerr.pub.emit_message = emit_msg;
-    jerr.pub.output_message = output_msg;
-    jerr.pub.format_message = format_msg;
-
-    /* Initialize libjpeg */
-    jpeg_create_decompress(&cinfo);
-    cinfo.client_data = 0x0;
-    jpeg_stdio_src(&cinfo, fp);
-    if(cinfo.client_data == (void *)0x1)
-        goto end;
-    jpeg_read_header(&cinfo, TRUE);
-    if(cinfo.client_data == (void *)0x1)
-        goto end;
-    jpeg_start_decompress(&cinfo);
-    if(cinfo.client_data == (void *)0x1)
-        goto end;
-
-    /* One scanline */
-    image = malloc(cinfo.output_width * cinfo.output_height * 4);
-    if(!image)
-        goto end;
-
-    scanline = malloc(cinfo.output_width * 3);
-
-    for(i = 0; i < cinfo.output_height; i++)
-    {
-        jpeg_read_scanlines(&cinfo, &scanline, 1);
-        if(cinfo.client_data == (void *)0x1)
-        {
-            free(img);
-            img = NULL;
-            goto end;
-        }
-        for(j = 0; j < cinfo.output_width * 3; j += 3)
-        {
-            image[k + 2] = scanline[j];
-            image[k + 1] = scanline[j + 1];
-            image[k]     = scanline[j + 2];
-            image[k + 3] = 255;
-            k += 4;
-        }
-    }
-
-    img = pipi_new(cinfo.output_width, cinfo.output_height);
-
-    img->p[PIPI_PIXELS_RGBA_U8].pixels = image;
-    img->p[PIPI_PIXELS_RGBA_U8].w = cinfo.output_width;
-    img->p[PIPI_PIXELS_RGBA_U8].h = cinfo.output_height;
-    img->p[PIPI_PIXELS_RGBA_U8].pitch = cinfo.output_width * 4;
-    img->p[PIPI_PIXELS_RGBA_U8].bpp = 24;
-    img->p[PIPI_PIXELS_RGBA_U8].bytes = 4 * img->w * img->h;
-    img->last_modified = PIPI_PIXELS_RGBA_U8;
-
-    img->codec_priv = (void *)&cinfo;
-    img->codec_format = PIPI_PIXELS_RGBA_U8;
-    img->codec_free = pipi_free_jpeg;
-
-    img->wrap = 0;
-    img->u8 = 1;
-
-end:
-    if(fp)
-        fclose(fp);
-    if(scanline)
-        free(scanline);
-    jpeg_destroy_decompress(&cinfo);
-    return img;
-}
-
-int pipi_save_jpeg(pipi_image_t *img, const char *name)
-{
-    struct jpeg_compress_struct cinfo;
-    struct my_error_mgr jerr;
-    unsigned char *data;
-    unsigned char *line;
-    pipi_pixels_t *pixels;
-    JSAMPROW *jbuf;
-    uint32_t *ptr;
-    FILE *fp;
-    int i, j, y = 0;
-    size_t len;
-
-    int quality = 75; /* FIXME */
-
-    len = strlen(name);
-    if(len < 4 || name[len - 4] != '.'
-        || toupper(name[len - 3]) != 'J'
-        || toupper(name[len - 2]) != 'P'
-        || toupper(name[len - 1]) != 'G')
-    {
-        if(len < 5 || name[len - 5] != '.'
-            || toupper(name[len - 4]) != 'J'
-            || toupper(name[len - 3]) != 'P'
-            || toupper(name[len - 2]) != 'E'
-            || toupper(name[len - 1]) != 'G')
-            return -1;
-    }
-
-    pixels = pipi_get_pixels(img, PIPI_PIXELS_RGBA_U8);
-    if(!pixels)
-        return -1;
-
-    data = pixels->pixels;
-
-    line = malloc(img->w * 3 * sizeof(unsigned char));
-    if(!line)
-        return -1;
-
-    fp = fopen(name, "wb");
-    if(!fp)
-    {
-        free(line);
-        return -1;
-    }
-
-    if(setjmp(jerr.setjmp_buffer))
-        goto end;
-
-    jerr.pub.error_exit = error_msg;
-    jerr.pub.emit_message = emit_msg;
-    jerr.pub.output_message = output_msg;
-
-    cinfo.err = jpeg_std_error(&(jerr.pub));
-
-    jpeg_create_compress(&cinfo);
-    jpeg_stdio_dest(&cinfo, fp);
-    cinfo.image_width = img->w;
-    cinfo.image_height = img->h;
-    cinfo.input_components = 3;
-    cinfo.in_color_space = JCS_RGB;
-
-    jpeg_set_defaults(&cinfo);
-    jpeg_set_quality(&cinfo, quality, TRUE);
-    jpeg_start_compress(&cinfo, TRUE);
-
-    ptr = (uint32_t*)data;
-
-    while(cinfo.next_scanline < cinfo.image_height)
-    {
-        for (j = 0, i = 0; i < img->w; i++)
-        {
-            line[j++] = ((*ptr) >> 16) & 0xff;
-            line[j++] = ((*ptr) >> 8) & 0xff;
-            line[j++] = ((*ptr)) & 0xff;
-            ptr++;
-        }
-        jbuf = (JSAMPROW *) (&line);
-        jpeg_write_scanlines(&cinfo, jbuf, 1);
-        y++;
-    }
-
-    jpeg_finish_compress(&cinfo);
-
-end:
-    jpeg_destroy_compress(&cinfo);
-    free(line);
-    fclose(fp);
-
-    pipi_release_pixels(img, pixels);
-
-    return 0;
-}
-
-static int pipi_free_jpeg(pipi_image_t *img)
-{
-    if(img->p[PIPI_PIXELS_RGBA_U8].pixels)
-        free(img->p[PIPI_PIXELS_RGBA_U8].pixels);
-    return 0;
-}
-
diff --git a/src/image/todo/line.cpp b/src/image/todo/line.cpp
deleted file mode 100644
index e827f6b2..00000000
--- a/src/image/todo/line.cpp
+++ /dev/null
@@ -1,468 +0,0 @@
-/*
- *  Lol Engine
- *
- *  Copyright © 2004—2008 Sam Hocevar <sam@hocevar.net>
- *            © 2008 Jean-Yves Lamoureux <jylam@lnxscene.org>
- *
- *  This library is free software. It comes without any warranty, to
- *  the extent permitted by applicable law. You can redistribute it
- *  and/or modify it under the terms of the Do What the Fuck You Want
- *  to Public License, Version 2, as published by the WTFPL Task Force.
- *  See http://www.wtfpl.net/ for more details.
- */
-
-/*
- * line.c: line rendering functions
- */
-
-#include "config.h"
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-
-#include <math.h>
-
-#include "pipi.h"
-#include "pipi-internals.h"
-
-#if !defined TEMPLATE_FILE /* This file uses the template system */
-
-static float fractf(float d) { return (d - floorf(d)); }
-static float fractinvf(float d) { return (1 - (d - floorf(d))); }
-
-struct line
-{
-    int xa, ya;
-    int xb, yb;
-    void (*draw) (pipi_image_t*, struct line*);
-    union {
-        uint32_t color32;
-        float    colorf[3];
-    };
-
-    union {
-        uint32_t *buf_u32;
-        float    *buf_f;
-    };
-
-};
-
-#define TEMPLATE_FLAGS SET_FLAG_GRAY | SET_FLAG_8BIT
-#define TEMPLATE_FILE "paint/line.c"
-#include "pipi-template.h"
-
-static void clip_line(pipi_image_t*, struct line*);
-static uint8_t clip_bits(pipi_image_t*, int, int);
-
-int pipi_draw_line(pipi_image_t *img , int xa, int ya, int xb, int yb, uint32_t c, int aa)
-{
-    struct line s;
-    s.xa = xa;
-    s.ya = ya;
-    s.xb = xb;
-    s.yb = yb;
-
-
-    /* No Transparency routine for u32 yet, fallback to float version */
-    if(img->last_modified == PIPI_PIXELS_RGBA_U8)
-    {
-        if(!aa)
-        {
-            uint32_t  *dstdata;
-            dstdata = (uint32_t *)pipi_get_pixels(img, PIPI_PIXELS_RGBA_U8)->pixels;
-            s.color32 = c;
-            s.buf_u32 = dstdata;
-            s.draw = line_8bit;
-        }
-        else
-        {
-            float  *dstdata;
-            dstdata = (float *)pipi_get_pixels(img, PIPI_PIXELS_RGBA_F32)->pixels;
-            s.colorf[2] = ((c&0x00FF0000)>>16)/255.0f; /* XXX FIXME */
-            s.colorf[1] = ((c&0x0000FF00)>>8)/255.0f;  /* XXX FIXME */
-            s.colorf[0] = (c&0x000000FF)/255.0f;       /* XXX FIXME */
-            s.buf_f = dstdata;
-            s.draw = aaline;
-        }
-    }
-    else if(img->last_modified == PIPI_PIXELS_Y_F32)
-    {
-        float  *dstdata;
-        dstdata = (float *)pipi_get_pixels(img, PIPI_PIXELS_Y_F32)->pixels;
-        s.colorf[0] = (c & 0xff) / 255.0f; /* XXX FIXME */
-        s.buf_f = dstdata;
-        s.draw = aa ? aaline_gray : line_gray;
-    }
-    else
-    {
-        float  *dstdata;
-        dstdata = (float *)pipi_get_pixels(img, PIPI_PIXELS_RGBA_F32)->pixels;
-        s.colorf[2] = ((c&0x00FF0000)>>16)/255.0f; /* XXX FIXME */
-        s.colorf[1] = ((c&0x0000FF00)>>8)/255.0f;  /* XXX FIXME */
-        s.colorf[0] = (c&0x000000FF)/255.0f;       /* XXX FIXME */
-        s.buf_f = dstdata;
-        s.draw = aa ? aaline : line;
-    }
-
-    clip_line(img, &s);
-    return 0;
-}
-
-int pipi_draw_rectangle(pipi_image_t *img , int xa, int ya, int xb, int yb, uint32_t c, int aa)
-{
-    while(ya < yb)
-    {
-        pipi_draw_line(img, xa, ya, xb, ya, c, aa);
-        ya++;
-    }
-
-    while(ya > yb)
-    {
-        pipi_draw_line(img, xa, ya, xb, ya, c, aa);
-        ya--;
-    }
-
-    return pipi_draw_line(img, xa, yb, xb, yb, c, aa);
-}
-
-int pipi_draw_polyline(pipi_image_t *img, int const x[], int const y[],
-                       int n, uint32_t c, int aa)
-{
-    int i;
-
-    for(i = 0; i < n; i++)
-        pipi_draw_line(img, x[i], y[i], x[i + 1], y[i + 1], c, aa);
-
-    return 0;
-}
-
-/*
- * XXX: The following functions are local.
- */
-
-/* Generic Cohen-Sutherland line clipping function. */
-static void clip_line(pipi_image_t *img, struct line* s)
-{
-    uint8_t bits1, bits2;
-
-    bits1 = clip_bits(img, s->xa, s->ya);
-    bits2 = clip_bits(img, s->xb, s->yb);
-
-    if(bits1 & bits2)
-        return;
-
-    if(bits1 == 0)
-    {
-        if(bits2 == 0)
-            s->draw(img, s);
-        else
-        {
-            int tmp;
-            tmp = s->xa; s->xa = s->xb; s->xb = tmp;
-            tmp = s->ya; s->ya = s->yb; s->yb = tmp;
-            clip_line(img, s);
-        }
-        return;
-    }
-
-    if(bits1 & (1<<0))
-    {
-        s->ya = s->yb - (s->xb - 0) * (s->yb - s->ya) / (s->xb - s->xa);
-        s->xa = 0;
-    }
-    else if(bits1 & (1<<1))
-    {
-        int xmax = img->w - 1;
-        s->ya = s->yb - (s->xb - xmax) * (s->yb - s->ya) / (s->xb - s->xa);
-        s->xa = xmax;
-    }
-    else if(bits1 & (1<<2))
-    {
-        s->xa = s->xb - (s->yb - 0) * (s->xb - s->xa) / (s->yb - s->ya);
-        s->ya = 0;
-    }
-    else if(bits1 & (1<<3))
-    {
-        int ymax = img->h - 1;
-        s->xa = s->xb - (s->yb - ymax) * (s->xb - s->xa) / (s->yb - s->ya);
-        s->ya = ymax;
-    }
-
-    clip_line(img, s);
-}
-
-/* Helper function for clip_line(). */
-static uint8_t clip_bits(pipi_image_t *img, int x, int y)
-{
-    uint8_t b = 0;
-
-    if(x < 0)
-        b |= (1<<0);
-    else if(x >= (int)img->w)
-        b |= (1<<1);
-
-    if(y < 0)
-        b |= (1<<2);
-    else if(y >= (int)img->h)
-        b |= (1<<3);
-
-    return b;
-}
-
-#else /* XXX: the following functions use the template system */
-
-/* Xiaolin Wu's line algorithm, as seen at http://portal.acm.org/citation.cfm?id=122734 */
-
-#define PLOT(x, y, c) \
-    if(FLAG_8BIT) \
-    { \
-        /* TODO */ \
-    } \
-    else \
-    { \
-        if(FLAG_GRAY) \
-        { \
-            s->buf_f[((int)(x))+((int)(y))*img->w] =  \
-            (c*s->colorf[0]) + (1-c) * s->buf_f[((int)(x))+((int)(y))*img->w]; \
-            if(s->buf_f[((int)(x))+((int)(y))*img->w] > 1.0f) \
-                s->buf_f[((int)(x))+((int)(y))*img->w] = 1.0f; \
-            if(s->buf_f[((int)(x))+((int)(y))*img->w] < 0.0f) \
-                s->buf_f[((int)(x))+((int)(y))*img->w] = 0.0f; \
-        } \
-        else \
-        { \
-            int qwer = (((int)(x)*4))+((int)(y))*(img->w*4);\
-            int qweg = (1+((int)(x)*4))+((int)(y))*(img->w*4); \
-            int qweb = (2+((int)(x)*4))+((int)(y))*(img->w*4); \
-            s->buf_f[qwer] = (c*s->colorf[0]) + (1-c) * s->buf_f[qwer]; \
-            s->buf_f[qweg] = (c*s->colorf[1]) + (1-c) * s->buf_f[qweg]; \
-            s->buf_f[qweb] = (c*s->colorf[2]) + (1-c) * s->buf_f[qweb]; \
-            if(s->buf_f[qwer] > 1.0f) s->buf_f[qwer] = 1.0f; \
-            if(s->buf_f[qwer] < 0.0f) s->buf_f[qwer] = 0.0f; \
-            if(s->buf_f[qweg] > 1.0f) s->buf_f[qweg] = 1.0f; \
-            if(s->buf_f[qweg] < 0.0f) s->buf_f[qweg] = 0.0f; \
-            if(s->buf_f[qweb] > 1.0f) s->buf_f[qweb] = 1.0f; \
-            if(s->buf_f[qweb] < 0.0f) s->buf_f[qweb] = 0.0f; \
-        } \
-    }
-
-static void T(aaline)(pipi_image_t *img, struct line* s)
-{
-    float xa = s->xa, ya = s->ya, xb = s->xb, yb = s->yb;
-    float g, xd, yd, xgap, xend, yend, xf, yf, val1, val2;
-    int x, y, ixa, ixb, iya, iyb;
-
-    xd = xb - xa;
-    yd = yb - ya;
-
-    /* "Horizontal" line (X greater than Y)*/
-    if (fabsf(xd) > fabsf(yd))
-    {
-        if (xa > xb)
-        {
-            float tmp;
-            tmp = xa; xa = xb; xb = tmp;
-            tmp = ya; ya = yb; yb = tmp;
-            xd = (xb-xa);
-            yd = (yb-ya);
-        }
-        g = yd/xd;
-
-        xend = (float)(int)(xa+0.5);
-        yend = ya + g*(xend-xa);
-        xgap = fractinvf(xa+0.5);
-        ixa = (int)xend;
-        iya = (int)yend;
-        val1 = fractinvf(yend)*xgap;
-        val2 = fractf(yend)*xgap;
-
-        PLOT(ixa, iya,   val1);
-        PLOT(ixa, (iya+1)<ya?(iya+1):iya, val2);
-
-        yf = yend+g;
-        xend = (float)(int)(xb+0.5);
-        yend = yb + g*(xend-xb);
-        xgap = fractinvf(xb-0.5);
-        ixb = (int)xend;
-        iyb = (int)yend;
-        val1 = fractinvf(yend)*xgap;
-        val2 = fractf(yend)*xgap;
-
-        PLOT(ixb, iyb,   val1);
-        PLOT(ixb, iyb+1<yb?iyb+1:iyb, val2);
-
-        for (x = (ixa+1); x < ixb; x++)
-        {
-            float focus;
-
-            val1 = fractinvf(yf);
-            val2 = fractf(yf);
-            focus = (1.0 - fabsf(val1-val2));
-            val1 += 0.3*focus;
-            val2 += 0.3*focus;
-
-            PLOT(x, yf, val1);
-            PLOT(x, (yf+1)<ya?(yf+1):yf, val2);
-
-            yf = yf + g;
-        }
-    }
-    /* "Vertical" line (Y greater than X)*/
-    else
-    {
-        if (xa > xb)
-        {
-            float tmp;
-            tmp = xa; xa = xb; xb = tmp;
-            tmp = ya; ya = yb; yb = tmp;
-            xd = (xb-xa);
-            yd = (yb-ya);
-        }
-
-        g = xd/yd;
-
-        xend = (float)(int)(xa+0.5);
-        yend = ya + g*(xend-xa);
-        xgap = fractf(xa+0.5);
-        ixa = (int)xend;
-        iya = (int)yend;
-        val1 = fractinvf(yend)*xgap;
-        val2 = fractf(yend)*xgap;
-
-        PLOT(ixa, iya, val1);
-        PLOT(ixa, (iya+1)<ya?(iya+1):iya, val2);
-
-        xf = xend + g;
-
-        xend = (float)(int)(xb+0.5);
-        yend = yb + g*(xend-xb);
-        xgap = fractinvf(xb-0.5);
-        ixb = (int)xend;
-        iyb = (int)yend;
-        val1 = fractinvf(yend)*xgap;
-        val2 = fractf(yend)*xgap;
-
-        PLOT(ixb, iyb,   val1);
-        PLOT(ixb, (iyb+1)<yb?(iyb+1):iyb, val2);
-
-
-        for (y = (iya+1); y < iyb; y++)
-        {
-            float focus;
-            int   vx = xf;
-            val1 = fractinvf(xf);
-            val2 = fractf(xf);
-            focus = (1.0 - fabsf(val1-val2));
-            val1 += 0.3*focus;
-            val2 += 0.3*focus;
-            PLOT(vx, y, val1);
-            vx++;
-            PLOT(vx, y, val2);
-            xf = xf + g;
-        }
-    }
-}
-
-#undef PLOT
-
-/* Solid line drawing function, using Bresenham's mid-point line
- * scan-conversion algorithm. */
-static void T(line)(pipi_image_t *img, struct line* s)
-{
-    int xa, ya, xb, yb;
-    int dx, dy;
-    int xinc, yinc;
-
-    xa = s->xa; ya = s->ya; xb = s->xb; yb = s->yb;
-
-    dx = abs(xb - xa);
-    dy = abs(yb - ya);
-
-    xinc = (xa > xb) ? -1 : 1;
-    yinc = (ya > yb) ? -1 : 1;
-
-    if(dx >= dy)
-    {
-        int dpr = dy << 1;
-        int dpru = dpr - (dx << 1);
-        int delta = dpr - dx;
-
-        for(; dx >= 0; dx--)
-        {
-            if(FLAG_GRAY)
-            {
-                if(FLAG_8BIT)
-                    /* TODO */;
-                else
-                    s->buf_f[xa + ya * img->w] = s->colorf[0];
-            }
-            else
-            {
-                if(FLAG_8BIT)
-                    s->buf_u32[xa + ya * img->w] = s->color32;
-                else
-                {
-                    s->buf_f[4 * (ya * img->w + xa)] = s->colorf[0];
-                    s->buf_f[4 * (ya * img->w + xa) + 1] = s->colorf[1];
-                    s->buf_f[4 * (ya * img->w + xa) + 2] = s->colorf[2];
-                }
-            }
-
-            if(delta > 0)
-            {
-                xa += xinc;
-                ya += yinc;
-                delta += dpru;
-            }
-            else
-            {
-                xa += xinc;
-                delta += dpr;
-            }
-        }
-    }
-    else
-    {
-        int dpr = dx << 1;
-        int dpru = dpr - (dy << 1);
-        int delta = dpr - dy;
-
-        for(; dy >= 0; dy--)
-        {
-            if(FLAG_GRAY)
-            {
-                if(FLAG_8BIT)
-                    /* TODO */;
-                else
-                    s->buf_f[xa + ya * img->w] = s->colorf[0];
-            }
-            else
-            {
-                if(FLAG_8BIT)
-                    s->buf_u32[xa + ya * img->w] = s->color32;
-                else
-                {
-                    s->buf_f[4 * (ya * img->w + xa)] = s->colorf[0];
-                    s->buf_f[4 * (ya * img->w + xa) + 1] = s->colorf[1];
-                    s->buf_f[4 * (ya * img->w + xa) + 2] = s->colorf[2];
-                }
-            }
-
-            if(delta > 0)
-            {
-                xa += xinc;
-                ya += yinc;
-                delta += dpru;
-            }
-            else
-            {
-                ya += yinc;
-                delta += dpr;
-            }
-        }
-    }
-}
-
-#endif
-
diff --git a/src/image/todo/measure.cpp b/src/image/todo/measure.cpp
deleted file mode 100644
index 25c26d0e..00000000
--- a/src/image/todo/measure.cpp
+++ /dev/null
@@ -1,100 +0,0 @@
-/*
- *  Lol Engine
- *
- *  Copyright © 2004—2008 Sam Hocevar <sam@hocevar.net>
- *            © 2008 Jean-Yves Lamoureux <jylam@lnxscene.org>
- *
- *  This library is free software. It comes without any warranty, to
- *  the extent permitted by applicable law. You can redistribute it
- *  and/or modify it under the terms of the Do What the Fuck You Want
- *  to Public License, Version 2, as published by the WTFPL Task Force.
- *  See http://www.wtfpl.net/ for more details.
- */
-
-/*
- * measure.c: distance functions
- */
-
-#include "config.h"
-
-#include <math.h>
-
-#include "pipi.h"
-#include "pipi-internals.h"
-
-double pipi_measure_rmsd(pipi_image_t *i1, pipi_image_t *i2)
-{
-    return sqrt(pipi_measure_msd(i1, i2));
-}
-
-double pipi_measure_msd(pipi_image_t *i1, pipi_image_t *i2)
-{
-    pipi_format_t f1, f2;
-    double ret = 0.0;
-    float *p1, *p2;
-    int x, y, w, h, gray;
-
-    w = i1->w < i2->w ? i1->w : i2->w;
-    h = i1->h < i2->h ? i1->h : i2->h;
-
-    f1 = i1->last_modified;
-    f2 = i2->last_modified;
-
-    gray = f1 == PIPI_PIXELS_Y_F32 && f2 == PIPI_PIXELS_Y_F32;
-
-    /* FIXME: this is not right */
-    if(gray)
-    {
-        p1 = (float *)i1->p[PIPI_PIXELS_Y_F32].pixels;
-        p2 = (float *)i2->p[PIPI_PIXELS_Y_F32].pixels;
-    }
-    else
-    {
-        pipi_get_pixels(i1, PIPI_PIXELS_RGBA_F32);
-        pipi_get_pixels(i2, PIPI_PIXELS_RGBA_F32);
-        p1 = (float *)i1->p[PIPI_PIXELS_RGBA_F32].pixels;
-        p2 = (float *)i2->p[PIPI_PIXELS_RGBA_F32].pixels;
-    }
-
-    if(gray)
-    {
-        for(y = 0; y < h; y++)
-            for(x = 0; x < w; x++)
-            {
-                float a = p1[y * i1->w + x];
-                float b = p2[y * i2->w + x];
-                ret += (a - b) * (a - b);
-            }
-    }
-    else
-    {
-        for(y = 0; y < h; y++)
-            for(x = 0; x < w; x++)
-            {
-                float a, b, sum = 0.0;
-
-                a = p1[(y * i1->w + x) * 4];
-                b = p2[(y * i2->w + x) * 4];
-                sum += (a - b) * (a - b);
-
-                a = p1[(y * i1->w + x) * 4 + 1];
-                b = p2[(y * i2->w + x) * 4 + 1];
-                sum += (a - b) * (a - b);
-
-                a = p1[(y * i1->w + x) * 4 + 2];
-                b = p2[(y * i2->w + x) * 4 + 2];
-                sum += (a - b) * (a - b);
-
-                ret += sum / 3;
-            }
-    }
-
-    /* TODO: free pixels if they were allocated */
-
-    /* Restore original image formats */
-    i1->last_modified = f1;
-    i2->last_modified = f2;
-
-    return ret / (w * h);
-}
-
diff --git a/src/image/todo/reduce.cpp b/src/image/todo/reduce.cpp
deleted file mode 100644
index 674d73d5..00000000
--- a/src/image/todo/reduce.cpp
+++ /dev/null
@@ -1,507 +0,0 @@
-/*
- *  Lol Engine
- *
- *  Copyright © 2004—2008 Sam Hocevar <sam@hocevar.net>
- *
- *  This library is free software. It comes without any warranty, to
- *  the extent permitted by applicable law. You can redistribute it
- *  and/or modify it under the terms of the Do What the Fuck You Want
- *  to Public License, Version 2, as published by the WTFPL Task Force.
- *  See http://www.wtfpl.net/ for more details.
- */
-
-/*
- * reduce.c: palette reduction routines
- */
-
-#include "config.h"
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <math.h>
-#ifndef M_PI
-#   define M_PI 3.14159265358979323846
-#endif
-
-#include "pipi.h"
-#include "pipi-internals.h"
-
-#define R 0
-#define G 1
-#define B 2
-#define X 3
-#define Y 4
-#define A 5
-
-#define BRIGHT(x) (0.299*(x)[0] + 0.587*(x)[1] + 0.114*(x)[2])
-
-#define MAXCOLORS 16
-#define STEPS 1024
-#define EPSILON (0.000001)
-
-typedef struct
-{
-    double pts[STEPS + 1][MAXCOLORS * (MAXCOLORS - 1) / 2][6];
-    int hullsize[STEPS + 1];
-    double bary[STEPS + 1][3];
-}
-hull_t;
-
-static double const y[3] = { .299, .587, .114 };
-static double u[3], v[3];
-static int ylen;
-
-/*
- * Find two base vectors for the chrominance planes.
- */
-static void init_uv(void)
-{
-    double tmp;
-
-    ylen = sqrt(y[R] * y[R] + y[G] * y[G] + y[B] * y[B]);
-
-    u[R] = y[1];
-    u[G] = -y[0];
-    u[B] = 0;
-    tmp = sqrt(u[R] * u[R] + u[G] * u[G] + u[B] * u[B]);
-    u[R] /= tmp; u[G] /= tmp; u[B] /= tmp;
-
-    v[R] = y[G] * u[B] - y[B] * u[G];
-    v[G] = y[B] * u[R] - y[R] * u[B];
-    v[B] = y[R] * u[G] - y[G] * u[R];
-    tmp = sqrt(v[R] * v[R] + v[G] * v[G] + v[B] * v[B]);
-    v[R] /= tmp; v[G] /= tmp; v[B] /= tmp;
-}
-
-/*
- * Compute the convex hull of a given palette.
- */
-static hull_t *compute_hull(int ncolors, double const *palette)
-{
-    double pal[MAXCOLORS][3];
-    double gray[3];
-    double *dark = NULL, *light = NULL;
-    double tmp, min = 1.0, max = 0.0;
-    hull_t *ret = malloc(sizeof(hull_t));
-    int i, j, n;
-
-    debug("");
-    debug("### NEW HULL ###");
-    debug("");
-
-    debug("Analysing %i colors", ncolors);
-
-    for(i = 0; i < ncolors; i++)
-    {
-        pal[i][R] = palette[i * 3];
-        pal[i][G] = palette[i * 3 + 1];
-        pal[i][B] = palette[i * 3 + 2];
-        debug("  [%i] (%g,%g,%g)", i, pal[i][R], pal[i][G], pal[i][B]);
-    }
-
-    /*
-     * 1. Find the darkest and lightest colours
-     */
-    for(i = 0; i < ncolors; i++)
-    {
-        double p = BRIGHT(pal[i]);
-        if(p < min)
-        {
-            dark = pal[i];
-            min = p;
-        }
-        if(p > max)
-        {
-            light = pal[i];
-            max = p;
-        }
-    }
-
-    gray[R] = light[R] - dark[R];
-    gray[G] = light[G] - dark[G];
-    gray[B] = light[B] - dark[B];
-
-    debug("  gray axis (%g,%g,%g) - (%g,%g,%g)",
-          dark[R], dark[G], dark[B], light[R], light[G], light[B]);
-
-    /*
-     * 3. Browse the grey axis and do stuff
-     */
-    for(n = 0; n <= STEPS; n++)
-    {
-        double pts[MAXCOLORS * (MAXCOLORS - 1) / 2][5];
-        double ptmp[5];
-        double p0[3];
-#define SWAP(p1,p2) do { memcpy(ptmp, p1, sizeof(ptmp)); \
-                         memcpy(p1, p2, sizeof(ptmp)); \
-                         memcpy(p2, ptmp, sizeof(ptmp)); } while(0)
-        double ctx, cty, weight;
-        double t = n * 1.0 / STEPS;
-        int npts = 0, left;
-
-        debug("Slice %i/%i", n, STEPS);
-
-        p0[R] = dark[R] + t * gray[R];
-        p0[G] = dark[G] + t * gray[G];
-        p0[B] = dark[B] + t * gray[B];
-
-        debug("  3D gray (%g,%g,%g)", p0[R], p0[G], p0[B]);
-
-        /*
-         * 3.1. Find all edges that intersect the t.y + (u,v) plane
-         */
-        for(i = 0; i < ncolors; i++)
-        {
-            double k1[3];
-            double yk1;
-            k1[R] = pal[i][R] - p0[R];
-            k1[G] = pal[i][G] - p0[G];
-            k1[B] = pal[i][B] - p0[B];
-            tmp = sqrt(k1[R] * k1[R] + k1[G] * k1[G] + k1[B] * k1[B]);
-
-            /* If k1.y > t.y.y, we don't want this point */
-            yk1 = y[R] * k1[R] + y[G] * k1[G] + y[B] * k1[B];
-            if(yk1 > t * ylen * ylen + EPSILON)
-                continue;
-
-            for(j = 0; j < ncolors; j++)
-            {
-                double k2[3];
-                double yk2, s;
-
-                if(i == j)
-                    continue;
-
-                k2[R] = pal[j][R] - p0[R];
-                k2[G] = pal[j][G] - p0[G];
-                k2[B] = pal[j][B] - p0[B];
-                tmp = sqrt(k2[R] * k2[R] + k2[G] * k2[G] + k2[B] * k2[B]);
-
-                /* If k2.y < t.y.y, we don't want this point */
-                yk2 = y[R] * k2[R] + y[G] * k2[G] + y[B] * k2[B];
-                if(yk2 < t * ylen * ylen - EPSILON)
-                    continue;
-
-                if(yk2 < yk1)
-                    continue;
-
-                s = yk1 == yk2 ? 0.5 : (t * ylen * ylen - yk1) / (yk2 - yk1);
-
-                pts[npts][R] = p0[R] + k1[R] + s * (k2[R] - k1[R]);
-                pts[npts][G] = p0[G] + k1[G] + s * (k2[G] - k1[G]);
-                pts[npts][B] = p0[B] + k1[B] + s * (k2[B] - k1[B]);
-                npts++;
-            }
-        }
-
-        /*
-         * 3.2. Find the barycentre of these points' convex hull. We use
-         *      the Graham Scan technique.
-         */
-
-        /* Make our problem a 2-D problem. */
-        for(i = 0; i < npts; i++)
-        {
-            pts[i][X] = (pts[i][R] - p0[R]) * u[R]
-                           + (pts[i][G] - p0[G]) * u[G]
-                           + (pts[i][B] - p0[B]) * u[B];
-            pts[i][Y] = (pts[i][R] - p0[R]) * v[R]
-                           + (pts[i][G] - p0[G]) * v[G]
-                           + (pts[i][B] - p0[B]) * v[B];
-        }
-
-        /* Find the leftmost point */
-        left = -1;
-        tmp = 10.;
-        for(i = 0; i < npts; i++)
-            if(pts[i][X] < tmp)
-            {
-                left = i;
-                tmp = pts[i][X];
-            }
-        SWAP(pts[0], pts[left]);
-
-        /* Sort the remaining points radially around pts[0]. Bubble sort
-         * is okay for small sizes, I don't care. */
-        for(i = 1; i < npts; i++)
-            for(j = 1; j < npts - i; j++)
-            {
-                double k1 = (pts[j][X] - pts[0][X])
-                              * (pts[j + 1][Y] - pts[0][Y]);
-                double k2 = (pts[j + 1][X] - pts[0][X])
-                              * (pts[j][Y] - pts[0][Y]);
-                if(k1 < k2 - EPSILON)
-                    SWAP(pts[j], pts[j + 1]);
-                else if(k1 < k2 + EPSILON)
-                {
-                    /* Aligned! keep the farthest point */
-                    double ax = pts[j][X] - pts[0][X];
-                    double ay = pts[j][Y] - pts[0][Y];
-                    double bx = pts[j + 1][X] - pts[0][X];
-                    double by = pts[j + 1][Y] - pts[0][Y];
-
-                    if(ax * ax + ay * ay > bx * bx + by * by)
-                        SWAP(pts[j], pts[j + 1]);
-                }
-            }
-
-        /* Remove points not in the convex hull */
-        for(i = 2; i < npts; /* */)
-        {
-            double k1, k2;
-
-            if(i < 2)
-            {
-                i++;
-                continue;
-            }
-
-            k1 = (pts[i - 1][X] - pts[i - 2][X])
-                          * (pts[i][Y] - pts[i - 2][Y]);
-            k2 = (pts[i][X] - pts[i - 2][X])
-                          * (pts[i - 1][Y] - pts[i - 2][Y]);
-            if(k1 <= k2 + EPSILON)
-            {
-                for(j = i - 1; j < npts - 1; j++)
-                    SWAP(pts[j], pts[j + 1]);
-                npts--;
-            }
-            else
-                i++;
-        }
-        /* FIXME: check the last point */
-
-        for(i = 0; i < npts; i++)
-            debug("    2D pt[%i] (%g,%g)", i, pts[i][X], pts[i][Y]);
-
-        /* Compute the barycentre coordinates */
-        ctx = 0.;
-        cty = 0.;
-        weight = 0.;
-        for(i = 2; i < npts; i++)
-        {
-            double abx = pts[i - 1][X] - pts[0][X];
-            double aby = pts[i - 1][Y] - pts[0][Y];
-            double acx = pts[i][X] - pts[0][X];
-            double acy = pts[i][Y] - pts[0][Y];
-            double area;
-            double sqarea = (abx * abx + aby * aby) * (acx * acx + acy * acy)
-                          - (abx * acx + aby * acy) * (abx * acx + aby * acy);
-            if(sqarea <= 0.)
-                continue;
-
-            area = sqrt(sqarea);
-            ctx += area * (abx + acx) / 3;
-            cty += area * (aby + acy) / 3;
-            weight += area;
-        }
-
-        if(weight > EPSILON)
-        {
-            ctx = pts[0][X] + ctx / weight;
-            cty = pts[0][Y] + cty / weight;
-        }
-        else
-        {
-            int right = -1;
-            tmp = -10.;
-            for(i = 0; i < npts; i++)
-                if(pts[i][X] > tmp)
-                {
-                    right = i;
-                    tmp = pts[i][X];
-                }
-            ctx = 0.5 * (pts[0][X] + pts[right][X]);
-            cty = 0.5 * (pts[0][Y] + pts[right][Y]);
-        }
-
-        debug("    2D bary (%g,%g)", ctx, cty);
-
-        /*
-         * 3.3. Store the barycentre and convex hull information.
-         */
-
-        ret->bary[n][R] = p0[R] + ctx * u[R] + cty * v[R];
-        ret->bary[n][G] = p0[G] + ctx * u[G] + cty * v[G];
-        ret->bary[n][B] = p0[B] + ctx * u[B] + cty * v[B];
-
-        for(i = 0; i < npts; i++)
-        {
-            ret->pts[n][i][R] = pts[i][R];
-            ret->pts[n][i][G] = pts[i][G];
-            ret->pts[n][i][B] = pts[i][B];
-            ret->pts[n][i][X] = pts[i][X] - ctx;
-            ret->pts[n][i][Y] = pts[i][Y] - cty;
-            ret->pts[n][i][A] = atan2(pts[i][Y] - cty, pts[i][X] - ctx);
-
-            debug("  3D pt[%i] (%g,%g,%g) angle %g",
-                  i, pts[i][R], pts[i][G], pts[i][B], ret->pts[n][i][A]);
-        }
-        ret->hullsize[n] = npts;
-
-        debug("  3D bary (%g,%g,%g)",
-              ret->bary[n][R], ret->bary[n][G], ret->bary[n][B]);
-    }
-
-    return ret;
-}
-
-
-pipi_image_t *pipi_reduce(pipi_image_t *src,
-                          int ncolors, double const *palette)
-{
-    static double const rgbpal[] =
-    {
-        0, 0, 0,  0, 0, 1,  0, 1, 0,  0, 1, 1,
-        1, 0, 0,  1, 0, 1,  1, 1, 0,  1, 1, 1,
-    };
-
-    pipi_image_t *dst;
-    pipi_pixels_t *srcp, *dstp;
-    float *srcdata, *dstdata;
-    hull_t *rgbhull, *myhull;
-    int i, j, w, h;
-
-    init_uv();
-
-    rgbhull = compute_hull(8, rgbpal);
-    myhull = compute_hull(ncolors, palette);
-
-    /*
-     * 4. Load image and change its palette.
-     */
-
-    debug("");
-    debug("### PROCESSING IMAGE ###");
-    debug("");
-
-    srcp = pipi_get_pixels(src, PIPI_PIXELS_RGBA_F32);
-    srcdata = (float *)srcp->pixels;
-
-    w = srcp->w;
-    h = srcp->h;
-
-    dst = pipi_new(w, h);
-    dstp = pipi_get_pixels(dst, PIPI_PIXELS_RGBA_F32);
-    dstdata = (float *)dstp->pixels;
-
-    for(j = 0; j < h; j++)
-        for(i = 0; i < w; i++)
-        {
-            double p[3];
-            double xp, yp, angle, xa, ya, xb, yb, t, s;
-            int slice, n, count;
-
-            /* FIXME: Imlib fucks up the RGB order. */
-            p[B] = srcdata[4 * (j * w + i)];
-            p[G] = srcdata[4 * (j * w + i) + 1];
-            p[R] = srcdata[4 * (j * w + i) + 2];
-
-            debug("Pixel +%i+%i (%g,%g,%g)", i, j, p[R], p[G], p[B]);
-
-            slice = (int)(BRIGHT(p) * STEPS + 0.5);
-
-            debug("  slice %i", slice);
-
-            /* Convert to 2D. The origin is the slice's barycentre. */
-            xp = (p[R] - rgbhull->bary[slice][R]) * u[R]
-               + (p[G] - rgbhull->bary[slice][G]) * u[G]
-               + (p[B] - rgbhull->bary[slice][B]) * u[B];
-            yp = (p[R] - rgbhull->bary[slice][R]) * v[R]
-               + (p[G] - rgbhull->bary[slice][G]) * v[G]
-               + (p[B] - rgbhull->bary[slice][B]) * v[B];
-
-            debug("    2D pt (%g,%g)", xp, yp);
-
-            /* 1. find the excentricity in RGB space. There is an easier
-             * way to do this, which is to find the intersection of our
-             * line with the RGB cube itself, but we'd lose the possibility
-             * of having an original colour space other than RGB. */
-
-            /* First, find the relevant triangle. */
-            count = rgbhull->hullsize[slice];
-            angle = atan2(yp, xp);
-            for(n = 0; n < count; n++)
-            {
-                double a1 = rgbhull->pts[slice][n][A];
-                double a2 = rgbhull->pts[slice][(n + 1) % count][A];
-                if(a1 > a2)
-                {
-                    if(angle >= a1)
-                        a2 += 2 * M_PI;
-                    else
-                        a1 -= 2 * M_PI;
-                }
-                if(angle >= a1 && angle <= a2)
-                    break;
-            }
-
-            /* Now compute the distance to the triangle's edge. If the edge
-             * intersection is M, then t is such as P = t.M (can be zero) */
-            xa = rgbhull->pts[slice][n % count][X];
-            ya = rgbhull->pts[slice][n % count][Y];
-            xb = rgbhull->pts[slice][(n + 1) % count][X];
-            yb = rgbhull->pts[slice][(n + 1) % count][Y];
-            t = (xp * (yb - ya) - yp * (xb - xa)) / (xa * yb - xb * ya);
-
-            if(t > 1.0)
-                t = 1.0;
-
-            debug("    best RGB %g (%g,%g) (%g,%g)", t, xa, ya, xb, yb);
-
-            /* 2. apply the excentricity in reduced space. */
-
-            count = myhull->hullsize[slice];
-            for(n = 0; n < count; n++)
-            {
-                double a1 = myhull->pts[slice][n][A];
-                double a2 = myhull->pts[slice][(n + 1) % count][A];
-                if(a1 > a2)
-                {
-                    if(angle >= a1)
-                        a2 += 2 * M_PI;
-                    else
-                        a1 -= 2 * M_PI;
-                }
-                if(angle >= a1 && angle <= a2)
-                    break;
-            }
-
-            /* If the edge intersection is M', s is such as P = s.M'. We
-             * want P' = t.M' = t.P/s  */
-            xa = myhull->pts[slice][n % count][X];
-            ya = myhull->pts[slice][n % count][Y];
-            xb = myhull->pts[slice][(n + 1) % count][X];
-            yb = myhull->pts[slice][(n + 1) % count][Y];
-            s = (xp * (yb - ya) - yp * (xb - xa)) / (xa * yb - xb * ya);
-
-            debug("    best custom %g (%g,%g) (%g,%g)", s, xa, ya, xb, yb);
-
-            if(s > 0)
-            {
-                xp *= t / s;
-                yp *= t / s;
-            }
-
-            p[R] = myhull->bary[slice][R] + xp * u[R] + yp * v[R];
-            p[G] = myhull->bary[slice][G] + xp * u[G] + yp * v[G];
-            p[B] = myhull->bary[slice][B] + xp * u[B] + yp * v[B];
-
-            /* Clipping should not be necessary, but the above code
-             * is unfortunately not perfect. */
-            if(p[R] < 0.0) p[R] = 0.0; else if(p[R] > 1.0) p[R] = 1.0;
-            if(p[G] < 0.0) p[G] = 0.0; else if(p[G] > 1.0) p[G] = 1.0;
-            if(p[B] < 0.0) p[B] = 0.0; else if(p[B] > 1.0) p[B] = 1.0;
-
-            dstdata[4 * (j * w + i)] = p[B];
-            dstdata[4 * (j * w + i) + 1] = p[G];
-            dstdata[4 * (j * w + i) + 2] = p[R];
-        }
-
-    free(rgbhull);
-    free(myhull);
-
-    return dst;
-}
-
diff --git a/src/image/todo/rgb.cpp b/src/image/todo/rgb.cpp
deleted file mode 100644
index 19b7d9a5..00000000
--- a/src/image/todo/rgb.cpp
+++ /dev/null
@@ -1,133 +0,0 @@
-/*
- *  Lol Engine
- *
- *  Copyright © 2004—2008 Sam Hocevar <sam@hocevar.net>
- *
- *  This library is free software. It comes without any warranty, to
- *  the extent permitted by applicable law. You can redistribute it
- *  and/or modify it under the terms of the Do What the Fuck You Want
- *  to Public License, Version 2, as published by the WTFPL Task Force.
- *  See http://www.wtfpl.net/ for more details.
- */
-
-/*
- * rgb.c: RGB combining function
- */
-
-#include "config.h"
-
-#include <stdlib.h>
-
-#include "pipi.h"
-#include "pipi-internals.h"
-
-pipi_image_t *pipi_rgb(pipi_image_t *i1, pipi_image_t *i2, pipi_image_t *i3)
-{
-    pipi_image_t *dst;
-    pipi_pixels_t *i1p, *i2p, *i3p, *dstp;
-    float *i1data, *i2data, *i3data, *dstdata;
-    int x, y, w, h;
-
-    if(i1->w != i2->w || i1->h != i2->h || i1->w != i3->w || i1->h != i3->h)
-        return NULL;
-
-    w = i1->w;
-    h = i1->h;
-
-    dst = pipi_new(w, h);
-    dstp = pipi_get_pixels(dst, PIPI_PIXELS_RGBA_F32);
-    dstdata = (float *)dstp->pixels;
-
-    i1p = pipi_get_pixels(i1, PIPI_PIXELS_Y_F32);
-    i1data = (float *)i1p->pixels;
-    i2p = pipi_get_pixels(i2, PIPI_PIXELS_Y_F32);
-    i2data = (float *)i2p->pixels;
-    i3p = pipi_get_pixels(i3, PIPI_PIXELS_Y_F32);
-    i3data = (float *)i3p->pixels;
-
-    for(y = 0; y < h; y++)
-    {
-        for(x = 0; x < w; x++)
-        {
-            dstdata[4 * (y * w + x)] = i1data[y * w + x];
-            dstdata[4 * (y * w + x) + 1] = i2data[y * w + x];
-            dstdata[4 * (y * w + x) + 2] = i3data[y * w + x];
-            dstdata[4 * (y * w + x) + 3] = 1.0;
-        }
-    }
-
-    return dst;
-}
-
-pipi_image_t *pipi_red(pipi_image_t *src)
-{
-    pipi_image_t *dst;
-    pipi_pixels_t *srcp, *dstp;
-    float *srcdata, *dstdata;
-    int x, y, w, h;
-
-    w = src->w;
-    h = src->h;
-
-    dst = pipi_new(w, h);
-    dstp = pipi_get_pixels(dst, PIPI_PIXELS_Y_F32);
-    dstdata = (float *)dstp->pixels;
-
-    srcp = pipi_get_pixels(src, PIPI_PIXELS_RGBA_F32);
-    srcdata = (float *)srcp->pixels;
-
-    for(y = 0; y < h; y++)
-        for(x = 0; x < w; x++)
-            dstdata[y * w + x] = srcdata[4 * (y * w + x)];
-
-    return dst;
-}
-
-pipi_image_t *pipi_green(pipi_image_t *src)
-{
-    pipi_image_t *dst;
-    pipi_pixels_t *srcp, *dstp;
-    float *srcdata, *dstdata;
-    int x, y, w, h;
-
-    w = src->w;
-    h = src->h;
-
-    dst = pipi_new(w, h);
-    dstp = pipi_get_pixels(dst, PIPI_PIXELS_Y_F32);
-    dstdata = (float *)dstp->pixels;
-
-    srcp = pipi_get_pixels(src, PIPI_PIXELS_RGBA_F32);
-    srcdata = (float *)srcp->pixels;
-
-    for(y = 0; y < h; y++)
-        for(x = 0; x < w; x++)
-            dstdata[y * w + x] = srcdata[4 * (y * w + x) + 1];
-
-    return dst;
-}
-
-pipi_image_t *pipi_blue(pipi_image_t *src)
-{
-    pipi_image_t *dst;
-    pipi_pixels_t *srcp, *dstp;
-    float *srcdata, *dstdata;
-    int x, y, w, h;
-
-    w = src->w;
-    h = src->h;
-
-    dst = pipi_new(w, h);
-    dstp = pipi_get_pixels(dst, PIPI_PIXELS_Y_F32);
-    dstdata = (float *)dstp->pixels;
-
-    srcp = pipi_get_pixels(src, PIPI_PIXELS_RGBA_F32);
-    srcdata = (float *)srcp->pixels;
-
-    for(y = 0; y < h; y++)
-        for(x = 0; x < w; x++)
-            dstdata[y * w + x] = srcdata[4 * (y * w + x) + 2];
-
-    return dst;
-}
-
diff --git a/src/image/todo/rotate.cpp b/src/image/todo/rotate.cpp
deleted file mode 100644
index c7bd8e64..00000000
--- a/src/image/todo/rotate.cpp
+++ /dev/null
@@ -1,98 +0,0 @@
-/*
- *  Lol Engine
- *
- *  Copyright © 2004—2008 Sam Hocevar <sam@hocevar.net>
- *
- *  This library is free software. It comes without any warranty, to
- *  the extent permitted by applicable law. You can redistribute it
- *  and/or modify it under the terms of the Do What the Fuck You Want
- *  to Public License, Version 2, as published by the WTFPL Task Force.
- *  See http://www.wtfpl.net/ for more details.
- */
-
-/*
- * wave.c: wave and other warping effects
- */
-
-#include "config.h"
-
-#include <stdlib.h>
-#include <stdio.h>
-#include <string.h>
-#include <math.h>
-#ifndef M_PI
-#   define M_PI 3.14159265358979323846
-#endif
-
-#include "pipi.h"
-#include "pipi-internals.h"
-
-pipi_image_t *pipi_rotate(pipi_image_t *src, double a)
-{
-    pipi_image_t *dst;
-    pipi_pixels_t *srcp, *dstp;
-    float *srcdata, *dstdata;
-    double sina, cosa, cx, cy;
-    int x, y, w, h, i, gray;
-
-    w = src->w;
-    h = src->h;
-
-    gray = (src->last_modified == PIPI_PIXELS_Y_F32);
-
-    srcp = gray ? pipi_get_pixels(src, PIPI_PIXELS_Y_F32)
-                : pipi_get_pixels(src, PIPI_PIXELS_RGBA_F32);
-    srcdata = (float *)srcp->pixels;
-
-    dst = pipi_new(w, h);
-    dstp = gray ? pipi_get_pixels(dst, PIPI_PIXELS_Y_F32)
-                : pipi_get_pixels(dst, PIPI_PIXELS_RGBA_F32);
-    dstdata = (float *)dstp->pixels;
-
-    sina = sin(a * M_PI / 180.0);
-    cosa = cos(a * M_PI / 180.0);
-
-    cx = (double)w / 2.0;
-    cy = (double)h / 2.0;
-
-    for(y = 0; y < h; y++)
-    {
-        for(x = 0; x < w; x++)
-        {
-            double dx, dy;
-            int x2, y2;
-
-            dx = ((double)x - cx) * cosa - ((double)y - cy) * sina;
-            dy = ((double)y - cy) * cosa + ((double)x - cx) * sina;
-
-            x2 = (int)(cx + dx + 0.5);
-            y2 = (int)(cy + dy + 0.5);
-
-            if(gray)
-            {
-                if(x2 < 0 || y2 < 0 || x2 >= w || y2 >= h)
-                    ;
-                else
-                    dstdata[y * w + x] = srcdata[y2 * w + x2];
-            }
-            else
-            {
-                if(x2 < 0 || y2 < 0 || x2 >= w || y2 >= h)
-                {
-                    dstdata[4 * (y * w + x) + 3] = 0.0f;
-                }
-                else
-                {
-                    for(i = 0; i < 4; i++)
-                    {
-                        dstdata[4 * (y * w + x) + i]
-                            = srcdata[4 * (y2 * w + x2) + i];
-                    }
-                }
-            }
-        }
-    }
-
-    return dst;
-}
-
diff --git a/src/image/todo/sequence.cpp b/src/image/todo/sequence.cpp
deleted file mode 100644
index 2627e2fc..00000000
--- a/src/image/todo/sequence.cpp
+++ /dev/null
@@ -1,344 +0,0 @@
-/*
- *  Lol Engine
- *
- *  Copyright © 2004—2009 Sam Hocevar <sam@hocevar.net>
- *
- *  This library is free software. It comes without any warranty, to
- *  the extent permitted by applicable law. You can redistribute it
- *  and/or modify it under the terms of the Do What the Fuck You Want
- *  to Public License, Version 2, as published by the WTFPL Task Force.
- *  See http://www.wtfpl.net/ for more details.
- */
-
-/*
- * codec.c: image I/O functions
- */
-
-#include "config.h"
-
-#if defined _WIN32
-#   undef _CRT_SECURE_NO_WARNINGS
-#   define _CRT_SECURE_NO_WARNINGS /* I know how to use snprintf, thank you */
-#   define snprintf _snprintf
-#endif
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-
-#if defined USE_FFMPEG
-#   include <libavformat/avformat.h>
-#   include <libswscale/swscale.h>
-#endif
-
-#include "pipi.h"
-#include "pipi-internals.h"
-
-#if defined USE_FFMPEG
-typedef struct
-{
-    uint8_t *buf;
-    size_t buf_len;
-
-    AVFormatContext *fmt_ctx;
-    AVStream *stream;
-    AVCodecContext *cod_ctx;
-    AVCodec *codec;
-    AVFrame *frame;
-
-    struct SwsContext *sws_ctx;
-    int src_width, src_height, src_fmt;
-}
-ffmpeg_codec_t;
-#endif
-
-pipi_sequence_t *pipi_open_sequence(char const *file,
-                                    int width, int height, int rgb, int fps,
-                                    int par_num, int par_den, int bitrate)
-{
-#if defined USE_FFMPEG
-    static int initialised = 0;
-
-    pipi_sequence_t *seq;
-    ffmpeg_codec_t *ff;
-    uint8_t *tmp;
-
-    seq = malloc(sizeof(pipi_sequence_t));
-    seq->w = width;
-    seq->h = height;
-    seq->fps = fps;
-    seq->convert_buf = NULL;
-
-    ff = malloc(sizeof(ffmpeg_codec_t));
-    memset(ff, 0, sizeof(*ff));
-
-    seq->codec_priv = ff;
-
-    if (!initialised)
-    {
-        av_register_all();
-        initialised = 1;
-    }
-
-    ff->fmt_ctx = avformat_alloc_context();
-    if (!ff->fmt_ctx)
-        goto error;
-
-    /* Careful here: the Win32 snprintf doesn't seem to add a trailing
-     * zero to the truncated output. */
-    snprintf(ff->fmt_ctx->filename, sizeof(ff->fmt_ctx->filename),
-             file);
-    ff->fmt_ctx->filename[sizeof(ff->fmt_ctx->filename) - 1] = '\0';
-
-    ff->fmt_ctx->oformat = av_guess_format(NULL, file, NULL);
-    if (!ff->fmt_ctx->oformat)
-        ff->fmt_ctx->oformat = av_guess_format("mpeg", NULL, NULL);
-    if (!ff->fmt_ctx->oformat)
-        goto error;
-
-    ff->stream = av_new_stream(ff->fmt_ctx, 0);
-    if (!ff->stream)
-        goto error;
-
-    ff->stream->sample_aspect_ratio.num = par_num;
-    ff->stream->sample_aspect_ratio.den = par_den;
-
-    ff->cod_ctx = ff->stream->codec;
-
-    ff->cod_ctx->width = width;
-    ff->cod_ctx->height = height;
-    ff->cod_ctx->sample_aspect_ratio.num = par_num;
-    ff->cod_ctx->sample_aspect_ratio.den = par_den;
-    ff->cod_ctx->codec_id = ff->fmt_ctx->oformat->video_codec;
-    ff->cod_ctx->codec_type = CODEC_TYPE_VIDEO;
-    ff->cod_ctx->bit_rate = bitrate;
-    ff->cod_ctx->time_base.num = 1;
-    ff->cod_ctx->time_base.den = fps;
-
-    ff->cod_ctx->pix_fmt = PIX_FMT_YUV420P; /* send YUV 420 */
-    if (ff->cod_ctx->codec_id == CODEC_ID_MPEG2VIDEO)
-        ff->cod_ctx->max_b_frames = 2;
-    if (ff->cod_ctx->codec_id == CODEC_ID_MPEG1VIDEO)
-        ff->cod_ctx->mb_decision = 2;
-    if (ff->cod_ctx->codec_id == CODEC_ID_H264)
-    {
-        /* Import x264 slow presets */
-        ff->cod_ctx->coder_type = 1;
-        ff->cod_ctx->flags |= CODEC_FLAG_LOOP_FILTER;
-        ff->cod_ctx->me_cmp |= FF_CMP_CHROMA;
-        ff->cod_ctx->partitions |= X264_PART_I4X4 | X264_PART_I8X8
-                                 | X264_PART_P4X4 | X264_PART_P8X8;
-        ff->cod_ctx->me_method = ME_UMH;
-        ff->cod_ctx->me_subpel_quality = 8;
-        ff->cod_ctx->me_range = 16;
-        ff->cod_ctx->gop_size = 250;
-        ff->cod_ctx->keyint_min = 25;
-        ff->cod_ctx->scenechange_threshold = 40;
-        ff->cod_ctx->i_quant_factor = 0.71f;
-        ff->cod_ctx->b_frame_strategy = 2;
-        ff->cod_ctx->qcompress = 0.6f;
-        ff->cod_ctx->qmin = 10;
-        ff->cod_ctx->qmax = 51;
-        ff->cod_ctx->max_qdiff = 4;
-        ff->cod_ctx->max_b_frames = 3;
-        ff->cod_ctx->refs = 5;
-        ff->cod_ctx->directpred = 3;
-        ff->cod_ctx->trellis = 1;
-        ff->cod_ctx->flags2 |= CODEC_FLAG2_BPYRAMID | CODEC_FLAG2_MIXED_REFS
-                             | CODEC_FLAG2_WPRED | CODEC_FLAG2_8X8DCT
-                             | CODEC_FLAG2_FASTPSKIP;
-        ff->cod_ctx->weighted_p_pred = 2;
-        ff->cod_ctx->rc_lookahead = 50;
-    }
-    if (ff->fmt_ctx->oformat->flags & AVFMT_GLOBALHEADER)
-        ff->cod_ctx->flags |= CODEC_FLAG_GLOBAL_HEADER;
-
-    if (av_set_parameters(ff->fmt_ctx, NULL) < 0)
-        goto error;
-
-    ff->codec = avcodec_find_encoder(ff->cod_ctx->codec_id);
-    if (!ff->codec)
-        goto error;
-    if (avcodec_open(ff->cod_ctx, ff->codec) < 0)
-        goto error;
-
-    ff->frame = avcodec_alloc_frame();
-    if (!ff->frame)
-        goto error;
-    tmp = (uint8_t *)av_malloc(avpicture_get_size(ff->cod_ctx->pix_fmt,
-                                                  ff->cod_ctx->width,
-                                                  ff->cod_ctx->height));
-    if (!tmp)
-        goto error;
-    avpicture_fill((AVPicture *)ff->frame, tmp, ff->cod_ctx->pix_fmt,
-                   ff->cod_ctx->width, ff->cod_ctx->height);
-
-    if (!(ff->fmt_ctx->flags & AVFMT_NOFILE))
-        if (url_fopen(&ff->fmt_ctx->pb, file, URL_WRONLY) < 0)
-            goto error;
-
-    ff->buf_len = 64 * 1024 * 1024;
-    ff->buf = (uint8_t *)av_malloc(ff->buf_len);
-
-    ff->src_fmt = rgb ? PIX_FMT_RGB32 : PIX_FMT_YUV444P;
-
-    av_write_header(ff->fmt_ctx);
-
-    return seq;
-
-error:
-    pipi_close_sequence(seq);
-    return NULL;
-
-#else
-    return NULL;
-
-#endif
-}
-
-int pipi_feed_sequence(pipi_sequence_t *seq, uint8_t const *buffer,
-                       int width, int height)
-{
-#if defined USE_FFMPEG
-    AVPacket packet;
-    uint8_t const *buflist[3];
-    int pitchlist[3];
-    size_t bytes;
-    int n;
-
-    ffmpeg_codec_t *ff = (ffmpeg_codec_t *)seq->codec_priv;
-
-    if (ff->src_width != width || ff->src_height != height)
-    {
-        ff->src_width = width;
-        ff->src_height = height;
-        if (ff->sws_ctx)
-            sws_freeContext(ff->sws_ctx);
-        ff->sws_ctx = NULL;
-    }
-
-    if (!ff->sws_ctx)
-    {
-        ff->sws_ctx = sws_getContext(width, height, ff->src_fmt,
-                                     ff->cod_ctx->width,
-                                     ff->cod_ctx->height,
-                                     ff->cod_ctx->pix_fmt, SWS_BICUBIC,
-                                     NULL, NULL, NULL);
-        if (seq->convert_buf)
-        {
-           free(seq->convert_buf);
-           seq->convert_buf = NULL;
-        }
-    }
-    if (!ff->sws_ctx)
-        return -1;
-
-    /* Convert interleaved YUV to planar YUV */
-    if (ff->src_fmt == PIX_FMT_YUV444P)
-    {
-        if (!seq->convert_buf)
-            seq->convert_buf = malloc(width * height * 3);
-
-        for (n = 0; n < width * height; n++)
-        {
-            seq->convert_buf[n] = buffer[4 * n];
-            seq->convert_buf[n + width * height] = buffer[4 * n + 1];
-            seq->convert_buf[n + 2 * width * height] = buffer[4 * n + 2];
-        }
-
-        /* Feed the buffers to FFmpeg */
-        buflist[0] = seq->convert_buf;
-        buflist[1] = seq->convert_buf + 2 * width * height;
-        buflist[2] = seq->convert_buf + width * height;
-        pitchlist[0] = pitchlist[1] = pitchlist[2] = width;
-    }
-    else
-    {
-        buflist[0] = buffer;
-        pitchlist[0] = 4 * width;
-    }
-
-    sws_scale(ff->sws_ctx, buflist, pitchlist, 0, height,
-              ff->frame->data, ff->frame->linesize);
-
-    bytes = avcodec_encode_video(ff->cod_ctx, ff->buf,
-                                 ff->buf_len, ff->frame);
-    if (bytes <= 0)
-        return 0;
-
-    av_init_packet(&packet);
-    if (ff->cod_ctx->coded_frame->pts != 0x8000000000000000LL)
-        packet.pts = av_rescale_q(ff->cod_ctx->coded_frame->pts,
-                                  ff->cod_ctx->time_base, ff->stream->time_base);
-    if (ff->cod_ctx->coded_frame->key_frame)
-        packet.flags |= PKT_FLAG_KEY;
-    packet.stream_index = 0;
-    packet.data = ff->buf;
-    packet.size = bytes;
-
-    if (av_interleaved_write_frame(ff->fmt_ctx, &packet) < 0)
-        return -1;
-#endif
-
-    return 0;
-}
-
-int pipi_close_sequence(pipi_sequence_t *seq)
-{
-#if defined USE_FFMPEG
-    ffmpeg_codec_t *ff = (ffmpeg_codec_t *)seq->codec_priv;
-
-    /* Finish the sequence */
-    if (ff->buf)
-    {
-        av_write_trailer(ff->fmt_ctx);
-    }
-
-    /* Close everything */
-    if (ff->buf)
-    {
-        av_free(ff->buf);
-        ff->buf = NULL;
-    }
-
-    if (ff->cod_ctx)
-    {
-        avcodec_close(ff->cod_ctx);
-        ff->cod_ctx = NULL;
-    }
-
-    if (ff->frame)
-    {
-        av_free(ff->frame->data[0]);
-        av_free(ff->frame);
-        ff->frame = NULL;
-    }
-
-    if (ff->fmt_ctx)
-    {
-        av_freep(&ff->fmt_ctx->streams[0]->codec);
-        ff->codec = NULL;
-
-        av_freep(&ff->fmt_ctx->streams[0]);
-        ff->stream = NULL;
-
-        if (!(ff->fmt_ctx->flags & AVFMT_NOFILE) && ff->fmt_ctx->pb)
-            url_fclose(ff->fmt_ctx->pb);
-
-        av_free(ff->fmt_ctx);
-        ff->fmt_ctx = NULL;
-    }
-
-    if (ff->sws_ctx)
-    {
-        sws_freeContext(ff->sws_ctx);
-        ff->sws_ctx = NULL;
-        ff->src_width = ff->src_height = 0;
-    }
-
-    free(ff);
-    free(seq);
-#endif
-
-    return 0;
-}
diff --git a/src/image/todo/transform.cpp b/src/image/todo/transform.cpp
deleted file mode 100644
index 65ddd61f..00000000
--- a/src/image/todo/transform.cpp
+++ /dev/null
@@ -1,250 +0,0 @@
-/*
- *  Lol Engine
- *
- *  Copyright © 2004—2008 Sam Hocevar <sam@hocevar.net>
- *
- *  This library is free software. It comes without any warranty, to
- *  the extent permitted by applicable law. You can redistribute it
- *  and/or modify it under the terms of the Do What the Fuck You Want
- *  to Public License, Version 2, as published by the WTFPL Task Force.
- *  See http://www.wtfpl.net/ for more details.
- */
-
-/*
- * transform.c: basic transformation functions
- */
-
-#include "config.h"
-
-#include <stdlib.h>
-#include <stdio.h>
-#include <string.h>
-#include <math.h>
-
-#include "pipi.h"
-#include "pipi-internals.h"
-
-pipi_image_t *pipi_hflip(pipi_image_t *src)
-{
-    pipi_image_t *dst;
-    pipi_pixels_t *srcp, *dstp;
-    float *srcdata, *dstdata;
-    int x, y, w, h, gray;
-
-    w = src->w;
-    h = src->h;
-
-    gray = (src->last_modified == PIPI_PIXELS_Y_F32);
-
-    srcp = gray ? pipi_get_pixels(src, PIPI_PIXELS_Y_F32)
-                : pipi_get_pixels(src, PIPI_PIXELS_RGBA_F32);
-    srcdata = (float *)srcp->pixels;
-
-    dst = pipi_new(w, h);
-    dstp = gray ? pipi_get_pixels(dst, PIPI_PIXELS_Y_F32)
-                : pipi_get_pixels(dst, PIPI_PIXELS_RGBA_F32);
-    dstdata = (float *)dstp->pixels;
-
-    for(y = 0; y < h; y++)
-    {
-        for(x = 0; x < w; x++)
-        {
-            if(gray)
-            {
-                dstdata[y * w + x] = srcdata[y * w + w - 1 - x];
-            }
-            else
-            {
-                dstdata[4 * (y * w + x)]
-                                = srcdata[4 * (y * w + w - 1 - x)];
-                dstdata[4 * (y * w + x) + 1]
-                                = srcdata[4 * (y * w + w - 1 - x) + 1];
-                dstdata[4 * (y * w + x) + 2]
-                                = srcdata[4 * (y * w + w - 1 - x) + 2];
-                dstdata[4 * (y * w + x) + 3]
-                                = srcdata[4 * (y * w + w - 1 - x) + 3];
-            }
-        }
-    }
-
-    return dst;
-}
-
-pipi_image_t *pipi_vflip(pipi_image_t *src)
-{
-    pipi_image_t *dst;
-    pipi_pixels_t *srcp, *dstp;
-    float *srcdata, *dstdata;
-    int y, w, h, gray;
-
-    w = src->w;
-    h = src->h;
-
-    gray = (src->last_modified == PIPI_PIXELS_Y_F32);
-
-    srcp = gray ? pipi_get_pixels(src, PIPI_PIXELS_Y_F32)
-                : pipi_get_pixels(src, PIPI_PIXELS_RGBA_F32);
-    srcdata = (float *)srcp->pixels;
-
-    dst = pipi_new(w, h);
-    dstp = gray ? pipi_get_pixels(dst, PIPI_PIXELS_Y_F32)
-                : pipi_get_pixels(dst, PIPI_PIXELS_RGBA_F32);
-    dstdata = (float *)dstp->pixels;
-
-    for(y = 0; y < h; y++)
-    {
-        if(gray)
-        {
-            memcpy(dstdata + y * w,
-                   srcdata + (h - 1 - y) * w,
-                   w * sizeof(*dstdata));
-        }
-        else
-        {
-            memcpy(dstdata + 4 * y * w,
-                   srcdata + 4 * (h - 1 - y) * w,
-                   4 * w * sizeof(*dstdata));
-        }
-    }
-
-    return dst;
-}
-
-pipi_image_t *pipi_rotate90(pipi_image_t *src)
-{
-    pipi_image_t *dst;
-    pipi_pixels_t *srcp, *dstp;
-    float *srcdata, *dstdata;
-    int x, y, w, h, gray;
-
-    w = src->w;
-    h = src->h;
-
-    gray = (src->last_modified == PIPI_PIXELS_Y_F32);
-
-    srcp = gray ? pipi_get_pixels(src, PIPI_PIXELS_Y_F32)
-                : pipi_get_pixels(src, PIPI_PIXELS_RGBA_F32);
-    srcdata = (float *)srcp->pixels;
-
-    dst = pipi_new(h, w);
-    dstp = gray ? pipi_get_pixels(dst, PIPI_PIXELS_Y_F32)
-                : pipi_get_pixels(dst, PIPI_PIXELS_RGBA_F32);
-    dstdata = (float *)dstp->pixels;
-
-    for(y = 0; y < h; y++)
-    {
-        for(x = 0; x < w; x++)
-        {
-            if(gray)
-            {
-                dstdata[x * h + y] = srcdata[y * w + w - 1 - x];
-            }
-            else
-            {
-                dstdata[4 * (x * h + y)]
-                    = srcdata[4 * (y * w + w - 1 - x)];
-                dstdata[4 * (x * h + y) + 1]
-                    = srcdata[4 * (y * w + w - 1 - x) + 1];
-                dstdata[4 * (x * h + y) + 2]
-                    = srcdata[4 * (y * w + w - 1 - x) + 2];
-                dstdata[4 * (x * h + y) + 3]
-                    = srcdata[4 * (y * w + w - 1 - x) + 3];
-            }
-        }
-    }
-
-    return dst;
-}
-
-pipi_image_t *pipi_rotate180(pipi_image_t *src)
-{
-    pipi_image_t *dst;
-    pipi_pixels_t *srcp, *dstp;
-    float *srcdata, *dstdata;
-    int x, y, w, h, gray;
-
-    w = src->w;
-    h = src->h;
-
-    gray = (src->last_modified == PIPI_PIXELS_Y_F32);
-
-    srcp = gray ? pipi_get_pixels(src, PIPI_PIXELS_Y_F32)
-                : pipi_get_pixels(src, PIPI_PIXELS_RGBA_F32);
-    srcdata = (float *)srcp->pixels;
-
-    dst = pipi_new(w, h);
-    dstp = gray ? pipi_get_pixels(dst, PIPI_PIXELS_Y_F32)
-                : pipi_get_pixels(dst, PIPI_PIXELS_RGBA_F32);
-    dstdata = (float *)dstp->pixels;
-
-    for(y = 0; y < h; y++)
-    {
-        for(x = 0; x < w; x++)
-        {
-            if(gray)
-            {
-                dstdata[y * w + x] = srcdata[(h - 1 - y) * w + (w - 1 - x)];
-            }
-            else
-            {
-                dstdata[4 * (y * w + x)]
-                     = srcdata[4 * ((h - 1 - y) * w + (w - 1 - x))];
-                dstdata[4 * (y * w + x) + 1]
-                     = srcdata[4 * ((h - 1 - y) * w + (w - 1 - x)) + 1];
-                dstdata[4 * (y * w + x) + 2]
-                     = srcdata[4 * ((h - 1 - y) * w + (w - 1 - x)) + 2];
-                dstdata[4 * (y * w + x) + 3]
-                     = srcdata[4 * ((h - 1 - y) * w + (w - 1 - x)) + 3];
-            }
-        }
-    }
-
-    return dst;
-}
-
-pipi_image_t *pipi_rotate270(pipi_image_t *src)
-{
-    pipi_image_t *dst;
-    pipi_pixels_t *srcp, *dstp;
-    float *srcdata, *dstdata;
-    int x, y, w, h, gray;
-
-    w = src->w;
-    h = src->h;
-
-    gray = (src->last_modified == PIPI_PIXELS_Y_F32);
-
-    srcp = gray ? pipi_get_pixels(src, PIPI_PIXELS_Y_F32)
-                : pipi_get_pixels(src, PIPI_PIXELS_RGBA_F32);
-    srcdata = (float *)srcp->pixels;
-
-    dst = pipi_new(h, w);
-    dstp = gray ? pipi_get_pixels(dst, PIPI_PIXELS_Y_F32)
-                : pipi_get_pixels(dst, PIPI_PIXELS_RGBA_F32);
-    dstdata = (float *)dstp->pixels;
-
-    for(y = 0; y < h; y++)
-    {
-        for(x = 0; x < w; x++)
-        {
-            if(gray)
-            {
-                dstdata[x * h + h - 1 - y] = srcdata[y * w + x];
-            }
-            else
-            {
-                dstdata[4 * (x * h + h - 1 - y)]
-                    = srcdata[4 * (y * w + x)];
-                dstdata[4 * (x * h + h - 1 - y) + 1]
-                    = srcdata[4 * (y * w + x) + 1];
-                dstdata[4 * (x * h + h - 1 - y) + 2]
-                    = srcdata[4 * (y * w + x) + 2];
-                dstdata[4 * (x * h + h - 1 - y) + 3]
-                    = srcdata[4 * (y * w + x) + 3];
-            }
-        }
-    }
-
-    return dst;
-}
-
diff --git a/src/image/todo/wave.cpp b/src/image/todo/wave.cpp
deleted file mode 100644
index 262b8b75..00000000
--- a/src/image/todo/wave.cpp
+++ /dev/null
@@ -1,175 +0,0 @@
-/*
- *  Lol Engine
- *
- *  Copyright © 2004—2008 Sam Hocevar <sam@hocevar.net>
- *
- *  This library is free software. It comes without any warranty, to
- *  the extent permitted by applicable law. You can redistribute it
- *  and/or modify it under the terms of the Do What the Fuck You Want
- *  to Public License, Version 2, as published by the WTFPL Task Force.
- *  See http://www.wtfpl.net/ for more details.
- */
-
-/*
- * wave.c: wave and other warping effects
- */
-
-#include "config.h"
-
-#include <stdlib.h>
-#include <stdio.h>
-#include <string.h>
-#include <math.h>
-#ifndef M_PI
-#   define M_PI 3.14159265358979323846
-#endif
-
-#include "pipi.h"
-#include "pipi-internals.h"
-
-#define BORDER 64
-
-pipi_image_t *pipi_wave(pipi_image_t *src, double dw, double dh,
-                        double d, double a)
-{
-    pipi_image_t *dst;
-    pipi_pixels_t *srcp, *dstp;
-    float *srcdata, *dstdata;
-    double sina, cosa;
-    int x, y, w, h, i, gray;
-
-    w = src->w;
-    h = src->h;
-
-    gray = (src->last_modified == PIPI_PIXELS_Y_F32);
-
-    srcp = gray ? pipi_get_pixels(src, PIPI_PIXELS_Y_F32)
-                : pipi_get_pixels(src, PIPI_PIXELS_RGBA_F32);
-    srcdata = (float *)srcp->pixels;
-
-    dst = pipi_new(w, h);
-    dstp = gray ? pipi_get_pixels(dst, PIPI_PIXELS_Y_F32)
-                : pipi_get_pixels(dst, PIPI_PIXELS_RGBA_F32);
-    dstdata = (float *)dstp->pixels;
-
-    sina = sin(a);
-    cosa = cos(a);
-
-    for(y = 0; y < h; y++)
-    {
-        for(x = 0; x < w; x++)
-        {
-            double angle = 2 * M_PI / dw * ((x - w / 2) * cosa
-                                             + (y - h / 2) * sina - d);
-            double displacement = dh * sin(angle);
-            double dx, dy;
-            int x2, y2;
-
-            dx = cosa * displacement;
-            dy = sina * displacement;
-
-            if(x < BORDER) dx = dx * x / BORDER;
-            if(x > w - 1 - BORDER) dx = dx * (w - 1 - x) / BORDER;
-            if(y < BORDER) dy = dy * y / BORDER;
-            if(y > h - 1 - BORDER) dy = dy * (h - 1 - y) / BORDER;
-
-            x2 = x + dx;
-            y2 = y + dy;
-
-            /* Just in case... */
-            if(x2 < 0) x2 = 0;
-            else if(x2 >= w) x2 = w - 1;
-
-            if(y2 < 0) y2 = 0;
-            else if(y2 >= h) y2 = h - 1;
-
-            if(gray)
-            {
-                dstdata[y * w + x] = srcdata[y2 * w + x2];
-            }
-            else
-            {
-                for(i = 0; i < 4; i++)
-                {
-                    dstdata[4 * (y * w + x) + i]
-                        = srcdata[4 * (y2 * w + x2) + i];
-                }
-            }
-        }
-    }
-
-    return dst;
-}
-
-pipi_image_t *pipi_sine(pipi_image_t *src, double dw, double dh,
-                        double d, double a)
-{
-    pipi_image_t *dst;
-    pipi_pixels_t *srcp, *dstp;
-    float *srcdata, *dstdata;
-    double sina, cosa;
-    int x, y, w, h, i, gray;
-
-    w = src->w;
-    h = src->h;
-
-    gray = (src->last_modified == PIPI_PIXELS_Y_F32);
-
-    srcp = gray ? pipi_get_pixels(src, PIPI_PIXELS_Y_F32)
-                : pipi_get_pixels(src, PIPI_PIXELS_RGBA_F32);
-    srcdata = (float *)srcp->pixels;
-
-    dst = pipi_new(w, h);
-    dstp = gray ? pipi_get_pixels(dst, PIPI_PIXELS_Y_F32)
-                : pipi_get_pixels(dst, PIPI_PIXELS_RGBA_F32);
-    dstdata = (float *)dstp->pixels;
-
-    sina = sin(a);
-    cosa = cos(a);
-
-    for(y = 0; y < h; y++)
-    {
-        for(x = 0; x < w; x++)
-        {
-            double angle = 2 * M_PI / dw * ((x - w / 2) * cosa
-                                             + (y - h / 2) * sina - d);
-            double displacement = dh * sin(angle);
-            double dx, dy;
-            int x2, y2;
-
-            dx = -sina * displacement;
-            dy = cosa * displacement;
-
-            if(x < BORDER) dx = dx * x / BORDER;
-            if(x > w - 1 - BORDER) dx = dx * (w - 1 - x) / BORDER;
-            if(y < BORDER) dy = dy * y / BORDER;
-            if(y > h - 1 - BORDER) dy = dy * (h - 1 - y) / BORDER;
-
-            x2 = x + dx;
-            y2 = y + dy;
-
-            /* Just in case... */
-            if(x2 < 0) x2 = 0;
-            else if(x2 >= w) x2 = w - 1;
-
-            if(y2 < 0) y2 = 0;
-            else if(y2 >= h) y2 = h - 1;
-
-            if(gray)
-            {
-                dstdata[y * w + x] = srcdata[y2 * w + x2];
-            }
-            else
-            {
-                for(i = 0; i < 4; i++)
-                {
-                    dstdata[4 * (y * w + x) + i]
-                        = srcdata[4 * (y2 * w + x2) + i];
-                }
-            }
-        }
-    }
-
-    return dst;
-}
-
diff --git a/src/light.cpp b/src/light.cpp
deleted file mode 100644
index c15928a4..00000000
--- a/src/light.cpp
+++ /dev/null
@@ -1,78 +0,0 @@
-//
-//  Lol Engine
-//
-//  Copyright © 2010—2019 Sam Hocevar <sam@hocevar.net>
-//
-//  Lol Engine is free software. It comes without any warranty, to
-//  the extent permitted by applicable law. You can redistribute it
-//  and/or modify it under the terms of the Do What the Fuck You Want
-//  to Public License, Version 2, as published by the WTFPL Task Force.
-//  See http://www.wtfpl.net/ for more details.
-//
-
-#include <lol/engine-internal.h>
-
-#include <cstring>
-#include <cstdlib>
-
-namespace lol
-{
-
-Light::Light()
-  : m_color(1.f),
-    m_type(LightType::Directional)
-{
-    m_gamegroup = tickable::group::game::light;
-    m_drawgroup = tickable::group::draw::light;
-
-    SetPosition(vec3::zero);
-}
-
-Light::~Light()
-{
-}
-
-void Light::SetType(LightType const &type)
-{
-    m_type = type;
-}
-
-LightType Light::GetType()
-{
-    return m_type;
-}
-
-void Light::SetPosition(vec3 const &pos)
-{
-    m_position = pos;
-}
-
-vec3 Light::GetPosition()
-{
-    return m_position;
-}
-
-void Light::SetColor(vec4 const &color)
-{
-    m_color = color;
-}
-
-vec4 Light::GetColor()
-{
-    return m_color;
-}
-
-void Light::tick_game(float seconds)
-{
-    WorldEntity::tick_game(seconds);
-}
-
-void Light::tick_draw(float seconds, Scene &scene)
-{
-    WorldEntity::tick_draw(seconds, scene);
-
-    scene.AddLight(this);
-}
-
-} /* namespace lol */
-
diff --git a/src/light.h b/src/light.h
deleted file mode 100644
index 13707ad5..00000000
--- a/src/light.h
+++ /dev/null
@@ -1,103 +0,0 @@
-//
-//  Lol Engine
-//
-//  Copyright © 2010—2018 Sam Hocevar <sam@hocevar.net>
-//
-//  Lol Engine is free software. It comes without any warranty, to
-//  the extent permitted by applicable law. You can redistribute it
-//  and/or modify it under the terms of the Do What the Fuck You Want
-//  to Public License, Version 2, as published by the WTFPL Task Force.
-//  See http://www.wtfpl.net/ for more details.
-//
-
-#pragma once
-
-//
-// The Light class
-// ---------------
-//
-
-#include "engine/worldentity.h"
-
-#include <cfloat> /* for FLT_MAX */
-#include <string>
-
-namespace lol
-{
-
-struct LightType
-{
-    enum Value
-    {
-        Directional = 0,
-        Point,
-
-        Max,
-    }
-    m_value;
-
-    std::string tostring()
-    {
-        switch (m_value)
-        {
-            case Directional:
-                return "<Directional>";
-            case Point:
-                return "<Point>";
-            default:
-                return "<UNDEFINED>";
-        }
-    }
-
-    inline LightType(float v)
-    {
-        float top = FLT_MAX;
-        int iv = Directional;
-        for (int i = 0; i < Max; ++i)
-        {
-            LightType lv = LightType(i);
-            float nv = lv.f();
-            float ntop = lol::abs(nv - v);
-            if (ntop < top)
-            {
-                top = ntop;
-                iv = i;
-            }
-        }
-        m_value = LightType(iv);
-    }
-    inline LightType(int v) : m_value((Value)v) {}
-    inline LightType(Value v) : m_value(v) {}
-    inline LightType() : m_value(Directional) {}
-    inline operator Value() { return m_value; }
-    inline float f() { return ((float)m_value / (float)Max); }
-};
-
-class Light : public WorldEntity
-{
-public:
-    Light();
-    ~Light();
-
-    std::string GetName() const { return "<light>"; }
-
-    void SetType(LightType const &type);
-    LightType GetType();
-
-    void SetColor(vec4 const &color);
-    vec4 GetColor();
-
-    void SetPosition(vec3 const &pos);
-    vec3 GetPosition();
-
-protected:
-    virtual void tick_game(float seconds);
-    virtual void tick_draw(float seconds, Scene &scene);
-
-private:
-    vec4        m_color;
-    LightType   m_type;
-};
-
-} /* namespace lol */
-
diff --git a/src/lol-core.vcxproj b/src/lol-core.vcxproj
deleted file mode 100644
index 74f0fc21..00000000
--- a/src/lol-core.vcxproj
+++ /dev/null
@@ -1,424 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <PropertyGroup Label="LolMacros">
-    <LolDir Condition="Exists('$(SolutionDir)\lol')">$(SolutionDir)\lol</LolDir>
-    <LolDir Condition="!Exists('$(SolutionDir)\lol')">$(SolutionDir)</LolDir>
-  </PropertyGroup>
-  <ItemGroup Label="ProjectConfigurations">
-    <ProjectConfiguration Include="Debug|NX64">
-      <Configuration>Debug</Configuration>
-      <Platform>NX64</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Debug|ORBIS">
-      <Configuration>Debug</Configuration>
-      <Platform>ORBIS</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Debug|Win32">
-      <Configuration>Debug</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Debug|x64">
-      <Configuration>Debug</Configuration>
-      <Platform>x64</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Release|NX64">
-      <Configuration>Release</Configuration>
-      <Platform>NX64</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Release|ORBIS">
-      <Configuration>Release</Configuration>
-      <Platform>ORBIS</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Release|Win32">
-      <Configuration>Release</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Release|x64">
-      <Configuration>Release</Configuration>
-      <Platform>x64</Platform>
-    </ProjectConfiguration>
-  </ItemGroup>
-  <PropertyGroup Label="Globals">
-    <ProjectGuid>{9E62F2FE-3408-4EAE-8238-FD84238CEEDA}</ProjectGuid>
-    <ConfigurationType>StaticLibrary</ConfigurationType>
-    <Keyword>Win32Proj</Keyword>
-  </PropertyGroup>
-  <Import Project="$(LolDir)\build\msbuild\lol.config.props" />
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
-    <UseDebugLibraries>true</UseDebugLibraries>
-    <CharacterSet>MultiByte</CharacterSet>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
-    <UseDebugLibraries>true</UseDebugLibraries>
-    <CharacterSet>MultiByte</CharacterSet>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|NX64'" Label="Configuration">
-    <UseDebugLibraries>true</UseDebugLibraries>
-    <CharacterSet>MultiByte</CharacterSet>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|ORBIS'" Label="Configuration">
-    <CharacterSet>MultiByte</CharacterSet>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
-    <UseDebugLibraries>false</UseDebugLibraries>
-    <WholeProgramOptimization>true</WholeProgramOptimization>
-    <CharacterSet>MultiByte</CharacterSet>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
-    <UseDebugLibraries>false</UseDebugLibraries>
-    <WholeProgramOptimization>true</WholeProgramOptimization>
-    <CharacterSet>MultiByte</CharacterSet>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|NX64'" Label="Configuration">
-    <UseDebugLibraries>false</UseDebugLibraries>
-    <WholeProgramOptimization>true</WholeProgramOptimization>
-    <CharacterSet>MultiByte</CharacterSet>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|ORBIS'" Label="Configuration">
-    <WholeProgramOptimization>true</WholeProgramOptimization>
-    <CharacterSet>MultiByte</CharacterSet>
-  </PropertyGroup>
-  <ImportGroup Label="ExtensionSettings">
-    <Import Project="$(LolDir)\build\msbuild\lolfx.props" />
-  </ImportGroup>
-  <ImportGroup Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(LolDir)\build\msbuild\lol.vars.props" />
-  </ImportGroup>
-  <PropertyGroup Label="UserMacros" />
-  <Import Project="$(LolDir)\build\msbuild\lol.rules.props" />
-  <ItemDefinitionGroup>
-    <ClCompile>
-      <PreprocessorDefinitions>_LIB;%(PreprocessorDefinitions);LOL_INPUT_V2</PreprocessorDefinitions>
-    </ClCompile>
-  </ItemDefinitionGroup>
-  <ItemGroup>
-    <ClCompile Include="3rdparty\imgui\imgui.cpp" />
-    <ClCompile Include="3rdparty\imgui\imgui_demo.cpp" />
-    <ClCompile Include="3rdparty\imgui\imgui_draw.cpp" />
-    <ClCompile Include="3rdparty\imgui\imgui_widgets.cpp" />
-    <ClCompile Include="application\application.cpp" />
-    <ClCompile Include="application\egl-app.cpp" />
-    <ClCompile Include="application\sdl-app.cpp">
-      <ExcludedFromBuild Condition="'$(enable_sdl)'=='no'">true</ExcludedFromBuild>
-    </ClCompile>
-    <ClCompile Include="audio\audio.cpp" />
-    <ClCompile Include="audio\sample.cpp" />
-    <ClCompile Include="camera.cpp" />
-    <ClCompile Include="base\assert.cpp" />
-    <ClCompile Include="base\features.cpp" />
-    <ClCompile Include="base\log.cpp" />
-    <ClCompile Include="base\string.cpp" />
-    <ClCompile Include="debug\fps.cpp" />
-    <ClCompile Include="debug\lines.cpp" />
-    <ClCompile Include="debug\record.cpp" />
-    <ClCompile Include="debug\stats.cpp" />
-    <ClCompile Include="easymesh\csgbsp.cpp" />
-    <ClCompile Include="easymesh\easymesh.cpp" />
-    <ClCompile Include="easymesh\easymeshbuild.cpp" />
-    <ClCompile Include="easymesh\easymeshcsg.cpp" />
-    <ClCompile Include="easymesh\easymeshcursor.cpp" />
-    <ClCompile Include="easymesh\easymeshinternal.cpp" />
-    <ClCompile Include="easymesh\easymeshlua.cpp" />
-    <ClCompile Include="easymesh\easymeshprimitive.cpp" />
-    <ClCompile Include="easymesh\easymeshrender.cpp" />
-    <ClCompile Include="easymesh\easymeshtransform.cpp" />
-    <ClCompile Include="engine\entity.cpp" />
-    <ClCompile Include="engine\tickable.cpp" />
-    <ClCompile Include="engine\ticker.cpp" />
-    <ClCompile Include="engine\world.cpp" />
-    <ClCompile Include="engine\worldentity.cpp" />
-    <ClCompile Include="emitter.cpp" />
-    <ClCompile Include="font.cpp" />
-    <ClCompile Include="gpu\debug.cpp" />
-    <ClCompile Include="gpu\framebuffer.cpp" />
-    <ClCompile Include="gpu\indexbuffer.cpp" />
-    <ClCompile Include="gpu\lolfx.cpp" />
-    <ClCompile Include="gpu\rendercontext.cpp" />
-    <ClCompile Include="gpu\renderer.cpp" />
-    <ClCompile Include="gpu\shader.cpp" />
-    <ClCompile Include="gpu\texture.cpp" />
-    <ClCompile Include="gpu\vertexbuffer.cpp" />
-    <ClCompile Include="gradient.cpp" />
-    <ClCompile Include="image\codec\android-image.cpp">
-      <ExcludedFromBuild>true</ExcludedFromBuild>
-    </ClCompile>
-    <ClCompile Include="image\codec\dummy-image.cpp" />
-    <ClCompile Include="image\codec\gdiplus-image.cpp" />
-    <ClCompile Include="image\codec\ios-image.cpp">
-      <ExcludedFromBuild>true</ExcludedFromBuild>
-    </ClCompile>
-    <ClCompile Include="image\codec\oric-image.cpp" />
-    <ClCompile Include="image\codec\sdl-image.cpp" />
-    <ClCompile Include="image\codec\zed-image.cpp" />
-    <ClCompile Include="image\codec\zed-palette-image.cpp" />
-    <ClCompile Include="image\color\cie1931.cpp" />
-    <ClCompile Include="image\color\color.cpp" />
-    <ClCompile Include="image\filter\colors.cpp" />
-    <ClCompile Include="image\filter\convolution.cpp" />
-    <ClCompile Include="image\filter\dilate.cpp" />
-    <ClCompile Include="image\filter\median.cpp" />
-    <ClCompile Include="image\filter\yuv.cpp" />
-    <ClCompile Include="image\dither\dbs.cpp" />
-    <ClCompile Include="image\dither\ediff.cpp" />
-    <ClCompile Include="image\dither\ordered.cpp" />
-    <ClCompile Include="image\dither\ostromoukhov.cpp" />
-    <ClCompile Include="image\dither\random.cpp" />
-    <ClCompile Include="image\crop.cpp" />
-    <ClCompile Include="image\combine.cpp" />
-    <ClCompile Include="image\image.cpp" />
-    <ClCompile Include="image\kernel.cpp" />
-    <ClCompile Include="image\movie.cpp" />
-    <ClCompile Include="image\noise.cpp" />
-    <ClCompile Include="image\pixel.cpp" />
-    <ClCompile Include="image\resample.cpp" />
-    <ClCompile Include="image\resource.cpp" />
-    <ClCompile Include="light.cpp" />
-    <ClCompile Include="lolua\baselua.cpp" />
-    <ClCompile Include="math\geometry.cpp" />
-    <ClCompile Include="math\half.cpp" />
-    <ClCompile Include="math\matrix.cpp" />
-    <ClCompile Include="math\real.cpp" />
-    <ClCompile Include="math\transform.cpp" />
-    <ClCompile Include="math\vector.cpp" />
-    <ClCompile Include="mesh\mesh.cpp" />
-    <ClCompile Include="mesh\primitivemesh.cpp" />
-    <ClCompile Include="messageservice.cpp" />
-    <ClCompile Include="net\http.cpp" />
-    <ClCompile Include="platform.cpp" />
-    <ClCompile Include="private\nx\nx-app.cpp">
-      <ExcludedFromBuild Condition="'$(Platform)'!='NX64'">true</ExcludedFromBuild>
-    </ClCompile>
-    <ClCompile Include="private\nx\nx-audio.cpp">
-      <ExcludedFromBuild Condition="'$(Platform)'!='NX64'">true</ExcludedFromBuild>
-    </ClCompile>
-    <ClCompile Include="private\nx\nx-input.cpp">
-      <ExcludedFromBuild Condition="'$(Platform)'!='NX64'">true</ExcludedFromBuild>
-    </ClCompile>
-    <ClCompile Include="private\nx\nx-log.cpp">
-      <ExcludedFromBuild Condition="'$(Platform)'!='NX64'">true</ExcludedFromBuild>
-    </ClCompile>
-    <ClCompile Include="profiler.cpp" />
-    <ClCompile Include="scene.cpp" />
-    <ClCompile Include="sprite.cpp" />
-    <ClCompile Include="sys\file.cpp" />
-    <ClCompile Include="sys\getopt.cpp" />
-    <ClCompile Include="sys\hacks.cpp" />
-    <ClCompile Include="sys\init.cpp" />
-    <ClCompile Include="text.cpp" />
-    <ClCompile Include="textureimage.cpp" />
-    <ClCompile Include="tileset.cpp" />
-    <ClCompile Include="ui\d3d9-input.cpp" />
-    <ClCompile Include="ui\gui.cpp" />
-    <ClCompile Include="ui\input.cpp" />
-    <ClCompile Include="ui\sdl-input.cpp">
-      <ExcludedFromBuild Condition="'$(enable_sdl)'=='no'">true</ExcludedFromBuild>
-    </ClCompile>
-    <ClCompile Include="video.cpp" />
-  </ItemGroup>
-  <ItemGroup>
-    <ClInclude Include="application\application.h" />
-    <ClInclude Include="application\egl-app.h" />
-    <ClInclude Include="application\sdl-app.h">
-      <ExcludedFromBuild Condition="'$(enable_sdl)'=='no'">true</ExcludedFromBuild>
-    </ClInclude>
-    <ClInclude Include="camera.h" />
-    <ClInclude Include="commandstack.h" />
-    <ClInclude Include="debug\fps.h" />
-    <ClInclude Include="debug\record.h" />
-    <ClInclude Include="debug\stats.h" />
-    <ClInclude Include="easymesh\csgbsp.h" />
-    <ClInclude Include="easymesh\easymesh.h" />
-    <ClInclude Include="easymesh\easymeshbuild.h" />
-    <ClInclude Include="easymesh\easymeshlua.h" />
-    <ClInclude Include="easymesh\easymeshrender.h" />
-    <ClInclude Include="emitter.h" />
-    <ClInclude Include="engine\entity.h" />
-    <ClInclude Include="engine\ticker.h" />
-    <ClInclude Include="engine\worldentity.h" />
-    <ClInclude Include="engine\world.h" />
-    <ClInclude Include="font.h" />
-    <ClInclude Include="gradient.h" />
-    <ClInclude Include="image\image-private.h" />
-    <ClInclude Include="image\resource-private.h" />
-    <ClInclude Include="light.h" />
-    <ClInclude Include="loldebug.h" />
-    <ClInclude Include="lolgl.h" />
-    <ClInclude Include="lolua\baselua.h" />
-    <ClInclude Include="lol\algorithm\aabb_tree.h" />
-    <ClInclude Include="lol\algorithm\all.h" />
-    <ClInclude Include="lol\algorithm\portal.h" />
-    <ClInclude Include="lol\algorithm\sort.h" />
-    <ClInclude Include="lol\audio\all.h" />
-    <ClInclude Include="lol\audio\audio.h" />
-    <ClInclude Include="lol\audio\sample.h" />
-    <ClInclude Include="lol\base\all.h" />
-    <ClInclude Include="lol\base\array.h" />
-    <ClInclude Include="lol\base\assert.h" />
-    <ClInclude Include="lol\base\enum.h" />
-    <ClInclude Include="lol\base\features.h" />
-    <ClInclude Include="lol\base\log.h" />
-    <ClInclude Include="lol\base\map.h" />
-    <ClInclude Include="lol\base\string.h" />
-    <ClInclude Include="lol\base\types.h" />
-    <ClInclude Include="lol\base\tuple.h" />
-    <ClInclude Include="lol\debug\all.h" />
-    <ClInclude Include="lol\debug\lines.h" />
-    <ClInclude Include="lol\engine\all.h" />
-    <ClInclude Include="lol\engine\tickable.h" />
-    <ClInclude Include="lol\engine.h" />
-    <ClInclude Include="lol\engine-internal.h" />
-    <ClInclude Include="lol\extras.h" />
-    <ClInclude Include="lol\gpu\all.h" />
-    <ClInclude Include="lol\gpu\debug.h" />
-    <ClInclude Include="lol\gpu\framebuffer.h" />
-    <ClInclude Include="lol\gpu\indexbuffer.h" />
-    <ClInclude Include="lol\gpu\lolfx.h" />
-    <ClInclude Include="lol\gpu\rendercontext.h" />
-    <ClInclude Include="lol\gpu\renderer.h" />
-    <ClInclude Include="lol\gpu\shader.h" />
-    <ClInclude Include="lol\gpu\texture.h" />
-    <ClInclude Include="lol\gpu\vertexbuffer.h" />
-    <ClInclude Include="lol\image\all.h" />
-    <ClInclude Include="lol\image\color.h" />
-    <ClInclude Include="lol\image\image.h" />
-    <ClInclude Include="lol\image\movie.h" />
-    <ClInclude Include="lol\image\pixel.h" />
-    <ClInclude Include="lol\image\resource.h" />
-    <ClInclude Include="lol\lua.h" />
-    <ClInclude Include="lol\math\all.h" />
-    <ClInclude Include="lol\math\arraynd.h" />
-    <ClInclude Include="lol\math\bigint.h" />
-    <ClInclude Include="lol\math\constants.h" />
-    <ClInclude Include="lol\math\functions.h" />
-    <ClInclude Include="lol\math\geometry.h" />
-    <ClInclude Include="lol\math\half.h" />
-    <ClInclude Include="lol\math\interp.h" />
-    <ClInclude Include="lol\math\matrix.h" />
-    <ClInclude Include="lol\math\noise\gradient.h" />
-    <ClInclude Include="lol\math\noise\perlin.h" />
-    <ClInclude Include="lol\math\noise\simplex.h" />
-    <ClInclude Include="lol\math\ops.h" />
-    <ClInclude Include="lol\math\polynomial.h" />
-    <ClInclude Include="lol\math\rand.h" />
-    <ClInclude Include="lol\math\real.h" />
-    <ClInclude Include="lol\math\transform.h" />
-    <ClInclude Include="lol\math\vector.h" />
-    <ClInclude Include="lol\net\all.h" />
-    <ClInclude Include="lol\net\http.h" />
-    <ClInclude Include="lol\public.h" />
-    <ClInclude Include="lol\sys\all.h" />
-    <ClInclude Include="lol\sys\file.h" />
-    <ClInclude Include="lol\sys\getopt.h" />
-    <ClInclude Include="lol\sys\init.h" />
-    <ClInclude Include="lol\sys\thread.h" />
-    <ClInclude Include="lol\sys\timer.h" />
-    <ClInclude Include="mesh\mesh.h" />
-    <ClInclude Include="mesh\primitivemesh.h" />
-    <ClInclude Include="messageservice.h" />
-    <ClInclude Include="numeric.h" />
-    <ClInclude Include="platform.h" />
-    <ClInclude Include="private\nx\nx-app.h">
-      <ExcludedFromBuild Condition="'$(Platform)'!='NX64'">true</ExcludedFromBuild>
-    </ClInclude>
-    <ClInclude Include="private\nx\nx-input.h">
-      <ExcludedFromBuild Condition="'$(Platform)'!='NX64'">true</ExcludedFromBuild>
-    </ClInclude>
-    <ClInclude Include="private\nx\nx-log.h">
-      <ExcludedFromBuild Condition="'$(Platform)'!='NX64'">true</ExcludedFromBuild>
-    </ClInclude>
-    <ClInclude Include="profiler.h" />
-    <ClInclude Include="scene.h" />
-    <ClInclude Include="sprite.h" />
-    <ClInclude Include="text.h" />
-    <ClInclude Include="textureimage-private.h" />
-    <ClInclude Include="textureimage.h" />
-    <ClInclude Include="tileset.h" />
-    <ClInclude Include="ui\buttons.inc" />
-    <ClInclude Include="ui\d3d9-input.h" />
-    <ClInclude Include="ui\gui.h" />
-    <ClInclude Include="ui\input.h" />
-    <ClInclude Include="ui\keys.inc" />
-    <ClInclude Include="ui\sdl-input.h">
-      <ExcludedFromBuild Condition="'$(enable_sdl)'=='no'">true</ExcludedFromBuild>
-    </ClInclude>
-    <ClInclude Include="utils.h" />
-    <ClInclude Include="video.h" />
-  </ItemGroup>
-  <ItemGroup>
-    <LolFxCompile Include="easymesh\shiny.lolfx" />
-    <LolFxCompile Include="easymesh\shinydebuglighting.lolfx" />
-    <LolFxCompile Include="easymesh\shinydebugnormal.lolfx" />
-    <LolFxCompile Include="easymesh\shinydebugUV.lolfx" />
-    <LolFxCompile Include="easymesh\shinydebugwireframe.lolfx" />
-    <LolFxCompile Include="easymesh\shinyflat.lolfx" />
-    <LolFxCompile Include="easymesh\shiny_SK.lolfx" />
-    <LolFxCompile Include="gpu\blit.lolfx" />
-    <LolFxCompile Include="gpu\default-material.lolfx" />
-    <LolFxCompile Include="gpu\empty-material.lolfx" />
-    <LolFxCompile Include="gpu\line.lolfx" />
-    <LolFxCompile Include="gpu\palette.lolfx" />
-    <LolFxCompile Include="gpu\postprocess.lolfx" />
-    <LolFxCompile Include="gpu\test-material.lolfx" />
-    <LolFxCompile Include="gpu\tile.lolfx" />
-    <LolFxCompile Include="gradient.lolfx" />
-  </ItemGroup>
-  <ItemGroup>
-    <CopyFileToFolders Condition="'$(enable_sdl)'!='no'" Include="$(SdlLibDir)\SDL2.dll">
-      <FileType>Document</FileType>
-    </CopyFileToFolders>
-    <CopyFileToFolders Condition="'$(enable_sdl)'!='no'" Include="$(SdlImageLibDir)\libjpeg-9.dll">
-      <FileType>Document</FileType>
-    </CopyFileToFolders>
-    <CopyFileToFolders Condition="'$(enable_sdl)'!='no'" Include="$(SdlImageLibDir)\libpng16-16.dll">
-      <FileType>Document</FileType>
-    </CopyFileToFolders>
-    <CopyFileToFolders Condition="'$(enable_sdl)'!='no'" Include="$(SdlImageLibDir)\libtiff-5.dll">
-      <FileType>Document</FileType>
-    </CopyFileToFolders>
-    <CopyFileToFolders Condition="'$(enable_sdl)'!='no'" Include="$(SdlImageLibDir)\libwebp-7.dll">
-      <FileType>Document</FileType>
-    </CopyFileToFolders>
-    <CopyFileToFolders Condition="'$(enable_sdl)'!='no'" Include="$(SdlImageLibDir)\SDL2_image.dll">
-      <FileType>Document</FileType>
-    </CopyFileToFolders>
-    <CopyFileToFolders Condition="'$(enable_sdl)'!='no'" Include="$(SdlImageLibDir)\zlib1.dll">
-      <FileType>Document</FileType>
-    </CopyFileToFolders>
-    <CopyFileToFolders Condition="'$(enable_sdl)'!='no'" Include="$(SdlMixerLibDir)\libFLAC-8.dll">
-      <FileType>Document</FileType>
-    </CopyFileToFolders>
-    <CopyFileToFolders Condition="'$(enable_sdl)'!='no'" Include="$(SdlMixerLibDir)\libmodplug-1.dll">
-      <FileType>Document</FileType>
-    </CopyFileToFolders>
-    <CopyFileToFolders Condition="'$(enable_sdl)'!='no'" Include="$(SdlMixerLibDir)\libmpg123-0.dll">
-      <FileType>Document</FileType>
-    </CopyFileToFolders>
-    <CopyFileToFolders Condition="'$(enable_sdl)'!='no'" Include="$(SdlMixerLibDir)\libogg-0.dll">
-      <FileType>Document</FileType>
-    </CopyFileToFolders>
-    <CopyFileToFolders Condition="'$(enable_sdl)'!='no'" Include="$(SdlMixerLibDir)\libopus-0.dll">
-      <FileType>Document</FileType>
-    </CopyFileToFolders>
-    <CopyFileToFolders Condition="'$(enable_sdl)'!='no'" Include="$(SdlMixerLibDir)\libopusfile-0.dll">
-      <FileType>Document</FileType>
-    </CopyFileToFolders>
-    <CopyFileToFolders Condition="'$(enable_sdl)'!='no'" Include="$(SdlMixerLibDir)\libvorbis-0.dll">
-      <FileType>Document</FileType>
-    </CopyFileToFolders>
-    <CopyFileToFolders Condition="'$(enable_sdl)'!='no'" Include="$(SdlMixerLibDir)\libvorbisfile-3.dll">
-      <FileType>Document</FileType>
-    </CopyFileToFolders>
-    <CopyFileToFolders Condition="'$(enable_sdl)'!='no'" Include="$(SdlMixerLibDir)\SDL2_mixer.dll">
-      <FileType>Document</FileType>
-    </CopyFileToFolders>
-    <None Include="Makefile.am">
-      <ExcludedFromBuild>true</ExcludedFromBuild>
-    </None>
-  </ItemGroup>
-  <Import Project="$(LolDir)\build\msbuild\lol-bullet.props" />
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
-  <ImportGroup Label="ExtensionTargets">
-    <Import Project="$(LolDir)\build\msbuild\lolfx.targets" />
-  </ImportGroup>
-</Project>
\ No newline at end of file
diff --git a/src/lol-core.vcxproj.filters b/src/lol-core.vcxproj.filters
deleted file mode 100644
index 3f37d0d7..00000000
--- a/src/lol-core.vcxproj.filters
+++ /dev/null
@@ -1,791 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <ItemGroup>
-    <ClCompile Include="application\application.cpp">
-      <Filter>application</Filter>
-    </ClCompile>
-    <ClCompile Include="application\egl-app.cpp">
-      <Filter>application</Filter>
-    </ClCompile>
-    <ClCompile Include="application\sdl-app.cpp">
-      <Filter>application</Filter>
-    </ClCompile>
-    <ClCompile Include="camera.cpp" />
-    <ClCompile Include="base\assert.cpp">
-      <Filter>base</Filter>
-    </ClCompile>
-    <ClCompile Include="base\features.cpp">
-      <Filter>base</Filter>
-    </ClCompile>
-    <ClCompile Include="base\log.cpp">
-      <Filter>base</Filter>
-    </ClCompile>
-    <ClCompile Include="base\string.cpp">
-      <Filter>base</Filter>
-    </ClCompile>
-    <ClCompile Include="debug\fps.cpp">
-      <Filter>debug</Filter>
-    </ClCompile>
-    <ClCompile Include="debug\lines.cpp">
-      <Filter>debug</Filter>
-    </ClCompile>
-    <ClCompile Include="debug\record.cpp">
-      <Filter>debug</Filter>
-    </ClCompile>
-    <ClCompile Include="debug\stats.cpp">
-      <Filter>debug</Filter>
-    </ClCompile>
-    <ClCompile Include="easymesh\csgbsp.cpp">
-      <Filter>easymesh</Filter>
-    </ClCompile>
-    <ClCompile Include="easymesh\easymesh.cpp">
-      <Filter>easymesh</Filter>
-    </ClCompile>
-    <ClCompile Include="easymesh\easymeshbuild.cpp">
-      <Filter>easymesh</Filter>
-    </ClCompile>
-    <ClCompile Include="easymesh\easymeshcsg.cpp">
-      <Filter>easymesh</Filter>
-    </ClCompile>
-    <ClCompile Include="easymesh\easymeshcursor.cpp">
-      <Filter>easymesh</Filter>
-    </ClCompile>
-    <ClCompile Include="easymesh\easymeshinternal.cpp">
-      <Filter>easymesh</Filter>
-    </ClCompile>
-    <ClCompile Include="easymesh\easymeshlua.cpp">
-      <Filter>easymesh</Filter>
-    </ClCompile>
-    <ClCompile Include="easymesh\easymeshprimitive.cpp">
-      <Filter>easymesh</Filter>
-    </ClCompile>
-    <ClCompile Include="easymesh\easymeshrender.cpp">
-      <Filter>easymesh</Filter>
-    </ClCompile>
-    <ClCompile Include="easymesh\easymeshtransform.cpp">
-      <Filter>easymesh</Filter>
-    </ClCompile>
-    <ClCompile Include="engine\entity.cpp">
-      <Filter>engine</Filter>
-    </ClCompile>
-    <ClCompile Include="engine\tickable.cpp">
-      <Filter>engine</Filter>
-    </ClCompile>
-    <ClCompile Include="engine\ticker.cpp">
-      <Filter>engine</Filter>
-    </ClCompile>
-    <ClCompile Include="engine\world.cpp">
-      <Filter>engine</Filter>
-    </ClCompile>
-    <ClCompile Include="engine\worldentity.cpp">
-      <Filter>engine</Filter>
-    </ClCompile>
-    <ClCompile Include="emitter.cpp" />
-    <ClCompile Include="font.cpp" />
-    <ClCompile Include="gpu\debug.cpp">
-      <Filter>gpu</Filter>
-    </ClCompile>
-    <ClCompile Include="gpu\framebuffer.cpp">
-      <Filter>gpu</Filter>
-    </ClCompile>
-    <ClCompile Include="gpu\indexbuffer.cpp">
-      <Filter>gpu</Filter>
-    </ClCompile>
-    <ClCompile Include="gpu\lolfx.cpp">
-      <Filter>gpu</Filter>
-    </ClCompile>
-    <ClCompile Include="gpu\rendercontext.cpp">
-      <Filter>gpu</Filter>
-    </ClCompile>
-    <ClCompile Include="gpu\renderer.cpp">
-      <Filter>gpu</Filter>
-    </ClCompile>
-    <ClCompile Include="gpu\shader.cpp">
-      <Filter>gpu</Filter>
-    </ClCompile>
-    <ClCompile Include="gpu\texture.cpp">
-      <Filter>gpu</Filter>
-    </ClCompile>
-    <ClCompile Include="gpu\vertexbuffer.cpp">
-      <Filter>gpu</Filter>
-    </ClCompile>
-    <ClCompile Include="gradient.cpp" />
-    <ClCompile Include="image\codec\android-image.cpp">
-      <Filter>image\codec</Filter>
-    </ClCompile>
-    <ClCompile Include="image\codec\dummy-image.cpp">
-      <Filter>image\codec</Filter>
-    </ClCompile>
-    <ClCompile Include="image\codec\gdiplus-image.cpp">
-      <Filter>image\codec</Filter>
-    </ClCompile>
-    <ClCompile Include="image\codec\ios-image.cpp">
-      <Filter>image\codec</Filter>
-    </ClCompile>
-    <ClCompile Include="image\codec\oric-image.cpp">
-      <Filter>image\codec</Filter>
-    </ClCompile>
-    <ClCompile Include="image\codec\sdl-image.cpp">
-      <Filter>image\codec</Filter>
-    </ClCompile>
-    <ClCompile Include="image\codec\zed-image.cpp">
-      <Filter>image\codec</Filter>
-    </ClCompile>
-    <ClCompile Include="image\codec\zed-palette-image.cpp">
-      <Filter>image\codec</Filter>
-    </ClCompile>
-    <ClCompile Include="image\color\cie1931.cpp">
-      <Filter>image\color</Filter>
-    </ClCompile>
-    <ClCompile Include="image\color\color.cpp">
-      <Filter>image\color</Filter>
-    </ClCompile>
-    <ClCompile Include="image\filter\colors.cpp">
-      <Filter>image\filter</Filter>
-    </ClCompile>
-    <ClCompile Include="image\filter\convolution.cpp">
-      <Filter>image\filter</Filter>
-    </ClCompile>
-    <ClCompile Include="image\filter\dilate.cpp">
-      <Filter>image\filter</Filter>
-    </ClCompile>
-    <ClCompile Include="image\filter\median.cpp">
-      <Filter>image\filter</Filter>
-    </ClCompile>
-    <ClCompile Include="image\filter\yuv.cpp">
-      <Filter>image\filter</Filter>
-    </ClCompile>
-    <ClCompile Include="image\dither\dbs.cpp">
-      <Filter>image\dither</Filter>
-    </ClCompile>
-    <ClCompile Include="image\dither\ediff.cpp">
-      <Filter>image\dither</Filter>
-    </ClCompile>
-    <ClCompile Include="image\dither\ordered.cpp">
-      <Filter>image\dither</Filter>
-    </ClCompile>
-    <ClCompile Include="image\dither\ostromoukhov.cpp">
-      <Filter>image\dither</Filter>
-    </ClCompile>
-    <ClCompile Include="image\dither\random.cpp">
-      <Filter>image\dither</Filter>
-    </ClCompile>
-    <ClCompile Include="image\crop.cpp">
-      <Filter>image</Filter>
-    </ClCompile>
-    <ClCompile Include="image\combine.cpp">
-      <Filter>image</Filter>
-    </ClCompile>
-    <ClCompile Include="image\image.cpp">
-      <Filter>image</Filter>
-    </ClCompile>
-    <ClCompile Include="image\kernel.cpp">
-      <Filter>image</Filter>
-    </ClCompile>
-    <ClCompile Include="image\movie.cpp">
-      <Filter>image</Filter>
-    </ClCompile>
-    <ClCompile Include="image\noise.cpp">
-      <Filter>image</Filter>
-    </ClCompile>
-    <ClCompile Include="image\pixel.cpp">
-      <Filter>image</Filter>
-    </ClCompile>
-    <ClCompile Include="image\resample.cpp">
-      <Filter>image</Filter>
-    </ClCompile>
-    <ClCompile Include="image\resource.cpp">
-      <Filter>image</Filter>
-    </ClCompile>
-    <ClCompile Include="light.cpp" />
-    <ClCompile Include="lolua\baselua.cpp">
-      <Filter>lolua</Filter>
-    </ClCompile>
-    <ClCompile Include="math\geometry.cpp">
-      <Filter>math</Filter>
-    </ClCompile>
-    <ClCompile Include="math\half.cpp">
-      <Filter>math</Filter>
-    </ClCompile>
-    <ClCompile Include="math\matrix.cpp">
-      <Filter>math</Filter>
-    </ClCompile>
-    <ClCompile Include="math\real.cpp">
-      <Filter>math</Filter>
-    </ClCompile>
-    <ClCompile Include="math\transform.cpp">
-      <Filter>math</Filter>
-    </ClCompile>
-    <ClCompile Include="math\vector.cpp">
-      <Filter>math</Filter>
-    </ClCompile>
-    <ClCompile Include="mesh\mesh.cpp">
-      <Filter>mesh</Filter>
-    </ClCompile>
-    <ClCompile Include="mesh\primitivemesh.cpp">
-      <Filter>mesh</Filter>
-    </ClCompile>
-    <ClCompile Include="messageservice.cpp" />
-    <ClCompile Include="net\http.cpp">
-      <Filter>net</Filter>
-    </ClCompile>
-    <ClCompile Include="platform.cpp" />
-    <ClCompile Include="profiler.cpp" />
-    <ClCompile Include="scene.cpp" />
-    <ClCompile Include="sprite.cpp" />
-    <ClCompile Include="sys\file.cpp">
-      <Filter>sys</Filter>
-    </ClCompile>
-    <ClCompile Include="sys\getopt.cpp">
-      <Filter>sys</Filter>
-    </ClCompile>
-    <ClCompile Include="sys\hacks.cpp">
-      <Filter>sys</Filter>
-    </ClCompile>
-    <ClCompile Include="sys\init.cpp">
-      <Filter>sys</Filter>
-    </ClCompile>
-    <ClCompile Include="text.cpp" />
-    <ClCompile Include="textureimage.cpp" />
-    <ClCompile Include="tileset.cpp" />
-    <ClCompile Include="ui\d3d9-input.cpp">
-      <Filter>ui</Filter>
-    </ClCompile>
-    <ClCompile Include="ui\gui.cpp">
-      <Filter>ui</Filter>
-    </ClCompile>
-    <ClCompile Include="ui\input.cpp">
-      <Filter>ui</Filter>
-    </ClCompile>
-    <ClCompile Include="ui\sdl-input.cpp">
-      <Filter>ui</Filter>
-    </ClCompile>
-    <ClCompile Include="video.cpp" />
-    <ClCompile Include="3rdparty\imgui\imgui.cpp" />
-    <ClCompile Include="3rdparty\imgui\imgui_demo.cpp" />
-    <ClCompile Include="3rdparty\imgui\imgui_draw.cpp" />
-    <ClCompile Include="3rdparty\imgui\imgui_widgets.cpp" />
-    <ClCompile Include="audio\audio.cpp" />
-    <ClCompile Include="audio\sample.cpp" />
-    <ClCompile Include="private\nx\nx-app.cpp" />
-    <ClCompile Include="private\nx\nx-audio.cpp" />
-    <ClCompile Include="private\nx\nx-input.cpp" />
-    <ClCompile Include="private\nx\nx-log.cpp" />
-  </ItemGroup>
-  <ItemGroup>
-    <ClInclude Include="application\application.h">
-      <Filter>application</Filter>
-    </ClInclude>
-    <ClInclude Include="application\egl-app.h">
-      <Filter>application</Filter>
-    </ClInclude>
-    <ClInclude Include="application\sdl-app.h">
-      <Filter>application</Filter>
-    </ClInclude>
-    <ClInclude Include="camera.h" />
-    <ClInclude Include="commandstack.h" />
-    <ClInclude Include="debug\fps.h">
-      <Filter>debug</Filter>
-    </ClInclude>
-    <ClInclude Include="debug\record.h">
-      <Filter>debug</Filter>
-    </ClInclude>
-    <ClInclude Include="debug\stats.h">
-      <Filter>debug</Filter>
-    </ClInclude>
-    <ClInclude Include="easymesh\csgbsp.h">
-      <Filter>easymesh</Filter>
-    </ClInclude>
-    <ClInclude Include="easymesh\easymesh.h">
-      <Filter>easymesh</Filter>
-    </ClInclude>
-    <ClInclude Include="easymesh\easymeshbuild.h">
-      <Filter>easymesh</Filter>
-    </ClInclude>
-    <ClInclude Include="easymesh\easymeshlua.h">
-      <Filter>easymesh</Filter>
-    </ClInclude>
-    <ClInclude Include="easymesh\easymeshrender.h">
-      <Filter>easymesh</Filter>
-    </ClInclude>
-    <ClInclude Include="emitter.h" />
-    <ClInclude Include="engine\entity.h">
-      <Filter>engine</Filter>
-    </ClInclude>
-    <ClInclude Include="engine\ticker.h">
-      <Filter>engine</Filter>
-    </ClInclude>
-    <ClInclude Include="engine\worldentity.h">
-      <Filter>engine</Filter>
-    </ClInclude>
-    <ClInclude Include="engine\world.h">
-      <Filter>engine</Filter>
-    </ClInclude>
-    <ClInclude Include="font.h" />
-    <ClInclude Include="gradient.h" />
-    <ClInclude Include="image\image-private.h">
-      <Filter>image</Filter>
-    </ClInclude>
-    <ClInclude Include="image\resource-private.h">
-      <Filter>image</Filter>
-    </ClInclude>
-    <ClInclude Include="light.h" />
-    <ClInclude Include="loldebug.h" />
-    <ClInclude Include="lolgl.h" />
-    <ClInclude Include="lolua\baselua.h">
-      <Filter>lolua</Filter>
-    </ClInclude>
-    <ClInclude Include="lol\algorithm\aabb_tree.h">
-      <Filter>lol\algorithm</Filter>
-    </ClInclude>
-    <ClInclude Include="lol\algorithm\all.h">
-      <Filter>lol\algorithm</Filter>
-    </ClInclude>
-    <ClInclude Include="lol\algorithm\portal.h">
-      <Filter>lol\algorithm</Filter>
-    </ClInclude>
-    <ClInclude Include="lol\algorithm\sort.h">
-      <Filter>lol\algorithm</Filter>
-    </ClInclude>
-    <ClInclude Include="lol\base\array.h">
-      <Filter>lol\base</Filter>
-    </ClInclude>
-    <ClInclude Include="lol\base\assert.h">
-      <Filter>lol\base</Filter>
-    </ClInclude>
-    <ClInclude Include="lol\base\enum.h">
-      <Filter>lol\base</Filter>
-    </ClInclude>
-    <ClInclude Include="lol\base\features.h">
-      <Filter>lol\base</Filter>
-    </ClInclude>
-    <ClInclude Include="lol\base\log.h">
-      <Filter>lol\base</Filter>
-    </ClInclude>
-    <ClInclude Include="lol\base\map.h">
-      <Filter>lol\base</Filter>
-    </ClInclude>
-    <ClInclude Include="lol\base\string.h">
-      <Filter>lol\base</Filter>
-    </ClInclude>
-    <ClInclude Include="lol\base\types.h">
-      <Filter>lol\base</Filter>
-    </ClInclude>
-    <ClInclude Include="lol\base\tuple.h">
-      <Filter>lol\base</Filter>
-    </ClInclude>
-    <ClInclude Include="lol\debug\all.h">
-      <Filter>lol\debug</Filter>
-    </ClInclude>
-    <ClInclude Include="lol\debug\lines.h">
-      <Filter>lol\debug</Filter>
-    </ClInclude>
-    <ClInclude Include="lol\engine\all.h">
-      <Filter>lol\engine</Filter>
-    </ClInclude>
-    <ClInclude Include="lol\engine\tickable.h">
-      <Filter>lol\engine</Filter>
-    </ClInclude>
-    <ClInclude Include="lol\engine.h">
-      <Filter>lol</Filter>
-    </ClInclude>
-    <ClInclude Include="lol\engine-internal.h">
-      <Filter>lol</Filter>
-    </ClInclude>
-    <ClInclude Include="lol\extras.h">
-      <Filter>lol</Filter>
-    </ClInclude>
-    <ClInclude Include="lol\gpu\all.h">
-      <Filter>lol\gpu</Filter>
-    </ClInclude>
-    <ClInclude Include="lol\gpu\debug.h">
-      <Filter>lol\gpu</Filter>
-    </ClInclude>
-    <ClInclude Include="lol\gpu\framebuffer.h">
-      <Filter>lol\gpu</Filter>
-    </ClInclude>
-    <ClInclude Include="lol\gpu\indexbuffer.h">
-      <Filter>lol\gpu</Filter>
-    </ClInclude>
-    <ClInclude Include="lol\gpu\lolfx.h">
-      <Filter>lol\gpu</Filter>
-    </ClInclude>
-    <ClInclude Include="lol\gpu\rendercontext.h">
-      <Filter>lol\gpu</Filter>
-    </ClInclude>
-    <ClInclude Include="lol\gpu\renderer.h">
-      <Filter>lol\gpu</Filter>
-    </ClInclude>
-    <ClInclude Include="lol\gpu\shader.h">
-      <Filter>lol\gpu</Filter>
-    </ClInclude>
-    <ClInclude Include="lol\gpu\texture.h">
-      <Filter>lol\gpu</Filter>
-    </ClInclude>
-    <ClInclude Include="lol\gpu\vertexbuffer.h">
-      <Filter>lol\gpu</Filter>
-    </ClInclude>
-    <ClInclude Include="lol\image\all.h">
-      <Filter>lol\image</Filter>
-    </ClInclude>
-    <ClInclude Include="lol\image\color.h">
-      <Filter>lol\image</Filter>
-    </ClInclude>
-    <ClInclude Include="lol\image\image.h">
-      <Filter>lol\image</Filter>
-    </ClInclude>
-    <ClInclude Include="lol\image\movie.h">
-      <Filter>lol\image</Filter>
-    </ClInclude>
-    <ClInclude Include="lol\image\pixel.h">
-      <Filter>lol\image</Filter>
-    </ClInclude>
-    <ClInclude Include="lol\image\resource.h">
-      <Filter>lol\image</Filter>
-    </ClInclude>
-    <ClInclude Include="lol\lua.h">
-      <Filter>lol</Filter>
-    </ClInclude>
-    <ClInclude Include="lol\math\arraynd.h">
-      <Filter>lol\math</Filter>
-    </ClInclude>
-    <ClInclude Include="lol\math\bigint.h">
-      <Filter>lol\math</Filter>
-    </ClInclude>
-    <ClInclude Include="lol\math\constants.h">
-      <Filter>lol\math</Filter>
-    </ClInclude>
-    <ClInclude Include="lol\math\functions.h">
-      <Filter>lol\math</Filter>
-    </ClInclude>
-    <ClInclude Include="lol\math\geometry.h">
-      <Filter>lol\math</Filter>
-    </ClInclude>
-    <ClInclude Include="lol\math\half.h">
-      <Filter>lol\math</Filter>
-    </ClInclude>
-    <ClInclude Include="lol\math\interp.h">
-      <Filter>lol\math</Filter>
-    </ClInclude>
-    <ClInclude Include="lol\math\matrix.h">
-      <Filter>lol\math</Filter>
-    </ClInclude>
-    <ClInclude Include="lol\math\noise\gradient.h">
-      <Filter>lol\math\noise</Filter>
-    </ClInclude>
-    <ClInclude Include="lol\math\noise\perlin.h">
-      <Filter>lol\math\noise</Filter>
-    </ClInclude>
-    <ClInclude Include="lol\math\noise\simplex.h">
-      <Filter>lol\math\noise</Filter>
-    </ClInclude>
-    <ClInclude Include="lol\math\ops.h">
-      <Filter>lol\math</Filter>
-    </ClInclude>
-    <ClInclude Include="lol\math\polynomial.h">
-      <Filter>lol\math</Filter>
-    </ClInclude>
-    <ClInclude Include="lol\math\rand.h">
-      <Filter>lol\math</Filter>
-    </ClInclude>
-    <ClInclude Include="lol\math\real.h">
-      <Filter>lol\math</Filter>
-    </ClInclude>
-    <ClInclude Include="lol\math\transform.h">
-      <Filter>lol\math</Filter>
-    </ClInclude>
-    <ClInclude Include="lol\math\vector.h">
-      <Filter>lol\math</Filter>
-    </ClInclude>
-    <ClInclude Include="lol\net\all.h">
-      <Filter>lol\net</Filter>
-    </ClInclude>
-    <ClInclude Include="lol\net\http.h">
-      <Filter>lol\net</Filter>
-    </ClInclude>
-    <ClInclude Include="lol\public.h">
-      <Filter>lol</Filter>
-    </ClInclude>
-    <ClInclude Include="lol\sys\all.h">
-      <Filter>lol\sys</Filter>
-    </ClInclude>
-    <ClInclude Include="lol\sys\file.h">
-      <Filter>lol\sys</Filter>
-    </ClInclude>
-    <ClInclude Include="lol\sys\getopt.h">
-      <Filter>lol\sys</Filter>
-    </ClInclude>
-    <ClInclude Include="lol\sys\init.h">
-      <Filter>lol\sys</Filter>
-    </ClInclude>
-    <ClInclude Include="lol\sys\thread.h">
-      <Filter>lol\sys</Filter>
-    </ClInclude>
-    <ClInclude Include="lol\sys\timer.h">
-      <Filter>lol\sys</Filter>
-    </ClInclude>
-    <ClInclude Include="mesh\mesh.h">
-      <Filter>mesh</Filter>
-    </ClInclude>
-    <ClInclude Include="mesh\primitivemesh.h">
-      <Filter>mesh</Filter>
-    </ClInclude>
-    <ClInclude Include="messageservice.h" />
-    <ClInclude Include="numeric.h" />
-    <ClInclude Include="platform.h" />
-    <ClInclude Include="profiler.h" />
-    <ClInclude Include="scene.h" />
-    <ClInclude Include="sprite.h" />
-    <ClInclude Include="text.h" />
-    <ClInclude Include="textureimage-private.h" />
-    <ClInclude Include="textureimage.h" />
-    <ClInclude Include="tileset.h" />
-    <ClInclude Include="ui\buttons.inc">
-      <Filter>ui</Filter>
-    </ClInclude>
-    <ClInclude Include="ui\d3d9-input.h">
-      <Filter>ui</Filter>
-    </ClInclude>
-    <ClInclude Include="ui\gui.h">
-      <Filter>ui</Filter>
-    </ClInclude>
-    <ClInclude Include="ui\input.h">
-      <Filter>ui</Filter>
-    </ClInclude>
-    <ClInclude Include="ui\keys.inc">
-      <Filter>ui</Filter>
-    </ClInclude>
-    <ClInclude Include="ui\sdl-input.h">
-      <Filter>ui</Filter>
-    </ClInclude>
-    <ClInclude Include="utils.h" />
-    <ClInclude Include="video.h" />
-    <ClInclude Include="lol\math\all.h">
-      <Filter>lol\math</Filter>
-    </ClInclude>
-    <ClInclude Include="lol\base\all.h">
-      <Filter>lol\base</Filter>
-    </ClInclude>
-    <ClInclude Include="lol\audio\sample.h" />
-    <ClInclude Include="lol\audio\all.h">
-      <Filter>lol\audio</Filter>
-    </ClInclude>
-    <ClInclude Include="lol\audio\audio.h">
-      <Filter>lol\audio</Filter>
-    </ClInclude>
-    <ClInclude Include="private\nx\nx-app.h" />
-    <ClInclude Include="private\nx\nx-input.h" />
-    <ClInclude Include="private\nx\nx-log.h" />
-  </ItemGroup>
-  <ItemGroup>
-    <LolFxCompile Include="easymesh\shiny.lolfx">
-      <Filter>easymesh</Filter>
-    </LolFxCompile>
-    <LolFxCompile Include="easymesh\shinydebuglighting.lolfx">
-      <Filter>easymesh</Filter>
-    </LolFxCompile>
-    <LolFxCompile Include="easymesh\shinydebugnormal.lolfx">
-      <Filter>easymesh</Filter>
-    </LolFxCompile>
-    <LolFxCompile Include="easymesh\shinydebugUV.lolfx">
-      <Filter>easymesh</Filter>
-    </LolFxCompile>
-    <LolFxCompile Include="easymesh\shinydebugwireframe.lolfx">
-      <Filter>easymesh</Filter>
-    </LolFxCompile>
-    <LolFxCompile Include="easymesh\shinyflat.lolfx">
-      <Filter>easymesh</Filter>
-    </LolFxCompile>
-    <LolFxCompile Include="easymesh\shiny_SK.lolfx">
-      <Filter>easymesh</Filter>
-    </LolFxCompile>
-    <LolFxCompile Include="gpu\blit.lolfx">
-      <Filter>gpu</Filter>
-    </LolFxCompile>
-    <LolFxCompile Include="gpu\default-material.lolfx">
-      <Filter>gpu</Filter>
-    </LolFxCompile>
-    <LolFxCompile Include="gpu\empty-material.lolfx">
-      <Filter>gpu</Filter>
-    </LolFxCompile>
-    <LolFxCompile Include="gpu\line.lolfx">
-      <Filter>gpu</Filter>
-    </LolFxCompile>
-    <LolFxCompile Include="gpu\palette.lolfx">
-      <Filter>gpu</Filter>
-    </LolFxCompile>
-    <LolFxCompile Include="gpu\postprocess.lolfx">
-      <Filter>gpu</Filter>
-    </LolFxCompile>
-    <LolFxCompile Include="gpu\test-material.lolfx">
-      <Filter>gpu</Filter>
-    </LolFxCompile>
-    <LolFxCompile Include="gpu\tile.lolfx">
-      <Filter>gpu</Filter>
-    </LolFxCompile>
-    <LolFxCompile Include="gradient.lolfx" />
-  </ItemGroup>
-  <ItemGroup>
-    <None Include="Makefile.am" />
-  </ItemGroup>
-  <ItemGroup>
-    <Filter Include="...">
-      <UniqueIdentifier>{3592ed6a-59d7-4a6d-be5a-c05cb5dab730}</UniqueIdentifier>
-    </Filter>
-    <Filter Include="application">
-      <UniqueIdentifier>{459e2b92-4e46-4f07-89f7-62b55c7a2797}</UniqueIdentifier>
-    </Filter>
-    <Filter Include="debug">
-      <UniqueIdentifier>{e056731c-5484-434a-965e-801c199c0366}</UniqueIdentifier>
-    </Filter>
-    <Filter Include="easymesh">
-      <UniqueIdentifier>{07117029-d79d-4d59-beec-691b00a97c8f}</UniqueIdentifier>
-    </Filter>
-    <Filter Include="external">
-      <UniqueIdentifier>{1079c1f3-b1f5-48c8-8196-3a8a1819f5b4}</UniqueIdentifier>
-    </Filter>
-    <Filter Include="gpu">
-      <UniqueIdentifier>{ec9b94fc-c716-4ef2-9c3b-c7f3447574b0}</UniqueIdentifier>
-    </Filter>
-    <Filter Include="image">
-      <UniqueIdentifier>{940329fb-d054-433a-ae30-b7f409790554}</UniqueIdentifier>
-    </Filter>
-    <Filter Include="image\codec">
-      <UniqueIdentifier>{123803f1-1722-4421-8245-098667654cda}</UniqueIdentifier>
-    </Filter>
-    <Filter Include="ui">
-      <UniqueIdentifier>{94992c0e-ebc5-4185-b766-323b06547dcf}</UniqueIdentifier>
-    </Filter>
-    <Filter Include="lol">
-      <UniqueIdentifier>{0edcf1a5-3c9c-4425-918c-aa2cbebc51c1}</UniqueIdentifier>
-    </Filter>
-    <Filter Include="lol\algorithm">
-      <UniqueIdentifier>{39f6f872-186f-48af-8e87-bcceb06b1b21}</UniqueIdentifier>
-    </Filter>
-    <Filter Include="lol\engine">
-      <UniqueIdentifier>{a20b47c1-a0f8-4a02-a7a8-6da2ccd8bb02}</UniqueIdentifier>
-    </Filter>
-    <Filter Include="lol\image">
-      <UniqueIdentifier>{f25b3187-b24c-469a-b038-5a968eaa83f6}</UniqueIdentifier>
-    </Filter>
-    <Filter Include="lol\math">
-      <UniqueIdentifier>{1e0b7a4c-425f-4d4f-945e-ba2ac9386ce0}</UniqueIdentifier>
-    </Filter>
-    <Filter Include="lol\math\noise">
-      <UniqueIdentifier>{97d023b5-9715-4f30-bacb-846d89025f5b}</UniqueIdentifier>
-    </Filter>
-    <Filter Include="math">
-      <UniqueIdentifier>{2caadbda-b9f1-446d-bbd2-55c959db342c}</UniqueIdentifier>
-    </Filter>
-    <Filter Include="mesh">
-      <UniqueIdentifier>{1eaa8df5-7a31-4358-a1e9-0e265de6ed49}</UniqueIdentifier>
-    </Filter>
-    <Filter Include="net">
-      <UniqueIdentifier>{0db6de04-6778-43ed-81c6-0ac49c0481f4}</UniqueIdentifier>
-    </Filter>
-    <Filter Include="lol\base">
-      <UniqueIdentifier>{e17b998c-d494-480b-ae29-5d1564f73327}</UniqueIdentifier>
-    </Filter>
-    <Filter Include="base">
-      <UniqueIdentifier>{606ea817-db84-40fe-be2e-8e5c864e39b2}</UniqueIdentifier>
-    </Filter>
-    <Filter Include="image\color">
-      <UniqueIdentifier>{73e4bc38-19e4-41d2-82e9-ebf22fa65f77}</UniqueIdentifier>
-    </Filter>
-    <Filter Include="lol\sys">
-      <UniqueIdentifier>{647eb922-e722-418a-91e9-9e2d53ff5a85}</UniqueIdentifier>
-    </Filter>
-    <Filter Include="lol\gpu">
-      <UniqueIdentifier>{514846bc-650a-4423-b35a-6ccb9a1f0edd}</UniqueIdentifier>
-    </Filter>
-    <Filter Include="sys">
-      <UniqueIdentifier>{1d945673-ee9a-48a7-9ee8-34338c5fefc1}</UniqueIdentifier>
-    </Filter>
-    <Filter Include="lol\debug">
-      <UniqueIdentifier>{01285b11-c6c7-4a9e-8dee-daa2c63901e4}</UniqueIdentifier>
-    </Filter>
-    <Filter Include="lol\net">
-      <UniqueIdentifier>{59f31039-b311-4ebf-a900-e0f7567eb636}</UniqueIdentifier>
-    </Filter>
-    <Filter Include="platform">
-      <UniqueIdentifier>{a11c55f8-8e10-4270-be24-38e8d4fcf589}</UniqueIdentifier>
-    </Filter>
-    <Filter Include="platform\sdl">
-      <UniqueIdentifier>{4089421f-2cc2-4036-a6b2-9df8a2f4efc8}</UniqueIdentifier>
-    </Filter>
-    <Filter Include="platform\xbox">
-      <UniqueIdentifier>{317cb5cc-5dcc-4e14-be90-40a125a2e2ec}</UniqueIdentifier>
-    </Filter>
-    <Filter Include="image\dither">
-      <UniqueIdentifier>{63e63eea-c96e-4d37-81f6-f3f17e18b751}</UniqueIdentifier>
-    </Filter>
-    <Filter Include="image\filter">
-      <UniqueIdentifier>{3f420a7d-0538-463a-925b-3f8968bf628e}</UniqueIdentifier>
-    </Filter>
-    <Filter Include="lolua">
-      <UniqueIdentifier>{25cc0513-ad71-4fbe-bd24-acc88aa66833}</UniqueIdentifier>
-    </Filter>
-    <Filter Include="tileset">
-      <UniqueIdentifier>{7fb4105d-4f17-4824-8d40-948553fdcde1}</UniqueIdentifier>
-    </Filter>
-    <Filter Include="engine">
-      <UniqueIdentifier>{3bd5fe6f-c9cd-45f3-98a9-958d86d415e8}</UniqueIdentifier>
-    </Filter>
-    <Filter Include="display">
-      <UniqueIdentifier>{869f0b25-469b-4b06-a2a2-325449fc868f}</UniqueIdentifier>
-    </Filter>
-    <Filter Include="lol\audio">
-      <UniqueIdentifier>{1c612ab2-418c-4cd4-a266-82023c21b915}</UniqueIdentifier>
-    </Filter>
-  </ItemGroup>
-  <ItemGroup>
-    <CopyFileToFolders Include="$(SdlMixerLibDir)\libFLAC-8.dll">
-      <Filter>external</Filter>
-    </CopyFileToFolders>
-    <CopyFileToFolders Include="$(SdlImageLibDir)\libjpeg-9.dll">
-      <Filter>external</Filter>
-    </CopyFileToFolders>
-    <CopyFileToFolders Include="$(SdlMixerLibDir)\libmodplug-1.dll">
-      <Filter>external</Filter>
-    </CopyFileToFolders>
-    <CopyFileToFolders Include="$(SdlMixerLibDir)\libmpg123-0.dll">
-      <Filter>external</Filter>
-    </CopyFileToFolders>
-    <CopyFileToFolders Include="$(SdlMixerLibDir)\libogg-0.dll">
-      <Filter>external</Filter>
-    </CopyFileToFolders>
-    <CopyFileToFolders Include="$(SdlMixerLibDir)\libopus-0.dll">
-      <Filter>external</Filter>
-    </CopyFileToFolders>
-    <CopyFileToFolders Include="$(SdlMixerLibDir)\libopusfile-0.dll">
-      <Filter>external</Filter>
-    </CopyFileToFolders>
-    <CopyFileToFolders Include="$(SdlImageLibDir)\libpng16-16.dll">
-      <Filter>external</Filter>
-    </CopyFileToFolders>
-    <CopyFileToFolders Include="$(SdlImageLibDir)\libtiff-5.dll">
-      <Filter>external</Filter>
-    </CopyFileToFolders>
-    <CopyFileToFolders Include="$(SdlMixerLibDir)\libvorbis-0.dll">
-      <Filter>external</Filter>
-    </CopyFileToFolders>
-    <CopyFileToFolders Include="$(SdlMixerLibDir)\libvorbisfile-3.dll">
-      <Filter>external</Filter>
-    </CopyFileToFolders>
-    <CopyFileToFolders Include="$(SdlImageLibDir)\libwebp-7.dll">
-      <Filter>external</Filter>
-    </CopyFileToFolders>
-    <CopyFileToFolders Include="$(SdlLibDir)\SDL2.dll">
-      <Filter>external</Filter>
-    </CopyFileToFolders>
-    <CopyFileToFolders Include="$(SdlImageLibDir)\SDL2_image.dll">
-      <Filter>external</Filter>
-    </CopyFileToFolders>
-    <CopyFileToFolders Include="$(SdlMixerLibDir)\SDL2_mixer.dll">
-      <Filter>external</Filter>
-    </CopyFileToFolders>
-    <CopyFileToFolders Include="$(SdlImageLibDir)\zlib1.dll">
-      <Filter>external</Filter>
-    </CopyFileToFolders>
-  </ItemGroup>
-</Project>
\ No newline at end of file
diff --git a/src/lol/algorithm/portal.h b/src/lol/algorithm/portal.h
deleted file mode 100644
index 619f609b..00000000
--- a/src/lol/algorithm/portal.h
+++ /dev/null
@@ -1,390 +0,0 @@
-//
-//  Lol Engine
-//
-//  Copyright © 2010—2015 Sam Hocevar <sam@hocevar.net>
-//            © 2013—2015 Benjamin “Touky” Huet <huet.benjamin@gmail.com>
-//
-//  Lol Engine is free software. It comes without any warranty, to
-//  the extent permitted by applicable law. You can redistribute it
-//  and/or modify it under the terms of the Do What the Fuck You Want
-//  to Public License, Version 2, as published by the WTFPL Task Force.
-//  See http://www.wtfpl.net/ for more details.
-//
-
-#pragma once
-
-#include <lol/base/array.h>
-#include <lol/debug/lines.h>
-#include <lol/image/color.h>
-
-#include <cfloat> /* for FLT_MAX */
-
-namespace lol
-{
-
-//------ PORTAL SYSTEM --------
-template <typename TE> class PortalRoom;
-template <typename TE> class PortalDoor;
-template <typename TE> class PortalSet;
-
-//--
-namespace Debug {
-template <typename TE, typename TV = void>
-void Draw(PortalDoor<TE>& port, vec4 color)
-{
-    vec3 points[4]; port.GetPoints(points);
-
-    // Draw normal
-    vec3 p = port.m_center + port.m_up * port.m_size.y * .5f;
-    Debug::DrawLine(p, p + port.m_normal, Color::red);
-    Debug::DrawLine(p, p + port.m_up, Color::green);
-    // Draw door
-    for (int l = 0; l < 4; l++)
-        Debug::DrawLine(points[l], points[(l + 1) % 4], color);
-    Debug::DrawLine(points[0], points[2], color);
-    Debug::DrawLine(points[1], points[3], color);
-}
-}
-
-//PortalDoor base class
-template <typename TE>
-class PortalDoor
-{
-    friend class PortalSet<TE>;
-    friend class PortalRoom<TE>;
-    friend void Debug::Draw<TE,void>(PortalDoor<TE>& port, vec4 color);
-
-private:
-    void Init()
-    {
-        m_center    = vec3::zero;
-        m_normal    = vec3::zero;
-        m_up        = vec3::zero;
-        m_size      = vec2::zero;
-
-        m_view      = mat4::identity;
-        m_proj      = mat4::identity;
-
-        m_rooms[0]  = nullptr;
-        m_rooms[1]  = nullptr;
-    }
-
-public:
-    //Normal portal
-    PortalDoor(vec3 center, vec3 normal, vec3 up, vec2 size)
-    {
-        Init();
-
-        m_center = center;
-        m_normal = normal;
-        m_up     = up;
-        m_size   = size;
-    }
-    //Camera  portal
-    PortalDoor(mat4 view, mat4 proj)
-    {
-        Init();
-
-        m_view = view;
-        m_proj = proj;
-    }
-    //D.Tor
-    ~PortalDoor()
-    {
-        ConnectRooms(nullptr, nullptr);
-    }
-
-    //Connect door to room
-    void ConnectRooms(class PortalRoom<TE>* front_room, class PortalRoom<TE>* back_room)
-    {
-        for (int i = 0; i < 2; i++)
-            if (m_rooms[i] != nullptr)
-                *m_rooms[i] >> this;
-
-        m_rooms[0] = back_room;
-        m_rooms[1] = front_room;
-
-        for (int i = 0; i < 2; i++)
-            if (m_rooms[i] != nullptr)
-               *m_rooms[i] << this;
-    }
-
-    //--
-    void DisconnectRoom(class PortalRoom<TE>* room)
-    {
-        for (int i = 0; i < 2; i++)
-            if (m_rooms[i] != nullptr && m_rooms[i] == room)
-                m_rooms[i] = nullptr;
-    }
-
-    //--
-    PortalRoom<TE>* GetRoom(bool front) { return m_rooms[(int)front]; }
-    PortalRoom<TE>* GetRoom(PortalRoom<TE>* room) { return (m_rooms[0] == room) ? m_rooms[1] : m_rooms[0]; }
-
-    //Get Four portal point
-    void GetPoints(vec3 *points) const
-    {
-        vec3 right = cross(m_normal, m_up);
-        points[0] = m_center + right * m_size.x *  .5f + m_up * m_size.y;
-        points[1] = m_center + right * m_size.x *  .5f;
-        points[2] = m_center + right * m_size.x * -.5f;
-        points[3] = m_center + right * m_size.x * -.5f + m_up * m_size.y;
-    }
-    //Builds the portal view proj.
-    //Returns false if portal is out of the view or points are on each others.
-    bool BuildViewProj(mat4 view, mat4 proj)
-    {
-        mat4 cam_mx = proj * view;
-        mat4 inv_proj_mx = inverse(proj);
-
-        // First: Check normal dot
-        if (lol::abs(dot(mat3(inverse(view)) * vec3(0.f, 0.f, 1.f), m_normal)) < .00001f)
-            return false;
-
-        // Second: convert to screen coordinates
-        vec3 port_2d[2] = { vec3(FLT_MAX), vec3(-FLT_MAX) };
-        vec3 door_points[4];
-        vec4 proj_p[4];
-
-        GetPoints(door_points);
-
-        for (int i = 0; i < 4; i++)
-        {
-            //W to S calculations
-            proj_p[i] = cam_mx * vec4(door_points[i], 1.f);
-            proj_p[i] /= proj_p[i].w;
-
-            //Clamp points within screen
-            port_2d[0] = lol::min(proj_p[i].xyz, port_2d[0]);
-            port_2d[1] = lol::max(proj_p[i].xyz, port_2d[1]);
-            port_2d[0] = vec3(lol::clamp(port_2d[0].xy, vec2(-1.f), vec2(1.f)), port_2d[0].z);
-            port_2d[1] = vec3(lol::clamp(port_2d[1].xy, vec2(-1.f), vec2(1.f)), port_2d[1].z);
-        }
-
-        //Quit if door not within the screen
-        for (int i = 0; i < 3; i++)
-            if (port_2d[0][i] == port_2d[1][i])
-                return false;
-
-        //Third: Convert back to view
-        ivec2 j[4] = { ivec2(0), ivec2(0, 1), ivec2(1), ivec2(1, 0) };
-        vec3 frust[2] = { vec3(FLT_MAX), vec3(-FLT_MAX) };
-        for (int i = 0; i < 5; i++)
-        {
-            int k = i % 4;
-            //world calculations
-            proj_p[k] = inv_proj_mx * vec4(port_2d[j[k].x].x, port_2d[j[k].y].y, (i<4)?(port_2d[0].z):(1.f), 1.f);
-            proj_p[k] /= proj_p[k].w;
-            proj_p[k].z = lol::abs(proj_p[k].z);
-
-            for (int h = 0; h < 3; h++)
-            {
-                if (i < 4 || h > 1)
-                {
-                    frust[0][h] = lol::min(frust[0][h], proj_p[k][h]);
-                    frust[1][h] = lol::max(frust[1][h], proj_p[k][h]);
-                }
-            }
-        }
-
-        //Fourth: Create frustum
-        m_proj = mat4::frustum(frust[0].x, frust[1].x, frust[0].y, frust[1].y, frust[0].z, frust[1].z);
-        m_view = view;
-
-        return true;
-    }
-
-    //View proj getter (doesn't check matrix validity)
-    mat4 GetViewProj() { return m_proj * m_view; }
-
-    //--
-    bool TestCollide(const vec3& point)
-    {
-        return TestPointVsFrustum(point, GetViewProj());
-    }
-
-    //--
-    bool TestCollide(const PortalDoor& door)
-    {
-        vec3 door_points[4];
-        vec3 res_points[4];
-        ivec3 pos_test = ivec3::zero;
-        bool is_in = false;
-
-        //Get points and test them on frustum
-        door.GetPoints(door_points);
-        for (int i = 0; i < 4; i++)
-        {
-            is_in = is_in || TestPointVsFrustum(door_points[i], GetViewProj(), &res_points[i]);
-
-            if (is_in)
-                return true;
-
-            //Add points on test stuff
-            pos_test += ivec3(lol::clamp(res_points[i], vec3(-1.1f), vec3(1.1f)));
-        }
-
-        return false;
-
-        //Check if at least one point is not on the same side as the others
-        for (int i = 0; i < 3; i++)
-            if (lol::abs(pos_test[i]) == 4)
-                return false;
-
-        return true;
-    }
-
-private:
-    mat4                        m_view;
-    mat4                        m_proj;
-    vec3                        m_center;
-    vec3                        m_normal;
-    vec3                        m_up;
-    vec2                        m_size;
-    PortalRoom<TE>*             m_rooms[2]; //0: Back, 1: Front
-};
-
-//--
-template <typename TE>
-class PortalRoom
-{
-    friend class PortalSet<TE>;
-    friend class PortalDoor<TE>;
-
-public:
-    PortalRoom(TE* element = nullptr)
-    {
-        m_element = element;
-    }
-    ~PortalRoom()
-    {
-        for (auto door : m_doors)
-            door->DisconnectRoom(this);
-        m_doors.clear();
-    }
-
-    PortalRoom& operator<<(class PortalDoor<TE>* door)
-    {
-        m_doors.push_unique(door);
-        return *this;
-    }
-    PortalRoom& operator>>(class PortalDoor<TE>* door)
-    {
-        m_doors.remove_swap_item(door);
-        return *this;
-    }
-
-    int GetDoorCount()              { return m_doors.count(); }
-    PortalDoor<TE>* GetDoor(int i)  { return m_doors[i]; }
-
-private:
-    //Portals associated with this room.
-    array<PortalDoor<TE>*>      m_doors;
-    TE*                         m_element;
-};
-
-//--
-template <typename TE>
-class PortalSet
-{
-public:
-    ~PortalSet()
-    {
-        for (auto door : m_doors)
-            delete door;
-        for (auto room : m_rooms)
-            delete room;
-        m_doors.clear();
-        m_rooms.clear();
-    }
-
-    //Visible room getter
-    void GetVisibleRooms(PortalDoor<TE>* see_through, PortalRoom<TE>* start_room, array<PortalRoom<TE>*>& visible_rooms)
-    {
-        array<PortalDoor<TE>*> ignore_doors;
-        GetVisibleRooms(see_through, start_room, visible_rooms, ignore_doors);
-    #if LOL_BUILD_DEBUG
-        for (auto room : visible_rooms)
-        {
-            vec4 tmp = vec4::zero;
-            for (auto port : room->m_doors)
-            {
-                Debug::Draw(*port, Color::cyan);
-                tmp += vec4(port->m_center, 1.f);
-            }
-            tmp /= tmp.w;
-            Debug::DrawBox(tmp.xyz - vec3(1.f), tmp.xyz + vec3(1.f), Color::yellow);
-        }
-        for (auto port : ignore_doors)
-        {
-            Debug::Draw(*port, Color::magenta);
-            Debug::DrawViewProj(port->m_view, port->m_proj, Color::magenta);
-        }
-    #endif //LOL_BUILD_DEBUG
-    }
-private:
-    void GetVisibleRooms(PortalDoor<TE>* see_through, PortalRoom<TE>* start_room, array<PortalRoom<TE>*>& visible_rooms, array<PortalDoor<TE>*>& ignore_doors)
-    {
-        for (auto door : start_room->m_doors)
-        {
-            if (door == see_through || ignore_doors.Find(door) != INDEX_NONE)
-                continue;
-
-            if (see_through->TestCollide(*door))
-            {
-                PortalRoom<TE>* other_room = door->GetRoom(start_room);
-                if (visible_rooms.Find(other_room) != INDEX_NONE)
-                    continue;
-
-                ignore_doors.push_unique(door);
-                visible_rooms.push_unique(other_room);
-                door->BuildViewProj(see_through->m_view, see_through->m_proj);
-                GetVisibleRooms(door, other_room, visible_rooms, ignore_doors);
-            }
-        }
-    }
-public:
-
-    //Operator
-    PortalSet<TE>& operator<<(class PortalRoom<TE>* room)
-    {
-        m_rooms.push_unique(room);
-        for (auto door : room->m_doors)
-            m_doors.push_unique(door);
-        return *this;
-    }
-    //--
-    PortalSet<TE>& operator>>(class PortalRoom<TE>* room)
-    {
-        for (auto door : room->m_doors)
-            *this >> door;
-        m_rooms.remove_item(room);
-        return *this;
-    }
-    //--
-    PortalSet<TE>& operator<<(class PortalDoor<TE>* door)
-    {
-        m_doors.push_unique(door);
-        return *this;
-    }
-    //--
-    PortalSet<TE>& operator>>(class PortalDoor<TE>* door)
-    {
-        m_doors.remove_item(door);
-        return *this;
-    }
-
-    //--
-    int GetDoorCount()              { return m_doors.count(); }
-    PortalDoor<TE>* GetDoor(int i)  { return m_doors[i]; }
-    int GetRoomCount()              { return m_rooms.count(); }
-    PortalRoom<TE>* GetRoom(int i)  { return m_rooms[i]; }
-
-private:
-    //Portals associated with this room.
-    array<PortalRoom<TE>*>          m_rooms;
-    array<PortalDoor<TE>*>          m_doors;
-};
-
-} /* namespace lol */
-
diff --git a/src/lol/algorithm/sort.h b/src/lol/algorithm/sort.h
deleted file mode 100644
index 7ad36082..00000000
--- a/src/lol/algorithm/sort.h
+++ /dev/null
@@ -1,128 +0,0 @@
-//
-//  Lol Engine
-//
-//  Copyright © 2010—2015 Sam Hocevar <sam@hocevar.net>
-//            © 2013—2015 Benjamin “Touky” Huet <huet.benjamin@gmail.com>
-//
-//  Lol Engine is free software. It comes without any warranty, to
-//  the extent permitted by applicable law. You can redistribute it
-//  and/or modify it under the terms of the Do What the Fuck You Want
-//  to Public License, Version 2, as published by the WTFPL Task Force.
-//  See http://www.wtfpl.net/ for more details.
-//
-
-#pragma once
-
-#include <lol/base/array.h>
-
-namespace lol
-{
-
-/*
- * Shuffle an array.
- */
-
-template<typename T, typename ARRAY>
-void array_base<T, ARRAY>::shuffle()
-{
-    auto n = count();
-    auto ni = n;
-    while (n > 0)
-    {
-        ni = lol::rand(n--) | 0;
-        this->swap(ni, n);
-    }
-}
-
-/*
- * Sort an array
- */
-
-template<typename T, typename ARRAY>
-static void quick_swap_sort(array_base<T, ARRAY> &a,
-                            ptrdiff_t start, ptrdiff_t stop);
-
-template<typename T, typename ARRAY>
-void array_base<T, ARRAY>::sort(SortAlgorithm algorithm)
-{
-#if !SORT_WORKS // yeah cause it's shite.
-    algorithm = SortAlgorithm::Bubble;
-#endif
-
-    // Classic bubble
-    if (algorithm == SortAlgorithm::Bubble)
-    {
-        int d = 1;
-        for (ptrdiff_t i = 0; i < count_s() - 1; i = lol::max(i + d, (ptrdiff_t)0))
-        {
-            if (i <= 0 || m_data[i] < m_data[i + 1])
-                d = 1;
-            if (m_data[i + 1] < m_data[i])
-            {
-                this->swap(i, i + 1);
-                d = -1;
-            }
-        }
-    }
-    // Quick sort with swap
-    else if (algorithm == SortAlgorithm::QuickSwap)
-    {
-        quick_swap_sort(*this, 0, count_s());
-    }
-}
-
-template<typename T, typename ARRAY>
-static void quick_swap_sort(array_base<T, ARRAY> &a,
-                            ptrdiff_t start, ptrdiff_t stop)
-{
-    ptrdiff_t m[3] =
-    {
-        rand(start, stop),
-        rand(start, stop),
-        rand(start, stop)
-    };
-
-    for (int i = 0; i < 2; )
-    {
-        if (a[m[i+1]] < a[m[i]])
-        {
-            ptrdiff_t mt = m[i+1];
-            m[i+1] = m[i];
-            m[i] = mt;
-            i = 0;
-        }
-        else
-            i++;
-    }
-
-    // actual stuff
-    T median = a[m[1]];
-    ptrdiff_t i0 = start, i1 = stop - 1;
-    bool b_swap = false;
-    while (i0 < i1)
-    {
-        if (!(a[i0] < median) && a[i1] < median)
-        {
-            a.swap(i0, i1);
-            i0++;
-            i1--;
-            b_swap = true;
-        }
-        else
-        {
-            if (a[i0] < median)
-                i0++;
-            if (!(a[i1] < median))
-                i1--;
-        }
-    }
-    if (stop - start == 1 || !b_swap)
-        return;
-    if (start < i0)
-        quick_swap_sort(a, start, i0);
-    if (i0 < stop)
-        quick_swap_sort(a, i0, stop);
-}
-
-} /* namespace lol */
-
diff --git a/src/lol/audio/all.h b/src/lol/audio/all.h
deleted file mode 100644
index 15503fa8..00000000
--- a/src/lol/audio/all.h
+++ /dev/null
@@ -1,17 +0,0 @@
-//
-//  Lol Engine
-//
-//  Copyright © 2010—2019 Sam Hocevar <sam@hocevar.net>
-//
-//  Lol Engine is free software. It comes without any warranty, to
-//  the extent permitted by applicable law. You can redistribute it
-//  and/or modify it under the terms of the Do What the Fuck You Want
-//  to Public License, Version 2, as published by the WTFPL Task Force.
-//  See http://www.wtfpl.net/ for more details.
-//
-
-#pragma once
-
-#include <lol/audio/audio.h>
-#include <lol/audio/sample.h>
-
diff --git a/src/lol/audio/audio.h b/src/lol/audio/audio.h
deleted file mode 100644
index dac03920..00000000
--- a/src/lol/audio/audio.h
+++ /dev/null
@@ -1,63 +0,0 @@
-//
-//  Lol Engine
-//
-//  Copyright © 2010—2019 Sam Hocevar <sam@hocevar.net>
-//
-//  Lol Engine is free software. It comes without any warranty, to
-//  the extent permitted by applicable law. You can redistribute it
-//  and/or modify it under the terms of the Do What the Fuck You Want
-//  to Public License, Version 2, as published by the WTFPL Task Force.
-//  See http://www.wtfpl.net/ for more details.
-//
-
-#pragma once
-
-//
-// The audio interface
-// -------------------
-// Helper functions to set up the audio device.
-//
-
-#include <unordered_set>
-#include <functional>
-
-namespace lol
-{
-
-class audio
-{
-public:
-    enum class format : uint8_t
-    {
-        unknown = 0,
-        uint8, sint8,
-        uint16le, uint16be,
-        sint16le, sint16be,
-        sint24le,
-        sint32le, sint32be,
-        float32le, float32be,
-    };
-
-    static void init();
-    static void shutdown();
-
-    // Set the number of audio tracks that can be mixed together
-    static void set_tracks(int tracks);
-    // Set the volume of a specific track
-    static void set_volume(int track, int volume);
-    static void mute_all();
-    static void unmute_all();
-
-    static int start_streaming(std::function<void(void *, int)> const &f,
-                               format format = audio::format::sint16le,
-                               int frequency = 22050,
-                               int channels = 2);
-
-    static void stop_streaming(int track);
-
-private:
-    audio() {}
-};
-
-} /* namespace lol */
-
diff --git a/src/lol/audio/sample.h b/src/lol/audio/sample.h
deleted file mode 100644
index 77e3b95e..00000000
--- a/src/lol/audio/sample.h
+++ /dev/null
@@ -1,55 +0,0 @@
-//
-//  Lol Engine
-//
-//  Copyright © 2010—2019 Sam Hocevar <sam@hocevar.net>
-//
-//  Lol Engine is free software. It comes without any warranty, to
-//  the extent permitted by applicable law. You can redistribute it
-//  and/or modify it under the terms of the Do What the Fuck You Want
-//  to Public License, Version 2, as published by the WTFPL Task Force.
-//  See http://www.wtfpl.net/ for more details.
-//
-
-#pragma once
-
-//
-// The sample class
-// ----------------
-// A sample is a unique sound sample.
-//
-
-#include "engine/entity.h"
-
-#include <stdint.h>
-
-namespace lol
-{
-
-class sample : public entity
-{
-public:
-    static sample *create(std::string const &path);
-    static sample* create(void const* samples, size_t len);
-    static void destroy(sample *s);
-
-protected:
-    sample(std::string const &path);
-    sample(void const *samples, size_t len);
-    virtual ~sample();
-
-    /* Inherited from entity */
-    virtual std::string GetName() const;
-    virtual void tick_game(float seconds);
-
-public:
-    /* New methods */
-    void play();
-    void loop();
-    void stop();
-
-private:
-    std::unique_ptr<class sample_data> data;
-};
-
-} /* namespace lol */
-
diff --git a/src/lol/base/array.h b/src/lol/base/array.h
deleted file mode 100644
index dc65ee32..00000000
--- a/src/lol/base/array.h
+++ /dev/null
@@ -1,586 +0,0 @@
-//
-//  Lol Engine
-//
-//  Copyright © 2010—2015 Sam Hocevar <sam@hocevar.net>
-//            © 2013—2015 Benjamin “Touky” Huet <huet.benjamin@gmail.com>
-//
-//  Lol Engine is free software. It comes without any warranty, to
-//  the extent permitted by applicable law. You can redistribute it
-//  and/or modify it under the terms of the Do What the Fuck You Want
-//  to Public License, Version 2, as published by the WTFPL Task Force.
-//  See http://www.wtfpl.net/ for more details.
-//
-
-#pragma once
-
-//
-// The array class
-// ---------------
-// A very simple array class not unlike the std::vector, with some nice
-// additional features, eg. array<int,float> for automatic arrays of tuples.
-//
-
-#include <lol/base/assert.h>
-#include <lol/base/tuple.h>
-
-#include <new> /* for placement new */
-#include <algorithm> /* for std::swap */
-#include <stdint.h>
-#include <initializer_list>
-
-namespace lol
-{
-
-static ptrdiff_t const INDEX_NONE = -1;
-
-/*
- * Sorting algorithm list
- */
-
-enum class SortAlgorithm : uint8_t
-{
-    QuickSwap,
-    Bubble,
-};
-
-/*
- * The base array type.
- *
- * Contains an m_data memory array of Elements, of which only the first
- * m_count are allocated. The rest is uninitialised memory.
- */
-
-template<typename T, typename ARRAY> class LOL_ATTR_NODISCARD array_base
-{
-public:
-    typedef T element_t;
-
-    inline array_base() : m_data(0), m_count(0), m_reserved(0)
-    {
-    }
-
-    inline array_base(std::initializer_list<element_t> const &list)
-      : m_data(0),
-        m_count(0),
-        m_reserved(0)
-    {
-        reserve(list.size());
-        for (auto elem : list)
-            push(elem);
-    }
-
-    inline ~array_base()
-    {
-        for (ptrdiff_t i = 0; i < m_count; i++)
-            m_data[i].~element_t();
-        delete[] reinterpret_cast<uint8_t *>(m_data);
-    }
-
-    array_base(array_base const& that) : m_data(0), m_count(0), m_reserved(0)
-    {
-        /* Reserve the exact number of values instead of what the other
-         * array had reserved. Just a method for not wasting too much. */
-        reserve(that.m_count);
-        for (ptrdiff_t i = 0; i < that.m_count; i++)
-            new(&m_data[i]) element_t(that[i]);
-        m_count = that.m_count;
-    }
-
-    array_base& operator=(array_base const& that)
-    {
-        if ((uintptr_t)this != (uintptr_t)&that)
-        {
-            /* FIXME: there is an opportunity for optimisation here if we
-             * find a way to ask Reserve not to create new elements, since
-             * we're going to overwrite them anyway. */
-            if (m_reserved < that.m_count)
-            {
-                /* If not enough space, reserve memory, overwrite the first
-                 * elements, then use placement new directly for the
-                 * remaining elements. */
-                reserve(that.m_count);
-                for (ptrdiff_t i = 0; i < m_count && i < that.m_count; i++)
-                    m_data[i] = element_t(that[i]);
-                for (ptrdiff_t i = m_count; i < that.m_count; i++)
-                    new(&m_data[i]) element_t(that[i]);
-            }
-            else
-            {
-                /* If enough space, overwrite the common elements, then
-                 * use placement new for the elements in the other array
-                 * that we do not have, and finally destroy the remaining
-                 * elements. */
-                for (ptrdiff_t i = 0; i < m_count && i < that.m_count; i++)
-                    m_data[i] = element_t(that[i]);
-                for (ptrdiff_t i = m_count; i < that.m_count; i++)
-                    new(&m_data[i]) element_t(that[i]);
-                for (ptrdiff_t i = that.m_count; i < m_count; i++)
-                    m_data[i].~element_t();
-            }
-            m_count = that.m_count;
-        }
-        return *this;
-    }
-
-    array_base& operator+=(array_base const &that)
-    {
-        ptrdiff_t todo = that.m_count;
-        reserve(m_count + todo);
-        for (ptrdiff_t i = 0; i < todo; i++)
-            new(&m_data[m_count + i]) element_t(that[i]);
-        m_count += todo;
-        return *this;
-    }
-
-    ARRAY operator+(ARRAY const &that) const
-    {
-        ARRAY ret;
-        ret.reserve(m_count + that.m_count);
-        ret += *this;
-        ret += that;
-        return ret;
-    }
-
-    bool operator==(ARRAY const &that) const
-    {
-        if (m_count != that.m_count)
-            return false;
-        for (ptrdiff_t i = 0; i < m_count; ++i)
-            if (!(m_data[i] == that[i]))
-                return false;
-        return true;
-    }
-
-    bool operator!=(ARRAY const &that) const
-    {
-        if (m_count == that.m_count)
-            return false;
-        for (ptrdiff_t i = 0; i < m_count; ++i)
-            if (!(m_data[i] != that[i]))
-                return false;
-        return true;
-    }
-
-    inline element_t& operator[](ptrdiff_t n)
-    {
-        /* Allow array[0] even if size is zero so that people can
-         * always use &array[0] to get a pointer to the data. */
-        ASSERT(n >= 0 && (n < m_count || (!n && !m_count)),
-               "cannot access index %ld in array of size %ld",
-               (long int)n, (long int)m_count);
-        return m_data[n];
-    }
-
-    inline element_t const& operator[](ptrdiff_t n) const
-    {
-        ASSERT(n >= 0 && (n < m_count || (!n && !m_count)),
-               "cannot access index %ld in array of size %ld",
-               (long int)n, (long int)m_count);
-        return m_data[n];
-    }
-
-    inline element_t& last()
-    {
-        ASSERT(m_count > 0);
-        return m_data[m_count - 1];
-    }
-
-    inline element_t *data()
-    {
-        return m_data;
-    }
-
-    inline element_t const *data() const
-    {
-        return m_data;
-    }
-
-    inline element_t const& last() const
-    {
-        ASSERT(m_count > 0);
-        return m_data[m_count - 1];
-    }
-
-    inline array_base& operator<<(T const &x)
-    {
-        if (m_count >= m_reserved)
-        {
-            T tmp = x;
-            grow();
-            new (&m_data[m_count]) element_t(tmp);
-        }
-        else
-        {
-            new (&m_data[m_count]) element_t(x);
-        }
-        ++m_count;
-        return *this;
-    }
-
-    inline array_base& operator>>(T const &x)
-    {
-        remove_item(x);
-        return *this;
-    }
-
-    inline void push(T const &x)
-    {
-        *this << x;
-    }
-
-    inline bool push_unique(T const &x)
-    {
-        if (find(x) != INDEX_NONE)
-            return false;
-
-        push(x);
-        return true;
-    }
-
-    inline void insert(T const &x, ptrdiff_t pos)
-    {
-        ASSERT(pos >= 0 && pos <= m_count,
-               "cannot insert at index %ld in array of size %ld",
-               (long int)pos, (long int)m_count);
-
-        if (m_count >= m_reserved)
-            grow();
-
-        for (ptrdiff_t i = m_count; i > pos; --i)
-        {
-            new (&m_data[i]) element_t(m_data[i - 1]);
-            m_data[i - 1].~element_t();
-        }
-        new (&m_data[pos]) element_t(x);
-        ++m_count;
-    }
-
-    inline bool insert_unique(T const &x, ptrdiff_t pos)
-    {
-        ASSERT(pos >= 0 && pos <= m_count,
-               "cannot insert at index %ld in array of size %ld",
-               (long int)pos, (long int)m_count);
-
-        if (find(x) != INDEX_NONE)
-            return false;
-
-        insert(x, pos);
-        return true;
-    }
-
-    inline ptrdiff_t find(T const &x)
-    {
-        for (ptrdiff_t i = 0; i < m_count; ++i)
-            if (m_data[i] == x)
-                return i;
-        return INDEX_NONE;
-    }
-
-    bool remove_item(T const &x)
-    {
-        ptrdiff_t idx = find(x);
-        if (idx != INDEX_NONE)
-        {
-            remove(idx);
-            return true;
-        }
-        return false;
-    }
-
-    bool remove_swap_item(T const &x)
-    {
-        ptrdiff_t idx = find(x);
-        if (idx != INDEX_NONE)
-        {
-            remove_swap(idx);
-            return true;
-        }
-        return false;
-    }
-
-    inline T pop()
-    {
-        ASSERT(m_count > 0);
-        element_t tmp = last();
-        remove(m_count - 1, 1);
-        return tmp;
-    }
-
-    inline void swap(ptrdiff_t i, ptrdiff_t j)
-    {
-        ASSERT(i >= 0 && i < m_count && j >= 0 && j < m_count,
-               "cannot swap elements %ld and %ld in array of size %ld",
-               (long int)i, (long int)j, (long int)m_count);
-
-        std::swap(m_data[i], m_data[j]);
-    }
-
-    void remove(ptrdiff_t pos, ptrdiff_t todelete = 1)
-    {
-        ASSERT(todelete >= 0);
-        ASSERT(pos - todelete >= -m_count - 1 && pos + todelete <= m_count,
-               "cannot remove %ld elements at %ld in array of size %ld",
-               (long int)todelete, (long int)pos, (long int)m_count);
-
-        if (pos < 0)
-            pos = m_count + pos;
-
-        for (ptrdiff_t i = pos; i + todelete < m_count; i++)
-            m_data[i] = m_data[i + todelete];
-        for (ptrdiff_t i = m_count - todelete; i < m_count; i++)
-            m_data[i].~element_t();
-        m_count -= todelete;
-    }
-
-    void remove_swap(ptrdiff_t pos, ptrdiff_t todelete = 1)
-    {
-        ASSERT(todelete >= 0);
-        ASSERT(pos - todelete >= -m_count - 1 && pos + todelete <= m_count,
-               "cannot remove %ld elements at %ld in array of size %ld",
-               (long int)todelete, (long int)pos, (long int)m_count);
-
-        if (pos < 0)
-            pos = m_count + pos;
-
-        for (ptrdiff_t i = 0; i < todelete; i++)
-        {
-            if (pos + i < m_count - 1 - i)
-                m_data[pos + i] = m_data[m_count - 1 - i];
-            m_data[m_count - 1 - i].~element_t();
-        }
-        m_count -= todelete;
-    }
-
-    void resize(ptrdiff_t item_count, element_t e = element_t())
-    {
-        ASSERT(item_count >= 0);
-        reserve(item_count);
-
-        /* Too many elements? Remove them. */
-        for (ptrdiff_t i = item_count; i < m_count; ++i)
-            m_data[i].~element_t();
-
-        /* Not enough elements? Add some. */
-        for (ptrdiff_t i = m_count; i < item_count; ++i)
-            new(&m_data[i]) element_t(e);
-
-        m_count = item_count;
-    }
-
-    inline void clear()
-    {
-        remove(0, m_count);
-    }
-
-    void reserve(ptrdiff_t toreserve)
-    {
-        if (toreserve <= m_reserved)
-            return;
-
-        /* This cast is not very nice, because we kill any alignment
-         * information we could have. But until C++ gives us the proper
-         * tools to deal with it, we assume new uint8_t[] returns properly
-         * aligned data. */
-        element_t *tmp = reinterpret_cast<element_t *>(reinterpret_cast<uintptr_t>
-                               (new uint8_t[sizeof(element_t) * toreserve]));
-        ASSERT(tmp, "out of memory in array class");
-        for (ptrdiff_t i = 0; i < m_count; i++)
-        {
-            new(&tmp[i]) element_t(m_data[i]);
-            m_data[i].~element_t();
-        }
-        delete[] reinterpret_cast<uint8_t *>(m_data);
-        m_data = tmp;
-        m_reserved = toreserve;
-    }
-
-    void shuffle();
-
-    void sort(SortAlgorithm algorithm);
-
-    /* Support C++11 range-based for loops */
-    class const_iterator
-    {
-    public:
-        const_iterator(array_base const *that, ptrdiff_t pos)
-          : m_pos(pos),
-            m_array(that)
-        { }
-
-        bool operator !=(const const_iterator& that) const
-        {
-            return m_pos != that.m_pos;
-        }
-
-        element_t const & operator *() const
-        {
-            return (*m_array)[m_pos];
-        }
-
-        const_iterator const & operator ++()
-        {
-            ++m_pos;
-            return *this;
-        }
-
-    private:
-        ptrdiff_t m_pos;
-        array_base const *m_array;
-    };
-
-    class iterator
-    {
-    public:
-        iterator(array_base *that, ptrdiff_t pos)
-          : m_pos(pos),
-            m_array(that)
-        { }
-
-        bool operator !=(const iterator& that) const
-        {
-            return m_pos != that.m_pos;
-        }
-
-        element_t & operator *()
-        {
-            return (*m_array)[m_pos];
-        }
-
-        iterator const & operator ++()
-        {
-            ++m_pos;
-            return *this;
-        }
-
-    private:
-        ptrdiff_t m_pos;
-        array_base *m_array;
-    };
-
-public:
-    inline int count() const { return (int)m_count; }
-    inline int bytes() const { return (int)(m_count * sizeof(element_t)); }
-
-    inline ptrdiff_t count_s() const { return m_count; }
-    inline ptrdiff_t bytes_s() const { return m_count * sizeof(element_t); }
-
-protected:
-    void grow()
-    {
-        reserve(m_count * 13 / 8 + 8);
-    }
-
-    element_t *m_data;
-    ptrdiff_t m_count, m_reserved;
-};
-
-/*
- * array specialisations implementing specific setters
- */
-
-template<typename... T>
-class array : public array_base<tuple<T...>, array<T...>>
-{
-public:
-    /* GCC needs this but Clang doesn’t */
-    typedef tuple<T...> element_t;
-
-#if LOL_FEATURE_CXX11_INHERIT_CONSTRUCTORS
-private:
-    using array_base<tuple<T...>, array<T...>>::array_base;
-#else
-public:
-    inline array()
-      : array_base<element_t, array<T...>>::array_base()
-    {}
-
-    inline array(std::initializer_list<element_t> const &list)
-      : array_base<element_t, array<T...>>::array_base(list)
-    {}
-#endif
-
-public:
-    inline void push(T... args)
-    {
-        if (this->m_count >= this->m_reserved)
-        {
-            tuple<T...> tmp = { args... };
-            this->grow();
-            new (&this->m_data[this->m_count]) tuple<T...>(tmp);
-        }
-        else
-        {
-            new (&this->m_data[this->m_count]) tuple<T...>({ args... });
-        }
-        ++this->m_count;
-    }
-
-    inline void insert(ptrdiff_t pos, T... args)
-    {
-        ASSERT(pos >= 0 && pos <= this->m_count,
-               "cannot insert at index %ld in array of size %ld",
-               (long int)pos, (long int)this->m_count);
-
-        if (this->m_count >= this->m_reserved)
-            this->grow();
-
-        for (ptrdiff_t i = this->m_count; i > pos; --i)
-        {
-            new (&this->m_data[i]) element_t(this->m_data[i - 1]);
-            this->m_data[i - 1].~element_t();
-        }
-        new (&this->m_data[pos]) tuple<T...>({ args... });
-        ++this->m_count;
-    }
-};
-
-template<typename T>
-class array<T>
-  : public array_base<T, array<T>>
-{
-#if LOL_FEATURE_CXX11_INHERIT_CONSTRUCTORS
-    using array_base<T, array<T>>::array_base;
-#else
-public:
-    typedef T element_t;
-
-    inline array()
-      : array_base<T, array<T>>::array_base()
-    {}
-
-    inline array(std::initializer_list<element_t> const &list)
-      : array_base<T, array<T>>::array_base(list)
-    {}
-#endif
-};
-
-/*
- * C++11 iterators
- */
-
-template<typename... T>
-typename array<T...>::iterator begin(array<T...> &a)
-{
-    return typename array<T...>::iterator(&a, 0);
-}
-
-template<typename... T>
-typename array<T...>::iterator end(array<T...> &a)
-{
-    return typename array<T...>::iterator(&a, a.count());
-}
-
-template<typename... T>
-typename array<T...>::const_iterator begin(array<T...> const &a)
-{
-    return typename array<T...>::const_iterator(&a, 0);
-}
-
-template<typename... T>
-typename array<T...>::const_iterator end(array<T...> const &a)
-{
-    return typename array<T...>::const_iterator(&a, a.count());
-}
-
-} /* namespace lol */
-
diff --git a/src/lol/base/enum.h b/src/lol/base/enum.h
deleted file mode 100644
index 8a10d5e5..00000000
--- a/src/lol/base/enum.h
+++ /dev/null
@@ -1,127 +0,0 @@
-//
-//  Lol Engine
-//
-//  Copyright © 2010—2018 Sam Hocevar <sam@hocevar.net>
-//            © 2013—2015 Guillaume Bittoun <guillaume.bittoun@gmail.com>
-//
-//  Lol Engine is free software. It comes without any warranty, to
-//  the extent permitted by applicable law. You can redistribute it
-//  and/or modify it under the terms of the Do What the Fuck You Want
-//  to Public License, Version 2, as published by the WTFPL Task Force.
-//  See http://www.wtfpl.net/ for more details.
-//
-
-#pragma once
-
-#include <string>
-#include <map>
-
-namespace lol
-{
-
-////MyType --------------------------------------------------------------------
-//struct MyTypeBase : public StructSafeEnum
-//{
-//    enum Type
-//    {
-//    };
-//protected:
-//    virtual bool BuildEnumMap(std::map<int64_t, std::string>& enum_map)
-//    {
-//        enum_map[] = "";
-//        return true;
-//    }
-//};
-//typedef SafeEnum<MyTypeBase> MyType;
-
-//-----------------------------------------------------------------------------
-struct StructSafeEnum
-{
-protected:
-    /* Convert to string stuff */
-    virtual bool BuildEnumMap(std::map<int64_t, std::string>&) { return false; }
-};
-//-----------------------------------------------------------------------------
-template<typename BASE, typename T = typename BASE::Type>
-class SafeEnum : public BASE
-{
-    typedef T Type;
-    Type m_value;
-
-public:
-    inline SafeEnum() : m_value() {}
-    inline SafeEnum(Type v) : m_value(v) {}
-
-    /* Allow conversion from int and to the underlying type */
-    inline explicit SafeEnum(int i) : m_value(T(i)) {}
-    inline Type ToScalar() const { return m_value; }
-    //inline std::string tostring() const { return tostring(); }
-
-    /* Convert to string stuff */
-    inline std::string tostring()
-    {
-        /* FIXME: we all know this isn’t thread safe. But is it really
-        * a big deal? */
-        static std::map<int64_t, std::string> enum_map;
-        static bool ready = false;
-
-        if (ready || this->BuildEnumMap(enum_map))
-        {
-            ready = true;
-            if (has_key(enum_map, (int64_t)m_value))
-                return enum_map[(int64_t)m_value];
-        }
-        return "<invalid enum>";
-    }
-
-    /* Safe comparisons between enums of the same type */
-    friend bool operator == (SafeEnum const &a, SafeEnum const &b)
-    {
-        return a.m_value == b.m_value;
-    }
-    friend bool operator != (SafeEnum const &a, SafeEnum const &b)
-    {
-        return a.m_value != b.m_value;
-    }
-    friend bool operator <  (SafeEnum const &a, SafeEnum const &b)
-    {
-        return a.m_value <  b.m_value;
-    }
-    friend bool operator >  (SafeEnum const &a, SafeEnum const &b)
-    {
-        return a.m_value >  b.m_value;
-    }
-    friend bool operator <= (SafeEnum const &a, SafeEnum const &b)
-    {
-        return a.m_value <= b.m_value;
-    }
-    friend bool operator >= (SafeEnum const &a, SafeEnum const &b)
-    {
-        return a.m_value >= b.m_value;
-    }
-};
-
-//-------------------------------------------------------------------------
-struct DisplayFlagBase : public StructSafeEnum
-{
-    enum Type
-    {
-        On,
-        Off,
-        Toggle,
-
-        MAX
-    };
-protected:
-    virtual bool BuildEnumMap(std::map<int64_t, std::string>& enum_map)
-    {
-        enum_map[On] = "On";
-        enum_map[Off] = "Off";
-        enum_map[Toggle] = "Toggle";
-        return true;
-    }
-};
-typedef SafeEnum<DisplayFlagBase> DisplayFlag;
-
-} /* namespace lol */
-
diff --git a/src/lol/base/log.h b/src/lol/base/log.h
deleted file mode 100644
index f42d91cb..00000000
--- a/src/lol/base/log.h
+++ /dev/null
@@ -1,48 +0,0 @@
-//
-//  Lol Engine
-//
-//  Copyright © 2010—2015 Sam Hocevar <sam@hocevar.net>
-//
-//  Lol Engine is free software. It comes without any warranty, to
-//  the extent permitted by applicable law. You can redistribute it
-//  and/or modify it under the terms of the Do What the Fuck You Want
-//  to Public License, Version 2, as published by the WTFPL Task Force.
-//  See http://www.wtfpl.net/ for more details.
-//
-
-#pragma once
-
-//
-// The msg interface
-// -----------------
-// The central logging system.
-//
-
-#include <stdint.h>
-#include <cstdarg>
-
-namespace lol
-{
-
-class msg
-{
-public:
-    static void debug(char const *format, ...) LOL_ATTR_FORMAT(1, 2);
-    static void info(char const *format, ...) LOL_ATTR_FORMAT(1, 2);
-    static void warn(char const *format, ...) LOL_ATTR_FORMAT(1, 2);
-    static void error(char const *format, ...) LOL_ATTR_FORMAT(1, 2);
-
-    enum class message_type
-    {
-        debug,
-        info,
-        warning,
-        error,
-    };
-
-private:
-    static void helper(message_type type, char const *fmt, va_list ap);
-};
-
-} /* namespace lol */
-
diff --git a/src/lol/base/tuple.h b/src/lol/base/tuple.h
deleted file mode 100644
index 7f2ab5de..00000000
--- a/src/lol/base/tuple.h
+++ /dev/null
@@ -1,92 +0,0 @@
-//
-// Lol Engine
-//
-// Copyright: (c) 2010-2014 Sam Hocevar <sam@hocevar.net>
-//            (c) 2013-2014 Benjamin "Touky" Huet <huet.benjamin@gmail.com>
-//   This program is free software; you can redistribute it and/or
-//   modify it under the terms of the Do What The Fuck You Want To
-//   Public License, Version 2, as published by Sam Hocevar. See
-//   http://www.wtfpl.net/ for more details.
-//
-
-#pragma once
-
-//
-// The tuple class
-// ---------------
-// A very simple tuple class.
-//
-
-#include <lol/base/assert.h>
-
-#include <tuple>
-
-namespace lol
-{
-
-template<typename... T>
-class tuple : public std::tuple<T...>
-{
-};
-
-template<typename T1, typename T2, typename T3, typename T4, typename T5,
-         typename T6, typename T7, typename T8>
-class tuple<T1, T2, T3, T4, T5, T6, T7, T8>
-{
-public:
-    T1 m1; T2 m2; T3 m3; T4 m4; T5 m5; T6 m6; T7 m7; T8 m8;
-};
-
-template<typename T1, typename T2, typename T3, typename T4, typename T5,
-         typename T6, typename T7>
-class tuple<T1, T2, T3, T4, T5, T6, T7>
-{
-public:
-    T1 m1; T2 m2; T3 m3; T4 m4; T5 m5; T6 m6; T7 m7;
-};
-
-template<typename T1, typename T2, typename T3, typename T4, typename T5,
-         typename T6>
-class tuple<T1, T2, T3, T4, T5, T6>
-{
-public:
-    T1 m1; T2 m2; T3 m3; T4 m4; T5 m5; T6 m6;
-};
-
-template<typename T1, typename T2, typename T3, typename T4, typename T5>
-class tuple<T1, T2, T3, T4, T5>
-{
-public:
-    T1 m1; T2 m2; T3 m3; T4 m4; T5 m5;
-};
-
-template<typename T1, typename T2, typename T3, typename T4>
-class tuple<T1, T2, T3, T4>
-{
-public:
-    T1 m1; T2 m2; T3 m3; T4 m4;
-};
-
-template<typename T1, typename T2, typename T3>
-class tuple<T1, T2, T3>
-{
-public:
-    T1 m1; T2 m2; T3 m3;
-};
-
-template<typename T1, typename T2>
-class tuple<T1, T2>
-{
-public:
-    T1 m1; T2 m2;
-};
-
-template<typename T1>
-class tuple<T1>
-{
-public:
-    T1 m1;
-};
-
-} /* namespace lol */
-
diff --git a/src/lol/debug/all.h b/src/lol/debug/all.h
deleted file mode 100644
index a197949a..00000000
--- a/src/lol/debug/all.h
+++ /dev/null
@@ -1,14 +0,0 @@
-//
-// Lol Engine
-//
-// Copyright: (c) 2010-2013 Sam Hocevar <sam@hocevar.net>
-//   This program is free software; you can redistribute it and/or
-//   modify it under the terms of the Do What The Fuck You Want To
-//   Public License, Version 2, as published by Sam Hocevar. See
-//   http://www.wtfpl.net/ for more details.
-//
-
-#pragma once
-
-#include <lol/debug/lines.h>
-
diff --git a/src/lol/debug/lines.h b/src/lol/debug/lines.h
deleted file mode 100644
index e4a8a1c5..00000000
--- a/src/lol/debug/lines.h
+++ /dev/null
@@ -1,180 +0,0 @@
-//
-// Lol Engine
-//
-// Copyright: (c) 2010-2013 Sam Hocevar <sam@hocevar.net>
-//   This program is free software; you can redistribute it and/or
-//   modify it under the terms of the Do What The Fuck You Want To
-//   Public License, Version 2, as published by Sam Hocevar. See
-//   http://www.wtfpl.net/ for more details.
-//
-
-#pragma once
-
-//
-// Debug line primitives
-// ---------------------
-//
-
-#include <stdint.h>
-
-namespace lol
-{
-
-namespace Debug
-{
-    class DrawContext
-    {
-    public:
-        class Data
-        {
-        public:
-            vec4 m_color = vec4(1.f);
-            float m_duration = 0.0f;
-            int m_mask = 0;
-            float m_segment_size = 8;
-
-            Data() {}
-            Data(vec4 color, float duration = -1.f, int mask = 0xFFFFFFFF, float segment_size = 1.f)
-            {
-                m_color = color;
-                m_duration = duration;
-                m_mask = mask;
-                m_segment_size = segment_size;
-            }
-            inline Data& operator=(vec4 const& color) { m_color = color; return *this; }
-        };
-
-    private:
-        static Data m_global;
-        Data m_previous;
-        Data m_current;
-
-        DrawContext(vec4 color, float duration, int mask, float segment_size)
-        {
-            //Store old datas
-            m_previous.m_color = m_global.m_color;
-            m_previous.m_duration = m_global.m_duration;
-            m_previous.m_mask = m_global.m_mask;
-            m_previous.m_segment_size = m_global.m_segment_size;
-
-            //Create new one
-            SetColor(color);
-            SetDuration(duration);
-            SetMask(mask);
-            SetSegmentSize(segment_size);
-        }
-
-    public:
-        ~DrawContext()
-        {
-            m_global.m_color = m_previous.m_color;
-            m_global.m_duration = m_previous.m_duration;
-            m_global.m_mask = m_previous.m_mask;
-            m_global.m_segment_size = m_previous.m_segment_size;
-        }
-
-        static DrawContext New(vec4 color, float duration = -1.f, int mask = 0xFFFFFFFF, float segment_size = 1.f)
-        {
-            return DrawContext(color, duration, mask, segment_size);
-        }
-
-        static DrawContext New(DrawContext& dc)
-        {
-            return DrawContext(dc.m_current.m_color, dc.m_current.m_duration, dc.m_current.m_mask, dc.m_current.m_segment_size);
-        }
-
-        static Data GetGlobalData() { return m_global; }
-
-        //Setup methods
-        void SetColor(vec4 color)               { m_global.m_color = m_current.m_color = color; }
-        void SetDuration(float duration)        { m_global.m_duration = m_current.m_duration = duration; }
-        void SetMask(int mask)                  { m_global.m_mask = m_current.m_mask = mask; }
-        void SetSegmentSize(float segment_size) { m_global.m_segment_size = m_current.m_segment_size = segment_size; }
-    };
-
-    //Screen to world conversion
-    vec3 WorldToScreen(vec3 pos);
-    vec3 WorldToScreen(vec3 pos, mat4 view_proj);
-    vec3 WorldToScreen(vec4 pos);
-    vec3 WorldToScreen(vec4 pos, mat4 view_proj);
-    vec3 ScreenToWorld(vec2 pos, float z=-1.f);
-    vec3 ScreenToWorld(vec3 pos);
-    vec3 ScreenToWorld(vec2 pos, mat4 inv_view_proj, float z=-1.f);
-    vec3 ScreenToWorld(vec3 pos, mat4 inv_view_proj);
-    vec3 ScreenToWorld(vec3 pos, mat4 view, mat4 proj);
-
-    //Draw stuff in World
-    //Draw stuff in World
-    //-- LINE
-    void DrawLine(vec3 a, vec3 b, DrawContext::Data data);
-    void DrawLine(vec2 a, vec3 b, DrawContext::Data data, float az = -1.f);
-    void DrawLine(vec2 a, vec2 b, DrawContext::Data data, float az = -1.f, float bz = -1.f);
-    void DrawLine(vec3 a, vec3 b);
-    void DrawLine(vec2 a, vec3 b, float az = -1.f);
-    void DrawLine(vec2 a, vec2 b, float az = -1.f, float bz = -1.f);
-    //-- GIZMO
-    void DrawGizmo(vec3 pos, vec3 x, vec3 y, vec3 z, float size);
-    void DrawGizmo(vec2 pos, vec3 x, vec3 y, vec3 z, float size, float posz = -1.f);
-    //-- GRID
-    void DrawGrid(vec3 pos, vec3 x, vec3 y, vec3 z, float size, bool draw_3d=false);
-    //-- ARROW
-    void DrawArrow(vec3 a, vec3 b, vec2 s);
-    void DrawArrow(vec2 a, vec3 b, vec2 s, float az=-1.f);
-    void DrawArrow(vec2 a, vec2 b, vec2 s, float az=-1.f, float bz=-1.f);
-    void DrawArrow(vec3 a, vec3 b, vec3 s);
-    void DrawArrow(vec2 a, vec3 b, vec3 s, float az=-1.f);
-    void DrawArrow(vec2 a, vec2 b, vec3 s, float az=-1.f, float bz=-1.f);
-    void DrawArrow(vec3 a, vec3 b, vec3 s, DrawContext::Data data);
-    void DrawArrow(vec2 a, vec3 b, vec3 s, DrawContext::Data data, float az=-1.f);
-    void DrawArrow(vec2 a, vec2 b, vec3 s, DrawContext::Data data, float az=-1.f, float bz=-1.f);
-    //-- BOX
-    void DrawBox(box3 a);
-    void DrawBox(box2 a);
-    void DrawBox(box3 a, DrawContext::Data data);
-    void DrawBox(box2 a, DrawContext::Data data);
-    void DrawBox(vec3 a, vec3 b);
-    void DrawBox(vec2 a, vec2 b);
-    void DrawBox(vec2 a, float s);
-    void DrawBox(vec3 a, vec3 b, DrawContext::Data data);
-    void DrawBox(vec2 a, vec2 b, DrawContext::Data data);
-    void DrawBox(vec2 a, float s, DrawContext::Data data);
-    void DrawBox(box3 a, mat4 transform);
-    void DrawBox(box2 a, mat2 transform);
-    void DrawBox(box3 a, mat4 transform, DrawContext::Data data);
-    void DrawBox(box2 a, mat2 transform, DrawContext::Data data);
-    void DrawBox(vec3 a, vec3 b, mat4 transform);
-    void DrawBox(vec2 a, vec2 b, mat2 transform);
-    void DrawBox(vec2 a, float s, mat2 transform);
-    void DrawBox(vec3 a, vec3 b, mat4 transform, DrawContext::Data data);
-    void DrawBox(vec2 a, vec2 b, mat2 transform, DrawContext::Data data);
-    void DrawBox(vec2 a, float s, mat2 transform, DrawContext::Data data);
-    //-- CIRCLE
-    void DrawCircle(vec2 a, float s);
-    void DrawCircle(vec3 a, vec3 n);
-    void DrawCircle(vec2 a, vec2 s);
-    void DrawCircle(vec3 a, vec3 n, DrawContext::Data data);
-    void DrawCircle(vec2 a, vec2 s, DrawContext::Data data);
-    void DrawCircle(vec3 a, vec3 x, vec3 y);
-    void DrawCircle(vec2 a, vec2 x, vec2 y);
-    void DrawCircle(vec3 a, vec3 x, vec3 y, DrawContext::Data data);
-    void DrawCircle(vec2 a, vec2 x, vec2 y, DrawContext::Data data);
-    //-- SPHERE
-    void DrawSphere(vec3 a, float s);
-    void DrawSphere(vec3 a, float s, DrawContext::Data data);
-    void DrawSphere(vec3 a, vec3 x, vec3 y, vec3 z);
-    void DrawSphere(vec3 a, vec3 x, vec3 y, vec3 z, DrawContext::Data data);
-    //-- CAPSULE
-    void DrawCapsule(vec3 a, float s, vec3 h);
-    void DrawCapsule(vec3 a, float s, vec3 h, DrawContext::Data data);
-    void DrawCapsule(vec3 a, vec3 x, vec3 y, vec3 z, vec3 h);
-    void DrawCapsule(vec3 a, vec3 x, vec3 y, vec3 z, vec3 h, DrawContext::Data data);
-    //-- VIEW PROJ
-    void DrawViewProj(mat4 view_proj);
-    void DrawViewProj(mat4 view_proj, DrawContext::Data data);
-    void DrawViewProj(mat4 view, mat4 proj);
-    void DrawViewProj(mat4 view, mat4 proj, DrawContext::Data data);
-
-} /* namespace Debug */
-
-} /* namespace lol */
-
diff --git a/src/lol/engine-internal.h b/src/lol/engine-internal.h
deleted file mode 100644
index c67ba1bd..00000000
--- a/src/lol/engine-internal.h
+++ /dev/null
@@ -1,43 +0,0 @@
-//
-//  Lol Engine
-//
-//  Copyright © 2010—2016 Sam Hocevar <sam@hocevar.net>
-//
-//  Lol Engine is free software. It comes without any warranty, to
-//  the extent permitted by applicable law. You can redistribute it
-//  and/or modify it under the terms of the Do What the Fuck You Want
-//  to Public License, Version 2, as published by the WTFPL Task Force.
-//  See http://www.wtfpl.net/ for more details.
-//
-
-#pragma once
-
-//
-// The main header (for internal engine use only)
-// ----------------------------------------------
-//
-
-/* Include this as early as possible */
-#if HAVE_CONFIG_H
-#   include "config.h"
-#endif
-
-/* If using Android, override main() with our version */
-#if __ANDROID__
-#   define main lol_android_main
-#endif
-
-/* If using SDL on Windows or OS X, let it override main() */
-#if LOL_USE_SDL && (_WIN32 || __APPLE__)
-#   include <SDL_main.h>
-#endif
-
-#include <lol/public.h>
-#include <lol/extras.h>
-#include <lol/legacy.h>
-
-#if defined _WIN32
-#   undef near /* Fuck Microsoft */
-#   undef far /* Fuck Microsoft again */
-#endif
-
diff --git a/src/lol/engine.h b/src/lol/engine.h
deleted file mode 100644
index 1ab6f42b..00000000
--- a/src/lol/engine.h
+++ /dev/null
@@ -1,38 +0,0 @@
-//
-//  Lol Engine
-//
-//  Copyright © 2010—2016 Sam Hocevar <sam@hocevar.net>
-//
-//  Lol Engine is free software. It comes without any warranty, to
-//  the extent permitted by applicable law. You can redistribute it
-//  and/or modify it under the terms of the Do What the Fuck You Want
-//  to Public License, Version 2, as published by the WTFPL Task Force.
-//  See http://www.wtfpl.net/ for more details.
-//
-
-#pragma once
-
-//
-// The main header (for all applications)
-// --------------------------------------
-//
-
-/* If using Android, override main() with our version */
-#if __ANDROID__
-#   define main lol_android_main
-#endif
-
-// If using NX, do that, too
-#if __NX__
-#   define main lol_nx_main
-#endif
-
-/* If using SDL on Windows or OS X, let it override main() */
-#if LOL_USE_SDL && (_WIN32 || __APPLE__)
-#   include <SDL_main.h>
-#endif
-
-#include <lol/public.h>
-#include <lol/extras.h>
-#include <lol/legacy.h>
-
diff --git a/src/lol/engine/all.h b/src/lol/engine/all.h
deleted file mode 100644
index 56028f2b..00000000
--- a/src/lol/engine/all.h
+++ /dev/null
@@ -1,16 +0,0 @@
-//
-//  Lol Engine
-//
-//  Copyright © 2010—2019 Sam Hocevar <sam@hocevar.net>
-//
-//  Lol Engine is free software. It comes without any warranty, to
-//  the extent permitted by applicable law. You can redistribute it
-//  and/or modify it under the terms of the Do What the Fuck You Want
-//  to Public License, Version 2, as published by the WTFPL Task Force.
-//  See http://www.wtfpl.net/ for more details.
-//
-
-#pragma once
-
-#include <lol/engine/tickable.h>
-
diff --git a/src/lol/engine/tickable.h b/src/lol/engine/tickable.h
deleted file mode 100644
index ec832764..00000000
--- a/src/lol/engine/tickable.h
+++ /dev/null
@@ -1,116 +0,0 @@
-//
-//  Lol Engine
-//
-//  Copyright © 2010—2019 Sam Hocevar <sam@hocevar.net>
-//
-//  Lol Engine is free software. It comes without any warranty, to
-//  the extent permitted by applicable law. You can redistribute it
-//  and/or modify it under the terms of the Do What the Fuck You Want
-//  to Public License, Version 2, as published by the WTFPL Task Force.
-//  See http://www.wtfpl.net/ for more details.
-//
-
-#pragma once
-
-//
-// The tickable class
-// ——————————————————
-// Tickables are objects that can be ticked by the game loop and/or the render
-// loop.
-//
-
-#include <cstdint>
-#include <memory>
-
-namespace lol
-{
-
-class tickable
-{
-public:
-    tickable();
-    virtual ~tickable();
-
-    virtual void init();
-    virtual void fini();
-    virtual void tick_game(float seconds);
-    virtual void tick_draw(float seconds, class Scene &scene);
-
-    // Auto-registering factory
-    template<typename T>
-    static typename std::enable_if<std::is_base_of<tickable, T>::value, std::shared_ptr<T>>::type
-    create()
-    {
-        auto p = std::make_shared<T>();
-        return p;
-    }
-
-    enum class state
-    {
-        idle,
-        pre_game,
-        post_game,
-        pre_draw,
-        post_draw,
-    };
-
-    // Tick groups
-    struct group
-    {
-        enum class game
-        {
-            begin = 0, // must be the first element
-
-            input,     // input should be polled before everything else
-            gui,       // debug update needs to be called before the rest for init purposes
-            app,       // main application update
-            entity,    // default entity update
-            // ----------------- // split entity update:
-            player,    // player updates before AI to ensure player actions is prevalent
-            ai,        // AI update
-            other_0,   // other misc updates here
-            other_1,   //  (same)
-            other_2,   //  (same)
-            other_3,   //  (same)
-            // ----------------- // primitives updates
-            mesh,      // update Mesh/Animation to ensure correct sync with PLY/AI
-            fx,        // update FX/other to ensure correct sync with WorldPos and Meshes
-            light,     // update after FX because it could some
-            camera,    // update camera at the end of the frame, once everything is settled
-            stats,     // stats update
-
-            end,       // must be the last element
-        };
-
-        enum class draw
-        {
-            begin = (int)game::end,
-
-            camera,   // update camera first for rendering
-            texture,  // texture
-            light,    //
-            world,    // other misc updates here
-            entity,   //
-            fx,       //
-            other_0,  // other misc updates here
-            other_1,  //  (same)
-            other_2,  //  (same)
-            other_3,  //  (same)
-            app,      // main application Draw
-            hud,
-            gui,
-            capture,
-
-            end,      // must be the next-to-last element
-            none,     // this group is for non draw-ticked
-        };
-
-        enum class all
-        {
-            end = (int)draw::end,
-        };
-    };
-};
-
-} /* namespace lol */
-
diff --git a/src/lol/extras.h b/src/lol/extras.h
deleted file mode 100644
index 7258d822..00000000
--- a/src/lol/extras.h
+++ /dev/null
@@ -1,57 +0,0 @@
-//
-//  Lol Engine
-//
-//  Copyright © 2010—2019 Sam Hocevar <sam@hocevar.net>
-//
-//  Lol Engine is free software. It comes without any warranty, to
-//  the extent permitted by applicable law. You can redistribute it
-//  and/or modify it under the terms of the Do What the Fuck You Want
-//  to Public License, Version 2, as published by the WTFPL Task Force.
-//  See http://www.wtfpl.net/ for more details.
-//
-
-#pragma once
-
-//
-// Extra includes that aren't proper part of the engine yet
-// --------------------------------------------------------
-//
-
-#include <lol/../utils.h>
-#include <lol/../numeric.h>
-
-// Static classes
-#include <lol/../platform.h>
-#include <lol/../video.h>
-#include <lol/../scene.h>
-#include <lol/../profiler.h>
-#include <lol/../messageservice.h>
-
-// Engine
-#include <lol/../engine/ticker.h>
-#include <lol/../engine/world.h>
-#include <lol/../engine/entity.h>
-#include <lol/../engine/worldentity.h>
-
-// Entities
-#include <lol/../camera.h>
-#include <lol/../light.h>
-#include <lol/../emitter.h>
-#include <lol/../font.h>
-#include <lol/../gradient.h>
-#include <lol/../sprite.h>
-#include <lol/../text.h>
-#include <lol/../textureimage.h>
-#include <lol/../tileset.h>
-
-// UI
-#include <lol/../ui/input.h>
-#include <lol/../ui/gui.h>
-
-// Other objects
-#include <lol/../mesh/mesh.h>
-#include <lol/../mesh/primitivemesh.h>
-#include <lol/../application/application.h>
-#include <lol/../easymesh/csgbsp.h>
-#include <lol/../easymesh/easymesh.h>
-
diff --git a/src/lol/gpu/all.h b/src/lol/gpu/all.h
deleted file mode 100644
index fde2422d..00000000
--- a/src/lol/gpu/all.h
+++ /dev/null
@@ -1,22 +0,0 @@
-//
-// Lol Engine
-//
-// Copyright: (c) 2010-2013 Sam Hocevar <sam@hocevar.net>
-//   This program is free software; you can redistribute it and/or
-//   modify it under the terms of the Do What The Fuck You Want To
-//   Public License, Version 2, as published by Sam Hocevar. See
-//   http://www.wtfpl.net/ for more details.
-//
-
-#pragma once
-
-#include <lol/gpu/debug.h>
-#include <lol/gpu/shader.h>
-#include <lol/gpu/indexbuffer.h>
-#include <lol/gpu/vertexbuffer.h>
-#include <lol/gpu/texture.h>
-#include <lol/gpu/framebuffer.h>
-#include <lol/gpu/lolfx.h>
-#include <lol/gpu/renderer.h>
-#include <lol/gpu/rendercontext.h>
-
diff --git a/src/lol/gpu/debug.h b/src/lol/gpu/debug.h
deleted file mode 100644
index 33e53c3b..00000000
--- a/src/lol/gpu/debug.h
+++ /dev/null
@@ -1,27 +0,0 @@
-//
-//  Lol Engine
-//
-//  Copyright © 2010—2019 Sam Hocevar <sam@hocevar.net>
-//
-//  Lol Engine is free software. It comes without any warranty, to
-//  the extent permitted by applicable law. You can redistribute it
-//  and/or modify it under the terms of the Do What the Fuck You Want
-//  to Public License, Version 2, as published by the WTFPL Task Force.
-//  See http://www.wtfpl.net/ for more details.
-//
-
-#pragma once
-
-namespace lol
-{
-
-namespace gpu
-{
-
-void setup_debug();
-void error(char const *msg, int error);
-
-} // namespace gpu
-
-} // namespace lol
-
diff --git a/src/lol/gpu/framebuffer.h b/src/lol/gpu/framebuffer.h
deleted file mode 100644
index 1038e0f4..00000000
--- a/src/lol/gpu/framebuffer.h
+++ /dev/null
@@ -1,116 +0,0 @@
-//
-// Lol Engine
-//
-// Copyright: (c) 2010-2013 Sam Hocevar <sam@hocevar.net>
-//   This program is free software; you can redistribute it and/or
-//   modify it under the terms of the Do What The Fuck You Want To
-//   Public License, Version 2, as published by Sam Hocevar. See
-//   http://www.wtfpl.net/ for more details.
-//
-
-#pragma once
-
-//
-// The Framebuffer class
-// ---------------------
-//
-
-#include <cstring>
-
-namespace lol
-{
-
-struct FramebufferFormat
-{
-    enum Value
-    {
-        R_8,
-        R_8_I,
-        R_8_UI,
-        R_8_F,
-
-        R_16,
-        R_16_I,
-        R_16_UI,
-        R_16_F,
-
-        R_32,
-        R_32_I,
-        R_32_UI,
-        R_32_F,
-
-        RG_8,
-        RG_8_I,
-        RG_8_UI,
-        RG_8_F,
-
-        RG_16,
-        RG_16_I,
-        RG_16_UI,
-        RG_16_F,
-
-        RG_32,
-        RG_32_I,
-        RG_32_UI,
-        RG_32_F,
-
-        RGB_8,
-        RGB_8_I,
-        RGB_8_UI,
-        RGB_8_F,
-
-        RGB_16,
-        RGB_16_I,
-        RGB_16_UI,
-        RGB_16_F,
-
-        RGB_32,
-        RGB_32_I,
-        RGB_32_UI,
-        RGB_32_F,
-
-        RGBA_8,
-        RGBA_8_I,
-        RGBA_8_UI,
-        RGBA_8_F,
-
-        RGBA_16,
-        RGBA_16_I,
-        RGBA_16_UI,
-        RGBA_16_F,
-
-        RGBA_32,
-        RGBA_32_I,
-        RGBA_32_UI,
-        RGBA_32_F,
-    }
-    m_format;
-    bool m_invert_rgb;
-
-    inline FramebufferFormat(Value format=RGBA_8, bool invert_rgb=true)
-            : m_format(format), m_invert_rgb(invert_rgb) {}
-    inline uint32_t GetFormat();
-    inline uint32_t GetFormatOrder();
-    inline operator Value() { return m_format; }
-};
-
-class Framebuffer
-{
-public:
-    Framebuffer(ivec2 size, FramebufferFormat fbo_format = FramebufferFormat());
-    ~Framebuffer();
-
-    TextureUniform GetTextureUniform() const;
-    ivec2 GetSize() const;
-
-    class image GetImage() const;
-
-    void Bind();
-    void Unbind();
-
-private:
-    class FramebufferData *m_data;
-};
-
-} /* namespace lol */
-
diff --git a/src/lol/gpu/indexbuffer.h b/src/lol/gpu/indexbuffer.h
deleted file mode 100644
index 1aa53bac..00000000
--- a/src/lol/gpu/indexbuffer.h
+++ /dev/null
@@ -1,54 +0,0 @@
-//
-// Lol Engine
-//
-// Copyright: (c) 2010-2013 Sam Hocevar <sam@hocevar.net>
-//   This program is free software; you can redistribute it and/or
-//   modify it under the terms of the Do What The Fuck You Want To
-//   Public License, Version 2, as published by Sam Hocevar. See
-//   http://www.wtfpl.net/ for more details.
-//
-
-#pragma once
-
-//
-// The IndexBuffer class
-// ---------------------
-//
-
-#include <cstring>
-
-namespace lol
-{
-
-class IndexBuffer
-{
-    friend class Mesh;
-
-public:
-    IndexBuffer(size_t size);
-    ~IndexBuffer();
-
-    size_t size();
-
-    void set_data(void const *data, size_t size)
-    {
-        auto ptr = lock(0, size);
-        ::memcpy(ptr, data, size);
-        unlock();
-    }
-
-    void *lock(size_t offset, size_t size);
-    void unlock();
-
-    void Bind();
-    void Unbind();
-
-protected:
-    uint16_t *GetData();
-
-private:
-    class IndexBufferData *m_data;
-};
-
-} /* namespace lol */
-
diff --git a/src/lol/gpu/lolfx.h b/src/lol/gpu/lolfx.h
deleted file mode 100644
index 8dc243e4..00000000
--- a/src/lol/gpu/lolfx.h
+++ /dev/null
@@ -1,45 +0,0 @@
-//
-// Lol Engine
-//
-// Copyright: (c) 2010-2013 Sam Hocevar <sam@hocevar.net>
-//   This program is free software; you can redistribute it and/or
-//   modify it under the terms of the Do What The Fuck You Want To
-//   Public License, Version 2, as published by Sam Hocevar. See
-//   http://www.wtfpl.net/ for more details.
-//
-
-#pragma once
-
-//
-// The LolFx class
-// ---------------
-//
-
-#include <lol/gpu/shader.h>
-
-namespace lol
-{
-
-class LolFx
-{
-    friend class LolFxParser;
-
-public:
-    LolFx();
-
-    bool Compile(char const *command);
-
-private:
-    /* Simple GL / DX render states */
-    bool m_blend;
-    bool m_alphatest;
-    bool m_cullface;
-    bool m_depthtest;
-    bool m_depthmask;
-
-    /* Our shaders -- FIXME: should be split if possible */
-    Shader *m_shader;
-};
-
-} /* namespace lol */
-
diff --git a/src/lol/gpu/rendercontext.h b/src/lol/gpu/rendercontext.h
deleted file mode 100644
index 4fe308c3..00000000
--- a/src/lol/gpu/rendercontext.h
+++ /dev/null
@@ -1,70 +0,0 @@
-//
-//  Lol Engine
-//
-//  Copyright © 2010—2019 Sam Hocevar <sam@hocevar.net>
-//
-//  Lol Engine is free software. It comes without any warranty, to
-//  the extent permitted by applicable law. You can redistribute it
-//  and/or modify it under the terms of the Do What the Fuck You Want
-//  to Public License, Version 2, as published by the WTFPL Task Force.
-//  See http://www.wtfpl.net/ for more details.
-//
-
-#pragma once
-
-#include <lol/gpu/renderer.h>
-
-#include <memory>
-
-//
-// The RenderContext class
-// -----------------------
-//
-
-namespace lol
-{
-
-class RenderContextData;
-
-class render_context
-{
-public:
-    render_context(std::shared_ptr<Renderer> renderer);
-    ~render_context();
-
-    void viewport(ibox2 viewport);
-    void clear_color(vec4 color);
-    void clear_depth(float depth);
-    void alpha_func(AlphaFunc func, float alpha);
-    void blend_equation(BlendEquation rgb, BlendEquation alpha);
-    void blend_func(BlendFunc src, BlendFunc dst);
-    void depth_func(DepthFunc func);
-    void depth_mask(DepthMask mask);
-    void cull_mode(CullMode mode);
-    void polygon_mode(PolygonMode mode);
-    void scissor_mode(ScissorMode mode);
-    void scissor_rect(vec4 rect);
-
-    ibox2 viewport();
-    vec4 clear_color();
-    float clear_depth();
-    AlphaFunc alpha_func();
-    float alpha_value();
-    BlendEquation blend_equation_rgb();
-    BlendEquation blend_equation_alpha();
-    BlendFunc blend_func_src();
-    BlendFunc blend_func_dst();
-    DepthFunc depth_func();
-    DepthMask depth_mask();
-    CullMode cull_mode();
-    PolygonMode polygon_mode();
-    ScissorMode scissor_mode();
-    vec4 scissor_rect();
-
-private:
-    std::shared_ptr<Renderer> m_renderer;
-    std::unique_ptr<RenderContextData> m_data;
-};
-
-} /* namespace lol */
-
diff --git a/src/lol/gpu/renderer.h b/src/lol/gpu/renderer.h
deleted file mode 100644
index 73b311ea..00000000
--- a/src/lol/gpu/renderer.h
+++ /dev/null
@@ -1,189 +0,0 @@
-//
-//  Lol Engine
-//
-//  Copyright © 2010—2019 Sam Hocevar <sam@hocevar.net>
-//
-//  Lol Engine is free software. It comes without any warranty, to
-//  the extent permitted by applicable law. You can redistribute it
-//  and/or modify it under the terms of the Do What the Fuck You Want
-//  to Public License, Version 2, as published by the WTFPL Task Force.
-//  See http://www.wtfpl.net/ for more details.
-//
-
-#pragma once
-
-//
-// The Renderer class
-// ------------------
-//
-
-namespace lol
-{
-
-class RendererData;
-
-/* A list of bitmasks to clear a render buffer. */
-enum class ClearMask : uint8_t
-{
-    /* Note: D3D9 doesn't appear to support the accumulation buffer,
-     * and it is a deprecated OpenGL feature. No reason to support it. */
-    Color   = 1 << 0,
-    Depth   = 1 << 1,
-    Stencil = 1 << 2,
-
-    All     = 0xff,
-};
-
-static inline ClearMask operator |(ClearMask const &a, ClearMask const &b)
-{
-    return ClearMask((uint8_t)a | (uint8_t)b);
-}
-
-static inline bool operator &(ClearMask const &a, ClearMask const &b)
-{
-    return !!((uint8_t)a & (uint8_t)b);
-}
-
-/* A safe enum to indicate the blend equation. */
-enum class BlendEquation : uint8_t
-{
-    Add,
-    Subtract,
-    ReverseSubtract,
-    Min,
-    Max,
-};
-
-/* A safe enum to indicate the blending factors. */
-enum class BlendFunc : uint8_t
-{
-    Disabled,
-    Zero,
-    One,
-    SrcColor,
-    OneMinusSrcColor,
-    DstColor,
-    OneMinusDstColor,
-    SrcAlpha,
-    OneMinusSrcAlpha,
-    DstAlpha,
-    OneMinusDstAlpha,
-    ConstantColor,
-    OneMinusConstantColor,
-    ConstantAlpha,
-    OneMinusConstantAlpha,
-};
-
-/* A safe enum to indicate the face culling mode. */
-enum class CullMode : uint8_t
-{
-    Disabled,
-    Clockwise,
-    CounterClockwise,
-};
-
-/* A safe enum to indicate the polygon mode. */
-enum class PolygonMode : uint8_t
-{
-    Fill,
-    Line,
-    Point,
-};
-
-/* A safe enum to indicate the depth test mode. */
-enum class DepthFunc : uint8_t
-{
-    Disabled,
-    Never,
-    Less,
-    Equal,
-    LessOrEqual,
-    Greater,
-    NotEqual,
-    GreaterOrEqual,
-    Always,
-};
-
-/* A safe enum to indicate the depth mask. */
-enum class DepthMask : uint8_t
-{
-    Disabled,
-    Enabled,
-};
-
-/* A safe enum to indicate the alpha test mode. */
-enum class AlphaFunc : uint8_t
-{
-    Disabled,
-    Never,
-    Less,
-    Equal,
-    LessOrEqual,
-    Greater,
-    NotEqual,
-    GreaterOrEqual,
-    Always,
-};
-
-/* A safe enum to indicate the depth mask. */
-enum class ScissorMode : uint8_t
-{
-    Disabled,
-    Enabled,
-};
-
-class Renderer
-{
-public:
-    // FIXME: only the Scene class should be allowed to create a renderer
-    Renderer(ivec2 size);
-    ~Renderer();
-
-    void clear(ClearMask mask);
-
-    void viewport(ibox2 bounds);
-    ibox2 viewport() const;
-    float xy_ratio() const;
-    float yx_ratio() const;
-
-    void clear_color(vec4 color);
-    vec4 clear_color() const;
-
-    void clear_depth(float depth);
-    float clear_depth() const;
-
-    void SetAlphaFunc(AlphaFunc func, float alpha);
-    AlphaFunc GetAlphaFunc() const;
-    float GetAlphaValue() const;
-
-    void SetBlendEquation(BlendEquation rgb, BlendEquation alpha);
-    BlendEquation GetBlendEquationRgb() const;
-    BlendEquation GetBlendEquationAlpha() const;
-
-    void SetBlendFunc(BlendFunc src, BlendFunc dst);
-    BlendFunc GetBlendFuncSrc() const;
-    BlendFunc GetBlendFuncDst() const;
-
-    void SetDepthFunc(DepthFunc func);
-    DepthFunc GetDepthFunc() const;
-
-    void SetDepthMask(DepthMask mask);
-    DepthMask GetDepthMask() const;
-
-    void SetCullMode(CullMode mode);
-    CullMode GetCullMode() const;
-
-    void SetPolygonMode(PolygonMode mode);
-    PolygonMode GetPolygonMode() const;
-
-    void SetScissorMode(ScissorMode mode);
-    void SetScissorRect(vec4 rect);
-    ScissorMode GetScissorMode() const;
-    vec4 GetScissorRect() const;
-
-private:
-    std::unique_ptr<RendererData> m_data;
-};
-
-} /* namespace lol */
-
diff --git a/src/lol/gpu/shader.h b/src/lol/gpu/shader.h
deleted file mode 100644
index 8b136311..00000000
--- a/src/lol/gpu/shader.h
+++ /dev/null
@@ -1,470 +0,0 @@
-//
-//  Lol Engine
-//
-//  Copyright © 2010—2019 Sam Hocevar <sam@hocevar.net>
-//
-//  Lol Engine is free software. It comes without any warranty, to
-//  the extent permitted by applicable law. You can redistribute it
-//  and/or modify it under the terms of the Do What the Fuck You Want
-//  to Public License, Version 2, as published by the WTFPL Task Force.
-//  See http://www.wtfpl.net/ for more details.
-//
-
-#pragma once
-
-//
-// The Shader class
-// ----------------
-//
-
-#include <string>
-#include <map>
-#include <memory>
-#include <cstdint>
-
-#include "engine/entity.h"
-
-/* External declaration for LolFx files. */
-#define LOLFX_RESOURCE_DECLARE(name) \
-    extern "C" char const *lolfx_resource_##name
-#define LOLFX_RESOURCE_HELPER(name) #name ".lolfx"
-#define LOLFX_RESOURCE_NAME(name) \
-    LOLFX_RESOURCE_HELPER(name), lolfx_resource_##name
-
-namespace lol
-{
-
-/* A safe enum to indicate how a vertex stream is going to be used. For
- * now there is only TexCoord and not TexCoord0 TexCoord1 etc. because
- * we can always reorganise the vertex declaration for the indices to
- * match. If the need arises these enums will be added. */
-//VertexUsageBase -------------------------------------------------------------
-struct VertexUsageBase : public StructSafeEnum
-{
-    enum Type
-    {
-        Position,
-        BlendWeight,
-        BlendIndices,
-        Normal,
-        PointSize,
-        TexCoord,
-        TexCoordExt,
-        Tangent,
-        Binormal,
-        TessFactor,
-        PositionT,
-        Color,
-        Fog,
-        Depth,
-        Sample,
-        MAX,
-    };
-
-protected:
-    virtual bool BuildEnumMap(std::map<int64_t, std::string>& enum_map)
-    {
-        enum_map[Position] = "Position";
-        enum_map[BlendWeight] = "BlendWeight";
-        enum_map[BlendIndices] = "BlendIndices";
-        enum_map[Normal] = "Normal";
-        enum_map[PointSize] = "PointSize";
-        enum_map[TexCoord] = "TexCoord";
-        enum_map[TexCoordExt] = "TexCoordExt";
-        enum_map[Tangent] = "Tangent";
-        enum_map[Binormal] = "Binormal";
-        enum_map[TessFactor] = "TessFactor";
-        enum_map[PositionT] = "PositionT";
-        enum_map[Color] = "Color";
-        enum_map[Fog] = "Fog";
-        enum_map[Depth] = "Depth";
-        enum_map[Sample] = "Sample";
-        enum_map[MAX] = "MAX";
-        return true;
-    }
-};
-typedef SafeEnum<VertexUsageBase> VertexUsage;
-
-//-----------------------------------------------------------------------------
-//Enum definitions
-//-----------------------------------------------------------------------------
-//ShaderVariableBase ----------------------------------------------------------
-struct ShaderVariableBase
-{
-    enum Type
-    {
-        //Main shader parameters
-        Attribute = 0,
-        Uniform,
-        Varying,
-
-        //Passed variables, defined as local main() variables
-        InOut,
-
-        MAX
-    };
-protected:
-    virtual bool BuildEnumMap(std::map<int64_t, std::string>& enum_map)
-    {
-        enum_map[Attribute] = "Attribute";
-        enum_map[Uniform] = "Uniform";
-        enum_map[Varying] = "Varying";
-        enum_map[InOut] = "InOut";
-        enum_map[MAX] = "MAX";
-        return true;
-    }
-};
-typedef SafeEnum<ShaderVariableBase> ShaderVariable;
-
-//ShaderProgramBase -----------------------------------------------------------
-struct ShaderProgramBase
-{
-    enum Type
-    {
-        Geometry = 0,
-        Vertex,
-        Pixel,
-
-        MAX
-    };
-protected:
-    virtual bool BuildEnumMap(std::map<int64_t, std::string>& enum_map)
-    {
-        enum_map[Geometry] = "Geometry";
-        enum_map[Vertex] = "Vertex";
-        enum_map[Pixel] = "Pixel";
-        enum_map[MAX] = "MAX";
-        return true;
-    }
-};
-typedef SafeEnum<ShaderProgramBase> ShaderProgram;
-
-//ShaderProgramBase -----------------------------------------------------------
-struct ShaderVariableTypeBase
-{
-    enum Type
-    {
-        Bool,
-        Int, UInt,
-        Float,
-        Double,
-        Vec2, Vec3, Vec4,
-        DVec2, DVec3, DVec4,
-        BVec2, BVec3, BVec4,
-        IVec2, IVec3, IVec4,
-        UVec2, UVec3, UVec4,
-
-        Mat2, Mat3, Mat4,
-
-        sampler1D,
-        sampler2D,
-        sampler3D,
-        samplerCube,
-        sampler2DRect,
-        sampler1DArray,
-        sampler2DArray,
-        samplerCubeArray,
-        samplerBuffer,
-        sampler2DMS,
-        sampler2DMSArray,
-
-        isampler1D,
-        isampler2D,
-        isampler3D,
-        isamplerCube,
-        isampler2DRect,
-        isampler1DArray,
-        isampler2DArray,
-        isamplerCubeArray,
-        isamplerBuffer,
-        isampler2DMS,
-        isampler2DMSArray,
-
-        usampler1D,
-        usampler2D,
-        usampler3D,
-        usamplerCube,
-        usampler2DRect,
-        usampler1DArray,
-        usampler2DArray,
-        usamplerCubeArray,
-        usamplerBuffer,
-        usampler2DMS,
-        usampler2DMSArray,
-
-        sampler1DShadow,
-        sampler2DShadow,
-        samplerCubeShadow,
-        sampler2DRectShadow,
-        sampler1DArrayShadow,
-        sampler2DArrayShadow,
-        samplerCubeArrayShadow,
-
-        MAX
-    };
-protected:
-    virtual bool BuildEnumMap(std::map<int64_t, std::string>& enum_map)
-    {
-        enum_map[Bool] = "bool";
-        enum_map[Int] = "int"; enum_map[UInt] = "uint";
-        enum_map[Float] = "float";
-        enum_map[Double] = "double";
-        enum_map[Vec2] = "vec2"; enum_map[Vec3] = "vec3"; enum_map[Vec4] = "vec4";
-        enum_map[DVec2] = "dvec2"; enum_map[DVec3] = "dvec3"; enum_map[DVec4] = "dvec4";
-        enum_map[BVec2] = "bvec2"; enum_map[BVec3] = "bvec3"; enum_map[BVec4] = "bvec4";
-        enum_map[IVec2] = "ivec2"; enum_map[IVec3] = "ivec3"; enum_map[IVec4] = "ivec4";
-        enum_map[UVec2] = "uvec2"; enum_map[UVec3] = "uvec3"; enum_map[UVec4] = "uvec4";
-
-        enum_map[Mat2] = "mat2";
-        enum_map[Mat3] = "mat3";
-        enum_map[Mat4] = "mat4";
-
-        enum_map[sampler1D] = "sampler1D";
-        enum_map[sampler2D] = "sampler2D";
-        enum_map[sampler3D] = "sampler3D";
-        enum_map[samplerCube] = "samplerCube";
-        enum_map[sampler2DRect] = "sampler2DRect";
-        enum_map[sampler1DArray] = "sampler1DArray";
-        enum_map[sampler2DArray] = "sampler2DArray";
-        enum_map[samplerCubeArray] = "samplerCubeArray";
-        enum_map[samplerBuffer] = "samplerBuffer";
-        enum_map[sampler2DMS] = "sampler2DMS";
-        enum_map[sampler2DMSArray] = "sampler2DMSArray";
-
-        enum_map[isampler1D] = "isampler1D";
-        enum_map[isampler2D] = "isampler2D";
-        enum_map[isampler3D] = "isampler3D";
-        enum_map[isamplerCube] = "isamplerCube";
-        enum_map[isampler2DRect] = "isampler2DRect";
-        enum_map[isampler1DArray] = "isampler1DArray";
-        enum_map[isampler2DArray] = "isampler2DArray";
-        enum_map[isamplerCubeArray] = "isamplerCubeArray";
-        enum_map[isamplerBuffer] = "isamplerBuffer";
-        enum_map[isampler2DMS] = "isampler2DMS";
-        enum_map[isampler2DMSArray] = "isampler2DMSArray";
-
-        enum_map[usampler1D] = "usampler1D";
-        enum_map[usampler2D] = "usampler2D";
-        enum_map[usampler3D] = "usampler3D";
-        enum_map[usamplerCube] = "usamplerCube";
-        enum_map[usampler2DRect] = "usampler2DRect";
-        enum_map[usampler1DArray] = "usampler1DArray";
-        enum_map[usampler2DArray] = "usampler2DArray";
-        enum_map[usamplerCubeArray] = "usamplerCubeArray";
-        enum_map[usamplerBuffer] = "usamplerBuffer";
-        enum_map[usampler2DMS] = "usampler2DMS";
-        enum_map[usampler2DMSArray] = "usampler2DMSArray";
-
-        enum_map[sampler1DShadow] = "sampler1DShadow";
-        enum_map[sampler2DShadow] = "sampler2DShadow";
-        enum_map[samplerCubeShadow] = "samplerCubeShadow";
-        enum_map[sampler2DRectShadow] = "sampler2DRectShadow";
-        enum_map[sampler1DArrayShadow] = "sampler1DArrayShadow";
-        enum_map[sampler2DArrayShadow] = "sampler2DArrayShadow";
-        enum_map[samplerCubeArrayShadow] = "samplerCubeArrayShadow";
-        return true;
-    }
-};
-typedef SafeEnum<ShaderVariableTypeBase> ShaderVariableType;
-
-//ShaderUniform ---------------------------------------------------------------
-struct ShaderUniform
-{
-    friend class Shader;
-
-public:
-    inline ShaderUniform() : flags(0) {}
-
-protected:
-    uintptr_t frag, vert;
-    /* FIXME: do we really need this to indicate which locations are valid? */
-    uint32_t flags;
-};
-
-//ShaderAttrib ----------------------------------------------------------------
-struct ShaderAttrib
-{
-    friend class Shader;
-    friend class VertexDeclaration;
-
-public:
-    inline ShaderAttrib() : m_flags((uint64_t)0 - 1) {}
-    inline bool IsValid() { return m_flags != (uint64_t)0 - 1; }
-    inline VertexUsage GetUsage() { return VertexUsage((int)(m_flags >> 16) & 0xffff); }
-    inline int GetIndex() { return (int)(m_flags & 0xffff); }
-
-private:
-    uint64_t m_flags;
-};
-
-//TextureUniform --------------------------------------------------------------
-struct TextureUniform
-{
-    friend class Shader;
-    friend class Framebuffer;
-    friend class Texture;
-
-public:
-    inline TextureUniform() : m_flags(0) {}
-
-private:
-    uint64_t m_flags;
-};
-
-class ShaderData;
-
-//Shader ----------------------------------------------------------------------
-class Shader
-{
-public:
-    static std::shared_ptr<Shader> Create(std::string const &name, std::string const &code);
-
-    int GetAttribCount() const;
-    ShaderAttrib GetAttribLocation(VertexUsage usage, int index) const;
-
-    ShaderUniform GetUniformLocation(std::string const& uni) const;
-    ShaderUniform GetUniformLocation(char const *uni) const;
-    void SetUniform(ShaderUniform const &uni, int i);
-    void SetUniform(ShaderUniform const &uni, ivec2 const &v);
-    void SetUniform(ShaderUniform const &uni, ivec3 const &v);
-    void SetUniform(ShaderUniform const &uni, ivec4 const &v);
-    void SetUniform(ShaderUniform const &uni, float f);
-    void SetUniform(ShaderUniform const &uni, vec2 const &v);
-    void SetUniform(ShaderUniform const &uni, vec3 const &v);
-    void SetUniform(ShaderUniform const &uni, vec4 const &v);
-    void SetUniform(ShaderUniform const &uni, mat2 const &m);
-    void SetUniform(ShaderUniform const &uni, mat3 const &m);
-    void SetUniform(ShaderUniform const &uni, mat4 const &m);
-    void SetUniform(ShaderUniform const &uni, TextureUniform tex, int index);
-
-    void SetUniform(ShaderUniform const &uni, array<float> const &v);
-    void SetUniform(ShaderUniform const &uni, array<vec2> const &v);
-    void SetUniform(ShaderUniform const &uni, array<vec3> const &v);
-    void SetUniform(ShaderUniform const &uni, array<vec4> const &v);
-
-    void Bind() const;
-    void Unbind() const;
-
-    Shader(std::string const &name, std::string const &vert, std::string const &frag);
-    ~Shader();
-
-private:
-    std::unique_ptr<ShaderData> data;
-
-public:
-    static std::string GetVariablePrefix(const ShaderVariable variable);
-    static std::string GetVariableQualifier(const ShaderVariable variable);
-    static std::string GetFunctionQualifier(const ShaderVariable variable, const ShaderProgram program);
-    static std::string GetProgramQualifier(const ShaderProgram program);
-    static std::string GetProgramOutVariable(const ShaderProgram program);
-    static std::string GetProgramOutVariableLocal(const ShaderProgram program);
-};
-
-//ShaderVar -------------------------------------------------------------------
-class ShaderVar
-{
-    friend class ShaderBuilder;
-    friend class ShaderBlock;
-
-public:
-    ShaderVar() { }
-    ShaderVar(ShaderVariable const& qualifier, std::string const& type, std::string const& name)
-    {
-        m_qualifier = qualifier;
-        m_type = type;
-        m_name = name;
-    }
-    ShaderVar(ShaderVariable const& qualifier, ShaderVariableType const& type, std::string const& name)
-        : ShaderVar(qualifier, ShaderVariableType(type).tostring(), name)
-    { }
-
-    ~ShaderVar() { }
-
-    inline std::string tostring() const { return Shader::GetVariablePrefix(m_qualifier) + m_name; }
-    inline ShaderVariable GetQualifier() const { return m_qualifier; }
-    inline std::string GetType() const { return m_type; }
-    inline std::string operator+(std::string const& s) { return tostring() + s; }
-
-    static ShaderVar GetShaderOut(ShaderProgram program);
-
-protected:
-    ShaderVariable m_qualifier;
-    std::string m_type;
-    std::string m_name;
-};
-
-//ShaderBlock -----------------------------------------------------------------
-class ShaderBlock
-{
-    friend class ShaderBuilder;
-
-protected:
-    std::string m_name;
-
-    //--------------------------
-    //map : <var_name, var_type>
-    //--------------------------
-
-    //Main shader parameters
-    std::map<std::string, std::string> m_parameters[ShaderVariable::MAX];
-
-    //Actual code
-    std::string m_code_main;
-    std::string m_code_custom;
-
-public:
-    ShaderBlock(std::string const& name) : m_name(name) { }
-    ~ShaderBlock() { }
-
-    std::string const& GetName() { return m_name; }
-    //Sets code that will be used in the main
-    void SetMainCode(std::string const& code_main) { m_code_main = code_main; }
-    //Sets custom code that will be put before the main -so functions-
-    void SetCustomCode(std::string const& code_custom) { m_code_custom = code_custom; }
-    //Add parameter to the block
-    void AddVar(ShaderVar const& var);
-    inline ShaderBlock& operator<<(ShaderVar const& var)
-    {
-        AddVar(var);
-        return *this;
-    }
-
-protected:
-    void AddCallParameters(std::map<std::string, std::string> const& variables, std::string& result);
-    void AddDefinitionParameters(const ShaderVariable variable, const ShaderProgram program, std::map<std::string, std::string>& variables, std::string& result);
-    void Build(const ShaderProgram program, std::string& call, std::string& function);
-};
-
-//Shaderbuilder ---------------------------------------------------------------
-class ShaderBuilder
-{
-protected:
-    std::string m_name;
-    std::string m_version;
-    ShaderProgram m_current_program = ShaderProgram::MAX;
-
-    //Blocks
-    array<ShaderBlock*> m_blocks[ShaderProgram::MAX];
-
-    //Final shader parameters
-    std::map<std::string, std::string> m_parameters[ShaderProgram::MAX][ShaderVariable::MAX];
-
-public:
-    ShaderBuilder(std::string const& name, std::string const& version);
-    ~ShaderBuilder();
-
-    std::string const& GetName();
-    ShaderBuilder& operator<<(const ShaderProgram program);
-    ShaderBuilder& operator<<(ShaderBlock* block);
-    ShaderBuilder& operator<<(ShaderBlock const& block);
-
-protected:
-    std::string AddSlotOutVariableLocal(const ShaderProgram program);
-    void MergeParameters(std::map<std::string, std::string>& variables, std::map<std::string, std::string>& merged);
-
-public:
-    std::string Build();
-};
-
-} /* namespace lol */
-
diff --git a/src/lol/gpu/texture.h b/src/lol/gpu/texture.h
deleted file mode 100644
index 3fa5da7b..00000000
--- a/src/lol/gpu/texture.h
+++ /dev/null
@@ -1,78 +0,0 @@
-//
-// Lol Engine
-//
-// Copyright: (c) 2010-2013 Sam Hocevar <sam@hocevar.net>
-//   This program is free software; you can redistribute it and/or
-//   modify it under the terms of the Do What The Fuck You Want To
-//   Public License, Version 2, as published by Sam Hocevar. See
-//   http://www.wtfpl.net/ for more details.
-//
-
-#pragma once
-
-//
-// The Texture class
-// -----------------
-//
-
-#include <lol/gpu/shader.h>
-
-namespace lol
-{
-
-struct TextureMagFilter
-{
-    enum Value
-    {
-        Unknown = 0,
-        NEAREST_TEXEL,
-        LINEAR_TEXEL,
-    }
-    m_value;
-
-    inline TextureMagFilter() : m_value(Unknown) {}
-    inline TextureMagFilter(Value v) : m_value(v) {}
-    inline operator Value() { return m_value; }
-};
-
-struct TextureMinFilter
-{
-    enum Value
-    {
-        Unknown = 0,
-        NEAREST_TEXEL_NO_MIPMAP,
-        LINEAR_TEXEL_NO_MIPMAP,
-        NEAREST_TEXEL_NEAREST_MIPMAP,
-        NEAREST_TEXEL_LINEAR_MIPMAP,
-        LINEAR_TEXEL_NEAREST_MIPMAP,
-        LINEAR_TEXEL_LINEAR_MIPMAP,
-    }
-    m_value;
-
-    inline TextureMinFilter() : m_value(Unknown) {}
-    inline TextureMinFilter(Value v) : m_value(v) {}
-    inline operator Value() { return m_value; }
-};
-
-class Texture
-{
-public:
-    Texture(ivec2 size, PixelFormat format);
-    ~Texture();
-
-    void Bind();
-    void SetData(void *data);
-    void SetSubData(ivec2 origin, ivec2 size, void *data);
-
-    void SetMagFiltering(TextureMagFilter filter);
-    void SetMinFiltering(TextureMinFilter filter);
-    void GenerateMipmaps();
-
-    TextureUniform GetTextureUniform() const;
-
-private:
-    class TextureData *m_data;
-};
-
-} /* namespace lol */
-
diff --git a/src/lol/gpu/vertexbuffer.h b/src/lol/gpu/vertexbuffer.h
deleted file mode 100644
index 0af6a7af..00000000
--- a/src/lol/gpu/vertexbuffer.h
+++ /dev/null
@@ -1,260 +0,0 @@
-//
-//  Lol Engine
-//
-//  Copyright © 2010—2019 Sam Hocevar <sam@hocevar.net>
-//
-//  Lol Engine is free software. It comes without any warranty, to
-//  the extent permitted by applicable law. You can redistribute it
-//  and/or modify it under the terms of the Do What the Fuck You Want
-//  to Public License, Version 2, as published by the WTFPL Task Force.
-//  See http://www.wtfpl.net/ for more details.
-//
-
-#pragma once
-
-//
-// The VertexBuffer and VertexDeclaration classes
-// ----------------------------------------------
-//
-
-#include <cstring>
-#include <map>
-
-namespace lol
-{
-
-class VertexBuffer
-{
-    friend class VertexDeclaration;
-
-public:
-    VertexBuffer(size_t size);
-    ~VertexBuffer();
-
-    size_t size();
-
-    void set_data(void const *data, size_t size)
-    {
-        auto ptr = lock(0, size);
-        ::memcpy(ptr, data, size);
-        unlock();
-    }
-
-    void *lock(size_t offset, size_t size);
-    void unlock();
-
-private:
-    class VertexBufferData *m_data;
-};
-
-/* A safe enum to indicate what kind of primitive to draw. Used in
- * VertexDeclaration::DrawElements() for instance. */
-//MeshPrimitiveBase -- A safe enum for Primitive edge face. -------------------
-struct MeshPrimitiveBase : public StructSafeEnum
-{
-    enum Type
-    {
-        Triangles,
-        TriangleStrips,
-        TriangleFans,
-        Points,
-        Lines,
-    };
-protected:
-    virtual bool BuildEnumMap(std::map<int64_t, std::string>& enum_map)
-    {
-        enum_map[Triangles]      = "Triangles";
-        enum_map[TriangleStrips] = "TriangleStrips";
-        enum_map[TriangleFans]   = "TriangleFans";
-        enum_map[Points]         = "Points";
-        enum_map[Lines]          = "Lines";
-        return true;
-    }
-};
-typedef SafeEnum<MeshPrimitiveBase> MeshPrimitive;
-
-class VertexStreamBase
-{
-    friend class VertexDeclaration;
-
-public:
-    enum
-    {
-        /* XXX: be sure to fix all appropriate places in vertexbuffer.cpp
-         * when modifying this list. */
-        Typevoid = 0,
-        Typehalf,     Typef16vec2, Typef16vec3, Typef16vec4,
-        Typefloat,    Typevec2,    Typevec3,    Typevec4,
-        Typedouble,   Typedvec2,   Typedvec3,   Typedvec4,
-        Typeint8_t,   Typei8vec2,  Typei8vec3,  Typei8vec4,
-        Typeuint8_t,  Typeu8vec2,  Typeu8vec3,  Typeu8vec4,
-        Typeint16_t,  Typei16vec2, Typei16vec3, Typei16vec4,
-        Typeuint16_t, Typeu16vec2, Typeu16vec3, Typeu16vec4,
-        Typeint32_t,  Typeivec2,   Typeivec3,   Typeivec4,
-        Typeuint32_t, Typeuvec2,   Typeuvec3,   Typeuvec4,
-    };
-
-    int GetSize() const
-    {
-        int size = 0, i = 0;
-        while (m_streams[i].size)
-            size += m_streams[i++].size;
-        return size;
-    }
-
-    int GetStreamCount() const
-    {
-        int i = 0;
-        while (m_streams[i].size) ++i;
-        return i;
-    }
-
-    VertexUsage GetUsage(int index) const
-    {
-        return m_streams[index].usage;
-    }
-
-    uint8_t GetType(int index) const
-    {
-        return m_streams[index].stream_type;
-    }
-
-    uint8_t GetSize(int index) const
-    {
-        return m_streams[index].size;
-    }
-
-protected:
-
-#define __T(T) \
-    static uint8_t GetType(T *x) { UNUSED(x); return Type##T; }
-
-    __T(void)
-    __T(half)     __T(f16vec2) __T(f16vec3) __T(f16vec4)
-    __T(float)    __T(vec2)    __T(vec3)    __T(vec4)
-    __T(double)   __T(dvec2)   __T(dvec3)   __T(dvec4)
-    __T(int8_t)   __T(i8vec2)  __T(i8vec3)  __T(i8vec4)
-    __T(uint8_t)  __T(u8vec2)  __T(u8vec3)  __T(u8vec4)
-    __T(int16_t)  __T(i16vec2) __T(i16vec3) __T(i16vec4)
-    __T(uint16_t) __T(u16vec2) __T(u16vec3) __T(u16vec4)
-    __T(int32_t)  __T(ivec2)   __T(ivec3)   __T(ivec4)
-    __T(uint32_t) __T(uvec2)   __T(uvec3)   __T(uvec4)
-#undef __T
-
-    template<typename T> inline void AddStream(int n, VertexUsage usage)
-    {
-        m_streams[n].stream_type = GetType((T *)nullptr);
-        m_streams[n].usage = usage;
-        m_streams[n].size = sizeof(T);
-    }
-
-    VertexStreamBase() {}
-
-private:
-    struct { uint8_t stream_type, size; VertexUsage usage; } m_streams[12 + 1];
-
-    static VertexStreamBase const Empty;
-};
-
-/* Specialise this template for "void" to act as a NOP */
-template<>
-inline void VertexStreamBase::AddStream<void>(int n, VertexUsage usage)
-{
-    UNUSED(usage);
-    m_streams[n].size = 0;
-}
-
-template<typename T1 = void,  typename T2 = void,  typename T3 = void,
-         typename T4 = void,  typename T5 = void,  typename T6 = void,
-         typename T7 = void,  typename T8 = void,  typename T9 = void,
-         typename T10 = void, typename T11 = void, typename T12 = void>
-class VertexStream : public VertexStreamBase
-{
-public:
-    inline VertexStream(VertexUsage u1,
-                        VertexUsage u2 = VertexUsage::Position,
-                        VertexUsage u3 = VertexUsage::Position,
-                        VertexUsage u4 = VertexUsage::Position,
-                        VertexUsage u5 = VertexUsage::Position,
-                        VertexUsage u6 = VertexUsage::Position,
-                        VertexUsage u7 = VertexUsage::Position,
-                        VertexUsage u8 = VertexUsage::Position,
-                        VertexUsage u9 = VertexUsage::Position,
-                        VertexUsage u10 = VertexUsage::Position,
-                        VertexUsage u11 = VertexUsage::Position,
-                        VertexUsage u12 = VertexUsage::Position)
-    {
-        AddStream<T1>(0, u1);    AddStream<T2>(1, u2);
-        AddStream<T3>(2, u3);    AddStream<T4>(3, u4);
-        AddStream<T5>(4, u5);    AddStream<T6>(5, u6);
-        AddStream<T7>(6, u7);    AddStream<T8>(7, u8);
-        AddStream<T9>(8, u9);    AddStream<T10>(9, u10);
-        AddStream<T11>(10, u11); AddStream<T12>(11, u12);
-    }
-};
-
-class VertexDeclaration
-{
-public:
-    VertexDeclaration(VertexStreamBase const &s1 = VertexStreamBase::Empty,
-                      VertexStreamBase const &s2 = VertexStreamBase::Empty,
-                      VertexStreamBase const &s3 = VertexStreamBase::Empty,
-                      VertexStreamBase const &s4 = VertexStreamBase::Empty,
-                      VertexStreamBase const &s5 = VertexStreamBase::Empty,
-                      VertexStreamBase const &s6 = VertexStreamBase::Empty,
-                      VertexStreamBase const &s7 = VertexStreamBase::Empty,
-                      VertexStreamBase const &s8 = VertexStreamBase::Empty,
-                      VertexStreamBase const &s9 = VertexStreamBase::Empty,
-                      VertexStreamBase const &s10 = VertexStreamBase::Empty,
-                      VertexStreamBase const &s11 = VertexStreamBase::Empty,
-                      VertexStreamBase const &s12 = VertexStreamBase::Empty);
-    ~VertexDeclaration();
-
-    void Bind();
-
-    /* Draw elements. See MeshPrimitive for a list of all available
-     * types. Both skip and count are numbers of vertices, not primitives. */
-    void DrawElements(MeshPrimitive type, int skip, int count);
-
-    /* Draw elements. See MeshPrimitive for a list of all available
-     * types. Both skip and count are numbers of indices, not primitives. */
-    void DrawIndexedElements(MeshPrimitive type, int count, const short* skip = nullptr, short typeSize = 2);
-
-    void Unbind();
-    void SetStream(std::shared_ptr<VertexBuffer> vb,
-                   ShaderAttrib attr1,
-                   ShaderAttrib attr2 = ShaderAttrib(),
-                   ShaderAttrib attr3 = ShaderAttrib(),
-                   ShaderAttrib attr4 = ShaderAttrib(),
-                   ShaderAttrib attr5 = ShaderAttrib(),
-                   ShaderAttrib attr6 = ShaderAttrib(),
-                   ShaderAttrib attr7 = ShaderAttrib(),
-                   ShaderAttrib attr8 = ShaderAttrib(),
-                   ShaderAttrib attr9 = ShaderAttrib(),
-                   ShaderAttrib attr10 = ShaderAttrib(),
-                   ShaderAttrib attr11 = ShaderAttrib(),
-                   ShaderAttrib attr12 = ShaderAttrib());
-
-    void SetStream(std::shared_ptr<VertexBuffer> vb,
-                   ShaderAttrib attribs[]);
-
-    int GetStreamCount() const;
-
-    VertexStreamBase GetStream(int index) const;
-
-private:
-    void AddStream(VertexStreamBase const &);
-
-    struct
-    {
-        uint8_t stream_type, index, size;
-        VertexUsage usage;
-        int reg;
-    } m_streams[12 + 1];
-
-    unsigned int m_vao;
-    int m_count;
-};
-
-} /* namespace lol */
-
diff --git a/src/lol/image/image.h b/src/lol/image/image.h
deleted file mode 100644
index 275cdd6b..00000000
--- a/src/lol/image/image.h
+++ /dev/null
@@ -1,180 +0,0 @@
-//
-//  Lol Engine
-//
-//  Copyright © 2010—2018 Sam Hocevar <sam@hocevar.net>
-//
-//  Lol Engine is free software. It comes without any warranty, to
-//  the extent permitted by applicable law. You can redistribute it
-//  and/or modify it under the terms of the Do What the Fuck You Want
-//  to Public License, Version 2, as published by the WTFPL Task Force.
-//  See http://www.wtfpl.net/ for more details.
-//
-
-#pragma once
-
-//
-// The image class
-// ---------------
-//
-
-#include <lol/math/arraynd.h>
-#include <lol/math/vector.h>
-#include <lol/math/geometry.h>
-#include <lol/image/pixel.h>
-
-#include <string>
-
-namespace lol
-{
-
-enum class WrapMode : uint8_t
-{
-    Clamp,
-    Repeat,
-};
-
-enum class ScanMode : uint8_t
-{
-    Raster,
-    Serpentine,
-};
-
-enum class ResampleAlgorithm : uint8_t
-{
-    Bicubic,
-    Bresenham,
-};
-
-enum class EdiffAlgorithm : uint8_t
-{
-    FloydSteinberg,
-    JaJuNi,
-    Atkinson,
-    Fan,
-    ShiauFan,
-    ShiauFan2,
-    Stucki,
-    Burkes,
-    Sierra,
-    Sierra2,
-    Lite,
-};
-
-// image -----------------------------------------------------------------------
-class image
-{
-public:
-    image();
-    image(ivec2 size);
-    /* XXX: use of this ctor should be discouraged, as it will not
-     * return information about a possible error. */
-    image(std::string const &path);
-
-    /* Rule of three */
-    image(image const &other);
-    image & operator =(image other);
-    ~image();
-
-    void DummyFill();
-    void Copy(uint8_t* pixels, ivec2 const& size, PixelFormat fmt);
-    void Copy(image const &other);
-    bool load(std::string const &path);
-    bool save(std::string const &path);
-
-    /* Low level access */
-    ivec2 size() const;
-    void resize(ivec2);
-
-    PixelFormat format() const;
-    void set_format(PixelFormat fmt);
-
-    WrapMode GetWrapX() const;
-    WrapMode GetWrapY() const;
-    void SetWrap(WrapMode wrap_x, WrapMode wrap_y);
-
-    /* Lock continuous arrays of pixels for writing */
-    template<PixelFormat T> LOL_ATTR_NODISCARD typename PixelType<T>::type *lock();
-    LOL_ATTR_NODISCARD void *lock();
-    void unlock(void const *pixels);
-
-    /* Lock 2D arrays of pixels for writing */
-    template<PixelFormat T>
-    LOL_ATTR_NODISCARD inline array2d<typename PixelType<T>::type> &lock2d()
-    {
-        /* Hack: this indirection is needed because of a Visual Studio ICE */
-        return *(array2d<typename PixelType<T>::type> *)lock2d_helper(T);
-    }
-
-    template<typename T>
-    void unlock2d(array2d<T> const &);
-
-    /* Image processing kernels */
-    struct kernel
-    {
-        kernel() = delete;
-
-        static array2d<float> normalize(array2d<float> const &kernel);
-
-        static array2d<float> bayer(ivec2 size);
-        static array2d<float> halftone(ivec2 size);
-        static array2d<float> blue_noise(ivec2 size,
-                                         ivec2 gsize = ivec2(7, 7));
-        static array2d<float> ediff(EdiffAlgorithm algorithm);
-        static array2d<float> gaussian(vec2 radius,
-                                       float angle = 0.f,
-                                       vec2 delta = vec2(0.f, 0.f));
-    };
-
-    /* Rendering */
-    bool RenderRandom(ivec2 size);
-
-    /* Resize and crop */
-    image Resize(ivec2 size, ResampleAlgorithm algorithm);
-    image Crop(ibox2 box) const;
-
-    /* Image processing */
-    image AutoContrast() const;
-    image Brightness(float val) const;
-    image Contrast(float val) const;
-    image Convolution(array2d<float> const &kernel);
-    image Dilate();
-    image Erode();
-    image Invert() const;
-    image Median(ivec2 radii) const;
-    image Median(array2d<float> const &kernel) const;
-    image Sharpen(array2d<float> const &kernel);
-    image Threshold(float val) const;
-    image Threshold(vec3 val) const;
-    image RGBToYUV() const;
-    image YUVToRGB() const;
-
-    /* Dithering */
-    image dither_random() const;
-    image dither_ediff(array2d<float> const &kernel,
-                       ScanMode scan = ScanMode::Raster) const;
-    image dither_ostromoukhov(ScanMode scan = ScanMode::Raster) const;
-    image dither_ordered(array2d<float> const &kernel) const;
-    image dither_halftone(float radius, float angle) const;
-    image dither_dbs() const;
-
-    /* Combine images */
-    static image Merge(image &src1, image &src2, float alpha);
-    static image Mean(image &src1, image &src2);
-    static image Min(image &src1, image &src2);
-    static image Max(image &src1, image &src2);
-    static image Overlay(image &src1, image &src2);
-    static image Screen(image &src1, image &src2);
-    static image Multiply(image &src1, image &src2);
-    static image Divide(image &src1, image &src2);
-    static image Add(image &src1, image &src2);
-    static image Sub(image &src1, image &src2);
-    static image Difference(image &src1, image &src2);
-
-private:
-    void *lock2d_helper(PixelFormat T);
-
-    class image_data *m_data;
-};
-
-} /* namespace lol */
-
diff --git a/src/lol/image/movie.h b/src/lol/image/movie.h
deleted file mode 100644
index 1aa5bb4e..00000000
--- a/src/lol/image/movie.h
+++ /dev/null
@@ -1,53 +0,0 @@
-//
-//  Lol Engine
-//
-//  Copyright © 2010—2018 Sam Hocevar <sam@hocevar.net>
-//
-//  Lol Engine is free software. It comes without any warranty, to
-//  the extent permitted by applicable law. You can redistribute it
-//  and/or modify it under the terms of the Do What the Fuck You Want
-//  to Public License, Version 2, as published by the WTFPL Task Force.
-//  See http://www.wtfpl.net/ for more details.
-//
-
-#pragma once
-
-//
-// The movie class
-// ---------------
-//
-
-#include <lol/image/pixel.h>
-#include <lol/image/image.h>
-
-extern "C" struct AVFormatContext;
-extern "C" struct AVCodecContext;
-extern "C" struct AVStream;
-extern "C" struct AVFrame;
-
-namespace lol
-{
-
-class movie
-{
-public:
-    movie(ivec2 size);
-
-    bool open_file(std::string const &filename);
-    bool push_image(image &im);
-    void close();
-
-private:
-    bool open_codec();
-
-private:
-    AVFormatContext *m_avformat;
-    AVCodecContext *m_avcodec;
-    AVStream *m_stream;
-    AVFrame *m_frame;
-    ivec2 m_size;
-    int m_index;
-};
-
-} // namespace lol
-
diff --git a/src/lol/image/resource.h b/src/lol/image/resource.h
deleted file mode 100644
index a5f33998..00000000
--- a/src/lol/image/resource.h
+++ /dev/null
@@ -1,74 +0,0 @@
-//
-//  Lol Engine
-//
-//  Copyright © 2010—2018 Sam Hocevar <sam@hocevar.net>
-//            © 2016—2017 Benjamin “Touky” Huet <huet.benjamin@gmail.com>
-//
-//  Lol Engine is free software. It comes without any warranty, to
-//  the extent permitted by applicable law. You can redistribute it
-//  and/or modify it under the terms of the Do What the Fuck You Want
-//  to Public License, Version 2, as published by the WTFPL Task Force.
-//  See http://www.wtfpl.net/ for more details.
-//
-
-#pragma once
-
-//
-// The Resource class
-// ---------------
-//
-
-#include <lol/math/arraynd.h>
-#include <lol/math/vector.h>
-#include <lol/math/geometry.h>
-#include <lol/image/pixel.h>
-
-namespace lol
-{
-    //ResourceCodecData -----------------------------------------------------------
-    class ResourceCodecData
-    {
-    public:
-        ResourceCodecData() { }
-        virtual ~ResourceCodecData() { }
-    };
-
-    //ResourceImageData -----------------------------------------------------------
-    class ResourceImageData : public ResourceCodecData
-    {
-    public:
-        ResourceImageData(image* img)
-        {
-            m_image = img;
-        }
-
-        virtual ~ResourceImageData()
-        {
-            if (m_image)
-                delete m_image;
-        }
-
-        image* m_image = nullptr;
-    };
-
-    //ResourceImageData -----------------------------------------------------------
-    class ResourceTilesetData : public ResourceImageData
-    {
-    public:
-        ResourceTilesetData(image* img)
-            : ResourceImageData(img)
-        { }
-
-        array<ivec2, ivec2> m_tiles;
-    };
-
-    //ResourceLoader --------------------------------------------------------------
-    class ResourceLoader
-    {
-    public:
-        static ResourceCodecData* Load(std::string const &path);
-        static bool Save(std::string const &path, ResourceCodecData* data);
-    };
-
-} /* namespace lol */
-
diff --git a/src/lol/legacy.h b/src/lol/legacy.h
deleted file mode 100644
index aae63039..00000000
--- a/src/lol/legacy.h
+++ /dev/null
@@ -1,26 +0,0 @@
-//
-//  Lol Engine
-//
-//  Copyright © 2010—2017 Sam Hocevar <sam@hocevar.net>
-//
-//  Lol Engine is free software. It comes without any warranty, to
-//  the extent permitted by applicable law. You can redistribute it
-//  and/or modify it under the terms of the Do What the Fuck You Want
-//  to Public License, Version 2, as published by the WTFPL Task Force.
-//  See http://www.wtfpl.net/ for more details.
-//
-
-#pragma once
-
-//
-// Legacy types that will disappear one day
-// ----------------------------------------
-//
-
-namespace lol
-{
-
-typedef image Image;
-
-} /* namespace lol */
-
diff --git a/src/lol/lua.h b/src/lol/lua.h
deleted file mode 100644
index da06649e..00000000
--- a/src/lol/lua.h
+++ /dev/null
@@ -1,23 +0,0 @@
-//
-//  Lol Engine
-//
-//  Copyright © 2010—2017 Sam Hocevar <sam@hocevar.net>
-//
-//  Lol Engine is free software. It comes without any warranty, to
-//  the extent permitted by applicable law. You can redistribute it
-//  and/or modify it under the terms of the Do What the Fuck You Want
-//  to Public License, Version 2, as published by the WTFPL Task Force.
-//  See http://www.wtfpl.net/ for more details.
-//
-
-#pragma once
-
-//
-// Lua subsystem
-// -------------
-//
-
-// Lua
-#include <lol/../lolua/baselua.h>
-#include <lol/../easymesh/easymeshlua.h>
-
diff --git a/src/lol/net/http.h b/src/lol/net/http.h
deleted file mode 100644
index 340a7de7..00000000
--- a/src/lol/net/http.h
+++ /dev/null
@@ -1,62 +0,0 @@
-//
-//  Lol Engine
-//
-//  Copyright © 2010—2020 Sam Hocevar <sam@hocevar.net>
-//
-//  Lol Engine is free software. It comes without any warranty, to
-//  the extent permitted by applicable law. You can redistribute it
-//  and/or modify it under the terms of the Do What the Fuck You Want
-//  to Public License, Version 2, as published by the WTFPL Task Force.
-//  See http://www.wtfpl.net/ for more details.
-//
-
-#pragma once
-
-#include <memory>
-
-namespace lol
-{
-
-namespace net
-{
-
-namespace http
-{
-
-enum class status : uint8_t
-{
-    ready   = 0,
-    pending = 1,
-    success = 2,
-    error   = 3,
-};
-
-class client_impl;
-
-class client
-{
-public:
-    client();
-    ~client();
-
-    // Enqueue a query
-    void get(std::string const &url);
-
-    // Reset state
-    void reset();
-
-    // Get current URL, status (may be pending), and result
-    status get_status() const;
-    std::string const & get_url() const;
-    std::string const & get_result() const;
-
-private:
-    std::unique_ptr<client_impl> impl;
-};
-
-} // namespace http
-
-} // namespace net
-
-} // namespace lol
-
diff --git a/src/lol/public.h b/src/lol/public.h
deleted file mode 100644
index 7a0ef42d..00000000
--- a/src/lol/public.h
+++ /dev/null
@@ -1,30 +0,0 @@
-//
-//  Lol Engine
-//
-//  Copyright © 2010—2019 Sam Hocevar <sam@hocevar.net>
-//
-//  Lol Engine is free software. It comes without any warranty, to
-//  the extent permitted by applicable law. You can redistribute it
-//  and/or modify it under the terms of the Do What the Fuck You Want
-//  to Public License, Version 2, as published by the WTFPL Task Force.
-//  See http://www.wtfpl.net/ for more details.
-//
-
-#pragma once
-
-//
-// The main header
-// ———————————————
-//
-
-#include <lol/base/all.h>
-#include <lol/math/all.h>
-#include <lol/algorithm/all.h>
-#include <lol/image/all.h>
-#include <lol/sys/all.h>
-#include <lol/audio/all.h>
-#include <lol/net/all.h>
-#include <lol/gpu/all.h>
-#include <lol/debug/all.h>
-#include <lol/engine/all.h>
-
diff --git a/src/lol/sys/file.h b/src/lol/sys/file.h
deleted file mode 100644
index 24989299..00000000
--- a/src/lol/sys/file.h
+++ /dev/null
@@ -1,124 +0,0 @@
-//
-//  Lol Engine
-//
-//  Copyright © 2010—2018 Sam Hocevar <sam@hocevar.net>
-//
-//  Lol Engine is free software. It comes without any warranty, to
-//  the extent permitted by applicable law. You can redistribute it
-//  and/or modify it under the terms of the Do What the Fuck You Want
-//  to Public License, Version 2, as published by the WTFPL Task Force.
-//  See http://www.wtfpl.net/ for more details.
-//
-
-#pragma once
-
-//
-// File and buffer reading
-// -----------------------
-//
-
-#include <map>
-#include <cstdint>
-
-namespace lol
-{
-
-//FileAccessBase --------------------------------------------------------------
-struct FileAccessBase : public StructSafeEnum
-{
-    enum Type
-    {
-        Read = 0,
-        Write
-    };
-protected:
-    virtual bool BuildEnumMap(std::map<int64_t, std::string>& enum_map)
-    {
-        enum_map[Read]  = "Read";
-        enum_map[Write] = "Write";
-        return true;
-    }
-};
-typedef SafeEnum<FileAccessBase> FileAccess;
-
-//StreamTypeBase --------------------------------------------------------------
-struct StreamTypeBase : public StructSafeEnum
-{
-    enum Type
-    {
-        StdIn,
-        StdOut,
-        StdErr,
-        File,
-        FileBinary
-    };
-protected:
-    virtual bool BuildEnumMap(std::map<int64_t, std::string>& enum_map)
-    {
-        enum_map[StdIn]      = "StdIn";
-        enum_map[StdOut]     = "StdOut";
-        enum_map[StdErr]     = "StdErr";
-        enum_map[File]       = "File";
-        enum_map[FileBinary] = "FileBinary";
-        return true;
-    }
-};
-typedef SafeEnum<StreamTypeBase> StreamType;
-
-class File
-{
-public:
-    File();
-    File(File const &directory);
-    File &operator =(File const &that);
-    ~File();
-
-    void Open(StreamType stream);
-    void Open(std::string const &file, FileAccess mode, bool force_binary=false);
-    bool IsValid() const;
-    void Close();
-
-    int Read(uint8_t *buf, int count);
-    std::string ReadString();
-    int Write(void const *buf, int count);
-    int Write(std::string const &buf);
-    long int GetPosFromStart();
-    void SetPosFromStart(long int pos);
-    long int size();
-    long int GetModificationTime();
-
-private:
-    class FileData *m_data;
-};
-
-class Directory
-{
-public:
-    Directory(std::string const &name);
-    Directory(Directory const &that);
-    Directory &operator =(Directory const &that);
-    ~Directory();
-
-    void Open(FileAccess mode);
-    bool IsValid() const;
-    void Close();
-
-private:
-    bool GetContent(array<std::string>* files, array<Directory>* directories);
-public:
-    bool GetContent(array<std::string>& files, array<Directory>& directories);
-    bool GetContent(array<Directory>& directories);
-    bool GetContent(array<std::string>& files);
-    std::string GetName();
-    long int GetModificationTime();
-
-    static std::string GetCurrent();
-    static bool SetCurrent(std::string directory);
-
-private:
-    class DirectoryData* m_data;
-    std::string m_name;
-};
-
-} /* namespace lol */
-
diff --git a/src/lol/sys/init.h b/src/lol/sys/init.h
deleted file mode 100644
index 094389fe..00000000
--- a/src/lol/sys/init.h
+++ /dev/null
@@ -1,81 +0,0 @@
-//
-//  Lol Engine
-//
-//  Copyright © 2010—2018 Sam Hocevar <sam@hocevar.net>
-//
-//  Lol Engine is free software. It comes without any warranty, to
-//  the extent permitted by applicable law. You can redistribute it
-//  and/or modify it under the terms of the Do What the Fuck You Want
-//  to Public License, Version 2, as published by the WTFPL Task Force.
-//  See http://www.wtfpl.net/ for more details.
-//
-
-#pragma once
-
-//
-// Various system helper functions
-// -------------------------------
-//
-
-#include <string>
-#include <cstdint>
-#include <cstdlib>
-
-namespace lol
-{
-
-/*
- * Module-specific macros. These can be overridden by the build process,
- * typically with compiler command-line flags.
- */
-
-#if !defined LOL_CONFIG_PROJECTDIR
-#   define LOL_CONFIG_PROJECTDIR ""
-#endif
-
-#if !defined LOL_CONFIG_SOLUTIONDIR
-#   define LOL_CONFIG_SOLUTIONDIR ""
-#endif
-
-#if !defined LOL_CONFIG_SOURCESUBDIR
-#   define LOL_CONFIG_SOURCESUBDIR ""
-#endif
-
-/*
- * System namespace. The platform-specific stuff in there makes the API
- * not as clean as the rest of the framework.
- */
-
-namespace sys
-{
-
-extern void init(int argc, char *argv[],
-                 std::string const &projectdir = LOL_CONFIG_PROJECTDIR,
-                 std::string const &solutiondir = LOL_CONFIG_SOLUTIONDIR,
-                 std::string const &sourcesubdir = LOL_CONFIG_SOURCESUBDIR);
-
-extern void add_data_dir(std::string const &dir);
-extern array<std::string> get_path_list(std::string const &file);
-
-static inline std::string getenv(std::string const &var)
-{
-#if _MSC_VER
-    char *buf = nullptr;
-    size_t count = 0;
-    if (_dupenv_s(&buf, &count, var.c_str()) == 0 && buf)
-    {
-        std::string ret(buf);
-        free(buf);
-        return ret;
-    }
-#else
-    if (auto val = std::getenv(var.c_str()))
-        return std::string(val);
-#endif
-    return std::string();
-}
-
-} /* namespace sys */
-
-} /* namespace lol */
-
diff --git a/src/loldebug.h b/src/loldebug.h
deleted file mode 100644
index 4dd18e95..00000000
--- a/src/loldebug.h
+++ /dev/null
@@ -1,21 +0,0 @@
-//
-// Lol Engine
-//
-// Copyright: (c) 2010-2011 Sam Hocevar <sam@hocevar.net>
-//   This program is free software; you can redistribute it and/or
-//   modify it under the terms of the Do What The Fuck You Want To
-//   Public License, Version 2, as published by Sam Hocevar. See
-//   http://www.wtfpl.net/ for more details.
-//
-
-#pragma once
-
-//
-// Debug entity classes
-// --------------------
-//
-
-#include "debug/fps.h"
-#include "debug/record.h"
-#include "debug/stats.h"
-
diff --git a/src/lolgl.h b/src/lolgl.h
deleted file mode 100644
index ab3dfded..00000000
--- a/src/lolgl.h
+++ /dev/null
@@ -1,73 +0,0 @@
-//
-//  Lol Engine
-//
-//  Copyright © 2010—2019 Sam Hocevar <sam@hocevar.net>
-//
-//  Lol Engine is free software. It comes without any warranty, to
-//  the extent permitted by applicable law. You can redistribute it
-//  and/or modify it under the terms of the Do What the Fuck You Want
-//  to Public License, Version 2, as published by the WTFPL Task Force.
-//  See http://www.wtfpl.net/ for more details.
-//
-
-#pragma once
-
-//
-// The GL support
-// --------------
-//
-
-#define GL_GLEXT_PROTOTYPES
-
-/* Prefer GLES on browsers */
-#if defined __EMSCRIPTEN__
-#   undef HAVE_GL_2X
-#   undef LOL_USE_GLEW
-#endif
-
-/* Only define one GL platform */
-#if defined HAVE_GL_2X
-#   undef HAVE_GLES_2X
-#endif
-
-/* Include GL development headers.
- * Do not include glew.h on OS X, because the version shipped with Fink
- * links with X11 whereas we want the system’s Cocoa-friendly GL libs. */
-#if defined LOL_USE_GLEW && !defined __APPLE__
-#   include <GL/glew.h>
-#elif defined HAVE_NN_GLL_GLL_GL_H
-#   include <nn/gll/gll_Gl.h>
-#elif defined HAVE_GL_2X
-#   if defined __APPLE__ && defined __MACH__ && defined __arm__
-#       include <OpenGL/gl.h>
-#   elif defined __APPLE__ && defined __MACH__
-#       define MACOS_OPENGL
-#       define GL_GLEXT_PROTOTYPES
-#       include <OpenGL/OpenGL.h>
-#       include <OpenGL/gl3.h>
-#       include <OpenGL/gl3ext.h>
-#   else
-#       define GL_GLEXT_PROTOTYPES
-#       include <GL/gl.h>
-#       include <GL/glext.h>
-#   endif
-#elif defined HAVE_GLES_2X
-#   if defined __APPLE__ && defined __MACH__
-#       include <OpenGLES/ES2/gl.h>
-#       include <OpenGLES/ES2/glext.h>
-#   else
-#       include <GLES2/gl2.h>
-#       include <GLES2/gl2ext.h>
-#   endif
-#endif
-
-#define LOL_STRINGIFY_INNER(n) #n
-#define LOL_STRINGIFY(n) LOL_STRINGIFY_INNER(n)
-
-#define LOL_CHECK_GLERROR() \
-    { \
-        GLenum error = glGetError(); \
-        if (error != GL_NO_ERROR) \
-            lol::gpu::error(__FILE__ ":" LOL_STRINGIFY(__LINE__), (int)error); \
-    }
-
diff --git a/src/lolua/baselua.cpp b/src/lolua/baselua.cpp
deleted file mode 100644
index da01c247..00000000
--- a/src/lolua/baselua.cpp
+++ /dev/null
@@ -1,179 +0,0 @@
-//
-//  Lol Engine
-//
-//  Copyright © 2017—2018 Sam Hocevar <sam@hocevar.net>
-//            © 2009—2015 Benjamin “Touky” Huet <huet.benjamin@gmail.com>
-//
-//  Lol Engine is free software. It comes without any warranty, to
-//  the extent permitted by applicable law. You can redistribute it
-//  and/or modify it under the terms of the Do What the Fuck You Want
-//  to Public License, Version 2, as published by the WTFPL Task Force.
-//  See http://www.wtfpl.net/ for more details.
-//
-
-#include <lol/engine-internal.h>
-#include <lol/lua.h>
-
-#include <string>
-#include <cstdlib>
-#include <cctype>
-
-//
-// Base Lua class for Lua script loading
-//
-
-namespace lol
-{
-
-//-----------------------------------------------------------------------------
-class LuaBaseData
-{
-    friend class Lolua::Loader;
-
-    //PANIC PANIC -------------------------------------------------------------
-    static int LuaPanic(lua_State* l)
-    {
-        char const *message = lua_tostring(l, -1);
-        msg::error("%s\n", message);
-        debug::abort();
-        return 0;
-    }
-
-    //Exec lua code -----------------------------------------------------------
-    static int LuaDoCode(lua_State *l, std::string const& s)
-    {
-        int status = luaL_dostring(l, s.c_str());
-        if (status == 1)
-        {
-            auto stack = LuaStack::Begin(l, -1);
-            auto error = stack.Get<std::string>();
-            msg::error("Lua error %s\n", error.c_str());
-            lua_pop(l, 1);
-        }
-        return status;
-    }
-
-    //Open a file and exec lua code -------------------------------------------
-    static int LuaDoFile(lua_State *l)
-    {
-        if (lua_isnoneornil(l, 1))
-            return LUA_ERRFILE;
-
-        auto stack = LuaStack::Begin(l);
-        std::string filename = stack.Get<std::string>();
-        int status = LUA_ERRFILE;
-
-        File f;
-        for (auto const &candidate : sys::get_path_list(filename))
-        {
-            f.Open(candidate, FileAccess::Read);
-            if (f.IsValid())
-            {
-                std::string s = f.ReadString();
-                f.Close();
-
-                msg::debug("loading Lua file %s\n", candidate.c_str());
-                status = LuaDoCode(l, s);
-                break;
-            }
-        }
-
-        if (status == LUA_ERRFILE)
-            msg::error("could not find Lua file %s\n", filename.c_str());
-        else if (status == 1)
-        {
-            stack.SetIndex(-1);
-            auto error = stack.Get<std::string>();
-            msg::error("Lua error %s\n", error.c_str());
-            lua_pop(l, 1);
-        }
-
-        lua_pop(l, 1);
-
-        return status;
-    }
-};
-
-namespace Lolua
-{
-
-//-----------------------------------------------------------------------------
-Loader::Loader()
-{
-    m_lua_state = luaL_newstate();
-    lua_atpanic(m_lua_state, LuaBaseData::LuaPanic);
-    luaL_openlibs(m_lua_state);
-
-    /* Override dofile() */
-    LuaFunction do_file(m_lua_state, "dofile", LuaBaseData::LuaDoFile);
-
-    //Store this instance
-    Loader::Store(m_lua_state, this);
-}
-
-//-----------------------------------------------------------------------------
-Loader::~Loader()
-{
-    //Release this instance
-    Loader::Release(m_lua_state, this);
-
-    lua_close(m_lua_state);
-}
-
-//Store loader ------------------------------------------------------------
-static array<lua_State*, Lolua::Loader*> g_loaders;
-
-void Loader::Store(lua_State* l, Lolua::Loader* loader)
-{
-    g_loaders.push(l, loader);
-}
-
-void Loader::Release(lua_State* l, Lolua::Loader* loader)
-{
-    for (int i = 0; i < g_loaders.count(); ++i)
-    {
-        if (g_loaders[i].m1 == l && g_loaders[i].m2 == loader)
-        {
-            g_loaders.remove(i);
-            return;
-        }
-    }
-}
-
-//Store lua object --------------------------------------------------------
-void Loader::StoreObject(lua_State* l, Object* obj)
-{
-    for (auto loader : g_loaders)
-    {
-        if (loader.m1 == l)
-        {
-            loader.m2->Store(obj);
-            return;
-        }
-    }
-}
-
-//-----------------------------------------------------------------------------
-bool Loader::ExecLuaFile(std::string const &lua)
-{
-    lua_pushstring(m_lua_state, lua.c_str());
-    int status = LuaBaseData::LuaDoFile(m_lua_state);
-    return status == 0;
-}
-
-//-----------------------------------------------------------------------------
-bool Loader::ExecLuaCode(std::string const &lua)
-{
-    return 0 == LuaBaseData::LuaDoCode(m_lua_state, lua);
-}
-
-//-----------------------------------------------------------------------------
-lua_State* Loader::GetLuaState()
-{
-    return m_lua_state;
-}
-
-} /* namespace Lolua */
-
-} /* namespace lol */
-
diff --git a/src/lolua/baselua.h b/src/lolua/baselua.h
deleted file mode 100644
index ebb986a0..00000000
--- a/src/lolua/baselua.h
+++ /dev/null
@@ -1,656 +0,0 @@
-//
-//  Lol Engine
-//
-//  Copyright © 2017—2018 Sam Hocevar <sam@hocevar.net>
-//            © 2009—2015 Benjamin “Touky” Huet <huet.benjamin@gmail.com>
-//
-//  Lol Engine is free software. It comes without any warranty, to
-//  the extent permitted by applicable law. You can redistribute it
-//  and/or modify it under the terms of the Do What the Fuck You Want
-//  to Public License, Version 2, as published by the WTFPL Task Force.
-//  See http://www.wtfpl.net/ for more details.
-//
-
-#pragma once
-
-extern "C" {
-#include "3rdparty/lua/lua.h"
-#include "3rdparty/lua/lualib.h"
-#include "3rdparty/lua/lauxlib.h"
-}
-
-#include <string>
-
-//
-// Base Lua class for Lua script loading
-//
-
-namespace lol
-{
-
-//-----------------------------------------------------------------------------
-namespace Lolua
-{
-
-//-----------------------------------------------------------------------------
-typedef luaL_Reg ClassMethod;
-typedef struct ClassVar
-{
-    const char *name;
-    lua_CFunction get;
-    lua_CFunction set;
-} ClassVar;
-
-//-----------------------------------------------------------------------------
-class Object
-{
-public:
-    //-----------------------------------------------------------------------------
-    struct Library
-    {
-        typedef struct ClassVarStr
-        {
-            ClassVarStr() { }
-            ClassVarStr(std::string const &var_name, lua_CFunction get, lua_CFunction set)
-            {
-                m_get_name = std::string("Get") + var_name;
-                m_set_name = std::string("Set") + var_name;
-                m_get = get;
-                m_set = set;
-            }
-            std::string m_get_name = "";
-            std::string m_set_name = "";
-            lua_CFunction m_get = nullptr;
-            lua_CFunction m_set = nullptr;
-        } ClassVarStr;
-
-        Library(std::string const &class_name,
-            array<ClassMethod> const& statics,
-            array<ClassMethod> const& methods,
-            array<ClassVar> const& variables)
-        {
-            m_class_name = class_name;
-            m_static_name = class_name + "_lib";
-            m_method_name = class_name + "_inst";
-
-            m_statics = statics;
-            if (m_statics.count() == 0
-                || m_statics.last().name != nullptr
-                || m_statics.last().func != nullptr)
-                m_statics.push({ nullptr, nullptr });
-
-            m_methods = methods;
-            if (m_methods.count() == 0
-                || m_methods.last().name != nullptr
-                || m_methods.last().func != nullptr)
-                m_methods.push({ nullptr, nullptr });
-
-            for (ClassVar const& cv : variables)
-            {
-                if (cv.name && cv.get && cv.set)
-                {
-                    m_variables.push({ cv.name, cv.get, cv.set });
-                }
-            }
-            if (m_variables.count() == 0
-                || variables.last().name != nullptr
-                || variables.last().get != nullptr
-                || variables.last().set != nullptr)
-                m_variables.push(ClassVarStr());
-        }
-        std::string m_class_name = "";
-        std::string m_static_name = "";
-        std::string m_method_name = "";
-        array<ClassMethod> m_statics;
-        array<ClassMethod> m_methods;
-        array<ClassVarStr> m_variables;
-    };
-
-public:
-    Object() { }
-    virtual ~Object() { }
-    static Object* New(lua_State* l, int arg_nb)
-    {
-        UNUSED(l);
-        UNUSED(arg_nb);
-        ASSERT(false);
-        return nullptr;
-    }
-    static const Library* GetLib() { ASSERT(false); return nullptr; }
-};
-
-//-----------------------------------------------------------------------------
-// Class available to link C++ class to Lua methods
-//--
-class ObjectHelper
-{
-private:
-    //-------------------------------------------------------------------------
-    ObjectHelper() { }
-    virtual ~ObjectHelper() { }
-
-public:
-    //-------------------------------------------------------------------------
-    template <typename TLuaClass>
-    static void Register(lua_State *l)
-    {
-        //Default statics
-        static const luaL_Reg default_statics[]
-        {
-            { "New", New<TLuaClass> },
-            { "Store", Store<TLuaClass> },
-            { "__gc", Del<TLuaClass> },
-            { "__tostring", ToString<TLuaClass> },
-            { "__add", OpAdd<TLuaClass> },
-            { "__sub", OpSubstract<TLuaClass> },
-            { "__mul", OpMultiply<TLuaClass> },
-            { "__div", OpDivide<TLuaClass> },
-            { "__mod", OpModulo<TLuaClass> },
-            { "__unm", OpUnaryNeg<TLuaClass> },
-            { "__concat", OpConcat<TLuaClass> },
-            { "__eq", CmpEqual<TLuaClass> },
-            { "__lt", CmpLessThan<TLuaClass> },
-            { "__le", CmpLessEqual<TLuaClass> },
-            { NULL, NULL }
-        };
-
-        //Create Static metatable
-        luaL_newmetatable(l, GetStaticName<TLuaClass>());
-        //Register default statics and template one
-        luaL_setfuncs(l, default_statics, 0);
-        luaL_setfuncs(l, GetStaticMethods<TLuaClass>(), 0);
-        //Push metatable on stack
-        lua_pushvalue(l, -1);
-        //Set the "__index" field of the metatable to point to itself, pops the stack
-        lua_setfield(l, -1, "__index");
-        //Set it global to validate the operation
-        lua_setglobal(l, GetObjectName<TLuaClass>());
-
-        //Repeat all the operations for instance metatable
-        luaL_newmetatable(l, GetMethodName<TLuaClass>());
-        luaL_setfuncs(l, GetInstanceMethods<TLuaClass>(), 0);
-        lua_pushvalue(l, -1);
-        lua_setfield(l, -1, "__index");
-
-        //Create variables Get/Set
-        const array<Object::Library::ClassVarStr>& variables = GetVariables<TLuaClass>();
-        for (const Object::Library::ClassVarStr& var : variables)
-        {
-            if (!var.m_get || !var.m_set)
-                continue;
-
-            //Add getter
-            lua_pushcfunction(l, var.m_get);
-            lua_setfield(l, -2, var.m_get_name.c_str());
-
-            //Add setter
-            lua_pushcfunction(l, var.m_set);
-            lua_setfield(l, -2, var.m_set_name.c_str());
-        }
-
-        //Don't set it to global, but pop the stack to hide the metatable
-        lua_pop(l, 1);
-    }
-
-private:
-    //-------------------------------------------------------------------------
-    template <typename TLuaClass>
-    static const Object::Library* GetLibrary()
-    {
-        const Object::Library* lib = TLuaClass::GetLib();
-        ASSERT(lib);
-        return lib;
-    }
-
-public:
-    //-------------------------------------------------------------------------
-    template <typename TLuaClass>
-    static const char* GetObjectName() { return GetLibrary<TLuaClass>()->m_class_name.c_str(); }
-    template <typename TLuaClass>
-    static const char* GetStaticName() { return GetLibrary<TLuaClass>()->m_static_name.c_str(); }
-    template <typename TLuaClass>
-    static const char* GetMethodName() { return GetLibrary<TLuaClass>()->m_method_name.c_str(); }
-    template <typename TLuaClass>
-    static const ClassMethod* GetStaticMethods() { return GetLibrary<TLuaClass>()->m_statics.data(); }
-    template <typename TLuaClass>
-    static const ClassMethod* GetInstanceMethods() { return GetLibrary<TLuaClass>()->m_methods.data(); }
-    template <typename TLuaClass>
-    static const array<Object::Library::ClassVarStr>& GetVariables() { return GetLibrary<TLuaClass>()->m_variables; }
-
-protected:
-    //-------------------------------------------------------------------------
-    template <typename TLuaClass>
-    static int New(lua_State* l)
-    {
-        //Number of arguments
-        int n_args = lua_gettop(l);
-
-        //Create user data
-        TLuaClass** data = (TLuaClass**)lua_newuserdata(l, sizeof(TLuaClass*));
-        *data = TLuaClass::New(l, n_args);
-
-        //Retrieve instance table
-        luaL_getmetatable(l, GetMethodName<TLuaClass>());
-        //Set metatable to instance
-        lua_setmetatable(l, -2);
-        //Return 1 so Lua will get the UserData and clean the stack.
-        return 1;
-    }
-
-    //-------------------------------------------------------------------------
-    template <typename TLuaClass> static int Store(lua_State * l);
-    template <typename TLuaClass> static int Del(lua_State * l);
-    //-------------------------------------------------------------------------
-    template <typename TLuaClass> static int ToString(lua_State* l) { UNUSED(l); ASSERT(false); return 0; }
-    template <typename TLuaClass> static int OpAdd(lua_State* l) { UNUSED(l); ASSERT(false); return 0; }
-    template <typename TLuaClass> static int OpSubstract(lua_State* l) { UNUSED(l); ASSERT(false); return 0; }
-    template <typename TLuaClass> static int OpMultiply(lua_State* l) { UNUSED(l); ASSERT(false); return 0; }
-    template <typename TLuaClass> static int OpDivide(lua_State* l) { UNUSED(l); ASSERT(false); return 0; }
-    template <typename TLuaClass> static int OpModulo(lua_State* l) { UNUSED(l); ASSERT(false); return 0; }
-    template <typename TLuaClass> static int OpUnaryNeg(lua_State* l) { UNUSED(l); ASSERT(false); return 0; }
-    template <typename TLuaClass> static int OpConcat(lua_State* l) { UNUSED(l); ASSERT(false); return 0; }
-    template <typename TLuaClass> static int CmpEqual(lua_State* l) { UNUSED(l); ASSERT(false); return 0; }
-    template <typename TLuaClass> static int CmpLessThan(lua_State* l) { UNUSED(l); ASSERT(false); return 0; }
-    template <typename TLuaClass> static int CmpLessEqual(lua_State* l) { UNUSED(l); ASSERT(false); return 0; }
-};
-
-//-----------------------------------------------------------------------------
-class Function
-{
-public:
-    Function(lua_State* l, const char* name, int(*function)(lua_State*))
-    {
-        lua_pushcfunction(l, function);
-        lua_setglobal(l, name);
-    }
-};
-
-//-----------------------------------------------------------------------------
-// Stack: Main class that encapsulates everything -----------------------------
-//-----------------------------------------------------------------------------
-class Stack
-{
-    //-------------------------------------------------------------------------
-public:
-    static Stack Begin(lua_State* state, int32_t start_index = 1)
-    {
-        return Stack(state, start_index);
-    }
-
-    //-------------------------------------------------------------------------
-    void SetIndex(int32_t index)
-    {
-        m_index = index;
-    }
-
-    //-------------------------------------------------------------------------
-    int32_t End()
-    {
-        return m_result;
-    }
-
-    //-------------------------------------------------------------------------
-protected:
-    Stack(lua_State* l, int32_t start_index = 1)
-    {
-        m_state = l;
-        m_index = start_index;
-    }
-
-public:
-    virtual ~Stack() { }
-
-protected:
-    int32_t GetArgs()
-    {
-        return lua_gettop(m_state);
-    }
-
-public:
-    //-------------------------------------------------------------------------
-    //The encapsulating struct for pointers
-    template<typename T>
-    struct Ptr
-    {
-    public:
-        T* m_value = nullptr;
-        bool m_throw_error = false;
-
-        //---------------------------------------------------------------------
-        //m_value: Your stored value
-        //throw_error: If true, lua will throw an error if the value get fails
-        Ptr(T* value, bool throw_error = false)
-        {
-            m_value = value;
-            m_throw_error = throw_error;
-        }
-        Ptr(const T*& value) { m_value = value; }
-        inline operator T*() { return m_value; }
-        inline T* operator ->() { return m_value; }
-        inline Ptr<T>& operator=(T const*& value) { m_value = value; return *this; }
-    };
-
-private:
-    bool AllowGet(bool is_optional, bool value_validity)
-    {
-        bool is_nil = lua_isnil(m_state, m_index);
-        if (!is_optional || (!is_nil && value_validity))
-        {
-            ASSERT(!is_nil); /* touky: should it assert, though ? */
-            return true;
-        }
-        return false;
-    }
-
-public:
-    //-------------------------------------------------------------------------
-    template<typename T> T Get() { return Get(InnerDefault<T>(), false); }
-    template<typename T> T Get(T default_value) { return Get(default_value, true); }
-    template<typename E> SafeEnum<E> GetEnum() { return GetEnum(InnerDefaultSafeEnum<E>(), false); }
-    template<typename E> SafeEnum<E> GetEnum(SafeEnum<E> default_value) { return GetEnum(default_value, true); }
-    template<typename P> Ptr<P> GetPtr() { return GetPtr(InnerDefaultPtr<P>(), false); }
-    template<typename P> Ptr<P> GetPtr(Ptr<P> default_value) { return GetPtr(default_value, true); }
-
-private:
-    //-------------------------------------------------------------------------
-    template<typename T> T Get(T default_value, bool is_optional)
-    {
-        if (AllowGet(is_optional, InnerIsValid<T>()))
-            return InnerGet(default_value);
-        return default_value;
-    }
-    template<typename E> SafeEnum<E> GetEnum(SafeEnum<E> default_value, bool is_optional)
-    {
-        if (AllowGet(is_optional, InnerIsValidSafeEnum<E>()))
-            return InnerGetSafeEnum(default_value);
-        return default_value;
-    }
-    template<typename P> Ptr<P> GetPtr(Ptr<P> default_value, bool is_optional)
-    {
-        if (AllowGet(is_optional, InnerIsValidPtr<P>()))
-            return InnerGetPtr(default_value);
-        return default_value;
-    }
-
-public:
-    //-------------------------------------------------------------------------
-    template<typename T> Stack& operator<<(T value) { m_result += InnerPush<T>(value); return *this; }
-    template<typename E> Stack& operator<<(SafeEnum<E> value) { m_result += InnerPushSafeEnum<E>(value); return *this; }
-    template<typename P> Stack& operator<<(Ptr<P> value) { m_result += InnerPushPtr<P>(value); return *this; }
-
-protected:
-    //-------------------------------------------------------------------------
-    #define INNER_ERROR "Your type is not implemented. For pointers, use LuaPtr<MyType>()"
-    template<typename T> T InnerDefault() { return T(0); }
-    template<typename T> bool InnerIsValid() { ASSERT(false, INNER_ERROR); return false; }
-    template<typename T> T InnerGet(T value) { UNUSED(value); ASSERT(false, INNER_ERROR); return InnerDefault<T>(); }
-    template<typename T> int InnerPush(T value) { UNUSED(value); ASSERT(false, INNER_ERROR); return 0; }
-
-#ifndef INNER_SAFE_ENUM
-    template<typename E> SafeEnum<E> InnerDefaultSafeEnum() { return SafeEnum<E>(); }
-    template<typename E> bool InnerIsValidSafeEnum() { return InnerIsValid<std::string>(); }
-    template<typename E> SafeEnum<E> InnerGetSafeEnum(SafeEnum<E> value) { return FindValue<SafeEnum<E> >(InnerGet<std::string>(value.tostring())); }
-    template<typename E> int InnerPushSafeEnum(SafeEnum<E> value) { return InnerPush<std::string>(value.tostring()); }
-#endif //STACK_STRING
-
-#ifndef INNER_PTR
-    template<typename P> inline Ptr<P> InnerDefaultPtr() { return Ptr<P>(nullptr); }
-    template<typename P> inline bool InnerIsValidPtr() { return !!lua_isuserdata(m_state, m_index); }
-    template<typename P> inline Ptr<P> InnerGetPtr(Ptr<P> value)
-    {
-        P** obj = static_cast<P**>(value.m_throw_error
-                                        ? luaL_checkudata(m_state, m_index++, ObjectHelper::GetMethodName<P>())
-                                        : luaL_testudata(m_state, m_index++, ObjectHelper::GetMethodName<P>()) );
-        return Ptr<P>(obj ? *obj : value.m_value);
-    }
-    template<typename P> inline int InnerPushPtr(Ptr<P> value)
-    {
-        P** data = (P**)lua_newuserdata(m_state, sizeof(P*));
-        *data = value.m_value;
-        return 1;
-    }
-#endif //STACK_STRING
-
-    //-------------------------------------------------------------------------
-private:
-    lua_State*  m_state = nullptr;
-    int32_t m_index = 1;
-    int32_t m_result = 0;
-};
-
-//-----------------------------------------------------------------------------
-#define /***/ LOLUA_VAR_1(a00) auto v00 = s.a00;
-#define /***/ LOLUA_VAR_2(a00, a01) LOLUA_VAR_1(a00) auto v01 = s.a01;
-#define /***/ LOLUA_VAR_3(a00, a01, a02) LOLUA_VAR_2(a00, a01) auto v02 = s.a02;
-#define /***/ LOLUA_VAR_4(a00, a01, a02, a03) LOLUA_VAR_3(a00, a01, a02) auto v03 = s.a03;
-#define /***/ LOLUA_VAR_5(a00, a01, a02, a03, a04) LOLUA_VAR_4(a00, a01, a02, a03) auto v04 = s.a04;
-#define /***/ LOLUA_VAR_6(a00, a01, a02, a03, a04, a05) LOLUA_VAR_5(a00, a01, a02, a03, a04) auto v05 = s.a05;
-#define /***/ LOLUA_VAR_7(a00, a01, a02, a03, a04, a05, a06) LOLUA_VAR_6(a00, a01, a02, a03, a04, a05) auto v06 = s.a06;
-#define /***/ LOLUA_VAR_8(a00, a01, a02, a03, a04, a05, a06, a07) LOLUA_VAR_7(a00, a01, a02, a03, a04, a05, a06) auto v07 = s.a07;
-#define /***/ LOLUA_VAR_9(a00, a01, a02, a03, a04, a05, a06, a07, a08) LOLUA_VAR_8(a00, a01, a02, a03, a04, a05, a06, a07) auto v08 = s.a08;
-#define /**/ LOLUA_VAR_10(a00, a01, a02, a03, a04, a05, a06, a07, a08, a09) LOLUA_VAR_9(a00, a01, a02, a03, a04, a05, a06, a07, a08) auto v09 = s.a09;
-#define /**/ LOLUA_VAR_11(a00, a01, a02, a03, a04, a05, a06, a07, a08, a09, a10) LOLUA_VAR_10(a00, a01, a02, a03, a04, a05, a06, a07, a08, a09) auto v10 = s.a10;
-#define /**/ LOLUA_VAR_12(a00, a01, a02, a03, a04, a05, a06, a07, a08, a09, a10, a11) LOLUA_VAR_11(a00, a01, a02, a03, a04, a05, a06, a07, a08, a09) auto v11 = s.a11;
-//-----------------------------------------------------------------------------
-#define /***/ LOLUA_ARG_1(a00) v00
-#define /***/ LOLUA_ARG_2(a00, a01) LOLUA_ARG_1(a00), v01
-#define /***/ LOLUA_ARG_3(a00, a01, a02) LOLUA_ARG_2(a00, a01), v02
-#define /***/ LOLUA_ARG_4(a00, a01, a02, a03) LOLUA_ARG_3(a00, a01, a02), v03
-#define /***/ LOLUA_ARG_5(a00, a01, a02, a03, a04) LOLUA_ARG_4(a00, a01, a02, a03), v04
-#define /***/ LOLUA_ARG_6(a00, a01, a02, a03, a04, a05) LOLUA_ARG_5(a00, a01, a02, a03, a04), v05
-#define /***/ LOLUA_ARG_7(a00, a01, a02, a03, a04, a05, a06) LOLUA_ARG_6(a00, a01, a02, a03, a04, a05), v06
-#define /***/ LOLUA_ARG_8(a00, a01, a02, a03, a04, a05, a06, a07) LOLUA_ARG_7(a00, a01, a02, a03, a04, a05, a06), v07
-#define /***/ LOLUA_ARG_9(a00, a01, a02, a03, a04, a05, a06, a07, a08) LOLUA_ARG_8(a00, a01, a02, a03, a04, a05, a06, a07), v08
-#define /**/ LOLUA_ARG_10(a00, a01, a02, a03, a04, a05, a06, a07, a08, a09) LOLUA_ARG_9(a00, a01, a02, a03, a04, a05, a06, a07, a08), v09
-#define /**/ LOLUA_ARG_11(a00, a01, a02, a03, a04, a05, a06, a07, a08, a09, a10) LOLUA_ARG_10(a00, a01, a02, a03, a04, a05, a06, a07, a08, a09), v10
-#define /**/ LOLUA_ARG_12(a00, a01, a02, a03, a04, a05, a06, a07, a08, a09, a10, a11) LOLUA_ARG_11(a00, a01, a02, a03, a04, a05, a06, a07, a08, a09), v11
-//-----------------------------------------------------------------------------
-
-//-----------------------------------------------------------------------------
-#define LOLUA_DECLARE_BEGIN(LUA_FUNC_NAME, INSTANCE_GET) \
-    static int LUA_FUNC_NAME(lua_State* l) \
-    { \
-        auto s = Lolua::Stack::Begin(l); \
-        auto o = s.INSTANCE_GET;
-
-#define LOLUA_DECLARE_VARS(...) \
-    LOL_CALL(LOL_CAT(LOLUA_VAR_, LOL_CALL(LOL_COUNT_TO_12, (__VA_ARGS__))), (__VA_ARGS__));
-
-#define LOLUA_DECLARE_CALL(INSTANCE_CALL, ...) \
-    o->INSTANCE_CALL(LOL_CALL(LOL_CAT(LOLUA_ARG_, LOL_CALL(LOL_COUNT_TO_12, (__VA_ARGS__))), (__VA_ARGS__)));
-
-#define LOLUA_DECLARE_CALL_VOID(INSTANCE_CALL) \
-    o->INSTANCE_CALL();
-
-#define LOLUA_DECLARE_END \
-        return s.End(); \
-    }
-
-//-----------------------------------------------------------------------------
-#define LOLUA_DECLARE_VOID_METHOD_VOID(LUA_FUNC_NAME, INSTANCE_GET, INSTANCE_CALL, ...) \
-    LOLUA_DECLARE_BEGIN(LUA_FUNC_NAME, INSTANCE_GET); \
-    LOLUA_DECLARE_CALL_VOID(INSTANCE_CALL) \
-    LOLUA_DECLARE_END
-
-#define LOLUA_DECLARE_VOID_METHOD_ARGS(LUA_FUNC_NAME, INSTANCE_GET, INSTANCE_CALL, ...) \
-    LOLUA_DECLARE_BEGIN(LUA_FUNC_NAME, INSTANCE_GET); \
-    LOLUA_DECLARE_VARS(__VA_ARGS__) \
-    LOLUA_DECLARE_CALL(INSTANCE_CALL, __VA_ARGS__) \
-    LOLUA_DECLARE_END
-
-//-----------------------------------------------------------------------------
-#define LOLUA_DECLARE_RETURN_METHOD_ARGS(LUA_FUNC_NAME, INSTANCE_GET, INSTANCE_CALL, ...) \
-    static int LUA_FUNC_NAME(lua_State* l) \
-    { \
-        auto s = Lolua::Stack::Begin(l); \
-        auto o = s.INSTANCE_GET; \
-        LOL_CALL(LOL_CAT(LOLUA_VAR_, LOL_CALL(LOL_COUNT_TO_12, (__VA_ARGS__))), (__VA_ARGS__)) \
-        s << o->INSTANCE_CALL(LOL_CALL(LOL_CAT(LOLUA_ARG_, LOL_CALL(LOL_COUNT_TO_12, (__VA_ARGS__))), (__VA_ARGS__))); \
-        return s.End(); \
-    }
-
-//-----------------------------------------------------------------------------
-#ifndef REGION_STACK_VAR
-
-#ifndef STACK_BOOL
-template<> inline bool Stack::InnerIsValid<bool>()       { return lua_isboolean(m_state, m_index); }
-template<> inline bool Stack::InnerGet<bool>(bool value) { UNUSED(value); return !!lua_toboolean(m_state, m_index++); }
-template<> inline int Stack::InnerPush<bool>(bool value) { lua_pushboolean(m_state, value); return 1; }
-#endif // STACK_BOOL
-
-//-----------------------------------------------------------------------------
-#ifndef STACK_CHAR_CONST
-template<> inline bool Stack::InnerIsValid<char const*>()                     { return !!lua_isstring(m_state, m_index); }
-template<> inline char const* Stack::InnerGet<char const*>(char const* value) { UNUSED(value); return lua_tostring(m_state, m_index++); }
-template<> inline int Stack::InnerPush<char const*>(char const* value)        { lua_pushstring(m_state, value); return 1; }
-#endif // STACK_CHAR_CONST
-
-//-----------------------------------------------------------------------------
-#ifndef STACK_STRING
-template<> inline std::string Stack::InnerDefault<std::string>()              { return ""; }
-template<> inline bool Stack::InnerIsValid<std::string>()                     { return InnerIsValid<char const*>(); }
-template<> inline std::string Stack::InnerGet<std::string>(std::string value) { return std::string(InnerGet<char const*>(value.c_str())); }
-template<> inline int Stack::InnerPush<std::string>(std::string value)        { return InnerPush<char const*>(value.c_str()); }
-#endif //STACK_STRING
-
-//-----------------------------------------------------------------------------
-#ifndef STACK_STRING
-template<> inline bool Stack::InnerIsValid<double>()           { return !!lua_isnumber(m_state, m_index); }
-template<> inline double Stack::InnerGet<double>(double value) { UNUSED(value); return lua_tonumber(m_state, m_index++); }
-template<> inline int Stack::InnerPush<double>(double value)   { lua_pushnumber(m_state, value); return 1; }
-#endif //STACK_STRING
-
-//-----------------------------------------------------------------------------
-#ifndef STACK_FLOAT
-template<> inline bool Stack::InnerIsValid<float>()         { return InnerIsValid<double>(); }
-template<> inline float Stack::InnerGet<float>(float value) { return (float)InnerGet<double>((double)value); }
-template<> inline int Stack::InnerPush<float>(float value)  { return InnerPush<double>((double)value); }
-#endif //STACK_FLOAT
-
-//-----------------------------------------------------------------------------
-#ifndef STACK_INT64
-template<> inline bool Stack::InnerIsValid<int64_t>()             { return !!lua_isnumber(m_state, m_index); }
-template<> inline int64_t Stack::InnerGet<int64_t>(int64_t value) { UNUSED(value); return lua_tointeger(m_state, m_index++); }
-template<> inline int Stack::InnerPush<int64_t>(int64_t value)    { lua_pushinteger(m_state, value); return 1; }
-#endif //STACK_INT64
-
-//-----------------------------------------------------------------------------
-#ifndef STACK_UINT64
-template<> inline bool Stack::InnerIsValid<uint64_t>()               { return !!lua_isnumber(m_state, m_index); }
-template<> inline uint64_t Stack::InnerGet<uint64_t>(uint64_t value) { UNUSED(value); return (uint64_t)lua_tointeger(m_state, m_index++); }
-template<> inline int Stack::InnerPush<uint64_t>(uint64_t value)     { lua_pushinteger(m_state, (lua_Unsigned)value); return 1; }
-#endif //STACK_UINT64
-
-//-----------------------------------------------------------------------------
-#ifndef STACK_INT32
-template<> inline bool Stack::InnerIsValid<int32_t>()             { return !!lua_isnumber(m_state, m_index); }
-template<> inline int32_t Stack::InnerGet<int32_t>(int32_t value) { UNUSED(value); return (int32_t)lua_tointeger(m_state, m_index++); }
-template<> inline int Stack::InnerPush<int32_t>(int32_t value)    { lua_pushinteger(m_state, (lua_Integer)value); return 1; }
-#endif // STACK_INT32
-
-//-----------------------------------------------------------------------------
-#ifndef STACK_UINT32
-template<> inline bool Stack::InnerIsValid<uint32_t>()               { return !!lua_isnumber(m_state, m_index); }
-template<> inline uint32_t Stack::InnerGet<uint32_t>(uint32_t value) { UNUSED(value); return (uint32_t)(lua_Unsigned)lua_tointeger(m_state, m_index++); }
-template<> inline int Stack::InnerPush<uint32_t>(uint32_t value)     { lua_pushinteger(m_state, (lua_Unsigned)value); return 1; }
-#endif //STACK_UINT32
-
-//-----------------------------------------------------------------------------
-#ifndef STACK_VEC2
-template<> inline bool Stack::InnerIsValid<vec2>()       { return InnerIsValid<float>(); }
-template<> inline vec2 Stack::InnerGet<vec2>(vec2 value) { return vec2(InnerGet<float>(value.x), Get<float>(value.y, true)); }
-template<> inline int Stack::InnerPush<vec2>(vec2 value) { return (InnerPush<float>(value.x) + InnerPush<float>(value.y)); }
-#endif //STACK_VEC2
-
-//-----------------------------------------------------------------------------
-#ifndef STACK_VEC3
-template<> inline bool Stack::InnerIsValid<vec3>()       { return InnerIsValid<float>(); }
-template<> inline vec3 Stack::InnerGet<vec3>(vec3 value) { return vec3(InnerGet<float>(value.x), Get<float>(value.y, true), Get<float>(value.z, true)); }
-template<> inline int Stack::InnerPush<vec3>(vec3 value) { return (InnerPush<float>(value.x) + InnerPush<float>(value.y) + InnerPush<float>(value.z)); }
-#endif //STACK_VEC3
-
-//-----------------------------------------------------------------------------
-#ifndef STACK_VEC4
-template<> inline bool Stack::InnerIsValid<vec4>()       { return InnerIsValid<float>(); }
-template<> inline vec4 Stack::InnerGet<vec4>(vec4 value) { return vec4(InnerGet<float>(value.x), Get<float>(value.y, true), Get<float>(value.z, true), Get<float>(value.w, true)); }
-template<> inline int Stack::InnerPush<vec4>(vec4 value) { return (InnerPush<float>(value.x) + InnerPush<float>(value.y) + InnerPush<float>(value.z) + InnerPush<float>(value.w)); }
-#endif // STACK_VEC4
-
-#endif //REGION_STACK_VAR
-
-//-----------------------------------------------------------------------------
-class Loader
-{
-    friend class ObjectHelper;
-public:
-    Loader();
-    virtual ~Loader();
-
-    bool ExecLuaFile(std::string const &lua);
-    bool ExecLuaCode(std::string const &lua);
-
-    //-------------------------------------------------------------------------
-#define DECLARE_LOADER_GET(T0, T1, GET_NAME) \
-    template<typename T0> \
-    T1 GET_NAME(std::string const &name) \
-    { \
-        lua_getglobal(m_lua_state, name.c_str()); \
-        auto stack = Lolua::Stack::Begin(m_lua_state, -1); \
-        auto result = stack.GET_NAME<T0>(); \
-        lua_pop(m_lua_state, 1); \
-        return result; \
-    }
-
-    DECLARE_LOADER_GET(T, T, Get);
-    DECLARE_LOADER_GET(E, SafeEnum<E>, GetEnum);
-    DECLARE_LOADER_GET(P, P*, GetPtr);
-
-#undef DECLARE_LOADER_GET
-
-protected:
-    lua_State* GetLuaState();
-    static void Store(lua_State* l, Loader* loader);
-    static void Release(lua_State* l, Loader* loader);
-    static void StoreObject(lua_State* l, Object* obj);
-    //Virtual Store lua object ------------------------------------------------
-    virtual void Store(Object* obj) { UNUSED(obj); }
-
-private:
-    lua_State* m_lua_state;
-};
-
-//-----------------------------------------------------------------------------
-// ObjectHelper member implementations that require VarPtr
-
-template <typename TLuaClass>
-int ObjectHelper::Store(lua_State * l)
-{
-    auto stack = Lolua::Stack::Begin(l);
-    TLuaClass* obj = stack.GetPtr<TLuaClass>();
-    ASSERT(obj);
-    Loader::StoreObject(l, obj);
-    return 0;
-}
-
-template <typename TLuaClass>
-int ObjectHelper::Del(lua_State * l)
-{
-    auto stack = Lolua::Stack::Begin(l);
-    TLuaClass* obj = stack.GetPtr<TLuaClass>();
-    ASSERT(obj);
-    delete obj;
-    return 0;
-}
-
-} /* namespace Lolua */
-
-//TYPEDEFS
-typedef Lolua::Function         LuaFunction;
-typedef Lolua::ObjectHelper     LuaObjectHelper;
-typedef Lolua::Object           LuaObject;
-typedef Lolua::Object::Library  LuaObjectLibrary;
-typedef Lolua::Loader           LuaLoader;
-typedef Lolua::Stack            LuaStack;
-template <typename P> using LuaPtr = Lolua::Stack::Ptr<P>;
-
-} /* namespace lol */
diff --git a/src/mesh/mesh.cpp b/src/mesh/mesh.cpp
deleted file mode 100644
index 576958d5..00000000
--- a/src/mesh/mesh.cpp
+++ /dev/null
@@ -1,154 +0,0 @@
-//
-//  Lol Engine
-//
-//  Copyright © 2010—2019 Sam Hocevar <sam@hocevar.net>
-//
-//  Lol Engine is free software. It comes without any warranty, to
-//  the extent permitted by applicable law. You can redistribute it
-//  and/or modify it under the terms of the Do What the Fuck You Want
-//  to Public License, Version 2, as published by the WTFPL Task Force.
-//  See http://www.wtfpl.net/ for more details.
-//
-
-#include <lol/engine-internal.h>
-
-#include <memory>
-#include <cstring>
-#include <cstdlib>
-
-namespace lol
-{
-
-/*
- * Mesh class
- */
-
-Mesh::Mesh()
-{
-}
-
-Mesh::~Mesh()
-{
-}
-
-void Mesh::Render(Scene& scene, mat4 const &matrix)
-{
-    //if (scene.HasPrimitiveRenderer(this) < m_submeshes.count())
-    {
-        for (auto submesh : m_submeshes)
-            scene.AddPrimitiveRenderer(this, std::make_shared<PrimitiveMesh>(submesh, matrix));
-    }
-}
-
-void Mesh::Render()
-{
-    for (auto submesh : m_submeshes)
-        submesh->Render();
-}
-
-void Mesh::SetMaterial(std::shared_ptr<Shader> shader)
-{
-    for (auto submesh : m_submeshes)
-        submesh->SetShader(shader);
-}
-
-/*
- * SubMesh class
- */
-
-SubMesh::SubMesh(std::shared_ptr<Shader> shader, std::shared_ptr<VertexDeclaration> vdecl)
-  : m_mesh_prim(MeshPrimitive::Triangles),
-    m_shader(shader),
-    m_vdecl(vdecl)
-{
-}
-
-SubMesh::~SubMesh()
-{
-}
-
-void SubMesh::SetMeshPrimitive(MeshPrimitive mesh_primitive)
-{
-    m_mesh_prim = mesh_primitive;
-}
-
-void SubMesh::SetShader(std::shared_ptr<Shader> shader)
-{
-    m_shader = shader;
-}
-
-std::shared_ptr<Shader> SubMesh::GetShader()
-{
-    return m_shader;
-}
-
-void SubMesh::SetVertexDeclaration(std::shared_ptr<VertexDeclaration> vdecl)
-{
-    m_vdecl = vdecl;
-}
-
-void SubMesh::SetVertexBuffer(int index, std::shared_ptr<VertexBuffer> vbo)
-{
-    while (index >= m_vbos.count())
-        m_vbos.push(nullptr);
-
-    m_vbos[index] = vbo;
-}
-
-void SubMesh::SetIndexBuffer(std::shared_ptr<IndexBuffer> ibo)
-{
-    m_ibo = ibo;
-}
-
-void SubMesh::AddTexture(std::string const &name, std::shared_ptr<Texture> texture)
-{
-    m_textures.push(name, texture);
-}
-
-void SubMesh::Render()
-{
-    size_t vertex_count = 0;
-
-    m_vdecl->Bind();
-
-    for (int i = 0; i < m_vbos.count(); ++i)
-    {
-        ShaderAttrib attribs[12];
-
-        if (m_vbos[i] == nullptr)
-        {
-            msg::error("trying to render a mesh with a null VBO\n");
-            continue;
-        }
-
-        int usages[VertexUsage::MAX] = { 0 };
-        VertexStreamBase stream = m_vdecl->GetStream(i);
-        for (int j = 0; j < stream.GetStreamCount(); ++j)
-        {
-            VertexUsage usage = stream.GetUsage(j);
-            int usage_index = usage.ToScalar();
-            attribs[j] = m_shader->GetAttribLocation(usage, usages[usage_index]++);
-        }
-
-        vertex_count += m_vbos[i]->size() / m_vdecl->GetStream(i).GetSize();
-
-        m_vdecl->SetStream(m_vbos[i], attribs);
-    }
-
-    UNUSED(vertex_count);
-
-    for (int i = 0; i < m_textures.count(); ++i)
-    {
-        // TODO: might be good to cache this
-        ShaderUniform u_tex = m_shader->GetUniformLocation(m_textures[i].m1);
-        m_shader->SetUniform(u_tex, m_textures[i].m2->GetTextureUniform(), i);
-    }
-
-    m_ibo->Bind();
-    m_vdecl->DrawIndexedElements(MeshPrimitive::Triangles, (int)(m_ibo->size() / sizeof(uint16_t)));
-    m_vdecl->Unbind();
-    m_ibo->Unbind();
-}
-
-} /* namespace lol */
-
diff --git a/src/mesh/mesh.h b/src/mesh/mesh.h
deleted file mode 100644
index 11e7f656..00000000
--- a/src/mesh/mesh.h
+++ /dev/null
@@ -1,115 +0,0 @@
-//
-//  Lol Engine
-//
-//  Copyright © 2010—2019 Sam Hocevar <sam@hocevar.net>
-//
-//  Lol Engine is free software. It comes without any warranty, to
-//  the extent permitted by applicable law. You can redistribute it
-//  and/or modify it under the terms of the Do What the Fuck You Want
-//  to Public License, Version 2, as published by the WTFPL Task Force.
-//  See http://www.wtfpl.net/ for more details.
-//
-
-#pragma once
-
-//
-// The Mesh class
-// --------------
-//
-
-#include <vector>
-#include <memory>
-
-#include <lol/gpu/vertexbuffer.h>
-#include <lol/gpu/indexbuffer.h>
-
-//Assimp supports http://assimp.sourceforge.net/main_features_formats.html
-#if LOL_USE_ASSIMP
-//Cause build has a problem with function choice.
-#if _WIN32 || _WIN64
-#define sin  lol::sin
-#define asin lol::asin
-#define cos  lol::cos
-#define acos lol::acos
-#endif //_WIN32 || _WIN64
-#include <assimp/Importer.hpp>      // C++ importer interface
-#include <assimp/scene.h>           // Output data structure
-#include <assimp/postprocess.h>     // Post processing flags
-#if _WIN32 || _WIN64
-#undef sin
-#undef asin
-#undef cos
-#undef acos
-#endif // _WIN32 || _WIN64
-#endif // LOL_USE_ASSIMP
-
-namespace lol
-{
-
-/*
- * A mesh contains a list of submeshes. This is a convenient way to
- * handle different materials or mesh types (static, skeletal, morph targets, etc.)
- * within the same container object.
- */
-
-class Mesh
-{
-    friend class Scene;
-
-public:
-    Mesh();
-    ~Mesh();
-
-    /* FIXME: this should eventually take a “material” as argument, which
-     * may behave differently between submeshes. */
-    void SetMaterial(std::shared_ptr<Shader> shader);
-
-    //TODO: Not sure about the name
-    void Render(Scene& scene, mat4 const &matrix);
-
-protected:
-    void Render();
-
-public:
-    std::vector<std::shared_ptr<class SubMesh>> m_submeshes;
-};
-
-/*
- * A submesh contains:
- *  - a vertex declaration
- *  - a list of VBOs
- *  - a list of textures
- *  - a shader
- */
-
-class SubMesh
-{
-    friend class PrimitiveMesh;
-    friend class Mesh;
-
-public:
-    SubMesh(std::shared_ptr<Shader> shader, std::shared_ptr<VertexDeclaration> vdecl);
-    ~SubMesh();
-
-    void SetMeshPrimitive(MeshPrimitive mesh_primitive);
-    void SetShader(std::shared_ptr<Shader> shader);
-    std::shared_ptr<Shader> GetShader();
-    void SetVertexDeclaration(std::shared_ptr<VertexDeclaration> vdecl);
-    void SetVertexBuffer(int index, std::shared_ptr<VertexBuffer> vbo);
-    void SetIndexBuffer(std::shared_ptr<IndexBuffer> ibo);
-    void AddTexture(std::string const &name, std::shared_ptr<Texture> texture);
-
-protected:
-    void Render();
-
-    MeshPrimitive m_mesh_prim;
-    std::shared_ptr<Shader> m_shader;
-    std::shared_ptr<VertexDeclaration> m_vdecl;
-    array<std::shared_ptr<VertexBuffer>> m_vbos;
-    std::shared_ptr<IndexBuffer> m_ibo;
-
-    array<std::string, std::shared_ptr<Texture>> m_textures;
-};
-
-} /* namespace lol */
-
diff --git a/src/mesh/primitivemesh.cpp b/src/mesh/primitivemesh.cpp
deleted file mode 100644
index 78af560c..00000000
--- a/src/mesh/primitivemesh.cpp
+++ /dev/null
@@ -1,98 +0,0 @@
-//
-//  Lol Engine
-//
-//  Copyright © 2010—2019 Sam Hocevar <sam@hocevar.net>
-//
-//  Lol Engine is free software. It comes without any warranty, to
-//  the extent permitted by applicable law. You can redistribute it
-//  and/or modify it under the terms of the Do What the Fuck You Want
-//  to Public License, Version 2, as published by the WTFPL Task Force.
-//  See http://www.wtfpl.net/ for more details.
-//
-
-#include <lol/engine-internal.h>
-
-#include <memory>
-#include <cstring>
-#include <cstdlib>
-
-namespace lol
-{
-
-/*
- * Primitive class
- */
-
-PrimitiveMesh::PrimitiveMesh(std::shared_ptr<SubMesh> submesh, mat4 const &matrix)
-  : m_submesh(submesh),
-    m_matrix(matrix)
-{
-}
-
-PrimitiveMesh::~PrimitiveMesh()
-{
-}
-
-void PrimitiveMesh::Render(Scene& scene, std::shared_ptr<PrimitiveSource> primitive)
-{
-    /* TODO: this should be the main entry for rendering of all
-    * primitives found in the scene graph. When we have one. */
-
-    std::shared_ptr<Shader> shader;
-    ShaderUniform u_model, u_modelview, u_normalmat, uni_tex, uni_texsize;
-    ShaderAttrib a_pos, a_tex;
-
-    /* FIXME: ignored for now */
-    UNUSED(primitive);
-
-    {
-        /* If this primitive uses a new shader, update attributes */
-        if (m_submesh->GetShader() != shader)
-        {
-            shader = m_submesh->GetShader();
-
-            a_pos = shader->GetAttribLocation(VertexUsage::Position, 0);
-            a_tex = shader->GetAttribLocation(VertexUsage::TexCoord, 0);
-
-            shader->Bind();
-
-            /* Per-scene matrices */
-            ShaderUniform u_mat;
-            u_mat = shader->GetUniformLocation("u_projection");
-            shader->SetUniform(u_mat, scene.GetCamera()->GetProjection());
-            u_mat = shader->GetUniformLocation("u_view");
-            shader->SetUniform(u_mat, scene.GetCamera()->GetView());
-            u_mat = shader->GetUniformLocation("u_inv_view");
-            shader->SetUniform(u_mat, inverse(scene.GetCamera()->GetView()));
-
-            /* Per-object matrices, will be set later */
-            u_model = shader->GetUniformLocation("u_model");
-            u_modelview = shader->GetUniformLocation("u_modelview");
-            u_normalmat = shader->GetUniformLocation("u_normalmat");
-
-            /* Per-scene environment */
-            array<Light *> const &lights = scene.GetLights();
-            array<vec4> light_data;
-
-            /* FIXME: the 4th component of the position can be used for other things */
-            /* FIXME: GetUniform("blabla") is costly */
-            for (auto l : lights)
-                light_data << vec4(l->GetPosition(), (float)l->GetType()) << l->GetColor();
-            while (light_data.count() < LOL_MAX_LIGHT_COUNT)
-                light_data << vec4::zero << vec4::zero;
-
-            ShaderUniform u_lights = shader->GetUniformLocation("u_lights");
-            shader->SetUniform(u_lights, light_data);
-        }
-
-        shader->SetUniform(u_model, m_matrix);
-        mat4 modelview = scene.GetCamera()->GetView() * m_matrix;
-        shader->SetUniform(u_modelview, modelview);
-        shader->SetUniform(u_normalmat, transpose(inverse(mat3(modelview))));
-
-        m_submesh->Render();
-    }
-}
-
-} /* namespace lol */
-
diff --git a/src/mesh/primitivemesh.h b/src/mesh/primitivemesh.h
deleted file mode 100644
index 9eff1f0d..00000000
--- a/src/mesh/primitivemesh.h
+++ /dev/null
@@ -1,38 +0,0 @@
-//
-//  Lol Engine
-//
-//  Copyright © 2010—2019 Sam Hocevar <sam@hocevar.net>
-//
-//  Lol Engine is free software. It comes without any warranty, to
-//  the extent permitted by applicable law. You can redistribute it
-//  and/or modify it under the terms of the Do What the Fuck You Want
-//  to Public License, Version 2, as published by the WTFPL Task Force.
-//  See http://www.wtfpl.net/ for more details.
-//
-
-#pragma once
-
-//
-// The Primitive class
-// -------------------
-//
-
-namespace lol
-{
-
-class PrimitiveMesh : public PrimitiveRenderer
-{
-    friend class Scene;
-
-public:
-    PrimitiveMesh(std::shared_ptr<SubMesh> submesh, mat4 const &matrix);
-    virtual ~PrimitiveMesh();
-    virtual void Render(Scene& scene, std::shared_ptr<PrimitiveSource> primitive);
-
-private:
-    std::shared_ptr<SubMesh> m_submesh;
-    mat4 m_matrix;
-};
-
-} /* namespace lol */
-
diff --git a/src/messageservice.cpp b/src/messageservice.cpp
deleted file mode 100644
index a2a10629..00000000
--- a/src/messageservice.cpp
+++ /dev/null
@@ -1,142 +0,0 @@
-//
-//  Lol Engine
-//
-//  Copyright © 2013—2015 Benjamin “Touky” Huet <huet.benjamin@gmail.com>
-//            © 2017—2019 Sam Hocevar <sam@hocevar.net>
-//
-//  Lol Engine is free software. It comes without any warranty, to
-//  the extent permitted by applicable law. You can redistribute it
-//  and/or modify it under the terms of the Do What the Fuck You Want
-//  to Public License, Version 2, as published by the WTFPL Task Force.
-//  See http://www.wtfpl.net/ for more details.
-//
-
-#include <lol/engine-internal.h>
-
-#include <string>
-#include <cstring>
-#include <cstdlib>
-#include <time.h>
-
-namespace lol
-{
-
-// This is needed to map MessageService::Send() to the JS when building the HTML.
-#if __EMSCRIPTEN__
-extern "C"
-{
-    int C_Send(const char* message) { return (int)MessageService::Send(MessageBucket::AppIn, message); }
-    //NOT IMPLEMENTED
-    //bool C_FetchFirst(std::string& message);
-}
-#endif // __EMSCRIPTEN__
-
-/*
- * The global g_messageservice object, initialised by MessageService::Setup()
- */
-MessageService *g_messageservice = nullptr;
-
-//-----------------------------------------------------------------------------
-// Ctor/Dtor
-//----
-MessageService::MessageService()
-{
-}
-
-MessageService::~MessageService()
-{
-    m_bucket.clear();
-}
-
-//Setup/Destroy
-void MessageService::Setup()
-{
-    g_messageservice = new MessageService();
-    g_messageservice->m_bucket.resize(MessageBucket::MAX);
-}
-
-void MessageService::Destroy()
-{
-    delete g_messageservice;
-    g_messageservice = nullptr;
-}
-
-//-----------------------------------------------------------------------------
-bool MessageService::Send(MessageBucket id, const std::string& message)
-{
-    if (g_messageservice)
-    {
-        MessageService& g = *g_messageservice;
-        array<MessageList>& bucket = g.m_bucket[id.ToScalar()];
-        bucket << MessageList(time(nullptr), message);
-        return true;
-    }
-    return false;
-}
-
-//----
-bool MessageService::FetchFirst(MessageBucket id, std::string& message)
-{
-    if (g_messageservice)
-    {
-        ASSERT(0 <= id.ToScalar() && id.ToScalar() < g_messageservice->m_bucket.count());
-        time_t timestamp;
-        return g_messageservice->FetchFirst(id, message, timestamp);
-    }
-    return false;
-}
-
-bool MessageService::FetchFirst(MessageBucket id, std::string& message, time_t& timestamp)
-{
-    if (g_messageservice)
-    {
-        ASSERT(0 <= id.ToScalar() && id.ToScalar() < g_messageservice->m_bucket.count());
-        MessageService& g = *g_messageservice;
-        array<MessageList>& bucket = g.m_bucket[id.ToScalar()];
-
-        if (bucket.count())
-        {
-            message = bucket[0].m_message;
-            timestamp = bucket[0].m_timestamp;
-            bucket.remove(0);
-            return true;
-        }
-    }
-    return false;
-}
-
-//----
-bool MessageService::FetchAll(MessageBucket id, std::string& message)
-{
-    if (g_messageservice)
-    {
-        ASSERT(0 <= id.ToScalar() && id.ToScalar() < g_messageservice->m_bucket.count());
-        time_t timestamp;
-        return g_messageservice->FetchAll(id, message, timestamp);
-    }
-    return false;
-}
-
-bool MessageService::FetchAll(MessageBucket id, std::string& message, time_t& first_timestamp)
-{
-    if (g_messageservice)
-    {
-        ASSERT(0 <= id.ToScalar() && id.ToScalar() < g_messageservice->m_bucket.count());
-        MessageService& g = *g_messageservice;
-        array<MessageList>& bucket = g.m_bucket[id.ToScalar()];
-        message = "";
-
-        if (bucket.count())
-        {
-            first_timestamp = bucket[0].m_timestamp;
-            for (int i = 0; i < bucket.count(); ++i)
-                message += bucket[i].m_message;
-            bucket.clear();
-            return true;
-        }
-    }
-    return false;
-}
-
-} /* namespace lol */
-
diff --git a/src/messageservice.h b/src/messageservice.h
deleted file mode 100644
index dae9bfb0..00000000
--- a/src/messageservice.h
+++ /dev/null
@@ -1,112 +0,0 @@
-//
-//  Lol Engine
-//
-//  Copyright © 2013—2015 Benjamin “Touky” Huet <huet.benjamin@gmail.com>
-//            © 2017—2018 Sam Hocevar <sam@hocevar.net>
-//
-//  Lol Engine is free software. It comes without any warranty, to
-//  the extent permitted by applicable law. You can redistribute it
-//  and/or modify it under the terms of the Do What the Fuck You Want
-//  to Public License, Version 2, as published by the WTFPL Task Force.
-//  See http://www.wtfpl.net/ for more details.
-//
-
-#pragma once
-
-#include <string>
-#include <map>
-
-//
-// The Message Service class
-// -------------------------
-//
-
-namespace lol
-{
-
-//MessageBucket -- Utility enum for message service ---------------------------
-struct MessageBucketBase : public StructSafeEnum
-{
-    enum Type
-    {
-        AppIn,
-        AppOut,
-
-        Bckt0,
-        Bckt1,
-        Bckt2,
-        Bckt3,
-        Bckt4,
-        Bckt5,
-        Bckt6,
-        Bckt7,
-        Bckt8,
-        Bckt9,
-
-        MAX
-    };
-protected:
-    virtual bool BuildEnumMap(std::map<int64_t, std::string>& enum_map)
-    {
-        enum_map[AppIn] = "AppIn";
-        enum_map[AppOut] = "AppOut";
-        enum_map[Bckt0] = "Bckt0";
-        enum_map[Bckt1] = "Bckt1";
-        enum_map[Bckt2] = "Bckt2";
-        enum_map[Bckt3] = "Bckt3";
-        enum_map[Bckt4] = "Bckt4";
-        enum_map[Bckt5] = "Bckt5";
-        enum_map[Bckt6] = "Bckt6";
-        enum_map[Bckt7] = "Bckt7";
-        enum_map[Bckt8] = "Bckt8";
-        enum_map[Bckt9] = "Bckt9";
-        enum_map[MAX] = "MAX";
-        return true;
-    }
-};
-typedef SafeEnum<MessageBucketBase> MessageBucket;
-
-//Message list container with time in it
-struct MessageList
-{
-    MessageList(time_t timestamp, const std::string& message)
-      : m_timestamp(timestamp),
-        m_message(message)
-    {
-    }
-
-    time_t m_timestamp;
-    std::string m_message;
-};
-
-/*
-    A template class perhaps ?
-*/
-class MessageService
-{
-public:
-    //CTor/DTor
-    MessageService();
-    ~MessageService();
-
-    static std::string GetName() { return "<messageservice>"; }
-
-    //Setup/Destroy
-    static void Setup();
-    static void Destroy();
-
-    //Common interactions
-    static bool Send(MessageBucket id, const std::string& message);
-    static bool FetchFirst(MessageBucket id, std::string& message);
-    static bool FetchFirst(MessageBucket id, std::string& message, time_t &timestamp);
-    static bool FetchAll(MessageBucket id, std::string& message);
-    static bool FetchAll(MessageBucket id, std::string& message, time_t &first_timestamp);
-
-private:
-    array<array<MessageList> >  m_bucket;
-};
-
-extern MessageService *g_messageservice;
-
-} /* namespace lol */
-
diff --git a/src/net/http.cpp b/src/net/http.cpp
deleted file mode 100644
index fdcd2874..00000000
--- a/src/net/http.cpp
+++ /dev/null
@@ -1,184 +0,0 @@
-//
-//  Lol Engine
-//
-//  Copyright © 2010—2020 Sam Hocevar <sam@hocevar.net>
-//
-//  Lol Engine is free software. It comes without any warranty, to
-//  the extent permitted by applicable law. You can redistribute it
-//  and/or modify it under the terms of the Do What the Fuck You Want
-//  to Public License, Version 2, as published by the WTFPL Task Force.
-//  See http://www.wtfpl.net/ for more details.
-//
-
-#include <lol/engine-internal.h>
-
-#if LOL_USE_OPENSSL
-#   define CPPHTTPLIB_OPENSSL_SUPPORT 1
-#endif
-
-#if _WIN32
-#   define WIN32_LEAN_AND_MEAN 1
-#   include <windows.h>
-#   undef NEAR // avoids errors in <inaddr.h>
-#   undef FAR
-#   define NEAR
-#   define FAR
-#endif
-
-#if __EMSCRIPTEN__
-#   include <emscripten/fetch.h>
-#else
-#   include <httplib.h>
-#endif
-
-#include <utility>
-#include <memory>
-#include <regex>
-
-namespace lol
-{
-
-namespace net
-{
-
-namespace http
-{
-
-class client_impl
-{
-public:
-#if __EMSCRIPTEN__
-    ~client_impl()
-    {
-        emscripten_fetch_close(m_fetch);
-    }
-
-    void get(std::string const &url)
-    {
-        emscripten_fetch_attr_t attr;
-        emscripten_fetch_attr_init(&attr);
-        strcpy(attr.requestMethod, "GET");
-        attr.userData = this;
-        attr.attributes = EMSCRIPTEN_FETCH_LOAD_TO_MEMORY;
-        attr.onsuccess = client_impl::on_success;
-        attr.onerror = client_impl::on_failure;
-        m_fetch = emscripten_fetch(&attr, url.c_str());
-    }
-
-    static void on_success(emscripten_fetch_t *fetch)
-    {
-        auto *that = (client_impl *)fetch->userData;
-        that->m_result.assign(fetch->data, fetch->numBytes);
-        that->m_status = status::success;
-    }
-
-    static void on_failure(emscripten_fetch_t *fetch)
-    {
-        auto *that = (client_impl *)fetch->userData;
-        msg::error("downloading %s failed, HTTP failure status code: %d.\n",
-                   fetch->url, fetch->status);
-        that->m_status = status::error;
-    }
-
-    emscripten_fetch_t *m_fetch = nullptr;
-#else
-    ~client_impl()
-    {
-        delete m_thread;
-    }
-
-    void get(std::string const& url)
-    {
-        // This regex is copied from cpp-httplib
-        const static std::regex re(
-            R"(^(?:([^:/?#]+):)?(?://([^/?#]*))?([^?#]*(?:\?[^#]*)?)(?:#.*)?)");
-
-        std::smatch m;
-        if (!std::regex_match(url, m, re))
-        {
-            m_status = status::error;
-            return;
-        }
-
-        auto scheme = m[1].str();
-        auto host = m[2].str();
-        auto path = m[3].str();
-
-#ifdef CPPHTTPLIB_OPENSSL_SUPPORT
-        if (scheme == "https")
-            m_client = std::make_unique<httplib::SSLClient>(host);
-        else
-#endif
-        m_client = std::make_shared<httplib::Client>(host);
-        m_client->set_follow_location(true);
-
-        m_thread = new lol::thread([this, path](thread *)
-        {
-            auto res = m_client->Get(path.c_str());
-            if (res && res->status == 200)
-            {
-                m_result = std::move(res->body);
-                m_status = status::success;
-            }
-            else
-            {
-                msg::error("downloading %s failed, HTTP failure status code: %d.\n",
-                           m_url.c_str(), res ? res->status : -1);
-                m_status = status::error;
-            }
-        });
-    }
-
-    lol::thread *m_thread = nullptr;
-    std::shared_ptr<httplib::Client> m_client;
-#endif
-
-    status m_status;
-    std::string m_url;
-    std::string m_result;
-};
-
-client::client()
-  : impl(std::make_unique<client_impl>())
-{
-}
-
-client::~client()
-{
-}
-
-void client::get(std::string const &url)
-{
-    impl->m_status = status::pending;
-    impl->m_url = url;
-    impl->get(url);
-}
-
-void client::reset()
-{
-    impl->m_status = status::ready;
-    impl->m_url.assign("");
-    impl->m_result.assign("");
-}
-
-status client::get_status() const
-{
-    return impl->m_status;
-}
-
-std::string const & client::get_url() const
-{
-    return impl->m_url;
-}
-
-std::string const & client::get_result() const
-{
-    return impl->m_result;
-}
-
-} // namespace http
-
-} // namespace net
-
-} // namespace lol
-
diff --git a/src/platform.cpp b/src/platform.cpp
deleted file mode 100644
index 536cb7fa..00000000
--- a/src/platform.cpp
+++ /dev/null
@@ -1,30 +0,0 @@
-//
-// Lol Engine
-//
-// Copyright: (c) 2010-2011 Sam Hocevar <sam@hocevar.net>
-//   This program is free software; you can redistribute it and/or
-//   modify it under the terms of the Do What The Fuck You Want To
-//   Public License, Version 2, as published by Sam Hocevar. See
-//   http://www.wtfpl.net/ for more details.
-//
-
-#include <lol/engine-internal.h>
-
-namespace lol
-{
-
-/*
- * Public Platform class
- */
-
-int Platform::GetMouseCount()
-{
-#if defined __ANDROID__
-    /* Assume Android devices are touch devices that don't have a mouse */
-    return 0;
-#endif
-    return 1;
-}
-
-} /* namespace lol */
-
diff --git a/src/platform.h b/src/platform.h
deleted file mode 100644
index e6b9b36a..00000000
--- a/src/platform.h
+++ /dev/null
@@ -1,34 +0,0 @@
-//
-// Lol Engine
-//
-// Copyright: (c) 2010-2011 Sam Hocevar <sam@hocevar.net>
-//   This program is free software; you can redistribute it and/or
-//   modify it under the terms of the Do What The Fuck You Want To
-//   Public License, Version 2, as published by Sam Hocevar. See
-//   http://www.wtfpl.net/ for more details.
-//
-
-#pragma once
-
-//
-// The Platform interface
-// ----------------------
-// Helper functions to set up the platform.
-//
-
-#include <stdint.h>
-
-namespace lol
-{
-
-class Platform
-{
-public:
-    static int GetMouseCount();
-
-private:
-    Platform() {}
-};
-
-} /* namespace lol */
-
diff --git a/src/profiler.cpp b/src/profiler.cpp
deleted file mode 100644
index e7d671d0..00000000
--- a/src/profiler.cpp
+++ /dev/null
@@ -1,76 +0,0 @@
-//
-// Lol Engine
-//
-// Copyright: (c) 2010-2011 Sam Hocevar <sam@hocevar.net>
-//   This program is free software; you can redistribute it and/or
-//   modify it under the terms of the Do What The Fuck You Want To
-//   Public License, Version 2, as published by Sam Hocevar. See
-//   http://www.wtfpl.net/ for more details.
-//
-
-#include <lol/engine-internal.h>
-
-#include <cstdlib>
-#include <stdint.h>
-
-namespace lol
-{
-
-/*
- * Profiler implementation class
- */
-
-static class profiler_data
-{
-    friend class Profiler;
-
-    void update()
-    {
-        history[frame++ % HISTORY] = m_timer.get();
-        avg = max = 0.0f;
-
-        for (int i = 0; i < HISTORY; i++)
-        {
-            avg += history[i];
-            if (history[i] > max)
-                max = history[i];
-        }
-        avg /= HISTORY;
-    }
-
-    static int const HISTORY = 32;
-
-private:
-    float history[HISTORY] = { 0.0f };
-    int frame = 0;
-    timer m_timer;
-    float avg = 0.0f, max = 0.0f;
-}
-data[Profiler::STAT_COUNT];
-
-/*
- * Profiler public class
- */
-
-void Profiler::Start(int id)
-{
-    data[id].m_timer.get();
-}
-
-void Profiler::Stop(int id)
-{
-    data[id].update();
-}
-
-float Profiler::GetAvg(int id)
-{
-    return data[id].avg;
-}
-
-float Profiler::GetMax(int id)
-{
-    return data[id].max;
-}
-
-} /* namespace lol */
-
diff --git a/src/profiler.h b/src/profiler.h
deleted file mode 100644
index a6eb5486..00000000
--- a/src/profiler.h
+++ /dev/null
@@ -1,56 +0,0 @@
-//
-// Lol Engine
-//
-// Copyright: (c) 2010-2011 Sam Hocevar <sam@hocevar.net>
-//   This program is free software; you can redistribute it and/or
-//   modify it under the terms of the Do What The Fuck You Want To
-//   Public License, Version 2, as published by Sam Hocevar. See
-//   http://www.wtfpl.net/ for more details.
-//
-
-#pragma once
-
-//
-// The Profiler class
-// -------------------
-// The Profiler is a static class that collects statistic counters.
-//
-
-#include <stdint.h>
-
-namespace lol
-{
-
-class Profiler
-{
-public:
-    enum
-    {
-        STAT_TICK_FRAME = 0,
-        STAT_TICK_GAME,
-        STAT_TICK_DRAW,
-        STAT_TICK_BLIT,
-        STAT_USER_00,
-        STAT_USER_01,
-        STAT_USER_02,
-        STAT_USER_03,
-        STAT_USER_04,
-        STAT_USER_05,
-        STAT_USER_06,
-        STAT_USER_07,
-        STAT_USER_08,
-        STAT_USER_09,
-        STAT_COUNT
-    };
-
-    static void Start(int id);
-    static void Stop(int id);
-    static float GetAvg(int id);
-    static float GetMax(int id);
-
-private:
-    Profiler() {}
-};
-
-} /* namespace lol */
-
diff --git a/src/scene.cpp b/src/scene.cpp
deleted file mode 100644
index 22f6b637..00000000
--- a/src/scene.cpp
+++ /dev/null
@@ -1,760 +0,0 @@
-//
-//  Lol Engine
-//
-//  Copyright © 2010—2019 Sam Hocevar <sam@hocevar.net>
-//            © 2014—2015 Benjamin “Touky” Huet <huet.benjamin@gmail.com>
-//
-//  Lol Engine is free software. It comes without any warranty, to
-//  the extent permitted by applicable law. You can redistribute it
-//  and/or modify it under the terms of the Do What the Fuck You Want
-//  to Public License, Version 2, as published by the WTFPL Task Force.
-//  See http://www.wtfpl.net/ for more details.
-//
-
-#include <lol/engine-internal.h>
-
-#include <map>
-#include <cstdlib>
-
-#if defined(_WIN32)
-#   define WIN32_LEAN_AND_MEAN 1
-#   include <windows.h>
-#   undef WIN32_LEAN_AND_MEAN
-#endif
-
-#include "lolgl.h"
-
-LOLFX_RESOURCE_DECLARE(gpu_tile);
-LOLFX_RESOURCE_DECLARE(gpu_palette);
-LOLFX_RESOURCE_DECLARE(gpu_line);
-
-LOLFX_RESOURCE_DECLARE(gpu_blit);
-LOLFX_RESOURCE_DECLARE(gpu_postprocess);
-
-namespace lol
-{
-
-/*
- * The global g_scenes object, initialised by Video::Init
- */
-
-array<Scene*> Scene::g_scenes;
-
-static array<SceneDisplay*> g_scene_displays;
-
-static inline void gpu_marker(char const *message)
-{
-#if LOL_USE_GLEW && defined glStringMarkerGREMEDY
-    if (GLEW_GREMEDY_string_marker)
-        glStringMarkerGREMEDY(0, message);
-#else
-    UNUSED(message);
-#endif
-}
-
-//
-// Public SceneDisplay class
-//
-
-void SceneDisplay::Add(SceneDisplay* display)
-{
-    g_scene_displays << display;
-}
-
-int SceneDisplay::GetCount()
-{
-    return g_scene_displays.count();
-}
-
-SceneDisplay* SceneDisplay::GetDisplay(int index)
-{
-    ASSERT(0 <= index && index < g_scene_displays.count(),
-           "invalid display index %d", index);
-    return g_scene_displays[index];
-}
-
-void SceneDisplay::DestroyAll()
-{
-    for (SceneDisplay* display : g_scene_displays)
-        delete display;
-    g_scene_displays.clear();
-}
-
-void SceneDisplay::Enable()
-{
-    // TODO: PROFILER STUFF
-}
-
-void SceneDisplay::Disable()
-{
-    // TODO: PROFILER STUFF
-}
-
-/*
- * Primitive implementation class
- */
-
-void PrimitiveSource::Render(Scene& scene) { UNUSED(scene); }
-
-void PrimitiveRenderer::Render(Scene& scene, std::shared_ptr<PrimitiveSource> primitive)
-{
-    UNUSED(scene);
-    UNUSED(primitive);
-}
-
-/*
- * Scene implementation class
- */
-
-uint64_t Scene::g_used_id = 1;
-mutex Scene::g_prim_mutex;
-std::map<uintptr_t, array<std::shared_ptr<PrimitiveSource>>> Scene::g_prim_sources;
-
-/*
- * Public Scene class
- */
-Scene::Scene(ivec2 size)
-  : m_size(size),
-    m_wanted_size(size),
-    m_renderer(std::make_shared<Renderer>(size))
-{
-    /* TODO: FIX THAT */
-    ASSERT(!(g_used_id & ((uint64_t)1 << 63)), "Too many scenes !!!!");
-    m_mask_id = g_used_id;
-    g_used_id = g_used_id << 1;
-
-    for (int i = 0; i < 4; ++i)
-        m_renderbuffer[i] = std::make_shared<Framebuffer>(m_size);
-    m_pp.blit_shader = Shader::Create(LOLFX_RESOURCE_NAME(gpu_blit));
-    m_pp.pp_shader = Shader::Create(LOLFX_RESOURCE_NAME(gpu_postprocess));
-    m_pp.blit_pos_attr = m_pp.blit_shader->GetAttribLocation(VertexUsage::Position, 0);
-    m_pp.pp_pos_attr = m_pp.pp_shader->GetAttribLocation(VertexUsage::Position, 0);
-    m_pp.quad_vdecl = std::make_shared<VertexDeclaration>(VertexStream<vec2>(VertexUsage::Position));
-    m_pp.m_buffer_uni[0][0] = m_pp.blit_shader->GetUniformLocation("u_buffer");
-    m_pp.m_buffer_uni[1][0] = m_pp.pp_shader->GetUniformLocation("u_buffer");
-    m_pp.m_buffer_uni[1][1] = m_pp.pp_shader->GetUniformLocation("u_prev_buffer");
-    m_pp.m_buffer_uni[1][2] = m_pp.pp_shader->GetUniformLocation("u_prev_final");
-
-    array<vec2> quad { vec2( 1.0,  1.0), vec2(-1.0, -1.0), vec2( 1.0, -1.0),
-                       vec2(-1.0, -1.0), vec2( 1.0,  1.0), vec2(-1.0,  1.0), };
-
-    m_pp.quad_vbo = std::make_shared<VertexBuffer>(quad.bytes());
-    m_pp.quad_vbo->set_data(quad.data(), quad.bytes());
-
-    /* Create a default orthographic camera, in case the user doesn’t. */
-    m_default_cam = new Camera();
-    mat4 proj = mat4::ortho(0.f, (float)m_size.x, 0.f, (float)m_size.y, -1000.f, 1000.f);
-    m_default_cam->SetProjection(proj);
-    PushCamera(m_default_cam);
-
-    m_tile_api.m_cam = -1;
-    m_tile_api.m_shader = 0;
-    m_tile_api.m_palette_shader = 0;
-    m_tile_api.m_vdecl = std::make_shared<VertexDeclaration>(VertexStream<vec3>(VertexUsage::Position),
-                                                             VertexStream<vec2>(VertexUsage::TexCoord));
-
-    m_line_api.m_shader = 0;
-    m_line_api.m_vdecl = std::make_shared<VertexDeclaration>(VertexStream<vec4,vec4>(VertexUsage::Position, VertexUsage::Color));
-
-    m_line_api.m_debug_mask = 1;
-}
-
-void Scene::resize(ivec2 size)
-{
-    m_wanted_size = size;
-}
-
-Scene::~Scene()
-{
-    PopCamera(m_default_cam);
-
-    /* FIXME: this must be done while the GL context is still active.
-     * Change the code architecture to make sure of that. */
-    /* FIXME: also, make sure we do not add code to Reset() that will
-     * reallocate stuff */
-    Reset();
-}
-
-void Scene::AddNew(ivec2 size)
-{
-    Scene::g_scenes << new Scene(size);
-}
-
-void Scene::DestroyScene(Scene* scene)
-{
-    Scene::g_scenes.remove_item(scene);
-    delete scene;
-}
-
-void Scene::DestroyAll()
-{
-    while (Scene::g_scenes.count())
-        delete Scene::g_scenes.pop();
-}
-
-int Scene::GetCount()
-{
-    return g_scenes.count();
-}
-
-bool Scene::IsReady(int index)
-{
-    return 0 <= index && index < g_scenes.count() && !!g_scenes[index];
-}
-
-Scene& Scene::GetScene(int index)
-{
-    ASSERT(0 <= index && index < g_scenes.count() && !!g_scenes[index],
-           "Trying to get a non-existent scene %d", index);
-    return *g_scenes[index];
-}
-
-void Scene::Link(entity* entity)
-{
-    entity->m_scene_mask |= m_mask_id;
-}
-
-bool Scene::IsRelevant(entity* entity)
-{
-    return !!(entity->m_scene_mask & m_mask_id);
-}
-
-Camera* Scene::GetCamera(int cam_idx)
-{
-    return (0 <= cam_idx && cam_idx < m_camera_stack.count()) ?
-            m_camera_stack[cam_idx] :
-            m_camera_stack.last();
-}
-
-int Scene::PushCamera(Camera *cam)
-{
-    Ticker::Ref(cam);
-    m_camera_stack.push(cam);
-    return (int)m_camera_stack.count() - 1;
-}
-
-void Scene::PopCamera(Camera *cam)
-{
-    /* Parse from the end because that’s probably where we’ll find
-    * our camera first. */
-    for (int i = m_camera_stack.count(); i--;)
-    {
-        if (m_camera_stack[i] == cam)
-        {
-            Ticker::Unref(cam);
-            m_camera_stack.remove(i);
-            return;
-        }
-    }
-
-    ASSERT(false, "trying to pop a nonexistent camera from the scene");
-}
-
-void Scene::SetTileCam(int cam_idx)
-{
-    m_tile_api.m_cam = cam_idx;
-}
-
-void Scene::Reset()
-{
-    /* New scenegraph: Release fire&forget primitives */
-    for (uintptr_t key : keys(m_prim_renderers))
-    {
-        for (int idx = 0; idx < m_prim_renderers[key].count(); ++idx)
-            if (m_prim_renderers[key][idx]->m_fire_and_forget)
-                ReleasePrimitiveRenderer(idx--, key);
-    }
-
-    m_tile_api.m_bufs.clear();
-    m_tile_api.m_lights.clear();
-}
-
-//
-// Primitive source stuff
-//
-
-int Scene::HasPrimitiveSource(uintptr_t key)
-{
-    int count;
-    g_prim_mutex.lock();
-    {
-        count = g_prim_sources[key].count();
-    }
-    g_prim_mutex.unlock();
-    return count;
-}
-
-int Scene::AddPrimitiveSource(uintptr_t key, std::shared_ptr<PrimitiveSource> source)
-{
-    int count;
-    g_prim_mutex.lock();
-    {
-        count = g_prim_sources[key].count();
-        g_prim_sources[key].push(source);
-    }
-    g_prim_mutex.unlock();
-    return count;
-}
-
-void Scene::SetPrimitiveSource(int index, uintptr_t key, std::shared_ptr<PrimitiveSource> source)
-{
-    ASSERT(source);
-    ASSERT(index >= 0);
-
-    // Keep reference to old source until AFTER we release the lock
-    std::shared_ptr<PrimitiveSource> old;
-
-    g_prim_mutex.lock();
-    {
-        if (index < g_prim_sources[key].count())
-            old = g_prim_sources[key][index];
-        else
-            g_prim_sources[key].resize(index + 1);
-        g_prim_sources[key][index] = source;
-    }
-    g_prim_mutex.unlock();
-}
-
-void Scene::ReleasePrimitiveSource(int index, uintptr_t key)
-{
-    std::shared_ptr<PrimitiveSource> old;
-    g_prim_mutex.lock();
-    {
-        ASSERT(0 <= index && index < g_prim_sources[key].count());
-        old = g_prim_sources[key][index];
-        g_prim_sources[key].remove(index);
-    }
-    g_prim_mutex.unlock();
-}
-
-void Scene::ReleaseAllPrimitiveSources(uintptr_t key)
-{
-    // Delete oldies AFTER having released the lock
-    array<std::shared_ptr<PrimitiveSource>> oldies;
-
-    g_prim_mutex.lock();
-    {
-        oldies.reserve(g_prim_sources[key].count());
-        for (auto source : g_prim_sources[key])
-            oldies << source;
-        g_prim_sources[key].clear();
-    }
-    g_prim_mutex.unlock();
-}
-
-//
-// Primitive renderer stuff
-//
-
-int Scene::HasPrimitiveRenderer(uintptr_t key)
-{
-    return m_prim_renderers[key].count();
-}
-
-void Scene::AddPrimitiveRenderer(uintptr_t key, std::shared_ptr<PrimitiveRenderer> renderer)
-{
-    renderer->m_fire_and_forget = true;
-    m_prim_renderers[key].push(renderer);
-}
-
-void Scene::SetPrimitiveRenderer(int index, uintptr_t key, std::shared_ptr<PrimitiveRenderer> renderer)
-{
-    ASSERT(renderer);
-    ASSERT(index >= 0);
-
-    if (index >= m_prim_renderers[key].count())
-        m_prim_renderers[key].resize(index + 1);
-    m_prim_renderers[key][index] = renderer;
-}
-
-void Scene::ReleasePrimitiveRenderer(int index, uintptr_t key)
-{
-    ASSERT(0 <= index && index < m_prim_renderers[key].count());
-
-    m_prim_renderers[key].remove(index);
-}
-
-void Scene::ReleaseAllPrimitiveRenderers(uintptr_t key)
-{
-    m_prim_renderers[key].clear();
-}
-
-void Scene::AddTile(TileSet *tileset, int id, vec3 pos, vec2 scale, float radians)
-{
-    ASSERT(id < tileset->GetTileCount());
-
-    ivec2 size = tileset->GetTileSize(id);
-    mat4 model = mat4::translate(pos)
-               * mat4::scale(scale.x, scale.y, 1.f)
-               * mat4::translate(size.x * 0.5f, size.y * 0.5f, 0.f)
-               * mat4::rotate(scale.x * scale.y < 0 ? radians : -radians,
-                              vec3::axis_z);
-
-    AddTile(tileset, id, model);
-}
-
-void Scene::AddTile(TileSet *tileset, int id, mat4 model)
-{
-    ASSERT(id < tileset->GetTileCount());
-
-    Tile t;
-    t.m_model = model;
-    t.m_tileset = tileset;
-    t.m_id = id;
-
-    if (tileset->GetPalette())
-        m_tile_api.m_palettes.push(t);
-    else
-        m_tile_api.m_tiles.push(t);
-}
-
-void Scene::AddLine(vec3 a, vec3 b, vec4 color)
-{
-    m_line_api.m_lines.push(a, b, color, -1.f, 0xFFFFFFFF, false, false);
-}
-
-void Scene::AddLine(vec3 a, vec3 b, vec4 color, float duration, int mask)
-{
-    m_line_api.m_lines.push(a, b, color, duration, mask, false, false);
-}
-
-void Scene::AddLight(Light *l)
-{
-    m_tile_api.m_lights.push(l);
-}
-
-array<Light *> const &Scene::GetLights()
-{
-    return m_tile_api.m_lights;
-}
-
-void Scene::SetDisplay(SceneDisplay* display)
-{
-    m_display = display;
-}
-
-void Scene::EnableDisplay()
-{
-    // If no display has been set, use the default one
-    if (!m_display)
-        SetDisplay(SceneDisplay::GetDisplay());
-    m_display->Enable();
-}
-
-void Scene::DisableDisplay()
-{
-    ASSERT(m_display);
-    m_display->Disable();
-}
-
-static bool do_pp = true;
-
-void Scene::pre_render(float)
-{
-    gpu_marker("### begin frame");
-
-    // Handle resize event
-    if (m_size != m_wanted_size)
-    {
-        m_size = m_wanted_size;
-
-        m_renderer->viewport(ibox2(ivec2::zero, m_size));
-        for (int i = 0; i < 4; ++i)
-            m_renderbuffer[i] = std::make_shared<Framebuffer>(m_size);
-
-        mat4 proj = mat4::ortho(0.f, (float)m_size.x, 0.f, (float)m_size.y, -1000.f, 1000.f);
-        m_default_cam->SetProjection(proj);
-    }
-
-    /* First render into the offline buffer */
-    if (do_pp)
-    {
-        m_renderbuffer[0]->Bind();
-    }
-
-    {
-        render_context rc(m_renderer);
-        if (do_pp)
-        {
-            rc.clear_color(vec4(0.f, 0.f, 0.f, 1.f));
-            rc.clear_depth(1.f);
-        }
-
-        m_renderer->clear(ClearMask::Color | ClearMask::Depth);
-    }
-}
-
-/* Render everything that the scene contains */
-void Scene::render(float seconds)
-{
-    gpu_marker("### render scene");
-
-    // FIXME: get rid of the delta time argument
-    gpu_marker("# primitives");
-    render_primitives();
-    gpu_marker("# tiles");
-    render_tiles();
-    gpu_marker("# lines");
-    render_lines(seconds);
-}
-
-void Scene::post_render(float)
-{
-    gpu_marker("### post render");
-
-    if (do_pp)
-    {
-        m_renderbuffer[0]->Unbind();
-
-        gpu_marker("# postprocess");
-
-        m_renderbuffer[3]->Bind();
-
-        render_context rc(m_renderer);
-        rc.clear_color(vec4(0.f, 0.f, 0.f, 1.f));
-        rc.clear_depth(1.f);
-        m_renderer->clear(ClearMask::Color | ClearMask::Depth);
-
-        /* Execute post process */
-        m_pp.pp_shader->Bind();
-        m_pp.pp_shader->SetUniform(m_pp.m_buffer_uni[1][0], m_renderbuffer[0]->GetTextureUniform(), 0);
-        m_pp.pp_shader->SetUniform(m_pp.m_buffer_uni[1][1], m_renderbuffer[1]->GetTextureUniform(), 1);
-        m_pp.pp_shader->SetUniform(m_pp.m_buffer_uni[1][2], m_renderbuffer[2]->GetTextureUniform(), 2);
-        m_pp.quad_vdecl->Bind();
-        m_pp.quad_vdecl->SetStream(m_pp.quad_vbo, m_pp.pp_pos_attr);
-        m_pp.quad_vdecl->DrawElements(MeshPrimitive::Triangles, 0, 6);
-        m_pp.quad_vdecl->Unbind();
-        m_pp.pp_shader->Unbind();
-        m_renderbuffer[3]->Unbind();
-    }
-
-    if (do_pp)
-    {
-        gpu_marker("# blit frame");
-
-        m_pp.blit_shader->Bind();
-
-        render_context rc(m_renderer);
-        rc.clear_color(vec4(0.f, 0.f, 0.f, 1.f));
-        rc.clear_depth(1.f);
-        m_renderer->clear(ClearMask::Color | ClearMask::Depth);
-
-        /* Blit final image to screen */
-        m_pp.blit_shader->SetUniform(m_pp.m_buffer_uni[0][0], m_renderbuffer[3]->GetTextureUniform(), 3);
-        m_pp.quad_vdecl->Bind();
-        m_pp.quad_vdecl->SetStream(m_pp.quad_vbo, m_pp.blit_pos_attr);
-        m_pp.quad_vdecl->DrawElements(MeshPrimitive::Triangles, 0, 6);
-        m_pp.quad_vdecl->Unbind();
-        m_pp.blit_shader->Unbind();
-    }
-
-    if (do_pp)
-    {
-        /* Swap back buffers */
-        std::swap(m_renderbuffer[0], m_renderbuffer[1]);
-        std::swap(m_renderbuffer[2], m_renderbuffer[3]);
-    }
-
-    gpu_marker("### end of frame");
-}
-
-void Scene::render_primitives()
-{
-    /* FIXME: Temp fix for mesh having no render context*/
-    render_context rc(m_renderer);
-    rc.cull_mode(CullMode::Clockwise);
-    rc.depth_func(DepthFunc::LessOrEqual);
-
-    /* new scenegraph */
-    for (uintptr_t key : keys(m_prim_renderers))
-    {
-        for (int idx = 0; idx < m_prim_renderers[key].count(); ++idx)
-        {
-            /* TODO: Not sure if thread compliant */
-            std::shared_ptr<PrimitiveSource> source;
-            if (idx < g_prim_sources[key].count())
-                source = g_prim_sources[key][idx];
-            m_prim_renderers[key][idx]->Render(*this, source);
-        }
-    }
-}
-
-void Scene::render_tiles() // XXX: rename to Blit()
-{
-    render_context rc(m_renderer);
-
-    /* Early test if nothing needs to be rendered */
-    if (!m_tile_api.m_tiles.count() && !m_tile_api.m_palettes.count())
-        return;
-
-    /* FIXME: we disable culling for now because we don’t have a reliable
-     * way to know which side is facing the camera. */
-    rc.cull_mode(CullMode::Disabled);
-
-    rc.depth_func(DepthFunc::LessOrEqual);
-    rc.blend_func(BlendFunc::SrcAlpha, BlendFunc::OneMinusSrcAlpha);
-    rc.blend_equation(BlendEquation::Add, BlendEquation::Max);
-    rc.alpha_func(AlphaFunc::GreaterOrEqual, 0.01f);
-
-    if (!m_tile_api.m_shader)
-        m_tile_api.m_shader = Shader::Create(LOLFX_RESOURCE_NAME(gpu_tile));
-    if (!m_tile_api.m_palette_shader && m_tile_api.m_palettes.count())
-        m_tile_api.m_palette_shader = Shader::Create(LOLFX_RESOURCE_NAME(gpu_palette));
-
-    for (int p = 0; p < 2; p++)
-    {
-        auto shader = (p == 0) ? m_tile_api.m_shader : m_tile_api.m_palette_shader;
-        auto &tiles  = (p == 0) ? m_tile_api.m_tiles : m_tile_api.m_palettes;
-
-        if (tiles.count() == 0)
-            continue;
-
-        ShaderUniform uni_mat, uni_tex, uni_pal, uni_texsize;
-        ShaderAttrib attr_pos, attr_tex;
-        attr_pos = shader->GetAttribLocation(VertexUsage::Position, 0);
-        attr_tex = shader->GetAttribLocation(VertexUsage::TexCoord, 0);
-
-        shader->Bind();
-
-        uni_mat = shader->GetUniformLocation("u_projection");
-        shader->SetUniform(uni_mat, GetCamera(m_tile_api.m_cam)->GetProjection());
-        uni_mat = shader->GetUniformLocation("u_view");
-        shader->SetUniform(uni_mat, GetCamera(m_tile_api.m_cam)->GetView());
-        uni_mat = shader->GetUniformLocation("u_model");
-        shader->SetUniform(uni_mat, mat4(1.f));
-
-        uni_tex = shader->GetUniformLocation("u_texture");
-        uni_pal = m_tile_api.m_palette_shader ? m_tile_api.m_palette_shader->GetUniformLocation("u_palette") : ShaderUniform();
-        uni_texsize = shader->GetUniformLocation("u_texsize");
-
-        for (int buf = 0, i = 0, n; i < tiles.count(); i = n, buf += 2)
-        {
-            /* Count how many quads will be needed */
-            for (n = i + 1; n < tiles.count(); n++)
-                if (tiles[i].m_tileset != tiles[n].m_tileset)
-                    break;
-
-            /* Create a vertex array object */
-            auto vb1 = std::make_shared<VertexBuffer>(6 * (n - i) * sizeof(vec3));
-            vec3 *vertex = (vec3 *)vb1->lock(0, 0);
-            auto vb2 = std::make_shared<VertexBuffer>(6 * (n - i) * sizeof(vec2));
-            vec2 *texture = (vec2 *)vb2->lock(0, 0);
-
-            m_tile_api.m_bufs.push(vb1);
-            m_tile_api.m_bufs.push(vb2);
-
-            for (int j = i; j < n; j++)
-            {
-                tiles[i].m_tileset->BlitTile(tiles[j].m_id, tiles[j].m_model,
-                                vertex + 6 * (j - i), texture + 6 * (j - i));
-            }
-
-            vb1->unlock();
-            vb2->unlock();
-
-            /* Bind texture */
-            if (tiles[i].m_tileset->GetPalette())
-            {
-                if (tiles[i].m_tileset->GetTexture())
-                    shader->SetUniform(uni_tex, tiles[i].m_tileset->GetTexture()->GetTextureUniform(), 0);
-                if (tiles[i].m_tileset->GetPalette()->GetTexture())
-                    shader->SetUniform(uni_pal, tiles[i].m_tileset->GetPalette()->GetTexture()->GetTextureUniform(), 1);
-            }
-            else
-            {
-                shader->SetUniform(uni_tex, 0);
-                if (tiles[i].m_tileset->GetTexture())
-                    shader->SetUniform(uni_tex, tiles[i].m_tileset->GetTexture()->GetTextureUniform(), 0);
-                tiles[i].m_tileset->Bind();
-            }
-            shader->SetUniform(uni_texsize,
-                           (vec2)tiles[i].m_tileset->GetTextureSize());
-
-            /* Bind vertex and texture coordinate buffers */
-            m_tile_api.m_vdecl->Bind();
-            m_tile_api.m_vdecl->SetStream(vb1, attr_pos);
-            m_tile_api.m_vdecl->SetStream(vb2, attr_tex);
-
-            /* Draw arrays */
-            m_tile_api.m_vdecl->DrawElements(MeshPrimitive::Triangles, 0, (n - i) * 6);
-            m_tile_api.m_vdecl->Unbind();
-            tiles[i].m_tileset->Unbind();
-        }
-
-        tiles.clear();
-
-        shader->Unbind();
-
-        if (!m_tile_api.m_palette_shader)
-            break;
-    }
-}
-
-// FIXME: get rid of the delta time argument
-// XXX: rename to Blit()
-void Scene::render_lines(float seconds)
-{
-    render_context rc(m_renderer);
-
-    if (!m_line_api.m_lines.count())
-        return;
-
-    rc.depth_func(DepthFunc::LessOrEqual);
-    rc.blend_func(BlendFunc::SrcAlpha, BlendFunc::OneMinusSrcAlpha);
-    rc.blend_equation(BlendEquation::Add, BlendEquation::Max);
-    rc.alpha_func(AlphaFunc::GreaterOrEqual, 0.01f);
-
-    int linecount = (int)m_line_api.m_lines.count();
-
-    if (!m_line_api.m_shader)
-        m_line_api.m_shader = Shader::Create(LOLFX_RESOURCE_NAME(gpu_line));
-
-    array<vec4, vec4, vec4, vec4> buff;
-    buff.resize(linecount);
-    int real_linecount = 0;
-    mat4 const inv_view_proj = inverse(GetCamera()->GetProjection() * GetCamera()->GetView());
-    for (int i = 0; i < linecount; i++)
-    {
-        if (m_line_api.m_lines[i].m5 & m_line_api.m_debug_mask)
-        {
-            buff[real_linecount].m1 = vec4(m_line_api.m_lines[i].m1, (float)m_line_api.m_lines[i].m6);
-            buff[real_linecount].m2 = m_line_api.m_lines[i].m3;
-            buff[real_linecount].m3 = vec4(m_line_api.m_lines[i].m2, (float)m_line_api.m_lines[i].m7);
-            buff[real_linecount].m4 = m_line_api.m_lines[i].m3;
-            real_linecount++;
-        }
-        m_line_api.m_lines[i].m4 -= seconds;
-        if (m_line_api.m_lines[i].m4 < 0.f)
-        {
-            m_line_api.m_lines.remove_swap(i--);
-            linecount--;
-        }
-    }
-    auto vb = std::make_shared<VertexBuffer>(buff.bytes());
-    vb->set_data(buff.data(), buff.bytes());
-
-    m_line_api.m_shader->Bind();
-
-    ShaderUniform uni_mat, uni_tex;
-    ShaderAttrib attr_pos, attr_col;
-    attr_pos = m_line_api.m_shader->GetAttribLocation(VertexUsage::Position, 0);
-    attr_col = m_line_api.m_shader->GetAttribLocation(VertexUsage::Color, 0);
-
-    m_line_api.m_shader->Bind();
-
-    uni_mat = m_line_api.m_shader->GetUniformLocation("u_projection");
-    m_line_api.m_shader->SetUniform(uni_mat, GetCamera()->GetProjection());
-    uni_mat = m_line_api.m_shader->GetUniformLocation("u_view");
-    m_line_api.m_shader->SetUniform(uni_mat, GetCamera()->GetView());
-
-    m_line_api.m_vdecl->Bind();
-    m_line_api.m_vdecl->SetStream(vb, attr_pos, attr_col);
-    m_line_api.m_vdecl->DrawElements(MeshPrimitive::Lines, 0, 2 * real_linecount);
-    m_line_api.m_vdecl->Unbind();
-    m_line_api.m_shader->Unbind();
-
-    //m_line_api.m_lines.clear();
-}
-
-} /* namespace lol */
-
diff --git a/src/scene.h b/src/scene.h
deleted file mode 100644
index 46b9fd1f..00000000
--- a/src/scene.h
+++ /dev/null
@@ -1,341 +0,0 @@
-//
-//  Lol Engine
-//
-//  Copyright © 2010—2019 Sam Hocevar <sam@hocevar.net>
-//            © 2014—2015 Benjamin “Touky” Huet <huet.benjamin@gmail.com>
-//
-//  Lol Engine is free software. It comes without any warranty, to
-//  the extent permitted by applicable law. You can redistribute it
-//  and/or modify it under the terms of the Do What the Fuck You Want
-//  to Public License, Version 2, as published by the WTFPL Task Force.
-//  See http://www.wtfpl.net/ for more details.
-//
-
-#pragma once
-
-//
-// The Scene class
-// ---------------
-//
-
-#include <memory>
-#include <cstdint>
-
-#include "tileset.h"
-#include "light.h"
-#include "camera.h"
-#include "mesh/mesh.h"
-#include <lol/gpu/renderer.h>
-
-#define LOL_MAX_LIGHT_COUNT 8
-
-namespace lol
-{
-
-//-----------------------------------------------------------------------------
-class PrimitiveSource
-{
-    friend class Scene;
-
-public:
-    PrimitiveSource() { }
-    virtual ~PrimitiveSource() { }
-    virtual void Render(Scene& scene);
-
-private:
-};
-
-/*
- * A quick and dirty Tile structure for 2D blits
- */
-
-struct Tile
-{
-    mat4 m_model;
-    TileSet *m_tileset;
-    int m_id;
-};
-
-class PrimitiveRenderer
-{
-    friend class Scene;
-
-public:
-    PrimitiveRenderer() { }
-    virtual ~PrimitiveRenderer() { }
-    virtual void Render(Scene& scene, std::shared_ptr<PrimitiveSource> primitive);
-
-private:
-    bool m_fire_and_forget = false;
-};
-
-class SceneDisplay
-{
-    friend class Scene;
-
-public:
-    SceneDisplay() { }
-    virtual ~SceneDisplay() { }
-
-    /* pos/size/... methods */
-    virtual void set_resolution(ivec2 resolution) { UNUSED(resolution); }
-    virtual ivec2 resolution() const { return ivec2(0); }
-
-    virtual void SetPosition(ivec2 position) { UNUSED(position); }
-
-    /* TODO: Should that be there or in Video ? */
-    static void Add(SceneDisplay* display);
-    static int GetCount();
-    static SceneDisplay* GetDisplay(int index = 0);
-    static void DestroyAll();
-
-    /* Implement these in the platform section */
-    static int GetPhysicalCount();
-    static const char* GetPhysicalName(int index = 0);
-
-//protected:
-    virtual void Enable();
-    virtual void Disable();
-};
-
-class Scene
-{
-    friend class Video;
-
-private:
-    static array<Scene*> g_scenes;
-
-    Scene(ivec2 size);
-    ~Scene();
-
-public:
-    static void AddNew(ivec2 size);
-private: //Private because I don't know if we should have it
-    static void DestroyScene(Scene* scene);
-private:
-    static void DestroyAll();
-public:
-    static int GetCount();
-    static bool IsReady(int index = 0);
-    static Scene& GetScene(int index = 0);
-
-public:
-    //TODO: don't like the name
-    void Link(entity* entity);
-    bool IsRelevant(entity* entity);
-
-public:
-    Camera* GetCamera(int cam_idx = -1);
-    int PushCamera(Camera *cam);
-    void PopCamera(Camera *cam);
-    void SetTileCam(int cam_idx);
-
-    void Reset();
-
-    std::shared_ptr<Renderer> get_renderer() { return m_renderer; }
-
-    /* ============================== */
-#   define _KEY_IDX (uintptr_t)key /* TOUKY: I don't like that. hash should be fixed to handle these custom stuff */
-    /* ============================== */
-private:
-    int HasPrimitiveSource(uintptr_t key);
-    int AddPrimitiveSource(uintptr_t key, std::shared_ptr<class PrimitiveSource> source);
-    void SetPrimitiveSource(int index, uintptr_t key, std::shared_ptr<class PrimitiveSource> source);
-    void ReleasePrimitiveSource(int index, uintptr_t key);
-    void ReleaseAllPrimitiveSources(uintptr_t key);
-public:
-    /* === Primitive source stuff === */
-    /* Returns the number of primitive source set to the given entity */
-    template <typename T>
-    int HasPrimitiveSource(T* key)
-    {
-        ASSERT(key);
-        return HasPrimitiveSource(_KEY_IDX);
-    }
-    /* Add a primitive sources linked to the given entity
-     * Returns the slot number */
-    template <typename T>
-    int AddPrimitiveSource(T* key, std::shared_ptr<class PrimitiveSource> source)
-    {
-        ASSERT(key);
-        return AddPrimitiveSource(_KEY_IDX, source);
-    }
-    /* Update the primitive source at index linked to the given entity
-     * Deletes the old one
-     * The slot is kept even if source == nullptr */
-    template <typename T>
-    void SetPrimitiveSource(int index, T* key, std::shared_ptr<class PrimitiveSource> source)
-    {
-        ASSERT(key);
-        SetPrimitiveSource(index, _KEY_IDX, source);
-    }
-    /* Remove primitive source at index set to the given entity */
-    template <typename T>
-    void ReleasePrimitiveSource(int index, T* key)
-    {
-        ASSERT(key);
-        ReleasePrimitiveSource(index, _KEY_IDX);
-    }
-    /* Remove all primitive source set to the given entity */
-    template <typename T>
-    void ReleaseAllPrimitiveSources(T* key)
-    {
-        ASSERT(key);
-        ReleaseAllPrimitiveSources(_KEY_IDX);
-    }
-
-private:
-    int HasPrimitiveRenderer(uintptr_t key);
-
-    void AddPrimitiveRenderer(uintptr_t key, std::shared_ptr<class PrimitiveRenderer> renderer);
-    void SetPrimitiveRenderer(int index, uintptr_t key, std::shared_ptr<class PrimitiveRenderer> renderer);
-    void ReleasePrimitiveRenderer(int index, uintptr_t key);
-    void ReleaseAllPrimitiveRenderers(uintptr_t key);
-public:
-    /* === Primitive renderer stuff === */
-    /* Returns the number of primitive renderer set to the given entity */
-    template <typename T>
-    int HasPrimitiveRenderer(T* key)
-    {
-        ASSERT(key);
-        return HasPrimitiveRenderer(_KEY_IDX);
-    }
-    /* Add a primitive renderer linked to the given entity
-     * The primitive is considered as Fire&Forget and
-     * will be destroyed at the end of the frame */
-    template <typename T>
-    void AddPrimitiveRenderer(T* key, std::shared_ptr<class PrimitiveRenderer> renderer)
-    {
-        ASSERT(key);
-        AddPrimitiveRenderer(_KEY_IDX, renderer);
-    }
-    /* Update the primitive renderer linked to the given entity
-     * Deletes the old one
-     * Will assert if renderer == nullptr */
-    template <typename T>
-    void SetPrimitiveRenderer(int index, T* key, std::shared_ptr<class PrimitiveRenderer> renderer)
-    {
-        ASSERT(key && renderer);
-        SetPrimitiveRenderer(index, _KEY_IDX, renderer);
-    }
-    /* Remove primitive renderer at index set to the given entity */
-    template <typename T>
-    void ReleasePrimitiveRenderer(int index, T* key)
-    {
-        ASSERT(key);
-        ReleasePrimitiveRenderer(index, _KEY_IDX);
-    }
-    /* Remove all primitive renderer set to the given entity */
-    template <typename T>
-    void ReleaseAllPrimitiveRenderers(T* key)
-    {
-        ASSERT(key);
-        ReleaseAllPrimitiveRenderers(_KEY_IDX);
-    }
-    /* ============================== */
-#   undef _KEY_IDX /* (uintptr_t)key *//* TOUKY: I don't like that. hash should be fixed to handle these custom stuff */
-    /* ============================== */
-
-    /* FIXME: this should be deprecated -- it doesn't really match
-     * the architecture we want to build */
-    void AddTile(TileSet *tileset, int id, vec3 pos, vec2 scale, float radians);
-    void AddTile(TileSet *tileset, int id, mat4 model);
-
-public:
-    void AddLine(vec3 a, vec3 b, vec4 color);
-    void AddLine(vec3 a, vec3 b, vec4 color, float duration, int mask);
-
-    void AddLight(Light *light);
-    array<Light *> const &GetLights();
-
-    /* === Render stuff === */
-    void SetDisplay(SceneDisplay* display);
-    void EnableDisplay();
-    void DisableDisplay();
-
-    void resize(ivec2 size);
-
-    void pre_render(float seconds);
-    void render(float seconds);
-    void post_render(float seconds);
-
-private:
-    void render_primitives();
-    void render_tiles();
-    void render_lines(float seconds);
-
-    ivec2 m_size, m_wanted_size;
-
-    std::shared_ptr<Renderer> m_renderer;
-
-    //
-    // The old SceneData stuff
-    //
-
-    /* Mask ID */
-    /* TODO: Do a mask class that handles more than 64 slots */
-    static uint64_t g_used_id;
-    uint64_t m_mask_id = 0;
-
-    /* Scene display: if none has been set to the scene,
-     * the default one created by the app will be used */
-    SceneDisplay* m_display = nullptr;
-
-    /** Render buffers: where to render to. */
-    std::shared_ptr<Framebuffer> m_renderbuffer[4];
-
-    struct postprocess
-    {
-        std::shared_ptr<Shader> blit_shader, pp_shader;
-        std::shared_ptr<VertexBuffer> quad_vbo;
-        std::shared_ptr<VertexDeclaration> quad_vdecl;
-        ShaderUniform m_buffer_uni[2][3];
-        ShaderAttrib blit_pos_attr, pp_pos_attr;
-    }
-    m_pp;
-
-    /* Sources are shared by all scenes.
-     * Renderers are scene-dependent. They get the primitive in the identical
-     * slot to render with the given scene.
-     * Primitives and renderers will be kept until:
-     * - Updated by entity
-     * - Marked Fire&Forget
-     * - Scene is destroyed */
-    std::map<uintptr_t, array<std::shared_ptr<PrimitiveRenderer>>> m_prim_renderers;
-    static std::map<uintptr_t, array<std::shared_ptr<PrimitiveSource>>> g_prim_sources;
-    static mutex g_prim_mutex;
-
-    Camera *m_default_cam;
-    array<Camera *> m_camera_stack;
-
-    /* Old line API <P0, P1, COLOR, TIME, MASK> */
-    struct line_api
-    {
-        //float m_duration, m_segment_size;
-        //vec4 m_color;
-        array<vec3, vec3, vec4, float, int, bool, bool> m_lines;
-        int /*m_mask,*/ m_debug_mask;
-        std::shared_ptr<Shader> m_shader;
-        std::shared_ptr<VertexDeclaration> m_vdecl;
-    }
-    m_line_api;
-
-    /* The old tiles API */
-    struct tile_api
-    {
-        int m_cam;
-        array<Tile> m_tiles;
-        array<Tile> m_palettes;
-        array<Light *> m_lights;
-
-        std::shared_ptr<Shader> m_shader;
-        std::shared_ptr<Shader> m_palette_shader;
-
-        std::shared_ptr<VertexDeclaration> m_vdecl;
-        array<std::shared_ptr<VertexBuffer>> m_bufs;
-    }
-    m_tile_api;
-};
-
-} /* namespace lol */
-
diff --git a/src/sprite.cpp b/src/sprite.cpp
deleted file mode 100644
index 16a771c7..00000000
--- a/src/sprite.cpp
+++ /dev/null
@@ -1,60 +0,0 @@
-//
-//  Lol Engine
-//
-//  Copyright © 2010—2019 Sam Hocevar <sam@hocevar.net>
-//
-//  Lol Engine is free software. It comes without any warranty, to
-//  the extent permitted by applicable law. You can redistribute it
-//  and/or modify it under the terms of the Do What the Fuck You Want
-//  to Public License, Version 2, as published by the WTFPL Task Force.
-//  See http://www.wtfpl.net/ for more details.
-//
-
-#include <lol/engine-internal.h>
-
-namespace lol
-{
-
-/*
- * Sprite implementation class
- */
-
-class SpriteData
-{
-    friend class Sprite;
-
-private:
-    TileSet *tileset;
-    int id;
-};
-
-/*
- * Public Sprite class
- */
-
-Sprite::Sprite(TileSet *tileset, int id)
-  : data(new SpriteData())
-{
-    data->tileset = tileset;
-    data->id = id;
-}
-
-void Sprite::tick_game(float seconds)
-{
-    entity::tick_game(seconds);
-}
-
-void Sprite::tick_draw(float seconds, Scene &scene)
-{
-    entity::tick_draw(seconds, scene);
-
-    scene.AddTile(data->tileset, data->id, m_position, vec2(1.0f), 0.0f);
-}
-
-Sprite::~Sprite()
-{
-    delete data;
-}
-
-} /* namespace lol */
-
diff --git a/src/sprite.h b/src/sprite.h
deleted file mode 100644
index 32859801..00000000
--- a/src/sprite.h
+++ /dev/null
@@ -1,41 +0,0 @@
-//
-// Lol Engine
-//
-// Copyright: (c) 2010-2013 Sam Hocevar <sam@hocevar.net>
-//   This program is free software; you can redistribute it and/or
-//   modify it under the terms of the Do What The Fuck You Want To
-//   Public License, Version 2, as published by Sam Hocevar. See
-//   http://www.wtfpl.net/ for more details.
-//
-
-#pragma once
-
-//
-// The Sprite class
-// ----------------
-//
-
-#include "engine/worldentity.h"
-#include "tileset.h"
-
-namespace lol
-{
-
-class SpriteData;
-
-class Sprite : public WorldEntity
-{
-public:
-    Sprite(TileSet *tileset, int id);
-    virtual ~Sprite();
-
-protected:
-    virtual void tick_game(float seconds);
-    virtual void tick_draw(float seconds, Scene &scene);
-
-private:
-    SpriteData *data;
-};
-
-} /* namespace lol */
-
diff --git a/src/sys/file.cpp b/src/sys/file.cpp
deleted file mode 100644
index 9c7ef004..00000000
--- a/src/sys/file.cpp
+++ /dev/null
@@ -1,619 +0,0 @@
-//
-//  Lol Engine
-//
-//  Copyright © 2010—2019 Sam Hocevar <sam@hocevar.net>
-//
-//  Lol Engine is free software. It comes without any warranty, to
-//  the extent permitted by applicable law. You can redistribute it
-//  and/or modify it under the terms of the Do What the Fuck You Want
-//  to Public License, Version 2, as published by the WTFPL Task Force.
-//  See http://www.wtfpl.net/ for more details.
-//
-
-#include <lol/engine-internal.h>
-
-#if __ANDROID__
-#   include <sys/types.h>
-#   include <android/asset_manager_jni.h>
-#endif
-
-#if defined(_WIN32)
-#   define WIN32_LEAN_AND_MEAN 1
-#   include <windows.h>
-#   undef WIN32_LEAN_AND_MEAN
-#else
-#   include <dirent.h>
-#endif
-
-#if defined HAVE_UNISTD_H
-#   include <unistd.h>
-#endif
-
-#include <atomic>
-#include <string>
-#include <algorithm>
-#include <sys/stat.h>
-
-namespace lol
-{
-
-#if __ANDROID__
-extern AAssetManager *g_assets;
-#endif
-
-//---------------
-class FileData
-{
-    friend class File;
-
-    void Open(StreamType stream)
-    {
-        if (m_type == StreamType::File ||
-            m_type == StreamType::FileBinary)
-            return;
-        m_type = stream;
-        switch (stream.ToScalar())
-        {
-#if __ANDROID__
-        /* FIXME: no modes, no error checking, no nothing */
-#elif HAVE_STDIO_H
-            case StreamType::StdIn:  m_fd = stdin;  break;
-            case StreamType::StdOut: m_fd = stdout; break;
-            case StreamType::StdErr: m_fd = stderr; break;
-#endif
-            default: break;
-        }
-    }
-
-    void Open(std::string const &file, FileAccess mode, bool force_binary)
-    {
-        m_type = (force_binary) ? (StreamType::FileBinary) : (StreamType::File);
-#if __ANDROID__
-        ASSERT(g_assets);
-        m_asset = AAssetManager_open(g_assets, file.c_str(), AASSET_MODE_UNKNOWN);
-#elif HAVE_STDIO_H
-        /* FIXME: no modes, no error checking, no nothing */
-        stat(file.c_str(), &m_stat);
-        std::string access(mode == FileAccess::Write ? "w" : "r");
-        if (force_binary)
-            access += "b";
-        m_fd = fopen(file.c_str(), access.c_str());
-#endif
-    }
-
-    inline bool IsValid() const
-    {
-#if __ANDROID__
-        return !!m_asset;
-#elif HAVE_STDIO_H
-        return !!m_fd;
-#else
-        return false;
-#endif
-    }
-
-    void Close()
-    {
-        if (m_type != StreamType::File &&
-            m_type != StreamType::FileBinary)
-            return;
-#if __ANDROID__
-        if (m_asset)
-            AAsset_close(m_asset);
-        m_asset = nullptr;
-#elif HAVE_STDIO_H
-        if (m_fd)
-            fclose(m_fd);
-        m_fd = nullptr;
-#endif
-    }
-
-    int Read(uint8_t *buf, int count)
-    {
-#if __ANDROID__
-        return AAsset_read(m_asset, buf, count);
-#elif HAVE_STDIO_H
-        size_t done = fread(buf, 1, count, m_fd);
-        if (done <= 0)
-            return -1;
-
-        return (int)done;
-#else
-        return 0;
-#endif
-    }
-
-    std::string ReadString()
-    {
-        array<uint8_t> buf;
-        buf.resize(BUFSIZ);
-        std::string ret;
-        while (IsValid())
-        {
-            int done = Read(&buf[0], buf.count());
-
-            if (done <= 0)
-                break;
-
-            size_t oldsize = ret.length();
-            ret.resize(oldsize + done);
-            memcpy(&ret[oldsize], &buf[0], done);
-
-            buf.resize(buf.count() * 3 / 2);
-        }
-        return ret;
-    }
-
-    int Write(void const *buf, int count)
-    {
-#if __ANDROID__
-        //return AAsset_read(m_asset, buf, count);
-        return 0;
-#elif HAVE_STDIO_H
-        size_t done = fwrite(buf, 1, count, m_fd);
-        if (done <= 0)
-            return -1;
-
-        return (int)done;
-#else
-        return 0;
-#endif
-    }
-
-    long int GetPosFromStart()
-    {
-#if __ANDROID__
-        return 0;
-#elif HAVE_STDIO_H
-        return ftell(m_fd);
-#else
-        return 0;
-#endif
-    }
-
-    void SetPosFromStart(long int pos)
-    {
-#if __ANDROID__
-        //NOT IMPLEMENTED
-#elif HAVE_STDIO_H
-        fseek(m_fd, pos, SEEK_SET);
-#else
-        //NOT IMPLEMENTED
-#endif
-    }
-
-    long int size()
-    {
-#if __ANDROID__
-        return 0;
-#elif HAVE_STDIO_H
-        return m_stat.st_size;
-#else
-        return 0;
-#endif
-    }
-
-    long int GetModificationTime()
-    {
-#if __ANDROID__
-        return 0;
-#elif HAVE_STDIO_H
-        return (long int)m_stat.st_mtime;
-#else
-        return 0;
-#endif
-    }
-
-    //-----------------------
-#if __ANDROID__
-    AAsset *m_asset = nullptr;
-#elif HAVE_STDIO_H
-    FILE *m_fd = nullptr;
-#endif
-    std::atomic<int> m_refcount = 0;
-    StreamType m_type = StreamType::File;
-    struct stat m_stat;
-};
-
-//-- FILE --
-File::File()
-  : m_data(new FileData)
-{
-    ++m_data->m_refcount;
-}
-
-//--
-File::File(File const &that)
-  : m_data(that.m_data)
-{
-    ++m_data->m_refcount;
-}
-
-//--
-File &File::operator =(File const &that)
-{
-    if (this == &that)
-        return *this;
-
-    /* FIXME: this needs auditing */
-    int refcount = --m_data->m_refcount;
-    if (refcount == 0)
-    {
-        m_data->Close();
-        delete m_data;
-    }
-
-    m_data = that.m_data;
-    ++m_data->m_refcount;
-
-    return *this;
-}
-
-//--
-File::~File()
-{
-    int refcount = --m_data->m_refcount;
-    if (refcount == 0)
-    {
-        m_data->Close();
-        delete m_data;
-    }
-}
-
-//--
-void File::Open(StreamType stream)
-{
-    m_data->Open(stream);
-}
-
-//--
-void File::Open(std::string const &file, FileAccess mode, bool force_binary)
-{
-    m_data->Open(file, mode, force_binary);
-}
-
-//--
-bool File::IsValid() const
-{
-    return m_data->IsValid();
-}
-
-//--
-void File::Close()
-{
-    m_data->Close();
-}
-
-//--
-int File::Read(uint8_t *buf, int count)
-{
-    return m_data->Read(buf, count);
-}
-
-//--
-std::string File::ReadString()
-{
-    return m_data->ReadString();
-}
-
-//--
-int File::Write(void const *buf, int count)
-{
-    return m_data->Write(buf, count);
-}
-
-//--
-int File::Write(std::string const &buf)
-{
-    return m_data->Write(buf.c_str(), (int)buf.length());
-}
-
-//--
-long int File::GetPosFromStart()
-{
-    return m_data->GetPosFromStart();
-}
-
-//--
-void File::SetPosFromStart(long int pos)
-{
-    m_data->SetPosFromStart(pos);
-}
-
-//--
-long int File::size()
-{
-    return m_data->size();
-}
-
-//--
-long int File::GetModificationTime()
-{
-    return m_data->GetModificationTime();
-}
-
-//---------------
-class DirectoryData
-{
-    friend class Directory;
-
-    DirectoryData() : m_type(StreamType::File)
-    {
-#if __ANDROID__
-        /* FIXME: not implemented */
-#elif defined(_WIN32)
-        m_handle = INVALID_HANDLE_VALUE;
-#elif HAVE_STDIO_H
-        m_dd = nullptr;
-#endif
-    }
-
-    void Open(std::string const &directory, FileAccess mode)
-    {
-        UNUSED(mode); /* FIXME */
-
-        m_type = StreamType::File;
-#if __ANDROID__
-        /* FIXME: not implemented */
-#elif defined(_WIN32)
-        m_directory = directory;
-        std::string filter = m_directory + "*";
-        std::replace(filter.begin(), filter.end(), '/', '\\');
-        WIN32_FIND_DATA FindFileData;
-        m_handle = FindFirstFile(filter.c_str(), &FindFileData);
-        stat(directory.c_str(), &m_stat);
-#elif HAVE_STDIO_H
-        m_dd = opendir(directory.c_str());
-        stat(directory.c_str(), &m_stat);
-#endif
-    }
-
-    void Close()
-    {
-        if (m_type != StreamType::File)
-            return;
-
-        if (IsValid())
-        {
-#if __ANDROID__
-            /* FIXME: not implemented */
-#elif defined(_WIN32)
-            FindClose(m_handle);
-#elif HAVE_STDIO_H
-            closedir(m_dd);
-#endif
-        }
-
-#if __ANDROID__
-        /* FIXME: not implemented */
-#elif defined(_WIN32)
-        m_handle = INVALID_HANDLE_VALUE;
-#elif HAVE_STDIO_H
-        m_dd = nullptr;
-#endif
-    }
-
-    bool GetContentList(array<std::string>* files, array<std::string>* directories)
-    {
-        if (!IsValid())
-            return false;
-
-#if __ANDROID__
-        /* FIXME: not implemented */
-#elif defined(_WIN32)
-        std::string filter = m_directory + "*";
-        std::replace(filter.begin(), filter.end(), '/', '\\');
-        WIN32_FIND_DATA find_data;
-        HANDLE handle = FindFirstFile(filter.c_str(), &find_data);
-        bool file_valid = (handle != INVALID_HANDLE_VALUE);
-
-        while (file_valid)
-        {
-            if (find_data.cFileName[0] != '.')
-            {
-                // We have a directory
-                if (find_data.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)
-                {
-                    if (directories)
-                        *directories << std::string(find_data.cFileName);
-                }
-                else
-                {
-                    if (files)
-                        *files << std::string(find_data.cFileName);
-                }
-            }
-            //Go for next one
-            file_valid = !!FindNextFile(m_handle, &find_data);
-        }
-#elif HAVE_STDIO_H
-        /* FIXME: not implemented */
-#endif
-        return ((files && files->count()) || (directories && directories->count()));
-    }
-
-    inline bool IsValid() const
-    {
-#if __ANDROID__
-        /* FIXME: not implemented */
-#elif defined(_WIN32)
-        return (m_handle != INVALID_HANDLE_VALUE);
-#elif HAVE_STDIO_H
-        return !!m_dd;
-#else
-        return false;
-#endif
-    }
-
-    long int GetModificationTime()
-    {
-#if __ANDROID__
-        return 0;
-#elif HAVE_STDIO_H
-        return (long int)m_stat.st_mtime;
-#else
-        return 0;
-#endif
-    }
-
-#if __ANDROID__
-    /* FIXME: not implemented */
-#elif defined(_WIN32)
-    HANDLE m_handle;
-    std::string m_directory;
-#elif HAVE_STDIO_H
-    DIR *m_dd;
-#endif
-    std::atomic<int> m_refcount;
-    StreamType m_type;
-    struct stat m_stat;
-};
-
-//-- DIRECTORY --
-Directory::Directory(std::string const &name)
-  : m_data(new DirectoryData),
-    m_name(name + "/")
-{
-    ++m_data->m_refcount;
-}
-
-//--
-Directory::Directory(Directory const &that)
-  : m_data(that.m_data),
-    m_name(that.m_name)
-{
-    ++m_data->m_refcount;
-}
-
-//--
-Directory &Directory::operator =(Directory const &that)
-{
-    if (this == &that)
-        return *this;
-
-    /* FIXME: this needs auditing */
-    int refcount = --m_data->m_refcount;
-    if (refcount == 0)
-    {
-        m_data->Close();
-        delete m_data;
-    }
-
-    m_data = that.m_data;
-    m_name = that.m_name;
-    ++m_data->m_refcount;
-
-    return *this;
-}
-
-//--
-Directory::~Directory()
-{
-    int refcount = --m_data->m_refcount;
-    if (refcount == 0)
-    {
-        m_data->Close();
-        delete m_data;
-    }
-}
-
-//--
-void Directory::Open(FileAccess mode)
-{
-    return m_data->Open(m_name, mode);
-}
-
-//--
-bool Directory::IsValid() const
-{
-    return m_data->IsValid();
-}
-
-//--
-void Directory::Close()
-{
-    m_data->Close();
-}
-
-//--
-bool Directory::GetContent(array<std::string>* files, array<Directory>* directories)
-{
-    array<std::string> sfiles, sdirectories;
-    bool found_some = m_data->GetContentList(&sfiles, &sdirectories);
-    UNUSED(found_some);
-
-    if (directories)
-        for (int i = 0; i < sdirectories.count(); i++)
-            directories->push(Directory(m_name + sdirectories[i]));
-
-    if (files)
-        for (int i = 0; i < sfiles.count(); i++)
-            files->push(m_name + sfiles[i]);
-
-    return (files && files->count()) || (directories || directories->count());
-}
-
-//--
-bool Directory::GetContent(array<std::string>& files, array<Directory>& directories)
-{
-    return GetContent(&files, &directories);
-}
-
-//--
-bool Directory::GetContent(array<Directory>& directories)
-{
-    return GetContent(nullptr, &directories);
-}
-
-//--
-bool Directory::GetContent(array<std::string>& files)
-{
-    return GetContent(&files, nullptr);
-}
-
-//--
-std::string Directory::GetName()
-{
-    return m_name;
-}
-
-//--
-long int Directory::GetModificationTime()
-{
-    return m_data->GetModificationTime();
-}
-
-//--
-std::string Directory::GetCurrent()
-{
-    std::string ret;
-#if __ANDROID__
-    /* FIXME: not implemented */
-#elif defined(_WIN32)
-    TCHAR buff[MAX_PATH * 2];
-    GetCurrentDirectory(MAX_PATH, buff);
-    ret = buff;
-    std::replace(ret.begin(), ret.end(), '\\', '/');
-#elif HAVE_STDIO_H
-    /* FIXME: not implemented */
-#endif
-    return ret;
-}
-
-//--
-bool Directory::SetCurrent(std::string directory)
-{
-#if __ANDROID__
-    /* FIXME: not implemented */
-#elif defined(_WIN32)
-    std::string result = directory;
-    std::replace(result.begin(), result.end(), '/', '\\');
-    return !!SetCurrentDirectory(result.c_str());
-#elif HAVE_UNISTD_H
-    chdir(directory.c_str());
-#endif
-    return false;
-}
-
-} /* namespace lol */
-
diff --git a/src/sys/hacks.cpp b/src/sys/hacks.cpp
deleted file mode 100644
index a005b566..00000000
--- a/src/sys/hacks.cpp
+++ /dev/null
@@ -1,50 +0,0 @@
-//
-//  Lol Engine
-//
-//  Copyright © 2010—2015 Sam Hocevar <sam@hocevar.net>
-//
-//  Lol Engine is free software. It comes without any warranty, to
-//  the extent permitted by applicable law. You can redistribute it
-//  and/or modify it under the terms of the Do What the Fuck You Want
-//  to Public License, Version 2, as published by the WTFPL Task Force.
-//  See http://www.wtfpl.net/ for more details.
-//
-
-#include <lol/engine-internal.h>
-
-/*
- * VS 2015 hack: the CRT was fully rewritten, and functions such
- * as _iob_func() and fprintf() have disappeared. Since we link with
- * libSDL which uses these versions, we need to provide them.
- */
-
-#if _MSC_VER >= 1900
-#include <cstdio>
-
-extern "C" {
-
-#if _M_X64
-void *__imp___iob_func(void)
-#else
-void *_imp____iob_func(void)
-#endif
-{
-    return NULL;
-}
-
-#if _M_X64
-int __imp_fprintf(FILE *stream, char const *fmt, ...)
-#else
-int _imp__fprintf(FILE *stream, char const *fmt, ...)
-#endif
-{
-    va_list va;
-    va_start(va, fmt);
-    int ret = vfprintf(stream, fmt, va);
-    va_end(va);
-    return ret;
-}
-
-}
-#endif
-
diff --git a/src/sys/init.cpp b/src/sys/init.cpp
deleted file mode 100644
index 1c6fcb49..00000000
--- a/src/sys/init.cpp
+++ /dev/null
@@ -1,189 +0,0 @@
-//
-//  Lol Engine
-//
-//  Copyright © 2010—2019 Sam Hocevar <sam@hocevar.net>
-//
-//  Lol Engine is free software. It comes without any warranty, to
-//  the extent permitted by applicable law. You can redistribute it
-//  and/or modify it under the terms of the Do What the Fuck You Want
-//  to Public License, Version 2, as published by the WTFPL Task Force.
-//  See http://www.wtfpl.net/ for more details.
-//
-
-#include <lol/engine-internal.h>
-
-#include <cctype>
-
-#if HAVE_UNISTD_H
-#   include <unistd.h>
-#elif _WIN32
-    // Only try direct.h if unistd.h is not present, because this
-    // header does not exist on e.g. Cygwin/MSYS2.
-#   define WIN32_LEAN_AND_MEAN
-#   include <direct.h>
-#   undef WIN32_LEAN_AND_MEAN
-#endif
-
-namespace lol
-{
-
-namespace sys
-{
-
-#if _WIN32
-#   define SEPARATOR '\\'
-#else
-#   define SEPARATOR '/'
-#endif
-
-static array<std::string> data_dir;
-
-void init(int argc, char *argv[],
-          std::string const &projectdir,
-          std::string const &solutiondir,
-          std::string const &sourcesubdir)
-{
-    using namespace std;
-
-    msg::debug("project dir: “%s”\n", projectdir.c_str());
-    msg::debug("solution dir: “%s”\n", solutiondir.c_str());
-    msg::debug("source subdir: “%s”\n", sourcesubdir.c_str());
-
-    /*
-     * Retrieve binary directory, defaulting to no directory on Android
-     * and emscripten, and the current directory on other platforms.
-     */
-
-#if __ANDROID__ || __EMSCRIPTEN__ || __NX__
-    std::string binarydir = "";
-#else
-    std::string binarydir = ".";
-    char *cwd = nullptr;
-
-#   if HAVE_GETCWD
-    cwd = getcwd(nullptr, 0);
-#   elif HAVE__GETCWD || _WIN32
-    cwd = _getcwd(nullptr, 0);
-#   endif
-
-    if (cwd)
-    {
-        binarydir = cwd;
-        free(cwd);
-    }
-
-    binarydir += SEPARATOR;
-
-    if (argc > 0)
-    {
-        char const *last_sep = strrchr(argv[0], SEPARATOR);
-        if (last_sep)
-            binarydir = std::string(argv[0], last_sep - argv[0] + 1);
-    }
-#endif
-
-    bool got_rootdir = false;
-
-    /*
-     * If project dir and solution dir are set, add them to data; also
-     * add current directory in case we were launched from another place.
-     */
-
-    if (!got_rootdir && projectdir.length() && solutiondir.length())
-    {
-        /* This data dir is for standalone executables */
-        std::string rootdir = binarydir;
-#if !__NX__
-        if (rootdir.length() && rootdir.back() != SEPARATOR)
-            rootdir += SEPARATOR;
-        add_data_dir(rootdir);
-#endif
-
-        /* This data dir is for engine stuff */
-        rootdir = solutiondir;
-        if (rootdir.length() && rootdir.back() != SEPARATOR)
-            rootdir += SEPARATOR;
-        rootdir += "../src/"; /* FIXME: use SEPARATOR? */
-        add_data_dir(rootdir);
-
-        /* This data dir is for submodule support stuff */
-        rootdir = solutiondir;
-        if (rootdir.length() && rootdir.back() != SEPARATOR)
-            rootdir += SEPARATOR;
-        rootdir += "./lol/src/"; /* FIXME: use SEPARATOR? */
-        add_data_dir(rootdir);
-
-        /* This data dir is for project-specific stuff */
-        rootdir = projectdir;
-        if (rootdir.length() && rootdir.back() != SEPARATOR)
-            rootdir += SEPARATOR;
-        add_data_dir(rootdir);
-
-        got_rootdir = true;
-    }
-
-    /*
-     * If no project dir, use the executable location as the starting point
-     * to guess the data dir.
-     */
-    if (!got_rootdir)
-    {
-        /* First climb back the hierarchy to get to the engine root and
-         * add a data dir for engine stuff. */
-        std::string rootdir = binarydir;
-        if (rootdir.length() && rootdir.back() != SEPARATOR)
-            rootdir += SEPARATOR;
-        for (int i = 1; i < (int)sourcesubdir.length(); ++i)
-        {
-            if ((sourcesubdir[i] == SEPARATOR
-                  && sourcesubdir[i - 1] != SEPARATOR)
-                 || i == (int)sourcesubdir.length() - 1)
-                rootdir += "../";
-        }
-        rootdir += "src/";
-        add_data_dir(rootdir);
-
-        /* This data dir is for project-specific stuff */
-        rootdir = binarydir;
-        add_data_dir(rootdir);
-
-        got_rootdir = true;
-    }
-
-    msg::debug("binary dir: “%s”\n", binarydir.c_str());
-    for (int i = 0; i < data_dir.count(); ++i)
-        msg::debug("data dir %d/%d: “%s”\n", i + 1, data_dir.count(),
-                   data_dir[i].c_str());
-}
-
-/*
- * Data directory handling
- */
-
-void add_data_dir(std::string const &dir)
-{
-    data_dir << dir;
-}
-
-array<std::string> get_path_list(std::string const &file)
-{
-    array<std::string> ret;
-
-    /* If not an absolute path, look through known data directories */
-    if (file[0] != '/')
-    {
-        for (int i = 0; i < data_dir.count(); ++i)
-            ret << data_dir[i] + file;
-    }
-
-#if !__NX__
-    ret << file;
-#endif
-
-    return ret;
-}
-
-} /* namespace sys */
-
-} /* namespace lol */
-
diff --git a/src/t/Makefile.am b/src/t/Makefile.am
deleted file mode 100644
index 1dba7868..00000000
--- a/src/t/Makefile.am
+++ /dev/null
@@ -1,60 +0,0 @@
-
-include $(top_srcdir)/build/autotools/common.am
-
-if BUILD_TEST
-noinst_PROGRAMS = $(testsuite)
-
-TESTS = $(testsuite)
-endif
-
-testsuite = test-base test-math
-
-if LOL_USE_GL
-testsuite += test-entity # FIXME: this should not really depend on GL
-testsuite += test-sys
-endif
-
-if LOL_USE_GDIPLUS
-testsuite += test-image
-else
-if LOL_USE_LIBPNG
-testsuite += test-image
-else
-if LOL_USE_IMLIB2
-testsuite += test-image
-endif
-endif
-endif
-
-test_base_SOURCES = test-common.cpp \
-    base/avl_tree.cpp base/array.cpp base/enum.cpp base/map.cpp \
-    base/string.cpp base/types.cpp
-test_base_CPPFLAGS = $(AM_CPPFLAGS) -I$(top_srcdir)/tools/lolunit
-test_base_DEPENDENCIES = @LOL_DEPS@
-
-test_math_SOURCES = test-common.cpp \
-    math/array2d.cpp math/array3d.cpp math/arraynd.cpp math/box.cpp \
-    math/cmplx.cpp math/half.cpp math/interp.cpp math/matrix.cpp \
-    math/quat.cpp math/rand.cpp math/real.cpp math/rotation.cpp \
-    math/trig.cpp math/vector.cpp math/polynomial.cpp math/noise/simplex.cpp \
-    math/bigint.cpp math/sqt.cpp math/numbers.cpp
-test_math_CPPFLAGS = $(AM_CPPFLAGS) -I$(top_srcdir)/tools/lolunit
-test_math_DEPENDENCIES = @LOL_DEPS@
-
-test_sys_SOURCES = test-common.cpp \
-    sys/thread.cpp sys/timer.cpp
-test_sys_CPPFLAGS = $(AM_CPPFLAGS) -I$(top_srcdir)/tools/lolunit
-test_sys_DEPENDENCIES = @LOL_DEPS@
-
-test_image_SOURCES = test-common.cpp \
-    image/color.cpp image/image.cpp
-test_image_CPPFLAGS = $(AM_CPPFLAGS) -I$(top_srcdir)/tools/lolunit
-test_image_DEPENDENCIES = @LOL_DEPS@
-
-test_entity_SOURCES = test-common.cpp \
-    entity/camera.cpp
-test_entity_CPPFLAGS = $(AM_CPPFLAGS) -I$(top_srcdir)/tools/lolunit
-test_entity_DEPENDENCIES = @LOL_DEPS@
-
-EXTRA_DIST += data/gradient.png
-
diff --git a/src/t/base/array.cpp b/src/t/base/array.cpp
deleted file mode 100644
index 5cbbf554..00000000
--- a/src/t/base/array.cpp
+++ /dev/null
@@ -1,273 +0,0 @@
-//
-//  Lol Engine — Unit tests
-//
-//  Copyright © 2010—2018 Sam Hocevar <sam@hocevar.net>
-//
-//  Lol Engine is free software. It comes without any warranty, to
-//  the extent permitted by applicable law. You can redistribute it
-//  and/or modify it under the terms of the Do What the Fuck You Want
-//  to Public License, Version 2, as published by the WTFPL Task Force.
-//  See http://www.wtfpl.net/ for more details.
-//
-
-#include <lol/engine-internal.h>
-
-#include <lolunit.h>
-
-namespace lol
-{
-
-struct tracked_object
-{
-    static int m_ctor, m_dtor;
-
-    tracked_object() { m_ctor++; }
-    tracked_object(tracked_object const &) { m_ctor++; }
-    ~tracked_object() { m_dtor++; }
-};
-
-int tracked_object::m_ctor = 0;
-int tracked_object::m_dtor = 0;
-
-lolunit_declare_fixture(array_test)
-{
-    lolunit_declare_test(array_push)
-    {
-        array<int> a;
-        a.push(0);
-        a.push(1);
-        a.push(2);
-        a.push(3);
-
-        lolunit_assert_equal(a[0], 0);
-        lolunit_assert_equal(a[1], 1);
-        lolunit_assert_equal(a[2], 2);
-        lolunit_assert_equal(a[3], 3);
-    }
-
-    lolunit_declare_test(array_initializer)
-    {
-        array<int> a({ 2, 4, 6 });
-
-        lolunit_assert_equal(a[0], 2);
-        lolunit_assert_equal(a[1], 4);
-        lolunit_assert_equal(a[2], 6);
-
-        array<int> b = { 2, 4, 6 };
-
-        lolunit_assert_equal(b[0], 2);
-        lolunit_assert_equal(b[1], 4);
-        lolunit_assert_equal(b[2], 6);
-
-        array<int, float> c = { { 2, 3.0f },
-                                { 4, 5.0f },
-                                { 6, 7.0f } };
-
-        lolunit_assert_equal(c[0].m1, 2);
-        lolunit_assert_equal(c[0].m2, 3.0f);
-        lolunit_assert_equal(c[1].m1, 4);
-        lolunit_assert_equal(c[1].m2, 5.0f);
-        lolunit_assert_equal(c[2].m1, 6);
-        lolunit_assert_equal(c[2].m2, 7.0f);
-    }
-
-    lolunit_declare_test(array_push_with_shift)
-    {
-        array<int> a;
-        a << 0 << 1 << 2 << 3;
-
-        lolunit_assert_equal(a[0], 0);
-        lolunit_assert_equal(a[1], 1);
-        lolunit_assert_equal(a[2], 2);
-        lolunit_assert_equal(a[3], 3);
-    }
-
-    lolunit_declare_test(array_copy)
-    {
-        array<int> a;
-        a << 0 << 1 << 2 << 3;
-
-        array<int> b = a;
-
-        lolunit_assert_equal(b[0], 0);
-        lolunit_assert_equal(b[1], 1);
-        lolunit_assert_equal(b[2], 2);
-        lolunit_assert_equal(b[3], 3);
-    }
-
-    lolunit_declare_test(array_remove)
-    {
-        array<int> a;
-        a << 0 << 1 << 2 << 3;
-        a.remove(1);
-
-        lolunit_assert_equal(a.count(), 3);
-        lolunit_assert_equal(a[0], 0);
-        lolunit_assert_equal(a[1], 2);
-        lolunit_assert_equal(a[2], 3);
-
-        array<int> b;
-        b << 0 << 1 << 2 << 3;
-        b.remove(-2);
-
-        lolunit_assert_equal(b.count(), 3);
-        lolunit_assert_equal(b[0], 0);
-        lolunit_assert_equal(b[1], 1);
-        lolunit_assert_equal(b[2], 3);
-    }
-
-    lolunit_declare_test(array_remove_swap)
-    {
-        array<int> a;
-        a << 0 << 1 << 2 << 3;
-        a.remove_swap(1);
-
-        lolunit_assert_equal(a.count(), 3);
-        lolunit_assert_equal(a[0], 0);
-        lolunit_assert_equal(a[1], 3);
-        lolunit_assert_equal(a[2], 2);
-
-        array<int> b;
-        b << 0 << 1 << 2 << 3;
-        b.remove(1, 2);
-
-        lolunit_assert_equal(b.count(), 2);
-        lolunit_assert_equal(b[0], 0);
-        lolunit_assert_equal(b[1], 3);
-    }
-
-    lolunit_declare_test(eight_element_arrays)
-    {
-        array<int, long, float, double, unsigned, char, bool, void *> a;
-        a.push(1, 2, 3.f, 4.0, 5, 'a', true, 0);
-
-        lolunit_assert_equal(a[0].m1, 1);
-        lolunit_assert_equal(a[0].m2, 2);
-        lolunit_assert_equal(a[0].m3, 3.f);
-        lolunit_assert_equal(a[0].m4, 4.0);
-        lolunit_assert_equal(a[0].m5, 5);
-        lolunit_assert_equal(a[0].m6, 'a');
-        lolunit_assert_equal(a[0].m7, true);
-        lolunit_assert_equal(a[0].m8, 0);
-    }
-
-    lolunit_declare_test(array_swap)
-    {
-        array<int, int> a;
-        a.push(10, 20);
-        a.push(30, 40);
-
-        a.swap(0, 1);
-
-        lolunit_assert_equal(30, a[0].m1);
-        lolunit_assert_equal(40, a[0].m2);
-        lolunit_assert_equal(10, a[1].m1);
-        lolunit_assert_equal(20, a[1].m2);
-    }
-
-    lolunit_declare_test(array_insert)
-    {
-        array<int> a;
-        a << 1 << 2;
-
-        a.insert(5, 0);
-        lolunit_assert_equal(5, a[0]);
-        lolunit_assert_equal(1, a[1]);
-        lolunit_assert_equal(2, a[2]);
-
-        a.insert(6, 3);
-        lolunit_assert_equal(5, a[0]);
-        lolunit_assert_equal(1, a[1]);
-        lolunit_assert_equal(2, a[2]);
-        lolunit_assert_equal(6, a[3]);
-
-        a.insert(7, 2);
-        lolunit_assert_equal(5, a[0]);
-        lolunit_assert_equal(1, a[1]);
-        lolunit_assert_equal(7, a[2]);
-        lolunit_assert_equal(2, a[3]);
-        lolunit_assert_equal(6, a[4]);
-    }
-
-    lolunit_declare_test(array_insert_tuple)
-    {
-        array<int, float, std::string> b;
-        b.insert(0, 5, 6.f, "lol");
-        lolunit_assert_equal(5, b[0].m1);
-        lolunit_assert_equal(6.f, b[0].m2);
-
-        b.insert(1, 8, 9.f, "hi there");
-        lolunit_assert_equal(5, b[0].m1);
-        lolunit_assert_equal(6.f, b[0].m2);
-        lolunit_assert_equal(8, b[1].m1);
-        lolunit_assert_equal(9.f, b[1].m2);
-
-        b.insert(1, 4, 5.f, "anyone home?");
-        lolunit_assert_equal(5, b[0].m1);
-        lolunit_assert_equal(6.f, b[0].m2);
-        lolunit_assert_equal(4, b[1].m1);
-        lolunit_assert_equal(5.f, b[1].m2);
-        lolunit_assert_equal(8, b[2].m1);
-        lolunit_assert_equal(9.f, b[2].m2);
-    }
-
-    lolunit_declare_test(array_concat)
-    {
-        array<int> a, b;
-        a << 0 << 1;
-        b << 2 << 3;
-
-        array<int> c = a + b;
-        lolunit_assert_equal(c[0], 0);
-        lolunit_assert_equal(c[1], 1);
-        lolunit_assert_equal(c[2], 2);
-        lolunit_assert_equal(c[3], 3);
-    }
-
-    lolunit_declare_test(array_append)
-    {
-        array<int> a, b;
-        a << 0 << 1;
-        b << 2 << 3;
-
-        a += b;
-        lolunit_assert_equal(a[0], 0);
-        lolunit_assert_equal(a[1], 1);
-        lolunit_assert_equal(a[2], 2);
-        lolunit_assert_equal(a[3], 3);
-
-        b += b;
-        lolunit_assert_equal(b[0], 2);
-        lolunit_assert_equal(b[1], 3);
-        lolunit_assert_equal(b[2], 2);
-        lolunit_assert_equal(b[3], 3);
-    }
-
-    lolunit_declare_test(element_ctor_dtor)
-    {
-        /* Ensure array elements get created and destroyed the proper
-         * number of times. */
-        tracked_object::m_ctor = 0;
-        tracked_object::m_dtor = 0;
-        {
-            array<tracked_object> a;
-
-            a.push(tracked_object());
-        }
-        lolunit_assert_equal(tracked_object::m_ctor, tracked_object::m_dtor);
-
-        tracked_object::m_ctor = 0;
-        tracked_object::m_dtor = 0;
-        {
-            array<tracked_object> a;
-
-            a.resize(2);
-            a.resize(4);
-            a.resize(1);
-        }
-        lolunit_assert_equal(tracked_object::m_ctor, tracked_object::m_dtor);
-    }
-};
-
-} /* namespace lol */
-
diff --git a/src/t/base/avl_tree.cpp b/src/t/base/avl_tree.cpp
deleted file mode 100644
index 1b508894..00000000
--- a/src/t/base/avl_tree.cpp
+++ /dev/null
@@ -1,282 +0,0 @@
-//
-//  Lol Engine — Unit tests
-//
-//  Copyright © 2010—2015 Sam Hocevar <sam@hocevar.net>
-//            © 2013—2015 Benjamin “Touky” Huet <huet.benjamin@gmail.com>
-//            © 2013—2015 Guillaume Bittoun <guillaume.bittoun@gmail.com>
-//
-//  Lol Engine is free software. It comes without any warranty, to
-//  the extent permitted by applicable law. You can redistribute it
-//  and/or modify it under the terms of the Do What the Fuck You Want
-//  to Public License, Version 2, as published by the WTFPL Task Force.
-//  See http://www.wtfpl.net/ for more details.
-//
-
-#include <lol/engine-internal.h>
-
-#include <lolunit.h>
-
-namespace lol
-{
-
-class test_tree : public avl_tree<int, int>
-{
-public:
-    virtual ~test_tree() {}
-
-    int get_root_balance()
-    {
-        return this->m_root->get_balance();
-    }
-};
-
-lolunit_declare_fixture(avl_tree_test)
-{
-    lolunit_declare_test(insert)
-    {
-        test_tree tree;
-
-        lolunit_assert_equal(tree.insert(1, 1), true);
-        lolunit_assert_equal(tree.insert(2, 3), true);
-        lolunit_assert_equal(tree.insert(2, 0), false);
-    }
-
-    lolunit_declare_test(balance_check)
-    {
-        test_tree tree;
-
-        lolunit_assert_equal(tree.insert(10, 1), true);
-        lolunit_assert_equal(tree.get_root_balance(), 0);
-
-        lolunit_assert_equal(tree.insert(20, 1), true);
-        lolunit_assert_equal(tree.get_root_balance(), 1);
-
-        lolunit_assert_equal(tree.insert(30, 1), true);
-        lolunit_assert_equal(tree.get_root_balance(), 0);
-
-        lolunit_assert_equal(tree.insert(0, 1), true);
-        lolunit_assert_equal(tree.get_root_balance(), -1);
-
-        lolunit_assert_equal(tree.insert(-10, 1), true);
-        lolunit_assert_equal(tree.get_root_balance(), -1);
-
-        lolunit_assert_equal(tree.insert(-20, 1), true);
-        lolunit_assert_equal(tree.get_root_balance(), 0);
-
-        lolunit_assert_equal(tree.insert(-20, 1), false);
-        lolunit_assert_equal(tree.get_root_balance(), 0);
-
-        lolunit_assert_equal(tree.insert(11, 1), true);
-        lolunit_assert_equal(tree.get_root_balance(), 1);
-
-        lolunit_assert_equal(tree.insert(13, 2), true);
-        lolunit_assert_equal(tree.get_root_balance(), 1);
-    }
-
-    lolunit_declare_test(deletion)
-    {
-        test_tree tree;
-
-        lolunit_assert_equal(tree.insert(10, 1), true);
-        lolunit_assert_equal(tree.get_root_balance(), 0);
-
-        lolunit_assert_equal(tree.insert(20, 1), true);
-        lolunit_assert_equal(tree.get_root_balance(), 1);
-
-        lolunit_assert_equal(tree.insert(30, 1), true);
-        lolunit_assert_equal(tree.get_root_balance(), 0);
-
-        lolunit_assert_equal(tree.count(), 3);
-
-        lolunit_assert_equal(tree.erase(30), true);
-
-        int test = 0;
-
-        for (auto iterator : tree)
-        {
-            test += 10;
-            lolunit_assert_equal(iterator.key, test);
-        }
-
-        lolunit_assert_equal(tree.count(), 2);
-        lolunit_assert_equal(tree.insert(30, 1), true);
-
-        lolunit_assert_equal(tree.erase(20), true);
-        lolunit_assert_equal(tree.insert(20, 1), true);
-        lolunit_assert_equal(tree.exists(10), true);
-
-        test = 0;
-
-        for (auto iterator : tree)
-        {
-            test += 10;
-            lolunit_assert_equal(iterator.key, test);
-        }
-    }
-
-    lolunit_declare_test(avl_tree_existence)
-    {
-        test_tree tree;
-
-        lolunit_assert_equal(tree.insert(10, 1), true);
-        lolunit_assert_equal(tree.get_root_balance(), 0);
-
-        lolunit_assert_equal(tree.insert(20, 1), true);
-        lolunit_assert_equal(tree.get_root_balance(), 1);
-
-        lolunit_assert_equal(tree.erase(10), true);
-        lolunit_assert_equal(tree.exists(20), true);
-        lolunit_assert_equal(tree.exists(10), false);
-
-        lolunit_assert_equal(tree.insert(10, 1), true);
-        lolunit_assert_equal(tree.get_root_balance(), -1);
-
-        lolunit_assert_equal(tree.insert(30, 1), true);
-        lolunit_assert_equal(tree.get_root_balance(), 0);
-
-        lolunit_assert_equal(tree.insert(40, 1), true);
-        lolunit_assert_equal(tree.get_root_balance(), 1);
-
-        lolunit_assert_equal(tree.insert(50, 1), true);
-        lolunit_assert_equal(tree.get_root_balance(), 1);
-
-        lolunit_assert_equal(tree.erase(30), true);
-        lolunit_assert_equal(tree.exists(40), true);
-        lolunit_assert_equal(tree.exists(50), true);
-    }
-
-
-    lolunit_declare_test(avl_tree_get_value)
-    {
-        test_tree tree;
-
-        lolunit_assert_equal(tree.insert(10, 1), true);
-        lolunit_assert_equal(tree.get_root_balance(), 0);
-
-        lolunit_assert_equal(tree.insert(20, 1), true);
-        lolunit_assert_equal(tree.get_root_balance(), 1);
-
-        lolunit_assert_equal(tree.insert(30, 1), true);
-        lolunit_assert_equal(tree.get_root_balance(), 0);
-
-        lolunit_assert_equal(tree.insert(0, 1), true);
-        lolunit_assert_equal(tree.get_root_balance(), -1);
-
-        lolunit_assert_equal(tree.insert(-10, 1), true);
-        lolunit_assert_equal(tree.get_root_balance(), -1);
-
-        lolunit_assert_equal(tree.insert(-20, 1), true);
-        lolunit_assert_equal(tree.get_root_balance(), 0);
-
-        lolunit_assert_equal(tree.insert(-20, 1), false);
-        lolunit_assert_equal(tree.get_root_balance(), 0);
-
-        lolunit_assert_equal(tree.insert(11, 2), true);
-        lolunit_assert_equal(tree.get_root_balance(), 1);
-
-        lolunit_assert_equal(tree.insert(13, 3), true);
-        lolunit_assert_equal(tree.get_root_balance(), 1);
-
-        int * value_ptr = nullptr;
-
-        lolunit_assert_equal(tree.try_get(-10, value_ptr), true);
-        lolunit_assert_equal(*value_ptr, 1);
-
-        lolunit_assert_equal(tree.try_get(11, value_ptr), true);
-        lolunit_assert_equal(*value_ptr, 2);
-
-        lolunit_assert_equal(tree.try_get(13, value_ptr), true);
-        lolunit_assert_equal(*value_ptr, 3);
-
-        lolunit_assert_equal(tree.try_get(67, value_ptr), false);
-        lolunit_assert_equal(*value_ptr, 3);
-    }
-
-    lolunit_declare_test(avl_tree_test_iterator_read)
-    {
-        test_tree tree;
-
-        for (int i = 1 ; i < 100 ; ++i)
-            tree.insert(i, 2 * i + i % 3);
-
-        int tmp = 0;
-
-        for (auto iterator : tree)
-        {
-            lolunit_assert_equal(iterator.key > tmp, true);
-            lolunit_assert_equal(iterator.value == (iterator.key * 2 + iterator.key % 3), true);
-            tmp = iterator.key;
-        }
-
-        lolunit_assert_equal(tree.count(), 99);
-    }
-
-    lolunit_declare_test(avl_tree_test_iterator_copy)
-    {
-        test_tree tree;
-
-        for (int i = 1 ; i < 100 ; ++i)
-            tree.insert(i, 2 * i + i % 3);
-
-        test_tree other = tree;
-
-        int tmp = 0;
-
-        for (auto iterator : other)
-        {
-            lolunit_assert_equal(iterator.key > tmp, true);
-            lolunit_assert_equal(iterator.value == (iterator.key * 2 + iterator.key % 3), true);
-            tmp = iterator.key;
-        }
-
-        lolunit_assert_equal(other.count(), 99);
-    }
-
-    lolunit_declare_test(avl_tree_test_copy)
-    {
-        avl_tree<int, int> test1, test2;
-
-        for (int i = 0 ; i < 10 ; ++i)
-            test1.insert(i, 2*i);
-
-        for (int i = 10 ; i < 15 ; ++i)
-            test2.insert(i, 3*i);
-
-        lolunit_assert_equal(test1.count(), 10);
-        lolunit_assert_equal(test2.count(), 5);
-
-        int i = -1;
-        for (auto iterator : test1)
-        {
-            ++i;
-            lolunit_assert_equal(iterator.key, i);
-            lolunit_assert_equal(iterator.value, 2*i);
-        }
-
-        for (auto iterator : test2)
-        {
-            ++i;
-            lolunit_assert_equal(iterator.key, i);
-            lolunit_assert_equal(iterator.value, 3*i);
-        }
-
-        test2 = test1;
-
-        auto it1 = test1.begin();
-        auto it2 = test2.begin();
-
-        for ( ; it1 != test1.end() && it2 != test2.end() ; ++it1 , ++it2)
-        {
-            lolunit_assert_equal((*it1).key, (*it2).key);
-            lolunit_assert_equal((*it1).value, (*it2).value);
-        }
-
-        lolunit_assert(!(it1 != test1.end()));
-        lolunit_assert(!(it2 != test2.end()));
-
-        lolunit_assert_equal(test1.count(), 10);
-        lolunit_assert_equal(test2.count(), 10);
-    }
-};
-
-}
diff --git a/src/t/base/enum.cpp b/src/t/base/enum.cpp
deleted file mode 100644
index bc0dee81..00000000
--- a/src/t/base/enum.cpp
+++ /dev/null
@@ -1,64 +0,0 @@
-//
-//  Lol Engine — Unit tests
-//
-//  Copyright © 2010—2018 Sam Hocevar <sam@hocevar.net>
-//
-//  Lol Engine is free software. It comes without any warranty, to
-//  the extent permitted by applicable law. You can redistribute it
-//  and/or modify it under the terms of the Do What the Fuck You Want
-//  to Public License, Version 2, as published by the WTFPL Task Force.
-//  See http://www.wtfpl.net/ for more details.
-//
-
-#include <lol/engine-internal.h>
-
-#include <lolunit.h>
-
-#include <string>
-#include <map>
-
-namespace lol
-{
-
-lolunit_declare_fixture(enum_test)
-{
-    lolunit_declare_test(enum_to_string)
-    {
-        struct my_enum_base : public StructSafeEnum
-        {
-            enum Type
-            {
-                first = -10,
-                second,
-                third = 5,
-            };
-
-        protected:
-            virtual bool BuildEnumMap(std::map<int64_t, std::string>& enum_map)
-            {
-                enum_map[first] = "first";
-                enum_map[second] = "second";
-                enum_map[third] = "third";
-                return true;
-            }
-        };
-        typedef SafeEnum<my_enum_base> my_enum;
-
-        my_enum e = my_enum::first;
-        lolunit_assert(e.tostring() == "first");
-
-        e = my_enum::second;
-        lolunit_assert(e.tostring() == "second");
-
-        e = my_enum::third;
-        lolunit_assert(e.tostring() == "third");
-
-        e = my_enum(42);
-        lolunit_assert(e.tostring() != "first");
-        lolunit_assert(e.tostring() != "second");
-        lolunit_assert(e.tostring() != "third");
-    }
-};
-
-} /* namespace lol */
-
diff --git a/src/t/base/map.cpp b/src/t/base/map.cpp
deleted file mode 100644
index 6531d4aa..00000000
--- a/src/t/base/map.cpp
+++ /dev/null
@@ -1,38 +0,0 @@
-//
-//  Lol Engine — Unit tests
-//
-//  Copyright © 2010—2018 Sam Hocevar <sam@hocevar.net>
-//
-//  Lol Engine is free software. It comes without any warranty, to
-//  the extent permitted by applicable law. You can redistribute it
-//  and/or modify it under the terms of the Do What the Fuck You Want
-//  to Public License, Version 2, as published by the WTFPL Task Force.
-//  See http://www.wtfpl.net/ for more details.
-//
-
-#include <lol/engine-internal.h>
-
-#include <map>
-
-#include <lolunit.h>
-
-namespace lol
-{
-
-lolunit_declare_fixture(map_test)
-{
-    lolunit_declare_test(map_has_key)
-    {
-        std::map<int, int> m;
-
-        m[0] = 1;
-        m[2] = 2;
-
-        lolunit_assert(has_key(m, 0));
-        lolunit_assert(!has_key(m, 1));
-        lolunit_assert(has_key(m, 2));
-    }
-};
-
-} /* namespace lol */
-
diff --git a/src/t/base/string.cpp b/src/t/base/string.cpp
deleted file mode 100644
index 6d8b279a..00000000
--- a/src/t/base/string.cpp
+++ /dev/null
@@ -1,84 +0,0 @@
-//
-//  Lol Engine — Unit tests
-//
-//  Copyright © 2010—2018 Sam Hocevar <sam@hocevar.net>
-//            © 2014—2015 Benjamin “Touky” Huet <huet.benjamin@gmail.com>
-//
-//  Lol Engine is free software. It comes without any warranty, to
-//  the extent permitted by applicable law. You can redistribute it
-//  and/or modify it under the terms of the Do What the Fuck You Want
-//  to Public License, Version 2, as published by the WTFPL Task Force.
-//  See http://www.wtfpl.net/ for more details.
-//
-
-#include <lol/engine-internal.h>
-
-#include <string>
-
-#include <lolunit.h>
-
-namespace lol
-{
-
-lolunit_declare_fixture(string_test)
-{
-    lolunit_declare_test(string_format)
-    {
-        std::string s1 = "3a";
-        std::string s2 = format("%d%x", 3, 10);
-
-        lolunit_assert(s1 == s2);
-
-        std::string s3 = "abc 3";
-        std::string s4 = format("abc %d", 3);
-
-        lolunit_assert(s3 == s4);
-    }
-
-    lolunit_declare_test(starts_ends_with)
-    {
-        std::string s = "lolilol";
-
-        lolunit_assert(starts_with(s, "loli"));
-        lolunit_assert(!starts_with(s, "lolo"));
-        lolunit_assert(!starts_with(s, "lolilolilol"));
-
-        lolunit_assert(ends_with(s, "ilol"));
-        lolunit_assert(!ends_with(s, "olol"));
-        lolunit_assert(!ends_with(s, "lolilolilol"));
-    }
-
-    lolunit_declare_test(string_split)
-    {
-        auto l1 = split(std::string("abc"));
-        lolunit_assert(l1.count() == 1);
-        lolunit_assert(l1[0] == "abc");
-
-        auto l2 = split(std::string("\nabc"));
-        lolunit_assert(l2.count() == 2);
-        lolunit_assert(l2[0] == "");
-        lolunit_assert(l2[1] == "abc");
-
-        auto l3 = split(std::string("abc\n"));
-        lolunit_assert(l3.count() == 2);
-        lolunit_assert(l3[0] == "abc");
-        lolunit_assert(l3[1] == "");
-
-        auto l4 = split(std::string("\n\n"));
-        lolunit_assert(l4.count() == 3);
-        lolunit_assert(l4[0] == "");
-        lolunit_assert(l4[1] == "");
-        lolunit_assert(l4[2] == "");
-
-        auto l5 = split(std::string("abc\nde\n\nf\n"));
-        lolunit_assert(l5.count() == 5);
-        lolunit_assert(l5[0] == "abc");
-        lolunit_assert(l5[1] == "de");
-        lolunit_assert(l5[2] == "");
-        lolunit_assert(l5[3] == "f");
-        lolunit_assert(l5[4] == "");
-    }
-};
-
-} /* namespace lol */
-
diff --git a/src/t/base/types.cpp b/src/t/base/types.cpp
deleted file mode 100644
index 9cab9324..00000000
--- a/src/t/base/types.cpp
+++ /dev/null
@@ -1,117 +0,0 @@
-//
-//  Lol Engine — Unit tests
-//
-//  Copyright © 2010—2019 Sam Hocevar <sam@hocevar.net>
-//
-//  Lol Engine is free software. It comes without any warranty, to
-//  the extent permitted by applicable law. You can redistribute it
-//  and/or modify it under the terms of the Do What the Fuck You Want
-//  to Public License, Version 2, as published by the WTFPL Task Force.
-//  See http://www.wtfpl.net/ for more details.
-//
-
-#include <lol/engine-internal.h>
-
-#include <lolunit.h>
-
-namespace lol
-{
-
-lolunit_declare_fixture(build_features)
-{
-    lolunit_declare_test(half_type_sizes)
-    {
-        lolunit_assert_equal(sizeof(half), 2);
-
-        lolunit_assert_equal(sizeof(f16vec2), 4);
-        lolunit_assert_equal(sizeof(f16vec3), 6);
-        lolunit_assert_equal(sizeof(f16vec4), 8);
-
-        lolunit_assert_equal(sizeof(f16mat2), 8);
-        lolunit_assert_equal(sizeof(f16mat3), 18);
-        lolunit_assert_equal(sizeof(f16mat4), 32);
-    }
-
-    lolunit_declare_test(float_type_sizes)
-    {
-        lolunit_assert_equal(sizeof(float), 4);
-
-        lolunit_assert_equal(sizeof(vec2), 8);
-        lolunit_assert_equal(sizeof(vec3), 12);
-        lolunit_assert_equal(sizeof(vec4), 16);
-
-        lolunit_assert_equal(sizeof(mat2), 16);
-        lolunit_assert_equal(sizeof(mat3), 36);
-        lolunit_assert_equal(sizeof(mat4), 64);
-    }
-
-    lolunit_declare_test(double_type_sizes)
-    {
-        lolunit_assert_equal(sizeof(double), 8);
-
-        lolunit_assert_equal(sizeof(dvec2), 16);
-        lolunit_assert_equal(sizeof(dvec3), 24);
-        lolunit_assert_equal(sizeof(dvec4), 32);
-
-        lolunit_assert_equal(sizeof(dmat2), 32);
-        lolunit_assert_equal(sizeof(dmat3), 72);
-        lolunit_assert_equal(sizeof(dmat4), 128);
-    }
-
-    lolunit_declare_test(int8_type_sizes)
-    {
-        lolunit_assert_equal(sizeof(i8vec2), 2);
-        lolunit_assert_equal(sizeof(u8vec2), 2);
-        lolunit_assert_equal(sizeof(i8vec3), 3);
-        lolunit_assert_equal(sizeof(u8vec3), 3);
-        lolunit_assert_equal(sizeof(i8vec4), 4);
-        lolunit_assert_equal(sizeof(u8vec4), 4);
-    }
-
-    lolunit_declare_test(int16_type_sizes)
-    {
-        lolunit_assert_equal(sizeof(i16vec2), 4);
-        lolunit_assert_equal(sizeof(u16vec2), 4);
-        lolunit_assert_equal(sizeof(i16vec3), 6);
-        lolunit_assert_equal(sizeof(u16vec3), 6);
-        lolunit_assert_equal(sizeof(i16vec4), 8);
-        lolunit_assert_equal(sizeof(u16vec4), 8);
-    }
-
-    lolunit_declare_test(int32_type_sizes)
-    {
-        lolunit_assert_equal(sizeof(ivec2), 8);
-        lolunit_assert_equal(sizeof(uvec2), 8);
-        lolunit_assert_equal(sizeof(ivec3), 12);
-        lolunit_assert_equal(sizeof(uvec3), 12);
-        lolunit_assert_equal(sizeof(ivec4), 16);
-        lolunit_assert_equal(sizeof(uvec4), 16);
-    }
-
-    lolunit_declare_test(int64_type_sizes)
-    {
-        lolunit_assert_equal(sizeof(i64vec2), 16);
-        lolunit_assert_equal(sizeof(u64vec2), 16);
-        lolunit_assert_equal(sizeof(i64vec3), 24);
-        lolunit_assert_equal(sizeof(u64vec3), 24);
-        lolunit_assert_equal(sizeof(i64vec4), 32);
-        lolunit_assert_equal(sizeof(u64vec4), 32);
-    }
-
-#if !defined LOL_BUILD_DEBUG
-    lolunit_declare_test(fast_math)
-    {
-        double x, y;
-
-        y = x = 1.0 + rand(0.1f, 0.2f);
-        y += 4503599627370496.0;
-        /* The compiler should optimise this away */
-        y -= 4503599627370496.0;
-
-        lolunit_assert_equal(x, y);
-    }
-#endif
-};
-
-} /* namespace lol */
-
diff --git a/src/t/data/gradient.png b/src/t/data/gradient.png
deleted file mode 100644
index 2789c49e6191f7391ceb2f1df3bad4618375a447..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 196
zcmeAS@N?(olHy`uVBq!ia0y~yU<5K51UT4$<j>0sJ%JQsage(c!@6@aFM%AkByV>Y
zAPodRop;v*Db50q$YKTtZeb8+WSBKa0w~B{;_2(kew$N*L&{otsU*mJ7f%<*kcwMx
zuQYNp81Nk4u;l;$J$nOJu+$y&{dCLi(q6R#k!%cX3=#|p3=ND}89Cn>yVtVFd}ht=
Q2b#y=>FVdQ&MBb@00Yr5&j0`b

diff --git a/src/t/entity/camera.cpp b/src/t/entity/camera.cpp
deleted file mode 100644
index ab94c5b0..00000000
--- a/src/t/entity/camera.cpp
+++ /dev/null
@@ -1,196 +0,0 @@
-//
-//  Lol Engine — Unit tests for the camera object
-//
-//  Copyright © 2010—2019 Sam Hocevar <sam@hocevar.net>
-//            © 2013 Benjamin “Touky” Huet <huet.benjamin@gmail.com>
-//
-//  Lol Engine is free software. It comes without any warranty, to
-//  the extent permitted by applicable law. You can redistribute it
-//  and/or modify it under the terms of the Do What the Fuck You Want
-//  to Public License, Version 2, as published by the WTFPL Task Force.
-//  See http://www.wtfpl.net/ for more details.
-//
-
-#include <lol/engine-internal.h>
-
-#include <lolunit.h>
-
-#include <memory>
-
-namespace lol
-{
-
-lolunit_declare_fixture(camera_test)
-{
-    Camera *tc; // FIXME: this should be a shared ptr or something
-    vec3 eye, target, up;
-    mat4 m_lookat;
-    quat q_lookat;
-    vec3 v_lookat;
-    float fov, screen_size, screen_ratio, near, far;
-    bool is_shifted;
-
-    void setup()
-    {
-        ticker::setup(60.f);
-        tc = new Camera();
-
-        eye = vec3(0.f, 0.f, 50.f);
-        target = vec3::zero;
-        up = vec3::axis_y;
-        m_lookat = mat4::lookat(eye, target, up);
-        q_lookat = quat(mat3(m_lookat));
-        v_lookat = vec3::toeuler_zyx(q_lookat);
-        fov = radians(90.f);
-        screen_size = 800.f;
-        screen_ratio = 1.0f;
-        near = 1.f;
-        far = 1000.f;
-        is_shifted = false;
-    }
-
-    void teardown()
-    {
-        //ticker::Unref(tc.get());
-        ticker::teardown();
-    }
-
-#define TEST_VECTOR(v0, v1) \
-        lolunit_assert_doubles_equal(v0.x, v1.x, 1.e-5f); \
-        lolunit_assert_doubles_equal(v0.y, v1.y, 1.e-5f); \
-        lolunit_assert_doubles_equal(v0.z, v1.z, 1.e-5f);
-
-    lolunit_declare_test(set_view_test)
-    {
-        tc->SetView(eye, target, up);
-        TEST_VECTOR(eye, tc->GetPosition());
-        TEST_VECTOR(target, tc->GetTarget());
-        TEST_VECTOR(up, tc->GetUp());
-
-        tc->SetView(eye, q_lookat);
-        TEST_VECTOR(eye, tc->GetPosition());
-        TEST_VECTOR(target, tc->GetTarget());
-        TEST_VECTOR(up, tc->GetUp());
-
-        tc->SetView(eye, v_lookat);
-        TEST_VECTOR(eye, tc->GetPosition());
-        TEST_VECTOR(target, tc->GetTarget());
-        TEST_VECTOR(up, tc->GetUp());
-
-        tc->SetView(m_lookat);
-        TEST_VECTOR(eye, tc->GetPosition());
-        TEST_VECTOR(target, tc->GetTarget());
-        TEST_VECTOR(up, tc->GetUp());
-
-        tc->UseTarget(false);
-        TEST_VECTOR(vec3(0.f, 0.f, 49.f), tc->GetTarget());
-    }
-
-#define TEST_MATRIX(m0, m1) \
-        lolunit_assert_doubles_equal(m0[0][0], m1[0][0], 1.e-5f); \
-        lolunit_assert_doubles_equal(m0[1][0], m1[1][0], 1.e-5f); \
-        lolunit_assert_doubles_equal(m0[2][0], m1[2][0], 1.e-5f); \
-        lolunit_assert_doubles_equal(m0[3][0], m1[3][0], 1.e-5f); \
-                                                                  \
-        lolunit_assert_doubles_equal(m0[0][1], m1[0][1], 1.e-5f); \
-        lolunit_assert_doubles_equal(m0[1][1], m1[1][1], 1.e-5f); \
-        lolunit_assert_doubles_equal(m0[2][1], m1[2][1], 1.e-5f); \
-        lolunit_assert_doubles_equal(m0[3][1], m1[3][1], 1.e-5f); \
-                                                                  \
-        lolunit_assert_doubles_equal(m0[0][2], m1[0][2], 1.e-5f); \
-        lolunit_assert_doubles_equal(m0[1][2], m1[1][2], 1.e-5f); \
-        lolunit_assert_doubles_equal(m0[2][2], m1[2][2], 1.e-5f); \
-        lolunit_assert_doubles_equal(m0[3][2], m1[3][2], 1.e-5f); \
-                                                                  \
-        lolunit_assert_doubles_equal(m0[0][3], m1[0][3], 1.e-5f); \
-        lolunit_assert_doubles_equal(m0[1][3], m1[1][3], 1.e-5f); \
-        lolunit_assert_doubles_equal(m0[2][3], m1[2][3], 1.e-5f); \
-        lolunit_assert_doubles_equal(m0[3][3], m1[3][3], 1.e-5f);
-
-
-    lolunit_declare_test(set_projection_test)
-    {
-        mat4 refmx = mat4::perspective(fov, screen_size, screen_size * screen_ratio, near, far);
-
-        tc->SetProjection(fov, near, far, screen_size, screen_ratio);
-        TEST_MATRIX(refmx, tc->GetProjection());
-        lolunit_assert_doubles_equal(fov, tc->GetFov(), 1.e-5f);
-        lolunit_assert_doubles_equal(screen_size, tc->GetScreenSize(), 1.e-5f);
-        lolunit_assert_doubles_equal(screen_ratio, tc->GetScreenRatio(), 1.e-5f);
-        lolunit_assert_doubles_equal(near, tc->GetNear(), 1.e-5f);
-        lolunit_assert_doubles_equal(far, tc->GetFar(), 1.e-5f);
-        lolunit_assert(is_shifted == tc->IsShifted());
-
-        tc->SetProjection(fov, near, far);
-        TEST_MATRIX(refmx, tc->GetProjection());
-        lolunit_assert_doubles_equal(fov, tc->GetFov(), 1.e-5f);
-        lolunit_assert_doubles_equal(screen_size, tc->GetScreenSize(), 1.e-5f);
-        lolunit_assert_doubles_equal(screen_ratio, tc->GetScreenRatio(), 1.e-5f);
-        lolunit_assert_doubles_equal(near, tc->GetNear(), 1.e-5f);
-        lolunit_assert_doubles_equal(far, tc->GetFar(), 1.e-5f);
-        lolunit_assert(is_shifted == tc->IsShifted());
-
-        tc->SetProjection(refmx);
-        TEST_MATRIX(refmx, tc->GetProjection());
-
-        tc->SetFov(fov);
-        TEST_MATRIX(refmx, tc->GetProjection());
-        lolunit_assert_doubles_equal(fov, tc->GetFov(), 1.e-5f);
-        lolunit_assert_doubles_equal(screen_size, tc->GetScreenSize(), 1.e-5f);
-        lolunit_assert_doubles_equal(screen_ratio, tc->GetScreenRatio(), 1.e-5f);
-        lolunit_assert_doubles_equal(near, tc->GetNear(), 1.e-5f);
-        lolunit_assert_doubles_equal(far, tc->GetFar(), 1.e-5f);
-        lolunit_assert(is_shifted == tc->IsShifted());
-
-        tc->SetScreenInfos(screen_size);
-        TEST_MATRIX(refmx, tc->GetProjection());
-        lolunit_assert_doubles_equal(fov, tc->GetFov(), 1.e-5f);
-        lolunit_assert_doubles_equal(screen_size, tc->GetScreenSize(), 1.e-5f);
-        lolunit_assert_doubles_equal(screen_ratio, tc->GetScreenRatio(), 1.e-5f);
-        lolunit_assert_doubles_equal(near, tc->GetNear(), 1.e-5f);
-        lolunit_assert_doubles_equal(far, tc->GetFar(), 1.e-5f);
-        lolunit_assert(is_shifted == tc->IsShifted());
-
-        tc->SetScreenInfos(screen_size, screen_ratio);
-        TEST_MATRIX(refmx, tc->GetProjection());
-        lolunit_assert_doubles_equal(fov, tc->GetFov(), 1.e-5f);
-        lolunit_assert_doubles_equal(screen_size, tc->GetScreenSize(), 1.e-5f);
-        lolunit_assert_doubles_equal(screen_ratio, tc->GetScreenRatio(), 1.e-5f);
-        lolunit_assert_doubles_equal(near, tc->GetNear(), 1.e-5f);
-        lolunit_assert_doubles_equal(far, tc->GetFar(), 1.e-5f);
-        lolunit_assert(is_shifted == tc->IsShifted());
-
-        tc->SetDrawInfos(far);
-        TEST_MATRIX(refmx, tc->GetProjection());
-        lolunit_assert_doubles_equal(fov, tc->GetFov(), 1.e-5f);
-        lolunit_assert_doubles_equal(screen_size, tc->GetScreenSize(), 1.e-5f);
-        lolunit_assert_doubles_equal(screen_ratio, tc->GetScreenRatio(), 1.e-5f);
-        lolunit_assert_doubles_equal(near, tc->GetNear(), 1.e-5f);
-        lolunit_assert_doubles_equal(far, tc->GetFar(), 1.e-5f);
-        lolunit_assert(is_shifted == tc->IsShifted());
-
-        tc->SetDrawInfos(near, far);
-        TEST_MATRIX(refmx, tc->GetProjection());
-        lolunit_assert_doubles_equal(fov, tc->GetFov(), 1.e-5f);
-        lolunit_assert_doubles_equal(screen_size, tc->GetScreenSize(), 1.e-5f);
-        lolunit_assert_doubles_equal(screen_ratio, tc->GetScreenRatio(), 1.e-5f);
-        lolunit_assert_doubles_equal(near, tc->GetNear(), 1.e-5f);
-        lolunit_assert_doubles_equal(far, tc->GetFar(), 1.e-5f);
-        lolunit_assert(is_shifted == tc->IsShifted());
-
-        is_shifted = true;
-        refmx = mat4::shifted_perspective(fov, screen_size, screen_ratio, near, far);
-
-        tc->UseShift(is_shifted);
-        TEST_MATRIX(refmx, tc->GetProjection());
-        lolunit_assert_doubles_equal(fov, tc->GetFov(), 1.e-5f);
-        lolunit_assert_doubles_equal(screen_size, tc->GetScreenSize(), 1.e-5f);
-        lolunit_assert_doubles_equal(screen_ratio, tc->GetScreenRatio(), 1.e-5f);
-        lolunit_assert_doubles_equal(near, tc->GetNear(), 1.e-5f);
-        lolunit_assert_doubles_equal(far, tc->GetFar(), 1.e-5f);
-        lolunit_assert(is_shifted == tc->IsShifted());
-    }
-};
-
-} /* namespace lol */
-
diff --git a/src/t/image/color.cpp b/src/t/image/color.cpp
deleted file mode 100644
index 508c0f67..00000000
--- a/src/t/image/color.cpp
+++ /dev/null
@@ -1,135 +0,0 @@
-//
-//  Lol Engine — Unit tests
-//
-//  Copyright © 2010—2015 Sam Hocevar <sam@hocevar.net>
-//
-//  Lol Engine is free software. It comes without any warranty, to
-//  the extent permitted by applicable law. You can redistribute it
-//  and/or modify it under the terms of the Do What the Fuck You Want
-//  to Public License, Version 2, as published by the WTFPL Task Force.
-//  See http://www.wtfpl.net/ for more details.
-//
-
-#include <lol/engine-internal.h>
-
-#include <lolunit.h>
-
-namespace lol
-{
-
-/* Data taken from “The CIEDE2000 Color-Difference Formula: Implementation
- * Notes, Supplementary Test Data, and Mathematical Observations” (2004)
- * by Gaurav Sharma, Wencheng Wu, Edul N. Dalal. Some data is disabled
- * because it is at the discontinuity limit. */
-static float const ciede2k[] =
-{
-    50.0000f,   2.6772f, -79.7751f, 50.0000f,   0.0000f, -82.7485f,  2.0425f,
-    50.0000f,   3.1571f, -77.2803f, 50.0000f,   0.0000f, -82.7485f,  2.8615f,
-    50.0000f,   2.8361f, -74.0200f, 50.0000f,   0.0000f, -82.7485f,  3.4412f,
-    50.0000f,  -1.3802f, -84.2814f, 50.0000f,   0.0000f, -82.7485f,  1.0000f,
-    50.0000f,  -1.1848f, -84.8006f, 50.0000f,   0.0000f, -82.7485f,  1.0000f,
-    50.0000f,  -0.9009f, -85.5211f, 50.0000f,   0.0000f, -82.7485f,  1.0000f,
-    50.0000f,   0.0000f,   0.0000f, 50.0000f,  -1.0000f,   2.0000f,  2.3669f,
-    50.0000f,  -1.0000f,   2.0000f, 50.0000f,   0.0000f,   0.0000f,  2.3669f,
-    50.0000f,   2.4900f,  -0.0010f, 50.0000f,  -2.4900f,   0.0009f,  7.1792f,
-    //50.0000f,   2.4900f,  -0.0010f, 50.0000f,  -2.4900f,   0.0010f,  7.1792f,
-    50.0000f,   2.4900f,  -0.0010f, 50.0000f,  -2.4900f,   0.0011f,  7.2195f,
-    50.0000f,   2.4900f,  -0.0010f, 50.0000f,  -2.4900f,   0.0012f,  7.2195f,
-    50.0000f,  -0.0010f,   2.4900f, 50.0000f,   0.0009f,  -2.4900f,  4.8045f,
-    //50.0000f,  -0.0010f,   2.4900f, 50.0000f,   0.0010f,  -2.4900f,  4.8045f,
-    50.0000f,  -0.0010f,   2.4900f, 50.0000f,   0.0011f,  -2.4900f,  4.7461f,
-    50.0000f,   2.5000f,   0.0000f, 50.0000f,   0.0000f,  -2.5000f,  4.3065f,
-    50.0000f,   2.5000f,   0.0000f, 73.0000f,  25.0000f, -18.0000f, 27.1492f,
-    50.0000f,   2.5000f,   0.0000f, 61.0000f,  -5.0000f,  29.0000f, 22.8977f,
-    50.0000f,   2.5000f,   0.0000f, 56.0000f, -27.0000f,  -3.0000f, 31.9030f,
-    50.0000f,   2.5000f,   0.0000f, 58.0000f,  24.0000f,  15.0000f, 19.4535f,
-    50.0000f,   2.5000f,   0.0000f, 50.0000f,   3.1736f,   0.5854f,  1.0000f,
-    50.0000f,   2.5000f,   0.0000f, 50.0000f,   3.2972f,   0.0000f,  1.0000f,
-    50.0000f,   2.5000f,   0.0000f, 50.0000f,   1.8634f,   0.5757f,  1.0000f,
-    50.0000f,   2.5000f,   0.0000f, 50.0000f,   3.2592f,   0.3350f,  1.0000f,
-    60.2574f, -34.0099f,  36.2677f, 60.4626f, -34.1751f,  39.4387f,  1.2644f,
-    63.0109f, -31.0961f,  -5.8663f, 62.8187f, -29.7946f,  -4.0864f,  1.2630f,
-    61.2901f,   3.7196f,  -5.3901f, 61.4292f,   2.2480f,  -4.9620f,  1.8731f,
-    35.0831f, -44.1164f,   3.7933f, 35.0232f, -40.0716f,   1.5901f,  1.8645f,
-    22.7233f,  20.0904f, -46.6940f, 23.0331f,  14.9730f, -42.5619f,  2.0373f,
-    36.4612f,  47.8580f,  18.3852f, 36.2715f,  50.5065f,  21.2231f,  1.4146f,
-    90.8027f,  -2.0831f,   1.4410f, 91.1528f,  -1.6435f,   0.0447f,  1.4441f,
-    90.9257f,  -0.5406f,  -0.9208f, 88.6381f,  -0.8985f,  -0.7239f,  1.5381f,
-     6.7747f,  -0.2908f,  -2.4247f,  5.8714f,  -0.0985f,  -2.2286f,  0.6377f,
-     2.0776f,   0.0795f,  -1.1350f,  0.9033f,  -0.0636f,  -0.5514f,  0.9082f,
-};
-
-lolunit_declare_fixture(color_test)
-{
-    lolunit_declare_test(ciede2000)
-    {
-        size_t count = sizeof(ciede2k) / sizeof(*ciede2k);
-
-        for (size_t n = 0; n < count; n += 7)
-        {
-            vec3 a(ciede2k[n + 0], ciede2k[n + 1], ciede2k[n + 2]);
-            vec3 b(ciede2k[n + 3], ciede2k[n + 4], ciede2k[n + 5]);
-            float d1 = ciede2k[n + 6];
-
-            float d2 = Color::DistanceCIEDE2000(a, b);
-            float d3 = Color::DistanceCIEDE2000(b, a);
-
-            /* Check that our function works, and check that
-             * it is symmetrical. */
-            lolunit_set_context(n / 7);
-            lolunit_assert_doubles_equal(d1, d2, 0.0001);
-            lolunit_assert_doubles_equal(d2, d3, 0.0001);
-            lolunit_unset_context(n / 7);
-        }
-    }
-
-    lolunit_declare_test(rgb_to_hsv)
-    {
-        for (int r = 0; r < 20; r++)
-        for (int g = 0; g < 20; g++)
-        for (int b = 0; b < 20; b++)
-        {
-            vec3 v1 = vec3(r / 20.f, g / 20.f, b / 20.f);
-            vec3 v2 = Color::RGBToHSV(v1);
-            vec3 v3 = Color::HSVToRGB(v2);
-
-            std::string rgb = format("[%f %f %f]", v1.r, v1.g, v1.b);
-            lolunit_set_context(&rgb[0]);
-
-            if (r != g || g != b)
-                lolunit_assert_doubles_equal(v1.r, v3.r, 0.0001);
-            lolunit_assert_doubles_equal(v1.g, v3.g, 0.0001);
-            lolunit_assert_doubles_equal(v1.b, v3.b, 0.0001);
-
-            lolunit_unset_context(&rgb[0]);
-        }
-    }
-
-    lolunit_declare_test(rgb_to_hsl)
-    {
-        for (int r = 0; r < 20; r++)
-        for (int g = 0; g < 20; g++)
-        for (int b = 0; b < 20; b++)
-        {
-            vec3 v1 = vec3(r / 20.f, g / 20.f, b / 20.f);
-            vec3 v2 = Color::RGBToHSL(v1);
-            vec3 v3 = Color::HSVToHSL(Color::RGBToHSV(v1));
-
-            std::string rgb = format("[%f %f %f]", v1.r, v1.g, v1.b);
-            lolunit_set_context(&rgb[0]);
-
-            /* Don’t check hue if saturation is zero. */
-            if (r != g || g != b)
-                lolunit_assert_doubles_equal(v2.x, v3.x, 0.0001);
-            /* Don’t check saturation if lightness is zero. */
-            if (r || g || b)
-                lolunit_assert_doubles_equal(v2.y, v3.y, 0.0001);
-            lolunit_assert_doubles_equal(v2.z, v3.z, 0.0001);
-
-            lolunit_unset_context(&rgb[0]);
-        }
-    }
-};
-
-} /* namespace lol */
-
diff --git a/src/t/image/image.cpp b/src/t/image/image.cpp
deleted file mode 100644
index 92015075..00000000
--- a/src/t/image/image.cpp
+++ /dev/null
@@ -1,48 +0,0 @@
-//
-//  Lol Engine — Unit tests
-//
-//  Copyright © 2010—2017 Sam Hocevar <sam@hocevar.net>
-//
-//  Lol Engine is free software. It comes without any warranty, to
-//  the extent permitted by applicable law. You can redistribute it
-//  and/or modify it under the terms of the Do What the Fuck You Want
-//  to Public License, Version 2, as published by the WTFPL Task Force.
-//  See http://www.wtfpl.net/ for more details.
-//
-
-#include <lol/engine-internal.h>
-
-#include <cmath>
-
-#include <lolunit.h>
-
-namespace lol
-{
-
-lolunit_declare_fixture(image_test)
-{
-    lolunit_declare_test(open_image)
-    {
-        image img("data/gradient.png");
-
-        ivec2 isize = img.size();
-        lolunit_assert_equal(isize.x, 256);
-        lolunit_assert_equal(isize.y, 16);
-
-        u8vec4 *data = img.lock<PixelFormat::RGBA_8>();
-        lolunit_assert(data);
-
-        lolunit_assert_equal((int)data[0].r, 0x00);
-        lolunit_assert_equal((int)data[0].g, 0x00);
-        lolunit_assert_equal((int)data[0].b, 0x00);
-
-        lolunit_assert_equal((int)data[255].r, 0xff);
-        lolunit_assert_equal((int)data[255].g, 0xff);
-        lolunit_assert_equal((int)data[255].b, 0xff);
-
-        img.unlock(data);
-    }
-};
-
-} /* namespace lol */
-
diff --git a/src/t/math/array2d.cpp b/src/t/math/array2d.cpp
deleted file mode 100644
index 0f875f78..00000000
--- a/src/t/math/array2d.cpp
+++ /dev/null
@@ -1,71 +0,0 @@
-//
-//  Lol Engine — Unit tests
-//
-//  Copyright © 2010—2015 Sam Hocevar <sam@hocevar.net>
-//
-//  Lol Engine is free software. It comes without any warranty, to
-//  the extent permitted by applicable law. You can redistribute it
-//  and/or modify it under the terms of the Do What the Fuck You Want
-//  to Public License, Version 2, as published by the WTFPL Task Force.
-//  See http://www.wtfpl.net/ for more details.
-//
-
-#include <lol/engine-internal.h>
-
-#include <lolunit.h>
-
-namespace lol
-{
-
-lolunit_declare_fixture(array2d_test)
-{
-    lolunit_declare_test(array2d_create)
-    {
-        array2d<int> a(ivec2(10, 10));
-
-        a[0][0] = 2;
-        a[9][0] = 4;
-        a[0][9] = 6;
-        a[9][9] = 8;
-
-        lolunit_assert_equal(a[0][0], 2);
-        lolunit_assert_equal(a[9][0], 4);
-        lolunit_assert_equal(a[0][9], 6);
-        lolunit_assert_equal(a[9][9], 8);
-
-        array2d<int> const &b = a;
-
-        lolunit_assert_equal(b[0][0], 2);
-        lolunit_assert_equal(b[9][0], 4);
-        lolunit_assert_equal(b[0][9], 6);
-        lolunit_assert_equal(b[9][9], 8);
-    }
-
-    lolunit_declare_test(array2d_init)
-    {
-        array2d<int> a = { { 1, 2, 3, 4 },
-                           { 5, 6, 7, 8 },
-                           { 9, 8, 7, 6 } };
-
-        lolunit_assert_equal(a.size().x, 4);
-        lolunit_assert_equal(a.size().y, 3);
-
-        lolunit_assert_equal(a[0][0], 1);
-        lolunit_assert_equal(a[1][0], 2);
-        lolunit_assert_equal(a[2][0], 3);
-        lolunit_assert_equal(a[3][0], 4);
-
-        lolunit_assert_equal(a[0][1], 5);
-        lolunit_assert_equal(a[1][1], 6);
-        lolunit_assert_equal(a[2][1], 7);
-        lolunit_assert_equal(a[3][1], 8);
-
-        lolunit_assert_equal(a[0][2], 9);
-        lolunit_assert_equal(a[1][2], 8);
-        lolunit_assert_equal(a[2][2], 7);
-        lolunit_assert_equal(a[3][2], 6);
-    }
-};
-
-} /* namespace lol */
-
diff --git a/src/t/math/array3d.cpp b/src/t/math/array3d.cpp
deleted file mode 100644
index 0a85e806..00000000
--- a/src/t/math/array3d.cpp
+++ /dev/null
@@ -1,90 +0,0 @@
-//
-//  Lol Engine — Unit tests
-//
-//  Copyright © 2010—2015 Sam Hocevar <sam@hocevar.net>
-//
-//  Lol Engine is free software. It comes without any warranty, to
-//  the extent permitted by applicable law. You can redistribute it
-//  and/or modify it under the terms of the Do What the Fuck You Want
-//  to Public License, Version 2, as published by the WTFPL Task Force.
-//  See http://www.wtfpl.net/ for more details.
-//
-
-#include <lol/engine-internal.h>
-
-#include <lolunit.h>
-
-namespace lol
-{
-
-lolunit_declare_fixture(array3d_test)
-{
-    lolunit_declare_test(array3d_create)
-    {
-        array3d<int> a(ivec3(10, 10, 10));
-
-        a[0][0][0] = 2;
-        a[9][0][0] = 4;
-        a[0][9][9] = 6;
-        a[9][9][9] = 8;
-
-        lolunit_assert_equal(a[0][0][0], 2);
-        lolunit_assert_equal(a[9][0][0], 4);
-        lolunit_assert_equal(a[0][9][9], 6);
-        lolunit_assert_equal(a[9][9][9], 8);
-
-        array3d<int> const &b = a;
-
-        lolunit_assert_equal(b[0][0][0], 2);
-        lolunit_assert_equal(b[9][0][0], 4);
-        lolunit_assert_equal(b[0][9][9], 6);
-        lolunit_assert_equal(b[9][9][9], 8);
-    }
-
-    lolunit_declare_test(array3d_init)
-    {
-        array3d<int> a = { { {  1,  2,  3,  4 },
-                             {  5,  6,  7,  8 },
-                             {  9,  8,  7,  6 } },
-                           { { -1, -2, -3, -4 },
-                             { -5, -6, -7, -8 },
-                             { -9, -8, -7, -6 } } };
-
-        lolunit_assert_equal(a.size().x, 4);
-        lolunit_assert_equal(a.size().y, 3);
-        lolunit_assert_equal(a.size().z, 2);
-
-        lolunit_assert_equal(a[0][0][0], 1);
-        lolunit_assert_equal(a[1][0][0], 2);
-        lolunit_assert_equal(a[2][0][0], 3);
-        lolunit_assert_equal(a[3][0][0], 4);
-
-        lolunit_assert_equal(a[0][1][0], 5);
-        lolunit_assert_equal(a[1][1][0], 6);
-        lolunit_assert_equal(a[2][1][0], 7);
-        lolunit_assert_equal(a[3][1][0], 8);
-
-        lolunit_assert_equal(a[0][2][0], 9);
-        lolunit_assert_equal(a[1][2][0], 8);
-        lolunit_assert_equal(a[2][2][0], 7);
-        lolunit_assert_equal(a[3][2][0], 6);
-
-        lolunit_assert_equal(a[0][0][1], -1);
-        lolunit_assert_equal(a[1][0][1], -2);
-        lolunit_assert_equal(a[2][0][1], -3);
-        lolunit_assert_equal(a[3][0][1], -4);
-
-        lolunit_assert_equal(a[0][1][1], -5);
-        lolunit_assert_equal(a[1][1][1], -6);
-        lolunit_assert_equal(a[2][1][1], -7);
-        lolunit_assert_equal(a[3][1][1], -8);
-
-        lolunit_assert_equal(a[0][2][1], -9);
-        lolunit_assert_equal(a[1][2][1], -8);
-        lolunit_assert_equal(a[2][2][1], -7);
-        lolunit_assert_equal(a[3][2][1], -6);
-    }
-};
-
-} /* namespace lol */
-
diff --git a/src/t/math/arraynd.cpp b/src/t/math/arraynd.cpp
deleted file mode 100644
index 4280ad6a..00000000
--- a/src/t/math/arraynd.cpp
+++ /dev/null
@@ -1,116 +0,0 @@
-//
-//  Lol Engine — Unit tests
-//
-//  Copyright © 2010—2015 Sam Hocevar <sam@hocevar.net>
-//
-//  Lol Engine is free software. It comes without any warranty, to
-//  the extent permitted by applicable law. You can redistribute it
-//  and/or modify it under the terms of the Do What the Fuck You Want
-//  to Public License, Version 2, as published by the WTFPL Task Force.
-//  See http://www.wtfpl.net/ for more details.
-//
-
-#include <lol/engine-internal.h>
-
-#include <lolunit.h>
-
-namespace lol
-{
-
-lolunit_declare_fixture(arraynd_test)
-{
-    lolunit_declare_test(array2d_accessors)
-    {
-        arraynd<2, int> a;
-        a.resize(vec_t<int, 2>(2, 2));
-
-        /* Non-const accessors */
-        a[0][0] = 1;
-        a[0][1] = 2;
-        a[1][0] = 3;
-        a[1][1] = 4;
-        lolunit_assert_equal(a[0][0], 1);
-        lolunit_assert_equal(a[0][1], 2);
-        lolunit_assert_equal(a[1][0], 3);
-        lolunit_assert_equal(a[1][1], 4);
-
-        /* Const accessors */
-        arraynd<2, int> const &b = a;
-        lolunit_assert_equal(b[0][0], 1);
-        lolunit_assert_equal(b[0][1], 2);
-        lolunit_assert_equal(b[1][0], 3);
-        lolunit_assert_equal(b[1][1], 4);
-    }
-
-    lolunit_declare_test(arraynd_create)
-    {
-        arraynd<10, int> a;
-        arraynd<20, float> b;
-        arraynd<30, uint8_t> c;
-        arraynd<40, double> d;
-
-        arraynd<3, int> e = { { {1, 2}, {3, 4} }, { {5, 6}, {7, 8} } };
-
-        lolunit_assert_equal(e.size()[0], 2);
-        lolunit_assert_equal(e.size()[1], 2);
-        lolunit_assert_equal(e.size()[2], 2);
-
-        lolunit_assert_equal(e[0][0][0], 1);
-        lolunit_assert_equal(e[1][0][0], 2);
-        lolunit_assert_equal(e[0][1][0], 3);
-        lolunit_assert_equal(e[1][1][0], 4);
-        lolunit_assert_equal(e[0][0][1], 5);
-        lolunit_assert_equal(e[1][0][1], 6);
-        lolunit_assert_equal(e[0][1][1], 7);
-        lolunit_assert_equal(e[1][1][1], 8);
-
-        arraynd<3, int> f = { { {1, 2, 3, 4}, {5, 6, 7} }, { {8, 9}, {10} } };
-
-        lolunit_assert_equal(f.size()[0], 4);
-        lolunit_assert_equal(f.size()[1], 2);
-        lolunit_assert_equal(f.size()[2], 2);
-
-        lolunit_assert_equal(f[0][0][0], 1);
-        lolunit_assert_equal(f[1][0][0], 2);
-        lolunit_assert_equal(f[2][0][0], 3);
-        lolunit_assert_equal(f[3][0][0], 4);
-        lolunit_assert_equal(f[0][1][0], 5);
-        lolunit_assert_equal(f[1][1][0], 6);
-        lolunit_assert_equal(f[2][1][0], 7);
-        lolunit_assert_equal(f[3][1][0], 0);
-        lolunit_assert_equal(f[0][0][1], 8);
-        lolunit_assert_equal(f[1][0][1], 9);
-        lolunit_assert_equal(f[2][0][1], 0);
-        lolunit_assert_equal(f[3][0][1], 0);
-        lolunit_assert_equal(f[0][1][1], 10);
-        lolunit_assert_equal(f[1][1][1], 0);
-        lolunit_assert_equal(f[2][1][1], 0);
-        lolunit_assert_equal(f[3][1][1], 0);
-    }
-
-    lolunit_declare_test(arraynd_init)
-    {
-        int const NDIM = 8;
-        vec_t<int, NDIM> size;
-        for (int i = 0; i < NDIM; ++i)
-            size[i] = 5;
-
-        arraynd<NDIM, uint8_t> a(size);
-        memset(a.data(), 0, a.bytes());
-        lolunit_assert_equal(a[2][3][2][0][1][4][0][1], 0x00);
-
-        vec_t<int, NDIM> v = { 2, 3, 2, 0, 1, 4, 0, 1 };
-        lolunit_assert_equal(a[v], 0x00);
-
-        a[2][3][2][0][1][4][0][1] = 0xcd;
-        lolunit_assert_equal(a[2][3][2][0][1][4][0][1], 0xcd);
-        lolunit_assert_equal(a[v], 0xcd);
-
-        arraynd<NDIM, uint8_t> const &b = a;
-        lolunit_assert_equal(b[2][3][2][0][1][4][0][1], 0xcd);
-        lolunit_assert_equal(b[v], 0xcd);
-    }
-};
-
-} /* namespace lol */
-
diff --git a/src/t/math/bigint.cpp b/src/t/math/bigint.cpp
deleted file mode 100644
index 1d9360ac..00000000
--- a/src/t/math/bigint.cpp
+++ /dev/null
@@ -1,242 +0,0 @@
-//
-//  Lol Engine — Unit tests
-//
-//  Copyright © 2010—2015 Sam Hocevar <sam@hocevar.net>
-//
-//  Lol Engine is free software. It comes without any warranty, to
-//  the extent permitted by applicable law. You can redistribute it
-//  and/or modify it under the terms of the Do What the Fuck You Want
-//  to Public License, Version 2, as published by the WTFPL Task Force.
-//  See http://www.wtfpl.net/ for more details.
-//
-
-#include <lol/engine-internal.h>
-
-#include <cmath>
-
-#include <lolunit.h>
-
-namespace lol
-{
-
-lolunit_declare_fixture(bigint_test)
-{
-    lolunit_declare_test(declaration)
-    {
-        bigint<> a;
-        bigint<0> b;
-        bigint<32> c;
-    }
-
-    lolunit_declare_test(int32_cast)
-    {
-        bigint<> a(0), b(1), c(-1);
-
-        lolunit_assert_equal((int32_t)a, 0);
-        lolunit_assert_equal((int32_t)b, 1);
-        lolunit_assert_equal((int32_t)c, -1);
-    }
-
-    lolunit_declare_test(uint32_cast)
-    {
-        bigint<> a(0), b(1), c(~(uint32_t)0);
-
-        lolunit_assert_equal((uint32_t)a, 0);
-        lolunit_assert_equal((uint32_t)b, 1);
-        lolunit_assert_equal((uint32_t)c, ~(uint32_t)0);
-    }
-
-    lolunit_declare_test(operator_equal)
-    {
-        bigint<> a(-1), b(0), c(1);
-
-        lolunit_assert(a == a);
-        lolunit_assert(!(a == b));
-        lolunit_assert(!(a == c));
-
-        lolunit_assert(!(b == a));
-        lolunit_assert(b == b);
-        lolunit_assert(!(b == c));
-
-        lolunit_assert(!(c == a));
-        lolunit_assert(!(c == b));
-        lolunit_assert(c == c);
-    }
-
-    lolunit_declare_test(operator_notequal)
-    {
-        bigint<> a(-1), b(0), c(1);
-
-        lolunit_assert(!(a != a));
-        lolunit_assert(a != b);
-        lolunit_assert(a != c);
-
-        lolunit_assert(b != a);
-        lolunit_assert(!(b != b));
-        lolunit_assert(b != c);
-
-        lolunit_assert(c != a);
-        lolunit_assert(c != b);
-        lolunit_assert(!(c != c));
-    }
-
-    lolunit_declare_test(operator_smaller)
-    {
-        bigint<> a(-10), b(-1), c(0), d(1), e(10);
-
-        lolunit_assert(!(a < a));
-        lolunit_assert(a < b);
-        lolunit_assert(a < c);
-        lolunit_assert(a < d);
-        lolunit_assert(a < e);
-
-        lolunit_assert(!(b < a));
-        lolunit_assert(!(b < b));
-        lolunit_assert(b < c);
-        lolunit_assert(b < d);
-        lolunit_assert(b < e);
-
-        lolunit_assert(!(c < a));
-        lolunit_assert(!(c < b));
-        lolunit_assert(!(c < c));
-        lolunit_assert(c < d);
-        lolunit_assert(c < e);
-
-        lolunit_assert(!(d < a));
-        lolunit_assert(!(d < b));
-        lolunit_assert(!(d < c));
-        lolunit_assert(!(d < d));
-        lolunit_assert(d < e);
-
-        lolunit_assert(!(e < a));
-        lolunit_assert(!(e < b));
-        lolunit_assert(!(e < c));
-        lolunit_assert(!(e < d));
-        lolunit_assert(!(e < e));
-    }
-
-    lolunit_declare_test(operator_smaller_or_equal)
-    {
-        bigint<> a(-10), b(-1), c(0), d(1), e(10);
-
-        lolunit_assert(a <= a);
-        lolunit_assert(a <= b);
-        lolunit_assert(a <= c);
-        lolunit_assert(a <= d);
-        lolunit_assert(a <= e);
-
-        lolunit_assert(!(b <= a));
-        lolunit_assert(b <= b);
-        lolunit_assert(b <= c);
-        lolunit_assert(b <= d);
-        lolunit_assert(b <= e);
-
-        lolunit_assert(!(c <= a));
-        lolunit_assert(!(c <= b));
-        lolunit_assert(c <= c);
-        lolunit_assert(c <= d);
-        lolunit_assert(c <= e);
-
-        lolunit_assert(!(d <= a));
-        lolunit_assert(!(d <= b));
-        lolunit_assert(!(d <= c));
-        lolunit_assert(d <= d);
-        lolunit_assert(d <= e);
-
-        lolunit_assert(!(e <= a));
-        lolunit_assert(!(e <= b));
-        lolunit_assert(!(e <= c));
-        lolunit_assert(!(e <= d));
-        lolunit_assert(e <= e);
-    }
-
-    lolunit_declare_test(operator_greater)
-    {
-        bigint<> a(-10), b(-1), c(0), d(1), e(10);
-
-        lolunit_assert(!(a > a));
-        lolunit_assert(!(a > b));
-        lolunit_assert(!(a > c));
-        lolunit_assert(!(a > d));
-        lolunit_assert(!(a > e));
-
-        lolunit_assert(b > a);
-        lolunit_assert(!(b > b));
-        lolunit_assert(!(b > c));
-        lolunit_assert(!(b > d));
-        lolunit_assert(!(b > e));
-
-        lolunit_assert(c > a);
-        lolunit_assert(c > b);
-        lolunit_assert(!(c > c));
-        lolunit_assert(!(c > d));
-        lolunit_assert(!(c > e));
-
-        lolunit_assert(d > a);
-        lolunit_assert(d > b);
-        lolunit_assert(d > c);
-        lolunit_assert(!(d > d));
-        lolunit_assert(!(d > e));
-
-        lolunit_assert(e > a);
-        lolunit_assert(e > b);
-        lolunit_assert(e > c);
-        lolunit_assert(e > d);
-        lolunit_assert(!(e > e));
-    }
-
-    lolunit_declare_test(operator_greater_or_equal)
-    {
-        bigint<> a(-10), b(-1), c(0), d(1), e(10);
-
-        lolunit_assert(a >= a);
-        lolunit_assert(!(a >= b));
-        lolunit_assert(!(a >= c));
-        lolunit_assert(!(a >= d));
-        lolunit_assert(!(a >= e));
-
-        lolunit_assert(b >= a);
-        lolunit_assert(b >= b);
-        lolunit_assert(!(b >= c));
-        lolunit_assert(!(b >= d));
-        lolunit_assert(!(b >= e));
-
-        lolunit_assert(c >= a);
-        lolunit_assert(c >= b);
-        lolunit_assert(c >= c);
-        lolunit_assert(!(c >= d));
-        lolunit_assert(!(c >= e));
-
-        lolunit_assert(d >= a);
-        lolunit_assert(d >= b);
-        lolunit_assert(d >= c);
-        lolunit_assert(d >= d);
-        lolunit_assert(!(d >= e));
-
-        lolunit_assert(e >= a);
-        lolunit_assert(e >= b);
-        lolunit_assert(e >= c);
-        lolunit_assert(e >= d);
-        lolunit_assert(e >= e);
-    }
-
-    lolunit_declare_test(multiply)
-    {
-        bigint<> a(-10), b(0), c(10);
-
-        lolunit_assert_equal((int32_t)(a * a), 100);
-        lolunit_assert_equal((int32_t)(a * b), 0);
-        lolunit_assert_equal((int32_t)(a * c), -100);
-
-        lolunit_assert_equal((int32_t)(b * a), 0);
-        lolunit_assert_equal((int32_t)(b * b), 0);
-        lolunit_assert_equal((int32_t)(b * c), 0);
-
-        lolunit_assert_equal((int32_t)(c * a), -100);
-        lolunit_assert_equal((int32_t)(c * b), 0);
-        lolunit_assert_equal((int32_t)(c * c), 100);
-    }
-};
-
-} /* namespace lol */
-
diff --git a/src/t/math/box.cpp b/src/t/math/box.cpp
deleted file mode 100644
index 37877abb..00000000
--- a/src/t/math/box.cpp
+++ /dev/null
@@ -1,54 +0,0 @@
-//
-//  Lol Engine — Unit tests
-//
-//  Copyright © 2010—2015 Sam Hocevar <sam@hocevar.net>
-//
-//  Lol Engine is free software. It comes without any warranty, to
-//  the extent permitted by applicable law. You can redistribute it
-//  and/or modify it under the terms of the Do What the Fuck You Want
-//  to Public License, Version 2, as published by the WTFPL Task Force.
-//  See http://www.wtfpl.net/ for more details.
-//
-
-#include <lol/engine-internal.h>
-
-#include <lolunit.h>
-
-namespace lol
-{
-
-lolunit_declare_fixture(box_test)
-{
-    lolunit_declare_test(box2d_intersection)
-    {
-        box2 b1(vec2(0.f, 0.f), vec2(10.f, 10.f));
-        box2 b2(vec2(5.f, 8.f), vec2(8.f, 12.f));
-        box2 b3(vec2(5.f, 11.f), vec2(8.f, 13.f));
-
-        lolunit_assert_equal(true, TestAABBVsAABB(b1, b2));
-        lolunit_assert_equal(false, TestAABBVsAABB(b1, b3));
-
-        box2 b4(vec2(96.f, 33.f), vec2(144.f, 129.f));
-        box2 b5(vec2(264.f, 91.f), vec2(244.f, 71.f));
-
-        lolunit_assert_equal(false, TestAABBVsAABB(b4, b5));
-    }
-
-    lolunit_declare_test(box2d_move)
-    {
-        box2 b1(vec2(0.f, 0.f), vec2(1.f, 1.f));
-        box2 b2(vec2(2.f, 2.f), vec2(3.f, 3.f));
-
-        b1 += vec2(0.6f, 0.6f);
-        lolunit_assert_equal(false, TestAABBVsAABB(b1, b2));
-
-        b1 += vec2(0.6f, 0.6f);
-        lolunit_assert_equal(true, TestAABBVsAABB(b1, b2));
-
-        b1 -= vec2(0.0f, 0.6f);
-        lolunit_assert_equal(false, TestAABBVsAABB(b1, b2));
-    }
-};
-
-} /* namespace lol */
-
diff --git a/src/t/math/cmplx.cpp b/src/t/math/cmplx.cpp
deleted file mode 100644
index 632c4044..00000000
--- a/src/t/math/cmplx.cpp
+++ /dev/null
@@ -1,105 +0,0 @@
-//
-//  Lol Engine — Unit tests
-//
-//  Copyright © 2010—2015 Sam Hocevar <sam@hocevar.net>
-//
-//  Lol Engine is free software. It comes without any warranty, to
-//  the extent permitted by applicable law. You can redistribute it
-//  and/or modify it under the terms of the Do What the Fuck You Want
-//  to Public License, Version 2, as published by the WTFPL Task Force.
-//  See http://www.wtfpl.net/ for more details.
-//
-
-#include <lol/engine-internal.h>
-
-#include <lolunit.h>
-
-namespace lol
-{
-
-lolunit_declare_fixture(complex_test)
-{
-    lolunit_declare_test(equality)
-    {
-        cmplx a2(1.0f, 2.0f);
-        cmplx b2(0.0f, 2.0f);
-        cmplx c2(1.0f, 0.0f);
-
-        lolunit_assert_equal(a2, a2);
-        lolunit_refute_different(a2, a2);
-
-        lolunit_assert_different(a2, b2);
-        lolunit_refute_equal(a2, b2);
-        lolunit_assert_different(a2, c2);
-        lolunit_refute_equal(a2, c2);
-    }
-
-    lolunit_declare_test(unary_minus)
-    {
-        cmplx a(1.0f, 3.0f);
-        cmplx b(-1.0f, -3.0f);
-
-        lolunit_assert_equal(a, -b);
-        lolunit_assert_equal(-a, b);
-    }
-
-    lolunit_declare_test(conjugate)
-    {
-        cmplx a(1.0f, 3.0f);
-        cmplx b(1.0f, -3.0f);
-
-        lolunit_assert_equal(a, ~b);
-        lolunit_assert_equal(~a, b);
-    }
-
-    lolunit_declare_test(complex_norm)
-    {
-        cmplx a(3.0f, -4.0f);
-
-        lolunit_assert_equal(norm(a), 5.0f);
-
-        cmplx b = a * ~a;
-        cmplx c = norm(a) * norm(a);
-
-        lolunit_assert_equal(b, c);
-
-        cmplx d(5.0f, 12.0f);
-
-        lolunit_assert_equal(norm(d), 13.0f);
-        lolunit_assert_equal(norm(a * d), norm(a) * norm(d));
-    }
-
-    lolunit_declare_test(base)
-    {
-        cmplx one(1.0f, 0.0f);
-        cmplx i(0.0f, 1.0f);
-
-        lolunit_assert_equal(norm(one), 1.0f);
-        lolunit_assert_equal(norm(i), 1.0f);
-
-        lolunit_assert_equal(i * i, -one);
-    }
-
-    lolunit_declare_test(complex_normalize)
-    {
-        cmplx a(3.0f, -4.0f);
-        cmplx b = normalize(a);
-
-        lolunit_assert_doubles_equal(norm(b), 1.0, 1e-8);
-    }
-
-    lolunit_declare_test(complex_inverse)
-    {
-        cmplx a(3.0f, -4.0f);
-        cmplx b = inverse(a);
-
-        lolunit_assert_equal(a * b, b * a);
-
-        cmplx c = 1.0f;
-
-        lolunit_assert_equal(a * b, c);
-    }
-};
-
-} /* namespace lol */
-
diff --git a/src/t/math/half.cpp b/src/t/math/half.cpp
deleted file mode 100644
index 09370075..00000000
--- a/src/t/math/half.cpp
+++ /dev/null
@@ -1,290 +0,0 @@
-//
-//  Lol Engine — Unit tests
-//
-//  Copyright © 2010—2015 Sam Hocevar <sam@hocevar.net>
-//
-//  Lol Engine is free software. It comes without any warranty, to
-//  the extent permitted by applicable law. You can redistribute it
-//  and/or modify it under the terms of the Do What the Fuck You Want
-//  to Public License, Version 2, as published by the WTFPL Task Force.
-//  See http://www.wtfpl.net/ for more details.
-//
-
-#include <lol/engine-internal.h>
-
-#include <cmath>
-
-#include <lolunit.h>
-
-namespace lol
-{
-
-lolunit_declare_fixture(half_test)
-{
-    lolunit_declare_test(float_to_half)
-    {
-        for (size_t i = 0; i < sizeof(pairs) / sizeof(*pairs); i++)
-        {
-            half a = (half)pairs[i].f;
-            uint16_t b = pairs[i].x;
-            lolunit_set_context(i);
-            lolunit_assert_equal(a.bits, b);
-        }
-    }
-
-    lolunit_declare_test(float_to_half_accurate)
-    {
-        for (size_t i = 0; i < sizeof(pairs) / sizeof(*pairs); i++)
-        {
-            half a = half::makeaccurate(pairs[i].f);
-            uint16_t b = pairs[i].x;
-            lolunit_set_context(i);
-            lolunit_assert_equal(a.bits, b);
-        }
-    }
-
-    lolunit_declare_test(bits_to_half)
-    {
-        for (unsigned int i = 0; i < 0x10000; i++)
-        {
-            half a = half::makebits(i);
-            uint16_t b = i;
-            lolunit_set_context(i);
-            lolunit_assert_equal(a.bits, b);
-        }
-    }
-
-    lolunit_declare_test(half_is_nan)
-    {
-        lolunit_assert(half::makebits(0x7c01).is_nan());
-        lolunit_assert(half::makebits(0xfc01).is_nan());
-        lolunit_assert(half::makebits(0x7e00).is_nan());
-        lolunit_assert(half::makebits(0xfe00).is_nan());
-
-        lolunit_assert(!half::makebits(0x7c00).is_nan());
-        lolunit_assert(!half::makebits(0xfc00).is_nan());
-
-        lolunit_assert(!half(0.0f).is_nan());
-        lolunit_assert(!half(-0.0f).is_nan());
-        lolunit_assert(!half(2.0f).is_nan());
-        lolunit_assert(!half(-2.0f).is_nan());
-    }
-
-    lolunit_declare_test(half_is_inf)
-    {
-        lolunit_assert(half(65536.0f).is_inf());
-        lolunit_assert(half(-65536.0f).is_inf());
-
-        lolunit_assert(!half(0.0f).is_inf());
-        lolunit_assert(!half(-0.0f).is_inf());
-        lolunit_assert(!half(65535.0f).is_inf());
-        lolunit_assert(!half(-65535.0f).is_inf());
-
-        lolunit_assert(half::makebits(0x7c00).is_inf());
-        lolunit_assert(half::makebits(0xfc00).is_inf());
-
-        lolunit_assert(!half::makebits(0x7e00).is_inf());
-        lolunit_assert(!half::makebits(0xfe00).is_inf());
-    }
-
-    lolunit_declare_test(half_is_finite)
-    {
-        lolunit_assert(half(0.0f).is_finite());
-        lolunit_assert(half(-0.0f).is_finite());
-        lolunit_assert(half(65535.0f).is_finite());
-        lolunit_assert(half(-65535.0f).is_finite());
-
-        lolunit_assert(!half(65536.0f).is_finite());
-        lolunit_assert(!half(-65536.0f).is_finite());
-
-        lolunit_assert(!half::makebits(0x7c00).is_finite());
-        lolunit_assert(!half::makebits(0xfc00).is_finite());
-
-        lolunit_assert(!half::makebits(0x7e00).is_finite());
-        lolunit_assert(!half::makebits(0xfe00).is_finite());
-    }
-
-    lolunit_declare_test(half_is_normal)
-    {
-        lolunit_assert(half(0.0f).is_normal());
-        lolunit_assert(half(-0.0f).is_normal());
-        lolunit_assert(half(65535.0f).is_normal());
-        lolunit_assert(half(-65535.0f).is_normal());
-
-        lolunit_assert(!half(65536.0f).is_normal());
-        lolunit_assert(!half(-65536.0f).is_normal());
-
-        lolunit_assert(!half::makebits(0x7c00).is_normal());
-        lolunit_assert(!half::makebits(0xfc00).is_normal());
-
-        lolunit_assert(!half::makebits(0x7e00).is_normal());
-        lolunit_assert(!half::makebits(0xfe00).is_normal());
-    }
-
-    lolunit_declare_test(half_classify)
-    {
-        for (uint32_t i = 0; i < 0x10000; i++)
-        {
-            lolunit_set_context(i);
-            half h = half::makebits(i);
-            if (h.is_nan())
-            {
-                lolunit_assert(!h.is_inf());
-                lolunit_assert(!h.is_normal());
-                lolunit_assert(!h.is_finite());
-            }
-            else if (h.is_inf())
-            {
-                lolunit_assert(!h.is_normal());
-                lolunit_assert(!h.is_finite());
-            }
-            else
-            {
-                lolunit_assert(h.is_finite());
-            }
-        }
-    }
-
-    lolunit_declare_test(half_to_float)
-    {
-        for (size_t i = 0; i < sizeof(pairs) / sizeof(*pairs); i++)
-        {
-            float a = (float)half::makebits(pairs[i].x);
-            float b = pairs[i].f;
-            lolunit_set_context(i);
-            lolunit_assert_equal(a, b);
-        }
-
-        for (uint32_t i = 0; i < 0x10000; i++)
-        {
-            half h = half::makebits(i);
-            if (h.is_nan())
-                continue;
-
-            float f = (float)h;
-            half g = (half)f;
-            lolunit_set_context(i);
-            lolunit_assert_equal(g.bits, h.bits);
-        }
-    }
-
-    lolunit_declare_test(half_to_int)
-    {
-        lolunit_assert_equal((int)(half)(0.0f), 0);
-        lolunit_assert_equal((int)(half)(-0.0f), 0);
-        lolunit_assert_equal((int)(half)(0.9f), 0);
-        lolunit_assert_equal((int)(half)(-0.9f), 0);
-        lolunit_assert_equal((int)(half)(1.0f), 1);
-        lolunit_assert_equal((int)(half)(-1.0f), -1);
-        lolunit_assert_equal((int)(half)(1.9f), 1);
-        lolunit_assert_equal((int)(half)(-1.9f), -1);
-        lolunit_assert_equal((int)(half)(65504.0f), 65504);
-        lolunit_assert_equal((int)(half)(-65504.0f), -65504);
-    }
-
-    lolunit_declare_test(float_op_half)
-    {
-        half zero = 0;
-        half one = 1;
-        half two = 2;
-
-        float a = zero + one;
-        lolunit_assert_equal(1.0f, a);
-        a += zero;
-        lolunit_assert_equal(1.0f, a);
-        a -= zero;
-        lolunit_assert_equal(1.0f, a);
-        a *= one;
-        lolunit_assert_equal(1.0f, a);
-        a /= one;
-        lolunit_assert_equal(1.0f, a);
-
-        float b = one + zero;
-        lolunit_assert_equal(1.0f, b);
-        b += one;
-        lolunit_assert_equal(2.0f, b);
-        b *= two;
-        lolunit_assert_equal(4.0f, b);
-        b -= two;
-        lolunit_assert_equal(2.0f, b);
-        b /= two;
-        lolunit_assert_equal(1.0f, b);
-
-        float c = one - zero;
-        lolunit_assert_equal(1.0f, c);
-
-        float d = two - one;
-        lolunit_assert_equal(1.0f, d);
-
-        float e = two + (-one);
-        lolunit_assert_equal(1.0f, e);
-
-        float f = (two * two) / (one + one);
-        lolunit_assert_equal(2.0f, f);
-    }
-
-    lolunit_declare_test(half_op_float)
-    {
-        half zero = 0;
-        half one = 1;
-        half two = 2;
-        half four = 4;
-
-        half a = one + 0.0f;
-        lolunit_assert_equal(one.bits, a.bits);
-        a += 0.0f;
-        lolunit_assert_equal(one.bits, a.bits);
-        a -= 0.0f;
-        lolunit_assert_equal(one.bits, a.bits);
-        a *= 1.0f;
-        lolunit_assert_equal(one.bits, a.bits);
-        a /= 1.0f;
-        lolunit_assert_equal(one.bits, a.bits);
-
-        half b = one + 0.0f;
-        lolunit_assert_equal(one.bits, b.bits);
-        b += 1.0f;
-        lolunit_assert_equal(two.bits, b.bits);
-        b *= 2.0f;
-        lolunit_assert_equal(four.bits, b.bits);
-        b -= 2.0f;
-        lolunit_assert_equal(two.bits, b.bits);
-        b /= 2.0f;
-        lolunit_assert_equal(one.bits, b.bits);
-
-        half c = 1.0f - zero;
-        lolunit_assert_equal(one.bits, c.bits);
-
-        half d = 2.0f - one;
-        lolunit_assert_equal(one.bits, d.bits);
-
-        half e = 2.0f + (-one);
-        lolunit_assert_equal(one.bits, e.bits);
-
-        half f = (2.0f * two) / (1.0f + one);
-        lolunit_assert_equal(two.bits, f.bits);
-    }
-
-    struct test_pair { float f; uint16_t x; };
-
-    static test_pair const pairs[11];
-};
-
-half_test::test_pair const half_test::pairs[] =
-{
-    /* All these values have exact half representations */
-    { 0.0f,      0x0000 },
-    { -0.0f,     0x8000 }, /* negative zero */
-    { 1.0f,      0x3c00 },
-    { -1.0f,     0xbc00 },
-    { 2.0f,      0x4000 },
-    { 0.5f,      0x3800 },
-    { 0.125f,    0x3000 },
-    { 15.9375f,  0x4bf8 },
-    { 31.0f / (1 << 14), 0x17c0 }, /* 0x1.fp-10 */
-    { 31.0f / (1 << 18), 0x07c0 }, /* 0x1.fp-14, normal float, denormal half */
-    { 31.0f / (1 << 19), 0x03e0 }, /* 0x1.fp-15, normal float, denormal half */
-};
-
-} /* namespace lol */
-
diff --git a/src/t/math/interp.cpp b/src/t/math/interp.cpp
deleted file mode 100644
index 95aeb785..00000000
--- a/src/t/math/interp.cpp
+++ /dev/null
@@ -1,39 +0,0 @@
-//
-//  Lol Engine — Unit tests
-//
-//  Copyright © 2010—2015 Sam Hocevar <sam@hocevar.net>
-//
-//  Lol Engine is free software. It comes without any warranty, to
-//  the extent permitted by applicable law. You can redistribute it
-//  and/or modify it under the terms of the Do What the Fuck You Want
-//  to Public License, Version 2, as published by the WTFPL Task Force.
-//  See http://www.wtfpl.net/ for more details.
-//
-
-#include <lol/engine-internal.h>
-
-#include <lolunit.h>
-
-namespace lol
-{
-
-lolunit_declare_fixture(interp_test)
-{
-    lolunit_declare_test(time_interp_test)
-    {
-        TimeInterp<float> ti;
-
-        ti.Set(1.f, 10.f);
-        ti.Set(1.f, 20.f);
-        ti.Set(1.f, 30.f);
-
-        lolunit_assert_doubles_equal(0.f, ti.Get(-3.0f), 1.e-5f);
-        lolunit_assert_doubles_equal(10.f, ti.Get(-2.0f), 1.e-5f);
-        lolunit_assert_doubles_equal(20.f, ti.Get(-1.0f), 1.e-5f);
-        lolunit_assert_doubles_equal(30.f, ti.Get(0.0f), 1.e-5f);
-        lolunit_assert_doubles_equal(40.f, ti.Get(1.0f), 1.e-5f);
-    }
-};
-
-} /* namespace lol */
-
diff --git a/src/t/math/matrix.cpp b/src/t/math/matrix.cpp
deleted file mode 100644
index 0a42ed0c..00000000
--- a/src/t/math/matrix.cpp
+++ /dev/null
@@ -1,345 +0,0 @@
-//
-//  Lol Engine — Unit tests
-//
-//  Copyright © 2010—2019 Sam Hocevar <sam@hocevar.net>
-//
-//  Lol Engine is free software. It comes without any warranty, to
-//  the extent permitted by applicable law. You can redistribute it
-//  and/or modify it under the terms of the Do What the Fuck You Want
-//  to Public License, Version 2, as published by the WTFPL Task Force.
-//  See http://www.wtfpl.net/ for more details.
-//
-
-#include <lol/engine-internal.h>
-
-#include <lolunit.h>
-
-namespace lol
-{
-
-// Get the L matrix of an LU decomposition
-template<typename T, int N>
-static mat_t<T, N, N> l_extract(mat_t<T, N, N> const & lu)
-{
-    auto l = lu;
-    for (int i = 0; i < N; ++i)
-        for (int j = 0; j <= i; ++j)
-            l[i][j] = T(j == i ? 1 : 0);
-    return l;
-}
-
-// Get the U matrix of an LU decomposition
-template<typename T, int N>
-static mat_t<T, N, N> u_extract(mat_t<T, N, N> const & lu)
-{
-    auto u = lu;
-    for (int i = 0; i < N; ++i)
-        for (int j = i + 1; j < N; ++j)
-            u[i][j] = T(0);
-    return u;
-}
-
-lolunit_declare_fixture(matrix_test)
-{
-    void setup()
-    {
-        tri2 = mat2(vec2(1.0f, 0.0f),
-                    vec2(7.0f, 2.0f));
-        inv2 = mat2(vec2(4.0f, 3.0f),
-                    vec2(3.0f, 2.0f));
-
-        tri3 = mat3(vec3(1.0f, 0.0f, 0.0f),
-                    vec3(7.0f, 2.0f, 0.0f),
-                    vec3(1.0f, 5.0f, 3.0f));
-        inv3 = mat3(vec3(2.0f, 3.0f, 5.0f),
-                    vec3(3.0f, 2.0f, 3.0f),
-                    vec3(9.0f, 5.0f, 7.0f));
-
-        tri4 = mat4(vec4(1.0f, 0.0f, 0.0f, 0.0f),
-                    vec4(7.0f, 2.0f, 0.0f, 0.0f),
-                    vec4(1.0f, 5.0f, 3.0f, 0.0f),
-                    vec4(8.0f, 9.0f, 2.0f, 4.0f));
-        inv4 = mat4(vec4( 1.0f,  1.0f,  2.0f, -1.0f),
-                    vec4(-2.0f, -1.0f, -2.0f,  2.0f),
-                    vec4( 4.0f,  2.0f,  5.0f, -4.0f),
-                    vec4( 5.0f, -3.0f, -7.0f, -6.0f));
-    }
-
-    lolunit_declare_test(matrix_determinant)
-    {
-        float d1, d2;
-
-        d1 = determinant(tri2);
-        lolunit_assert_doubles_equal(d1, 2.0f, 1e-5);
-        d2 = determinant(inv2);
-        lolunit_assert_doubles_equal(d2, -1.0f, 1e-5);
-
-        d1 = determinant(tri3);
-        lolunit_assert_doubles_equal(d1, 6.0f, 1e-5);
-        d2 = determinant(inv3);
-        lolunit_assert_doubles_equal(d2, 1.0f, 1e-5);
-
-        d1 = determinant(tri4);
-        lolunit_assert_doubles_equal(d1, 24.0f, 1e-5);
-        d2 = determinant(inv4);
-        lolunit_assert_doubles_equal(d2, -1.0f, 1e-5);
-    }
-
-    lolunit_declare_test(multiplication_4x4)
-    {
-        mat4 m0(1.f);
-        mat4 m1(1.f);
-        mat4 m2 = m0 * m1;
-
-        for (int j = 0; j < 4; ++j)
-        for (int i = 0; i < 4; ++i)
-            lolunit_assert_doubles_equal(m2[i][j], float(i == j), 1e-5);
-    }
-
-    lolunit_declare_test(lu_decomposition_3x3)
-    {
-        mat3 m(vec3(2, 3, 5),
-               vec3(3, 2, 3),
-               vec3(9, 5, 7));
-        auto lup = lu_decomposition(m);
-        auto lu = std::get<0>(lup);
-        auto p = std::get<1>(lup);
-        auto m2 = l_extract(lu) * u_extract(lu);
-
-        for (int j = 0; j < 3; ++j)
-        for (int i = 0; i < 3; ++i)
-            lolunit_assert_doubles_equal(m2[i][j], m[i][p[j]], 1e-5);
-    }
-
-    lolunit_declare_test(lu_decomposition_4x4_full)
-    {
-        mat4 m(vec4( 1,  1,  2, -1),
-               vec4(-2, -1, -2,  2),
-               vec4( 4,  2,  5, -4),
-               vec4( 5, -3, -7, -6));
-        auto lup = lu_decomposition(m);
-        auto lu = std::get<0>(lup);
-        auto p = std::get<1>(lup);
-        auto m2 = l_extract(lu) * u_extract(lu);
-
-        for (int j = 0; j < 4; ++j)
-        for (int i = 0; i < 4; ++i)
-            lolunit_assert_doubles_equal(m2[i][j], m[i][p[j]], 1e-5);
-    }
-
-    lolunit_declare_test(lu_decomposition_4x4_sparse)
-    {
-        mat4 m(vec4(1,  0,  0,  0),
-               vec4(0,  0,  1,  0),
-               vec4(0, -1,  0,  0),
-               vec4(0,  0, -1,  1));
-        auto lup = lu_decomposition(m);
-        auto lu = std::get<0>(lup);
-        auto p = std::get<1>(lup);
-        auto m2 = l_extract(lu) * u_extract(lu);
-
-        for (int j = 0; j < 4; ++j)
-        for (int i = 0; i < 4; ++i)
-            lolunit_assert_doubles_equal(m2[i][j], m[i][p[j]], 1e-5);
-    }
-
-    lolunit_declare_test(l_inverse_3x3)
-    {
-        mat3 m(vec3(2, 3, 5),
-               vec3(3, 2, 3),
-               vec3(9, 5, 7));
-        auto lu = std::get<0>(lu_decomposition(m));
-        auto m2 = l_extract(lu) * l_inverse(lu);
-
-        for (int j = 0; j < 3; ++j)
-        for (int i = 0; i < 3; ++i)
-            lolunit_assert_doubles_equal(m2[i][j], float(i == j), 1e-5);
-    }
-
-    lolunit_declare_test(l_inverse_4x4)
-    {
-        mat4 m(vec4( 1,  1,  2, -1),
-               vec4(-2, -1, -2,  2),
-               vec4( 4,  2,  5, -4),
-               vec4( 5, -3, -7, -6));
-        auto lu = std::get<0>(lu_decomposition(m));
-        auto m2 = l_extract(lu) * l_inverse(lu);
-
-        for (int j = 0; j < 4; ++j)
-        for (int i = 0; i < 4; ++i)
-            lolunit_assert_doubles_equal(m2[i][j], float(i == j), 1e-5);
-    }
-
-    lolunit_declare_test(u_inverse_3x3)
-    {
-        mat3 m(vec3(2, 3, 5),
-               vec3(3, 2, 3),
-               vec3(9, 5, 7));
-        auto lu = std::get<0>(lu_decomposition(m));
-        auto m2 = u_extract(lu) * u_inverse(lu);
-
-        for (int j = 0; j < 3; ++j)
-        for (int i = 0; i < 3; ++i)
-            lolunit_assert_doubles_equal(m2[i][j], float(i == j), 1e-5);
-    }
-
-    lolunit_declare_test(u_inverse_4x4)
-    {
-        mat4 m(vec4( 1,  1,  2, -1),
-               vec4(-2, -1, -2,  2),
-               vec4( 4,  2,  5, -4),
-               vec4( 5, -3, -7, -6));
-        auto lu = std::get<0>(lu_decomposition(m));
-        auto m2 = u_extract(lu) * u_inverse(lu);
-
-        for (int j = 0; j < 4; ++j)
-        for (int i = 0; i < 4; ++i)
-            lolunit_assert_doubles_equal(m2[i][j], float(i == j), 1e-5);
-    }
-
-    lolunit_declare_test(inverse_2x2)
-    {
-        mat2 m(vec2(4, 3),
-               vec2(3, 2));
-
-        // Invert matrix and check that the results are finite
-        mat2 m1 = inverse(m);
-        for (int j = 0; j < 2; ++j)
-        for (int i = 0; i < 2; ++i)
-        {
-            lolunit_assert_less(m1[i][j], FLT_MAX);
-            lolunit_assert_greater(m1[i][j], -FLT_MAX);
-        }
-
-        // Multiply with original matrix and check that we get identity
-        mat2 m2 = m1 * m;
-        for (int j = 0; j < 2; ++j)
-        for (int i = 0; i < 2; ++i)
-            lolunit_assert_doubles_equal(m2[i][j], float(i == j), 1e-5);
-    }
-
-    lolunit_declare_test(inverse_3x3)
-    {
-        mat3 m(vec3(2, 3, 5),
-               vec3(3, 2, 3),
-               vec3(9, 5, 7));
-
-        // Invert matrix and check that the results are finite
-        mat3 m1 = inverse(m);
-        for (int j = 0; j < 3; ++j)
-        for (int i = 0; i < 3; ++i)
-        {
-            lolunit_assert_less(m1[i][j], FLT_MAX);
-            lolunit_assert_greater(m1[i][j], -FLT_MAX);
-        }
-
-        // Multiply with original matrix and check that we get identity
-        mat3 m2 = m1 * m;
-        for (int j = 0; j < 3; ++j)
-        for (int i = 0; i < 3; ++i)
-            lolunit_assert_doubles_equal(m2[i][j], float(i == j), 1e-5);
-    }
-
-    lolunit_declare_test(inverse_4x4_full)
-    {
-        mat4 m(vec4( 1,  1,  2, -1),
-               vec4(-2, -1, -2,  2),
-               vec4( 4,  2,  5, -4),
-               vec4( 5, -3, -7, -6));
-
-        // Invert matrix and check that the results are finite
-        mat4 m1 = inverse(m);
-        for (int j = 0; j < 4; ++j)
-        for (int i = 0; i < 4; ++i)
-        {
-            lolunit_assert_less(m1[i][j], FLT_MAX);
-            lolunit_assert_greater(m1[i][j], -FLT_MAX);
-        }
-
-        // Multiply with original matrix and check that we get identity
-        mat4 m2 = m1 * m;
-        for (int j = 0; j < 4; ++j)
-        for (int i = 0; i < 4; ++i)
-            lolunit_assert_doubles_equal(m2[i][j], float(i == j), 1e-5);
-    }
-
-    lolunit_declare_test(inverse_4x4_sparse)
-    {
-        mat4 m(vec4(1,  0,  0,  0),
-               vec4(0,  0,  1,  0),
-               vec4(0, -1,  0,  0),
-               vec4(0,  0, -1,  1));
-
-        // Invert matrix and check that the results are finite
-        mat4 m1 = inverse(m);
-        for (int j = 0; j < 4; ++j)
-        for (int i = 0; i < 4; ++i)
-        {
-            lolunit_assert_less(m1[i][j], FLT_MAX);
-            lolunit_assert_greater(m1[i][j], -FLT_MAX);
-        }
-
-        // Multiply with original matrix and check that we get identity
-        mat4 m2 = m1 * m;
-        for (int j = 0; j < 4; ++j)
-        for (int i = 0; i < 4; ++i)
-            lolunit_assert_doubles_equal(m2[i][j], float(i == j), 1e-5);
-    }
-
-    lolunit_declare_test(inverse_9x9)
-    {
-        // Use double because float is not accurate enough for 9×9 matrices
-        lol::mat_t<double, 9, 9> m;
-
-        // Generate 1000 random-valued matrices
-        for (int n = 0; n < 1000; ++n)
-        {
-            for (int j = 0; j < m.count; ++j)
-            for (int i = 0; i < m.count; ++i)
-                m[i][j] = lol::rand(-1.f, 1.f);
-
-            // Invert matrix and check that the result is correct
-            auto m2 = inverse(m) * m;
-            for (int j = 0; j < m.count; ++j)
-            for (int i = 0; i < m.count; ++i)
-                lolunit_assert_doubles_equal(m2[i][j], double(i == j), 1e-10);
-        }
-    }
-
-    lolunit_declare_test(kronecker_product)
-    {
-        int const COLS1 = 2, ROWS1 = 3;
-        int const COLS2 = 5, ROWS2 = 7;
-
-        mat_t<int, COLS1, ROWS1> a;
-        mat_t<int, COLS2, ROWS2> b;
-
-        for (int i = 0; i < COLS1; ++i)
-            for (int j = 0; j < ROWS1; ++j)
-                a[i][j] = (i + 11) * (j + 13);
-
-        for (int i = 0; i < COLS2; ++i)
-            for (int j = 0; j < ROWS2; ++j)
-                b[i][j] = (i + 17) * (j + 19);
-
-        mat_t<int, COLS1 * COLS2, ROWS1 * ROWS2> m = outer(a, b);
-
-        for (int i1 = 0; i1 < COLS1; ++i1)
-        for (int j1 = 0; j1 < ROWS1; ++j1)
-        for (int i2 = 0; i2 < COLS2; ++i2)
-        for (int j2 = 0; j2 < ROWS2; ++j2)
-        {
-            int expected = a[i1][j1] * b[i2][j2];
-            int actual = m[i1 * COLS2 + i2][j1 * ROWS2 + j2];
-
-            lolunit_assert_equal(actual, expected);
-        }
-    }
-
-    mat2 tri2, inv2;
-    mat3 tri3, inv3;
-    mat4 tri4, inv4;
-};
-
-} // namespace lol
-
diff --git a/src/t/math/noise/simplex.cpp b/src/t/math/noise/simplex.cpp
deleted file mode 100644
index ce5e882c..00000000
--- a/src/t/math/noise/simplex.cpp
+++ /dev/null
@@ -1,26 +0,0 @@
-//
-//  Lol Engine — Unit tests
-//
-//  Copyright © 2010—2015 Sam Hocevar <sam@hocevar.net>
-//            © 2013—2014 Benjamin “Touky” Huet <huet.benjamin@gmail.com>
-//            © 2013—2014 Guillaume Bittoun <guillaume.bittoun@gmail.com>
-//
-//  Lol Engine is free software. It comes without any warranty, to
-//  the extent permitted by applicable law. You can redistribute it
-//  and/or modify it under the terms of the Do What the Fuck You Want
-//  to Public License, Version 2, as published by the WTFPL Task Force.
-//  See http://www.wtfpl.net/ for more details.
-//
-
-#include <lol/engine-internal.h>
-
-#include <lolunit.h>
-
-namespace lol
-{
-
-lolunit_declare_fixture(simplex_noise_test)
-{
-};
-
-}
diff --git a/src/t/math/numbers.cpp b/src/t/math/numbers.cpp
deleted file mode 100644
index f2e6be79..00000000
--- a/src/t/math/numbers.cpp
+++ /dev/null
@@ -1,51 +0,0 @@
-//
-//  Lol Engine — Unit tests for number theory
-//
-//  Copyright © 2010—2018 Sam Hocevar <sam@hocevar.net>
-//
-//  Lol Engine is free software. It comes without any warranty, to
-//  the extent permitted by applicable law. You can redistribute it
-//  and/or modify it under the terms of the Do What the Fuck You Want
-//  to Public License, Version 2, as published by the WTFPL Task Force.
-//  See http://www.wtfpl.net/ for more details.
-//
-
-#include <lol/engine-internal.h>
-
-#include <lolunit.h>
-
-namespace lol
-{
-
-lolunit_declare_fixture(gcd_test)
-{
-    lolunit_declare_test(gcd_int)
-    {
-        lolunit_assert_equal(1, lol::gcd(37, 600));
-        lolunit_assert_equal(2, lol::gcd(4, 6));
-        lolunit_assert_equal(2, lol::gcd(6, 4));
-        lolunit_assert_equal(13, lol::gcd(13, 13));
-        lolunit_assert_equal(20, lol::gcd(20, 100));
-        lolunit_assert_equal(18913, lol::gcd(624129, 2061517));
-    }
-
-    lolunit_declare_test(gcd_double)
-    {
-        lolunit_assert_equal(2.0, lol::gcd(4.0, 6.0));
-        lolunit_assert_equal(2.5, lol::gcd(5.0, 7.5));
-        lolunit_assert_equal(0.125, lol::gcd(4.625, 75.0));
-    }
-
-    lolunit_declare_test(gcd_negative)
-    {
-        lolunit_assert_equal(2, lol::gcd(4, -6));
-        lolunit_assert_equal(2, lol::gcd(-4, 6));
-        lolunit_assert_equal(2, lol::gcd(-4, -6));
-        lolunit_assert_equal(2, lol::gcd(6, -4));
-        lolunit_assert_equal(2, lol::gcd(-6, 4));
-        lolunit_assert_equal(2, lol::gcd(-6, -4));
-    }
-};
-
-} /* namespace lol */
-
diff --git a/src/t/math/polynomial.cpp b/src/t/math/polynomial.cpp
deleted file mode 100644
index 3ec3d661..00000000
--- a/src/t/math/polynomial.cpp
+++ /dev/null
@@ -1,355 +0,0 @@
-//
-//  Lol Engine — Unit tests
-//
-//  Copyright © 2010—2015 Sam Hocevar <sam@hocevar.net>
-//
-//  Lol Engine is free software. It comes without any warranty, to
-//  the extent permitted by applicable law. You can redistribute it
-//  and/or modify it under the terms of the Do What the Fuck You Want
-//  to Public License, Version 2, as published by the WTFPL Task Force.
-//  See http://www.wtfpl.net/ for more details.
-//
-
-#include <lol/engine-internal.h>
-
-#include <lolunit.h>
-
-namespace lol
-{
-
-lolunit_declare_fixture(polynomial_test)
-{
-    lolunit_declare_test(declaration)
-    {
-        polynomial<float> p;
-        polynomial<real> q;
-    }
-
-    lolunit_declare_test(init)
-    {
-        polynomial<float> p { };
-        lolunit_assert_equal(p[0], 0.f);
-        lolunit_assert_equal(p[1], 0.f);
-        lolunit_assert_equal(p[2], 0.f);
-        lolunit_assert_equal(p.degree(), -1);
-
-        polynomial<float> q { 1.f };
-        lolunit_assert_equal(q[0], 1.f);
-        lolunit_assert_equal(q[1], 0.f);
-        lolunit_assert_equal(q[2], 0.f);
-        lolunit_assert_equal(q.degree(), 0);
-
-        polynomial<float> r { 1.f, 2.f };
-        lolunit_assert_equal(r[0], 1.f);
-        lolunit_assert_equal(r[1], 2.f);
-        lolunit_assert_equal(r[2], 0.f);
-        lolunit_assert_equal(r.degree(), 1);
-
-        polynomial<float> s { 0.f };
-        lolunit_assert_equal(s[0], 0.f);
-        lolunit_assert_equal(s[1], 0.f);
-        lolunit_assert_equal(s[2], 0.f);
-        lolunit_assert_equal(s.degree(), -1);
-    }
-
-    lolunit_declare_test(derive)
-    {
-        polynomial<float> p {};
-        p = p.derive();
-        lolunit_assert_equal(p.degree(), -1);
-
-        polynomial<float> q { 1.f };
-        q = q.derive();
-        lolunit_assert_equal(q.degree(), -1);
-
-        polynomial<float> r { 1.f, 2.f };
-        r = r.derive();
-        lolunit_assert_equal(r.degree(), 0);
-        lolunit_assert_equal(r[0], 2.f);
-
-        polynomial<float> s { 1.f, 2.f, 3.f, 4.f };
-        s = s.derive();
-        lolunit_assert_equal(s.degree(), 2);
-        lolunit_assert_equal(s[0], 2.f);
-        lolunit_assert_equal(s[1], 6.f);
-        lolunit_assert_equal(s[2], 12.f);
-    }
-
-    lolunit_declare_test(eval)
-    {
-        /* Special null polynomial */
-        polynomial<float> p;
-
-        float a = p.eval(42.f);
-        lolunit_assert_equal(a, 0.f);
-    }
-
-    lolunit_declare_test(eval_degree_0)
-    {
-        /* Constant polynomial p(x) = 1 */
-        polynomial<float> p { 1.f };
-
-        float a = p.eval(42.f);
-        lolunit_assert_equal(a, 1.f);
-    }
-
-    lolunit_declare_test(eval_degree_1)
-    {
-        /* p(x) = 1 + 2x */
-        polynomial<float> p { 1.f, 2.f };
-
-        float a = p.eval(0.f);
-        lolunit_assert_equal(a, 1.f);
-
-        float b = p.eval(1.f);
-        lolunit_assert_equal(b, 3.f);
-
-        float c = p.eval(2.f);
-        lolunit_assert_equal(c, 5.f);
-    }
-
-    lolunit_declare_test(eval_degree_2)
-    {
-        /* p(x) = 1 + 2x + 3x² */
-        polynomial<float> p { 1.f, 2.f, 3.f };
-
-        float a = p.eval(0.f);
-        lolunit_assert_equal(a, 1.f);
-
-        float b = p.eval(1.f);
-        lolunit_assert_equal(b, 6.f);
-
-        float c = p.eval(2.f);
-        lolunit_assert_equal(c, 17.f);
-    }
-
-    lolunit_declare_test(unary_plus_and_minus)
-    {
-        /* p(x) = 1 + 2x + 3x² */
-        polynomial<float> p { 1.f, 2.f, 3.f };
-        polynomial<float> q = +p;
-        polynomial<float> r = -p;
-
-        lolunit_assert_equal(q[0], 1.f);
-        lolunit_assert_equal(q[1], 2.f);
-        lolunit_assert_equal(q[2], 3.f);
-
-        lolunit_assert_equal(r[0], -1.f);
-        lolunit_assert_equal(r[1], -2.f);
-        lolunit_assert_equal(r[2], -3.f);
-    }
-
-    lolunit_declare_test(addition)
-    {
-        /* p(x) = 1 + 2x + 3x² */
-        /* q(x) = 4 + 5x */
-        polynomial<float> p { 1.f, 2.f, 3.f };
-        polynomial<float> q { 4.f, 5.f };
-
-        /* r(x) = 5 + 7x + 3x² */
-        polynomial<float> r = p + q;
-        lolunit_assert_equal(r.degree(), 2);
-        lolunit_assert_equal(r[0], 5.f);
-        lolunit_assert_equal(r[1], 7.f);
-        lolunit_assert_equal(r[2], 3.f);
-    }
-
-    lolunit_declare_test(subtraction)
-    {
-        /* p(x) = 1 + 2x + 3x² */
-        /* q(x) = 4 + 5x */
-        polynomial<float> p { 1.f, 2.f, 3.f };
-        polynomial<float> q { 4.f, 5.f };
-
-        /* r(x) = -3 + -3x + 3x² */
-        polynomial<float> r = p - q;
-        lolunit_assert_equal(r.degree(), 2);
-        lolunit_assert_equal(r[0], -3.f);
-        lolunit_assert_equal(r[1], -3.f);
-        lolunit_assert_equal(r[2], 3.f);
-    }
-
-    lolunit_declare_test(multiplication)
-    {
-        /* p(x) = 1 + 2x + 3x² */
-        /* q(x) = 4 + 5x */
-        polynomial<float> p { 1.f, 2.f, 3.f };
-        polynomial<float> q { 4.f, 5.f };
-
-        /* r(x) = 4 + 13x + 22x² + 15x³ */
-        polynomial<float> r = p * q;
-        lolunit_assert_equal(r.degree(), 3);
-        lolunit_assert_equal(r[0], 4.f);
-        lolunit_assert_equal(r[1], 13.f);
-        lolunit_assert_equal(r[2], 22.f);
-        lolunit_assert_equal(r[3], 15.f);
-    }
-
-    lolunit_declare_test(division)
-    {
-        /* p(x) = -4 - 2x² + x³ */
-        /* q(x) = -3 + x */
-        polynomial<float> p { -4.f, 0.f, -2.f, 1.f };
-        polynomial<float> q { -3.f, 1.f };
-
-        /* p(x) = r(x) q(x) + s(x)
-         * r(x) = 3 + x + x²
-         * s(x) = 5 */
-        auto r = p / q;
-        lolunit_assert_equal(r.m1.degree(), 2);
-        lolunit_assert_doubles_equal(r.m1[0], 3.f, 1e-5f);
-        lolunit_assert_doubles_equal(r.m1[1], 1.f, 1e-5f);
-        lolunit_assert_doubles_equal(r.m1[2], 1.f, 1e-5f);
-        lolunit_assert_equal(r.m2.degree(), 0);
-        lolunit_assert_doubles_equal(r.m2[0], 5.f, 1e-5f);
-    }
-
-    lolunit_declare_test(composition_degree_2_2)
-    {
-        /* p(x) = 1 + x² */
-        polynomial<float> p({ 1, 0, 1 });
-
-        /* q(x) = (p o p)(x) = 2 + 2x² + x⁴ */
-        polynomial<float> q = p.eval(p);
-        lolunit_assert_equal(q.degree(), 4);
-        lolunit_assert_equal(q[0], 2.f);
-        lolunit_assert_equal(q[1], 0.f);
-        lolunit_assert_equal(q[2], 2.f);
-        lolunit_assert_equal(q[3], 0.f);
-        lolunit_assert_equal(q[4], 1.f);
-    }
-
-    lolunit_declare_test(composition_degree_2_3)
-    {
-        /* p(x) = 1 + x */
-        polynomial<float> p({ 1, 1 });
-
-        /* q(x) = 1 + x + x² */
-        polynomial<float> q({ 1, 1, 1 });
-
-        /* r(x) = (q o p)(x) = 3 + 3x + x² */
-        polynomial<float> r = q.eval(p);
-        lolunit_assert_equal(r.degree(), 2);
-        lolunit_assert_equal(r[0], 3.f);
-        lolunit_assert_equal(r[1], 3.f);
-        lolunit_assert_equal(r[2], 1.f);
-    }
-
-    lolunit_declare_test(degree_0_root)
-    {
-        /* p(x) = 42 */
-        polynomial<float> p { 42.f };
-        auto roots = p.roots();
-
-        lolunit_assert_equal(roots.count(), 0);
-    }
-
-    lolunit_declare_test(degree_1_root)
-    {
-        /* p(x) = -6 + 2x */
-        polynomial<float> p { -6.f, 2.f };
-        auto roots = p.roots();
-
-        lolunit_assert_equal(roots.count(), 1);
-        lolunit_assert_equal(roots[0], 3.f);
-    }
-
-    lolunit_declare_test(degree_2_root)
-    {
-        /* p(x) = 81 - 18x + x² */
-        polynomial<float> p { 81.f, -18.f, 1.f };
-        auto roots1 = p.roots();
-
-        lolunit_assert_equal(roots1.count(), 1);
-        lolunit_assert_equal(roots1[0], 9.f);
-
-        /* p(x) = 42 - 20x + 2x² */
-        polynomial<float> q { 42.f, -20.f, 2.f };
-        auto roots2 = q.roots();
-
-        lolunit_assert_equal(roots2.count(), 2);
-        lolunit_assert_equal(roots2[0], 3.f);
-        lolunit_assert_equal(roots2[1], 7.f);
-    }
-
-    lolunit_declare_test(degree_3_triple_root)
-    {
-        polynomial<float> p { 1.f, 3.f, 3.f, 1.f };
-        auto roots1 = p.roots();
-
-        lolunit_assert_equal(roots1.count(), 1);
-        lolunit_assert_doubles_equal(roots1[0], -1, 0);
-    }
-
-    lolunit_declare_test(degree_3_double_root)
-    {
-        polynomial<float> p { 2.f, 5.f, 4.f, 1.f };
-        auto roots1 = p.roots();
-
-        // Should have 2 solutions only, but precision leads to 3 solutions
-        lolunit_assert_equal(roots1.count(), 2);
-        lolunit_assert_doubles_equal(roots1[0], -1, 1e-6);
-        lolunit_assert_doubles_equal(roots1[1], -2, 1e-6);
-    }
-
-    lolunit_declare_test(degree_3_three_roots)
-    {
-        polynomial<float> p { 6.f, 11.f, 6.f, 1.f };
-        auto roots1 = p.roots();
-
-        lolunit_assert_equal(roots1.count(), 3);
-        lolunit_assert_doubles_equal(roots1[0], -1, 1e-8);
-        lolunit_assert_doubles_equal(roots1[1], -3, 1e-8);
-        lolunit_assert_doubles_equal(roots1[2], -2, 1e-8);
-    }
-
-    lolunit_declare_test(degree_3_three_large_roots)
-    {
-        polynomial<float> p { -12000.f, 1000.f - 1200.f - 120.f, 100.f + 10.0f - 12.f, 1.f };
-        auto roots1 = p.roots();
-
-        lolunit_assert_equal(roots1.count(), 3);
-
-        lolunit_assert_doubles_equal(roots1[0], 12, 1e-5);
-        lolunit_assert_doubles_equal(roots1[1], -100, 1e-5);
-        lolunit_assert_doubles_equal(roots1[2], -10, 1e-5);
-    }
-
-    lolunit_declare_test(chebyshev)
-    {
-        polynomial<float> t0 = polynomial<float>::chebyshev(0);
-        polynomial<float> t1 = polynomial<float>::chebyshev(1);
-        polynomial<float> t2 = polynomial<float>::chebyshev(2);
-        polynomial<float> t3 = polynomial<float>::chebyshev(3);
-        polynomial<float> t4 = polynomial<float>::chebyshev(4);
-
-        /* Taken from the sequence at http://oeis.org/A028297 */
-        lolunit_assert_equal(t0.degree(), 0);
-        lolunit_assert_equal(t0[0], 1.f);
-
-        lolunit_assert_equal(t1.degree(), 1);
-        lolunit_assert_equal(t1[0], 0.f);
-        lolunit_assert_equal(t1[1], 1.f);
-
-        lolunit_assert_equal(t2.degree(), 2);
-        lolunit_assert_equal(t2[0], -1.f);
-        lolunit_assert_equal(t2[1], 0.f);
-        lolunit_assert_equal(t2[2], 2.f);
-
-        lolunit_assert_equal(t3.degree(), 3);
-        lolunit_assert_equal(t3[0], 0.f);
-        lolunit_assert_equal(t3[1], -3.f);
-        lolunit_assert_equal(t3[2], 0.f);
-        lolunit_assert_equal(t3[3], 4.f);
-
-        lolunit_assert_equal(t4.degree(), 4);
-        lolunit_assert_equal(t4[0], 1.f);
-        lolunit_assert_equal(t4[1], 0.f);
-        lolunit_assert_equal(t4[2], -8.f);
-        lolunit_assert_equal(t4[3], 0.f);
-        lolunit_assert_equal(t4[4], 8.f);
-    }
-};
-
-} /* namespace lol */
-
diff --git a/src/t/math/quat.cpp b/src/t/math/quat.cpp
deleted file mode 100644
index 0250a86f..00000000
--- a/src/t/math/quat.cpp
+++ /dev/null
@@ -1,540 +0,0 @@
-//
-//  Lol Engine — Unit tests for quaternions
-//
-//  Copyright © 2010—2015 Sam Hocevar <sam@hocevar.net>
-//
-//  Lol Engine is free software. It comes without any warranty, to
-//  the extent permitted by applicable law. You can redistribute it
-//  and/or modify it under the terms of the Do What the Fuck You Want
-//  to Public License, Version 2, as published by the WTFPL Task Force.
-//  See http://www.wtfpl.net/ for more details.
-//
-
-#include <lol/engine-internal.h>
-
-#include <lolunit.h>
-
-namespace lol
-{
-
-lolunit_declare_fixture(quaternion_test)
-{
-    void setup()
-    {
-        /* Generate identity quaternions */
-        m_vectorpairs.push(vec3::axis_x, vec3::axis_x);
-        m_vectorpairs.push(2.f * vec3::axis_x, 3.f * vec3::axis_x);
-
-        /* Generate 90-degree rotations */
-        m_vectorpairs.push(vec3::axis_x, vec3::axis_y);
-        m_vectorpairs.push(2.f * vec3::axis_x, 3.f * vec3::axis_y);
-
-        /* Generate 180-degree rotations */
-        m_vectorpairs.push(vec3::axis_x, -vec3::axis_x);
-        m_vectorpairs.push(2.f * vec3::axis_x, -3.f * vec3::axis_x);
-
-        /* Fill array with random test values */
-        for (int i = 0; i < 10000; ++i)
-        {
-            vec3 v1 = lol::pow(10.f, rand(-5.f, 5.f))
-                    * vec3(rand(-1.f, 1.f), rand(-1.f, 1.f), rand(-1.f, 1.f));
-            vec3 v2 = lol::pow(10.f, rand(-5.f, 5.f))
-                    * vec3(rand(-1.f, 1.f), rand(-1.f, 1.f), rand(-1.f, 1.f));
-            m_vectorpairs.push(v1, v2);
-        }
-    }
-
-    lolunit_declare_test(equality)
-    {
-        quat a4(1.f, 2.f, 3.f, 4.f);
-        quat b4(0.f, 2.f, 3.f, 4.f);
-        quat c4(1.f, 0.f, 3.f, 4.f);
-        quat d4(1.f, 2.f, 0.f, 4.f);
-        quat e4(1.f, 2.f, 3.f, 0.f);
-
-        lolunit_assert_equal(a4, a4);
-        lolunit_refute_different(a4, a4);
-
-        lolunit_assert_different(a4, b4);
-        lolunit_refute_equal(a4, b4);
-        lolunit_assert_different(a4, c4);
-        lolunit_refute_equal(a4, c4);
-        lolunit_assert_different(a4, d4);
-        lolunit_refute_equal(a4, d4);
-        lolunit_assert_different(a4, e4);
-        lolunit_refute_equal(a4, e4);
-    }
-
-    lolunit_declare_test(unary_minus)
-    {
-        quat a(1.f, 3.f, 2.f, 4.f);
-        quat b(-1.f, -3.f, -2.f, -4.f);
-
-        lolunit_assert_equal(a, -b);
-        lolunit_assert_equal(-a, b);
-    }
-
-    lolunit_declare_test(conjugate)
-    {
-        quat a(1.f, 3.f, 2.f, 4.f);
-        quat b(1.f, -3.f, -2.f, -4.f);
-
-        lolunit_assert_equal(a, ~b);
-        lolunit_assert_equal(~a, b);
-    }
-
-    lolunit_declare_test(quaternion_norm)
-    {
-        quat a(2.f, -2.f, -8.f, 3.f);
-
-        lolunit_assert_equal(norm(a), 9.f);
-
-        quat b = a * ~a;
-        quat c(norm(a) * norm(a), 0.f, 0.f, 0.f);
-
-        lolunit_assert_equal(b, c);
-
-        quat d(2.f, 5.f, -4.f, -2.f);
-
-        lolunit_assert_equal(norm(a * d), norm(a) * norm(d));
-    }
-
-    lolunit_declare_test(quaternion_dot)
-    {
-        quat a(-1.f, 2.f, -3.f, 4.f);
-        quat b(8.f, 7.f, 6.f, 5.f);
-
-        lolunit_assert_equal(dot(a, b), 8.f);
-    }
-
-    lolunit_declare_test(base)
-    {
-        quat one(1.f, 0.f, 0.f, 0.f);
-        quat i(0.f, 1.f, 0.f, 0.f);
-        quat j(0.f, 0.f, 1.f, 0.f);
-        quat k(0.f, 0.f, 0.f, 1.f);
-
-        lolunit_assert_equal(norm(one), 1.f);
-        lolunit_assert_equal(norm(i), 1.f);
-        lolunit_assert_equal(norm(j), 1.f);
-        lolunit_assert_equal(norm(k), 1.f);
-
-        lolunit_assert_equal(i * i, -one);
-        lolunit_assert_equal(j * j, -one);
-        lolunit_assert_equal(k * k, -one);
-        lolunit_assert_equal(i * j * k, -one);
-
-        lolunit_assert_equal(i * j, k);
-        lolunit_assert_equal(j * i, -k);
-        lolunit_assert_equal(j * k, i);
-        lolunit_assert_equal(k * j, -i);
-        lolunit_assert_equal(k * i, j);
-        lolunit_assert_equal(i * k, -j);
-    }
-
-    lolunit_declare_test(quaternion_normalize)
-    {
-        quat a(2.f, -2.f, -8.f, 3.f);
-        quat b = normalize(a);
-
-        lolunit_assert_doubles_equal(norm(b), 1.0, 1e-5);
-    }
-
-    lolunit_declare_test(quaternion_inverse)
-    {
-        quat a(2.f, -2.f, -8.f, 3.f);
-        quat b = inverse(a);
-        quat c = 1.f / a;
-
-        lolunit_assert_doubles_equal(b.w, c.w, 1e-5);
-        lolunit_assert_doubles_equal(b.x, c.x, 1e-5);
-        lolunit_assert_doubles_equal(b.y, c.y, 1e-5);
-        lolunit_assert_doubles_equal(b.z, c.z, 1e-5);
-
-        quat m1 = a * b;
-        quat m2 = b * a;
-        lolunit_assert_doubles_equal(m1.w, m2.w, 1e-5);
-        lolunit_assert_doubles_equal(m1.x, m2.x, 1e-5);
-        lolunit_assert_doubles_equal(m1.y, m2.y, 1e-5);
-        lolunit_assert_doubles_equal(m1.z, m2.z, 1e-5);
-
-        lolunit_assert_doubles_equal(m1.w, 1.0, 1e-5);
-        lolunit_assert_doubles_equal(m1.x, 0.0, 1e-5);
-        lolunit_assert_doubles_equal(m1.y, 0.0, 1e-5);
-        lolunit_assert_doubles_equal(m1.z, 0.0, 1e-5);
-    }
-
-    lolunit_declare_test(rotation)
-    {
-        /* Check that rotating 1 radian twice means rotating 2 radians */
-        quat a = quat::rotate(1.f, vec3::axis_x);
-        quat b = quat::rotate(2.f, vec3::axis_x);
-        quat c = a * a;
-
-        lolunit_assert_doubles_equal(c.w, b.w, 1e-5);
-        lolunit_assert_doubles_equal(c.x, b.x, 1e-5);
-        lolunit_assert_doubles_equal(c.y, b.y, 1e-5);
-        lolunit_assert_doubles_equal(c.z, b.z, 1e-5);
-
-        /* Check that rotating 1 radian then 2 is the same as 2 then 1 */
-        quat d = a * b;
-        quat e = b * a;
-
-        lolunit_assert_doubles_equal(e.w, d.w, 1e-5);
-        lolunit_assert_doubles_equal(e.x, d.x, 1e-5);
-        lolunit_assert_doubles_equal(e.y, d.y, 1e-5);
-        lolunit_assert_doubles_equal(e.z, d.z, 1e-5);
-    }
-
-    lolunit_declare_test(to_axis_angle)
-    {
-        quat q = quat::rotate(0.3f, vec3::axis_x);
-        vec3 axis = q.axis();
-        float angle = q.angle();
-
-        lolunit_assert_doubles_equal(1.0, axis.x, 1e-6);
-        lolunit_assert_doubles_equal(0.0, axis.y, 1e-6);
-        lolunit_assert_doubles_equal(0.0, axis.z, 1e-6);
-
-        lolunit_assert_doubles_equal(0.3f, (double)angle, 1e-6);
-    }
-
-    lolunit_declare_test(from_two_vectors)
-    {
-        for (auto pair : m_vectorpairs)
-        {
-            vec3 a = pair.m1;
-            vec3 b = pair.m2;
-            vec3 da = normalize(a);
-            vec3 db = normalize(b);
-
-            quat q = quat::rotate(a, b);
-
-            /* Check that q is a unit quaternion */
-            lolunit_assert_doubles_equal(1.0, (double)norm(q), 1e-5);
-
-            /* Check that q transforms da into db */
-            vec3 c = q.transform(da);
-
-            lolunit_assert_doubles_equal(c.x, db.x, 1e-5);
-            lolunit_assert_doubles_equal(c.y, db.y, 1e-5);
-            lolunit_assert_doubles_equal(c.z, db.z, 1e-5);
-
-            /* Check that ~q transforms db into da */
-            vec3 d = (~q).transform(db);
-
-            lolunit_assert_doubles_equal(d.x, da.x, 1e-5);
-            lolunit_assert_doubles_equal(d.y, da.y, 1e-5);
-            lolunit_assert_doubles_equal(d.z, da.z, 1e-5);
-
-            if (distance(da, db) > 1e-6f)
-            {
-                /* If da and db differ, check that the rotation axis is normal to both
-                 * vectors, which is only true if the rotation uses the shortest path. */
-                vec3 axis = q.axis();
-                lolunit_assert_doubles_equal(0.0, (double)dot(axis, da), 1e-5);
-                lolunit_assert_doubles_equal(0.0, (double)dot(axis, db), 1e-5);
-            }
-            else
-            {
-                /* If da and db are roughly the same, check that the rotation angle
-                 * is zero. */
-                lolunit_assert_doubles_equal(0.0, (double)q.angle(), 1e-5);
-            }
-        }
-    }
-
-    lolunit_declare_test(from_euler_norm)
-    {
-        for (int i = 0; i < 100; ++i)
-        {
-            vec3 angles(rand(100.f), rand(100.f), rand(100.f));
-
-            /* Tait-Bryan */
-            quat q1 = quat::fromeuler_xyz(angles);
-            lolunit_assert_doubles_equal(norm(q1), 1.f, 1e-5);
-
-            quat q2 = quat::fromeuler_yzx(angles);
-            lolunit_assert_doubles_equal(norm(q2), 1.f, 1e-5);
-
-            quat q3 = quat::fromeuler_zxy(angles);
-            lolunit_assert_doubles_equal(norm(q3), 1.f, 1e-5);
-
-            quat q4 = quat::fromeuler_xzy(angles);
-            lolunit_assert_doubles_equal(norm(q4), 1.f, 1e-5);
-
-            quat q5 = quat::fromeuler_zyx(angles);
-            lolunit_assert_doubles_equal(norm(q5), 1.f, 1e-5);
-
-            quat q6 = quat::fromeuler_yxz(angles);
-            lolunit_assert_doubles_equal(norm(q6), 1.f, 1e-5);
-
-            /* Euler */
-            quat q7 = quat::fromeuler_xyx(angles);
-            lolunit_assert_doubles_equal(norm(q7), 1.f, 1e-5);
-
-            quat q8 = quat::fromeuler_yzy(angles);
-            lolunit_assert_doubles_equal(norm(q8), 1.f, 1e-5);
-
-            quat q9 = quat::fromeuler_zxz(angles);
-            lolunit_assert_doubles_equal(norm(q9), 1.f, 1e-5);
-
-            quat q10 = quat::fromeuler_xzx(angles);
-            lolunit_assert_doubles_equal(norm(q10), 1.f, 1e-5);
-
-            quat q11 = quat::fromeuler_zyz(angles);
-            lolunit_assert_doubles_equal(norm(q11), 1.f, 1e-5);
-
-            quat q12 = quat::fromeuler_yxy(angles);
-            lolunit_assert_doubles_equal(norm(q12), 1.f, 1e-5);
-        }
-    }
-
-    lolunit_declare_test(first_two_euler_angles)
-    {
-        for (int i = 0; i < 100; ++i)
-        {
-            /* We check that fromeuler_xyx and fromeuler_xyz give the
-             * same result if the 3rd angle is zero. */
-            vec3 angles(rand(radians(360.f)), rand(radians(360.f)), 0.f);
-            quat q1, q2;
-
-            q1 = quat::fromeuler_xyz(angles);
-            q2 = quat::fromeuler_xyx(angles);
-
-            lolunit_assert_doubles_equal(q1.w, q2.w, 1e-5);
-            lolunit_assert_doubles_equal(q1.x, q2.x, 1e-5);
-            lolunit_assert_doubles_equal(q1.y, q2.y, 1e-5);
-            lolunit_assert_doubles_equal(q1.z, q2.z, 1e-5);
-
-            q1 = quat::fromeuler_yzx(angles);
-            q2 = quat::fromeuler_yzy(angles);
-
-            lolunit_assert_doubles_equal(q1.w, q2.w, 1e-5);
-            lolunit_assert_doubles_equal(q1.x, q2.x, 1e-5);
-            lolunit_assert_doubles_equal(q1.y, q2.y, 1e-5);
-            lolunit_assert_doubles_equal(q1.z, q2.z, 1e-5);
-
-            q1 = quat::fromeuler_zxy(angles);
-            q2 = quat::fromeuler_zxz(angles);
-
-            lolunit_assert_doubles_equal(q1.w, q2.w, 1e-5);
-            lolunit_assert_doubles_equal(q1.x, q2.x, 1e-5);
-            lolunit_assert_doubles_equal(q1.y, q2.y, 1e-5);
-            lolunit_assert_doubles_equal(q1.z, q2.z, 1e-5);
-
-            q1 = quat::fromeuler_xzy(angles);
-            q2 = quat::fromeuler_xzx(angles);
-
-            lolunit_assert_doubles_equal(q1.w, q2.w, 1e-5);
-            lolunit_assert_doubles_equal(q1.x, q2.x, 1e-5);
-            lolunit_assert_doubles_equal(q1.y, q2.y, 1e-5);
-            lolunit_assert_doubles_equal(q1.z, q2.z, 1e-5);
-
-            q1 = quat::fromeuler_zyx(angles);
-            q2 = quat::fromeuler_zyz(angles);
-
-            lolunit_assert_doubles_equal(q1.w, q2.w, 1e-5);
-            lolunit_assert_doubles_equal(q1.x, q2.x, 1e-5);
-            lolunit_assert_doubles_equal(q1.y, q2.y, 1e-5);
-            lolunit_assert_doubles_equal(q1.z, q2.z, 1e-5);
-
-            q1 = quat::fromeuler_yxz(angles);
-            q2 = quat::fromeuler_yxy(angles);
-
-            lolunit_assert_doubles_equal(q1.w, q2.w, 1e-5);
-            lolunit_assert_doubles_equal(q1.x, q2.x, 1e-5);
-            lolunit_assert_doubles_equal(q1.y, q2.y, 1e-5);
-            lolunit_assert_doubles_equal(q1.z, q2.z, 1e-5);
-        }
-    }
-
-    lolunit_declare_test(last_two_euler_angles)
-    {
-        for (int i = 0; i < 100; ++i)
-        {
-            /* We check that fromeuler_zyz and fromeuler_xyz give the
-             * same result if the 1st angle is zero. */
-            vec3 angles(0.f, rand(radians(360.f)), rand(radians(360.f)));
-            quat q1, q2;
-
-            q1 = quat::fromeuler_xyz(angles);
-            q2 = quat::fromeuler_zyz(angles);
-
-            lolunit_assert_doubles_equal(q1.w, q2.w, 1e-5);
-            lolunit_assert_doubles_equal(q1.x, q2.x, 1e-5);
-            lolunit_assert_doubles_equal(q1.y, q2.y, 1e-5);
-            lolunit_assert_doubles_equal(q1.z, q2.z, 1e-5);
-
-            q1 = quat::fromeuler_yzx(angles);
-            q2 = quat::fromeuler_xzx(angles);
-
-            lolunit_assert_doubles_equal(q1.w, q2.w, 1e-5);
-            lolunit_assert_doubles_equal(q1.x, q2.x, 1e-5);
-            lolunit_assert_doubles_equal(q1.y, q2.y, 1e-5);
-            lolunit_assert_doubles_equal(q1.z, q2.z, 1e-5);
-
-            q1 = quat::fromeuler_zxy(angles);
-            q2 = quat::fromeuler_yxy(angles);
-
-            lolunit_assert_doubles_equal(q1.w, q2.w, 1e-5);
-            lolunit_assert_doubles_equal(q1.x, q2.x, 1e-5);
-            lolunit_assert_doubles_equal(q1.y, q2.y, 1e-5);
-            lolunit_assert_doubles_equal(q1.z, q2.z, 1e-5);
-
-            q1 = quat::fromeuler_xzy(angles);
-            q2 = quat::fromeuler_yzy(angles);
-
-            lolunit_assert_doubles_equal(q1.w, q2.w, 1e-5);
-            lolunit_assert_doubles_equal(q1.x, q2.x, 1e-5);
-            lolunit_assert_doubles_equal(q1.y, q2.y, 1e-5);
-            lolunit_assert_doubles_equal(q1.z, q2.z, 1e-5);
-
-            q1 = quat::fromeuler_zyx(angles);
-            q2 = quat::fromeuler_xyx(angles);
-
-            lolunit_assert_doubles_equal(q1.w, q2.w, 1e-5);
-            lolunit_assert_doubles_equal(q1.x, q2.x, 1e-5);
-            lolunit_assert_doubles_equal(q1.y, q2.y, 1e-5);
-            lolunit_assert_doubles_equal(q1.z, q2.z, 1e-5);
-
-            q1 = quat::fromeuler_yxz(angles);
-            q2 = quat::fromeuler_zxz(angles);
-
-            lolunit_assert_doubles_equal(q1.w, q2.w, 1e-5);
-            lolunit_assert_doubles_equal(q1.x, q2.x, 1e-5);
-            lolunit_assert_doubles_equal(q1.y, q2.y, 1e-5);
-            lolunit_assert_doubles_equal(q1.z, q2.z, 1e-5);
-        }
-    }
-
-    lolunit_declare_test(tait_bryan_angles)
-    {
-        for (int i = 0; i < 100; ++i)
-        {
-            /* Pick a random point and a random quaternion. We want
-             * to check whether going to Tait-Bryan angles and back to
-             * quaternion creates the same transform. */
-            vec3 p(rand(1.f, 2.f), rand(1.f, 2.f), rand(1.f, 2.f));
-            quat q0 = normalize(quat(rand(-1.f, 1.f), rand(-1.f, 1.f),
-                                     rand(-1.f, 1.f), rand(-1.f, 1.f)));
-            vec3 p0 = q0.transform(p);
-
-            /* x-y-z */
-            quat q1 = quat::fromeuler_xyz(vec3::toeuler_xyz(q0));
-            vec3 p1 = q1.transform(p);
-
-            lolunit_assert_doubles_equal(p1.x, p0.x, 1e-4);
-            lolunit_assert_doubles_equal(p1.y, p0.y, 1e-4);
-            lolunit_assert_doubles_equal(p1.z, p0.z, 1e-4);
-
-            /* y-z-x */
-            q1 = quat::fromeuler_yzx(vec3::toeuler_yzx(q0));
-            p1 = q1.transform(p);
-
-            lolunit_assert_doubles_equal(p1.x, p0.x, 1e-4);
-            lolunit_assert_doubles_equal(p1.y, p0.y, 1e-4);
-            lolunit_assert_doubles_equal(p1.z, p0.z, 1e-4);
-
-            /* z-x-y */
-            q1 = quat::fromeuler_zxy(vec3::toeuler_zxy(q0));
-            p1 = q1.transform(p);
-
-            lolunit_assert_doubles_equal(p1.x, p0.x, 1e-4);
-            lolunit_assert_doubles_equal(p1.y, p0.y, 1e-4);
-            lolunit_assert_doubles_equal(p1.z, p0.z, 1e-4);
-
-            /* x-z-y */
-            q1 = quat::fromeuler_xzy(vec3::toeuler_xzy(q0));
-            p1 = q1.transform(p);
-
-            lolunit_assert_doubles_equal(p1.x, p0.x, 1e-4);
-            lolunit_assert_doubles_equal(p1.y, p0.y, 1e-4);
-            lolunit_assert_doubles_equal(p1.z, p0.z, 1e-4);
-
-            /* z-y-x */
-            q1 = quat::fromeuler_zyx(vec3::toeuler_zyx(q0));
-            p1 = q1.transform(p);
-
-            lolunit_assert_doubles_equal(p1.x, p0.x, 1e-4);
-            lolunit_assert_doubles_equal(p1.y, p0.y, 1e-4);
-            lolunit_assert_doubles_equal(p1.z, p0.z, 1e-4);
-
-            /* y-x-z */
-            q1 = quat::fromeuler_yxz(vec3::toeuler_yxz(q0));
-            p1 = q1.transform(p);
-
-            lolunit_assert_doubles_equal(p1.x, p0.x, 1e-4);
-            lolunit_assert_doubles_equal(p1.y, p0.y, 1e-4);
-            lolunit_assert_doubles_equal(p1.z, p0.z, 1e-4);
-        }
-    }
-
-    lolunit_declare_test(euler_angles)
-    {
-        for (int i = 0; i < 100; ++i)
-        {
-            /* Pick a random point and a random quaternion. We want
-             * to check whether going to Euler angles and back to
-             * quaternion creates the same transform. */
-            vec3 p(rand(1.f, 2.f), rand(1.f, 2.f), rand(1.f, 2.f));
-            quat q0 = normalize(quat(rand(-1.f, 1.f), rand(-1.f, 1.f),
-                                     rand(-1.f, 1.f), rand(-1.f, 1.f)));
-            vec3 p0 = q0.transform(p);
-
-            /* x-y-x */
-            quat q1 = quat::fromeuler_xyx(vec3::toeuler_xyx(q0));
-            vec3 p1 = q1.transform(p);
-
-            lolunit_assert_doubles_equal(p1.x, p0.x, 1e-4);
-            lolunit_assert_doubles_equal(p1.y, p0.y, 1e-4);
-            lolunit_assert_doubles_equal(p1.z, p0.z, 1e-4);
-
-            /* y-z-y */
-            q1 = quat::fromeuler_yzy(vec3::toeuler_yzy(q0));
-            p1 = q1.transform(p);
-
-            lolunit_assert_doubles_equal(p1.x, p0.x, 1e-4);
-            lolunit_assert_doubles_equal(p1.y, p0.y, 1e-4);
-            lolunit_assert_doubles_equal(p1.z, p0.z, 1e-4);
-
-            /* z-x-z */
-            q1 = quat::fromeuler_zxz(vec3::toeuler_zxz(q0));
-            p1 = q1.transform(p);
-
-            lolunit_assert_doubles_equal(p1.x, p0.x, 1e-4);
-            lolunit_assert_doubles_equal(p1.y, p0.y, 1e-4);
-            lolunit_assert_doubles_equal(p1.z, p0.z, 1e-4);
-
-            /* x-z-x */
-            q1 = quat::fromeuler_xzx(vec3::toeuler_xzx(q0));
-            p1 = q1.transform(p);
-
-            lolunit_assert_doubles_equal(p1.x, p0.x, 1e-4);
-            lolunit_assert_doubles_equal(p1.y, p0.y, 1e-4);
-            lolunit_assert_doubles_equal(p1.z, p0.z, 1e-4);
-
-            /* z-y-z */
-            q1 = quat::fromeuler_zyz(vec3::toeuler_zyz(q0));
-            p1 = q1.transform(p);
-
-            lolunit_assert_doubles_equal(p1.x, p0.x, 1e-4);
-            lolunit_assert_doubles_equal(p1.y, p0.y, 1e-4);
-            lolunit_assert_doubles_equal(p1.z, p0.z, 1e-4);
-
-            /* y-x-y */
-            q1 = quat::fromeuler_yxy(vec3::toeuler_yxy(q0));
-            p1 = q1.transform(p);
-
-            lolunit_assert_doubles_equal(p1.x, p0.x, 1e-4);
-            lolunit_assert_doubles_equal(p1.y, p0.y, 1e-4);
-            lolunit_assert_doubles_equal(p1.z, p0.z, 1e-4);
-        }
-    }
-
-private:
-    array<vec3, vec3> m_vectorpairs;
-};
-
-} /* namespace lol */
-
diff --git a/src/t/math/rand.cpp b/src/t/math/rand.cpp
deleted file mode 100644
index 496a1f9d..00000000
--- a/src/t/math/rand.cpp
+++ /dev/null
@@ -1,111 +0,0 @@
-//
-//  Lol Engine — Unit tests
-//
-//  Copyright © 2010—2015 Sam Hocevar <sam@hocevar.net>
-//
-//  Lol Engine is free software. It comes without any warranty, to
-//  the extent permitted by applicable law. You can redistribute it
-//  and/or modify it under the terms of the Do What the Fuck You Want
-//  to Public License, Version 2, as published by the WTFPL Task Force.
-//  See http://www.wtfpl.net/ for more details.
-//
-
-#include <lol/engine-internal.h>
-
-#include <lolunit.h>
-
-namespace lol
-{
-
-lolunit_declare_fixture(rand_test)
-{
-    lolunit_declare_test(int32_bits)
-    {
-        int const rolls = 2000;
-
-        int bits[32];
-        memset(bits, 0, sizeof(bits));
-
-        for (int i = 0; i < rolls; ++i)
-        {
-            int32_t r = rand<int32_t>();
-
-            lolunit_assert_gequal(r, 0);
-
-            for (int k = 0; k < 31; k++)
-            {
-                bits[k] += r & 1;
-                r >>= 1;
-            }
-        }
-
-        for (int k = 0; k < 31; k++)
-        {
-            lolunit_set_context(k);
-            lolunit_assert_gequal(bits[k], rolls / 3);
-            lolunit_assert_lequal(bits[k], rolls * 2 / 3);
-            lolunit_unset_context(k);
-        }
-    }
-
-    lolunit_declare_test(int16_bits)
-    {
-        int const rolls = 2000;
-
-        int bits[16];
-        memset(bits, 0, sizeof(bits));
-
-        for (int i = 0; i < rolls; ++i)
-        {
-            int16_t r = rand<int16_t>();
-
-            lolunit_assert_gequal(r, 0);
-
-            for (int k = 0; k < 15; k++)
-            {
-                bits[k] += r & 1;
-                r >>= 1;
-            }
-        }
-
-        for (int k = 0; k < 15; k++)
-        {
-            lolunit_set_context(k);
-            lolunit_assert_gequal(bits[k], rolls / 3);
-            lolunit_assert_lequal(bits[k], rolls * 2 / 3);
-            lolunit_unset_context(k);
-        }
-    }
-
-    lolunit_declare_test(int8_bits)
-    {
-        int const rolls = 2000;
-
-        int bits[8];
-        memset(bits, 0, sizeof(bits));
-
-        for (int i = 0; i < rolls; ++i)
-        {
-            int8_t r = rand<int8_t>();
-
-            lolunit_assert_gequal(r, 0);
-
-            for (int k = 0; k < 7; k++)
-            {
-                bits[k] += r & 1;
-                r >>= 1;
-            }
-        }
-
-        for (int k = 0; k < 7; k++)
-        {
-            lolunit_set_context(k);
-            lolunit_assert_gequal(bits[k], rolls / 3);
-            lolunit_assert_lequal(bits[k], rolls * 2 / 3);
-            lolunit_unset_context(k);
-        }
-    }
-};
-
-} /* namespace lol */
-
diff --git a/src/t/math/real.cpp b/src/t/math/real.cpp
deleted file mode 100644
index e7235e99..00000000
--- a/src/t/math/real.cpp
+++ /dev/null
@@ -1,489 +0,0 @@
-//
-//  Lol Engine — Unit tests
-//
-//  Copyright © 2010—2019 Sam Hocevar <sam@hocevar.net>
-//
-//  Lol Engine is free software. It comes without any warranty, to
-//  the extent permitted by applicable law. You can redistribute it
-//  and/or modify it under the terms of the Do What the Fuck You Want
-//  to Public License, Version 2, as published by the WTFPL Task Force.
-//  See http://www.wtfpl.net/ for more details.
-//
-
-#include <lol/engine-internal.h>
-
-#include <cmath>
-
-#include <lolunit.h>
-
-namespace lol
-{
-
-lolunit_declare_fixture(real_test)
-{
-    lolunit_declare_test(float_to_real)
-    {
-        float a1 = real(0.0f);
-        float a2 = real(-0.0f);
-        float a3 = real(1.0f);
-        float a4 = real(-1.0f);
-        float a5 = real(1.5f);
-        float a6 = real(12345678.0f);
-
-        lolunit_assert_equal(a1, 0.0f);
-        lolunit_assert_equal(a2, -0.0f);
-        lolunit_assert_equal(a3, 1.0f);
-        lolunit_assert_equal(a4, -1.0f);
-        lolunit_assert_equal(a5, 1.5f);
-        lolunit_assert_equal(a6, 12345678.0f);
-    }
-
-    lolunit_declare_test(double_to_real)
-    {
-        double a1 = real(0.0);
-        double a2 = real(-0.0);
-        double a3 = real(1.0);
-        double a4 = real(-1.0);
-        double a5 = real(1.5);
-        double a6 = real(1234567876543210.0);
-
-        lolunit_assert_doubles_equal(a1, 0.0, 0.0);
-        lolunit_assert_doubles_equal(a2, -0.0, 0.0);
-        lolunit_assert_doubles_equal(a3, 1.0, 0.0);
-        lolunit_assert_doubles_equal(a4, -1.0, 0.0);
-        lolunit_assert_doubles_equal(a5, 1.5, 0.0);
-        lolunit_assert_doubles_equal(a6, 1234567876543210.0, 0.0);
-    }
-
-    lolunit_declare_test(long_double_to_real)
-    {
-        real r((long double)1 / 3);
-
-        // Count how many bits are correct
-        int ok_bits = 0;
-        while (int(r) == 0)
-        {
-            r = (r * 4) - 1;
-            ok_bits += 2;
-        }
-
-        // 64 bits means our precision is better than double
-        lolunit_assert_greater(ok_bits, 64);
-    }
-
-    lolunit_declare_test(uint32_to_real)
-    {
-        uint32_t a = 0;
-        uint32_t b = 1;
-        uint32_t c = UINT32_MAX;
-        uint32_t d = UINT32_MAX ^ (UINT32_MAX >> 1);
-        uint32_t e = UINT32_MAX ^ (UINT32_MAX >> 1) ^ 1;
-
-        lolunit_assert_equal(a, (uint32_t)(real)a);
-        lolunit_assert_equal(b, (uint32_t)(real)b);
-        lolunit_assert_equal(c, (uint32_t)(real)c);
-        lolunit_assert_equal(d, (uint32_t)(real)d);
-        lolunit_assert_equal(e, (uint32_t)(real)e);
-    }
-
-    lolunit_declare_test(int32_to_real)
-    {
-        int32_t a = 0;
-        int32_t b = 1;
-        int32_t c = -1;
-        int32_t d = INT32_MIN;
-        int32_t e = INT32_MAX;
-
-        lolunit_assert_equal(a, (int32_t)(real)a);
-        lolunit_assert_equal(b, (int32_t)(real)b);
-        lolunit_assert_equal(c, (int32_t)(real)c);
-        lolunit_assert_equal(d, (int32_t)(real)d);
-        lolunit_assert_equal(e, (int32_t)(real)e);
-    }
-
-    lolunit_declare_test(uint64_to_real)
-    {
-        uint64_t a = 0;
-        uint64_t b = 1;
-        uint64_t c = UINT64_MAX;
-        uint64_t d = UINT64_MAX ^ (UINT64_MAX >> 1);
-        uint64_t e = UINT64_MAX ^ (UINT64_MAX >> 1) ^ 1;
-
-        lolunit_assert_equal(a, (uint64_t)(real)a);
-        lolunit_assert_equal(b, (uint64_t)(real)b);
-        lolunit_assert_equal(c, (uint64_t)(real)c);
-        lolunit_assert_equal(d, (uint64_t)(real)d);
-        lolunit_assert_equal(e, (uint64_t)(real)e);
-    }
-
-    lolunit_declare_test(int64_to_real)
-    {
-        int64_t a = 0;
-        int64_t b = 1;
-        int64_t c = -1;
-        int64_t d = INT64_MIN;
-        int64_t e = INT64_MAX;
-
-        lolunit_assert_equal(a, (int64_t)(real)a);
-        lolunit_assert_equal(b, (int64_t)(real)b);
-        lolunit_assert_equal(c, (int64_t)(real)c);
-        lolunit_assert_equal(d, (int64_t)(real)d);
-        lolunit_assert_equal(e, (int64_t)(real)e);
-    }
-
-    lolunit_declare_test(constants)
-    {
-        double a0 = real::R_0();
-        double a1 = real::R_1();
-        double a2 = real::R_2();
-        double a10 = real::R_10();
-
-        lolunit_assert_equal(a0, 0.0);
-        lolunit_assert_equal(a1, 1.0);
-        lolunit_assert_equal(a2, 2.0);
-        lolunit_assert_equal(a10, 10.0);
-
-        double b1 = log(real::R_E());
-        double b2 = log2(real::R_2());
-        lolunit_assert_equal(b1, 1.0);
-        lolunit_assert_equal(b2, 1.0);
-
-        double c1 = exp(inverse(real::R_LOG2E()));
-        double c2 = log(exp2(real::R_LOG2E()));
-        lolunit_assert_equal(c1, 2.0);
-        lolunit_assert_equal(c2, 1.0);
-
-        double d1 = exp(inverse(real::R_LOG10E()));
-        lolunit_assert_equal(d1, 10.0);
-
-        double e1 = exp(real::R_LN2());
-        lolunit_assert_equal(e1, 2.0);
-
-        double f1 = exp(real::R_LN10());
-        lolunit_assert_equal(f1, 10.0);
-
-        double g1 = sin(real::R_PI());
-        double g2 = cos(real::R_PI());
-        lolunit_assert_doubles_equal(g1, 0.0, 1e-100);
-        lolunit_assert_equal(g2, -1.0);
-
-        double h1 = sin(real::R_PI_2());
-        double h2 = cos(real::R_PI_2());
-        lolunit_assert_equal(h1, 1.0);
-        lolunit_assert_doubles_equal(h2, 0.0, 1e-100);
-
-        double i1 = sin(real::R_PI_4()) * sin(real::R_PI_4());
-        double i2 = cos(real::R_PI_4()) * cos(real::R_PI_4());
-        lolunit_assert_equal(i1, 0.5);
-        lolunit_assert_equal(i2, 0.5);
-    }
-
-    lolunit_declare_test(init)
-    {
-        real r;
-        float f1 = (float)r;
-
-        lolunit_assert_equal(f1, 0.0f);
-
-        rcmplx q;
-        float f2 = (float)q.x;
-        float f3 = (float)q.y;
-
-        lolunit_assert_equal(f2, 0.0f);
-        lolunit_assert_equal(f3, 0.0f);
-    }
-
-    lolunit_declare_test(string_to_real)
-    {
-        float a1 = real("0");
-        float a2 = real("1");
-        float a3 = real("-1");
-        /* 2^-128 * 2^128 */
-        float a4 = real("0.0000000000000000000000000000000000000029387358770"
-                        "557187699218413430556141945466638919302188037718792"
-                        "6569604314863681793212890625")
-                 * real("340282366920938463463374607431768211456");
-
-        lolunit_assert_equal(a1, 0.0f);
-        lolunit_assert_equal(a2, 1.0f);
-        lolunit_assert_equal(a3, -1.0f);
-        lolunit_assert_equal(a4, 1.0f);
-    }
-
-    lolunit_declare_test(unary_minus)
-    {
-        float a1 = - real(1.0f);
-        float a2 = - real(-1.0f);
-        float a3 = - real(0.0f);
-        float a4 = - real(-0.0f);
-
-        lolunit_assert_equal(a1, -1.0f);
-        lolunit_assert_equal(a2, 1.0f);
-        lolunit_assert_equal(a3, -0.0f);
-        lolunit_assert_equal(a4, 0.0f);
-    }
-
-    lolunit_declare_test(comparison)
-    {
-        lolunit_assert(real(1.0f) > real(0.5f));
-        lolunit_assert(real(1.0f) >= real(0.5f));
-        lolunit_assert(real(1.0f) >= real(1.0f));
-
-        lolunit_assert(real(-1.0f) < real(-0.5f));
-        lolunit_assert(real(-1.0f) <= real(-0.5f));
-        lolunit_assert(real(-1.0f) <= real(-1.0f));
-
-        lolunit_assert(real(-1.0f) < real(0.5f));
-        lolunit_assert(real(-0.5f) < real(1.0f));
-        lolunit_assert(real(-1.0f) <= real(0.5f));
-        lolunit_assert(real(-0.5f) <= real(1.0f));
-
-        lolunit_assert(real(1.0f) > real(-0.5f));
-        lolunit_assert(real(0.5f) > real(-1.0f));
-        lolunit_assert(real(1.0f) >= real(-0.5f));
-        lolunit_assert(real(0.5f) >= real(-1.0f));
-    }
-
-    lolunit_declare_test(addition)
-    {
-        float a1 = real(1.0f) + real(0.0f);
-        float a2 = real(0.0f) + real(1.0f);
-        float a3 = real(1.0f) + real(1.0f);
-        float a4 = real(-1.0f) + real(-1.0f);
-        float a5 = real(1.0f) + real(0.125f);
-        double a6 = real(3.13609818956293918)
-                  + real(0.00005972154828114);
-        float a7 = real(1.0f) + real(-0.125f);
-        double a8 = real(0.10000000002) + real(-2.0e-11);
-
-        lolunit_assert_equal(a1, 1.0f);
-        lolunit_assert_equal(a2, 1.0f);
-        lolunit_assert_equal(a3, 2.0f);
-        lolunit_assert_equal(a4, -2.0f);
-        lolunit_assert_equal(a5, 1.125f);
-        lolunit_assert_doubles_equal(a6, 3.1361579, 0.000001);
-        lolunit_assert_equal(a7, 0.875f);
-        lolunit_assert_doubles_equal(a8, 0.1, 1.0e-13);
-    }
-
-    lolunit_declare_test(subtraction)
-    {
-        float a1 = real(1.0f) + real(1e20f) - real(1e20f);
-
-        lolunit_assert_equal(a1, 1.0f);
-    }
-
-    lolunit_declare_test(multiplication)
-    {
-        real x(1.25f);
-        real y(1.5f);
-        real z(1.99999f);
-        real w(-1.5f);
-
-        float m1 = x * x;
-        float m2 = y * y;
-        float m3 = z * z;
-        float m4 = w * w;
-
-        lolunit_assert_equal(m1, 1.25f * 1.25f);
-        lolunit_assert_equal(m2, 1.5f * 1.5f);
-        lolunit_assert_equal(m3, 1.99999f * 1.99999f);
-        lolunit_assert_equal(m4, -1.5f * -1.5f);
-    }
-
-    lolunit_declare_test(exact_division)
-    {
-        float m1 = real::R_1() / real::R_1();
-        float m2 = real::R_2() / real::R_1();
-        float m3 = real::R_1() / real::R_2();
-        float m4 = real::R_2() / real::R_2();
-        float m5 = real::R_1() / -real::R_2();
-
-        lolunit_assert_equal(m1, 1.0f);
-        lolunit_assert_equal(m2, 2.0f);
-        lolunit_assert_equal(m3, 0.5f);
-        lolunit_assert_equal(m4, 1.0f);
-        lolunit_assert_equal(m5, -0.5f);
-    }
-
-    lolunit_declare_test(inexact_division)
-    {
-        /* 1 / 3 * 3 should be close to 1... check that it does not differ
-         * by more than 2^-k where k is the number of bits in the mantissa. */
-        real a = real::R_1() / real::R_3() * real::R_3();
-        real b = ldexp(real::R_1() - a, a.total_bits());
-
-        lolunit_assert_lequal((double)fabs(b), 1.0);
-    }
-
-    lolunit_declare_test(real_sqrt)
-    {
-        double sqrt0 = sqrt(real(0));
-        double sqrt1 = sqrt(real(1));
-        double sqrt2 = sqrt(real(2));
-        double sqrt3 = sqrt(real(3));
-        double sqrt4 = sqrt(real(4));
-        double sqrt5 = sqrt(real(5));
-        double sqrt6 = sqrt(real(6));
-        double sqrt7 = sqrt(real(7));
-        double sqrt8 = sqrt(real(8));
-
-        lolunit_assert_doubles_equal(sqrt0, sqrt(0.0), 1e-8);
-        lolunit_assert_doubles_equal(sqrt1, sqrt(1.0), 1e-8);
-        lolunit_assert_doubles_equal(sqrt2, sqrt(2.0), 1e-8);
-        lolunit_assert_doubles_equal(sqrt3, sqrt(3.0), 1e-8);
-        lolunit_assert_doubles_equal(sqrt4, sqrt(4.0), 1e-8);
-        lolunit_assert_doubles_equal(sqrt5, sqrt(5.0), 1e-8);
-        lolunit_assert_doubles_equal(sqrt6, sqrt(6.0), 1e-8);
-        lolunit_assert_doubles_equal(sqrt7, sqrt(7.0), 1e-8);
-        lolunit_assert_doubles_equal(sqrt8, sqrt(8.0), 1e-8);
-    }
-
-    lolunit_declare_test(real_cbrt)
-    {
-        double cbrtm8 = cbrt(real(-8));
-        double cbrtm7 = cbrt(real(-7));
-        double cbrtm6 = cbrt(real(-6));
-        double cbrtm5 = cbrt(real(-5));
-        double cbrtm4 = cbrt(real(-4));
-        double cbrtm3 = cbrt(real(-3));
-        double cbrtm2 = cbrt(real(-2));
-        double cbrtm1 = cbrt(real(-1));
-        double cbrt0 = cbrt(real(0));
-        double cbrt1 = cbrt(real(1));
-        double cbrt2 = cbrt(real(2));
-        double cbrt3 = cbrt(real(3));
-        double cbrt4 = cbrt(real(4));
-        double cbrt5 = cbrt(real(5));
-        double cbrt6 = cbrt(real(6));
-        double cbrt7 = cbrt(real(7));
-        double cbrt8 = cbrt(real(8));
-
-        lolunit_assert_doubles_equal(cbrtm8, cbrt(-8.0), 1e-8);
-        lolunit_assert_doubles_equal(cbrtm7, cbrt(-7.0), 1e-8);
-        lolunit_assert_doubles_equal(cbrtm6, cbrt(-6.0), 1e-8);
-        lolunit_assert_doubles_equal(cbrtm5, cbrt(-5.0), 1e-8);
-        lolunit_assert_doubles_equal(cbrtm4, cbrt(-4.0), 1e-8);
-        lolunit_assert_doubles_equal(cbrtm3, cbrt(-3.0), 1e-8);
-        lolunit_assert_doubles_equal(cbrtm2, cbrt(-2.0), 1e-8);
-        lolunit_assert_doubles_equal(cbrtm1, cbrt(-1.0), 1e-8);
-        lolunit_assert_doubles_equal(cbrt0, cbrt(0.0), 1e-8);
-        lolunit_assert_doubles_equal(cbrt1, cbrt(1.0), 1e-8);
-        lolunit_assert_doubles_equal(cbrt2, cbrt(2.0), 1e-8);
-        lolunit_assert_doubles_equal(cbrt3, cbrt(3.0), 1e-8);
-        lolunit_assert_doubles_equal(cbrt4, cbrt(4.0), 1e-8);
-        lolunit_assert_doubles_equal(cbrt5, cbrt(5.0), 1e-8);
-        lolunit_assert_doubles_equal(cbrt6, cbrt(6.0), 1e-8);
-        lolunit_assert_doubles_equal(cbrt7, cbrt(7.0), 1e-8);
-        lolunit_assert_doubles_equal(cbrt8, cbrt(8.0), 1e-8);
-    }
-
-    lolunit_declare_test(real_ldexp)
-    {
-        real a1(1.5);
-        real a2(-1.5);
-        real a3(0.0);
-
-        lolunit_assert_equal((double)ldexp(a1, 7), 192.0);
-        lolunit_assert_equal((double)ldexp(a1, -7), 0.01171875);
-
-        lolunit_assert_equal((double)ldexp(a2, 7), -192.0);
-        lolunit_assert_equal((double)ldexp(a2, -7), -0.01171875);
-
-        lolunit_assert_equal((double)ldexp(a3, 7), 0.0);
-        lolunit_assert_equal((double)ldexp(a3, -7), 0.0);
-    }
-
-    lolunit_declare_test(real_bool)
-    {
-        real a = 0.0;
-        lolunit_assert(!a);
-
-        a = -0.0;
-        lolunit_assert(!a);
-
-        a = 1234.0;
-        lolunit_assert(a);
-        lolunit_assert(!!a);
-
-        a = -1234.0;
-        lolunit_assert(a);
-        lolunit_assert(!!a);
-    }
-
-    lolunit_declare_test(real_asin_acos)
-    {
-        double tests[] =
-        {
-            -1024.0, -1023.0, -513.0, -512.0, -511.0, -1.0, -0.0,
-            0.0, 1.0, 511.0, 512.0, 513.0, 1023.0, 1024.0
-        };
-
-        for (double test : tests)
-        {
-            double a = test / 1024;
-            double b = sin(asin((real)a));
-            double c = cos(acos((real)a));
-
-            lolunit_set_context(a);
-            lolunit_assert_doubles_equal(b, a, 1e-100);
-            lolunit_assert_doubles_equal(c, a, 1e-100);
-        }
-    }
-
-    lolunit_declare_test(floor_ceil_etc)
-    {
-        double tests[] =
-        {
-            -2.0,  -2.0, -2.0,  -2.0,
-            -1.5,  -2.0, -1.0,  -2.0,
-            -1.0,  -1.0, -1.0,  -1.0,
-            -0.0,  -0.0, -0.0,  -0.0,
-             0.0,   0.0,  0.0,   0.0,
-             0.25,  0.0,  1.0,   0.0,
-             0.375, 0.0,  1.0,   0.0,
-             0.5,   0.0,  1.0,   1.0,
-             1.0,   1.0,  1.0,   1.0,
-             1.5,   1.0,  2.0,   2.0,
-             2.0,   2.0,  2.0,   2.0,
-             2.5,   2.0,  3.0,   3.0,
-             3.0,   3.0,  3.0,   3.0,
-            8192.0,     8192.0, 8192.0, 8192.0,
-            8192.03125, 8192.0, 8193.0, 8192.0,
-            8192.5,     8192.0, 8193.0, 8193.0,
-            8193.0,     8193.0, 8193.0, 8193.0,
-            549755813888.0,     549755813888.0, 549755813888.0, 549755813888.0,
-            549755813888.03125, 549755813888.0, 549755813889.0, 549755813888.0,
-            549755813888.5,     549755813888.0, 549755813889.0, 549755813889.0,
-            549755813889.0,     549755813889.0, 549755813889.0, 549755813889.0,
-        };
-
-        for (unsigned int n = 0; n < sizeof(tests) / sizeof(*tests); n += 4)
-        {
-            double a0 = floor((real)tests[n]);
-            double b0 = tests[n + 1];
-            double a1 = ceil((real)tests[n]);
-            double b1 = tests[n + 2];
-            double a2 = round((real)tests[n]);
-            double b2 = tests[n + 3];
-
-            lolunit_assert_equal(b0, a0);
-            lolunit_assert_equal(b1, a1);
-            lolunit_assert_equal(b2, a2);
-        }
-    }
-
-    lolunit_declare_test(real_pow)
-    {
-        double a1 = pow(-real::R_2(), real::R_2());
-        double b1 = 4.0;
-        lolunit_assert_doubles_equal(a1, b1, 1.0e-13);
-
-        double a2 = pow(-real::R_2(), real::R_3());
-        double b2 = -8.0;
-        lolunit_assert_doubles_equal(a2, b2, 1.0e-13);
-    }
-};
-
-} /* namespace lol */
-
diff --git a/src/t/math/rotation.cpp b/src/t/math/rotation.cpp
deleted file mode 100644
index 46ac3f38..00000000
--- a/src/t/math/rotation.cpp
+++ /dev/null
@@ -1,214 +0,0 @@
-//
-//  Lol Engine — Unit tests for rotations (matrices and quaternions)
-//
-//  Copyright © 2010—2015 Sam Hocevar <sam@hocevar.net>
-//
-//  Lol Engine is free software. It comes without any warranty, to
-//  the extent permitted by applicable law. You can redistribute it
-//  and/or modify it under the terms of the Do What the Fuck You Want
-//  to Public License, Version 2, as published by the WTFPL Task Force.
-//  See http://www.wtfpl.net/ for more details.
-//
-
-#include <lol/engine-internal.h>
-
-#include <lolunit.h>
-
-namespace lol
-{
-
-lolunit_declare_fixture(rotation_test)
-{
-    void setup() {}
-
-    void teardown() {}
-
-    lolunit_declare_test(rotate_2d)
-    {
-        /* Rotations must be CCW */
-        mat2 m90 = mat2::rotate(radians(90.f));
-
-        vec2 a(2.f, 3.f);
-        vec2 b = m90 * a;
-
-        lolunit_assert_doubles_equal(b.x, -a.y, 1e-5);
-        lolunit_assert_doubles_equal(b.y,  a.x, 1e-5);
-
-        float d = determinant(m90);
-
-        lolunit_assert_doubles_equal(d, 1.0, 1e-5);
-    }
-
-    lolunit_declare_test(compose_2d)
-    {
-        /* Rotating 1 radian twice must equal rotating 2 radians */
-        mat2 m1 = mat2::rotate(1.f);
-        mat2 m2 = mat2::rotate(2.f);
-        mat2 m1x1 = m1 * m1;
-
-        lolunit_assert_doubles_equal(m1x1[0][0], m2[0][0], 1e-5);
-        lolunit_assert_doubles_equal(m1x1[1][0], m2[1][0], 1e-5);
-
-        lolunit_assert_doubles_equal(m1x1[0][1], m2[0][1], 1e-5);
-        lolunit_assert_doubles_equal(m1x1[1][1], m2[1][1], 1e-5);
-    }
-
-    lolunit_declare_test(rotate_3d)
-    {
-        /* Rotations must be CCW along each axis */
-        mat3 m90x = mat3::rotate(radians(90.f), 1.f, 0.f, 0.f);
-        mat3 m90y = mat3::rotate(radians(90.f), 0.f, 1.f, 0.f);
-        mat3 m90z = mat3::rotate(radians(90.f), 0.f, 0.f, 1.f);
-
-        vec3 a(2.f, 3.f, 4.f);
-        vec3 b = m90x * a;
-        vec3 c = m90y * a;
-        vec3 d = m90z * a;
-
-        lolunit_assert_doubles_equal(b.x,  a.x, 1e-5);
-        lolunit_assert_doubles_equal(b.y, -a.z, 1e-5);
-        lolunit_assert_doubles_equal(b.z,  a.y, 1e-5);
-
-        lolunit_assert_doubles_equal(c.x,  a.z, 1e-5);
-        lolunit_assert_doubles_equal(c.y,  a.y, 1e-5);
-        lolunit_assert_doubles_equal(c.z, -a.x, 1e-5);
-
-        lolunit_assert_doubles_equal(d.x, -a.y, 1e-5);
-        lolunit_assert_doubles_equal(d.y,  a.x, 1e-5);
-        lolunit_assert_doubles_equal(d.z,  a.z, 1e-5);
-
-        float dx = determinant(m90x);
-        float dy = determinant(m90y);
-        float dz = determinant(m90z);
-
-        lolunit_assert_doubles_equal(dx, 1.0, 1e-5);
-        lolunit_assert_doubles_equal(dy, 1.0, 1e-5);
-        lolunit_assert_doubles_equal(dz, 1.0, 1e-5);
-    }
-
-    lolunit_declare_test(compose_3d)
-    {
-        /* Rotating 1 radian twice must equal rotating 2 radians */
-        mat3 m1 = mat3::rotate(1.f, 1.f, 2.f, 3.f);
-        mat3 m2 = mat3::rotate(2.f, 1.f, 2.f, 3.f);
-        mat3 m1x1 = m1 * m1;
-
-        lolunit_assert_doubles_equal(m1x1[0][0], m2[0][0], 1e-5);
-        lolunit_assert_doubles_equal(m1x1[1][0], m2[1][0], 1e-5);
-        lolunit_assert_doubles_equal(m1x1[2][0], m2[2][0], 1e-5);
-
-        lolunit_assert_doubles_equal(m1x1[0][1], m2[0][1], 1e-5);
-        lolunit_assert_doubles_equal(m1x1[1][1], m2[1][1], 1e-5);
-        lolunit_assert_doubles_equal(m1x1[2][1], m2[2][1], 1e-5);
-
-        lolunit_assert_doubles_equal(m1x1[0][2], m2[0][2], 1e-5);
-        lolunit_assert_doubles_equal(m1x1[1][2], m2[1][2], 1e-5);
-        lolunit_assert_doubles_equal(m1x1[2][2], m2[2][2], 1e-5);
-    }
-
-    lolunit_declare_test(quaternion_transform)
-    {
-        /* Rotating using a quaternion must equal rotating using a matrix */
-        mat3 m1 = mat3::rotate(1.f, 1.f, 2.f, 3.f);
-        quat q1 = quat::rotate(1.f, 1.f, 2.f, 3.f);
-        vec3 a(-2.f, 4.f, 3.f);
-
-        vec3 b = m1 * a;
-        vec3 c = q1.transform(a);
-
-        lolunit_assert_doubles_equal(c.x, b.x, 1e-5);
-        lolunit_assert_doubles_equal(c.y, b.y, 1e-5);
-        lolunit_assert_doubles_equal(c.z, b.z, 1e-5);
-
-        float n = norm(q1);
-
-        lolunit_assert_doubles_equal(n, 1.0, 1e-5);
-    }
-
-    lolunit_declare_test(quaternion_from_matrix)
-    {
-        /* A rotation matrix converted to a quaternion should match the
-         * quaternion built with the same parameters */
-        quat q1 = quat::rotate(1.f, 1.f, 2.f, 3.f);
-        quat q2 = quat(mat3::rotate(1.f, 1.f, 2.f, 3.f));
-
-        lolunit_assert_doubles_equal(q2.w, q1.w, 1e-5);
-        lolunit_assert_doubles_equal(q2.x, q1.x, 1e-5);
-        lolunit_assert_doubles_equal(q2.y, q1.y, 1e-5);
-        lolunit_assert_doubles_equal(q2.z, q1.z, 1e-5);
-
-        float n1 = norm(q1);
-        float n2 = norm(q2);
-
-        lolunit_assert_doubles_equal(n1, 1.0, 1e-5);
-        lolunit_assert_doubles_equal(n2, 1.0, 1e-5);
-    }
-
-    lolunit_declare_test(matrix_from_quaternion)
-    {
-        /* A quaternion converted to a rotation matrix should match the
-         * rotation matrix built with the same parameters */
-        mat3 m1 = mat3::rotate(3.f, 1.f, -2.f, 3.f);
-        mat3 m2 = mat3(quat::rotate(3.f, 1.f, -2.f, 3.f));
-
-        lolunit_assert_doubles_equal(m2[0][0], m1[0][0], 1e-5);
-        lolunit_assert_doubles_equal(m2[1][0], m1[1][0], 1e-5);
-        lolunit_assert_doubles_equal(m2[2][0], m1[2][0], 1e-5);
-
-        lolunit_assert_doubles_equal(m2[0][1], m1[0][1], 1e-5);
-        lolunit_assert_doubles_equal(m2[1][1], m1[1][1], 1e-5);
-        lolunit_assert_doubles_equal(m2[2][1], m1[2][1], 1e-5);
-
-        lolunit_assert_doubles_equal(m2[0][2], m1[0][2], 1e-5);
-        lolunit_assert_doubles_equal(m2[1][2], m1[1][2], 1e-5);
-        lolunit_assert_doubles_equal(m2[2][2], m1[2][2], 1e-5);
-
-        float d1 = determinant(m1);
-        float d2 = determinant(m2);
-
-        lolunit_assert_doubles_equal(d1, 1.0, 1e-5);
-        lolunit_assert_doubles_equal(d2, 1.0, 1e-5);
-    }
-
-    lolunit_declare_test(matrix_composition_through_quaternions)
-    {
-        /* Combining two rotation matrices should match the matrix created
-         * from the combination of the two equivalent quaternions */
-        mat3 m1 = mat3::rotate(3.f, 1.f, -2.f, 3.f);
-        mat3 m2 = mat3::rotate(1.f, -3.f, 1.f, -3.f);
-
-        mat3 m3 = m2 * m1;
-        mat3 m4(quat(m2) * quat(m1));
-
-        lolunit_assert_doubles_equal(m4[0][0], m3[0][0], 1e-5);
-        lolunit_assert_doubles_equal(m4[1][0], m3[1][0], 1e-5);
-        lolunit_assert_doubles_equal(m4[2][0], m3[2][0], 1e-5);
-
-        lolunit_assert_doubles_equal(m4[0][1], m3[0][1], 1e-5);
-        lolunit_assert_doubles_equal(m4[1][1], m3[1][1], 1e-5);
-        lolunit_assert_doubles_equal(m4[2][1], m3[2][1], 1e-5);
-
-        lolunit_assert_doubles_equal(m4[0][2], m3[0][2], 1e-5);
-        lolunit_assert_doubles_equal(m4[1][2], m3[1][2], 1e-5);
-        lolunit_assert_doubles_equal(m4[2][2], m3[2][2], 1e-5);
-    }
-
-    lolunit_declare_test(quaternion_composition_through_matrices)
-    {
-        /* Combining two quaternions should match the quaternion created
-         * from the combination of the two equivalent rotation matrices */
-        quat q1 = quat::rotate(3.f, 1.f, -2.f, 3.f);
-        quat q2 = quat::rotate(1.f, -3.f, 1.f, -2.f);
-
-        quat q3 = q2 * q1;
-        quat q4(mat3(q2) * mat3(q1));
-
-        lolunit_assert_doubles_equal(q4.w, q3.w, 1e-5);
-        lolunit_assert_doubles_equal(q4.x, q3.x, 1e-5);
-        lolunit_assert_doubles_equal(q4.y, q3.y, 1e-5);
-        lolunit_assert_doubles_equal(q4.z, q3.z, 1e-5);
-    }
-};
-
-} /* namespace lol */
-
diff --git a/src/t/math/sqt.cpp b/src/t/math/sqt.cpp
deleted file mode 100644
index 3d8f162e..00000000
--- a/src/t/math/sqt.cpp
+++ /dev/null
@@ -1,107 +0,0 @@
-//
-//  Lol Engine — Unit tests for the SQT transform class
-//
-//  Copyright © 2010—2015 Sam Hocevar <sam@hocevar.net>
-//
-//  Lol Engine is free software. It comes without any warranty, to
-//  the extent permitted by applicable law. You can redistribute it
-//  and/or modify it under the terms of the Do What the Fuck You Want
-//  to Public License, Version 2, as published by the WTFPL Task Force.
-//  See http://www.wtfpl.net/ for more details.
-//
-
-#include <lol/engine-internal.h>
-
-#include <lolunit.h>
-
-namespace lol
-{
-
-static sqt const test_sqt_1(1.5f,
-                            quat::rotate(1.1f,
-                                         normalize(vec3(1.f, 2.f, 3.f))),
-                            vec3(1.f, -1.f, 0.5f));
-
-static vec4 test_vec4s[] =
-{
-    vec4(1.f, 0.f, 0.f, 1.f),
-    vec4(0.f, 1.f, 0.f, 1.f),
-    vec4(0.f, 0.f, 1.f, 1.f),
-    vec4(1.f, 2.f, 3.f, 1.f),
-    vec4(-1.f, 50.f, 12.f, 1.f),
-    vec4(20.f, -10.f, 0.f, 1.f),
-    vec4(-20.f, 10.f, 8.f, 1.f),
-};
-
-lolunit_declare_fixture(sqt_test)
-{
-    lolunit_declare_test(transform_vec3_vec4)
-    {
-        /* We check that transforming a vec3 and a vec4 with w==1
-         * yield the same results. */
-        for (vec4 v0 : test_vec4s)
-        {
-            vec4 v1 = test_sqt_1.transform(v0);
-            vec3 v2 = test_sqt_1.transform(v0.xyz);
-
-            lolunit_assert_doubles_equal(v1.x, v2.x, length(v0.xyz) * 1e-5f);
-            lolunit_assert_doubles_equal(v1.y, v2.y, length(v0.xyz) * 1e-5f);
-            lolunit_assert_doubles_equal(v1.z, v2.z, length(v0.xyz) * 1e-5f);
-            lolunit_assert_doubles_equal(v1.w, 1.0f, 1e-5f);
-        }
-    }
-
-    lolunit_declare_test(sqt_vs_matrix_vec4)
-    {
-        /* We check that transforming a vec4 with an SQT and a
-         * vec4 with a product of 4×4 matrices yield the same
-         * results. */
-        mat4 m = mat4::translate(test_sqt_1.t)
-               * mat4(test_sqt_1.q)
-               * mat4::scale(test_sqt_1.s);
-
-        for (vec4 v0 : test_vec4s)
-        {
-            vec4 v1 = test_sqt_1 * v0;
-            vec4 v2 = m * v0;
-
-            lolunit_assert_doubles_equal(v1.x, v2.x, length(v0.xyz) * 1e-5f);
-            lolunit_assert_doubles_equal(v1.y, v2.y, length(v0.xyz) * 1e-5f);
-            lolunit_assert_doubles_equal(v1.z, v2.z, length(v0.xyz) * 1e-5f);
-            lolunit_assert_doubles_equal(v1.w, v2.w, 1e-5f);
-        }
-    }
-
-    lolunit_declare_test(sqt_inverse)
-    {
-        for (vec4 v0 : test_vec4s)
-        {
-            vec4 v1 = inverse(test_sqt_1) * (test_sqt_1 * v0);
-
-            lolunit_assert_doubles_equal(v0.x, v1.x, length(v0.xyz) * 1e-5f);
-            lolunit_assert_doubles_equal(v0.y, v1.y, length(v0.xyz) * 1e-5f);
-            lolunit_assert_doubles_equal(v0.z, v1.z, length(v0.xyz) * 1e-5f);
-            lolunit_assert_doubles_equal(v0.w, v1.w, 1e-5f);
-        }
-    }
-
-    lolunit_declare_test(sqt_composition_vec4)
-    {
-        /* We check that transforming a vec4 with an SQT and a
-         * second SQT yields the same result as transforming a
-         * vec4 with the product of the two SQTs. */
-        for (vec4 v0 : test_vec4s)
-        {
-            vec4 v1 = (test_sqt_1 * test_sqt_1) * v0;
-            vec4 v2 = test_sqt_1 * (test_sqt_1 * v0);
-
-            lolunit_assert_doubles_equal(v1.x, v2.x, length(v0.xyz) * 1e-5f);
-            lolunit_assert_doubles_equal(v1.y, v2.y, length(v0.xyz) * 1e-5f);
-            lolunit_assert_doubles_equal(v1.z, v2.z, length(v0.xyz) * 1e-5f);
-            lolunit_assert_doubles_equal(v1.w, v2.w, 1e-5f);
-        }
-    }
-};
-
-} /* namespace lol */
-
diff --git a/src/t/math/trig.cpp b/src/t/math/trig.cpp
deleted file mode 100644
index 06dc556b..00000000
--- a/src/t/math/trig.cpp
+++ /dev/null
@@ -1,66 +0,0 @@
-//
-//  Lol Engine — Unit tests for trigonometric functions
-//
-//  Copyright © 2010—2015 Sam Hocevar <sam@hocevar.net>
-//
-//  Lol Engine is free software. It comes without any warranty, to
-//  the extent permitted by applicable law. You can redistribute it
-//  and/or modify it under the terms of the Do What the Fuck You Want
-//  to Public License, Version 2, as published by the WTFPL Task Force.
-//  See http://www.wtfpl.net/ for more details.
-//
-
-#include <lol/engine-internal.h>
-
-#include <cmath>
-
-#include <lolunit.h>
-
-namespace lol
-{
-
-lolunit_declare_fixture(trig_test)
-{
-    lolunit_declare_test(angle_conversions)
-    {
-        lolunit_assert_doubles_equal(D_PI, radians(180.0), 1e-5);
-        lolunit_assert_doubles_equal(D_PI_2, radians(90.0), 1e-5);
-
-        lolunit_assert_doubles_equal(F_PI, radians(180.0f), 1e-5f);
-        lolunit_assert_doubles_equal(F_PI_2, radians(90.0f), 1e-5f);
-
-        lolunit_assert_doubles_equal(180.0, degrees(D_PI), 1e-5);
-        lolunit_assert_doubles_equal(90.0, degrees(D_PI_2), 1e-5);
-
-        lolunit_assert_doubles_equal(180.0f, degrees(F_PI), 1e-5f);
-        lolunit_assert_doubles_equal(90.0f, degrees(F_PI_2), 1e-5f);
-    }
-
-    lolunit_declare_test(integer_angle_conversions)
-    {
-        lolunit_assert_doubles_equal(radians(90), radians(90.0), 1e-5);
-
-        lolunit_assert_doubles_equal(radians((uint8_t)90),  radians(90.0), 1e-5);
-        lolunit_assert_doubles_equal(radians((int8_t)90),   radians(90.0), 1e-5);
-        lolunit_assert_doubles_equal(radians((uint16_t)90), radians(90.0), 1e-5);
-        lolunit_assert_doubles_equal(radians((int16_t)90),  radians(90.0), 1e-5);
-        lolunit_assert_doubles_equal(radians((uint32_t)90), radians(90.0), 1e-5);
-        lolunit_assert_doubles_equal(radians((int32_t)90),  radians(90.0), 1e-5);
-        lolunit_assert_doubles_equal(radians((uint64_t)90), radians(90.0), 1e-5);
-        lolunit_assert_doubles_equal(radians((int64_t)90),  radians(90.0), 1e-5);
-
-        lolunit_assert_doubles_equal(degrees(1), degrees(1.0), 1e-5);
-
-        lolunit_assert_doubles_equal(degrees((uint8_t)1),  degrees(1.0), 1e-5);
-        lolunit_assert_doubles_equal(degrees((int8_t)1),   degrees(1.0), 1e-5);
-        lolunit_assert_doubles_equal(degrees((uint16_t)1), degrees(1.0), 1e-5);
-        lolunit_assert_doubles_equal(degrees((int16_t)1),  degrees(1.0), 1e-5);
-        lolunit_assert_doubles_equal(degrees((uint32_t)1), degrees(1.0), 1e-5);
-        lolunit_assert_doubles_equal(degrees((int32_t)1),  degrees(1.0), 1e-5);
-        lolunit_assert_doubles_equal(degrees((uint64_t)1), degrees(1.0), 1e-5);
-        lolunit_assert_doubles_equal(degrees((int64_t)1),  degrees(1.0), 1e-5);
-    }
-};
-
-} /* namespace lol */
-
diff --git a/src/t/math/vector.cpp b/src/t/math/vector.cpp
deleted file mode 100644
index b63c38e9..00000000
--- a/src/t/math/vector.cpp
+++ /dev/null
@@ -1,394 +0,0 @@
-//
-//  Lol Engine — Unit tests
-//
-//  Copyright © 2010—2019 Sam Hocevar <sam@hocevar.net>
-//
-//  Lol Engine is free software. It comes without any warranty, to
-//  the extent permitted by applicable law. You can redistribute it
-//  and/or modify it under the terms of the Do What the Fuck You Want
-//  to Public License, Version 2, as published by the WTFPL Task Force.
-//  See http://www.wtfpl.net/ for more details.
-//
-
-#include <lol/engine-internal.h>
-
-#include <lolunit.h>
-
-namespace lol
-{
-
-lolunit_declare_fixture(vector_test)
-{
-    lolunit_declare_test(vector_default_ctor)
-    {
-        ivec2 a(1, 2);
-        ivec3 b(1, 2, 3);
-        ivec4 c(1, 2, 3, 4);
-        vec_t<int, 5> d(1, 2, 3, 4, 5);
-
-        lolunit_assert_equal(a.x, 1);
-        lolunit_assert_equal(a.y, 2);
-
-        lolunit_assert_equal(b.x, 1);
-        lolunit_assert_equal(b.y, 2);
-        lolunit_assert_equal(b.z, 3);
-
-        lolunit_assert_equal(c.x, 1);
-        lolunit_assert_equal(c.y, 2);
-        lolunit_assert_equal(c.z, 3);
-
-        lolunit_assert_equal(d[0], 1);
-        lolunit_assert_equal(d[1], 2);
-        lolunit_assert_equal(d[2], 3);
-        lolunit_assert_equal(d[3], 4);
-        lolunit_assert_equal(d[4], 5);
-    }
-
-    lolunit_declare_test(vector_copy_ctor)
-    {
-        ivec2 a(1, 2);
-        ivec3 b(1, 2, 3);
-        ivec4 c(1, 2, 3, 4);
-        vec_t<int, 5> d(1, 2, 3, 4, 5);
-
-        ivec2 a2(a);
-        ivec3 b2(b);
-        ivec4 c2(c);
-        vec_t<int, 5> d2(d);
-
-        lolunit_assert_equal(a2.x, 1);
-        lolunit_assert_equal(a2.y, 2);
-
-        lolunit_assert_equal(b2.x, 1);
-        lolunit_assert_equal(b2.y, 2);
-        lolunit_assert_equal(b2.z, 3);
-
-        lolunit_assert_equal(c2.x, 1);
-        lolunit_assert_equal(c2.y, 2);
-        lolunit_assert_equal(c2.z, 3);
-
-        lolunit_assert_equal(d2[0], 1);
-        lolunit_assert_equal(d2[1], 2);
-        lolunit_assert_equal(d2[2], 3);
-        lolunit_assert_equal(d[3], 4);
-        lolunit_assert_equal(d[4], 5);
-    }
-
-    lolunit_declare_test(vector_assignment)
-    {
-        ivec2 a(1, 2), a2;
-        ivec3 b(1, 2, 3), b2;
-        ivec4 c(1, 2, 3, 4), c2;
-        vec_t<int, 5> d(1, 2, 3, 4, 5), d2;
-
-        a2 = a;
-        b2 = b;
-        c2 = c;
-        d2 = d;
-
-        lolunit_assert_equal(a2.x, 1);
-        lolunit_assert_equal(a2.y, 2);
-
-        lolunit_assert_equal(b2.x, 1);
-        lolunit_assert_equal(b2.y, 2);
-        lolunit_assert_equal(b2.z, 3);
-
-        lolunit_assert_equal(c2.x, 1);
-        lolunit_assert_equal(c2.y, 2);
-        lolunit_assert_equal(c2.z, 3);
-
-        lolunit_assert_equal(d2[0], 1);
-        lolunit_assert_equal(d2[1], 2);
-        lolunit_assert_equal(d2[2], 3);
-        lolunit_assert_equal(d[3], 4);
-        lolunit_assert_equal(d[4], 5);
-    }
-
-    lolunit_declare_test(vector_equality)
-    {
-        vec2 a2(1.0f, 2.0f);
-        vec2 b2(0.0f, 2.0f);
-        vec2 c2(1.0f, 0.0f);
-
-        lolunit_assert_equal(a2, a2);
-        lolunit_refute_different(a2, a2);
-
-        lolunit_assert_different(a2, b2);
-        lolunit_refute_equal(a2, b2);
-        lolunit_assert_different(a2, c2);
-        lolunit_refute_equal(a2, c2);
-
-        vec3 a3(1.0f, 2.0f, 3.0f);
-        vec3 b3(0.0f, 2.0f, 3.0f);
-        vec3 c3(1.0f, 0.0f, 3.0f);
-        vec3 d3(1.0f, 2.0f, 0.0f);
-
-        lolunit_assert_equal(a3, a3);
-        lolunit_refute_different(a3, a3);
-
-        lolunit_assert_different(a3, b3);
-        lolunit_refute_equal(a3, b3);
-        lolunit_assert_different(a3, c3);
-        lolunit_refute_equal(a3, c3);
-        lolunit_assert_different(a3, d3);
-        lolunit_refute_equal(a3, d3);
-
-        vec4 a4(1.0f, 2.0f, 3.0f, 4.0f);
-        vec4 b4(0.0f, 2.0f, 3.0f, 4.0f);
-        vec4 c4(1.0f, 0.0f, 3.0f, 4.0f);
-        vec4 d4(1.0f, 2.0f, 0.0f, 4.0f);
-        vec4 e4(1.0f, 2.0f, 3.0f, 0.0f);
-
-        lolunit_assert_equal(a4, a4);
-        lolunit_refute_different(a4, a4);
-
-        lolunit_assert_different(a4, b4);
-        lolunit_refute_equal(a4, b4);
-        lolunit_assert_different(a4, c4);
-        lolunit_refute_equal(a4, c4);
-        lolunit_assert_different(a4, d4);
-        lolunit_refute_equal(a4, d4);
-        lolunit_assert_different(a4, e4);
-        lolunit_refute_equal(a4, e4);
-    }
-
-    lolunit_declare_test(vector_inequality)
-    {
-        vec2 a2(1.0f, 3.0f);
-        vec2 b2(0.0f, 0.0f);
-        vec2 c2(1.0f, 1.0f);
-        vec2 d2(2.0f, 2.0f);
-        vec2 e2(3.0f, 3.0f);
-        vec2 f2(4.0f, 4.0f);
-
-        lolunit_assert_lequal(a2, a2);
-        lolunit_refute_less(a2, a2);
-
-        lolunit_refute_lequal(a2, b2);
-        lolunit_refute_less(a2, b2);
-        lolunit_refute_lequal(a2, c2);
-        lolunit_refute_less(a2, c2);
-        lolunit_refute_lequal(a2, d2);
-        lolunit_refute_less(a2, d2);
-        lolunit_assert_lequal(a2, e2);
-        lolunit_refute_less(a2, e2);
-        lolunit_assert_lequal(a2, f2);
-        lolunit_assert_less(a2, f2);
-    }
-
-    lolunit_declare_test(vector_init)
-    {
-        vec2 a { 1.f, 2.f };
-        lolunit_assert_equal(1.f, a.x);
-        lolunit_assert_equal(2.f, a.y);
-
-        vec3 b { 1.f, 2.f, 3.f };
-        lolunit_assert_equal(1.f, b.x);
-        lolunit_assert_equal(2.f, b.y);
-        lolunit_assert_equal(3.f, b.z);
-
-        vec4 c { 1.f, 2.f, 3.f, 4.f };
-        lolunit_assert_equal(1.f, c.x);
-        lolunit_assert_equal(2.f, c.y);
-        lolunit_assert_equal(3.f, c.z);
-        lolunit_assert_equal(4.f, c.w);
-
-        vec_t<float, 10> d { 1.f, 2.f, 3.f, 4.f, 5.f };
-        lolunit_assert_equal(1.f, d[0]);
-        lolunit_assert_equal(2.f, d[1]);
-        lolunit_assert_equal(3.f, d[2]);
-        lolunit_assert_equal(4.f, d[3]);
-        lolunit_assert_equal(5.f, d[4]);
-        lolunit_assert_equal(0.f, d[5]);
-        lolunit_assert_equal(0.f, d[6]);
-        lolunit_assert_equal(0.f, d[7]);
-        lolunit_assert_equal(0.f, d[8]);
-        lolunit_assert_equal(0.f, d[9]);
-    }
-
-    lolunit_declare_test(vector_swizzle)
-    {
-        vec3 a(1.0f, 2.0f, 3.0f);
-        vec3 b(4.0f, 5.0f, 6.0f);
-        vec3 c;
-
-        c = a;
-        c.x = b.y;
-        lolunit_assert_equal(c.x, 5.0f);
-        lolunit_assert_equal(c.y, 2.0f);
-        lolunit_assert_equal(c.z, 3.0f);
-
-        c = a.zyx;
-        lolunit_assert_equal(c.x, 3.0f);
-        lolunit_assert_equal(c.y, 2.0f);
-        lolunit_assert_equal(c.z, 1.0f);
-
-#if 0 /* Visual Studio doesn't support these yet. */
-        c = a;
-        c.xy = b.yz;
-        lolunit_assert_equal(c.x, 5.0f);
-        lolunit_assert_equal(c.y, 6.0f);
-        lolunit_assert_equal(c.z, 3.0f);
-
-        c = a;
-        c.xy = b.zz;
-        lolunit_assert_equal(c.x, 6.0f);
-        lolunit_assert_equal(c.y, 6.0f);
-        lolunit_assert_equal(c.z, 3.0f);
-
-        c = a;
-        c.xz = b.xy;
-        lolunit_assert_equal(c.x, 4.0f);
-        lolunit_assert_equal(c.y, 2.0f);
-        lolunit_assert_equal(c.z, 5.0f);
-
-        c = a;
-        c.xz = b.xz;
-        lolunit_assert_equal(c.x, 4.0f);
-        lolunit_assert_equal(c.y, 2.0f);
-        lolunit_assert_equal(c.z, 6.0f);
-
-        c = a;
-        c.xz = c.zy = b.yx;
-        lolunit_assert_equal(c.x, 5.0f);
-        lolunit_assert_equal(c.y, 4.0f);
-        lolunit_assert_equal(c.z, 4.0f);
-#endif
-    }
-
-    lolunit_declare_test(vector_swizzle_mul)
-    {
-        ivec3 a(1, 2, 3);
-
-        ivec3 b = a * 2;
-        lolunit_assert_equal(b.x, 2);
-        lolunit_assert_equal(b.y, 4);
-        lolunit_assert_equal(b.z, 6);
-
-        ivec3 c = (ivec3)a.zyx * 2;
-        lolunit_assert_equal(c.x, 6);
-        lolunit_assert_equal(c.y, 4);
-        lolunit_assert_equal(c.z, 2);
-
-        ivec3 d = 2 * (ivec3)a.zyx;
-        lolunit_assert_equal(d.x, 6);
-        lolunit_assert_equal(d.y, 4);
-        lolunit_assert_equal(d.z, 2);
-
-        ivec3 e = a.zyx * 2;
-        lolunit_assert_equal(e.x, 6);
-        lolunit_assert_equal(e.y, 4);
-        lolunit_assert_equal(e.z, 2);
-
-        ivec3 f = 2 * a.zyx;
-        lolunit_assert_equal(f.x, 6);
-        lolunit_assert_equal(f.y, 4);
-        lolunit_assert_equal(f.z, 2);
-    }
-
-    lolunit_declare_test(vector_unary_minus)
-    {
-        vec2 a(1.0f, 3.0f);
-        vec2 b(-1.0f, -3.0f);
-
-        lolunit_assert_equal(a, -b);
-        lolunit_assert_equal(-a, b);
-    }
-
-    lolunit_declare_test(cast_vector)
-    {
-        vec2 a1(1.0f, 3.0f);
-
-        vec3 b(a1, 0.0f);
-        vec2 a2(b.xy);
-        lolunit_assert_equal(b.x, a1.x);
-        lolunit_assert_equal(b.y, a1.y);
-        lolunit_assert_equal(b.z, 0.0f);
-        lolunit_assert_equal(a2, a1);
-
-        vec4 c(a1, 0.0f, 0.0f);
-        vec2 a3(c.xy);
-        lolunit_assert_equal(c.x, a1.x);
-        lolunit_assert_equal(c.y, a1.y);
-        lolunit_assert_equal(c.z, 0.0f);
-        lolunit_assert_equal(c.w, 0.0f);
-        lolunit_assert_equal(a3, a1);
-    }
-
-    lolunit_declare_test(vector_orthogonal)
-    {
-        vec3 a(1.f, 0.f, 0.f);
-        vec3 b(0.f, 1.f, 0.f);
-        vec3 c(0.f, 0.f, 1.f);
-
-        lolunit_assert_doubles_equal(dot(orthogonal(a), a), 0.f, 1e-6f);
-        lolunit_assert_doubles_equal(dot(orthogonal(b), b), 0.f, 1e-6f);
-        lolunit_assert_doubles_equal(dot(orthogonal(c), c), 0.f, 1e-6f);
-
-        /* The length of the orthogonal vector should be at least
-         * sqrt(2)/2 times the length of the original vector. */
-        lolunit_assert_greater(length(orthogonal(a)), 0.7f);
-        lolunit_assert_greater(length(orthogonal(b)), 0.7f);
-        lolunit_assert_greater(length(orthogonal(c)), 0.7f);
-
-        lolunit_assert_doubles_equal(dot(orthonormal(a), a), 0.f, 1e-6f);
-        lolunit_assert_doubles_equal(dot(orthonormal(b), b), 0.f, 1e-6f);
-        lolunit_assert_doubles_equal(dot(orthonormal(c), c), 0.f, 1e-6f);
-
-        /* The length of the orthonormal vector should be 1. */
-        lolunit_assert_doubles_equal(length(orthonormal(a)), 1.f, 1e-6f);
-        lolunit_assert_doubles_equal(length(orthonormal(b)), 1.f, 1e-6f);
-        lolunit_assert_doubles_equal(length(orthonormal(c)), 1.f, 1e-6f);
-    }
-
-    lolunit_declare_test(large_vectors)
-    {
-        vec_t<int, 50> v0(0);
-        vec_t<int, 50> v1(1);
-        vec_t<int, 50> v2(2);
-        vec_t<int, 50> v3(3);
-
-        auto va = v0 + v3;
-        auto vb = v1 + v2;
-        lolunit_assert(va == vb);
-    }
-
-    lolunit_declare_test(vector_iterator)
-    {
-        vec4 v4(1.125f, 1.25f, 1.375f, 1.25f);
-
-        for (auto x : v4)
-        {
-            lolunit_assert_greater(x, 1.0f);
-            lolunit_assert_less(x, 1.5f);
-        }
-
-        for (auto &x : v4)
-        {
-            lolunit_assert_greater(x, 1.0f);
-            lolunit_assert_less(x, 1.5f);
-        }
-
-        for (auto x : v4.zywx)
-        {
-            lolunit_assert_greater(x, 1.0f);
-            lolunit_assert_less(x, 1.5f);
-        }
-
-        vec4 const &v4c = v4;
-        for (auto x : v4c)
-        {
-            lolunit_assert_greater(x, 1.0f);
-            lolunit_assert_less(x, 1.5f);
-        }
-
-        for (auto &x : v4c)
-        {
-            lolunit_assert_greater(x, 1.0f);
-            lolunit_assert_less(x, 1.5f);
-        }
-    }
-};
-
-} /* namespace lol */
-
diff --git a/src/t/sys/thread.cpp b/src/t/sys/thread.cpp
deleted file mode 100644
index 8a35dff3..00000000
--- a/src/t/sys/thread.cpp
+++ /dev/null
@@ -1,63 +0,0 @@
-//
-//  Lol Engine — Unit tests
-//
-//  Copyright © 2010—2019 Sam Hocevar <sam@hocevar.net>
-//            © 2014—2015 Benjamin “Touky” Huet <huet.benjamin@gmail.com>
-//
-//  Lol Engine is free software. It comes without any warranty, to
-//  the extent permitted by applicable law. You can redistribute it
-//  and/or modify it under the terms of the Do What the Fuck You Want
-//  to Public License, Version 2, as published by the WTFPL Task Force.
-//  See http://www.wtfpl.net/ for more details.
-//
-
-#include <lol/engine-internal.h>
-
-#include <string>
-#include <map>
-
-#include <lolunit.h>
-
-namespace lol
-{
-
-lolunit_declare_fixture(thread_test)
-{
-    void setup()
-    {
-    }
-
-    void teardown()
-    {
-    }
-
-    lolunit_declare_test(queue_try_push)
-    {
-        queue<int, 1> q;
-
-        bool b1 = q.try_push(0);
-        lolunit_assert_equal(true, b1);
-
-        bool b2 = q.try_push(1);
-        lolunit_assert_equal(false, b2);
-    }
-
-    lolunit_declare_test(queue_try_pop)
-    {
-        queue<int, 1> q;
-        int tmp;
-
-        q.push(42);
-
-        bool b1 = q.try_pop(tmp);
-        lolunit_assert_equal(true, b1);
-        lolunit_assert_equal(42, tmp);
-
-        bool b2 = q.try_pop(tmp);
-        lolunit_assert_equal(false, b2);
-        lolunit_assert_equal(42, tmp);
-    }
-};
-
-} /* namespace lol */
-
diff --git a/src/t/sys/timer.cpp b/src/t/sys/timer.cpp
deleted file mode 100644
index 94d06c00..00000000
--- a/src/t/sys/timer.cpp
+++ /dev/null
@@ -1,49 +0,0 @@
-//
-//  Lol Engine — Unit tests
-//
-//  Copyright © 2010—2015 Sam Hocevar <sam@hocevar.net>
-//            © 2014—2015 Benjamin “Touky” Huet <huet.benjamin@gmail.com>
-//            © 2014—2015 Guillaume Bittoun <guillaume.bittoun@gmail.com>
-//
-//  Lol Engine is free software. It comes without any warranty, to
-//  the extent permitted by applicable law. You can redistribute it
-//  and/or modify it under the terms of the Do What the Fuck You Want
-//  to Public License, Version 2, as published by the WTFPL Task Force.
-//  See http://www.wtfpl.net/ for more details.
-//
-
-#include <lol/engine-internal.h>
-
-#include <lolunit.h>
-
-#include <iostream>
-namespace lol
-{
-
-lolunit_declare_fixture(timer_test)
-{
-    void setup()
-    {
-    }
-
-    void teardown()
-    {
-    }
-
-    lolunit_declare_test(timers)
-    {
-        timer t0, t1;
-
-        t0.wait(1.5);
-
-        float s0 = t1.poll();
-        float s1 = t1.get();
-        lolunit_assert_doubles_equal(s0, s1, 1e-5);
-        lolunit_assert_doubles_equal(1.5, s1, 1e-3);
-
-        t1.wait(1.5);
-        lolunit_assert_doubles_equal(3.0, t0.get(), 1e-3);
-    }
-};
-
-}
\ No newline at end of file
diff --git a/src/t/test-base.vcxproj b/src/t/test-base.vcxproj
deleted file mode 100644
index fa4cca38..00000000
--- a/src/t/test-base.vcxproj
+++ /dev/null
@@ -1,71 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <PropertyGroup Label="LolMacros">
-    <LolDir Condition="Exists('$(SolutionDir)\lol')">$(SolutionDir)\lol</LolDir>
-    <LolDir Condition="!Exists('$(SolutionDir)\lol')">$(SolutionDir)</LolDir>
-  </PropertyGroup>
-  <ItemGroup Label="ProjectConfigurations">
-    <ProjectConfiguration Include="Debug|NX64">
-      <Configuration>Debug</Configuration>
-      <Platform>NX64</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Debug|ORBIS">
-      <Configuration>Debug</Configuration>
-      <Platform>ORBIS</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Debug|Win32">
-      <Configuration>Debug</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Debug|x64">
-      <Configuration>Debug</Configuration>
-      <Platform>x64</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Release|NX64">
-      <Configuration>Release</Configuration>
-      <Platform>NX64</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Release|ORBIS">
-      <Configuration>Release</Configuration>
-      <Platform>ORBIS</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Release|Win32">
-      <Configuration>Release</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Release|x64">
-      <Configuration>Release</Configuration>
-      <Platform>x64</Platform>
-    </ProjectConfiguration>
-  </ItemGroup>
-  <ItemGroup>
-    <ClCompile Include="test-common.cpp" />
-    <ClCompile Include="base\array.cpp" />
-    <ClCompile Include="base\enum.cpp" />
-    <ClCompile Include="base\map.cpp" />
-    <ClCompile Include="base\string.cpp" />
-    <ClCompile Include="base\types.cpp" />
-  </ItemGroup>
-  <Import Project="$(LolDir)\build\msbuild\lol-core.props" />
-  <Import Project="$(LolDir)\build\msbuild\lol-bullet.props" />
-  <PropertyGroup Label="Globals">
-    <ProjectGuid>{8f59a635-0240-4d7f-a80d-050c3f1670c2}</ProjectGuid>
-    <ConfigurationType>Application</ConfigurationType>
-    <Keyword>Win32Proj</Keyword>
-  </PropertyGroup>
-  <Import Project="$(LolDir)\build\msbuild\lol.config.props" />
-  <ImportGroup Label="ExtensionSettings">
-    <Import Project="$(LolDir)\build\msbuild\lolfx.props" />
-  </ImportGroup>
-  <ImportGroup Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(LolDir)\build\msbuild\lol.vars.props" />
-  </ImportGroup>
-  <PropertyGroup Label="UserMacros" />
-  <Import Project="$(LolDir)\build\msbuild\lol.rules.props" />
-  <ItemDefinitionGroup />
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
-  <ImportGroup Label="ExtensionTargets">
-    <Import Project="$(LolDir)\build\msbuild\lolfx.targets" />
-  </ImportGroup>
-</Project>
\ No newline at end of file
diff --git a/src/t/test-common.cpp b/src/t/test-common.cpp
deleted file mode 100644
index a3390af5..00000000
--- a/src/t/test-common.cpp
+++ /dev/null
@@ -1,28 +0,0 @@
-//
-//  Lol Engine — Unit tests
-//
-//  Copyright © 2010—2015 Sam Hocevar <sam@hocevar.net>
-//
-//  Lol Engine is free software. It comes without any warranty, to
-//  the extent permitted by applicable law. You can redistribute it
-//  and/or modify it under the terms of the Do What the Fuck You Want
-//  to Public License, Version 2, as published by the WTFPL Task Force.
-//  See http://www.wtfpl.net/ for more details.
-//
-
-#include <lol/engine-internal.h>
-
-#include <cstdio>
-#include <cstdlib>
-
-#include <lolunit.h>
-
-int main(int argc, char **argv)
-{
-    UNUSED(argc, argv);
-
-    lol::text_runner runner;
-    bool success = runner.Run();
-    return success ? EXIT_SUCCESS : EXIT_FAILURE;
-}
-
diff --git a/src/t/test-entity.vcxproj b/src/t/test-entity.vcxproj
deleted file mode 100644
index 86620c9c..00000000
--- a/src/t/test-entity.vcxproj
+++ /dev/null
@@ -1,67 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <PropertyGroup Label="LolMacros">
-    <LolDir Condition="Exists('$(SolutionDir)\lol')">$(SolutionDir)\lol</LolDir>
-    <LolDir Condition="!Exists('$(SolutionDir)\lol')">$(SolutionDir)</LolDir>
-  </PropertyGroup>
-  <ItemGroup Label="ProjectConfigurations">
-    <ProjectConfiguration Include="Debug|NX64">
-      <Configuration>Debug</Configuration>
-      <Platform>NX64</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Debug|ORBIS">
-      <Configuration>Debug</Configuration>
-      <Platform>ORBIS</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Debug|Win32">
-      <Configuration>Debug</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Debug|x64">
-      <Configuration>Debug</Configuration>
-      <Platform>x64</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Release|NX64">
-      <Configuration>Release</Configuration>
-      <Platform>NX64</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Release|ORBIS">
-      <Configuration>Release</Configuration>
-      <Platform>ORBIS</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Release|Win32">
-      <Configuration>Release</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Release|x64">
-      <Configuration>Release</Configuration>
-      <Platform>x64</Platform>
-    </ProjectConfiguration>
-  </ItemGroup>
-  <ItemGroup>
-    <ClCompile Include="test-common.cpp" />
-    <ClCompile Include="entity\camera.cpp" />
-  </ItemGroup>
-  <Import Project="$(LolDir)\build\msbuild\lol-core.props" />
-  <Import Project="$(LolDir)\build\msbuild\lol-bullet.props" />
-  <PropertyGroup Label="Globals">
-    <ProjectGuid>{d7f6c2ca-5a13-4fd0-8468-1833923e3ee3}</ProjectGuid>
-    <ConfigurationType>Application</ConfigurationType>
-    <Keyword>Win32Proj</Keyword>
-  </PropertyGroup>
-  <Import Project="$(LolDir)\build\msbuild\lol.config.props" />
-  <ImportGroup Label="ExtensionSettings">
-    <Import Project="$(LolDir)\build\msbuild\lolfx.props" />
-  </ImportGroup>
-  <ImportGroup Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(LolDir)\build\msbuild\lol.vars.props" />
-  </ImportGroup>
-  <PropertyGroup Label="UserMacros" />
-  <Import Project="$(LolDir)\build\msbuild\lol.rules.props" />
-  <ItemDefinitionGroup />
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
-  <ImportGroup Label="ExtensionTargets">
-    <Import Project="$(LolDir)\build\msbuild\lolfx.targets" />
-  </ImportGroup>
-</Project>
\ No newline at end of file
diff --git a/src/t/test-image.vcxproj b/src/t/test-image.vcxproj
deleted file mode 100644
index 9287d316..00000000
--- a/src/t/test-image.vcxproj
+++ /dev/null
@@ -1,68 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <PropertyGroup Label="LolMacros">
-    <LolDir Condition="Exists('$(SolutionDir)\lol')">$(SolutionDir)\lol</LolDir>
-    <LolDir Condition="!Exists('$(SolutionDir)\lol')">$(SolutionDir)</LolDir>
-  </PropertyGroup>
-  <ItemGroup Label="ProjectConfigurations">
-    <ProjectConfiguration Include="Debug|NX64">
-      <Configuration>Debug</Configuration>
-      <Platform>NX64</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Debug|ORBIS">
-      <Configuration>Debug</Configuration>
-      <Platform>ORBIS</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Debug|Win32">
-      <Configuration>Debug</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Debug|x64">
-      <Configuration>Debug</Configuration>
-      <Platform>x64</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Release|NX64">
-      <Configuration>Release</Configuration>
-      <Platform>NX64</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Release|ORBIS">
-      <Configuration>Release</Configuration>
-      <Platform>ORBIS</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Release|Win32">
-      <Configuration>Release</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Release|x64">
-      <Configuration>Release</Configuration>
-      <Platform>x64</Platform>
-    </ProjectConfiguration>
-  </ItemGroup>
-  <ItemGroup>
-    <ClCompile Include="test-common.cpp" />
-    <ClCompile Include="image\color.cpp" />
-    <ClCompile Include="image\image.cpp" />
-  </ItemGroup>
-  <Import Project="$(LolDir)\build\msbuild\lol-core.props" />
-  <Import Project="$(LolDir)\build\msbuild\lol-bullet.props" />
-  <PropertyGroup Label="Globals">
-    <ProjectGuid>{5a27ff18-a1ec-49be-9455-415f1c701153}</ProjectGuid>
-    <ConfigurationType>Application</ConfigurationType>
-    <Keyword>Win32Proj</Keyword>
-  </PropertyGroup>
-  <Import Project="$(LolDir)\build\msbuild\lol.config.props" />
-  <ImportGroup Label="ExtensionSettings">
-    <Import Project="$(LolDir)\build\msbuild\lolfx.props" />
-  </ImportGroup>
-  <ImportGroup Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(LolDir)\build\msbuild\lol.vars.props" />
-  </ImportGroup>
-  <PropertyGroup Label="UserMacros" />
-  <Import Project="$(LolDir)\build\msbuild\lol.rules.props" />
-  <ItemDefinitionGroup />
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
-  <ImportGroup Label="ExtensionTargets">
-    <Import Project="$(LolDir)\build\msbuild\lolfx.targets" />
-  </ImportGroup>
-</Project>
\ No newline at end of file
diff --git a/src/t/test-math.vcxproj b/src/t/test-math.vcxproj
deleted file mode 100644
index ebbc6e68..00000000
--- a/src/t/test-math.vcxproj
+++ /dev/null
@@ -1,85 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <PropertyGroup Label="LolMacros">
-    <LolDir Condition="Exists('$(SolutionDir)\lol')">$(SolutionDir)\lol</LolDir>
-    <LolDir Condition="!Exists('$(SolutionDir)\lol')">$(SolutionDir)</LolDir>
-  </PropertyGroup>
-  <ItemGroup Label="ProjectConfigurations">
-    <ProjectConfiguration Include="Debug|NX64">
-      <Configuration>Debug</Configuration>
-      <Platform>NX64</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Debug|ORBIS">
-      <Configuration>Debug</Configuration>
-      <Platform>ORBIS</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Debug|Win32">
-      <Configuration>Debug</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Debug|x64">
-      <Configuration>Debug</Configuration>
-      <Platform>x64</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Release|NX64">
-      <Configuration>Release</Configuration>
-      <Platform>NX64</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Release|ORBIS">
-      <Configuration>Release</Configuration>
-      <Platform>ORBIS</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Release|Win32">
-      <Configuration>Release</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Release|x64">
-      <Configuration>Release</Configuration>
-      <Platform>x64</Platform>
-    </ProjectConfiguration>
-  </ItemGroup>
-  <ItemGroup>
-    <ClCompile Include="test-common.cpp" />
-    <ClCompile Include="math\array2d.cpp" />
-    <ClCompile Include="math\array3d.cpp" />
-    <ClCompile Include="math\arraynd.cpp" />
-    <ClCompile Include="math\box.cpp" />
-    <ClCompile Include="math\bigint.cpp" />
-    <ClCompile Include="math\cmplx.cpp" />
-    <ClCompile Include="math\half.cpp" />
-    <ClCompile Include="math\interp.cpp" />
-    <ClCompile Include="math\matrix.cpp" />
-    <ClCompile Include="math\noise\simplex.cpp" />
-    <ClCompile Include="math\numbers.cpp" />
-    <ClCompile Include="math\polynomial.cpp" />
-    <ClCompile Include="math\quat.cpp" />
-    <ClCompile Include="math\rand.cpp" />
-    <ClCompile Include="math\real.cpp" />
-    <ClCompile Include="math\rotation.cpp" />
-    <ClCompile Include="math\sqt.cpp" />
-    <ClCompile Include="math\trig.cpp" />
-    <ClCompile Include="math\vector.cpp" />
-  </ItemGroup>
-  <Import Project="$(LolDir)\build\msbuild\lol-core.props" />
-  <Import Project="$(LolDir)\build\msbuild\lol-bullet.props" />
-  <PropertyGroup Label="Globals">
-    <ProjectGuid>{962d4e25-45d3-4ace-8c02-69fa3713abd4}</ProjectGuid>
-    <ConfigurationType>Application</ConfigurationType>
-    <Keyword>Win32Proj</Keyword>
-  </PropertyGroup>
-  <Import Project="$(LolDir)\build\msbuild\lol.config.props" />
-  <ImportGroup Label="ExtensionSettings">
-    <Import Project="$(LolDir)\build\msbuild\lolfx.props" />
-  </ImportGroup>
-  <ImportGroup Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(LolDir)\build\msbuild\lol.vars.props" />
-  </ImportGroup>
-  <PropertyGroup Label="UserMacros" />
-  <Import Project="$(LolDir)\build\msbuild\lol.rules.props" />
-  <ItemDefinitionGroup />
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
-  <ImportGroup Label="ExtensionTargets">
-    <Import Project="$(LolDir)\build\msbuild\lolfx.targets" />
-  </ImportGroup>
-</Project>
\ No newline at end of file
diff --git a/src/t/test-sys.vcxproj b/src/t/test-sys.vcxproj
deleted file mode 100644
index 5847fe44..00000000
--- a/src/t/test-sys.vcxproj
+++ /dev/null
@@ -1,67 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <PropertyGroup Label="LolMacros">
-    <LolDir Condition="Exists('$(SolutionDir)\lol')">$(SolutionDir)\lol</LolDir>
-    <LolDir Condition="!Exists('$(SolutionDir)\lol')">$(SolutionDir)</LolDir>
-  </PropertyGroup>
-  <ItemGroup Label="ProjectConfigurations">
-    <ProjectConfiguration Include="Debug|NX64">
-      <Configuration>Debug</Configuration>
-      <Platform>NX64</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Debug|ORBIS">
-      <Configuration>Debug</Configuration>
-      <Platform>ORBIS</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Debug|Win32">
-      <Configuration>Debug</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Debug|x64">
-      <Configuration>Debug</Configuration>
-      <Platform>x64</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Release|NX64">
-      <Configuration>Release</Configuration>
-      <Platform>NX64</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Release|ORBIS">
-      <Configuration>Release</Configuration>
-      <Platform>ORBIS</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Release|Win32">
-      <Configuration>Release</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Release|x64">
-      <Configuration>Release</Configuration>
-      <Platform>x64</Platform>
-    </ProjectConfiguration>
-  </ItemGroup>
-  <ItemGroup>
-    <ClCompile Include="test-common.cpp" />
-    <ClCompile Include="sys\thread.cpp" />
-  </ItemGroup>
-  <Import Project="$(LolDir)\build\msbuild\lol-core.props" />
-  <Import Project="$(LolDir)\build\msbuild\lol-bullet.props" />
-  <PropertyGroup Label="Globals">
-    <ProjectGuid>{1782f849-b6e1-466d-9f02-a751f3f8712c}</ProjectGuid>
-    <ConfigurationType>Application</ConfigurationType>
-    <Keyword>Win32Proj</Keyword>
-  </PropertyGroup>
-  <Import Project="$(LolDir)\build\msbuild\lol.config.props" />
-  <ImportGroup Label="ExtensionSettings">
-    <Import Project="$(LolDir)\build\msbuild\lolfx.props" />
-  </ImportGroup>
-  <ImportGroup Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(LolDir)\build\msbuild\lol.vars.props" />
-  </ImportGroup>
-  <PropertyGroup Label="UserMacros" />
-  <Import Project="$(LolDir)\build\msbuild\lol.rules.props" />
-  <ItemDefinitionGroup />
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
-  <ImportGroup Label="ExtensionTargets">
-    <Import Project="$(LolDir)\build\msbuild\lolfx.targets" />
-  </ImportGroup>
-</Project>
\ No newline at end of file
diff --git a/src/text.cpp b/src/text.cpp
deleted file mode 100644
index 93ecaef9..00000000
--- a/src/text.cpp
+++ /dev/null
@@ -1,123 +0,0 @@
-//
-//  Lol Engine
-//
-//  Copyright © 2010—2019 Sam Hocevar <sam@hocevar.net>
-//
-//  Lol Engine is free software. It comes without any warranty, to
-//  the extent permitted by applicable law. You can redistribute it
-//  and/or modify it under the terms of the Do What the Fuck You Want
-//  to Public License, Version 2, as published by the WTFPL Task Force.
-//  See http://www.wtfpl.net/ for more details.
-//
-
-#include <lol/engine-internal.h>
-
-#include <cstdio>
-#include <cstdlib> /* free() */
-#include <cstring> /* strdup() */
-
-namespace lol
-{
-
-/*
- * Text implementation class
- */
-
-class TextData
-{
-    friend class Text;
-
-private:
-    Font *m_font;
-    TextAlign m_align;
-    std::string m_text;
-    vec3 m_pos;
-    vec2 m_scale;
-    float m_spacing;
-};
-
-/*
- * Public Text class
- */
-
-Text::Text(std::string const &text, char const *font)
-  : data(new TextData())
-{
-    data->m_font = Font::create(font);
-    data->m_align = TextAlign::Left;
-    data->m_text = text;
-    data->m_pos = vec3(0, 0, 0);
-    data->m_scale = vec2(1.f);
-    data->m_spacing = 0.f;
-
-    m_drawgroup = tickable::group::draw::entity;
-}
-
-void Text::SetText(std::string const &text)
-{
-    data->m_text = text;
-}
-
-void Text::SetInt(int val)
-{
-    data->m_text = format("%i", val);
-}
-
-void Text::SetPos(vec3 pos)
-{
-    data->m_pos = pos;
-}
-
-void Text::SetScale(vec2 scale)
-{
-    data->m_scale = scale;
-}
-
-void Text::SetSpacing(float spacing)
-{
-    data->m_spacing = spacing;
-}
-
-void Text::SetAlign(TextAlign align)
-{
-    data->m_align = align;
-}
-
-vec3 Text::GetPos()
-{
-    return (vec3)data->m_pos;
-}
-
-ivec2 Text::GetFontSize()
-{
-    return data->m_font->GetSize();
-}
-
-void Text::tick_draw(float seconds, Scene &scene)
-{
-    entity::tick_draw(seconds, scene);
-
-    if (auto length = data->m_text.length())
-    {
-        vec3 delta(0.0f);
-        float text_width = ((length - 0.5f) + (length - 1) * data->m_spacing)
-                         * data->m_font->GetSize().x;
-
-        if (data->m_align == TextAlign::Right)
-            delta.x -= text_width * data->m_scale.x;
-        else if (data->m_align == TextAlign::Center)
-            delta.x -= 0.5f * text_width * data->m_scale.x;
-
-        data->m_font->Print(scene, data->m_pos + delta, data->m_text,
-                            data->m_scale, data->m_spacing);
-    }
-}
-
-Text::~Text()
-{
-    Font::destroy(data->m_font);
-    delete data;
-}
-
-} /* namespace lol */
-
diff --git a/src/text.h b/src/text.h
deleted file mode 100644
index f01d7e64..00000000
--- a/src/text.h
+++ /dev/null
@@ -1,69 +0,0 @@
-//
-//  Lol Engine
-//
-//  Copyright © 2010—2019 Sam Hocevar <sam@hocevar.net>
-//
-//  Lol Engine is free software. It comes without any warranty, to
-//  the extent permitted by applicable law. You can redistribute it
-//  and/or modify it under the terms of the Do What the Fuck You Want
-//  to Public License, Version 2, as published by the WTFPL Task Force.
-//  See http://www.wtfpl.net/ for more details.
-//
-
-#pragma once
-
-//
-// The Text class
-// --------------
-//
-
-#include "engine/entity.h"
-
-#include <string>
-
-namespace lol
-{
-
-class TextData;
-
-enum class TextAlign
-{
-    Left,
-    Right,
-    Center,
-};
-
-class Text : public entity
-{
-public:
-    Text(std::string const &text, char const *font);
-    virtual ~Text();
-
-    /** Set the text that will be displayed */
-    void SetText(std::string const &text);
-    void SetInt(int val);
-
-    /** Set the position of the text object, in the 3D world. */
-    void SetPos(vec3 pos);
-
-    /** Set the text scaling */
-    void SetScale(vec2 scale);
-
-    /** Set the spacing between characters, as a fraction of character width */
-    void SetSpacing(float spacing);
-
-    /** Set the alignment method */
-    void SetAlign(TextAlign align);
-
-    vec3 GetPos();
-    ivec2 GetFontSize();
-
-protected:
-    virtual void tick_draw(float seconds, Scene &scene);
-
-private:
-    TextData *data;
-};
-
-} /* namespace lol */
-
diff --git a/src/textureimage-private.h b/src/textureimage-private.h
deleted file mode 100644
index da1ef7a9..00000000
--- a/src/textureimage-private.h
+++ /dev/null
@@ -1,41 +0,0 @@
-//
-//  Lol Engine
-//
-//  Copyright © 2010—2018 Sam Hocevar <sam@hocevar.net>
-//
-//  Lol Engine is free software. It comes without any warranty, to
-//  the extent permitted by applicable law. You can redistribute it
-//  and/or modify it under the terms of the Do What the Fuck You Want
-//  to Public License, Version 2, as published by the WTFPL Task Force.
-//  See http://www.wtfpl.net/ for more details.
-//
-
-#pragma once
-
-//
-// The TileSet class
-// -----------------
-// A TileSet is a collection of tiles stored in a texture. Texture uploading
-// and freeing is done in the render tick method. When the refcount drops to
-// zero, the texture is freed.
-//
-
-namespace lol
-{
-
-class TextureImageData
-{
-    friend class TextureImage;
-
-    //T'was protected .... should it be ?
-public:
-    std::string m_name;
-
-    /* Pixels, then texture coordinates */
-    ivec2 m_image_size, m_texture_size;
-
-    Image *m_image = nullptr;
-    Texture *m_texture = nullptr;
-};
-
-} /* namespace lol */
diff --git a/src/textureimage.cpp b/src/textureimage.cpp
deleted file mode 100644
index eea05317..00000000
--- a/src/textureimage.cpp
+++ /dev/null
@@ -1,202 +0,0 @@
-//
-//  Lol Engine
-//
-//  Copyright © 2010—2019 Sam Hocevar <sam@hocevar.net>
-//
-//  Lol Engine is free software. It comes without any warranty, to
-//  the extent permitted by applicable law. You can redistribute it
-//  and/or modify it under the terms of the Do What the Fuck You Want
-//  to Public License, Version 2, as published by the WTFPL Task Force.
-//  See http://www.wtfpl.net/ for more details.
-//
-
-#include <lol/engine-internal.h>
-
-#include <cstdio>
-#include <cstdlib>
-#include <cstring>
-
-#if defined _WIN32
-#   define WIN32_LEAN_AND_MEAN
-#   include <windows.h>
-#   undef WIN32_LEAN_AND_MEAN
-#endif
-
-#include "textureimage-private.h"
-
-namespace lol
-{
-
-/*
- * TileSet implementation class
- */
-
-TextureImageData* TextureImage::GetNewData()
-{
-    return new TextureImageData();
-}
-
-/*
- * Public TextureImage class
- */
-
-TextureImage::TextureImage(std::string const &path)
-    : m_data(GetNewData())
-{
-    Init(path);
-}
-
-TextureImage::TextureImage(std::string const &path, image* img)
-    : m_data(GetNewData())
-{
-    Init(path, img);
-}
-
-TextureImage::~TextureImage()
-{
-    delete m_data;
-}
-
-void TextureImage::Init(std::string const &path)
-{
-    Init(path, ResourceLoader::Load(path));
-}
-
-void TextureImage::Init(std::string const &path, ResourceCodecData* loaded_data)
-{
-    //Load image if available
-    auto image_data = dynamic_cast<ResourceImageData*>(loaded_data);
-    if (image_data != nullptr)
-    {
-        Init(path, new image(*image_data->m_image));
-    }
-
-    delete image_data;
-}
-
-void TextureImage::Init(std::string const &path, image* img)
-{
-    m_data->m_name = "<textureimage> " + path;
-
-    m_data->m_texture = nullptr;
-    m_data->m_image = img;
-    m_data->m_image_size = m_data->m_image->size();
-    m_data->m_texture_size = ivec2(PotUp(m_data->m_image_size.x),
-                                   PotUp(m_data->m_image_size.y));
-
-    m_drawgroup = tickable::group::draw::texture;
-}
-
-void TextureImage::tick_draw(float seconds, Scene &scene)
-{
-    super::tick_draw(seconds, scene);
-
-    if (has_flags(entity::flags::destroying))
-    {
-        if (m_data->m_image)
-        {
-            delete m_data->m_image;
-            m_data->m_image = nullptr;
-        }
-        else
-        {
-            delete m_data->m_texture;
-            m_data->m_texture = nullptr;
-        }
-    }
-    else if (m_data->m_image)
-    {
-        //Update texture is needed
-        if (m_data->m_texture)
-        {
-            delete m_data->m_texture;
-            m_data->m_texture = nullptr;
-        }
-
-        PixelFormat format = m_data->m_image->format();
-        int planes = BytesPerPixel(format);
-
-        int w = m_data->m_texture_size.x;
-        int h = m_data->m_texture_size.y;
-
-        uint8_t *pixels = (uint8_t *)m_data->m_image->lock();
-        bool resized = false;
-        if (w != m_data->m_image_size.x || h != m_data->m_image_size.y)
-        {
-            uint8_t *tmp = new uint8_t[planes * w * h];
-            for (int line = 0; line < m_data->m_image_size.y; line++)
-                memcpy(tmp + planes * w * line,
-                       pixels + planes * m_data->m_image_size.x * line,
-                       planes * m_data->m_image_size.x);
-            pixels = tmp;
-            resized = false;
-        }
-        /* FIXME: no unlock? */
-
-        m_data->m_texture = new Texture(ivec2(w, h), format);
-        m_data->m_texture->SetData(pixels);
-
-        if (resized)
-            delete[] pixels;
-        delete m_data->m_image;
-        m_data->m_image = nullptr;
-    }
-}
-
-//-----------------------------------------------------------------------------
-std::string TextureImage::GetName() const
-{
-    return m_data->m_name;
-}
-
-void TextureImage::UpdateTexture(image* img)
-{
-    m_data->m_image = img;
-    m_data->m_image_size = m_data->m_image->size();
-    m_data->m_texture_size = ivec2(PotUp(m_data->m_image_size.x),
-                                   PotUp(m_data->m_image_size.y));
-}
-
-Texture * TextureImage::GetTexture()
-{
-    return m_data->m_texture;
-}
-
-Texture const * TextureImage::GetTexture() const
-{
-    return m_data->m_texture;
-}
-
-image * TextureImage::GetImage()
-{
-    return m_data->m_image;
-}
-
-image const * TextureImage::GetImage() const
-{
-    return m_data->m_image;
-}
-
-ivec2 TextureImage::GetImageSize() const
-{
-    return m_data->m_image_size;
-}
-
-ivec2 TextureImage::GetTextureSize() const
-{
-    return m_data->m_texture_size;
-}
-
-void TextureImage::Bind()
-{
-    if (!m_data->m_image && m_data->m_texture)
-        m_data->m_texture->Bind();
-}
-
-void TextureImage::Unbind()
-{
-    ;
-}
-
-} /* namespace lol */
-
diff --git a/src/textureimage.h b/src/textureimage.h
deleted file mode 100644
index 0cd67b98..00000000
--- a/src/textureimage.h
+++ /dev/null
@@ -1,74 +0,0 @@
-//
-//  Lol Engine
-//
-//  Copyright © 2010—2019 Sam Hocevar <sam@hocevar.net>
-//
-//  Lol Engine is free software. It comes without any warranty, to
-//  the extent permitted by applicable law. You can redistribute it
-//  and/or modify it under the terms of the Do What the Fuck You Want
-//  to Public License, Version 2, as published by the WTFPL Task Force.
-//  See http://www.wtfpl.net/ for more details.
-//
-
-#pragma once
-
-//
-// The TileSet class
-// -----------------
-// A TileSet is a collection of tiles stored in a texture. Texture uploading
-// and freeing is done in the render tick method. When the refcount drops to
-// zero, the texture is freed.
-//
-
-#include <lol/image/resource.h>
-#include <lol/image/image.h>
-#include <lol/gpu/texture.h>
-
-#include <stdint.h>
-
-#include "engine/entity.h"
-
-namespace lol
-{
-
-class TextureImageData;
-
-class TextureImage : public entity
-{
-    typedef entity super;
-protected:
-    virtual TextureImageData* GetNewData();
-
-public:
-    TextureImage(std::string const &path);
-    TextureImage(std::string const &path, image* img);
-    virtual ~TextureImage();
-
-protected:
-    void Init(std::string const &path);
-    virtual void Init(std::string const &path, ResourceCodecData* loaded_data);
-    virtual void Init(std::string const &path, image* img);
-
-protected:
-    virtual void tick_draw(float seconds, Scene &scene);
-
-public:
-    /* Inherited from entity */
-    virtual std::string GetName() const;
-
-    void UpdateTexture(image* img);
-    Texture * GetTexture();
-    Texture const * GetTexture() const;
-    image * GetImage();
-    image const * GetImage() const;
-    ivec2 GetImageSize() const;
-    ivec2 GetTextureSize() const;
-    void Bind();
-    void Unbind();
-
-protected:
-    TextureImageData* m_data = nullptr;
-};
-
-} /* namespace lol */
-
diff --git a/src/tileset.cpp b/src/tileset.cpp
deleted file mode 100644
index e593fc6d..00000000
--- a/src/tileset.cpp
+++ /dev/null
@@ -1,298 +0,0 @@
-//
-//  Lol Engine
-//
-//  Copyright © 2010—2019 Sam Hocevar <sam@hocevar.net>
-//
-//  Lol Engine is free software. It comes without any warranty, to
-//  the extent permitted by applicable law. You can redistribute it
-//  and/or modify it under the terms of the Do What the Fuck You Want
-//  to Public License, Version 2, as published by the WTFPL Task Force.
-//  See http://www.wtfpl.net/ for more details.
-//
-
-#include <lol/engine-internal.h>
-
-#include <map>
-#include <cstdlib>
-#include <cstdio>
-#include <cstring>
-
-#if defined _WIN32
-#   define WIN32_LEAN_AND_MEAN
-#   include <windows.h>
-#   undef WIN32_LEAN_AND_MEAN
-#endif
-
-#include "textureimage-private.h"
-
-namespace lol
-{
-
-/* The tileset cache */
-static entity_dict<TileSet> tileset_cache;
-
-/*
- * TileSet implementation class
- */
-
-class TileSetData
-{
-    friend class TileSet;
-
-protected:
-    /* Pixels, then texture coordinates */
-    array<ibox2, box2> m_tiles;
-    ivec2 m_tile_size;
-};
-
-/*
- * Public TileSet class
- */
-
-TileSet *TileSet::create(std::string const &path)
-{
-    auto ret = tileset_cache.get(path);
-    return ret ? ret : tileset_cache.set(path, new TileSet(path));
-}
-
-TileSet *TileSet::create(std::string const &path, image* img)
-{
-    auto ret = tileset_cache.get(path);
-    return ret ? ret : tileset_cache.set(path, new TileSet(path, img));
-}
-
-TileSet *TileSet::create(std::string const &path, image* img, array<ivec2, ivec2>& tiles)
-{
-    auto ret = tileset_cache.get(path);
-    if (!ret)
-    {
-        ret = tileset_cache.set(path, new TileSet(path, img));
-        ret->define_tile(tiles);
-    }
-    return ret;
-}
-
-TileSet *TileSet::create(std::string const &path, ivec2 size, ivec2 count)
-{
-    auto ret = tileset_cache.get(path);
-    if (!ret)
-    {
-        ret = tileset_cache.set(path, new TileSet(path));
-
-        /* If count is valid, fix size; otherwise, fix count. */
-        if (count.x > 0 && count.y > 0)
-        {
-            size = ret->m_data->m_image_size / count;
-        }
-        else
-        {
-            if (size.x <= 0 || size.y <= 0)
-                size = ivec2(32, 32);
-            count = max(ivec2(1, 1), ret->m_data->m_image_size / size);
-        }
-
-        for (int j = 0; j < count.y; ++j)
-        for (int i = 0; i < count.x; ++i)
-        {
-            ret->define_tile(ibox2(size * ivec2(i, j),
-                                   size * ivec2(i + 1, j + 1)));
-        }
-    }
-
-    return ret;
-}
-
-TileSet *TileSet::create(std::string const &path, image* img, ivec2 size, ivec2 count)
-{
-    auto ret = tileset_cache.get(path);
-    if (!ret)
-    {
-        ret = tileset_cache.set(path, new TileSet(path, img));
-
-        /* If count is valid, fix size; otherwise, fix count. */
-        if (count.x > 0 && count.y > 0)
-        {
-            size = ret->m_data->m_image_size / count;
-        }
-        else
-        {
-            if (size.x <= 0 || size.y <= 0)
-                size = ivec2(32, 32);
-            count = max(ivec2(1, 1), ret->m_data->m_image_size / size);
-        }
-
-        for (int j = 0; j < count.y; ++j)
-        for (int i = 0; i < count.x; ++i)
-        {
-            ret->define_tile(ibox2(size * ivec2(i, j),
-                                   size * ivec2(i + 1, j + 1)));
-        }
-    }
-
-    return ret;
-}
-
-void TileSet::destroy(TileSet *tileset)
-{
-    // FIXME: decrement!
-    tileset_cache.erase(tileset);
-}
-
-TileSet::TileSet(std::string const &path)
-  : TextureImage(path),
-    m_tileset_data(new TileSetData()),
-    m_palette(nullptr)
-{
-}
-
-TileSet::TileSet(std::string const &path, image *img)
-  : TextureImage(path, img),
-    m_tileset_data(new TileSetData()),
-    m_palette(nullptr)
-{
-}
-
-TileSet::~TileSet()
-{
-    delete m_tileset_data;
-}
-
-void TileSet::Init(std::string const &path, ResourceCodecData* loaded_data)
-{
-    //Load tileset if available
-    auto tileset_data = dynamic_cast<ResourceTilesetData*>(loaded_data);
-    if (tileset_data != nullptr)
-    {
-        define_tile(tileset_data->m_tiles);
-    }
-
-    m_data->m_name = "<tileset> " + path;
-
-    super::Init(path, loaded_data);
-}
-
-void TileSet::Init(std::string const &path, Image* image)
-{
-    super::Init(path, image);
-
-    m_data->m_name = "<tileset> " + path;
-}
-
-//Inherited from entity -------------------------------------------------------
-std::string TileSet::GetName() const
-{
-    return m_data->m_name;
-}
-
-//New methods -----------------------------------------------------------------
-void TileSet::clear_all()
-{
-    m_tileset_data->m_tiles.clear();
-}
-
-int TileSet::define_tile(ibox2 rect)
-{
-    m_tileset_data->m_tiles.push(rect,
-             box2((vec2)rect.aa / (vec2)m_data->m_texture_size,
-                  (vec2)rect.bb / (vec2)m_data->m_texture_size));
-    return m_tileset_data->m_tiles.count() - 1;
-}
-
-void TileSet::define_tile(ivec2 count)
-{
-    ivec2 size = m_data->m_image_size / count;
-
-    for (int j = 0; j < count.y; ++j)
-    for (int i = 0; i < count.x; ++i)
-    {
-        define_tile(ibox2(size * ivec2(i, j),
-                          size * ivec2(i + 1, j + 1)));
-    }
-}
-
-void TileSet::define_tile(array<ibox2>& tiles)
-{
-    for (int i = 0; i < tiles.count(); i++)
-        define_tile(tiles[i]);
-}
-
-void TileSet::define_tile(array<ivec2, ivec2>& tiles)
-{
-    for (int i = 0; i < tiles.count(); i++)
-        define_tile(ibox2(tiles[i].m1, tiles[i].m1 + tiles[i].m2));
-}
-
-int TileSet::GetTileCount() const
-{
-    return m_tileset_data->m_tiles.count();
-}
-
-ivec2 TileSet::GetTileSize(int tileid) const
-{
-    return m_tileset_data->m_tiles[tileid].m1.extent();
-}
-
-ibox2 TileSet::GetTilePixel(int tileid) const
-{
-    return m_tileset_data->m_tiles[tileid].m1;
-}
-
-box2 TileSet::GetTileTexel(int tileid) const
-{
-    return m_tileset_data->m_tiles[tileid].m2;
-}
-
-//Palette ---------------------------------------------------------------------
-void TileSet::SetPalette(TileSet* palette)
-{
-    m_palette = palette;
-}
-
-TileSet* TileSet::GetPalette()
-{
-    return m_palette;
-}
-
-TileSet const* TileSet::GetPalette() const
-{
-    return m_palette;
-}
-
-void TileSet::BlitTile(uint32_t id, mat4 model, vec3 *vertex, vec2 *texture)
-{
-    ibox2 pixels = m_tileset_data->m_tiles[id].m1;
-    box2 texels = m_tileset_data->m_tiles[id].m2;
-    float dtx = texels.extent().x;
-    float dty = texels.extent().y;
-    float tx = texels.aa.x;
-    float ty = texels.aa.y;
-
-    vec3 pos = (model * vec4(0.f, 0.f, 0.f, 1.f)).xyz;
-    vec3 extent_x = 0.5f * pixels.extent().x * (model * vec4::axis_x).xyz;
-    vec3 extent_y = 0.5f * pixels.extent().y * (model * vec4::axis_y).xyz;
-
-    if (!m_data->m_image && m_data->m_texture)
-    {
-        *vertex++ = pos + extent_x + extent_y;
-        *vertex++ = pos - extent_x + extent_y;
-        *vertex++ = pos + extent_x - extent_y;
-        *vertex++ = pos + extent_x - extent_y;
-        *vertex++ = pos - extent_x + extent_y;
-        *vertex++ = pos - extent_x - extent_y;
-
-        *texture++ = vec2(tx + dtx, ty);
-        *texture++ = vec2(tx,       ty);
-        *texture++ = vec2(tx + dtx, ty + dty);
-        *texture++ = vec2(tx + dtx, ty + dty);
-        *texture++ = vec2(tx,       ty);
-        *texture++ = vec2(tx,       ty + dty);
-    }
-    else
-    {
-        memset((void *)vertex, 0, 6 * sizeof(vec3));
-        memset((void *)texture, 0, 6 * sizeof(vec2));
-    }
-}
-
-} /* namespace lol */
-
diff --git a/src/tileset.h b/src/tileset.h
deleted file mode 100644
index 2a7fb69d..00000000
--- a/src/tileset.h
+++ /dev/null
@@ -1,90 +0,0 @@
-//
-//  Lol Engine
-//
-//  Copyright © 2010—2019 Sam Hocevar <sam@hocevar.net>
-//
-//  Lol Engine is free software. It comes without any warranty, to
-//  the extent permitted by applicable law. You can redistribute it
-//  and/or modify it under the terms of the Do What the Fuck You Want
-//  to Public License, Version 2, as published by the WTFPL Task Force.
-//  See http://www.wtfpl.net/ for more details.
-//
-
-#pragma once
-
-//
-// The TileSet class
-// -----------------
-// A TileSet is a collection of tiles stored in a texture. Texture uploading
-// and freeing is done in the render tick method. When the refcount drops to
-// zero, the texture is freed.
-//
-
-/*
-#include <lol/image/image.h>
-#include <lol/gpu/texture.h>
-
-#include <stdint.h>
-
-#include "engine/entity.h"
-*/
-#include "textureimage.h"
-
-namespace lol
-{
-
-class TextureImageData;
-class TileSetData;
-
-class TileSet : public TextureImage
-{
-    typedef TextureImage super;
-
-public:
-    static TileSet *create(std::string const &path);
-    static TileSet *create(std::string const &path, image* img);
-    static TileSet *create(std::string const &path, image* img, array<ivec2, ivec2>& tiles);
-
-    /* Old style: path to PNG file */
-    static TileSet *create(std::string const &path, ivec2 size, ivec2 count);
-    static TileSet *create(std::string const &path, image* img, ivec2 size, ivec2 count);
-
-    static void destroy(TileSet *);
-
-    virtual ~TileSet();
-
-private:
-    TileSet(std::string const &path);
-    TileSet(std::string const &path, image *img);
-
-protected:
-    virtual void Init(std::string const &path, ResourceCodecData* loaded_data);
-    virtual void Init(std::string const &path, image* img);
-
-public:
-    /* Inherited from entity */
-    virtual std::string GetName() const;
-
-    /* New methods */
-    void clear_all();
-    int define_tile(ibox2 rect);
-    void define_tile(ivec2 count);
-    void define_tile(array<ibox2>& tiles);
-    void define_tile(array<ivec2, ivec2>& tiles);
-    int GetTileCount() const;
-    ivec2 GetTileSize(int tileid) const;
-    ibox2 GetTilePixel(int tileid) const;
-    box2 GetTileTexel(int tileid) const;
-
-    void SetPalette(TileSet* palette);
-    TileSet* GetPalette();
-    TileSet const * GetPalette() const;
-    void BlitTile(uint32_t id, mat4 model, vec3 *vertex, vec2 *texture);
-
-protected:
-    TileSetData *m_tileset_data;
-    TileSet *m_palette;
-};
-
-} /* namespace lol */
-
diff --git a/src/ui/buttons.inc b/src/ui/buttons.inc
deleted file mode 100644
index d847c999..00000000
--- a/src/ui/buttons.inc
+++ /dev/null
@@ -1,42 +0,0 @@
-//
-//  Lol Engine
-//
-//  Copyright © 2010—2019 Sam Hocevar <sam@hocevar.net>
-//
-//  Lol Engine is free software. It comes without any warranty, to
-//  the extent permitted by applicable law. You can redistribute it
-//  and/or modify it under the terms of the Do What the Fuck You Want
-//  to Public License, Version 2, as published by the WTFPL Task Force.
-//  See http://www.wtfpl.net/ for more details.
-//
-
-#if !defined _BTN
-#   error buttons.inc included without the _BTN macro
-#endif
-
-_BTN(0, Unknown)
-
-// Mouse buttons (FIXME: rename to LeftClick etc.?)
-_BTN(1, Left)
-_BTN(2, Middle)
-_BTN(3, Right)
-_BTN(4, Focus)
-
-// Typical game controller buttons
-_BTN(5, A)
-_BTN(6, B)
-_BTN(7, X)
-_BTN(8, Y)
-_BTN(9, DpadUp)
-_BTN(10, DpadDown)
-_BTN(11, DpadLeft)
-_BTN(12, DpadRight)
-_BTN(13, Start)
-_BTN(14, Back)
-_BTN(15, LeftThumb)
-_BTN(16, RightThumb)
-_BTN(17, LeftShoulder)
-_BTN(18, RightShoulder)
-
-#undef _BTN
-
diff --git a/src/ui/d3d9-input.cpp b/src/ui/d3d9-input.cpp
deleted file mode 100644
index 3c62fc88..00000000
--- a/src/ui/d3d9-input.cpp
+++ /dev/null
@@ -1,129 +0,0 @@
-//
-//  Lol Engine
-//
-//  Copyright © 2010—2019 Sam Hocevar <sam@hocevar.net>
-//
-//  Lol Engine is free software. It comes without any warranty, to
-//  the extent permitted by applicable law. You can redistribute it
-//  and/or modify it under the terms of the Do What the Fuck You Want
-//  to Public License, Version 2, as published by the WTFPL Task Force.
-//  See http://www.wtfpl.net/ for more details.
-//
-
-#if HAVE_CONFIG_H
-#   include "config.h"
-#endif
-
-#if defined LOL_USE_XINPUT
-#   include <d3d9.h>
-#   include <xinput.h>
-#endif
-
-#include <memory>
-
-#include <lol/engine-internal.h>
-
-#include "ui/d3d9-input.h"
-#include "ui/input.h"
-
-namespace lol
-{
-
-/*
- * D3d9 Input implementation class
- */
-
-class D3d9InputData
-{
-    friend class D3d9Input;
-
-private:
-#if defined LOL_USE_XINPUT
-    array<int, std::shared_ptr<input::device::joystick>> m_joysticks;
-#endif // LOL_USE_XINPUT
-};
-
-/*
- * Public D3d9Input class
- */
-
-D3d9Input::D3d9Input()
-  : m_data(new D3d9InputData())
-{
-#if defined LOL_USE_XINPUT
-    for (int i = 0; i < XUSER_MAX_COUNT; i++)
-    {
-        XINPUT_STATE state;
-        if (XInputGetState(i, &state) != ERROR_SUCCESS)
-            continue;
-
-        auto stick = input::joystick(i);
-
-        stick->internal_add_axis(input::axis::LeftX, "LeftX");
-        stick->internal_add_axis(input::axis::LeftY, "LeftY");
-        stick->internal_add_axis(input::axis::RightX, "RightX");
-        stick->internal_add_axis(input::axis::RightY, "RightY");
-        stick->internal_add_axis(input::axis::LeftShoulder, "LeftShoulder");
-        stick->internal_add_axis(input::axis::RightShoulder, "RightShoulder");
-
-        #define _BTN(id, name) stick->internal_add_button(input::button::BTN_##name, #name);
-        #include "ui/buttons.inc" // FIXME: ignore mouse buttons here
-
-        m_data->m_joysticks.push(i, stick);
-    }
-#endif
-
-    m_gamegroup = tickable::group::game::input;
-}
-
-D3d9Input::~D3d9Input()
-{
-#if defined LOL_USE_XINPUT
-    /* Unregister all the joysticks we added (FIXME: this code seems unnecessary) */
-    while (m_data->m_joysticks.count())
-        m_data->m_joysticks.remove(0);
-#endif
-    delete m_data;
-}
-
-void D3d9Input::tick_game(float seconds)
-{
-    entity::tick_game(seconds);
-
-#if defined LOL_USE_XINPUT
-    for (int i = 0; i < m_data->m_joysticks.count(); i++)
-    {
-        XINPUT_STATE state;
-        if (XInputGetState(m_data->m_joysticks[i].m1, &state) != ERROR_SUCCESS)
-            continue;
-
-        auto stick = m_data->m_joysticks[i].m2;
-        stick->internal_begin_frame();
-        stick->internal_set_axis(input::axis::LeftX, state.Gamepad.sThumbLX / 32768.f);
-        stick->internal_set_axis(input::axis::LeftY, -state.Gamepad.sThumbLY / 32768.f);
-        stick->internal_set_axis(input::axis::RightX, state.Gamepad.sThumbRX / 32768.f);
-        stick->internal_set_axis(input::axis::RightY, -state.Gamepad.sThumbRY / 32768.f);
-        stick->internal_set_axis(input::axis::LeftShoulder, state.Gamepad.bLeftTrigger / 32768.f);
-        stick->internal_set_axis(input::axis::RightShoulder, state.Gamepad.bRightTrigger / 32768.f);
-
-        for (int b = 0; b < 16; b++)
-        {
-            // Reserved values
-            if ((1 << b) > XINPUT_GAMEPAD_RIGHT_SHOULDER && (1 << b) < XINPUT_GAMEPAD_A)
-                continue;
-
-            int key_index = (1 << b) > XINPUT_GAMEPAD_RIGHT_SHOULDER ? b - 2 : b;
-
-            m_data->m_joysticks[i].m2->internal_set_button((input::button)key_index, ((uint16_t)(state.Gamepad.wButtons) >> b) & 1);
-        }
-    }
-#endif
-}
-
-void D3d9Input::tick_draw(float seconds, Scene &scene)
-{
-    entity::tick_draw(seconds, scene);
-}
-
-} /* namespace lol */
-
diff --git a/src/ui/d3d9-input.h b/src/ui/d3d9-input.h
deleted file mode 100644
index 8fd36d95..00000000
--- a/src/ui/d3d9-input.h
+++ /dev/null
@@ -1,42 +0,0 @@
-//
-//  Lol Engine
-//
-//  Copyright © 2010—2019 Sam Hocevar <sam@hocevar.net>
-//
-//  Lol Engine is free software. It comes without any warranty, to
-//  the extent permitted by applicable law. You can redistribute it
-//  and/or modify it under the terms of the Do What the Fuck You Want
-//  to Public License, Version 2, as published by the WTFPL Task Force.
-//  See http://www.wtfpl.net/ for more details.
-//
-
-#pragma once
-
-//
-// The D3d9Input class
-// -------------------
-//
-
-#include "engine/entity.h"
-
-namespace lol
-{
-
-class D3d9InputData;
-
-class D3d9Input : public entity
-{
-public:
-    D3d9Input();
-    virtual ~D3d9Input();
-
-protected:
-    virtual void tick_game(float seconds);
-    virtual void tick_draw(float seconds, Scene &scene);
-
-private:
-    D3d9InputData *m_data;
-};
-
-} /* namespace lol */
-
diff --git a/src/ui/gui.cpp b/src/ui/gui.cpp
deleted file mode 100644
index 11beeecd..00000000
--- a/src/ui/gui.cpp
+++ /dev/null
@@ -1,432 +0,0 @@
-//
-//  Lol Engine
-//
-//  Copyright © 2017—2019 Sam Hocevar <sam@hocevar.net>
-//            © 2009—2015 Benjamin “Touky” Huet <huet.benjamin@gmail.com>
-//
-//  Lol Engine is free software. It comes without any warranty, to
-//  the extent permitted by applicable law. You can redistribute it
-//  and/or modify it under the terms of the Do What the Fuck You Want
-//  to Public License, Version 2, as published by the WTFPL Task Force.
-//  See http://www.wtfpl.net/ for more details.
-//
-
-#include <lol/engine-internal.h>
-
-#include <cstdio>
-#include <string>
-
-//
-// The Imgui integration
-//
-
-using namespace lol;
-
-namespace
-{
-    enum key_enum
-    {
-        LeftClick = 300,
-        RightClick,
-        MiddleClick,
-        Focus,
-    };
-}
-
-static gui* g_gui = nullptr;
-
-//-----------------------------------------------------------------------------
-gui::gui(ImFontAtlas *shared_font_atlas)
-{
-    ImGui::CreateContext(shared_font_atlas);
-
-    m_gamegroup = tickable::group::game::gui;
-    m_drawgroup = tickable::group::draw::gui;
-
-    // Build shader code -------------------------------------------------------
-    ShaderVar out_vertex = ShaderVar::GetShaderOut(ShaderProgram::Vertex);
-    ShaderVar out_pixel = ShaderVar::GetShaderOut(ShaderProgram::Pixel);
-
-    ShaderVar pass_texcoord = ShaderVar(ShaderVariable::Varying, ShaderVariableType::Vec2, "texcoord");
-    ShaderVar pass_color = ShaderVar(ShaderVariable::Varying, ShaderVariableType::Vec4, "color");
-
-    ShaderVar in_position = ShaderVar(ShaderVariable::Attribute, ShaderVariableType::Vec2, "position");
-    ShaderVar in_texcoord = ShaderVar(ShaderVariable::Attribute, ShaderVariableType::Vec2, "texcoord");
-    ShaderVar in_color = ShaderVar(ShaderVariable::Attribute, ShaderVariableType::Vec4, "color");
-
-    m_ortho.m_var = ShaderVar(ShaderVariable::Uniform, ShaderVariableType::Mat4, "ortho");
-    m_texture.m_var = ShaderVar(ShaderVariable::Uniform, ShaderVariableType::sampler2D, "texture");
-
-    ShaderBlock imgui_vertex("imgui_vertex");
-    imgui_vertex
-        << out_vertex << m_ortho << in_position
-        << pass_texcoord << in_texcoord
-        << pass_color << in_color;
-    imgui_vertex.SetMainCode(lol::format(
-        "%s = .5 * %s * vec4(%s, -1.0, 1.0);\n" "%s = %s;\n" "%s = %s;\n",
-        out_vertex.tostring().c_str(),
-        m_ortho.tostring().c_str(),
-        in_position.tostring().c_str(),
-        pass_texcoord.tostring().c_str(),
-        in_texcoord.tostring().c_str(),
-        pass_color.tostring().c_str(),
-        in_color.tostring().c_str()));
-
-    ShaderBlock imgui_pixel("imgui_pixel");
-    imgui_pixel << m_texture << pass_texcoord << pass_color << out_pixel;
-    imgui_pixel.SetMainCode(lol::format(
-        "vec4 col = %s * texture2D(%s, %s);\n" "if (col.a == 0.0) discard;\n" "%s = col;\n",
-        pass_color.tostring().c_str(),
-        m_texture.tostring().c_str(),
-        pass_texcoord.tostring().c_str(),
-        out_pixel.tostring().c_str()));
-
-    m_builder << ShaderProgram::Vertex << imgui_vertex
-              << ShaderProgram::Pixel << imgui_pixel;
-}
-
-gui::~gui()
-{
-    ImGui::GetIO().Fonts->TexID = nullptr;
-    Ticker::Unref(m_font);
-    m_font = nullptr;
-
-    ImGui::DestroyContext();
-}
-
-void gui::init(ImFontAtlas *shared_font_atlas)
-{
-    Ticker::Ref(g_gui = new gui(shared_font_atlas));
-}
-
-void gui::shutdown()
-{
-    Ticker::Unref(g_gui);
-    g_gui = nullptr;
-}
-
-#if 0 // CALLBACKS
-void ImGui_ImplGlfw_CharCallback(GLFWwindow* window, unsigned int c)
-{
-ImGuiIO& io = ImGui::GetIO();
-if (c > 0 && c < 0x10000)
-io.AddInputCharacter((unsigned short)c);
-}
-#endif
-
-std::string gui::clipboard()
-{
-    return g_gui ? g_gui->m_clipboard : "";
-}
-
-void gui::static_set_clipboard(void *data, const char* text)
-{
-    std::string *clipboard = (std::string *)data;
-    *clipboard = text;
-}
-
-const char* gui::static_get_clipboard(void *data)
-{
-    std::string *clipboard = (std::string *)data;
-    return clipboard->c_str();
-}
-
-void gui::refresh_fonts()
-{
-    if (g_gui->m_font)
-        Ticker::Unref(g_gui->m_font);
-
-    // Build texture
-    unsigned char* pixels;
-    ivec2 size;
-    ImGuiIO& io = ImGui::GetIO();
-    io.Fonts->GetTexDataAsRGBA32(&pixels, &size.x, &size.y);
-
-    Image* image = new Image();
-    image->Copy(pixels, size, PixelFormat::RGBA_8);
-
-    Ticker::Ref(g_gui->m_font = new TextureImage("", image));
-}
-
-bool gui::init_game()
-{
-    ImGuiIO& io = ImGui::GetIO();
-    //ImFont* font0 = io.Fonts->AddFontDefault();
-
-    // Keyboard mapping; these are the only ones ImGui cares about, the
-    // rest is just handled by the application.
-    io.KeyMap[ImGuiKey_Tab]         = (int)input::key::SC_Tab;
-    io.KeyMap[ImGuiKey_LeftArrow]   = (int)input::key::SC_Left;
-    io.KeyMap[ImGuiKey_RightArrow]  = (int)input::key::SC_Right;
-    io.KeyMap[ImGuiKey_UpArrow]     = (int)input::key::SC_Up;
-    io.KeyMap[ImGuiKey_DownArrow]   = (int)input::key::SC_Down;
-    io.KeyMap[ImGuiKey_Home]        = (int)input::key::SC_Home;
-    io.KeyMap[ImGuiKey_End]         = (int)input::key::SC_End;
-    io.KeyMap[ImGuiKey_Delete]      = (int)input::key::SC_Delete;
-    io.KeyMap[ImGuiKey_Backspace]   = (int)input::key::SC_Backspace;
-    io.KeyMap[ImGuiKey_Enter]       = (int)input::key::SC_Return;
-    io.KeyMap[ImGuiKey_Escape]      = (int)input::key::SC_Escape;
-    io.KeyMap[ImGuiKey_A]           = (int)input::key::SC_A;
-    io.KeyMap[ImGuiKey_C]           = (int)input::key::SC_C;
-    io.KeyMap[ImGuiKey_V]           = (int)input::key::SC_V;
-    io.KeyMap[ImGuiKey_X]           = (int)input::key::SC_X;
-    io.KeyMap[ImGuiKey_Y]           = (int)input::key::SC_Y;
-    io.KeyMap[ImGuiKey_Z]           = (int)input::key::SC_Z;
-
-    io.RenderDrawListsFn = static_render_draw_lists;
-    io.SetClipboardTextFn = static_set_clipboard;
-    io.GetClipboardTextFn = static_get_clipboard;
-    io.ClipboardUserData = &m_clipboard;
-
-    return true;
-}
-
-void gui::tick_game(float seconds)
-{
-    super::tick_game(seconds);
-
-    auto keyboard = input::keyboard();
-    auto mouse = input::mouse();
-
-    ImGuiIO& io = ImGui::GetIO();
-
-    // Disable the ini file for now
-    io.IniFilename = nullptr;
-
-    // Init Texture
-    if (!m_font)
-    {
-        refresh_fonts();
-    }
-
-    // Texture has been created
-    if (m_font && m_font->GetTexture())
-    {
-        io.Fonts->TexID = (void *)m_font->GetTexture();
-    }
-
-    // Setup display size (every frame to accommodate for window resizing)
-    auto video_size = vec2(Video::GetSize());
-    io.DisplaySize = video_size;
-
-    // Setup time step
-    io.DeltaTime = seconds;
-    io.MouseDrawCursor = true;
-
-    // Update Keyboard
-    io.KeyCtrl = keyboard->key(input::key::SC_LCtrl)
-              || keyboard->key(input::key::SC_RCtrl);
-    io.KeyShift = keyboard->key(input::key::SC_LShift)
-               || keyboard->key(input::key::SC_RShift);
-
-    for (input::key k : input::all_keys())
-        io.KeysDown[(int)k] = keyboard->key(k);
-
-    // Update text input
-    if (io.WantTextInput)
-    {
-        std::string text = keyboard->text();
-        //text.case_change(io.KeyShift);
-        for (auto ch : text)
-            io.AddInputCharacter(ch);
-    }
-    keyboard->capture_text(io.WantTextInput);
-
-    // Update mouse
-    vec2 cursor(mouse->axis(input::axis::X),
-                1.f - mouse->axis(input::axis::Y));
-
-    io.MousePos = cursor * video_size;
-    //msg::debug("%.2f/%.2f\n", io.MousePos.x, io.MousePos.y);
-    io.MouseWheel = mouse->axis(input::axis::Wheel);
-
-    io.MouseDown[0] = mouse->button(input::button::BTN_Left);
-    io.MouseDown[1] = mouse->button(input::button::BTN_Right);
-    io.MouseDown[2] = mouse->button(input::button::BTN_Middle);
-    // FIXME: handle key_enum::Focus?
-
-    // Start the frame
-    ImGui::NewFrame();
-}
-
-bool gui::release_game()
-{
-    ImGui::EndFrame();
-    return true;
-}
-
-bool gui::init_draw()
-{
-    // Create shader
-    m_shader = Shader::Create(m_builder.GetName(), m_builder.Build());
-    ASSERT(m_shader);
-
-    m_ortho.m_uniform = m_shader->GetUniformLocation(m_ortho.m_var.tostring());
-    m_texture.m_uniform = m_shader->GetUniformLocation(m_texture.m_var.tostring());
-
-    m_attribs << m_shader->GetAttribLocation(VertexUsage::Position, 0)
-              << m_shader->GetAttribLocation(VertexUsage::TexCoord, 0)
-              << m_shader->GetAttribLocation(VertexUsage::Color, 0);
-
-    m_vdecl = std::make_shared<VertexDeclaration>(
-        VertexStream<vec2, vec2, u8vec4>(
-            VertexUsage::Position,
-            VertexUsage::TexCoord,
-            VertexUsage::Color));
-
-    return true;
-}
-
-void gui::tick_draw(float seconds, Scene &scene)
-{
-    super::tick_draw(seconds, scene);
-
-    scene.AddPrimitiveRenderer(this, std::make_shared<primitive>());
-}
-
-bool gui::release_draw()
-{
-    m_vdecl.reset();
-    return true;
-}
-
-void gui::primitive::Render(Scene& scene, std::shared_ptr<PrimitiveSource> prim)
-{
-    UNUSED(scene, prim);
-
-    ImGui::Render();
-    ImGui::EndFrame();
-}
-
-//// Data
-//static GLFWwindow*  g_Window = NULL;
-//static double       g_Time = 0.0f;
-//static bool         g_MousePressed[3] = { false, false, false };
-//static float        g_MouseWheel = 0.0f;
-//static GLuint       g_FontTexture = 0;
-
-//-------------------------------------------------------------------------
-// This is the main rendering function that you have to implement and provide to ImGui (via setting up 'RenderDrawListsFn' in the ImGuiIO structure)
-// If text or lines are blurry when integrating ImGui in your engine:
-// - in your Render function, try translating your projection matrix by (0.5f,0.5f) or (0.375f,0.375f)
-//-------------------------------------------------------------------------
-void gui::static_render_draw_lists(ImDrawData* draw_data)
-{
-    g_gui->render_draw_lists(draw_data);
-}
-
-void gui::render_draw_lists(ImDrawData* draw_data)
-{
-    if (draw_data == nullptr)
-        return;
-
-    vec2 size = vec2(Video::GetSize());
-    float alpha = 1.f;
-    mat4 ortho = mat4::ortho(size.x * alpha, size.y * alpha, -1000.f, 1000.f)
-        * mat4::lookat(vec3::axis_z, vec3::zero, vec3::axis_y)
-        * mat4::scale(vec3::axis_x - vec3::axis_y - vec3::axis_z)
-        * mat4::translate(-size.x * .5f * alpha, -size.y * .5f * alpha, 0.f);
-
-    // Do not render without shader
-    if (!m_shader)
-        return;
-
-    render_context rc(Scene::GetScene(0).get_renderer());
-    rc.cull_mode(CullMode::Disabled);
-    rc.depth_func(DepthFunc::Disabled);
-    rc.scissor_mode(ScissorMode::Enabled);
-
-    m_shader->Bind();
-
-    // Register uniforms
-    m_shader->SetUniform(m_ortho, ortho);
-
-    for (int n = 0; n < draw_data->CmdListsCount; n++)
-    {
-        auto const &command_list = *draw_data->CmdLists[n];
-        /*const unsigned char* vtx_buffer = (const unsigned char*)&command_list.VtxBuffer.front();*/
-
-        struct Vertex
-        {
-            vec2 pos, tex;
-            u8vec4 color;
-        };
-
-        auto vbo = std::make_shared<VertexBuffer>(command_list.VtxBuffer.Size * sizeof(ImDrawVert));
-        vbo->set_data(command_list.VtxBuffer.Data, command_list.VtxBuffer.Size * sizeof(ImDrawVert));
-
-        auto ibo = std::make_shared<IndexBuffer>(command_list.IdxBuffer.Size * sizeof(ImDrawIdx));
-        ibo->set_data(command_list.IdxBuffer.Data, command_list.IdxBuffer.Size * sizeof(ImDrawIdx));
-
-        m_vdecl->Bind();
-        ibo->Bind();
-        m_vdecl->SetStream(vbo, m_attribs[0], m_attribs[1], m_attribs[2]);
-
-        const ImDrawIdx* idx_buffer_offset = 0;
-        for (int cmd_i = 0; cmd_i < command_list.CmdBuffer.Size; cmd_i++)
-        {
-            auto const &command = command_list.CmdBuffer[cmd_i];
-            Texture* texture = (Texture*)command.TextureId;
-            if (texture)
-            {
-                texture->Bind();
-                m_shader->SetUniform(m_texture, texture->GetTextureUniform(), 0);
-            }
-
-            rc.scissor_rect(command.ClipRect);
-
-#ifdef SHOW_IMGUI_DEBUG
-            //-----------------------------------------------------------------
-            //<Debug render> --------------------------------------------------
-            //-----------------------------------------------------------------
-            //Doesn't work anymore ......
-            static uint32_t idx_buffer_offset_i = 0;
-            if (cmd_i == 0)
-                idx_buffer_offset_i = 0;
-
-            float mod = -200.f;
-            vec3 off = vec3(vec2(-size.x, -size.y), 0.f);
-            vec3 pos[4] = {
-                (1.f / mod) * (off + vec3(0.f)),
-                (1.f / mod) * (off + size.x * vec3::axis_x),
-                (1.f / mod) * (off + size.x * vec3::axis_x + size.y * vec3::axis_y),
-                (1.f / mod) * (off + size.y * vec3::axis_y)
-            };
-            for (int i = 0; i < 4; ++i)
-                Debug::DrawLine(pos[i], pos[(i + 1) % 4], Color::white);
-            ImDrawVert* buf = vert;
-            for (uint16_t i = 0; i < command.ElemCount; i += 3)
-            {
-                uint16_t ib = indices[idx_buffer_offset_i + i];
-                vec2 pos[3];
-                pos[0] = vec2(buf[ib + 0].pos.x, buf[ib + 0].pos.y);
-                pos[1] = vec2(buf[ib + 1].pos.x, buf[ib + 1].pos.y);
-                pos[2] = vec2(buf[ib + 2].pos.x, buf[ib + 2].pos.y);
-                vec4 col[3];
-                col[0] = vec4(Color::FromRGBA32(buf[ib + 0].col).arg, 1.f);
-                col[1] = vec4(Color::FromRGBA32(buf[ib + 1].col).arg, 1.f);
-                col[2] = vec4(Color::FromRGBA32(buf[ib + 2].col).arg, 1.f);
-                Debug::DrawLine((off + vec3(pos[0], 0.f)) / mod, (off + vec3(pos[1], 0.f)) / mod, col[0]);
-                Debug::DrawLine((off + vec3(pos[1], 0.f)) / mod, (off + vec3(pos[2], 0.f)) / mod, col[1]);
-                Debug::DrawLine((off + vec3(pos[2], 0.f)) / mod, (off + vec3(pos[0], 0.f)) / mod, col[2]);
-            }
-            idx_buffer_offset_i += command.ElemCount;
-
-            //-----------------------------------------------------------------
-            //<\Debug render> -------------------------------------------------
-            //-----------------------------------------------------------------
-#endif //SHOW_IMGUI_DEBUG
-            //Debug::DrawLine(vec2::zero, vec2::axis_x /*, Color::green*/);
-
-            m_vdecl->DrawIndexedElements(MeshPrimitive::Triangles, command.ElemCount, (const short*)idx_buffer_offset);
-
-            idx_buffer_offset += command.ElemCount;
-        }
-
-        m_vdecl->Unbind();
-        ibo->Unbind();
-    }
-
-    m_shader->Unbind();
-}
-
diff --git a/src/ui/gui.h b/src/ui/gui.h
deleted file mode 100644
index cc834106..00000000
--- a/src/ui/gui.h
+++ /dev/null
@@ -1,102 +0,0 @@
-//
-//  Lol Engine
-//
-//  Copyright © 2017—2019 Sam Hocevar <sam@hocevar.net>
-//            © 2009—2015 Benjamin “Touky” Huet <huet.benjamin@gmail.com>
-//
-//  Lol Engine is free software. It comes without any warranty, to
-//  the extent permitted by applicable law. You can redistribute it
-//  and/or modify it under the terms of the Do What the Fuck You Want
-//  to Public License, Version 2, as published by the WTFPL Task Force.
-//  See http://www.wtfpl.net/ for more details.
-//
-
-#pragma once
-
-#include <string>
-#include <map>
-#include <memory>
-
-//
-// The Imgui integration
-//
-
-#define IM_VEC2_CLASS_EXTRA \
-    ImVec2(const lol::vec2 &v) { x = v.x; y = v.y; } \
-    ImVec2(const lol::ivec2 &v) : ImVec2(lol::vec2(v)) { } \
-    operator lol::vec2() const { return lol::vec2(x, y); } \
-    operator lol::ivec2() const { return lol::ivec2(lol::vec2(x, y)); }
-
-#define IM_VEC4_CLASS_EXTRA \
-    ImVec4(const lol::vec4 &v) { x = v.x; y = v.y; z = v.z; w = v.w; } \
-    ImVec4(const lol::ivec4 &v) : ImVec4(lol::vec4(v)) { } \
-    operator lol::vec4() const { return lol::vec4(x, y, z, w); } \
-    operator lol::ivec4() const { return lol::ivec4(lol::vec4(x, y, z, w)); }
-
-#include "imgui.h"
-
-#undef IM_VEC2_CLASS_EXTRA
-#undef IM_VEC4_CLASS_EXTRA
-
-namespace lol
-{
-
-class gui : public entity
-{
-public:
-    gui(ImFontAtlas *shared_font_atlas);
-    ~gui();
-    std::string GetName() const override { return "<gui>"; }
-
-    static void init(ImFontAtlas *shared_font_atlas = nullptr);
-    static void shutdown();
-    static std::string clipboard();
-    static void refresh_fonts();
-
-private:
-    typedef entity super;
-
-protected:
-    virtual bool init_game() override;
-    virtual bool init_draw() override;
-    virtual void tick_game(float seconds) override;
-    virtual void tick_draw(float seconds, Scene &scene) override;
-    virtual bool release_game() override;
-    virtual bool release_draw() override;
-
-    static void static_set_clipboard(void *data, const char* text);
-    static const char* static_get_clipboard(void *data);
-
-    static void static_render_draw_lists(ImDrawData* draw_data);
-    void render_draw_lists(ImDrawData* draw_data);
-
-    struct Uniform
-    {
-        Uniform() { }
-        Uniform(ShaderVar var) { m_var = var; }
-        std::string tostring() const { return m_var.tostring(); }
-        operator ShaderVar() const { return m_var; }
-        operator ShaderUniform() const { return m_uniform; }
-        //--
-        ShaderVar m_var;
-        ShaderUniform m_uniform;
-    };
-    //-------------------------------------------------------------------------
-    TextureImage* m_font = nullptr;
-    ShaderBuilder m_builder = ShaderBuilder("imgui_shader", "120");
-    std::shared_ptr<Shader> m_shader = nullptr;
-    Uniform m_ortho;
-    Uniform m_texture;
-    array<ShaderAttrib> m_attribs;
-    std::shared_ptr<VertexDeclaration> m_vdecl;
-    std::string m_clipboard;
-
-    class primitive : public PrimitiveRenderer
-    {
-    public:
-        primitive() { }
-        virtual void Render(Scene& scene, std::shared_ptr<PrimitiveSource> primitive);
-    };
-};
-
-} /* namespace lol */
diff --git a/src/ui/input.cpp b/src/ui/input.cpp
deleted file mode 100644
index 424a1658..00000000
--- a/src/ui/input.cpp
+++ /dev/null
@@ -1,161 +0,0 @@
-//
-//  Lol Engine
-//
-//  Copyright © 2017—2019 Sam Hocevar <sam@hocevar.net>
-//
-//  Lol Engine is free software. It comes without any warranty, to
-//  the extent permitted by applicable law. You can redistribute it
-//  and/or modify it under the terms of the Do What the Fuck You Want
-//  to Public License, Version 2, as published by the WTFPL Task Force.
-//  See http://www.wtfpl.net/ for more details.
-//
-
-#include <lol/engine-internal.h>
-
-#include <string>
-#include <map>
-#include <memory>
-
-#include "ui/input.h"
-
-namespace lol
-{
-
-std::shared_ptr<input> input::get()
-{
-    static auto instance = new input();
-    static auto shared_instance = std::shared_ptr<input>(instance);
-    return shared_instance;
-}
-
-input::input()
-{
-    // Create default keyboard device
-    m_keyboard = std::make_shared<input::device::keyboard>("default keyboard");
-    /* Register all scancodes known to SDL (from the USB standard) */
-    #define _SC(id, str, name) m_keyboard->internal_add_key(input::key::SC_##name, #name);
-    #include "ui/keys.inc"
-
-    // Create default mouse device
-    m_mouse = std::make_shared<input::device::mouse>("default mouse");
-    #define _BTN(id, name) m_mouse->internal_add_button(input::button::BTN_##name, #name);
-    #include "ui/buttons.inc" // FIXME: this will also add joystick buttons!
-    m_mouse->internal_add_axis(input::axis::X, "X");
-    m_mouse->internal_add_axis(input::axis::Y, "Y");
-    m_mouse->internal_add_axis(input::axis::ScreenX, "ScreenX");
-    m_mouse->internal_add_axis(input::axis::ScreenY, "ScreenY");
-    m_mouse->internal_add_axis(input::axis::MoveX, "MoveX");
-    m_mouse->internal_add_axis(input::axis::MoveY, "MoveY");
-    m_mouse->internal_add_axis(input::axis::ScreenMoveX, "ScreenMoveX");
-    m_mouse->internal_add_axis(input::axis::ScreenMoveY, "ScreenMoveY");
-    m_mouse->internal_add_axis(input::axis::Wheel, "Wheel");
-
-    // FIXME: there are no default joysticks and they will all have zero axes by default
-}
-
-// Lookup tables for scancode and key name lookups
-static std::vector<input::key> g_all_keys
-{
-#define _SC(code, str, name) input::key::SC_##name,
-#include "ui/keys.inc"
-};
-
-static std::map<input::key, std::string> g_key_to_name
-{
-#define _SC(code, str, name) { input::key::SC_##name, #name },
-#include "ui/keys.inc"
-};
-
-static std::map<std::string, input::key> g_name_to_key
-{
-#define _SC(code, str, name) { #name, input::key::SC_##name },
-#include "ui/keys.inc"
-};
-
-std::vector<input::key> const &input::all_keys()
-{
-    return g_all_keys;
-}
-
-std::string const &input::key_to_name(input::key k)
-{
-    static std::string unknown("Unknown");
-    auto it = g_key_to_name.find(k);
-    return it == g_key_to_name.end() ? unknown : it->second;
-}
-
-input::key input::name_to_key(std::string const &name)
-{
-    auto it = g_name_to_key.find(name);
-    return it == g_name_to_key.end() ? key::SC_Unknown : it->second;
-}
-
-std::shared_ptr<input::device::joystick> input::joystick(int n)
-{
-    auto &joysticks = get()->m_joysticks;
-
-    if (joysticks.find(n) == joysticks.end())
-        joysticks[n] = std::make_shared<input::device::joystick>(format("joystick %d", n));
-
-    return joysticks[n];
-}
-
-//
-// input::device
-//
-
-void input::device::internal_add_key(input::key key, const char* name)
-{
-    while ((int)key >= (int)m_key_names.size())
-    {
-        m_key_names.push_back("");
-        m_keys.push_back(false);
-    }
-
-    m_key_names[(int)key] = name;
-}
-
-void input::device::internal_add_button(input::button button, const char* name)
-{
-    while ((int)button >= (int)m_button_names.size())
-    {
-        m_button_names.push_back("");
-        m_buttons.push_back(false);
-    }
-
-    m_button_names[(int)button] = name;
-}
-
-void input::device::internal_add_axis(input::axis axis, const char* name)
-{
-    while ((int)axis >= (int)m_axis_names.size())
-    {
-        m_axis_names.push_back("");
-        m_axes.push_back(0.0f);
-    }
-
-    m_axis_names[(int)axis] = name;
-}
-
-//
-// input::device::keyboard
-//
-
-std::string input::device::keyboard::text()
-{
-    std::string ret = m_text;
-    m_text = "";
-    return ret;
-}
-
-bool input::device::keyboard::capture_text()
-{
-    return m_input_active;
-}
-
-void input::device::keyboard::capture_text(bool status)
-{
-    m_input_active = status;
-}
-
-} /* namespace lol */
diff --git a/src/ui/input.h b/src/ui/input.h
deleted file mode 100644
index 7b5fab88..00000000
--- a/src/ui/input.h
+++ /dev/null
@@ -1,273 +0,0 @@
-//
-//  Lol Engine
-//
-//  Copyright © 2017—2019 Sam Hocevar <sam@hocevar.net>
-//
-//  Lol Engine is free software. It comes without any warranty, to
-//  the extent permitted by applicable law. You can redistribute it
-//  and/or modify it under the terms of the Do What the Fuck You Want
-//  to Public License, Version 2, as published by the WTFPL Task Force.
-//  See http://www.wtfpl.net/ for more details.
-//
-
-#pragma once
-
-#include <string>
-#include <vector>
-#include <unordered_set>
-#include <memory>
-
-namespace lol
-{
-
-// FIXME: maybe m_key_names is no longer required?
-
-class input
-{
-public:
-    enum class key : uint16_t
-    {
-        #define _SC(id, str, name) SC_##name = id,
-        #include "ui/keys.inc"
-    };
-
-    enum class button : uint16_t
-    {
-        #define _BTN(id, name) BTN_##name = id,
-        #include "ui/buttons.inc"
-    };
-
-    enum class axis : uint16_t
-    {
-        // Mouse
-        Wheel,
-        X,
-        Y,
-        ScreenX,
-        ScreenY,
-        MoveX,
-        MoveY,
-        ScreenMoveX,
-        ScreenMoveY,
-        // Joystick
-        LeftX,
-        LeftY,
-        RightX,
-        RightY,
-        LeftShoulder,
-        RightShoulder,
-    };
-
-    class device
-    {
-    public:
-        device(std::string const &name) : m_name(name) {}
-
-        class mouse;
-        class keyboard;
-        class joystick;
-
-        // Get the name of this input device
-        const std::string& name() const { return m_name; }
-
-#if 0
-        //
-        // Bindings section
-        //
-
-        void bind(input::key key, uint16_t event);
-        void unbind(input::key key, uint16_t event);
-
-        void bind(input::button button, uint16_t event);
-        void unbind(input::button button, uint16_t event);
-
-        void bind(input::axis axis, uint16_t event);
-        void unbind(input::axis axis, uint16_t event);
-#endif
-
-        //
-        // Key, button etc. state
-        //
-
-        // Get the current state of the given key
-        bool key(input::key key) const
-        {
-            return (size_t)key >= m_keys.size() ? false : m_keys[(int)key];
-        }
-
-        bool key_released(input::key key) const
-        {
-            return m_released_keys.find(key) != m_released_keys.end();
-        }
-
-        bool key_pressed(input::key key) const
-        {
-            return m_pressed_keys.find(key) != m_pressed_keys.end();
-        }
-
-        // Get the current state of the given button
-        bool button(input::button button) const
-        {
-            return (size_t)button >= m_buttons.size() ? false : m_buttons[(int)button];
-        }
-
-        bool button_released(input::button button) const
-        {
-            return m_released_buttons.find(button) != m_released_buttons.end();
-        }
-
-        bool button_pressed(input::button button) const
-        {
-            return m_pressed_buttons.find(button) != m_pressed_buttons.end();
-        }
-
-        // Get the current state of the given axis
-        float axis(input::axis axis) const
-        {
-            return (size_t)axis >= m_axes.size() ? 0.0f : m_axes[(int)axis];
-        }
-
-        bool axis_changed(input::axis axis) const
-        {
-            return m_changed_axes.find(axis) != m_changed_axes.end();
-        }
-
-        // TODO: axis sensitivity was removed
-
-    public:
-        /** Internal functions that allow to construct an input device
-          * dynamically, when the keys, axis and cursors are not known at
-          * compile time. */
-        void internal_add_button(input::button, char const *name);
-        void internal_add_axis(input::axis, char const *name);
-        void internal_add_key(input::key, char const *name);
-
-        /* Internal functions for the platform-specific drivers. */
-        void internal_begin_frame()
-        {
-            m_pressed_keys.clear();
-            m_released_keys.clear();
-            m_pressed_buttons.clear();
-            m_released_buttons.clear();
-            m_changed_axes.clear();
-        }
-
-        void internal_set_key(input::key key, bool state)
-        {
-            if (m_keys[(int)key] != state)
-                (state ? m_pressed_keys : m_released_keys).insert(key);
-            m_keys[(int)key] = state;
-        }
-
-        void internal_set_button(input::button button, bool state)
-        {
-            if (m_buttons[(int)button] != state)
-                (state ? m_pressed_buttons : m_released_buttons).insert(button);
-            m_buttons[(int)button] = state;
-        }
-
-        void internal_set_axis(input::axis axis, float value)
-        {
-            if (m_axes[(int)axis] != value)
-                m_changed_axes.insert(axis);
-            m_axes[(int)axis] = value;
-        }
-
-    protected:
-        std::string m_name;
-
-        std::vector<std::string> m_key_names;
-        std::vector<std::string> m_button_names;
-        std::vector<std::string> m_axis_names;
-
-        /** Key and button states (pressed/released) */
-        std::vector<bool> m_keys;
-        std::unordered_set<input::key> m_pressed_keys, m_released_keys;
-        std::vector<bool> m_buttons;
-        std::unordered_set<input::button> m_pressed_buttons, m_released_buttons;
-        std::vector<float> m_axes;
-        std::unordered_set<input::axis> m_changed_axes;
-    };
-
-    // Default devices
-
-    static std::shared_ptr<class device::keyboard> keyboard() { return get()->m_keyboard; }
-    static std::shared_ptr<class device::mouse> mouse() { return get()->m_mouse; }
-    static std::shared_ptr<class device::joystick> joystick(int n);
-
-    static std::vector<key> const &all_keys();
-    static std::string const &key_to_name(key k);
-    static key name_to_key(std::string const &name);
-
-private:
-    input();
-
-    static std::shared_ptr<input> get();
-
-    std::shared_ptr<device::keyboard> m_keyboard;
-    std::shared_ptr<device::mouse> m_mouse;
-    std::map<int, std::shared_ptr<device::joystick>> m_joysticks;
-};
-
-//
-// The mouse class
-//
-
-class input::device::mouse : public input::device
-{
-public:
-    mouse(std::string const &name) : input::device(name) {}
-
-    // Gets and sets whether the mouse cursor should be captured.
-    void capture(bool value) { m_capture = value; }
-    bool capture() const { return m_capture; }
-
-private:
-    // Capture mouse pointer
-    bool m_capture = false;
-};
-
-//
-// The keyboard class
-//
-
-class input::device::keyboard : public input::device
-{
-public:
-    keyboard(std::string const &name) : input::device(name) {}
-
-    // Get the names of all available keys on this device
-    std::vector<std::string> const& key_names() const { return m_key_names; }
-
-    // Get the current state of all keys
-    std::vector<bool> const &keys() const { return m_keys; }
-
-    // Gets the latest contents of text input.
-    std::string text();
-
-    bool capture_text();
-    void capture_text(bool status);
-
-    void internal_add_text(std::string const &text)
-    {
-        m_text += text;
-    }
-
-private:
-    // Text input state
-    std::string m_text;
-    bool m_input_active = false;
-};
-
-//
-// The joystick class
-//
-
-class input::device::joystick : public input::device
-{
-public:
-    joystick(std::string const &name) : input::device(name) {}
-};
-
-} /* namespace lol */
-
diff --git a/src/ui/keys.inc b/src/ui/keys.inc
deleted file mode 100644
index 186e53db..00000000
--- a/src/ui/keys.inc
+++ /dev/null
@@ -1,293 +0,0 @@
-//
-//  Lol Engine
-//
-//  Copyright © 2010—2019 Sam Hocevar <sam@hocevar.net>
-//            © 2010—2013 Benjamin Litzelmann
-//
-//  Lol Engine is free software. It comes without any warranty, to
-//  the extent permitted by applicable law. You can redistribute it
-//  and/or modify it under the terms of the Do What the Fuck You Want
-//  to Public License, Version 2, as published by the WTFPL Task Force.
-//  See http://www.wtfpl.net/ for more details.
-//
-
-/* A list of typical keyboard scancodes, along with a user-friendly
- * name and, if possible, a string representation. */
-
-#if !defined _SC
-#   error keys.inc included without the _SC macro
-#endif
-
-_SC(0, "", Unknown)
-
-/* Usage page 0x07 */
-
-_SC(4,  "A", A)
-_SC(5,  "B", B)
-_SC(6,  "C", C)
-_SC(7,  "D", D)
-_SC(8,  "E", E)
-_SC(9,  "F", F)
-_SC(10, "G", G)
-_SC(11, "H", H)
-_SC(12, "I", I)
-_SC(13, "J", J)
-_SC(14, "K", K)
-_SC(15, "L", L)
-_SC(16, "M", M)
-_SC(17, "N", N)
-_SC(18, "O", O)
-_SC(19, "P", P)
-_SC(20, "Q", Q)
-_SC(21, "R", R)
-_SC(22, "S", S)
-_SC(23, "T", T)
-_SC(24, "U", U)
-_SC(25, "V", V)
-_SC(26, "W", W)
-_SC(27, "X", X)
-_SC(28, "Y", Y)
-_SC(29, "Z", Z)
-
-_SC(30, "1", 1)
-_SC(31, "2", 2)
-_SC(32, "3", 3)
-_SC(33, "4", 4)
-_SC(34, "5", 5)
-_SC(35, "6", 6)
-_SC(36, "7", 7)
-_SC(37, "8", 8)
-_SC(38, "9", 9)
-_SC(39, "0", 0)
-
-_SC(40, "\n", Return)
-_SC(41, "\x1b", Escape)
-_SC(42, "\b", Backspace)
-_SC(43, "\t", Tab)
-_SC(44, " ", Space)
-
-_SC(45, "-", Minus)
-_SC(46, "=", Equals)
-_SC(47, "<", LeftBracket)
-_SC(48, ">", RightBracket)
-_SC(49, "\\", Backslash)
-
-_SC(50, "", NonUSHash)
-_SC(51, ";", Semicolon)
-_SC(52, "\'", Apostrophe)
-_SC(53, "`", Grave)
-_SC(54, ",", Comma)
-_SC(55, ".", Period)
-_SC(56, "/", Slash)
-
-_SC(57, "", CapsLock)
-
-_SC(58, "", F1)
-_SC(59, "", F2)
-_SC(60, "", F3)
-_SC(61, "", F4)
-_SC(62, "", F5)
-_SC(63, "", F6)
-_SC(64, "", F7)
-_SC(65, "", F8)
-_SC(66, "", F9)
-_SC(67, "", F10)
-_SC(68, "", F11)
-_SC(69, "", F12)
-
-_SC(70, "", PrintScreen)
-_SC(71, "", ScrollLock)
-_SC(72, "", Pause)
-_SC(73, "", Insert)
-_SC(74, "", Home)
-_SC(75, "", PageUp)
-_SC(76, "", Delete)
-_SC(77, "", End)
-_SC(78, "", PageDown)
-_SC(79, "", Right)
-_SC(80, "", Left)
-_SC(81, "", Down)
-_SC(82, "", Up)
-
-_SC(83, "", NumLockClear)
-_SC(84, "/", KP_Divide)
-_SC(85, "*", KP_Multiply)
-_SC(86, "-", KP_Minus)
-_SC(87, "+", KP_Plus)
-_SC(88, "", KP_Enter)
-_SC(89, "1", KP_1)
-_SC(90, "2", KP_2)
-_SC(91, "3", KP_3)
-_SC(92, "4", KP_4)
-_SC(93, "5", KP_5)
-_SC(94, "6", KP_6)
-_SC(95, "7", KP_7)
-_SC(96, "8", KP_8)
-_SC(97, "9", KP_9)
-_SC(98, "0", KP_0)
-_SC(99, ".", KP_Period)
-
-_SC(100, "", NonUSBackslash)
-_SC(101, "", Application)
-_SC(102, "^", Power)
-_SC(103, "=", KP_Equals)
-_SC(104, "", F13)
-_SC(105, "", F14)
-_SC(106, "", F15)
-_SC(107, "", F16)
-_SC(108, "", F17)
-_SC(109, "", F18)
-_SC(110, "", F19)
-_SC(111, "", F20)
-_SC(112, "", F21)
-_SC(113, "", F22)
-_SC(114, "", F23)
-_SC(115, "", F24)
-_SC(116, "", Execute)
-_SC(117, "", Help)
-_SC(118, "", Menu)
-_SC(119, "", Select)
-_SC(120, "", Stop)
-_SC(121, "", Again)
-_SC(122, "", Undo)
-_SC(123, "", Cut)
-_SC(124, "", Copy)
-_SC(125, "", Paste)
-_SC(126, "", Find)
-_SC(127, "", Mute)
-_SC(128, "", VolumeUp)
-_SC(129, "", VolumeDOwn)
-_SC(133, "", KP_Comma)
-_SC(134, "", KP_EqualsAS400)
-
-_SC(135, "", International1)
-_SC(136, "", International2)
-_SC(137, "", International3)
-_SC(138, "", International4)
-_SC(139, "", International5)
-_SC(140, "", International6)
-_SC(141, "", International7)
-_SC(142, "", International8)
-_SC(143, "", International9)
-_SC(144, "", Lang1)
-_SC(145, "", Lang2)
-_SC(146, "", Lang3)
-_SC(147, "", Lang4)
-_SC(148, "", Lang5)
-_SC(149, "", Lang6)
-_SC(150, "", Lang7)
-_SC(151, "", Lang8)
-_SC(152, "", Lang9)
-
-_SC(153, "", AltErase)
-_SC(154, "", SysReq)
-_SC(155, "", Cancel)
-_SC(156, "", Clear)
-_SC(157, "", Prior)
-_SC(158, "", Return2)
-_SC(159, "", Separator)
-_SC(160, "", Out)
-_SC(161, "", Oper)
-_SC(162, "", ClearAgain)
-_SC(163, "", CrSel)
-_SC(164, "", ExSel)
-
-_SC(176, "", KP_00)
-_SC(177, "", KP_000)
-_SC(178, "", ThousandsSeparator)
-_SC(179, "", DecimalSeparator)
-_SC(180, "", CurrencyUnit)
-_SC(181, "", CurrencySubunit)
-_SC(182, "(", KP_LeftParen)
-_SC(183, ")", KP_RightParen)
-_SC(184, "{", KP_LeftBrace)
-_SC(185, "}", KP_RightBrace)
-_SC(186, "\t", KP_Tab)
-_SC(187, "", KP_Backspace)
-_SC(188, "A", KP_A)
-_SC(189, "B", KP_B)
-_SC(190, "C", KP_C)
-_SC(191, "D", KP_D)
-_SC(192, "E", KP_E)
-_SC(193, "F", KP_F)
-_SC(194, "", KP_Xor)
-_SC(195, "^", KP_Power)
-_SC(196, "%", KP_Percent)
-_SC(197, "<", KP_Less)
-_SC(198, ">", KP_Greater)
-_SC(199, "&", KP_Ampersand)
-_SC(200, "&&", KP_DblAmpersand)
-_SC(201, "|", KP_VerticalBar)
-_SC(202, "||", KP_DblVerticalBar)
-_SC(203, ":", KP_Colon)
-_SC(204, "#", KP_Hash)
-_SC(205, " ", KP_Space)
-_SC(206, "@", KP_At)
-_SC(207, "!", KP_Exclam)
-_SC(208, "", KP_MemStore)
-_SC(209, "", KP_MemRecall)
-_SC(210, "", KP_MemClear)
-_SC(211, "", KP_MemAdd)
-_SC(212, "", KP_MemSubtract)
-_SC(213, "", KP_MemMultiply)
-_SC(214, "", KP_MemDivide)
-_SC(215, "", KP_PlusMinus)
-_SC(216, "", KP_Clear)
-_SC(217, "", KP_ClearEntry)
-_SC(218, "", KP_Binary)
-_SC(219, "", KP_Octal)
-_SC(220, "", KP_Decimal)
-_SC(221, "", KP_Hexadecimal)
-
-_SC(224, "", LCtrl)
-_SC(225, "", LShift)
-_SC(226, "", LAlt)
-_SC(227, "", LGui)
-_SC(228, "", RCtrl)
-_SC(229, "", RShift)
-_SC(230, "", RAlt)
-_SC(231, "", RGui)
-
-_SC(257, "", Mode)
-
-/* Usage page 0x0c */
-
-_SC(258, "", AudioNext)
-_SC(259, "", AudioPrev)
-_SC(260, "", AudioStop)
-_SC(261, "", AudioPlay)
-_SC(262, "", AudioMute)
-_SC(263, "", MediaSelect)
-_SC(264, "", WWW)
-_SC(265, "", Mail)
-_SC(266, "", Calculator)
-_SC(267, "", Computer)
-_SC(268, "", AC_Search)
-_SC(269, "", AC_Home)
-_SC(270, "", AC_Back)
-_SC(271, "", AC_Forward)
-_SC(272, "", AC_Stop)
-_SC(273, "", AC_Refresh)
-_SC(274, "", AC_Bookmarks)
-
-/* Extra SDL scancodes */
-
-_SC(275, "", BrightnessDown)
-_SC(276, "", BrightnessUp)
-_SC(277, "", DisplaySwitch)
-_SC(278, "", KbdIllumToggle)
-_SC(279, "", KbdIllumDown)
-_SC(280, "", KbdIllumUp)
-_SC(281, "", Eject)
-_SC(282, "", Sleep)
-
-_SC(283, "", App1)
-_SC(284, "", App2)
-
-/* Custom Lock management */
-_SC(285, "", CapsLockStatus)
-_SC(286, "", ScrollLockStatus)
-_SC(287, "", NumLockClearStatus)
-
-#undef _SC
-
diff --git a/src/ui/sdl-input.cpp b/src/ui/sdl-input.cpp
deleted file mode 100644
index 3415152d..00000000
--- a/src/ui/sdl-input.cpp
+++ /dev/null
@@ -1,323 +0,0 @@
-//
-//  Lol Engine
-//
-//  Copyright © 2010—2019 Sam Hocevar <sam@hocevar.net>
-//
-//  Lol Engine is free software. It comes without any warranty, to
-//  the extent permitted by applicable law. You can redistribute it
-//  and/or modify it under the terms of the Do What the Fuck You Want
-//  to Public License, Version 2, as published by the WTFPL Task Force.
-//  See http://www.wtfpl.net/ for more details.
-//
-
-#include <lol/engine-internal.h>
-
-#if LOL_USE_SDL
-#   if HAVE_SDL2_SDL_H
-#      include <SDL2/SDL.h>
-#   elif HAVE_SDL_H
-#      include <SDL.h>
-#   endif
-#endif
-#if HAVE_EMSCRIPTEN_H
-#   include <emscripten.h>
-#endif
-#if HAVE_EMSCRIPTEN_HTML5_H
-#   include <emscripten/html5.h>
-#endif
-
-#include "ui/sdl-input.h"
-#include "ui/input.h"
-
-/* We force joystick polling because no events are received when
- * there is no SDL display (eg. on the Raspberry Pi). */
-#define SDL_FORCE_POLL_JOYSTICK 1
-
-#if __EMSCRIPTEN__
-#   define MOUSE_SPEED_MOD 10.f
-#else
-#   define MOUSE_SPEED_MOD 100.f
-#endif
-
-namespace lol
-{
-
-/*
- * Public SdlInput class
- */
-
-SdlInput::SdlInput(int screen_w, int screen_h)
-  : m_screen(vec2((float)screen_w, (float)screen_h))
-{
-#if _WIN32 || defined __APPLE__
-    m_tick_in_draw_thread = true;
-#endif
-
-#if __EMSCRIPTEN__
-    emscripten_sample_gamepad_data();
-#endif
-#if LOL_USE_SDL
-    SDL_Init(SDL_INIT_TIMER | SDL_INIT_JOYSTICK);
-#endif
-
-    // XXX: another option for emscripten is to properly support gamepads
-#if LOL_USE_SDL && !__EMSCRIPTEN__
-    SDL_JoystickEventState(SDL_FORCE_POLL_JOYSTICK ? SDL_QUERY : SDL_ENABLE);
-
-    /* Register all the joysticks we can find, and let the input
-     * system decide what it wants to track. */
-    for (int i = 0; i < SDL_NumJoysticks(); i++)
-    {
-        SDL_Joystick *sdlstick = SDL_JoystickOpen(i);
-
-        /* Blacklist some devices:
-         *  - HDAPS, it's not a real joystick.
-         *  - X360 controllers, Xinput handles them better since
-         *    it won't think there is only one trigger axis. */
-        char const *name = SDL_JoystickName(sdlstick);
-        if (strstr(name, "HDAPS")
-#       if LOL_USE_XINPUT
-             || strstr(name, "XBOX 360 For Windows")
-#       endif //LOL_USE_XINPUT
-             || false)
-        {
-            SDL_JoystickClose(sdlstick);
-            continue;
-        }
-
-        auto stick = input::joystick(i);
-        for (int j = 0; j < SDL_JoystickNumAxes(sdlstick); ++j)
-            stick->internal_add_axis((input::axis)(j + 1), format("Axis%d", j + 1).c_str());
-        for (int j = 0; j < SDL_JoystickNumButtons(sdlstick); ++j)
-            stick->internal_add_button((input::button)(j + 1), format("Button%d", j + 1).c_str());
-
-        m_joysticks.push(sdlstick, stick);
-    }
-#endif
-
-    m_gamegroup = tickable::group::game::input;
-}
-
-SdlInput::~SdlInput()
-{
-#if LOL_USE_SDL && !__EMSCRIPTEN__
-    /* Unregister all the joysticks we added */
-    while (m_joysticks.count())
-    {
-        SDL_JoystickClose(m_joysticks[0].m1);
-        m_joysticks.remove(0);
-    }
-#endif
-}
-
-void SdlInput::tick_game(float seconds)
-{
-    entity::tick_game(seconds);
-
-    if (!m_tick_in_draw_thread)
-        tick(seconds);
-}
-
-void SdlInput::tick_draw(float seconds, Scene &scene)
-{
-    entity::tick_draw(seconds, scene);
-
-    if (m_tick_in_draw_thread)
-        tick(seconds);
-}
-
-#if __EMSCRIPTEN__
-static void resume_audiocontext(void)
-{
-    EM_ASM(
-    {
-        var m = Module['SDL2'];
-        if (m && m.audioContext && m.audioContext.state == 'suspended')
-            m.audioContext.resume();
-    });
-}
-#endif
-
-void SdlInput::tick(float seconds)
-{
-#if LOL_USE_SDL
-    /* FIXME: maybe we should make use of this? */
-    UNUSED(seconds);
-
-    auto keyboard = input::keyboard();
-    auto mouse = input::mouse();
-
-    keyboard->internal_begin_frame();
-    mouse->internal_begin_frame();
-    for (int j = 0; j < m_joysticks.count(); j++)
-        m_joysticks[j].m2->internal_begin_frame();
-
-    /* Pump all joystick events because no event is coming to us. */
-#   if SDL_FORCE_POLL_JOYSTICK && !__EMSCRIPTEN__
-    SDL_JoystickUpdate();
-    for (int j = 0; j < m_joysticks.count(); j++)
-    {
-        for (int i = 0; i < SDL_JoystickNumButtons(m_joysticks[j].m1); i++)
-            m_joysticks[j].m2->internal_set_button((input::button)i, SDL_JoystickGetButton(m_joysticks[j].m1, i) != 0);
-        for (int i = 0; i < SDL_JoystickNumAxes(m_joysticks[j].m1); i++)
-            m_joysticks[j].m2->internal_set_axis((input::axis)i, (float)SDL_JoystickGetAxis(m_joysticks[j].m1, i) / 32768.f);
-    }
-#   endif
-
-    float mouse_wheel = 0.f;
-
-    if (keyboard->capture_text())
-        SDL_StartTextInput();
-    else
-        SDL_StopTextInput();
-
-    /* Handle keyboard and WM events */
-    SDL_Event event;
-    while (SDL_PollEvent(&event))
-    {
-        switch (event.type)
-        {
-        case SDL_QUIT:
-            Ticker::Shutdown();
-            break;
-
-        case SDL_KEYDOWN:
-        case SDL_KEYUP:
-            switch (auto sc = (input::key)event.key.keysym.scancode)
-            {
-            // Lock management
-            case input::key::SC_CapsLock:
-            case input::key::SC_ScrollLock:
-            case input::key::SC_NumLockClear:
-                // Update status on key down only
-                if (event.type == SDL_KEYDOWN)
-                {
-                    auto sc2 = sc;
-                    if (sc == input::key::SC_CapsLock)
-                        sc2 = input::key::SC_CapsLockStatus;
-                    else if (sc == input::key::SC_ScrollLock)
-                        sc2 = input::key::SC_ScrollLockStatus;
-                    else if (sc == input::key::SC_NumLockClear)
-                        sc2 = input::key::SC_NumLockClearStatus;
-                    keyboard->internal_set_key(sc2, !keyboard->key(sc2));
-                }
-                LOL_ATTR_FALLTHROUGH
-            default:
-                // Set key updates the corresponding key
-                keyboard->internal_set_key(sc, event.type == SDL_KEYDOWN);
-                break;
-            }
-            break;
-
-        //case SDL_TEXTEDITING: //TODO: handle that?
-        case SDL_TEXTINPUT:
-            keyboard->internal_add_text(event.text.text);
-            break;
-
-        case SDL_MOUSEBUTTONDOWN:
-        case SDL_MOUSEBUTTONUP:
-#if __EMSCRIPTEN__
-            resume_audiocontext();
-#endif
-            //event.button.which
-            mouse->internal_set_button((input::button)((int)input::button::BTN_Left + event.button.button - 1),
-                                       event.type == SDL_MOUSEBUTTONDOWN);
-            break;
-        case SDL_MOUSEWHEEL:
-#if __EMSCRIPTEN__
-            resume_audiocontext();
-#endif
-            mouse_wheel += (float)event.button.y;
-            break;
-        case SDL_WINDOWEVENT:
-        {
-            switch (event.window.event)
-            {
-                case SDL_WINDOWEVENT_ENTER:
-                case SDL_WINDOWEVENT_FOCUS_GAINED:
-#if __EMSCRIPTEN__
-                    resume_audiocontext();
-#endif
-                    mouse->internal_set_button(input::button::BTN_Focus, true);
-                    break;
-                case SDL_WINDOWEVENT_LEAVE:
-                case SDL_WINDOWEVENT_FOCUS_LOST:
-                    mouse->internal_set_button(input::button::BTN_Focus, false);
-                    break;
-                case SDL_WINDOWEVENT_RESIZED:
-                    Video::Resize(ivec2(event.window.data1, event.window.data2));
-                    break;
-            }
-            break;
-        }
-
-#   if !SDL_FORCE_POLL_JOYSTICK
-        case SDL_JOYAXISMOTION:
-            m_joysticks[event.jaxis.which].m2->internal_set_axis(event.jaxis.axis, (float)event.jaxis.value / 32768.f);
-            break;
-
-        case SDL_JOYBUTTONUP:
-        case SDL_JOYBUTTONDOWN:
-            m_joysticks[event.jbutton.which].m2->internal_set_key(event.jbutton.button, event.jbutton.state);
-            break;
-#   endif
-        }
-    }
-
-    /* Handle mouse input */
-    mouse->internal_set_axis(input::axis::Wheel, mouse_wheel);
-
-    ivec2 window_size;
-    // FIXME: get actual window size
-    //SDL_GetWindowSize(m_window, &window_size.x, &window_size.y);
-    window_size = Video::GetSize();
-
-    ivec2 mouse_pos(-1, -1);
-    SDL_GetMouseState(&mouse_pos.x, &mouse_pos.y);
-    mouse_pos.y = Video::GetSize().y - 1 - mouse_pos.y;
-
-    if (mouse->capture() != m_mousecapture)
-    {
-        m_mousecapture = mouse->capture();
-        SDL_SetRelativeMouseMode(m_mousecapture ? SDL_TRUE : SDL_FALSE);
-
-        // FIXME: get handle to window
-        //SDL_WarpMouseInWindow(m_window, window_size.x / 2, window_size.y / 2);
-        SDL_ShowCursor(m_mousecapture ? SDL_DISABLE : SDL_ENABLE);
-    }
-
-    if (mouse_pos.x >= 0 && mouse_pos.x < window_size.x && mouse_pos.y >= 0 && mouse_pos.y < window_size.y)
-    {
-        //We need the max if we want coherent mouse speed between axis
-        float max_screen_size = lol::max(m_screen.x, m_screen.y);
-        vec2 vmouse = vec2(mouse_pos);
-        vec2 vprevmouse = vec2(m_prev_mouse_pos);
-        mouse->internal_set_axis(input::axis::X, vmouse.x / window_size.x);
-        mouse->internal_set_axis(input::axis::Y, vmouse.y / window_size.y);
-        mouse->internal_set_axis(input::axis::ScreenX, (float)mouse_pos.x);
-        mouse->internal_set_axis(input::axis::ScreenY, (float)mouse_pos.y);
-
-        // Note: 100.0f is an arbitrary value that makes it feel about the same than an xbox controller joystick
-        mouse->internal_set_axis(input::axis::MoveX, (mouse_pos.x - vprevmouse.x) * MOUSE_SPEED_MOD / max_screen_size);
-        // Y Axis is also negated to match the usual joystick Y axis (negatives values are for the upper direction)
-        mouse->internal_set_axis(input::axis::MoveY,-(mouse_pos.y - vprevmouse.y) * MOUSE_SPEED_MOD / max_screen_size);
-        //Pixel movement
-        mouse->internal_set_axis(input::axis::ScreenMoveX, (mouse_pos.x - vprevmouse.x));
-        mouse->internal_set_axis(input::axis::ScreenMoveY,-(mouse_pos.y - vprevmouse.y));
-    }
-
-    if (m_mousecapture)
-    {
-        //mouse_pos = ivec2(window_size * .5f);
-        //SDL_WarpMouse((uint16_t)mouse_pos.x, (uint16_t)mouse_pos.y);
-    }
-
-    m_prev_mouse_pos = mouse_pos;
-
-#else
-    UNUSED(seconds);
-#endif //LOL_USE_SDL
-}
-
-} /* namespace lol */
-
diff --git a/src/ui/sdl-input.h b/src/ui/sdl-input.h
deleted file mode 100644
index b4bdbf27..00000000
--- a/src/ui/sdl-input.h
+++ /dev/null
@@ -1,64 +0,0 @@
-//
-//  Lol Engine
-//
-//  Copyright © 2010—2019 Sam Hocevar <sam@hocevar.net>
-//
-//  Lol Engine is free software. It comes without any warranty, to
-//  the extent permitted by applicable law. You can redistribute it
-//  and/or modify it under the terms of the Do What the Fuck You Want
-//  to Public License, Version 2, as published by the WTFPL Task Force.
-//  See http://www.wtfpl.net/ for more details.
-//
-
-#pragma once
-
-//
-// The SdlInput class
-// ------------------
-//
-
-#include "engine/entity.h"
-
-#if LOL_USE_SDL
-#   if HAVE_SDL2_SDL_H
-#      include <SDL2/SDL.h>
-#   elif HAVE_SDL_H
-#      include <SDL.h>
-#   endif
-#endif
-
-#include <memory>
-
-namespace lol
-{
-
-class SdlInput : public entity
-{
-public:
-    /** passing the screen resolution (note: not the windowed app resolution!) allows to make the mouse axis resolution-independent */
-    SdlInput(int screen_w, int screen_h);
-
-    virtual ~SdlInput();
-    void SetScreenResolution();
-
-protected:
-    virtual void tick_game(float seconds);
-    virtual void tick_draw(float seconds, Scene &scene);
-
-private:
-    void tick(float seconds);
-
-#if LOL_USE_SDL
-    array<SDL_Joystick *, std::shared_ptr<class input::device::joystick>> m_joysticks;
-#endif
-
-    vec2 m_app;
-    vec2 m_screen;
-
-    ivec2 m_prev_mouse_pos = ivec2::zero;
-    bool m_mousecapture = false;
-    bool m_tick_in_draw_thread = false;
-};
-
-} /* namespace lol */
-
diff --git a/src/utils.h b/src/utils.h
deleted file mode 100644
index 5113268e..00000000
--- a/src/utils.h
+++ /dev/null
@@ -1,75 +0,0 @@
-//
-//  Lol Engine
-//
-//  Copyright © 2010—2018 Sam Hocevar <sam@hocevar.net>
-//            © 2012—2015 Benjamin “Touky” Huet <huet.benjamin@gmail.com>
-//
-//  Lol Engine is free software. It comes without any warranty, to
-//  the extent permitted by applicable law. You can redistribute it
-//  and/or modify it under the terms of the Do What the Fuck You Want
-//  to Public License, Version 2, as published by the WTFPL Task Force.
-//  See http://www.wtfpl.net/ for more details.
-//
-
-#pragma once
-
-//
-// Various basic convenience functions
-// -----------------------------------
-//
-
-#include <lol/base/string.h>
-
-#include <string>
-
-namespace lol
-{
-
-//Swaps two given values.
-template< class T > inline void Swap( T& A, T& B )
-{
-    const T Temp = A;
-    A = B;
-    B = Temp;
-}
-
-//TODO: random struct
-//Gets a random Element from the given array<T>, considering you have implemented what follows :
-//NEEDS : float T::m_weight; //if m_weight is 0, it automatically assumes that this step is ignored.
-template< class T > inline int GetRandom(array<T> src)
-{
-    float r_total = 0.f;
-    float r_alpha = rand(1.f);
-    float r_value = 0.f;
-    int r_j = 0;
-
-    for (int i = 0; i < src.count(); ++i)
-    {
-        T& tmp = src[i];
-        if (tmp.m_weight > .0f)
-        {
-            r_total += tmp.m_weight;
-            float r_tmp = r_alpha * r_total;
-            while (r_tmp > r_value + src[r_j].m_weight && r_j < i)
-            {
-                r_value += src[r_j].m_weight;
-                r_j++;
-            }
-        }
-    }
-
-    return (r_total > .0f)?(r_j):(-1);
-}
-
-// Gets the value for the given enum type.
-template<class T> inline T FindValue(std::string const& name)
-{
-    std::string needle = tolower(name);
-    for (int i = 0; i < T::Max; ++i)
-        if (tolower(T(i).tostring()).find(needle) != std::string::npos)
-            return T(i);
-    return T::Max;
-}
-
-} /* namespace lol */
-
diff --git a/src/video.cpp b/src/video.cpp
deleted file mode 100644
index c342cac3..00000000
--- a/src/video.cpp
+++ /dev/null
@@ -1,134 +0,0 @@
-//
-//  Lol Engine
-//
-//  Copyright © 2010—2019 Sam Hocevar <sam@hocevar.net>
-//
-//  Lol Engine is free software. It comes without any warranty, to
-//  the extent permitted by applicable law. You can redistribute it
-//  and/or modify it under the terms of the Do What the Fuck You Want
-//  to Public License, Version 2, as published by the WTFPL Task Force.
-//  See http://www.wtfpl.net/ for more details.
-//
-
-#include <lol/engine-internal.h>
-
-#if defined _WIN32
-#   define WIN32_LEAN_AND_MEAN
-#   include <windows.h>
-#   undef WIN32_LEAN_AND_MEAN
-#   undef near /* Fuck Microsoft */
-#   undef far /* Fuck Microsoft again */
-#endif
-
-#include "lolgl.h"
-
-namespace lol
-{
-
-class VideoData
-{
-    friend class Video;
-
-private:
-    static DebugRenderMode render_mode;
-};
-
-DebugRenderMode VideoData::render_mode = DebugRenderMode::Default;
-
-/*
- * Public Video class
- */
-
-void Video::Setup(ivec2 size)
-{
-    Scene::AddNew(size);
-
-    /* Initialise reasonable scene default properties */
-    SetDebugRenderMode(DebugRenderMode::Default);
-}
-
-void Video::SetDebugRenderMode(DebugRenderMode d)
-{
-    switch(d)
-    {
-        //All these modes are handled in the shaders.
-        case DebugRenderMode::Default:
-        case DebugRenderMode::Flat:
-        case DebugRenderMode::Lighting:
-        case DebugRenderMode::Normal:
-        case DebugRenderMode::UV:
-        {
-#if defined HAVE_GLES_2X
-#elif defined LOL_USE_GLEW || defined HAVE_GL_2X
-            glEnable(GL_CULL_FACE);
-            glPolygonMode(GL_FRONT_AND_BACK, GL_FILL);
-#endif
-            break;
-        }
-        case DebugRenderMode::Wireframe:
-        {
-#if defined HAVE_GLES_2X
-#elif defined LOL_USE_GLEW || defined HAVE_GL_2X
-            glDisable(GL_CULL_FACE);
-            glPolygonMode(GL_FRONT_AND_BACK, GL_LINE);
-#endif
-            break;
-        }
-        default:
-            return; /* Unknown render mode */
-    }
-    VideoData::render_mode = d;
-}
-
-DebugRenderMode Video::GetDebugRenderMode()
-{
-    return VideoData::render_mode;
-}
-
-void Video::Destroy()
-{
-    Scene::DestroyAll();
-}
-
-void Video::Capture(uint32_t *buffer)
-{
-#if defined LOL_USE_GLEW || defined HAVE_GL_2X || defined HAVE_GLEX_2X
-    GLint v[4];
-    glGetIntegerv(GL_VIEWPORT, v);
-    int width = v[2], height = v[3];
-
-#   if defined HAVE_GL_2X
-    glPixelStorei(GL_PACK_ROW_LENGTH, 0);
-#   endif
-    glPixelStorei(GL_PACK_ALIGNMENT, 1);
-
-#   if defined GL_BGRA
-    glReadPixels(0, 0, width, height, GL_BGRA, GL_UNSIGNED_BYTE, buffer);
-#   else
-    glReadPixels(0, 0, width, height, GL_RGBA, GL_UNSIGNED_BYTE, buffer);
-#   endif
-
-    for (int j = 0; j < height / 2; j++)
-        for (int i = 0; i < width; i++)
-        {
-            uint32_t tmp = buffer[j * width + i];
-            buffer[j * width + i] = buffer[(height - j - 1) * width + i];
-            buffer[(height - j - 1) * width + i] = tmp;
-        }
-#else
-    UNUSED(buffer);
-#endif
-}
-
-void Video::Resize(ivec2 size)
-{
-    Scene::GetScene(0).resize(size);
-}
-
-ivec2 Video::GetSize()
-{
-    return Scene::GetScene(0).get_renderer()->viewport().extent();
-}
-
-} /* namespace lol */
-
diff --git a/src/video.h b/src/video.h
deleted file mode 100644
index 4d98efe7..00000000
--- a/src/video.h
+++ /dev/null
@@ -1,63 +0,0 @@
-//
-//  Lol Engine
-//
-//  Copyright © 2010—2019 Sam Hocevar <sam@hocevar.net>
-//
-//  Lol Engine is free software. It comes without any warranty, to
-//  the extent permitted by applicable law. You can redistribute it
-//  and/or modify it under the terms of the Do What the Fuck You Want
-//  to Public License, Version 2, as published by the WTFPL Task Force.
-//  See http://www.wtfpl.net/ for more details.
-//
-
-#pragma once
-
-//
-// The Video interface
-// -------------------
-// Helper GL functions to set up the scene.
-//
-
-#include <stdint.h>
-
-namespace lol
-{
-
-struct DebugRenderMode
-{
-    enum Value
-    {
-        //Add your new rendermode at your convenience
-        Default,
-        Flat,
-        Wireframe,
-        Lighting,
-        Normal,
-        UV,
-
-        Max
-    }
-    m_value;
-
-    inline DebugRenderMode() : m_value(Default) {}
-    inline DebugRenderMode(Value v) : m_value(v) {}
-    inline DebugRenderMode(int v) : m_value((Value)v) {}
-    inline operator Value() { return m_value; }
-};
-
-class Video
-{
-public:
-    static void Setup(ivec2 size);
-    static void Destroy();
-
-    static void Resize(ivec2 size);
-    static ivec2 GetSize();
-
-    static void SetDebugRenderMode(DebugRenderMode d);
-    static DebugRenderMode GetDebugRenderMode();
-    static void Capture(uint32_t *buffer);
-};
-
-} /* namespace lol */
-
diff --git a/tools/Makefile.am b/tools/Makefile.am
deleted file mode 100644
index 296c66f5..00000000
--- a/tools/Makefile.am
+++ /dev/null
@@ -1,20 +0,0 @@
-
-include $(top_srcdir)/build/autotools/common.am
-
-SUBDIRS =
-SUBDIRS += lolunit
-SUBDIRS += vimlol
-SUBDIRS += vslol
-
-if BUILD_TOOLS
-noinst_PROGRAMS = $(make_font)
-endif
-
-make_font_SOURCES = make-font.cpp
-make_font_CPPFLAGS = @CACA_CFLAGS@
-make_font_LDFLAGS = @CACA_LIBS@
-
-if LOL_USE_CACA
-make_font = make-font
-endif
-
diff --git a/tools/lolunit/Makefile.am b/tools/lolunit/Makefile.am
deleted file mode 100644
index 077fbffe..00000000
--- a/tools/lolunit/Makefile.am
+++ /dev/null
@@ -1,5 +0,0 @@
-
-include $(top_srcdir)/build/autotools/common.am
-
-EXTRA_DIST += lolunit.h
-
diff --git a/tools/make-font.cpp b/tools/make-font.cpp
deleted file mode 100644
index 29159701..00000000
--- a/tools/make-font.cpp
+++ /dev/null
@@ -1,32 +0,0 @@
-//
-// Deus Hax (working title)
-// Copyright (c) 2010 Sam Hocevar <sam@hocevar.net>
-//
-
-#if HAVE_CONFIG_H
-#   include "config.h"
-#endif
-
-#include <cstdlib>
-#include <cstdio>
-
-#include <caca.h>
-
-int main(void)
-{
-    caca_canvas_t *cv = caca_create_canvas(16, 16);
-    caca_set_color_ansi(cv, CACA_WHITE, CACA_TRANSPARENT);
-
-    for (unsigned int n = 0; n < 256; n++)
-        caca_put_char(cv, n % 16, n / 16, n);
-
-    size_t len;
-    void *buffer = caca_export_canvas_to_memory(cv, "tga", &len);
-    fwrite(buffer, len, 1, stdout);
-    free(buffer);
-
-    caca_free_canvas(cv);
-
-    return 0;
-}
-
diff --git a/tools/vimlol/Makefile.am b/tools/vimlol/Makefile.am
deleted file mode 100644
index b1ea5223..00000000
--- a/tools/vimlol/Makefile.am
+++ /dev/null
@@ -1,6 +0,0 @@
-
-include $(top_srcdir)/build/autotools/common.am
-
-EXTRA_DIST += \
-    vimlol.vim
-
diff --git a/tools/vimlol/vimlol.vim b/tools/vimlol/vimlol.vim
deleted file mode 100644
index 74e87a94..00000000
--- a/tools/vimlol/vimlol.vim
+++ /dev/null
@@ -1,91 +0,0 @@
-"""
-""" Experimental Lol Engine Vim plugin
-"""
-""" More info here:
-""" http://lolengine.net/wiki/dev/setup/vim
-"""
-
-
-"""
-""" Add syntax highlighting for new C++ types
-"""
-
-" some custom base types
-au Syntax cpp
-   \ syn keyword cType
-   \ half ldouble lldouble real uint
-
-" Some custom container types
-au Syntax cpp
-   \ syn keyword cType
-   \ tuple array array2d array3d hash map
-
-" GLSL types and the Lol Engine extensions
-au Syntax cpp
-   \ syn match cType
-   \ "\<\(f16\|\|f64\|f128\|r\|[iu]\(8\|16\|\|64\)\)\(vec\([23456789]\|1[012]\)\|cmplx\|quat\|dualquat\|sqt\|mat\([234]\|2x3\|3x2\|3x4\|4x3\|2x4\|4x2\)\)\>"
-
-" HLSL types and the Lol Engine extensions
-au Syntax cpp
-   \ syn match cType
-   \ "\<\(int\|half\|float\)\([23456789]\|1[012]\|[234]x[234]\)\>"
-
-" More GLSL-like types from the Lol Engine
-au Syntax cpp
-   \ syn keyword cType
-   \ box2 dbox2 ibox2 ubox2
-   \ box3 dbox3 ibox3 ubox3
-
-" Ensure we know about nullptr
-au Syntax cpp
-   \ syn keyword cConstant
-   \ nullptr
-
-" New maths constants
-au Syntax cpp
-   \ syn match cConstant
-   \ "\<\(F\|D\|LD\)_\(PI\|PI_[234]\|[12]_PI\|SQRT_[23]\|SQRT_1_2\)\>"
-
-" Unit testing
-au Syntax cpp
-   \ syn match cOperator
-   \ "\<lolunit_\(fail\|assert\|refute\)[a-z_]*\>"
-
-" Global keywords
-au Syntax cpp
-  \ syn keyword cConstant
-  \ UNUSED ASSERT
-
-
-"""
-""" LolFx language handler
-"""
-
-" For now, pretend .lolfx is C++
-au BufRead,BufNewFile *.lolfx set syntax=cpp
-
-" New sampler types (GLSL)
-au BufRead,BufNewFile *.lolfx syn match cType
-   \ "\<sampler\(\([12]D\|Cube\)\(Array\|\)\(Shadow\|\)\)\>"
-   \ "\<sampler\(3D\|2DRect\|Buffer\|2DMS\|2DMSArray\|2DRectShadow\)\>"
-
-" Type constructs (LolFx)
-au BufRead,BufNewFile *.lolfx syn keyword cppStructure
-   \ technique pass precision
-
-" Variable attributes (GLSL and some HLSL)
-au BufRead,BufNewFile *.lolfx syn keyword cType
-   \ in out uniform attribute varying
-
-" Texture operators (GLSL and HLSL)
-au BufRead,BufNewFile *.lolfx syn keyword cppOperator
-   \ texture1D texture2D texture3D tex2D tex3D
-
-" Handle #version constructs
-au BufRead,BufNewFile *.lolfx syn region cPreProc
-   \ start="^\s*\(%:\|#\)\s*version\>" skip="\\$" end="$" keepend contains=ALLBUT,@cPreProcGroup,@Spell
-
-" LolFx shader region
-au BufRead,BufNewFile *.lolfx syn region cSpecial
-   \ start="^\s*\[[^\]]*\(glsl\|hlsl\)\]" end="$" contains=ALLBUT,@cPreProcGroup,@Spell
-
diff --git a/tools/vslol/CppKeywordClassifier.cs b/tools/vslol/CppKeywordClassifier.cs
deleted file mode 100644
index 5c9ce892..00000000
--- a/tools/vslol/CppKeywordClassifier.cs
+++ /dev/null
@@ -1,390 +0,0 @@
-//
-// Lol Engine - VsLol add-in for Visual Studio
-//
-// Copyright: (c) 2010-2013 Sam Hocevar <sam@hocevar.net>
-//   This program is free software; you can redistribute it and/or
-//   modify it under the terms of the Do What The Fuck You Want To
-//   Public License, Version 2, as published by Sam Hocevar. See
-//   http://www.wtfpl.net/ for more details.
-//
-
-using System;
-using System.Linq;
-using System.Collections.Generic;
-using System.ComponentModel.Composition;
-using System.Windows.Media;
-using System.Text.RegularExpressions;
-using System.Diagnostics; /* For debugging purposes */
-
-using Microsoft.VisualStudio.Shell;
-using Microsoft.VisualStudio.Text;
-using Microsoft.VisualStudio.Text.Classification;
-using Microsoft.VisualStudio.Text.Formatting;
-using Microsoft.VisualStudio.Language.StandardClassification;
-using Microsoft.VisualStudio.Utilities;
-
-namespace lol
-{
-
-[Export(typeof(IClassifierProvider))]
-[ContentType("c/c++")]
-[ContentType("csharp")]
-[ContentType("lolfx")]
-internal class LolClassifierProvider : IClassifierProvider
-{
-    [Import]
-    internal IClassificationTypeRegistryService m_type_registry = null;
-    [Import]
-    internal IClassifierAggregatorService m_aggregator = null;
-    [Import]
-    internal IClassificationFormatMapService m_format_map = null;
-#if FALSE
-    [Import]
-    internal ITextDocumentFactoryService m_textdoc_factory = null;
-#endif
-    [Import]
-    internal SVsServiceProvider m_sp = null;
-
-    internal static bool m_inprogress = false;
-
-    public IClassifier GetClassifier(ITextBuffer buffer)
-    {
-        /* Avoid infinite recursion */
-        if (m_inprogress)
-            return null;
-
-#if FALSE
-        if (m_textdoc_factory != null)
-        {
-            ITextDocument doc;
-            m_textdoc_factory.TryGetTextDocument(buffer, out doc);
-            /* print doc.FilePath */
-        }
-#endif
-
-        /* Try to guess whether this is a Lol Engine project */
-        EnvDTE.DTE dte = m_sp.GetService(typeof(EnvDTE.DTE)) as EnvDTE.DTE;
-        bool islolengine = false;
-        if (dte.Solution.FullName.Contains("Lol.sln"))
-            islolengine = true;
-
-        LolGenericFormat.SetRegistry(m_type_registry, m_format_map);
-
-        try
-        {
-            m_inprogress = true;
-            return buffer.Properties.GetOrCreateSingletonProperty<CppKeywordClassifier>(delegate { return new CppKeywordClassifier(m_type_registry, m_aggregator.GetClassifier(buffer), buffer.ContentType, islolengine); });
-        }
-        finally { m_inprogress = false; }
-    }
-}
-
-class CppKeywordClassifier : IClassifier
-{
-    private IClassifier m_classifier;
-    private Regex m_classifier_regex;
-    private bool m_inprogress, m_islolengine;
-
-    private IClassificationType m_types_type, m_constant_type, m_normal_type;
-    private Regex m_types_regex, m_constant_regex, m_normal_regex;
-
-    private static string[] m_all_types =
-    {
-        "void|bool|int|signed|unsigned|char|short|long|float|double",
-        "class|struct|union|template|namespace|typename|typedef",
-        "inline|restrict|export|explicit|mutable",
-        "static|register|auto|volatile|extern|const"
-    };
-
-    private static string[] m_cpp_types =
-    {
-        "u?int(8|16|32|64|ptr|max)_t",
-        "u?int_(least|fast)(8|16|32|64)_t",
-        "(wchar|char16|char32|size|ssize|off|ptrdiff)_t",
-        "(sig_atomic|fpos|clock|time|div|ldiv)_t",
-        "va_list|jmp_buf|FILE|DIR",
-        "__(int(8|16|32|64)|ptr(32|64)|m(64|128|128d|128i))",
-    };
-
-    private static string[] m_lol_types =
-    {
-        "ldouble|real|half",
-        "(float|int)([234]|2x2|3x3|4x4)",
-        "(f(16|128)||d|[ui](8|16||64)|r)(vec[234]|mat[234]|quat|cmplx)",
-        "(|[dui])box[23]",
-    };
-
-    private static string[] m_csharp_types =
-    {
-        "var|string",
-        "out|ref|internal|sealed|public|private|protected|override"
-    };
-
-    private static string[] m_lolfx_types =
-    {
-        "attribute|varying|uniform|in|out",
-        "int|uint",
-        "(|[dui])(vec|mat)[234]"
-    };
-
-    private static string[] m_all_constants =
-    {
-        "true|false"
-    };
-
-    private static string[] m_cpp_constants =
-    {
-        "NULL|nullptr",
-        "EXIT_SUCCESS|EXIT_FAILURE",
-        "M_(E|LOG(2|10)E|LN2|LN10|PI|PI_[24]|[12]_PI|2_SQRTPI|SQRT(2|1_2))",
-        "SIG(HUP|INT|QUIT|ILL|TRAP|ABRT|FPE|KILL|USR1|SEGV|USR2|PIPE|ALRM)",
-        "SIG(TERM|CHLD|CONT|STOP|TSTP|TTIN|TTOU)"
-    };
-
-    private static string[] m_lol_constants =
-    {
-        "(F|D|LD)_(PI|PI_[234]|[12]_PI|SQRT(2|3|1_2))",
-    };
-
-    private static string[] m_csharp_constants =
-    {
-        "null",
-    };
-
-    private static string[] m_lolfx_constants =
-    {
-        "gl_Position|gl_FragColor",
-    };
-
-    private static string[] m_all_normal =
-    {
-    };
-
-    private static string[] m_cpp_normal =
-    {
-        "interface|delegate|event|finally",
-        "gcnew|generic|initonly|property|sealed",
-    };
-
-    internal CppKeywordClassifier(IClassificationTypeRegistryService registry,
-                                  IClassifier classifier,
-                                  IContentType type,
-                                  bool islolengine)
-    {
-        m_classifier = classifier;
-        m_classifier_regex = new Regex(@"^(keyword|identifier)\b");
-        m_inprogress = false;
-        m_islolengine = islolengine;
-
-        m_types_type = registry.GetClassificationType("LolAnyType");
-        m_normal_type = registry.GetClassificationType("LolAnyIdentifier");
-        m_constant_type = registry.GetClassificationType("LolAnyConstant");
-
-        List<string> types_list = m_all_types.ToList();
-        List<string> constants_list = m_all_constants.ToList();
-        List<string> normals_list = m_all_normal.ToList();
-
-        if (type.IsOfType("c/c++"))
-        {
-            types_list = types_list.Concat(m_cpp_types).ToList();
-            constants_list = constants_list.Concat(m_cpp_constants).ToList();
-            normals_list = normals_list.Concat(m_cpp_normal).ToList();
-        }
-
-        if (type.IsOfType("csharp"))
-        {
-            types_list = types_list.Concat(m_csharp_types).ToList();
-            constants_list = constants_list.Concat(m_csharp_constants).ToList();
-        }
-
-        if (type.IsOfType("lolfx"))
-        {
-            types_list = types_list.Concat(m_lolfx_types).ToList();
-            constants_list = constants_list.Concat(m_lolfx_constants).ToList();
-        }
-
-        if (m_islolengine)
-        {
-            types_list = types_list.Concat(m_lol_types).ToList();
-            constants_list = constants_list.Concat(m_lol_constants).ToList();
-        }
-
-        m_types_regex =
-            new Regex("^(" + String.Join("|", types_list.ToArray()) + ")$");
-        m_constant_regex =
-            new Regex("^(" + String.Join("|", constants_list.ToArray()) + ")$");
-        m_normal_regex =
-            new Regex("^(" + String.Join("|", normals_list.ToArray()) + ")$");
-    }
-
-    public IList<ClassificationSpan> GetClassificationSpans(SnapshotSpan span)
-    {
-        List<ClassificationSpan> ret = new List<ClassificationSpan>();
-
-        if (m_inprogress)
-        {
-            /* For some reason we can get called recursively when parsing a
-             * string for the IntelliSense drop-down menu. There is information
-             * on how to deal with it properly on the following SO page:
-             * http://stackoverflow.com/q/3155598/111461
-             * The crash can be reproduced by simply typing "vec2(" and waiting
-             * for IntelliSense to spawn the menu. */
-            ret.Add(new ClassificationSpan(span, m_constant_type));
-            return ret;
-        }
-
-        m_inprogress = true;
-
-        foreach (ClassificationSpan cs in m_classifier.GetClassificationSpans(span))
-        {
-            string cs_class = cs.ClassificationType.Classification.ToLower();
-
-            /* Only apply our rules if we found a keyword or an identifier */
-            if (m_classifier_regex.IsMatch(cs_class))
-            {
-                if (m_types_regex.IsMatch(cs.Span.GetText()))
-                {
-                    ret.Add(new ClassificationSpan(cs.Span, m_types_type));
-                    continue;
-                }
-
-                if (m_constant_regex.IsMatch(cs.Span.GetText()))
-                {
-                    ret.Add(new ClassificationSpan(cs.Span, m_constant_type));
-                    continue;
-                }
-
-                if (m_normal_regex.IsMatch(cs.Span.GetText()))
-                {
-                    ret.Add(new ClassificationSpan(cs.Span, m_normal_type));
-                    continue;
-                }
-            }
-
-            ret.Add(cs);
-        }
-
-        m_inprogress = false;
-
-        return ret;
-    }
-
-    public event EventHandler<ClassificationChangedEventArgs> ClassificationChanged;
-}
-
-internal class LolGenericFormat : ClassificationFormatDefinition
-{
-    static IClassificationTypeRegistryService m_type_registry;
-    static IClassificationFormatMapService m_format_map;
-
-    public static void SetRegistry(IClassificationTypeRegistryService type_registry,
-                                   IClassificationFormatMapService format_map)
-    {
-        m_type_registry = type_registry;
-        m_format_map = format_map;
-    }
-
-    protected void CopyStyleColor(string category)
-    {
-        if (m_type_registry == null || m_format_map == null)
-            return;
-
-        var map = m_format_map.GetClassificationFormatMap("Text Editor");
-        if (map == null)
-            return;
-
-        //string[] foo = { "Comment", "Keyword", "C/C++ User Keywords", "Call Return", "HTML Comment" , "User Types", "User Types (Type parameters)", "User Types (Value types)"};
-
-        var type = m_type_registry.GetClassificationType(category);
-        if (type == null)
-            return;
-
-        var prop = map.GetExplicitTextProperties(type);
-        if (prop == null)
-            return;
-
-        var c1 = prop.ForegroundBrush as SolidColorBrush;
-        if (c1 != null && c1.Color != Colors.Transparent)
-        {
-            this.ForegroundColor = c1.Color;
-            this.ForegroundOpacity = 1.0;
-        }
-        var c2 = prop.BackgroundBrush as SolidColorBrush;
-        if (c2 != null && c2.Color != Colors.Transparent)
-        {
-            this.BackgroundColor = c2.Color;
-            this.BackgroundOpacity = 1.0;
-        }
-    }
-}
-
-internal static class LolClassifierClassificationDefinition
-{
-    [Export(typeof(ClassificationTypeDefinition))]
-    [Name(LolCppTypeFormat.m_name)]
-    internal static ClassificationTypeDefinition LolCustomClassType = null;
-
-    [Export(typeof(ClassificationTypeDefinition))]
-    [Name(LolCppConstantFormat.m_name)]
-    internal static ClassificationTypeDefinition LolCustomConstantType = null;
-
-    [Export(typeof(ClassificationTypeDefinition))]
-    [Name(LolCppIdentifierFormat.m_name)]
-    internal static ClassificationTypeDefinition LolCustomIdentifierType = null;
-}
-
-[Export(typeof(EditorFormatDefinition))]
-[ClassificationType(ClassificationTypeNames = LolCppTypeFormat.m_name)]
-[Name(LolCppTypeFormat.m_name)]
-[UserVisible(true)]
-[Order(After = Priority.Default)] /* Override the Visual Studio classifiers */
-internal sealed class LolCppTypeFormat : LolGenericFormat
-{
-    public const string m_name = "LolAnyType";
-    public LolCppTypeFormat()
-    {
-        this.DisplayName = "C/C++ Types and Qualifiers (VsLol)";
-        this.ForegroundColor = Colors.Lime;
-        this.ForegroundOpacity = 1.0;
-        this.IsBold = true;
-        //CopyStyleColor("User Types");
-    }
-}
-
-[Export(typeof(EditorFormatDefinition))]
-[ClassificationType(ClassificationTypeNames = LolCppConstantFormat.m_name)]
-[Name(LolCppConstantFormat.m_name)]
-[UserVisible(true)]
-[Order(After = Priority.Default)] /* Override the Visual Studio classifiers */
-internal sealed class LolCppConstantFormat : LolGenericFormat
-{
-    public const string m_name = "LolAnyConstant";
-    public LolCppConstantFormat()
-    {
-        this.DisplayName = "C/C++ Constants (VsLol)";
-        this.ForegroundColor = Colors.Magenta;
-        this.ForegroundOpacity = 1.0;
-        this.IsBold = true;
-        //CopyStyleColor("User Types");
-    }
-}
-
-[Export(typeof(EditorFormatDefinition))]
-[ClassificationType(ClassificationTypeNames = LolCppIdentifierFormat.m_name)]
-[Name(LolCppIdentifierFormat.m_name)]
-[UserVisible(true)]
-[Order(After = Priority.Default)] /* Override the Visual Studio classifiers */
-internal sealed class LolCppIdentifierFormat : LolGenericFormat
-{
-    public const string m_name = "LolAnyIdentifier";
-    public LolCppIdentifierFormat()
-    {
-        this.DisplayName = "C/C++ Identifiers (VsLol)";
-        this.ForegroundColor = Colors.Silver;
-        this.ForegroundOpacity = 1.0;
-        this.IsBold = false;
-        CopyStyleColor(PredefinedClassificationTypeNames.Identifier);
-    }
-}
-
-} /* namespace lol */
diff --git a/tools/vslol/GlobalSuppressions.cs b/tools/vslol/GlobalSuppressions.cs
deleted file mode 100644
index 6ebe4dd5..00000000
--- a/tools/vslol/GlobalSuppressions.cs
+++ /dev/null
@@ -1 +0,0 @@
-[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Design", "CA2210:AssembliesShouldHaveValidStrongNames")]
diff --git a/tools/vslol/LolFxLanguageService.cs b/tools/vslol/LolFxLanguageService.cs
deleted file mode 100644
index 2ca8b603..00000000
--- a/tools/vslol/LolFxLanguageService.cs
+++ /dev/null
@@ -1,150 +0,0 @@
-//
-// Lol Engine - VsLol add-in for Visual Studio
-//
-// Copyright: (c) 2010-2012 Sam Hocevar <sam@hocevar.net>
-//   This program is free software; you can redistribute it and/or
-//   modify it under the terms of the Do What The Fuck You Want To
-//   Public License, Version 2, as published by Sam Hocevar. See
-//   http://www.wtfpl.net/ for more details.
-//
-
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-
-using Microsoft.VisualStudio;
-using Microsoft.VisualStudio.Package;
-using Microsoft.VisualStudio.TextManager.Interop;
-using Microsoft.VisualStudio.OLE.Interop;
-
-namespace lol
-{
-
-class LolFxLanguageService : LanguageService
-{
-    public override string GetFormatFilterList()
-    {
-        return "LolFx files (*.lolfx)\n*.lolfx\n";
-    }
-
-    public override LanguagePreferences GetLanguagePreferences()
-    {
-        if (m_preferences == null)
-        {
-            m_preferences = new LanguagePreferences(this.Site,
-                             typeof(LolFxLanguageService).GUID, this.Name);
-            m_preferences.Init();
-        }
-        return m_preferences;
-    }
-
-    public override IScanner GetScanner(IVsTextLines buffer)
-    {
-        if (m_scanner == null)
-        {
-             m_scanner = new LolFxScanner(buffer);
-        }
-        return m_scanner;
-    }
-
-    public override string Name
-    {
-        get { return "LolFx"; }
-    }
-
-    public override AuthoringScope ParseSource(ParseRequest req)
-    {
-        return new LolFxAuthoringScope();
-    }
-
-    private LanguagePreferences m_preferences;
-    private LolFxScanner m_scanner;
-
-    internal class LolFxScanner : IScanner
-    {
-        public LolFxScanner(IVsTextBuffer buffer)
-        {
-            m_buffer = buffer;
-        }
-
-        bool IScanner.ScanTokenAndProvideInfoAboutIt(TokenInfo tokeninfo, ref int state)
-        {
-            while (m_offset < m_source.Length)
-            {
-                if (m_source[m_offset] == ' ' || m_source[m_offset] == '\t')
-                {
-                    ++m_offset;
-                    continue;
-                }
-
-                tokeninfo.StartIndex = m_offset;
-                tokeninfo.EndIndex = m_offset;
-                tokeninfo.Type = TokenType.Unknown;
-                switch (state % 4)
-                {
-                    case 0: tokeninfo.Color = TokenColor.Number; break;
-                    case 1: tokeninfo.Color = TokenColor.Text; break;
-                    case 2: tokeninfo.Color = TokenColor.Keyword; break;
-                    case 3: tokeninfo.Color = TokenColor.Comment; break;
-                }
-                // Disable this crap for now
-                tokeninfo.Color = TokenColor.Text;
-                ++m_offset;
-                ++state;
-                return true;
-            }
-
-            return false;
-        }
-
-        enum State
-        {
-            Default,
-            CComment,
-            CppComment,
-            String,
-        }
-
-        void IScanner.SetSource(string source, int offset)
-        {
-            m_source = source;
-            m_offset = offset;
-        }
-
-        private IVsTextBuffer m_buffer;
-        string m_source;
-        int m_offset;
-    }
-
-    internal class LolFxAuthoringScope : AuthoringScope
-    {
-        public override string GetDataTipText(int line, int col, out TextSpan span)
-        {
-            span = new TextSpan();
-            return null;
-        }
-
-        public override Declarations GetDeclarations(IVsTextView view,
-                                                     int line,
-                                                     int col,
-                                                     TokenInfo info,
-                                                     ParseReason reason)
-        {
-            return null;
-        }
-
-        public override string Goto(VSConstants.VSStd97CmdID cmd, IVsTextView textView, int line, int col, out TextSpan span)
-        {
-            span = new TextSpan();
-            return null;
-        }
-
-        public override Methods GetMethods(int line, int col, string name)
-        {
-            return null;
-        }
-    }
-}
-
-} /* namespace lol */
diff --git a/tools/vslol/Makefile.am b/tools/vslol/Makefile.am
deleted file mode 100644
index a92ff29a..00000000
--- a/tools/vslol/Makefile.am
+++ /dev/null
@@ -1,18 +0,0 @@
-
-include $(top_srcdir)/build/autotools/common.am
-
-EXTRA_DIST += \
-    VsLol.csproj \
-    \
-    VsLol.cs \
-    VsLol.vsct \
-    VsLol.resx \
-    VsLol.Designer.cs \
-    Properties/AssemblyInfo.cs \
-    GlobalSuppressions.cs \
-    MenuGenerateCompilers.cs \
-    \
-    source.extension.vsixmanifest \
-    \
-    gear.bmp
-
diff --git a/tools/vslol/MenuGenerateCompilers.cs b/tools/vslol/MenuGenerateCompilers.cs
deleted file mode 100644
index 12b1d4ca..00000000
--- a/tools/vslol/MenuGenerateCompilers.cs
+++ /dev/null
@@ -1,259 +0,0 @@
-//
-// Lol Engine - VsLol add-in for Visual Studio
-//
-// Copyright: (c) 2010-2013 Sam Hocevar <sam@hocevar.net>
-//   This program is free software; you can redistribute it and/or
-//   modify it under the terms of the Do What The Fuck You Want To
-//   Public License, Version 2, as published by Sam Hocevar. See
-//   http://www.wtfpl.net/ for more details.
-//
-
-using System;
-using System.Collections;
-using System.Collections.Generic;
-using System.ComponentModel.Design;
-using System.Diagnostics;
-using System.Globalization;
-using System.IO;
-using System.Runtime.InteropServices;
-using System.Text;
-
-using EnvDTE;
-
-using Microsoft.VisualStudio.Shell;
-using Microsoft.VisualStudio.Shell.Interop;
-
-using VSConstants = Microsoft.VisualStudio.VSConstants;
-
-namespace lol
-{
-
-internal class MenuGenerateCompilers : OleMenuCommand
-{
-    public MenuGenerateCompilers(ServiceProvider sp, CommandID id) :
-        base(new EventHandler(ClickCallback), id, VsLol.ResourceManager.GetString("GenerateCompilersText"))
-    {
-        this.sp = sp;
-        this.projects = new List<Project>();
-        this.BeforeQueryStatus += new EventHandler(OnBeforeQueryStatus);
-    }
-
-    private void OnBeforeQueryStatus(object sender, EventArgs e)
-    {
-        projects.Clear();
-
-        var cmd = sender as OleMenuCommand;
-        if (cmd == null)
-            return;
-
-        IVsMonitorSelection monitorSelection = sp.GetService(typeof(IVsMonitorSelection)) as IVsMonitorSelection;
-        if (monitorSelection == null)
-            return;
-
-        IntPtr hier = IntPtr.Zero;
-        UInt32 itemid;
-        IVsMultiItemSelect multiitem = null;
-        IntPtr container = IntPtr.Zero;
-
-        try
-        {
-            monitorSelection.GetCurrentSelection(out hier, out itemid, out multiitem, out container);
-
-            /* Bail out if nothing is selected */
-            if (itemid != VSConstants.VSITEMID_SELECTION && itemid != VSConstants.VSITEMID_NIL)
-            {
-                if (hier == IntPtr.Zero)
-                {
-                    /* FIXME: parse the whole solution */
-                }
-                else
-                {
-                    object project = null;
-
-                    IVsHierarchy hierarchy = (IVsHierarchy)Marshal.GetObjectForIUnknown(hier);
-                    hierarchy.GetProperty(VSConstants.VSITEMID_ROOT, (int)__VSHPROPID.VSHPROPID_ExtObject, out project);
-                    projects.Add(project as Project);
-                }
-            }
-        }
-        finally
-        {
-            if (hier != IntPtr.Zero)
-                Marshal.Release(hier);
-
-            if (container != IntPtr.Zero)
-                Marshal.Release(container);
-        }
-
-        // If there are .l or .y files in this project, display the context menu
-        Visible = false;
-        foreach (Project project in projects)
-            foreach (ProjectItem item in ParseProjectItems(project))
-            {
-                if (item.Name.EndsWith("-scanner.l", StringComparison.CurrentCultureIgnoreCase)
-                     || item.Name.EndsWith("-parser.y", StringComparison.CurrentCultureIgnoreCase))
-                    Visible = true;
-            }
-    }
-
-    private static void ClickCallback(object sender, EventArgs args)
-    {
-        MenuGenerateCompilers cmd = sender as MenuGenerateCompilers;
-        if (cmd == null)
-            return;
-
-        Logger.Clear();
-        Logger.Info("------ Build started: Generating Compilers ------\n");
-
-        int scanner_count = 0, parser_count = 0, error_count = 0;
-
-        foreach (Project project in cmd.projects)
-        {
-            Logger.Info("Project " + project.Name + "\n");
-
-            string project_path = Path.GetDirectoryName(project.FullName);
-
-            /* FIXME: find this using the solution globals! */
-            string external_path = project_path;
-            for (int i = 0; i < 10; ++i)
-            {
-                external_path += "\\..";
-                if (Directory.Exists(external_path + "\\external"))
-                    break;
-            }
-
-            /* FIXME: do not hardcode shit! */
-            string flex_path = external_path + "\\external\\flex-2.5.35";
-            string bison_path = external_path + "\\external\\bison-2.4.2";
-
-            /* Workaround for an MSYS bug. If these directories don't
-             * exist, fork() will fail. Yeah, wtf. */
-            try
-            {
-                Directory.CreateDirectory(flex_path + "\\etc");
-                Directory.CreateDirectory(bison_path + "\\etc");
-            }
-            catch (Exception e) { }
-
-            // Run flex on all the .l files
-            foreach (ProjectItem item in ParseProjectItems(project))
-            {
-                string filename = item.get_FileNames(0);
-
-                if (filename.StartsWith(project_path + "\\"))
-                {
-                    filename = filename.Substring(project_path.Length + 1);
-                    filename = filename.Replace("\\", "/");
-                }
-
-                if (item.Name.EndsWith("-scanner.l"))
-                {
-                    Logger.Info("flex.exe " + filename + "\n");
-
-                    string basename = Path.GetFileName(filename.Substring(0, filename.LastIndexOf("-scanner.l")));
-                    if (!cmd.Run(project_path,
-                                 flex_path + "\\bin\\flex.exe",
-                                 "-v -o "
-                                  + "generated/" + basename + "-scanner.cpp "
-                                  + filename,
-                                 ""))
-                        ++error_count;
-
-                    ++scanner_count;
-                }
-
-                if (item.Name.EndsWith("-parser.y"))
-                {
-                    Logger.Info("bison.exe " + filename + "\n");
-
-                    string basename = Path.GetFileName(filename.Substring(0, filename.LastIndexOf("-parser.y")));
-                    if (!cmd.Run(project_path,
-                                 bison_path + "\\bin\\bison.exe",
-                                 "-v -o "
-                                  + "generated/" + basename + "-parser.cpp "
-                                  + "--defines=generated/" + basename + "-parser.h "
-                                  + "-d "
-                                  + "-b "
-                                  + "generated/" + basename + " "
-                                  + filename,
-                                 "BISON_PKGDATADIR=" + bison_path + "\\share\\bison"))
-                        ++error_count;
-
-                    ++parser_count;
-                }
-            }
-        }
-
-        Logger.Info(string.Format("========== Done: {0} scanner(s), {1} parser(s), {2} error(s) ==========\n",
-                              scanner_count, parser_count, error_count));
-    }
-
-    bool Run(string directory, string executable, string arguments, string env)
-    {
-        System.Diagnostics.Process p = new System.Diagnostics.Process();
-        p.StartInfo.FileName = executable;
-        p.StartInfo.Arguments = arguments;
-        foreach (string s in env.Split(new char[]{'\n'}, StringSplitOptions.RemoveEmptyEntries))
-        {
-            int i = s.IndexOf("=");
-            if (i > 0 && i < s.Length - 1)
-                p.StartInfo.EnvironmentVariables[s.Substring(0, i - 1)] = s.Substring(i + 1);
-        }
-        p.StartInfo.WorkingDirectory = directory;
-        p.StartInfo.CreateNoWindow = true;
-        p.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;
-        p.StartInfo.RedirectStandardError = true;
-        p.StartInfo.RedirectStandardOutput = true;
-        p.StartInfo.RedirectStandardInput = true;
-        p.StartInfo.UseShellExecute = false;
-
-        try
-        {
-            p.Start();
-            string output = p.StandardError.ReadToEnd()
-                          + p.StandardOutput.ReadToEnd();
-            p.WaitForExit();
-            Logger.Info(output);
-            if (p.ExitCode != 0)
-            {
-                Logger.Info("Error: " + executable + " exited with code " + p.ExitCode + "\n");
-                if (!string.IsNullOrEmpty(arguments))
-                    Logger.Info("Error: args: " + arguments + "\n");
-                if (!string.IsNullOrEmpty(env))
-                    Logger.Info("Error: env: " + env + "\n");
-                return false;
-            }
-        }
-        catch (Exception e)
-        {
-            Logger.Info("Error: failed to launch " + executable + "\n");
-            return false;
-        }
-
-        return true;
-    }
-
-    private static IEnumerable<ProjectItem> ParseProjectItems(object o)
-    {
-        ProjectItems subitems;
-        if (o is Project)
-        {
-            subitems = (o as Project).ProjectItems;
-        }
-        else
-        {
-            yield return (o as ProjectItem);
-            subitems = (o as ProjectItem).ProjectItems;
-        }
-
-        foreach (ProjectItem item in subitems)
-            foreach (ProjectItem i in ParseProjectItems(item))
-                yield return i;
-    }
-
-    private ServiceProvider sp;
-
-    private List<Project> projects;
-}
-
-} /* namespace lol */
diff --git a/tools/vslol/Properties/AssemblyInfo.cs b/tools/vslol/Properties/AssemblyInfo.cs
deleted file mode 100644
index 59519383..00000000
--- a/tools/vslol/Properties/AssemblyInfo.cs
+++ /dev/null
@@ -1,33 +0,0 @@
-//
-// Lol Engine - VsLol add-in for Visual Studio
-//
-// Copyright: (c) 2010-2013 Sam Hocevar <sam@hocevar.net>
-//   This program is free software; you can redistribute it and/or
-//   modify it under the terms of the Do What The Fuck You Want To
-//   Public License, Version 2, as published by Sam Hocevar. See
-//   http://www.wtfpl.net/ for more details.
-//
-
-using System.Reflection;
-using System.Runtime.CompilerServices;
-using System.Runtime.InteropServices;
-
-[assembly: AssemblyTitle("VsLol")]
-[assembly: AssemblyDescription("Lol Engine Productivity Tools")]
-[assembly: AssemblyConfiguration("")]
-[assembly: AssemblyCompany("Lol")]
-[assembly: AssemblyProduct("VsLol")]
-[assembly: AssemblyCopyright("Copyright © 2012-2013 Sam Hocevar")]
-[assembly: AssemblyTrademark("")]
-[assembly: AssemblyCulture("")]
-
-// Setting ComVisible to false makes the types in this assembly not visible 
-// to COM components.  If you need to access a type in this assembly from 
-// COM, set the ComVisible attribute to true on that type.
-[assembly: ComVisible(false)]
-
-// The following GUID is for the ID of the typelib if this project is exposed to COM
-[assembly: Guid("58968f91-edb8-4a4c-9f4f-ba39fdb4a21a")]
-
-[assembly: AssemblyVersion("1.0.2.0")]
-[assembly: AssemblyFileVersion("1.0.2.0")]
diff --git a/tools/vslol/VsLol.Designer.cs b/tools/vslol/VsLol.Designer.cs
deleted file mode 100644
index 5f595bab..00000000
--- a/tools/vslol/VsLol.Designer.cs
+++ /dev/null
@@ -1,72 +0,0 @@
-//------------------------------------------------------------------------------
-// <auto-generated>
-//     This code was generated by a tool.
-//     Runtime Version:4.0.30319.18213
-//
-//     Changes to this file may cause incorrect behavior and will be lost if
-//     the code is regenerated.
-// </auto-generated>
-//------------------------------------------------------------------------------
-
-namespace lol {
-    using System;
-    
-    
-    /// <summary>
-    ///   A strongly-typed resource class, for looking up localized strings, etc.
-    /// </summary>
-    // This class was auto-generated by the StronglyTypedResourceBuilder
-    // class via a tool like ResGen or Visual Studio.
-    // To add or remove a member, edit your .ResX file then rerun ResGen
-    // with the /str option, or rebuild your VS project.
-    [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")]
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-    [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
-    internal class VsLol {
-        
-        private static global::System.Resources.ResourceManager resourceMan;
-        
-        private static global::System.Globalization.CultureInfo resourceCulture;
-        
-        [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
-        internal VsLol() {
-        }
-        
-        /// <summary>
-        ///   Returns the cached ResourceManager instance used by this class.
-        /// </summary>
-        [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
-        internal static global::System.Resources.ResourceManager ResourceManager {
-            get {
-                if (object.ReferenceEquals(resourceMan, null)) {
-                    global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("lol.VsLol", typeof(VsLol).Assembly);
-                    resourceMan = temp;
-                }
-                return resourceMan;
-            }
-        }
-        
-        /// <summary>
-        ///   Overrides the current thread's CurrentUICulture property for all
-        ///   resource lookups using this strongly typed resource class.
-        /// </summary>
-        [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
-        internal static global::System.Globalization.CultureInfo Culture {
-            get {
-                return resourceCulture;
-            }
-            set {
-                resourceCulture = value;
-            }
-        }
-        
-        /// <summary>
-        ///   Looks up a localized string similar to Lol: Generate Compilers.
-        /// </summary>
-        internal static string GenerateCompilersText {
-            get {
-                return ResourceManager.GetString("GenerateCompilersText", resourceCulture);
-            }
-        }
-    }
-}
diff --git a/tools/vslol/VsLol.cs b/tools/vslol/VsLol.cs
deleted file mode 100644
index 847344b9..00000000
--- a/tools/vslol/VsLol.cs
+++ /dev/null
@@ -1,164 +0,0 @@
-//
-// Lol Engine - VsLol add-in for Visual Studio
-//
-// Copyright: (c) 2010-2013 Sam Hocevar <sam@hocevar.net>
-//   This program is free software; you can redistribute it and/or
-//   modify it under the terms of the Do What The Fuck You Want To
-//   Public License, Version 2, as published by Sam Hocevar. See
-//   http://www.wtfpl.net/ for more details.
-//
-
-using System;
-using System.ComponentModel.Design;
-using System.Diagnostics;
-using System.Globalization;
-using System.Runtime.InteropServices;
-using System.Security.Permissions;
-using System.Text;
-using IOleServiceProvider = Microsoft.VisualStudio.OLE.Interop.IServiceProvider;
-using Microsoft.VisualStudio.Shell;
-using Microsoft.VisualStudio.Shell.Interop;
-
-namespace lol
-{
-
-[PackageRegistration(UseManagedResourcesOnly = true)]
-
-/* LolFx syntax highlighting */
-[ProvideServiceAttribute(typeof(LolFxLanguageService),
-                         ServiceName = "LolFx Service")]
-[ProvideLanguageServiceAttribute(typeof(LolFxLanguageService),
-                                 "LolFx", 106 /* resource ID */,
-                                 CodeSense = true,
-                                 RequestStockColors = true,
-                                 EnableCommenting = true,
-                                 EnableAsyncCompletion = true)]
-[ProvideLanguageExtensionAttribute(typeof(LolFxLanguageService),
-                                   ".lolfx")]
-
-[ProvideMenuResource(1000, 1)]
-[Guid("f96f7ac5-16ac-4061-8b92-0a02bb455ae9")]
-[InstalledProductRegistration("#110", "#112", "1.0", IconResourceID = 400)]
-[ComVisible(true)]
-
-/* Autoload package */
-[ProvideAutoLoad("f1536ef8-92ec-443c-9ed7-fdadf150da82")]
-
-public sealed class PluginPackage : Package
-{
-    public PluginPackage()
-    {
-        Trace.WriteLine(String.Format(CultureInfo.InvariantCulture,
-                                      "Entering constructor for: {0}", this.ToString()));
-    }
-
-    [SecurityPermission(SecurityAction.Demand, Flags=SecurityPermissionFlag.UnmanagedCode)]
-    protected override void Initialize()
-    {
-        // Trace the beginning of this method and call the base implementation.
-        Trace.WriteLine(String.Format(CultureInfo.InvariantCulture,
-                                      "Entering Initialize() of: {0}", this.ToString()));
-        base.Initialize();
-
-        Logger.Initialize(GetService(typeof(SVsOutputWindow)) as IVsOutputWindow);
-
-        /* Register the "Generate Compilers" context menu */
-        OleMenuCommandService mcs = GetService(typeof(IMenuCommandService)) as OleMenuCommandService;
-        if (null != mcs)
-        {
-            CommandID id = new CommandID(GuidsList.guidVsLolCmdSet,
-                                         VsLolIDList.cmdidGenerateCompilers);
-            OleMenuCommand command = new MenuGenerateCompilers(new ServiceProvider((IOleServiceProvider)this.GetService(typeof(IOleServiceProvider))), id);
-            mcs.AddCommand(command);
-        }
-
-        /* Register the LolFx language service */
-        IServiceContainer serviceContainer = this as IServiceContainer;
-        LolFxLanguageService lolfxserv = new LolFxLanguageService();
-        lolfxserv.SetSite(this);
-        serviceContainer.AddService(typeof(LolFxLanguageService),
-                                    lolfxserv, true);
-    }
-}
-
-internal static class Logger
-{
-    public static void Initialize(IVsOutputWindow window)
-    {
-        m_window = window;
-
-        OpenBuildPane();
-
-        if (m_pane == null)
-            Trace.WriteLine("Failed to get a reference to the Output window Build pane");
-    }
-
-    private static void OpenBuildPane()
-    {
-        /* Ensure the "Build" output pane exists */
-        if (m_window != null)
-        {
-            Guid guidBuild = Microsoft.VisualStudio.VSConstants.OutputWindowPaneGuid.BuildOutputPane_guid;
-            m_window.CreatePane(guidBuild, "Build", 1, 0);
-
-            if (Microsoft.VisualStudio.ErrorHandler.Failed(m_window.GetPane(ref guidBuild, out m_pane)))
-                m_pane = null;
-        }
-
-        if (m_pane != null)
-            m_pane.Activate();
-    }
-
-    public static void Clear()
-    {
-        OpenBuildPane();
-
-        if (m_pane == null)
-        {
-            m_backlog = "";
-            return;
-        }
-
-        m_pane.Clear();
-    }
-
-    public static void Info(string s)
-    {
-        OpenBuildPane();
-
-        if (m_pane == null)
-        {
-            m_backlog += s;
-            return;
-        }
-
-        m_pane.OutputString(m_backlog);
-        m_backlog = "";
-        m_pane.OutputString(s);
-    }
-
-    private static IVsOutputWindow m_window = null;
-    private static IVsOutputWindowPane m_pane = null;
-    private static string m_backlog = "";
-}
-
-internal static class GuidsList
-{
-    // Now define the list of guids as public static members.
-    [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
-    public static readonly Guid guidVsLolPkg = new Guid("{f96f7ac5-16ac-4061-8b92-0a02bb455ae9}");
-
-    public static readonly Guid guidVsLolCmdSet = new Guid("{ce508d12-530e-45d0-8b52-1e9ee3f8eaaf}");
-
-    [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
-    public static readonly Guid guidGearBmp = new Guid("{560dba06-c26b-4731-8229-b816818e5992}");
-}
-
-internal static class VsLolIDList
-{
-    public const int cmdidGenerateCompilers = 0x2001;
-    public const int cmdidUnused1 = 0x2002;
-    public const int cmdidUnused2 = 0x2003;
-}
-
-} /* namespace lol */
diff --git a/tools/vslol/VsLol.csproj b/tools/vslol/VsLol.csproj
deleted file mode 100644
index c7b54a8d..00000000
--- a/tools/vslol/VsLol.csproj
+++ /dev/null
@@ -1,171 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="4.0">
-  <PropertyGroup>
-    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
-    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
-    <SchemaVersion>2.0</SchemaVersion>
-    <ProjectGuid>{58922993-9830-4A40-B462-0326342F69ED}</ProjectGuid>
-    <ProjectTypeGuids>{82b43b9b-a64c-4715-b499-d71e9ca2bd60};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>
-    <OutputType>Library</OutputType>
-    <AppDesignerFolder>Properties</AppDesignerFolder>
-    <RootNamespace>lol</RootNamespace>
-    <AssemblyName>Lol.VisualStudio.VsLol</AssemblyName>
-    <TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
-    <PublishUrl>publish\</PublishUrl>
-    <Install>true</Install>
-    <InstallFrom>Disk</InstallFrom>
-    <UpdateEnabled>false</UpdateEnabled>
-    <UpdateMode>Foreground</UpdateMode>
-    <UpdateInterval>7</UpdateInterval>
-    <UpdateIntervalUnits>Days</UpdateIntervalUnits>
-    <UpdatePeriodically>false</UpdatePeriodically>
-    <UpdateRequired>false</UpdateRequired>
-    <MapFileExtensions>true</MapFileExtensions>
-    <ApplicationRevision>0</ApplicationRevision>
-    <ApplicationVersion>1.0.2.0</ApplicationVersion>
-    <IsWebBootstrapper>false</IsWebBootstrapper>
-    <UseApplicationTrust>false</UseApplicationTrust>
-    <BootstrapperEnabled>true</BootstrapperEnabled>
-  </PropertyGroup>
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
-    <DebugSymbols>true</DebugSymbols>
-    <DebugType>full</DebugType>
-    <Optimize>false</Optimize>
-    <OutputPath>bin\Debug\</OutputPath>
-    <DefineConstants>DEBUG;TRACE</DefineConstants>
-    <ErrorReport>prompt</ErrorReport>
-    <WarningLevel>4</WarningLevel>
-    <RunCodeAnalysis>true</RunCodeAnalysis>
-    <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
-  </PropertyGroup>
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
-    <DebugType>pdbonly</DebugType>
-    <Optimize>true</Optimize>
-    <OutputPath>bin\Release\</OutputPath>
-    <DefineConstants>TRACE</DefineConstants>
-    <ErrorReport>prompt</ErrorReport>
-    <WarningLevel>4</WarningLevel>
-    <RunCodeAnalysis>true</RunCodeAnalysis>
-    <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
-  </PropertyGroup>
-  <ItemGroup>
-    <Reference Include="envdte, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
-      <EmbedInteropTypes>True</EmbedInteropTypes>
-      <HintPath>..\..\..\..\Program Files (x86)\Common Files\Microsoft Shared\MSEnv\PublicAssemblies\envdte.dll</HintPath>
-    </Reference>
-    <Reference Include="Microsoft.CSharp" />
-    <Reference Include="Microsoft.VisualStudio.ComponentModelHost, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL" />
-    <Reference Include="Microsoft.VisualStudio.CoreUtility, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL" />
-    <Reference Include="Microsoft.VisualStudio.Language.StandardClassification, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL" />
-    <Reference Include="Microsoft.VisualStudio.OLE.Interop" />
-    <Reference Include="Microsoft.VisualStudio.Package.LanguageService.10.0, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL" />
-    <Reference Include="Microsoft.VisualStudio.Shell.Interop" />
-    <Reference Include="Microsoft.VisualStudio.Shell.Interop.8.0" />
-    <Reference Include="Microsoft.VisualStudio.Shell.Interop.9.0" />
-    <Reference Include="Microsoft.VisualStudio.Shell.Interop.10.0" />
-    <Reference Include="Microsoft.VisualStudio.Text.Data, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL" />
-    <Reference Include="Microsoft.VisualStudio.Text.Logic, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL" />
-    <Reference Include="Microsoft.VisualStudio.Text.UI, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL" />
-    <Reference Include="Microsoft.VisualStudio.Text.UI.Wpf, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL" />
-    <Reference Include="Microsoft.VisualStudio.TextManager.Interop" />
-    <Reference Include="Microsoft.VisualStudio.Shell.10.0">
-      <Private>false</Private>
-    </Reference>
-    <Reference Include="Microsoft.VisualStudio.Shell.Immutable.10.0" />
-    <Reference Include="Microsoft.VisualStudio.TextManager.Interop.8.0, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
-    <Reference Include="PresentationCore" />
-    <Reference Include="System" />
-    <Reference Include="System.ComponentModel.Composition" />
-    <Reference Include="System.Core" />
-    <Reference Include="System.Data" />
-    <Reference Include="System.Design" />
-    <Reference Include="System.Drawing" />
-    <Reference Include="System.Windows.Forms" />
-    <Reference Include="System.Xml" />
-    <Reference Include="WindowsBase" />
-  </ItemGroup>
-  <ItemGroup>
-    <Compile Include="CppKeywordClassifier.cs" />
-    <Compile Include="LolFxLanguageService.cs" />
-    <Compile Include="MenuGenerateCompilers.cs" />
-    <Compile Include="GlobalSuppressions.cs" />
-    <Compile Include="VsLol.Designer.cs">
-      <AutoGen>True</AutoGen>
-      <DesignTime>True</DesignTime>
-      <DependentUpon>VsLol.resx</DependentUpon>
-    </Compile>
-    <Compile Include="VsLol.cs" />
-    <Compile Include="Properties\AssemblyInfo.cs" />
-  </ItemGroup>
-  <ItemGroup>
-    <VSCTCompile Include="VsLol.vsct">
-      <ResourceName>1000</ResourceName>
-      <SubType>Designer</SubType>
-    </VSCTCompile>
-  </ItemGroup>
-  <ItemGroup>
-    <EmbeddedResource Include="VsLol.resx">
-      <Generator>ResXFileCodeGenerator</Generator>
-      <LastGenOutput>VsLol.Designer.cs</LastGenOutput>
-      <SubType>Designer</SubType>
-      <MergeWithCTO>true</MergeWithCTO>
-    </EmbeddedResource>
-  </ItemGroup>
-  <ItemGroup>
-    <Content Include="..\..\COPYING">
-      <CopyToOutputDirectory>Always</CopyToOutputDirectory>
-      <IncludeInVSIX>true</IncludeInVSIX>
-    </Content>
-    <None Include="source.extension.vsixmanifest">
-      <SubType>Designer</SubType>
-    </None>
-  </ItemGroup>
-  <ItemGroup>
-    <BootstrapperPackage Include=".NETFramework,Version=v4.0">
-      <Visible>False</Visible>
-      <ProductName>Microsoft .NET Framework 4 %28x86 and x64%29</ProductName>
-      <Install>true</Install>
-    </BootstrapperPackage>
-    <BootstrapperPackage Include="Microsoft.Net.Client.3.5">
-      <Visible>False</Visible>
-      <ProductName>.NET Framework 3.5 SP1 Client Profile</ProductName>
-      <Install>false</Install>
-    </BootstrapperPackage>
-    <BootstrapperPackage Include="Microsoft.Net.Framework.3.5.SP1">
-      <Visible>False</Visible>
-      <ProductName>.NET Framework 3.5 SP1</ProductName>
-      <Install>false</Install>
-    </BootstrapperPackage>
-    <BootstrapperPackage Include="Microsoft.VisualBasic.PowerPacks.10.0">
-      <Visible>False</Visible>
-      <ProductName>Microsoft Visual Basic PowerPacks 10.0</ProductName>
-      <Install>true</Install>
-    </BootstrapperPackage>
-    <BootstrapperPackage Include="Microsoft.Windows.Installer.3.1">
-      <Visible>False</Visible>
-      <ProductName>Windows Installer 3.1</ProductName>
-      <Install>true</Install>
-    </BootstrapperPackage>
-  </ItemGroup>
-  <ItemGroup>
-    <Content Include="gear.bmp" />
-  </ItemGroup>
-  <PropertyGroup>
-    <!--
-    To specify a different registry root to register your package, uncomment the TargetRegistryRoot
-    tag and specify a registry root in it.
-    <TargetRegistryRoot></TargetRegistryRoot>
-    -->
-    <RegisterOutputPackage>true</RegisterOutputPackage>
-    <RegisterWithCodebase>true</RegisterWithCodebase>
-  </PropertyGroup>
-  <Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
-  <Import Project="$(MSBuildExtensionsPath)\Microsoft\VisualStudio\v10.0\VSSDK\Microsoft.VsSDK.targets" />
-  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. 
-       Other similar extension points exist, see Microsoft.Common.targets.
-  <Target Name="BeforeBuild">
-  </Target>
-  <Target Name="AfterBuild">
-  </Target>
-  -->
-</Project>
diff --git a/tools/vslol/VsLol.resx b/tools/vslol/VsLol.resx
deleted file mode 100644
index d213c954..00000000
--- a/tools/vslol/VsLol.resx
+++ /dev/null
@@ -1,123 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<root>
-  <!-- 
-    Microsoft ResX Schema 
-    
-    Version 2.0
-    
-    The primary goals of this format is to allow a simple XML format 
-    that is mostly human readable. The generation and parsing of the 
-    various data types are done through the TypeConverter classes 
-    associated with the data types.
-    
-    Example:
-    
-    ... ado.net/XML headers & schema ...
-    <resheader name="resmimetype">text/microsoft-resx</resheader>
-    <resheader name="version">2.0</resheader>
-    <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
-    <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
-    <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
-    <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
-    <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
-        <value>[base64 mime encoded serialized .NET Framework object]</value>
-    </data>
-    <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
-        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
-        <comment>This is a comment</comment>
-    </data>
-                
-    There are any number of "resheader" rows that contain simple 
-    name/value pairs.
-    
-    Each data row contains a name, and value. The row also contains a 
-    type or mimetype. Type corresponds to a .NET class that support 
-    text/value conversion through the TypeConverter architecture. 
-    Classes that don't support this are serialized and stored with the 
-    mimetype set.
-    
-    The mimetype is used for serialized objects, and tells the 
-    ResXResourceReader how to depersist the object. This is currently not 
-    extensible. For a given mimetype the value must be set accordingly:
-    
-    Note - application/x-microsoft.net.object.binary.base64 is the format 
-    that the ResXResourceWriter will generate, however the reader can 
-    read any of the formats listed below.
-    
-    mimetype: application/x-microsoft.net.object.binary.base64
-    value   : The object must be serialized with 
-            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
-            : and then encoded with base64 encoding.
-    
-    mimetype: application/x-microsoft.net.object.soap.base64
-    value   : The object must be serialized with 
-            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
-            : and then encoded with base64 encoding.
-
-    mimetype: application/x-microsoft.net.object.bytearray.base64
-    value   : The object must be serialized into a byte array 
-            : using a System.ComponentModel.TypeConverter
-            : and then encoded with base64 encoding.
-    -->
-  <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
-    <xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
-    <xsd:element name="root" msdata:IsDataSet="true">
-      <xsd:complexType>
-        <xsd:choice maxOccurs="unbounded">
-          <xsd:element name="metadata">
-            <xsd:complexType>
-              <xsd:sequence>
-                <xsd:element name="value" type="xsd:string" minOccurs="0" />
-              </xsd:sequence>
-              <xsd:attribute name="name" use="required" type="xsd:string" />
-              <xsd:attribute name="type" type="xsd:string" />
-              <xsd:attribute name="mimetype" type="xsd:string" />
-              <xsd:attribute ref="xml:space" />
-            </xsd:complexType>
-          </xsd:element>
-          <xsd:element name="assembly">
-            <xsd:complexType>
-              <xsd:attribute name="alias" type="xsd:string" />
-              <xsd:attribute name="name" type="xsd:string" />
-            </xsd:complexType>
-          </xsd:element>
-          <xsd:element name="data">
-            <xsd:complexType>
-              <xsd:sequence>
-                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
-                <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
-              </xsd:sequence>
-              <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
-              <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
-              <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
-              <xsd:attribute ref="xml:space" />
-            </xsd:complexType>
-          </xsd:element>
-          <xsd:element name="resheader">
-            <xsd:complexType>
-              <xsd:sequence>
-                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
-              </xsd:sequence>
-              <xsd:attribute name="name" type="xsd:string" use="required" />
-            </xsd:complexType>
-          </xsd:element>
-        </xsd:choice>
-      </xsd:complexType>
-    </xsd:element>
-  </xsd:schema>
-  <resheader name="resmimetype">
-    <value>text/microsoft-resx</value>
-  </resheader>
-  <resheader name="version">
-    <value>2.0</value>
-  </resheader>
-  <resheader name="reader">
-    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
-  </resheader>
-  <resheader name="writer">
-    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
-  </resheader>
-  <data name="GenerateCompilersText" xml:space="preserve">
-    <value>Lol: Generate Compilers</value>
-  </data>
-</root>
\ No newline at end of file
diff --git a/tools/vslol/VsLol.sln b/tools/vslol/VsLol.sln
deleted file mode 100644
index cfdc6d5a..00000000
--- a/tools/vslol/VsLol.sln
+++ /dev/null
@@ -1,20 +0,0 @@
-
-Microsoft Visual Studio Solution File, Format Version 11.00
-# Visual Studio 2010
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "VsLol", "VsLol.csproj", "{58922993-9830-4A40-B462-0326342F69ED}"
-EndProject
-Global
-	GlobalSection(SolutionConfigurationPlatforms) = preSolution
-		Debug|Any CPU = Debug|Any CPU
-		Release|Any CPU = Release|Any CPU
-	EndGlobalSection
-	GlobalSection(ProjectConfigurationPlatforms) = postSolution
-		{58922993-9830-4A40-B462-0326342F69ED}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-		{58922993-9830-4A40-B462-0326342F69ED}.Debug|Any CPU.Build.0 = Debug|Any CPU
-		{58922993-9830-4A40-B462-0326342F69ED}.Release|Any CPU.ActiveCfg = Release|Any CPU
-		{58922993-9830-4A40-B462-0326342F69ED}.Release|Any CPU.Build.0 = Release|Any CPU
-	EndGlobalSection
-	GlobalSection(SolutionProperties) = preSolution
-		HideSolutionNode = FALSE
-	EndGlobalSection
-EndGlobal
diff --git a/tools/vslol/VsLol.vsct b/tools/vslol/VsLol.vsct
deleted file mode 100644
index ddc0512c..00000000
--- a/tools/vslol/VsLol.vsct
+++ /dev/null
@@ -1,92 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<CommandTable xmlns="http://schemas.microsoft.com/VisualStudio/2005-10-18/CommandTable" xmlns:xs="http://www.w3.org/2001/XMLSchema">
-  <Extern href="stdidcmd.h" />
-  <Extern href="vsshlids.h" />
-  <!--<Extern href="msobtnid.h" xmlns="http://schemas.microsoft.com/VisualStudio/2005-10-18/CommandTable" />-->
-
-  <Commands package="guidVsLolPkg">
-    <Menus>
-      <Menu guid="guidVsLolCmdSet" id="VsLolToolbar" priority="0x100" type="Toolbar">
-        <Parent guid="guidVsLolCmdSet" id="VsLolToolbar" />
-        <Strings>
-          <ButtonText>C# Sample Toolbar</ButtonText>
-        </Strings>
-      </Menu>
-    </Menus>
-
-    <Groups>
-      <Group guid="guidVsLolCmdSet" id="VsLolMenuGroup" priority="0x600">
-        <Parent guid="guidSHLMainMenu" id="IDM_VS_MENU_TOOLS" />
-      </Group>
-
-      <Group guid="guidVsLolCmdSet" id="VsLolMainToolbarGroup" priority="0x100">
-        <Parent guid="guidSHLMainMenu" id="IDM_VS_TOOL_STANDARD" />
-      </Group>
-
-      <Group guid="guidVsLolCmdSet" id="VsLolToolbarGroup" priority="0x100">
-        <Parent guid="guidVsLolCmdSet" id="VsLolToolbar" />
-      </Group>
-
-      <Group guid="guidVsLolCmdSet" id="VsLolEditorCtxGroup" priority="0x100">
-        <Parent guid="guidSHLMainMenu" id="IDM_VS_CTXT_PROJNODE" />
-      </Group>
-      <Group guid="guidVsLolCmdSet" id="VsLolEditorCtxGroup" priority="0x600">
-        <Parent guid="guidSHLMainMenu" id="IDM_VS_CTXT_CODEWIN" />
-      </Group>
-    </Groups>
-
-    <Buttons>
-      <Button guid="guidVsLolCmdSet" id="cmdidGenerateCompilers" priority="0x100" type="Button">
-        <Parent guid="guidVsLolCmdSet" id="VsLolMenuGroup" />
-        <Icon guid="guidGearBmp" id="bmpGear" />
-        <CommandFlag>DynamicVisibility</CommandFlag>
-        <CommandFlag>DefaultInvisible</CommandFlag>
-        <Strings>
-          <!-- This will override what's in .resx -->
-          <ButtonText>Lol: Generate Compilers</ButtonText>
-        </Strings>
-      </Button>
-    </Buttons>
-
-    <Bitmaps>
-      <Bitmap guid="guidGearBmp" href="gear.bmp" usedList="bmpGear" />
-    </Bitmaps>
-  </Commands>
-
-  
-  <CommandPlacements>
-    <!--Here we place two commands inside the empty menu group we created in the Groups section.-->
-    <CommandPlacement guid="guidVsLolCmdSet" id="cmdidGenerateCompilers" priority="0x100">
-      <Parent guid="guidVsLolCmdSet" id="VsLolEditorCtxGroup" />
-    </CommandPlacement>
-  </CommandPlacements>
-
-  
-  <KeyBindings>
-  </KeyBindings>
-
-
-  <Symbols>
-    
-    <!--The first GUID defined here is the one for the package. It does not contains numeric IDs.-->
-    <GuidSymbol name="guidVsLolPkg" value="{f96f7ac5-16ac-4061-8b92-0a02bb455ae9}" />
-    
-    <GuidSymbol name="guidVsLolCmdSet" value="{ce508d12-530e-45d0-8b52-1e9ee3f8eaaf}">
-
-      <IDSymbol name="VsLolToolbar" value="0x101" />
-
-      <IDSymbol name="VsLolMenuGroup" value="0x1010" />
-      <IDSymbol name="VsLolToolbarGroup" value="0x1011" />
-      <IDSymbol name="VsLolMainToolbarGroup" value="0x1012" />
-      <IDSymbol name="VsLolEditorCtxGroup" value="0x1013" />
-
-      <IDSymbol name="cmdidGenerateCompilers" value="0x2001" />
-      <IDSymbol name="cmdidUnused1" value="0x2002" />
-      <IDSymbol name="cmdidUnused2" value="0x2003" />
-    </GuidSymbol>
-    
-    <GuidSymbol name="guidGearBmp" value="{560dba06-c26b-4731-8229-b816818e5992}">
-      <IDSymbol name="bmpGear" value="1" />
-    </GuidSymbol>
-  </Symbols>
-</CommandTable>
diff --git a/tools/vslol/gear.bmp b/tools/vslol/gear.bmp
deleted file mode 100644
index db290ae2262c6a7283323180c025462bf54a5765..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 1078
zcmYjQNk}6>6m7wa4g;eD3Uiv{fR}-Q2p%RVA_x<M8utbF1q~WE6n7(PNN`0&6mdC-
z+lVWo5*J)>%t1j=0t$v;$ia&T32480)lP#2)m{9m_v-!ke?|Qc_m`9r&hHP-FaM{X
z^qngX?tlICKHme9l#!94E~V1a(xAAwIE5uOH8s4Tpa6Qk9=W->;2}S8Fg-mzfSAu>
zJvKHb4Gj&6rBqf{rfqI+cGlL`nzdSOD6tmCkd%~!qM{;XW@hR+!#G#SZ70t+1;~%d
zWcp>bT0O+0rKRPyv$NAxS6BB^Qc|MaE$%1BQ(<ADHz6Sb@$vCUOG~q>I<m8~HN(Th
z9<$ku*49=uHa3EIR8>`>yu2L6#l^_W%R^RHmcSt;B?ZK+a2=p(;9aJPi3#-d^q{M&
z3vF#}XliOwcq%I^VKf>c^yKH~gFbnAcbJOhKal&@+1Xjp5A^l*f%(8<v4FZTIXQ`%
zni{#fx?15O-xD?HiSz62?R6|KFJp6a6Eib2vN$_FK92hO`Zs!I<QaeZ@rQego`!}7
zMH78SMMVXsr>EV!ySrFjU4`J8pP$FV!UAGqVxB+f^JlHl-Q5jx36G)jF#dRYdW!S&
zb8K&K%j@gwik8^eSf5U(`zbh>t8rvxM9Ix&vnhEAE>SP~7;G>YqL{B;aM<m3?Ck8w
z)F88$eB^m<Z*PAS-Uxq3M@KO*Fz~`!TIj!MRb{ZIx~r=zMaS{+G4}WO<)fn`?CtGg
zV`Br0i;I|>n-d;kaB$G2(P%<dY(zvv2(_Qz-QD5(`Wly)m$<mNz{$x84h{|={Mp*t
z!rI!J;t{pHvQNy>(a}n;cXV_Z9v&WiZns-@xm>uty@k{16g;xS;lSD1nS6M7DDn~>
zL3l(BPWE?@s)2ski1+cXzw}K<pX}ts&CLx22Ww?z51W>jmORYE!=BU%Y+_=fN+Gc}
zhRDds5D`dDPL8_2zlYcB6<&z<7bxPag@*4%E7t1x$f3q^a&m&Frlua*6Yl>0euo-Y
K|Lim6?f(NrWcb|x

diff --git a/tools/vslol/source.extension.vsixmanifest b/tools/vslol/source.extension.vsixmanifest
deleted file mode 100644
index e483ab70..00000000
--- a/tools/vslol/source.extension.vsixmanifest
+++ /dev/null
@@ -1,31 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Vsix xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" Version="1.0.0" xmlns="http://schemas.microsoft.com/developer/vsx-schema/2010">
-  <Identifier Id="VsLol">
-    <Name>VsLol</Name>
-    <Author>Lol</Author>
-    <Version>1.0.2.0</Version>
-    <Description xml:space="preserve">Lol Engine Productivity Tools.</Description>
-    <Locale>1033</Locale>
-    <MoreInfoUrl>http://lolengine.net/</MoreInfoUrl>
-    <License>COPYING</License>
-    <InstalledByMsi>false</InstalledByMsi>
-    <SupportedProducts>
-      <VisualStudio Version="10.0">
-        <Edition>Ultimate</Edition>
-        <Edition>Premium</Edition>
-        <Edition>Pro</Edition>
-      </VisualStudio>
-      <VisualStudio Version="11.0">
-        <Edition>Ultimate</Edition>
-        <Edition>Premium</Edition>
-        <Edition>Pro</Edition>
-      </VisualStudio>
-    </SupportedProducts>
-    <SupportedFrameworkRuntimeEdition MinVersion="4.0" MaxVersion="4.0" />
-  </Identifier>
-  <References />
-  <Content>
-    <VsPackage>|%CurrentProject%;PkgdefProjectOutputGroup|</VsPackage>
-    <MefComponent>|%CurrentProject%|</MefComponent>
-  </Content>
-</Vsix>