diff --git a/code/3rd_party/glad/CMakeLists.txt b/3rd_party/glad/CMakeLists.txt similarity index 100% rename from code/3rd_party/glad/CMakeLists.txt rename to 3rd_party/glad/CMakeLists.txt diff --git a/code/3rd_party/glad/include/KHR/khrplatform.h b/3rd_party/glad/include/KHR/khrplatform.h similarity index 100% rename from code/3rd_party/glad/include/KHR/khrplatform.h rename to 3rd_party/glad/include/KHR/khrplatform.h diff --git a/code/3rd_party/glad/include/glad/gl.h b/3rd_party/glad/include/glad/gl.h similarity index 100% rename from code/3rd_party/glad/include/glad/gl.h rename to 3rd_party/glad/include/glad/gl.h diff --git a/code/3rd_party/glad/src/gl.c b/3rd_party/glad/src/gl.c similarity index 100% rename from code/3rd_party/glad/src/gl.c rename to 3rd_party/glad/src/gl.c diff --git a/code/3rd_party/sdl-2.0.20/.github/PULL_REQUEST_TEMPLATE.md b/3rd_party/sdl-2.0.20/.github/PULL_REQUEST_TEMPLATE.md similarity index 100% rename from code/3rd_party/sdl-2.0.20/.github/PULL_REQUEST_TEMPLATE.md rename to 3rd_party/sdl-2.0.20/.github/PULL_REQUEST_TEMPLATE.md diff --git a/code/3rd_party/sdl-2.0.20/.github/workflows/android.yml b/3rd_party/sdl-2.0.20/.github/workflows/android.yml similarity index 100% rename from code/3rd_party/sdl-2.0.20/.github/workflows/android.yml rename to 3rd_party/sdl-2.0.20/.github/workflows/android.yml diff --git a/code/3rd_party/sdl-2.0.20/.github/workflows/emscripten.yml b/3rd_party/sdl-2.0.20/.github/workflows/emscripten.yml similarity index 100% rename from code/3rd_party/sdl-2.0.20/.github/workflows/emscripten.yml rename to 3rd_party/sdl-2.0.20/.github/workflows/emscripten.yml diff --git a/code/3rd_party/sdl-2.0.20/.github/workflows/ios.yml b/3rd_party/sdl-2.0.20/.github/workflows/ios.yml similarity index 100% rename from code/3rd_party/sdl-2.0.20/.github/workflows/ios.yml rename to 3rd_party/sdl-2.0.20/.github/workflows/ios.yml diff --git a/code/3rd_party/sdl-2.0.20/.github/workflows/main.yml b/3rd_party/sdl-2.0.20/.github/workflows/main.yml similarity index 100% rename from code/3rd_party/sdl-2.0.20/.github/workflows/main.yml rename to 3rd_party/sdl-2.0.20/.github/workflows/main.yml diff --git a/code/3rd_party/sdl-2.0.20/.github/workflows/os2.yml b/3rd_party/sdl-2.0.20/.github/workflows/os2.yml similarity index 100% rename from code/3rd_party/sdl-2.0.20/.github/workflows/os2.yml rename to 3rd_party/sdl-2.0.20/.github/workflows/os2.yml diff --git a/code/3rd_party/sdl-2.0.20/.github/workflows/psp.yaml b/3rd_party/sdl-2.0.20/.github/workflows/psp.yaml similarity index 100% rename from code/3rd_party/sdl-2.0.20/.github/workflows/psp.yaml rename to 3rd_party/sdl-2.0.20/.github/workflows/psp.yaml diff --git a/code/3rd_party/sdl-2.0.20/.github/workflows/riscos.yml b/3rd_party/sdl-2.0.20/.github/workflows/riscos.yml similarity index 100% rename from code/3rd_party/sdl-2.0.20/.github/workflows/riscos.yml rename to 3rd_party/sdl-2.0.20/.github/workflows/riscos.yml diff --git a/code/3rd_party/sdl-2.0.20/.github/workflows/vita.yaml b/3rd_party/sdl-2.0.20/.github/workflows/vita.yaml similarity index 100% rename from code/3rd_party/sdl-2.0.20/.github/workflows/vita.yaml rename to 3rd_party/sdl-2.0.20/.github/workflows/vita.yaml diff --git a/code/3rd_party/sdl-2.0.20/.gitignore b/3rd_party/sdl-2.0.20/.gitignore similarity index 100% rename from code/3rd_party/sdl-2.0.20/.gitignore rename to 3rd_party/sdl-2.0.20/.gitignore diff --git a/code/3rd_party/sdl-2.0.20/Android.mk b/3rd_party/sdl-2.0.20/Android.mk similarity index 100% rename from code/3rd_party/sdl-2.0.20/Android.mk rename to 3rd_party/sdl-2.0.20/Android.mk diff --git a/code/3rd_party/sdl-2.0.20/BUGS.txt b/3rd_party/sdl-2.0.20/BUGS.txt similarity index 100% rename from code/3rd_party/sdl-2.0.20/BUGS.txt rename to 3rd_party/sdl-2.0.20/BUGS.txt diff --git a/code/3rd_party/sdl-2.0.20/CMakeLists.txt b/3rd_party/sdl-2.0.20/CMakeLists.txt similarity index 100% rename from code/3rd_party/sdl-2.0.20/CMakeLists.txt rename to 3rd_party/sdl-2.0.20/CMakeLists.txt diff --git a/code/3rd_party/sdl-2.0.20/CREDITS.txt b/3rd_party/sdl-2.0.20/CREDITS.txt similarity index 100% rename from code/3rd_party/sdl-2.0.20/CREDITS.txt rename to 3rd_party/sdl-2.0.20/CREDITS.txt diff --git a/code/3rd_party/sdl-2.0.20/INSTALL.txt b/3rd_party/sdl-2.0.20/INSTALL.txt similarity index 100% rename from code/3rd_party/sdl-2.0.20/INSTALL.txt rename to 3rd_party/sdl-2.0.20/INSTALL.txt diff --git a/code/3rd_party/sdl-2.0.20/LICENSE.txt b/3rd_party/sdl-2.0.20/LICENSE.txt similarity index 100% rename from code/3rd_party/sdl-2.0.20/LICENSE.txt rename to 3rd_party/sdl-2.0.20/LICENSE.txt diff --git a/code/3rd_party/sdl-2.0.20/Makefile.in b/3rd_party/sdl-2.0.20/Makefile.in similarity index 100% rename from code/3rd_party/sdl-2.0.20/Makefile.in rename to 3rd_party/sdl-2.0.20/Makefile.in diff --git a/code/3rd_party/sdl-2.0.20/Makefile.minimal b/3rd_party/sdl-2.0.20/Makefile.minimal similarity index 100% rename from code/3rd_party/sdl-2.0.20/Makefile.minimal rename to 3rd_party/sdl-2.0.20/Makefile.minimal diff --git a/code/3rd_party/sdl-2.0.20/Makefile.os2 b/3rd_party/sdl-2.0.20/Makefile.os2 similarity index 100% rename from code/3rd_party/sdl-2.0.20/Makefile.os2 rename to 3rd_party/sdl-2.0.20/Makefile.os2 diff --git a/code/3rd_party/sdl-2.0.20/Makefile.pandora b/3rd_party/sdl-2.0.20/Makefile.pandora similarity index 100% rename from code/3rd_party/sdl-2.0.20/Makefile.pandora rename to 3rd_party/sdl-2.0.20/Makefile.pandora diff --git a/code/3rd_party/sdl-2.0.20/Makefile.psp b/3rd_party/sdl-2.0.20/Makefile.psp similarity index 100% rename from code/3rd_party/sdl-2.0.20/Makefile.psp rename to 3rd_party/sdl-2.0.20/Makefile.psp diff --git a/code/3rd_party/sdl-2.0.20/Makefile.wiz b/3rd_party/sdl-2.0.20/Makefile.wiz similarity index 100% rename from code/3rd_party/sdl-2.0.20/Makefile.wiz rename to 3rd_party/sdl-2.0.20/Makefile.wiz diff --git a/code/3rd_party/sdl-2.0.20/README-SDL.txt b/3rd_party/sdl-2.0.20/README-SDL.txt similarity index 100% rename from code/3rd_party/sdl-2.0.20/README-SDL.txt rename to 3rd_party/sdl-2.0.20/README-SDL.txt diff --git a/code/3rd_party/sdl-2.0.20/README.md b/3rd_party/sdl-2.0.20/README.md similarity index 100% rename from code/3rd_party/sdl-2.0.20/README.md rename to 3rd_party/sdl-2.0.20/README.md diff --git a/code/3rd_party/sdl-2.0.20/SDL2.spec.in b/3rd_party/sdl-2.0.20/SDL2.spec.in similarity index 100% rename from code/3rd_party/sdl-2.0.20/SDL2.spec.in rename to 3rd_party/sdl-2.0.20/SDL2.spec.in diff --git a/code/3rd_party/sdl-2.0.20/SDL2Config.cmake b/3rd_party/sdl-2.0.20/SDL2Config.cmake similarity index 100% rename from code/3rd_party/sdl-2.0.20/SDL2Config.cmake rename to 3rd_party/sdl-2.0.20/SDL2Config.cmake diff --git a/code/3rd_party/sdl-2.0.20/TODO.txt b/3rd_party/sdl-2.0.20/TODO.txt similarity index 100% rename from code/3rd_party/sdl-2.0.20/TODO.txt rename to 3rd_party/sdl-2.0.20/TODO.txt diff --git a/code/3rd_party/sdl-2.0.20/VisualC-WinRT/SDL-UWP.sln b/3rd_party/sdl-2.0.20/VisualC-WinRT/SDL-UWP.sln similarity index 100% rename from code/3rd_party/sdl-2.0.20/VisualC-WinRT/SDL-UWP.sln rename to 3rd_party/sdl-2.0.20/VisualC-WinRT/SDL-UWP.sln diff --git a/code/3rd_party/sdl-2.0.20/VisualC-WinRT/SDL-UWP.vcxproj b/3rd_party/sdl-2.0.20/VisualC-WinRT/SDL-UWP.vcxproj similarity index 100% rename from code/3rd_party/sdl-2.0.20/VisualC-WinRT/SDL-UWP.vcxproj rename to 3rd_party/sdl-2.0.20/VisualC-WinRT/SDL-UWP.vcxproj diff --git a/code/3rd_party/sdl-2.0.20/VisualC-WinRT/SDL-UWP.vcxproj.filters b/3rd_party/sdl-2.0.20/VisualC-WinRT/SDL-UWP.vcxproj.filters similarity index 100% rename from code/3rd_party/sdl-2.0.20/VisualC-WinRT/SDL-UWP.vcxproj.filters rename to 3rd_party/sdl-2.0.20/VisualC-WinRT/SDL-UWP.vcxproj.filters diff --git a/code/3rd_party/sdl-2.0.20/VisualC/SDL.sln b/3rd_party/sdl-2.0.20/VisualC/SDL.sln similarity index 100% rename from code/3rd_party/sdl-2.0.20/VisualC/SDL.sln rename to 3rd_party/sdl-2.0.20/VisualC/SDL.sln diff --git a/code/3rd_party/sdl-2.0.20/VisualC/SDL/SDL.vcxproj b/3rd_party/sdl-2.0.20/VisualC/SDL/SDL.vcxproj similarity index 100% rename from code/3rd_party/sdl-2.0.20/VisualC/SDL/SDL.vcxproj rename to 3rd_party/sdl-2.0.20/VisualC/SDL/SDL.vcxproj diff --git a/code/3rd_party/sdl-2.0.20/VisualC/SDL/SDL.vcxproj.filters b/3rd_party/sdl-2.0.20/VisualC/SDL/SDL.vcxproj.filters similarity index 100% rename from code/3rd_party/sdl-2.0.20/VisualC/SDL/SDL.vcxproj.filters rename to 3rd_party/sdl-2.0.20/VisualC/SDL/SDL.vcxproj.filters diff --git a/code/3rd_party/sdl-2.0.20/VisualC/SDLmain/SDLmain.vcxproj b/3rd_party/sdl-2.0.20/VisualC/SDLmain/SDLmain.vcxproj similarity index 100% rename from code/3rd_party/sdl-2.0.20/VisualC/SDLmain/SDLmain.vcxproj rename to 3rd_party/sdl-2.0.20/VisualC/SDLmain/SDLmain.vcxproj diff --git a/code/3rd_party/sdl-2.0.20/VisualC/SDLtest/SDLtest.vcxproj b/3rd_party/sdl-2.0.20/VisualC/SDLtest/SDLtest.vcxproj similarity index 100% rename from code/3rd_party/sdl-2.0.20/VisualC/SDLtest/SDLtest.vcxproj rename to 3rd_party/sdl-2.0.20/VisualC/SDLtest/SDLtest.vcxproj diff --git a/code/3rd_party/sdl-2.0.20/VisualC/clean.sh b/3rd_party/sdl-2.0.20/VisualC/clean.sh similarity index 100% rename from code/3rd_party/sdl-2.0.20/VisualC/clean.sh rename to 3rd_party/sdl-2.0.20/VisualC/clean.sh diff --git a/code/3rd_party/sdl-2.0.20/VisualC/tests/checkkeys/checkkeys.vcxproj b/3rd_party/sdl-2.0.20/VisualC/tests/checkkeys/checkkeys.vcxproj similarity index 100% rename from code/3rd_party/sdl-2.0.20/VisualC/tests/checkkeys/checkkeys.vcxproj rename to 3rd_party/sdl-2.0.20/VisualC/tests/checkkeys/checkkeys.vcxproj diff --git a/code/3rd_party/sdl-2.0.20/VisualC/tests/controllermap/controllermap.vcxproj b/3rd_party/sdl-2.0.20/VisualC/tests/controllermap/controllermap.vcxproj similarity index 100% rename from code/3rd_party/sdl-2.0.20/VisualC/tests/controllermap/controllermap.vcxproj rename to 3rd_party/sdl-2.0.20/VisualC/tests/controllermap/controllermap.vcxproj diff --git a/code/3rd_party/sdl-2.0.20/VisualC/tests/loopwave/loopwave.vcxproj b/3rd_party/sdl-2.0.20/VisualC/tests/loopwave/loopwave.vcxproj similarity index 100% rename from code/3rd_party/sdl-2.0.20/VisualC/tests/loopwave/loopwave.vcxproj rename to 3rd_party/sdl-2.0.20/VisualC/tests/loopwave/loopwave.vcxproj diff --git a/code/3rd_party/sdl-2.0.20/VisualC/tests/testatomic/testatomic.vcxproj b/3rd_party/sdl-2.0.20/VisualC/tests/testatomic/testatomic.vcxproj similarity index 100% rename from code/3rd_party/sdl-2.0.20/VisualC/tests/testatomic/testatomic.vcxproj rename to 3rd_party/sdl-2.0.20/VisualC/tests/testatomic/testatomic.vcxproj diff --git a/code/3rd_party/sdl-2.0.20/VisualC/tests/testautomation/testautomation.vcxproj b/3rd_party/sdl-2.0.20/VisualC/tests/testautomation/testautomation.vcxproj similarity index 100% rename from code/3rd_party/sdl-2.0.20/VisualC/tests/testautomation/testautomation.vcxproj rename to 3rd_party/sdl-2.0.20/VisualC/tests/testautomation/testautomation.vcxproj diff --git a/code/3rd_party/sdl-2.0.20/VisualC/tests/testdraw2/testdraw2.vcxproj b/3rd_party/sdl-2.0.20/VisualC/tests/testdraw2/testdraw2.vcxproj similarity index 100% rename from code/3rd_party/sdl-2.0.20/VisualC/tests/testdraw2/testdraw2.vcxproj rename to 3rd_party/sdl-2.0.20/VisualC/tests/testdraw2/testdraw2.vcxproj diff --git a/code/3rd_party/sdl-2.0.20/VisualC/tests/testfile/testfile.vcxproj b/3rd_party/sdl-2.0.20/VisualC/tests/testfile/testfile.vcxproj similarity index 100% rename from code/3rd_party/sdl-2.0.20/VisualC/tests/testfile/testfile.vcxproj rename to 3rd_party/sdl-2.0.20/VisualC/tests/testfile/testfile.vcxproj diff --git a/code/3rd_party/sdl-2.0.20/VisualC/tests/testgamecontroller/testgamecontroller.vcxproj b/3rd_party/sdl-2.0.20/VisualC/tests/testgamecontroller/testgamecontroller.vcxproj similarity index 100% rename from code/3rd_party/sdl-2.0.20/VisualC/tests/testgamecontroller/testgamecontroller.vcxproj rename to 3rd_party/sdl-2.0.20/VisualC/tests/testgamecontroller/testgamecontroller.vcxproj diff --git a/code/3rd_party/sdl-2.0.20/VisualC/tests/testgesture/testgesture.vcxproj b/3rd_party/sdl-2.0.20/VisualC/tests/testgesture/testgesture.vcxproj similarity index 100% rename from code/3rd_party/sdl-2.0.20/VisualC/tests/testgesture/testgesture.vcxproj rename to 3rd_party/sdl-2.0.20/VisualC/tests/testgesture/testgesture.vcxproj diff --git a/code/3rd_party/sdl-2.0.20/VisualC/tests/testgl2/testgl2.vcxproj b/3rd_party/sdl-2.0.20/VisualC/tests/testgl2/testgl2.vcxproj similarity index 100% rename from code/3rd_party/sdl-2.0.20/VisualC/tests/testgl2/testgl2.vcxproj rename to 3rd_party/sdl-2.0.20/VisualC/tests/testgl2/testgl2.vcxproj diff --git a/code/3rd_party/sdl-2.0.20/VisualC/tests/testgles2/testgles2.vcxproj b/3rd_party/sdl-2.0.20/VisualC/tests/testgles2/testgles2.vcxproj similarity index 100% rename from code/3rd_party/sdl-2.0.20/VisualC/tests/testgles2/testgles2.vcxproj rename to 3rd_party/sdl-2.0.20/VisualC/tests/testgles2/testgles2.vcxproj diff --git a/code/3rd_party/sdl-2.0.20/VisualC/tests/testjoystick/testjoystick.vcxproj b/3rd_party/sdl-2.0.20/VisualC/tests/testjoystick/testjoystick.vcxproj similarity index 100% rename from code/3rd_party/sdl-2.0.20/VisualC/tests/testjoystick/testjoystick.vcxproj rename to 3rd_party/sdl-2.0.20/VisualC/tests/testjoystick/testjoystick.vcxproj diff --git a/code/3rd_party/sdl-2.0.20/VisualC/tests/testoverlay2/testoverlay2.vcxproj b/3rd_party/sdl-2.0.20/VisualC/tests/testoverlay2/testoverlay2.vcxproj similarity index 100% rename from code/3rd_party/sdl-2.0.20/VisualC/tests/testoverlay2/testoverlay2.vcxproj rename to 3rd_party/sdl-2.0.20/VisualC/tests/testoverlay2/testoverlay2.vcxproj diff --git a/code/3rd_party/sdl-2.0.20/VisualC/tests/testplatform/testplatform.vcxproj b/3rd_party/sdl-2.0.20/VisualC/tests/testplatform/testplatform.vcxproj similarity index 100% rename from code/3rd_party/sdl-2.0.20/VisualC/tests/testplatform/testplatform.vcxproj rename to 3rd_party/sdl-2.0.20/VisualC/tests/testplatform/testplatform.vcxproj diff --git a/code/3rd_party/sdl-2.0.20/VisualC/tests/testpower/testpower.vcxproj b/3rd_party/sdl-2.0.20/VisualC/tests/testpower/testpower.vcxproj similarity index 100% rename from code/3rd_party/sdl-2.0.20/VisualC/tests/testpower/testpower.vcxproj rename to 3rd_party/sdl-2.0.20/VisualC/tests/testpower/testpower.vcxproj diff --git a/code/3rd_party/sdl-2.0.20/VisualC/tests/testrendertarget/testrendertarget.vcxproj b/3rd_party/sdl-2.0.20/VisualC/tests/testrendertarget/testrendertarget.vcxproj similarity index 100% rename from code/3rd_party/sdl-2.0.20/VisualC/tests/testrendertarget/testrendertarget.vcxproj rename to 3rd_party/sdl-2.0.20/VisualC/tests/testrendertarget/testrendertarget.vcxproj diff --git a/code/3rd_party/sdl-2.0.20/VisualC/tests/testrumble/testrumble.vcxproj b/3rd_party/sdl-2.0.20/VisualC/tests/testrumble/testrumble.vcxproj similarity index 100% rename from code/3rd_party/sdl-2.0.20/VisualC/tests/testrumble/testrumble.vcxproj rename to 3rd_party/sdl-2.0.20/VisualC/tests/testrumble/testrumble.vcxproj diff --git a/code/3rd_party/sdl-2.0.20/VisualC/tests/testscale/testscale.vcxproj b/3rd_party/sdl-2.0.20/VisualC/tests/testscale/testscale.vcxproj similarity index 100% rename from code/3rd_party/sdl-2.0.20/VisualC/tests/testscale/testscale.vcxproj rename to 3rd_party/sdl-2.0.20/VisualC/tests/testscale/testscale.vcxproj diff --git a/code/3rd_party/sdl-2.0.20/VisualC/tests/testsensor/testsensor.vcxproj b/3rd_party/sdl-2.0.20/VisualC/tests/testsensor/testsensor.vcxproj similarity index 100% rename from code/3rd_party/sdl-2.0.20/VisualC/tests/testsensor/testsensor.vcxproj rename to 3rd_party/sdl-2.0.20/VisualC/tests/testsensor/testsensor.vcxproj diff --git a/code/3rd_party/sdl-2.0.20/VisualC/tests/testshape/testshape.vcxproj b/3rd_party/sdl-2.0.20/VisualC/tests/testshape/testshape.vcxproj similarity index 100% rename from code/3rd_party/sdl-2.0.20/VisualC/tests/testshape/testshape.vcxproj rename to 3rd_party/sdl-2.0.20/VisualC/tests/testshape/testshape.vcxproj diff --git a/code/3rd_party/sdl-2.0.20/VisualC/tests/testsprite2/testsprite2.vcxproj b/3rd_party/sdl-2.0.20/VisualC/tests/testsprite2/testsprite2.vcxproj similarity index 100% rename from code/3rd_party/sdl-2.0.20/VisualC/tests/testsprite2/testsprite2.vcxproj rename to 3rd_party/sdl-2.0.20/VisualC/tests/testsprite2/testsprite2.vcxproj diff --git a/code/3rd_party/sdl-2.0.20/VisualC/tests/testsurround/testsurround.vcxproj b/3rd_party/sdl-2.0.20/VisualC/tests/testsurround/testsurround.vcxproj similarity index 100% rename from code/3rd_party/sdl-2.0.20/VisualC/tests/testsurround/testsurround.vcxproj rename to 3rd_party/sdl-2.0.20/VisualC/tests/testsurround/testsurround.vcxproj diff --git a/code/3rd_party/sdl-2.0.20/VisualC/tests/testvulkan/testvulkan.vcxproj b/3rd_party/sdl-2.0.20/VisualC/tests/testvulkan/testvulkan.vcxproj similarity index 100% rename from code/3rd_party/sdl-2.0.20/VisualC/tests/testvulkan/testvulkan.vcxproj rename to 3rd_party/sdl-2.0.20/VisualC/tests/testvulkan/testvulkan.vcxproj diff --git a/code/3rd_party/sdl-2.0.20/VisualC/tests/testwm2/testwm2.vcxproj b/3rd_party/sdl-2.0.20/VisualC/tests/testwm2/testwm2.vcxproj similarity index 100% rename from code/3rd_party/sdl-2.0.20/VisualC/tests/testwm2/testwm2.vcxproj rename to 3rd_party/sdl-2.0.20/VisualC/tests/testwm2/testwm2.vcxproj diff --git a/code/3rd_party/sdl-2.0.20/VisualC/tests/testyuv/testyuv.vcxproj b/3rd_party/sdl-2.0.20/VisualC/tests/testyuv/testyuv.vcxproj similarity index 100% rename from code/3rd_party/sdl-2.0.20/VisualC/tests/testyuv/testyuv.vcxproj rename to 3rd_party/sdl-2.0.20/VisualC/tests/testyuv/testyuv.vcxproj diff --git a/code/3rd_party/sdl-2.0.20/VisualC/visualtest/unittest/testquit/testquit_VS2012.vcxproj b/3rd_party/sdl-2.0.20/VisualC/visualtest/unittest/testquit/testquit_VS2012.vcxproj similarity index 100% rename from code/3rd_party/sdl-2.0.20/VisualC/visualtest/unittest/testquit/testquit_VS2012.vcxproj rename to 3rd_party/sdl-2.0.20/VisualC/visualtest/unittest/testquit/testquit_VS2012.vcxproj diff --git a/code/3rd_party/sdl-2.0.20/VisualC/visualtest/visualtest_VS2012.vcxproj b/3rd_party/sdl-2.0.20/VisualC/visualtest/visualtest_VS2012.vcxproj similarity index 100% rename from code/3rd_party/sdl-2.0.20/VisualC/visualtest/visualtest_VS2012.vcxproj rename to 3rd_party/sdl-2.0.20/VisualC/visualtest/visualtest_VS2012.vcxproj diff --git a/code/3rd_party/sdl-2.0.20/WhatsNew.txt b/3rd_party/sdl-2.0.20/WhatsNew.txt similarity index 100% rename from code/3rd_party/sdl-2.0.20/WhatsNew.txt rename to 3rd_party/sdl-2.0.20/WhatsNew.txt diff --git a/code/3rd_party/sdl-2.0.20/Xcode-iOS/Demos/Default.png b/3rd_party/sdl-2.0.20/Xcode-iOS/Demos/Default.png similarity index 100% rename from code/3rd_party/sdl-2.0.20/Xcode-iOS/Demos/Default.png rename to 3rd_party/sdl-2.0.20/Xcode-iOS/Demos/Default.png diff --git a/code/3rd_party/sdl-2.0.20/Xcode-iOS/Demos/Demos.xcodeproj/project.pbxproj b/3rd_party/sdl-2.0.20/Xcode-iOS/Demos/Demos.xcodeproj/project.pbxproj similarity index 100% rename from code/3rd_party/sdl-2.0.20/Xcode-iOS/Demos/Demos.xcodeproj/project.pbxproj rename to 3rd_party/sdl-2.0.20/Xcode-iOS/Demos/Demos.xcodeproj/project.pbxproj diff --git a/code/3rd_party/sdl-2.0.20/Xcode-iOS/Demos/Icon.png b/3rd_party/sdl-2.0.20/Xcode-iOS/Demos/Icon.png similarity index 100% rename from code/3rd_party/sdl-2.0.20/Xcode-iOS/Demos/Icon.png rename to 3rd_party/sdl-2.0.20/Xcode-iOS/Demos/Icon.png diff --git a/code/3rd_party/sdl-2.0.20/Xcode-iOS/Demos/Info.plist b/3rd_party/sdl-2.0.20/Xcode-iOS/Demos/Info.plist similarity index 100% rename from code/3rd_party/sdl-2.0.20/Xcode-iOS/Demos/Info.plist rename to 3rd_party/sdl-2.0.20/Xcode-iOS/Demos/Info.plist diff --git a/code/3rd_party/sdl-2.0.20/Xcode-iOS/Demos/README b/3rd_party/sdl-2.0.20/Xcode-iOS/Demos/README similarity index 100% rename from code/3rd_party/sdl-2.0.20/Xcode-iOS/Demos/README rename to 3rd_party/sdl-2.0.20/Xcode-iOS/Demos/README diff --git a/code/3rd_party/sdl-2.0.20/Xcode-iOS/Demos/data/bitmapfont/kromasky_16x16.bmp b/3rd_party/sdl-2.0.20/Xcode-iOS/Demos/data/bitmapfont/kromasky_16x16.bmp similarity index 100% rename from code/3rd_party/sdl-2.0.20/Xcode-iOS/Demos/data/bitmapfont/kromasky_16x16.bmp rename to 3rd_party/sdl-2.0.20/Xcode-iOS/Demos/data/bitmapfont/kromasky_16x16.bmp diff --git a/code/3rd_party/sdl-2.0.20/Xcode-iOS/Demos/data/bitmapfont/license.txt b/3rd_party/sdl-2.0.20/Xcode-iOS/Demos/data/bitmapfont/license.txt similarity index 100% rename from code/3rd_party/sdl-2.0.20/Xcode-iOS/Demos/data/bitmapfont/license.txt rename to 3rd_party/sdl-2.0.20/Xcode-iOS/Demos/data/bitmapfont/license.txt diff --git a/code/3rd_party/sdl-2.0.20/Xcode-iOS/Demos/data/drums/ds_brush_snare.wav b/3rd_party/sdl-2.0.20/Xcode-iOS/Demos/data/drums/ds_brush_snare.wav similarity index 100% rename from code/3rd_party/sdl-2.0.20/Xcode-iOS/Demos/data/drums/ds_brush_snare.wav rename to 3rd_party/sdl-2.0.20/Xcode-iOS/Demos/data/drums/ds_brush_snare.wav diff --git a/code/3rd_party/sdl-2.0.20/Xcode-iOS/Demos/data/drums/ds_china.wav b/3rd_party/sdl-2.0.20/Xcode-iOS/Demos/data/drums/ds_china.wav similarity index 100% rename from code/3rd_party/sdl-2.0.20/Xcode-iOS/Demos/data/drums/ds_china.wav rename to 3rd_party/sdl-2.0.20/Xcode-iOS/Demos/data/drums/ds_china.wav diff --git a/code/3rd_party/sdl-2.0.20/Xcode-iOS/Demos/data/drums/ds_kick_big_amb.wav b/3rd_party/sdl-2.0.20/Xcode-iOS/Demos/data/drums/ds_kick_big_amb.wav similarity index 100% rename from code/3rd_party/sdl-2.0.20/Xcode-iOS/Demos/data/drums/ds_kick_big_amb.wav rename to 3rd_party/sdl-2.0.20/Xcode-iOS/Demos/data/drums/ds_kick_big_amb.wav diff --git a/code/3rd_party/sdl-2.0.20/Xcode-iOS/Demos/data/drums/ds_loose_skin_mute.wav b/3rd_party/sdl-2.0.20/Xcode-iOS/Demos/data/drums/ds_loose_skin_mute.wav similarity index 100% rename from code/3rd_party/sdl-2.0.20/Xcode-iOS/Demos/data/drums/ds_loose_skin_mute.wav rename to 3rd_party/sdl-2.0.20/Xcode-iOS/Demos/data/drums/ds_loose_skin_mute.wav diff --git a/code/3rd_party/sdl-2.0.20/Xcode-iOS/Demos/data/icon.bmp b/3rd_party/sdl-2.0.20/Xcode-iOS/Demos/data/icon.bmp similarity index 100% rename from code/3rd_party/sdl-2.0.20/Xcode-iOS/Demos/data/icon.bmp rename to 3rd_party/sdl-2.0.20/Xcode-iOS/Demos/data/icon.bmp diff --git a/code/3rd_party/sdl-2.0.20/Xcode-iOS/Demos/data/ship.bmp b/3rd_party/sdl-2.0.20/Xcode-iOS/Demos/data/ship.bmp similarity index 100% rename from code/3rd_party/sdl-2.0.20/Xcode-iOS/Demos/data/ship.bmp rename to 3rd_party/sdl-2.0.20/Xcode-iOS/Demos/data/ship.bmp diff --git a/code/3rd_party/sdl-2.0.20/Xcode-iOS/Demos/data/space.bmp b/3rd_party/sdl-2.0.20/Xcode-iOS/Demos/data/space.bmp similarity index 100% rename from code/3rd_party/sdl-2.0.20/Xcode-iOS/Demos/data/space.bmp rename to 3rd_party/sdl-2.0.20/Xcode-iOS/Demos/data/space.bmp diff --git a/code/3rd_party/sdl-2.0.20/Xcode-iOS/Demos/data/stroke.bmp b/3rd_party/sdl-2.0.20/Xcode-iOS/Demos/data/stroke.bmp similarity index 100% rename from code/3rd_party/sdl-2.0.20/Xcode-iOS/Demos/data/stroke.bmp rename to 3rd_party/sdl-2.0.20/Xcode-iOS/Demos/data/stroke.bmp diff --git a/code/3rd_party/sdl-2.0.20/Xcode-iOS/Demos/iOS Launch Screen.storyboard b/3rd_party/sdl-2.0.20/Xcode-iOS/Demos/iOS Launch Screen.storyboard similarity index 100% rename from code/3rd_party/sdl-2.0.20/Xcode-iOS/Demos/iOS Launch Screen.storyboard rename to 3rd_party/sdl-2.0.20/Xcode-iOS/Demos/iOS Launch Screen.storyboard diff --git a/code/3rd_party/sdl-2.0.20/Xcode-iOS/Demos/src/accelerometer.c b/3rd_party/sdl-2.0.20/Xcode-iOS/Demos/src/accelerometer.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/Xcode-iOS/Demos/src/accelerometer.c rename to 3rd_party/sdl-2.0.20/Xcode-iOS/Demos/src/accelerometer.c diff --git a/code/3rd_party/sdl-2.0.20/Xcode-iOS/Demos/src/common.c b/3rd_party/sdl-2.0.20/Xcode-iOS/Demos/src/common.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/Xcode-iOS/Demos/src/common.c rename to 3rd_party/sdl-2.0.20/Xcode-iOS/Demos/src/common.c diff --git a/code/3rd_party/sdl-2.0.20/Xcode-iOS/Demos/src/common.h b/3rd_party/sdl-2.0.20/Xcode-iOS/Demos/src/common.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/Xcode-iOS/Demos/src/common.h rename to 3rd_party/sdl-2.0.20/Xcode-iOS/Demos/src/common.h diff --git a/code/3rd_party/sdl-2.0.20/Xcode-iOS/Demos/src/fireworks.c b/3rd_party/sdl-2.0.20/Xcode-iOS/Demos/src/fireworks.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/Xcode-iOS/Demos/src/fireworks.c rename to 3rd_party/sdl-2.0.20/Xcode-iOS/Demos/src/fireworks.c diff --git a/code/3rd_party/sdl-2.0.20/Xcode-iOS/Demos/src/happy.c b/3rd_party/sdl-2.0.20/Xcode-iOS/Demos/src/happy.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/Xcode-iOS/Demos/src/happy.c rename to 3rd_party/sdl-2.0.20/Xcode-iOS/Demos/src/happy.c diff --git a/code/3rd_party/sdl-2.0.20/Xcode-iOS/Demos/src/keyboard.c b/3rd_party/sdl-2.0.20/Xcode-iOS/Demos/src/keyboard.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/Xcode-iOS/Demos/src/keyboard.c rename to 3rd_party/sdl-2.0.20/Xcode-iOS/Demos/src/keyboard.c diff --git a/code/3rd_party/sdl-2.0.20/Xcode-iOS/Demos/src/mixer.c b/3rd_party/sdl-2.0.20/Xcode-iOS/Demos/src/mixer.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/Xcode-iOS/Demos/src/mixer.c rename to 3rd_party/sdl-2.0.20/Xcode-iOS/Demos/src/mixer.c diff --git a/code/3rd_party/sdl-2.0.20/Xcode-iOS/Demos/src/rectangles.c b/3rd_party/sdl-2.0.20/Xcode-iOS/Demos/src/rectangles.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/Xcode-iOS/Demos/src/rectangles.c rename to 3rd_party/sdl-2.0.20/Xcode-iOS/Demos/src/rectangles.c diff --git a/code/3rd_party/sdl-2.0.20/Xcode-iOS/Demos/src/touch.c b/3rd_party/sdl-2.0.20/Xcode-iOS/Demos/src/touch.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/Xcode-iOS/Demos/src/touch.c rename to 3rd_party/sdl-2.0.20/Xcode-iOS/Demos/src/touch.c diff --git a/code/3rd_party/sdl-2.0.20/Xcode-iOS/SDLtest/SDL2test.xcodeproj/project.pbxproj b/3rd_party/sdl-2.0.20/Xcode-iOS/SDLtest/SDL2test.xcodeproj/project.pbxproj similarity index 100% rename from code/3rd_party/sdl-2.0.20/Xcode-iOS/SDLtest/SDL2test.xcodeproj/project.pbxproj rename to 3rd_party/sdl-2.0.20/Xcode-iOS/SDLtest/SDL2test.xcodeproj/project.pbxproj diff --git a/code/3rd_party/sdl-2.0.20/Xcode-iOS/Test/Info.plist b/3rd_party/sdl-2.0.20/Xcode-iOS/Test/Info.plist similarity index 100% rename from code/3rd_party/sdl-2.0.20/Xcode-iOS/Test/Info.plist rename to 3rd_party/sdl-2.0.20/Xcode-iOS/Test/Info.plist diff --git a/code/3rd_party/sdl-2.0.20/Xcode-iOS/Test/README b/3rd_party/sdl-2.0.20/Xcode-iOS/Test/README similarity index 100% rename from code/3rd_party/sdl-2.0.20/Xcode-iOS/Test/README rename to 3rd_party/sdl-2.0.20/Xcode-iOS/Test/README diff --git a/code/3rd_party/sdl-2.0.20/Xcode-iOS/Test/TestiPhoneOS.xcodeproj/project.pbxproj b/3rd_party/sdl-2.0.20/Xcode-iOS/Test/TestiPhoneOS.xcodeproj/project.pbxproj similarity index 100% rename from code/3rd_party/sdl-2.0.20/Xcode-iOS/Test/TestiPhoneOS.xcodeproj/project.pbxproj rename to 3rd_party/sdl-2.0.20/Xcode-iOS/Test/TestiPhoneOS.xcodeproj/project.pbxproj diff --git a/code/3rd_party/sdl-2.0.20/Xcode/SDL/Info-Framework.plist b/3rd_party/sdl-2.0.20/Xcode/SDL/Info-Framework.plist similarity index 100% rename from code/3rd_party/sdl-2.0.20/Xcode/SDL/Info-Framework.plist rename to 3rd_party/sdl-2.0.20/Xcode/SDL/Info-Framework.plist diff --git a/code/3rd_party/sdl-2.0.20/Xcode/SDL/SDL.xcodeproj/project.pbxproj b/3rd_party/sdl-2.0.20/Xcode/SDL/SDL.xcodeproj/project.pbxproj similarity index 100% rename from code/3rd_party/sdl-2.0.20/Xcode/SDL/SDL.xcodeproj/project.pbxproj rename to 3rd_party/sdl-2.0.20/Xcode/SDL/SDL.xcodeproj/project.pbxproj diff --git a/code/3rd_party/sdl-2.0.20/Xcode/SDL/pkg-support/SDL.info b/3rd_party/sdl-2.0.20/Xcode/SDL/pkg-support/SDL.info similarity index 100% rename from code/3rd_party/sdl-2.0.20/Xcode/SDL/pkg-support/SDL.info rename to 3rd_party/sdl-2.0.20/Xcode/SDL/pkg-support/SDL.info diff --git a/code/3rd_party/sdl-2.0.20/Xcode/SDL/pkg-support/resources/License.txt b/3rd_party/sdl-2.0.20/Xcode/SDL/pkg-support/resources/License.txt similarity index 100% rename from code/3rd_party/sdl-2.0.20/Xcode/SDL/pkg-support/resources/License.txt rename to 3rd_party/sdl-2.0.20/Xcode/SDL/pkg-support/resources/License.txt diff --git a/code/3rd_party/sdl-2.0.20/Xcode/SDL/pkg-support/resources/ReadMe.txt b/3rd_party/sdl-2.0.20/Xcode/SDL/pkg-support/resources/ReadMe.txt similarity index 100% rename from code/3rd_party/sdl-2.0.20/Xcode/SDL/pkg-support/resources/ReadMe.txt rename to 3rd_party/sdl-2.0.20/Xcode/SDL/pkg-support/resources/ReadMe.txt diff --git a/code/3rd_party/sdl-2.0.20/Xcode/SDL/pkg-support/resources/SDL_DS_Store b/3rd_party/sdl-2.0.20/Xcode/SDL/pkg-support/resources/SDL_DS_Store similarity index 100% rename from code/3rd_party/sdl-2.0.20/Xcode/SDL/pkg-support/resources/SDL_DS_Store rename to 3rd_party/sdl-2.0.20/Xcode/SDL/pkg-support/resources/SDL_DS_Store diff --git a/code/3rd_party/sdl-2.0.20/Xcode/SDL/pkg-support/sdl_logo.pdf b/3rd_party/sdl-2.0.20/Xcode/SDL/pkg-support/sdl_logo.pdf similarity index 100% rename from code/3rd_party/sdl-2.0.20/Xcode/SDL/pkg-support/sdl_logo.pdf rename to 3rd_party/sdl-2.0.20/Xcode/SDL/pkg-support/sdl_logo.pdf diff --git a/code/3rd_party/sdl-2.0.20/Xcode/SDLTest/SDLTest.xcodeproj/project.pbxproj b/3rd_party/sdl-2.0.20/Xcode/SDLTest/SDLTest.xcodeproj/project.pbxproj similarity index 100% rename from code/3rd_party/sdl-2.0.20/Xcode/SDLTest/SDLTest.xcodeproj/project.pbxproj rename to 3rd_party/sdl-2.0.20/Xcode/SDLTest/SDLTest.xcodeproj/project.pbxproj diff --git a/code/3rd_party/sdl-2.0.20/Xcode/SDLTest/TestDropFile-Info.plist b/3rd_party/sdl-2.0.20/Xcode/SDLTest/TestDropFile-Info.plist similarity index 100% rename from code/3rd_party/sdl-2.0.20/Xcode/SDLTest/TestDropFile-Info.plist rename to 3rd_party/sdl-2.0.20/Xcode/SDLTest/TestDropFile-Info.plist diff --git a/code/3rd_party/sdl-2.0.20/Xcode/XcodeDocSet/Doxyfile b/3rd_party/sdl-2.0.20/Xcode/XcodeDocSet/Doxyfile similarity index 100% rename from code/3rd_party/sdl-2.0.20/Xcode/XcodeDocSet/Doxyfile rename to 3rd_party/sdl-2.0.20/Xcode/XcodeDocSet/Doxyfile diff --git a/code/3rd_party/sdl-2.0.20/acinclude/ac_check_define.m4 b/3rd_party/sdl-2.0.20/acinclude/ac_check_define.m4 similarity index 100% rename from code/3rd_party/sdl-2.0.20/acinclude/ac_check_define.m4 rename to 3rd_party/sdl-2.0.20/acinclude/ac_check_define.m4 diff --git a/code/3rd_party/sdl-2.0.20/acinclude/alsa.m4 b/3rd_party/sdl-2.0.20/acinclude/alsa.m4 similarity index 100% rename from code/3rd_party/sdl-2.0.20/acinclude/alsa.m4 rename to 3rd_party/sdl-2.0.20/acinclude/alsa.m4 diff --git a/code/3rd_party/sdl-2.0.20/acinclude/ax_check_compiler_flags.m4 b/3rd_party/sdl-2.0.20/acinclude/ax_check_compiler_flags.m4 similarity index 100% rename from code/3rd_party/sdl-2.0.20/acinclude/ax_check_compiler_flags.m4 rename to 3rd_party/sdl-2.0.20/acinclude/ax_check_compiler_flags.m4 diff --git a/code/3rd_party/sdl-2.0.20/acinclude/ax_gcc_archflag.m4 b/3rd_party/sdl-2.0.20/acinclude/ax_gcc_archflag.m4 similarity index 100% rename from code/3rd_party/sdl-2.0.20/acinclude/ax_gcc_archflag.m4 rename to 3rd_party/sdl-2.0.20/acinclude/ax_gcc_archflag.m4 diff --git a/code/3rd_party/sdl-2.0.20/acinclude/ax_gcc_x86_cpuid.m4 b/3rd_party/sdl-2.0.20/acinclude/ax_gcc_x86_cpuid.m4 similarity index 100% rename from code/3rd_party/sdl-2.0.20/acinclude/ax_gcc_x86_cpuid.m4 rename to 3rd_party/sdl-2.0.20/acinclude/ax_gcc_x86_cpuid.m4 diff --git a/code/3rd_party/sdl-2.0.20/acinclude/esd.m4 b/3rd_party/sdl-2.0.20/acinclude/esd.m4 similarity index 100% rename from code/3rd_party/sdl-2.0.20/acinclude/esd.m4 rename to 3rd_party/sdl-2.0.20/acinclude/esd.m4 diff --git a/code/3rd_party/sdl-2.0.20/acinclude/libtool.m4 b/3rd_party/sdl-2.0.20/acinclude/libtool.m4 similarity index 100% rename from code/3rd_party/sdl-2.0.20/acinclude/libtool.m4 rename to 3rd_party/sdl-2.0.20/acinclude/libtool.m4 diff --git a/code/3rd_party/sdl-2.0.20/acinclude/ltoptions.m4 b/3rd_party/sdl-2.0.20/acinclude/ltoptions.m4 similarity index 100% rename from code/3rd_party/sdl-2.0.20/acinclude/ltoptions.m4 rename to 3rd_party/sdl-2.0.20/acinclude/ltoptions.m4 diff --git a/code/3rd_party/sdl-2.0.20/acinclude/ltsugar.m4 b/3rd_party/sdl-2.0.20/acinclude/ltsugar.m4 similarity index 100% rename from code/3rd_party/sdl-2.0.20/acinclude/ltsugar.m4 rename to 3rd_party/sdl-2.0.20/acinclude/ltsugar.m4 diff --git a/code/3rd_party/sdl-2.0.20/acinclude/ltversion.m4 b/3rd_party/sdl-2.0.20/acinclude/ltversion.m4 similarity index 100% rename from code/3rd_party/sdl-2.0.20/acinclude/ltversion.m4 rename to 3rd_party/sdl-2.0.20/acinclude/ltversion.m4 diff --git a/code/3rd_party/sdl-2.0.20/acinclude/lt~obsolete.m4 b/3rd_party/sdl-2.0.20/acinclude/lt~obsolete.m4 similarity index 100% rename from code/3rd_party/sdl-2.0.20/acinclude/lt~obsolete.m4 rename to 3rd_party/sdl-2.0.20/acinclude/lt~obsolete.m4 diff --git a/code/3rd_party/sdl-2.0.20/acinclude/pkg.m4 b/3rd_party/sdl-2.0.20/acinclude/pkg.m4 similarity index 100% rename from code/3rd_party/sdl-2.0.20/acinclude/pkg.m4 rename to 3rd_party/sdl-2.0.20/acinclude/pkg.m4 diff --git a/code/3rd_party/sdl-2.0.20/android-project-ant/AndroidManifest.xml b/3rd_party/sdl-2.0.20/android-project-ant/AndroidManifest.xml similarity index 100% rename from code/3rd_party/sdl-2.0.20/android-project-ant/AndroidManifest.xml rename to 3rd_party/sdl-2.0.20/android-project-ant/AndroidManifest.xml diff --git a/code/3rd_party/sdl-2.0.20/android-project-ant/ant.properties b/3rd_party/sdl-2.0.20/android-project-ant/ant.properties similarity index 100% rename from code/3rd_party/sdl-2.0.20/android-project-ant/ant.properties rename to 3rd_party/sdl-2.0.20/android-project-ant/ant.properties diff --git a/code/3rd_party/sdl-2.0.20/android-project-ant/build.properties b/3rd_party/sdl-2.0.20/android-project-ant/build.properties similarity index 100% rename from code/3rd_party/sdl-2.0.20/android-project-ant/build.properties rename to 3rd_party/sdl-2.0.20/android-project-ant/build.properties diff --git a/code/3rd_party/sdl-2.0.20/android-project-ant/build.xml b/3rd_party/sdl-2.0.20/android-project-ant/build.xml similarity index 100% rename from code/3rd_party/sdl-2.0.20/android-project-ant/build.xml rename to 3rd_party/sdl-2.0.20/android-project-ant/build.xml diff --git a/code/3rd_party/sdl-2.0.20/android-project-ant/default.properties b/3rd_party/sdl-2.0.20/android-project-ant/default.properties similarity index 100% rename from code/3rd_party/sdl-2.0.20/android-project-ant/default.properties rename to 3rd_party/sdl-2.0.20/android-project-ant/default.properties diff --git a/code/3rd_party/sdl-2.0.20/android-project-ant/jni/Android.mk b/3rd_party/sdl-2.0.20/android-project-ant/jni/Android.mk similarity index 100% rename from code/3rd_party/sdl-2.0.20/android-project-ant/jni/Android.mk rename to 3rd_party/sdl-2.0.20/android-project-ant/jni/Android.mk diff --git a/code/3rd_party/sdl-2.0.20/android-project-ant/jni/Application.mk b/3rd_party/sdl-2.0.20/android-project-ant/jni/Application.mk similarity index 100% rename from code/3rd_party/sdl-2.0.20/android-project-ant/jni/Application.mk rename to 3rd_party/sdl-2.0.20/android-project-ant/jni/Application.mk diff --git a/code/3rd_party/sdl-2.0.20/android-project-ant/jni/src/Android.mk b/3rd_party/sdl-2.0.20/android-project-ant/jni/src/Android.mk similarity index 100% rename from code/3rd_party/sdl-2.0.20/android-project-ant/jni/src/Android.mk rename to 3rd_party/sdl-2.0.20/android-project-ant/jni/src/Android.mk diff --git a/code/3rd_party/sdl-2.0.20/android-project-ant/jni/src/Android_static.mk b/3rd_party/sdl-2.0.20/android-project-ant/jni/src/Android_static.mk similarity index 100% rename from code/3rd_party/sdl-2.0.20/android-project-ant/jni/src/Android_static.mk rename to 3rd_party/sdl-2.0.20/android-project-ant/jni/src/Android_static.mk diff --git a/code/3rd_party/sdl-2.0.20/android-project-ant/proguard-project.txt b/3rd_party/sdl-2.0.20/android-project-ant/proguard-project.txt similarity index 100% rename from code/3rd_party/sdl-2.0.20/android-project-ant/proguard-project.txt rename to 3rd_party/sdl-2.0.20/android-project-ant/proguard-project.txt diff --git a/code/3rd_party/sdl-2.0.20/android-project-ant/project.properties b/3rd_party/sdl-2.0.20/android-project-ant/project.properties similarity index 100% rename from code/3rd_party/sdl-2.0.20/android-project-ant/project.properties rename to 3rd_party/sdl-2.0.20/android-project-ant/project.properties diff --git a/code/3rd_party/sdl-2.0.20/android-project-ant/res/drawable-hdpi/ic_launcher.png b/3rd_party/sdl-2.0.20/android-project-ant/res/drawable-hdpi/ic_launcher.png similarity index 100% rename from code/3rd_party/sdl-2.0.20/android-project-ant/res/drawable-hdpi/ic_launcher.png rename to 3rd_party/sdl-2.0.20/android-project-ant/res/drawable-hdpi/ic_launcher.png diff --git a/code/3rd_party/sdl-2.0.20/android-project-ant/res/drawable-mdpi/ic_launcher.png b/3rd_party/sdl-2.0.20/android-project-ant/res/drawable-mdpi/ic_launcher.png similarity index 100% rename from code/3rd_party/sdl-2.0.20/android-project-ant/res/drawable-mdpi/ic_launcher.png rename to 3rd_party/sdl-2.0.20/android-project-ant/res/drawable-mdpi/ic_launcher.png diff --git a/code/3rd_party/sdl-2.0.20/android-project-ant/res/drawable-xhdpi/ic_launcher.png b/3rd_party/sdl-2.0.20/android-project-ant/res/drawable-xhdpi/ic_launcher.png similarity index 100% rename from code/3rd_party/sdl-2.0.20/android-project-ant/res/drawable-xhdpi/ic_launcher.png rename to 3rd_party/sdl-2.0.20/android-project-ant/res/drawable-xhdpi/ic_launcher.png diff --git a/code/3rd_party/sdl-2.0.20/android-project-ant/res/drawable-xxhdpi/ic_launcher.png b/3rd_party/sdl-2.0.20/android-project-ant/res/drawable-xxhdpi/ic_launcher.png similarity index 100% rename from code/3rd_party/sdl-2.0.20/android-project-ant/res/drawable-xxhdpi/ic_launcher.png rename to 3rd_party/sdl-2.0.20/android-project-ant/res/drawable-xxhdpi/ic_launcher.png diff --git a/code/3rd_party/sdl-2.0.20/android-project-ant/res/layout/main.xml b/3rd_party/sdl-2.0.20/android-project-ant/res/layout/main.xml similarity index 100% rename from code/3rd_party/sdl-2.0.20/android-project-ant/res/layout/main.xml rename to 3rd_party/sdl-2.0.20/android-project-ant/res/layout/main.xml diff --git a/code/3rd_party/sdl-2.0.20/android-project-ant/res/values/strings.xml b/3rd_party/sdl-2.0.20/android-project-ant/res/values/strings.xml similarity index 100% rename from code/3rd_party/sdl-2.0.20/android-project-ant/res/values/strings.xml rename to 3rd_party/sdl-2.0.20/android-project-ant/res/values/strings.xml diff --git a/code/3rd_party/sdl-2.0.20/android-project-ant/src b/3rd_party/sdl-2.0.20/android-project-ant/src similarity index 100% rename from code/3rd_party/sdl-2.0.20/android-project-ant/src rename to 3rd_party/sdl-2.0.20/android-project-ant/src diff --git a/code/3rd_party/sdl-2.0.20/android-project/app/build.gradle b/3rd_party/sdl-2.0.20/android-project/app/build.gradle similarity index 100% rename from code/3rd_party/sdl-2.0.20/android-project/app/build.gradle rename to 3rd_party/sdl-2.0.20/android-project/app/build.gradle diff --git a/code/3rd_party/sdl-2.0.20/android-project/app/jni/Android.mk b/3rd_party/sdl-2.0.20/android-project/app/jni/Android.mk similarity index 100% rename from code/3rd_party/sdl-2.0.20/android-project/app/jni/Android.mk rename to 3rd_party/sdl-2.0.20/android-project/app/jni/Android.mk diff --git a/code/3rd_party/sdl-2.0.20/android-project/app/jni/Application.mk b/3rd_party/sdl-2.0.20/android-project/app/jni/Application.mk similarity index 100% rename from code/3rd_party/sdl-2.0.20/android-project/app/jni/Application.mk rename to 3rd_party/sdl-2.0.20/android-project/app/jni/Application.mk diff --git a/code/3rd_party/sdl-2.0.20/android-project/app/jni/CMakeLists.txt b/3rd_party/sdl-2.0.20/android-project/app/jni/CMakeLists.txt similarity index 100% rename from code/3rd_party/sdl-2.0.20/android-project/app/jni/CMakeLists.txt rename to 3rd_party/sdl-2.0.20/android-project/app/jni/CMakeLists.txt diff --git a/code/3rd_party/sdl-2.0.20/android-project/app/jni/src/Android.mk b/3rd_party/sdl-2.0.20/android-project/app/jni/src/Android.mk similarity index 100% rename from code/3rd_party/sdl-2.0.20/android-project/app/jni/src/Android.mk rename to 3rd_party/sdl-2.0.20/android-project/app/jni/src/Android.mk diff --git a/code/3rd_party/sdl-2.0.20/android-project/app/jni/src/CMakeLists.txt b/3rd_party/sdl-2.0.20/android-project/app/jni/src/CMakeLists.txt similarity index 100% rename from code/3rd_party/sdl-2.0.20/android-project/app/jni/src/CMakeLists.txt rename to 3rd_party/sdl-2.0.20/android-project/app/jni/src/CMakeLists.txt diff --git a/code/3rd_party/sdl-2.0.20/android-project/app/proguard-rules.pro b/3rd_party/sdl-2.0.20/android-project/app/proguard-rules.pro similarity index 100% rename from code/3rd_party/sdl-2.0.20/android-project/app/proguard-rules.pro rename to 3rd_party/sdl-2.0.20/android-project/app/proguard-rules.pro diff --git a/code/3rd_party/sdl-2.0.20/android-project/app/src/main/AndroidManifest.xml b/3rd_party/sdl-2.0.20/android-project/app/src/main/AndroidManifest.xml similarity index 100% rename from code/3rd_party/sdl-2.0.20/android-project/app/src/main/AndroidManifest.xml rename to 3rd_party/sdl-2.0.20/android-project/app/src/main/AndroidManifest.xml diff --git a/code/3rd_party/sdl-2.0.20/android-project/app/src/main/java/org/libsdl/app/HIDDevice.java b/3rd_party/sdl-2.0.20/android-project/app/src/main/java/org/libsdl/app/HIDDevice.java similarity index 100% rename from code/3rd_party/sdl-2.0.20/android-project/app/src/main/java/org/libsdl/app/HIDDevice.java rename to 3rd_party/sdl-2.0.20/android-project/app/src/main/java/org/libsdl/app/HIDDevice.java diff --git a/code/3rd_party/sdl-2.0.20/android-project/app/src/main/java/org/libsdl/app/HIDDeviceBLESteamController.java b/3rd_party/sdl-2.0.20/android-project/app/src/main/java/org/libsdl/app/HIDDeviceBLESteamController.java similarity index 100% rename from code/3rd_party/sdl-2.0.20/android-project/app/src/main/java/org/libsdl/app/HIDDeviceBLESteamController.java rename to 3rd_party/sdl-2.0.20/android-project/app/src/main/java/org/libsdl/app/HIDDeviceBLESteamController.java diff --git a/code/3rd_party/sdl-2.0.20/android-project/app/src/main/java/org/libsdl/app/HIDDeviceManager.java b/3rd_party/sdl-2.0.20/android-project/app/src/main/java/org/libsdl/app/HIDDeviceManager.java similarity index 100% rename from code/3rd_party/sdl-2.0.20/android-project/app/src/main/java/org/libsdl/app/HIDDeviceManager.java rename to 3rd_party/sdl-2.0.20/android-project/app/src/main/java/org/libsdl/app/HIDDeviceManager.java diff --git a/code/3rd_party/sdl-2.0.20/android-project/app/src/main/java/org/libsdl/app/HIDDeviceUSB.java b/3rd_party/sdl-2.0.20/android-project/app/src/main/java/org/libsdl/app/HIDDeviceUSB.java similarity index 100% rename from code/3rd_party/sdl-2.0.20/android-project/app/src/main/java/org/libsdl/app/HIDDeviceUSB.java rename to 3rd_party/sdl-2.0.20/android-project/app/src/main/java/org/libsdl/app/HIDDeviceUSB.java diff --git a/code/3rd_party/sdl-2.0.20/android-project/app/src/main/java/org/libsdl/app/SDL.java b/3rd_party/sdl-2.0.20/android-project/app/src/main/java/org/libsdl/app/SDL.java similarity index 100% rename from code/3rd_party/sdl-2.0.20/android-project/app/src/main/java/org/libsdl/app/SDL.java rename to 3rd_party/sdl-2.0.20/android-project/app/src/main/java/org/libsdl/app/SDL.java diff --git a/code/3rd_party/sdl-2.0.20/android-project/app/src/main/java/org/libsdl/app/SDLActivity.java b/3rd_party/sdl-2.0.20/android-project/app/src/main/java/org/libsdl/app/SDLActivity.java similarity index 100% rename from code/3rd_party/sdl-2.0.20/android-project/app/src/main/java/org/libsdl/app/SDLActivity.java rename to 3rd_party/sdl-2.0.20/android-project/app/src/main/java/org/libsdl/app/SDLActivity.java diff --git a/code/3rd_party/sdl-2.0.20/android-project/app/src/main/java/org/libsdl/app/SDLAudioManager.java b/3rd_party/sdl-2.0.20/android-project/app/src/main/java/org/libsdl/app/SDLAudioManager.java similarity index 100% rename from code/3rd_party/sdl-2.0.20/android-project/app/src/main/java/org/libsdl/app/SDLAudioManager.java rename to 3rd_party/sdl-2.0.20/android-project/app/src/main/java/org/libsdl/app/SDLAudioManager.java diff --git a/code/3rd_party/sdl-2.0.20/android-project/app/src/main/java/org/libsdl/app/SDLControllerManager.java b/3rd_party/sdl-2.0.20/android-project/app/src/main/java/org/libsdl/app/SDLControllerManager.java similarity index 100% rename from code/3rd_party/sdl-2.0.20/android-project/app/src/main/java/org/libsdl/app/SDLControllerManager.java rename to 3rd_party/sdl-2.0.20/android-project/app/src/main/java/org/libsdl/app/SDLControllerManager.java diff --git a/code/3rd_party/sdl-2.0.20/android-project/app/src/main/res/mipmap-hdpi/ic_launcher.png b/3rd_party/sdl-2.0.20/android-project/app/src/main/res/mipmap-hdpi/ic_launcher.png similarity index 100% rename from code/3rd_party/sdl-2.0.20/android-project/app/src/main/res/mipmap-hdpi/ic_launcher.png rename to 3rd_party/sdl-2.0.20/android-project/app/src/main/res/mipmap-hdpi/ic_launcher.png diff --git a/code/3rd_party/sdl-2.0.20/android-project/app/src/main/res/mipmap-mdpi/ic_launcher.png b/3rd_party/sdl-2.0.20/android-project/app/src/main/res/mipmap-mdpi/ic_launcher.png similarity index 100% rename from code/3rd_party/sdl-2.0.20/android-project/app/src/main/res/mipmap-mdpi/ic_launcher.png rename to 3rd_party/sdl-2.0.20/android-project/app/src/main/res/mipmap-mdpi/ic_launcher.png diff --git a/code/3rd_party/sdl-2.0.20/android-project/app/src/main/res/mipmap-xhdpi/ic_launcher.png b/3rd_party/sdl-2.0.20/android-project/app/src/main/res/mipmap-xhdpi/ic_launcher.png similarity index 100% rename from code/3rd_party/sdl-2.0.20/android-project/app/src/main/res/mipmap-xhdpi/ic_launcher.png rename to 3rd_party/sdl-2.0.20/android-project/app/src/main/res/mipmap-xhdpi/ic_launcher.png diff --git a/code/3rd_party/sdl-2.0.20/android-project/app/src/main/res/mipmap-xxhdpi/ic_launcher.png b/3rd_party/sdl-2.0.20/android-project/app/src/main/res/mipmap-xxhdpi/ic_launcher.png similarity index 100% rename from code/3rd_party/sdl-2.0.20/android-project/app/src/main/res/mipmap-xxhdpi/ic_launcher.png rename to 3rd_party/sdl-2.0.20/android-project/app/src/main/res/mipmap-xxhdpi/ic_launcher.png diff --git a/code/3rd_party/sdl-2.0.20/android-project/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png b/3rd_party/sdl-2.0.20/android-project/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png similarity index 100% rename from code/3rd_party/sdl-2.0.20/android-project/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png rename to 3rd_party/sdl-2.0.20/android-project/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png diff --git a/code/3rd_party/sdl-2.0.20/android-project/app/src/main/res/values/colors.xml b/3rd_party/sdl-2.0.20/android-project/app/src/main/res/values/colors.xml similarity index 100% rename from code/3rd_party/sdl-2.0.20/android-project/app/src/main/res/values/colors.xml rename to 3rd_party/sdl-2.0.20/android-project/app/src/main/res/values/colors.xml diff --git a/code/3rd_party/sdl-2.0.20/android-project/app/src/main/res/values/strings.xml b/3rd_party/sdl-2.0.20/android-project/app/src/main/res/values/strings.xml similarity index 100% rename from code/3rd_party/sdl-2.0.20/android-project/app/src/main/res/values/strings.xml rename to 3rd_party/sdl-2.0.20/android-project/app/src/main/res/values/strings.xml diff --git a/code/3rd_party/sdl-2.0.20/android-project/app/src/main/res/values/styles.xml b/3rd_party/sdl-2.0.20/android-project/app/src/main/res/values/styles.xml similarity index 100% rename from code/3rd_party/sdl-2.0.20/android-project/app/src/main/res/values/styles.xml rename to 3rd_party/sdl-2.0.20/android-project/app/src/main/res/values/styles.xml diff --git a/code/3rd_party/sdl-2.0.20/android-project/build.gradle b/3rd_party/sdl-2.0.20/android-project/build.gradle similarity index 100% rename from code/3rd_party/sdl-2.0.20/android-project/build.gradle rename to 3rd_party/sdl-2.0.20/android-project/build.gradle diff --git a/code/3rd_party/sdl-2.0.20/android-project/gradle.properties b/3rd_party/sdl-2.0.20/android-project/gradle.properties similarity index 100% rename from code/3rd_party/sdl-2.0.20/android-project/gradle.properties rename to 3rd_party/sdl-2.0.20/android-project/gradle.properties diff --git a/code/3rd_party/sdl-2.0.20/android-project/gradle/wrapper/gradle-wrapper.jar b/3rd_party/sdl-2.0.20/android-project/gradle/wrapper/gradle-wrapper.jar similarity index 100% rename from code/3rd_party/sdl-2.0.20/android-project/gradle/wrapper/gradle-wrapper.jar rename to 3rd_party/sdl-2.0.20/android-project/gradle/wrapper/gradle-wrapper.jar diff --git a/code/3rd_party/sdl-2.0.20/android-project/gradle/wrapper/gradle-wrapper.properties b/3rd_party/sdl-2.0.20/android-project/gradle/wrapper/gradle-wrapper.properties similarity index 100% rename from code/3rd_party/sdl-2.0.20/android-project/gradle/wrapper/gradle-wrapper.properties rename to 3rd_party/sdl-2.0.20/android-project/gradle/wrapper/gradle-wrapper.properties diff --git a/code/3rd_party/sdl-2.0.20/android-project/gradlew b/3rd_party/sdl-2.0.20/android-project/gradlew similarity index 100% rename from code/3rd_party/sdl-2.0.20/android-project/gradlew rename to 3rd_party/sdl-2.0.20/android-project/gradlew diff --git a/code/3rd_party/sdl-2.0.20/android-project/gradlew.bat b/3rd_party/sdl-2.0.20/android-project/gradlew.bat similarity index 100% rename from code/3rd_party/sdl-2.0.20/android-project/gradlew.bat rename to 3rd_party/sdl-2.0.20/android-project/gradlew.bat diff --git a/code/3rd_party/sdl-2.0.20/android-project/settings.gradle b/3rd_party/sdl-2.0.20/android-project/settings.gradle similarity index 100% rename from code/3rd_party/sdl-2.0.20/android-project/settings.gradle rename to 3rd_party/sdl-2.0.20/android-project/settings.gradle diff --git a/code/3rd_party/sdl-2.0.20/autogen.sh b/3rd_party/sdl-2.0.20/autogen.sh similarity index 100% rename from code/3rd_party/sdl-2.0.20/autogen.sh rename to 3rd_party/sdl-2.0.20/autogen.sh diff --git a/code/3rd_party/sdl-2.0.20/cmake/macros.cmake b/3rd_party/sdl-2.0.20/cmake/macros.cmake similarity index 100% rename from code/3rd_party/sdl-2.0.20/cmake/macros.cmake rename to 3rd_party/sdl-2.0.20/cmake/macros.cmake diff --git a/code/3rd_party/sdl-2.0.20/cmake/sdlchecks.cmake b/3rd_party/sdl-2.0.20/cmake/sdlchecks.cmake similarity index 100% rename from code/3rd_party/sdl-2.0.20/cmake/sdlchecks.cmake rename to 3rd_party/sdl-2.0.20/cmake/sdlchecks.cmake diff --git a/code/3rd_party/sdl-2.0.20/cmake_uninstall.cmake.in b/3rd_party/sdl-2.0.20/cmake_uninstall.cmake.in similarity index 100% rename from code/3rd_party/sdl-2.0.20/cmake_uninstall.cmake.in rename to 3rd_party/sdl-2.0.20/cmake_uninstall.cmake.in diff --git a/code/3rd_party/sdl-2.0.20/configure b/3rd_party/sdl-2.0.20/configure similarity index 100% rename from code/3rd_party/sdl-2.0.20/configure rename to 3rd_party/sdl-2.0.20/configure diff --git a/code/3rd_party/sdl-2.0.20/configure.ac b/3rd_party/sdl-2.0.20/configure.ac similarity index 100% rename from code/3rd_party/sdl-2.0.20/configure.ac rename to 3rd_party/sdl-2.0.20/configure.ac diff --git a/code/3rd_party/sdl-2.0.20/debian/changelog b/3rd_party/sdl-2.0.20/debian/changelog similarity index 100% rename from code/3rd_party/sdl-2.0.20/debian/changelog rename to 3rd_party/sdl-2.0.20/debian/changelog diff --git a/code/3rd_party/sdl-2.0.20/debian/compat b/3rd_party/sdl-2.0.20/debian/compat similarity index 100% rename from code/3rd_party/sdl-2.0.20/debian/compat rename to 3rd_party/sdl-2.0.20/debian/compat diff --git a/code/3rd_party/sdl-2.0.20/debian/control b/3rd_party/sdl-2.0.20/debian/control similarity index 100% rename from code/3rd_party/sdl-2.0.20/debian/control rename to 3rd_party/sdl-2.0.20/debian/control diff --git a/code/3rd_party/sdl-2.0.20/debian/copyright b/3rd_party/sdl-2.0.20/debian/copyright similarity index 100% rename from code/3rd_party/sdl-2.0.20/debian/copyright rename to 3rd_party/sdl-2.0.20/debian/copyright diff --git a/code/3rd_party/sdl-2.0.20/debian/docs b/3rd_party/sdl-2.0.20/debian/docs similarity index 100% rename from code/3rd_party/sdl-2.0.20/debian/docs rename to 3rd_party/sdl-2.0.20/debian/docs diff --git a/code/3rd_party/sdl-2.0.20/debian/libsdl2-2.0-0-udeb.install b/3rd_party/sdl-2.0.20/debian/libsdl2-2.0-0-udeb.install similarity index 100% rename from code/3rd_party/sdl-2.0.20/debian/libsdl2-2.0-0-udeb.install rename to 3rd_party/sdl-2.0.20/debian/libsdl2-2.0-0-udeb.install diff --git a/code/3rd_party/sdl-2.0.20/debian/libsdl2-2.0-0.install b/3rd_party/sdl-2.0.20/debian/libsdl2-2.0-0.install similarity index 100% rename from code/3rd_party/sdl-2.0.20/debian/libsdl2-2.0-0.install rename to 3rd_party/sdl-2.0.20/debian/libsdl2-2.0-0.install diff --git a/code/3rd_party/sdl-2.0.20/debian/libsdl2-dev.install b/3rd_party/sdl-2.0.20/debian/libsdl2-dev.install similarity index 100% rename from code/3rd_party/sdl-2.0.20/debian/libsdl2-dev.install rename to 3rd_party/sdl-2.0.20/debian/libsdl2-dev.install diff --git a/code/3rd_party/sdl-2.0.20/debian/libsdl2-dev.manpages b/3rd_party/sdl-2.0.20/debian/libsdl2-dev.manpages similarity index 100% rename from code/3rd_party/sdl-2.0.20/debian/libsdl2-dev.manpages rename to 3rd_party/sdl-2.0.20/debian/libsdl2-dev.manpages diff --git a/code/3rd_party/sdl-2.0.20/debian/rules b/3rd_party/sdl-2.0.20/debian/rules similarity index 100% rename from code/3rd_party/sdl-2.0.20/debian/rules rename to 3rd_party/sdl-2.0.20/debian/rules diff --git a/code/3rd_party/sdl-2.0.20/debian/sdl2-config.1 b/3rd_party/sdl-2.0.20/debian/sdl2-config.1 similarity index 100% rename from code/3rd_party/sdl-2.0.20/debian/sdl2-config.1 rename to 3rd_party/sdl-2.0.20/debian/sdl2-config.1 diff --git a/code/3rd_party/sdl-2.0.20/debian/source/format b/3rd_party/sdl-2.0.20/debian/source/format similarity index 100% rename from code/3rd_party/sdl-2.0.20/debian/source/format rename to 3rd_party/sdl-2.0.20/debian/source/format diff --git a/code/3rd_party/sdl-2.0.20/debian/watch b/3rd_party/sdl-2.0.20/debian/watch similarity index 100% rename from code/3rd_party/sdl-2.0.20/debian/watch rename to 3rd_party/sdl-2.0.20/debian/watch diff --git a/code/3rd_party/sdl-2.0.20/docs/README-android.md b/3rd_party/sdl-2.0.20/docs/README-android.md similarity index 100% rename from code/3rd_party/sdl-2.0.20/docs/README-android.md rename to 3rd_party/sdl-2.0.20/docs/README-android.md diff --git a/code/3rd_party/sdl-2.0.20/docs/README-cmake.md b/3rd_party/sdl-2.0.20/docs/README-cmake.md similarity index 100% rename from code/3rd_party/sdl-2.0.20/docs/README-cmake.md rename to 3rd_party/sdl-2.0.20/docs/README-cmake.md diff --git a/code/3rd_party/sdl-2.0.20/docs/README-directfb.md b/3rd_party/sdl-2.0.20/docs/README-directfb.md similarity index 100% rename from code/3rd_party/sdl-2.0.20/docs/README-directfb.md rename to 3rd_party/sdl-2.0.20/docs/README-directfb.md diff --git a/code/3rd_party/sdl-2.0.20/docs/README-dynapi.md b/3rd_party/sdl-2.0.20/docs/README-dynapi.md similarity index 100% rename from code/3rd_party/sdl-2.0.20/docs/README-dynapi.md rename to 3rd_party/sdl-2.0.20/docs/README-dynapi.md diff --git a/code/3rd_party/sdl-2.0.20/docs/README-emscripten.md b/3rd_party/sdl-2.0.20/docs/README-emscripten.md similarity index 100% rename from code/3rd_party/sdl-2.0.20/docs/README-emscripten.md rename to 3rd_party/sdl-2.0.20/docs/README-emscripten.md diff --git a/code/3rd_party/sdl-2.0.20/docs/README-gesture.md b/3rd_party/sdl-2.0.20/docs/README-gesture.md similarity index 100% rename from code/3rd_party/sdl-2.0.20/docs/README-gesture.md rename to 3rd_party/sdl-2.0.20/docs/README-gesture.md diff --git a/code/3rd_party/sdl-2.0.20/docs/README-git.md b/3rd_party/sdl-2.0.20/docs/README-git.md similarity index 100% rename from code/3rd_party/sdl-2.0.20/docs/README-git.md rename to 3rd_party/sdl-2.0.20/docs/README-git.md diff --git a/code/3rd_party/sdl-2.0.20/docs/README-hg.md b/3rd_party/sdl-2.0.20/docs/README-hg.md similarity index 100% rename from code/3rd_party/sdl-2.0.20/docs/README-hg.md rename to 3rd_party/sdl-2.0.20/docs/README-hg.md diff --git a/code/3rd_party/sdl-2.0.20/docs/README-ios.md b/3rd_party/sdl-2.0.20/docs/README-ios.md similarity index 100% rename from code/3rd_party/sdl-2.0.20/docs/README-ios.md rename to 3rd_party/sdl-2.0.20/docs/README-ios.md diff --git a/code/3rd_party/sdl-2.0.20/docs/README-kmsbsd.md b/3rd_party/sdl-2.0.20/docs/README-kmsbsd.md similarity index 100% rename from code/3rd_party/sdl-2.0.20/docs/README-kmsbsd.md rename to 3rd_party/sdl-2.0.20/docs/README-kmsbsd.md diff --git a/code/3rd_party/sdl-2.0.20/docs/README-linux.md b/3rd_party/sdl-2.0.20/docs/README-linux.md similarity index 100% rename from code/3rd_party/sdl-2.0.20/docs/README-linux.md rename to 3rd_party/sdl-2.0.20/docs/README-linux.md diff --git a/code/3rd_party/sdl-2.0.20/docs/README-macos.md b/3rd_party/sdl-2.0.20/docs/README-macos.md similarity index 100% rename from code/3rd_party/sdl-2.0.20/docs/README-macos.md rename to 3rd_party/sdl-2.0.20/docs/README-macos.md diff --git a/code/3rd_party/sdl-2.0.20/docs/README-nacl.md b/3rd_party/sdl-2.0.20/docs/README-nacl.md similarity index 100% rename from code/3rd_party/sdl-2.0.20/docs/README-nacl.md rename to 3rd_party/sdl-2.0.20/docs/README-nacl.md diff --git a/code/3rd_party/sdl-2.0.20/docs/README-os2.md b/3rd_party/sdl-2.0.20/docs/README-os2.md similarity index 100% rename from code/3rd_party/sdl-2.0.20/docs/README-os2.md rename to 3rd_party/sdl-2.0.20/docs/README-os2.md diff --git a/code/3rd_party/sdl-2.0.20/docs/README-pandora.md b/3rd_party/sdl-2.0.20/docs/README-pandora.md similarity index 100% rename from code/3rd_party/sdl-2.0.20/docs/README-pandora.md rename to 3rd_party/sdl-2.0.20/docs/README-pandora.md diff --git a/code/3rd_party/sdl-2.0.20/docs/README-platforms.md b/3rd_party/sdl-2.0.20/docs/README-platforms.md similarity index 100% rename from code/3rd_party/sdl-2.0.20/docs/README-platforms.md rename to 3rd_party/sdl-2.0.20/docs/README-platforms.md diff --git a/code/3rd_party/sdl-2.0.20/docs/README-porting.md b/3rd_party/sdl-2.0.20/docs/README-porting.md similarity index 100% rename from code/3rd_party/sdl-2.0.20/docs/README-porting.md rename to 3rd_party/sdl-2.0.20/docs/README-porting.md diff --git a/code/3rd_party/sdl-2.0.20/docs/README-psp.md b/3rd_party/sdl-2.0.20/docs/README-psp.md similarity index 100% rename from code/3rd_party/sdl-2.0.20/docs/README-psp.md rename to 3rd_party/sdl-2.0.20/docs/README-psp.md diff --git a/code/3rd_party/sdl-2.0.20/docs/README-raspberrypi.md b/3rd_party/sdl-2.0.20/docs/README-raspberrypi.md similarity index 100% rename from code/3rd_party/sdl-2.0.20/docs/README-raspberrypi.md rename to 3rd_party/sdl-2.0.20/docs/README-raspberrypi.md diff --git a/code/3rd_party/sdl-2.0.20/docs/README-riscos.md b/3rd_party/sdl-2.0.20/docs/README-riscos.md similarity index 100% rename from code/3rd_party/sdl-2.0.20/docs/README-riscos.md rename to 3rd_party/sdl-2.0.20/docs/README-riscos.md diff --git a/code/3rd_party/sdl-2.0.20/docs/README-touch.md b/3rd_party/sdl-2.0.20/docs/README-touch.md similarity index 100% rename from code/3rd_party/sdl-2.0.20/docs/README-touch.md rename to 3rd_party/sdl-2.0.20/docs/README-touch.md diff --git a/code/3rd_party/sdl-2.0.20/docs/README-visualc.md b/3rd_party/sdl-2.0.20/docs/README-visualc.md similarity index 100% rename from code/3rd_party/sdl-2.0.20/docs/README-visualc.md rename to 3rd_party/sdl-2.0.20/docs/README-visualc.md diff --git a/code/3rd_party/sdl-2.0.20/docs/README-vita.md b/3rd_party/sdl-2.0.20/docs/README-vita.md similarity index 100% rename from code/3rd_party/sdl-2.0.20/docs/README-vita.md rename to 3rd_party/sdl-2.0.20/docs/README-vita.md diff --git a/code/3rd_party/sdl-2.0.20/docs/README-wince.md b/3rd_party/sdl-2.0.20/docs/README-wince.md similarity index 100% rename from code/3rd_party/sdl-2.0.20/docs/README-wince.md rename to 3rd_party/sdl-2.0.20/docs/README-wince.md diff --git a/code/3rd_party/sdl-2.0.20/docs/README-windows.md b/3rd_party/sdl-2.0.20/docs/README-windows.md similarity index 100% rename from code/3rd_party/sdl-2.0.20/docs/README-windows.md rename to 3rd_party/sdl-2.0.20/docs/README-windows.md diff --git a/code/3rd_party/sdl-2.0.20/docs/README-winrt.md b/3rd_party/sdl-2.0.20/docs/README-winrt.md similarity index 100% rename from code/3rd_party/sdl-2.0.20/docs/README-winrt.md rename to 3rd_party/sdl-2.0.20/docs/README-winrt.md diff --git a/code/3rd_party/sdl-2.0.20/docs/README.md b/3rd_party/sdl-2.0.20/docs/README.md similarity index 100% rename from code/3rd_party/sdl-2.0.20/docs/README.md rename to 3rd_party/sdl-2.0.20/docs/README.md diff --git a/code/3rd_party/sdl-2.0.20/docs/doxyfile b/3rd_party/sdl-2.0.20/docs/doxyfile similarity index 100% rename from code/3rd_party/sdl-2.0.20/docs/doxyfile rename to 3rd_party/sdl-2.0.20/docs/doxyfile diff --git a/code/3rd_party/sdl-2.0.20/include/SDL.h b/3rd_party/sdl-2.0.20/include/SDL.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/include/SDL.h rename to 3rd_party/sdl-2.0.20/include/SDL.h diff --git a/code/3rd_party/sdl-2.0.20/include/SDL_assert.h b/3rd_party/sdl-2.0.20/include/SDL_assert.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/include/SDL_assert.h rename to 3rd_party/sdl-2.0.20/include/SDL_assert.h diff --git a/code/3rd_party/sdl-2.0.20/include/SDL_atomic.h b/3rd_party/sdl-2.0.20/include/SDL_atomic.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/include/SDL_atomic.h rename to 3rd_party/sdl-2.0.20/include/SDL_atomic.h diff --git a/code/3rd_party/sdl-2.0.20/include/SDL_audio.h b/3rd_party/sdl-2.0.20/include/SDL_audio.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/include/SDL_audio.h rename to 3rd_party/sdl-2.0.20/include/SDL_audio.h diff --git a/code/3rd_party/sdl-2.0.20/include/SDL_bits.h b/3rd_party/sdl-2.0.20/include/SDL_bits.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/include/SDL_bits.h rename to 3rd_party/sdl-2.0.20/include/SDL_bits.h diff --git a/code/3rd_party/sdl-2.0.20/include/SDL_blendmode.h b/3rd_party/sdl-2.0.20/include/SDL_blendmode.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/include/SDL_blendmode.h rename to 3rd_party/sdl-2.0.20/include/SDL_blendmode.h diff --git a/code/3rd_party/sdl-2.0.20/include/SDL_clipboard.h b/3rd_party/sdl-2.0.20/include/SDL_clipboard.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/include/SDL_clipboard.h rename to 3rd_party/sdl-2.0.20/include/SDL_clipboard.h diff --git a/code/3rd_party/sdl-2.0.20/include/SDL_config.h b/3rd_party/sdl-2.0.20/include/SDL_config.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/include/SDL_config.h rename to 3rd_party/sdl-2.0.20/include/SDL_config.h diff --git a/code/3rd_party/sdl-2.0.20/include/SDL_config.h.cmake b/3rd_party/sdl-2.0.20/include/SDL_config.h.cmake similarity index 100% rename from code/3rd_party/sdl-2.0.20/include/SDL_config.h.cmake rename to 3rd_party/sdl-2.0.20/include/SDL_config.h.cmake diff --git a/code/3rd_party/sdl-2.0.20/include/SDL_config.h.in b/3rd_party/sdl-2.0.20/include/SDL_config.h.in similarity index 100% rename from code/3rd_party/sdl-2.0.20/include/SDL_config.h.in rename to 3rd_party/sdl-2.0.20/include/SDL_config.h.in diff --git a/code/3rd_party/sdl-2.0.20/include/SDL_config_android.h b/3rd_party/sdl-2.0.20/include/SDL_config_android.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/include/SDL_config_android.h rename to 3rd_party/sdl-2.0.20/include/SDL_config_android.h diff --git a/code/3rd_party/sdl-2.0.20/include/SDL_config_emscripten.h b/3rd_party/sdl-2.0.20/include/SDL_config_emscripten.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/include/SDL_config_emscripten.h rename to 3rd_party/sdl-2.0.20/include/SDL_config_emscripten.h diff --git a/code/3rd_party/sdl-2.0.20/include/SDL_config_iphoneos.h b/3rd_party/sdl-2.0.20/include/SDL_config_iphoneos.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/include/SDL_config_iphoneos.h rename to 3rd_party/sdl-2.0.20/include/SDL_config_iphoneos.h diff --git a/code/3rd_party/sdl-2.0.20/include/SDL_config_macosx.h b/3rd_party/sdl-2.0.20/include/SDL_config_macosx.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/include/SDL_config_macosx.h rename to 3rd_party/sdl-2.0.20/include/SDL_config_macosx.h diff --git a/code/3rd_party/sdl-2.0.20/include/SDL_config_minimal.h b/3rd_party/sdl-2.0.20/include/SDL_config_minimal.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/include/SDL_config_minimal.h rename to 3rd_party/sdl-2.0.20/include/SDL_config_minimal.h diff --git a/code/3rd_party/sdl-2.0.20/include/SDL_config_os2.h b/3rd_party/sdl-2.0.20/include/SDL_config_os2.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/include/SDL_config_os2.h rename to 3rd_party/sdl-2.0.20/include/SDL_config_os2.h diff --git a/code/3rd_party/sdl-2.0.20/include/SDL_config_pandora.h b/3rd_party/sdl-2.0.20/include/SDL_config_pandora.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/include/SDL_config_pandora.h rename to 3rd_party/sdl-2.0.20/include/SDL_config_pandora.h diff --git a/code/3rd_party/sdl-2.0.20/include/SDL_config_psp.h b/3rd_party/sdl-2.0.20/include/SDL_config_psp.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/include/SDL_config_psp.h rename to 3rd_party/sdl-2.0.20/include/SDL_config_psp.h diff --git a/code/3rd_party/sdl-2.0.20/include/SDL_config_windows.h b/3rd_party/sdl-2.0.20/include/SDL_config_windows.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/include/SDL_config_windows.h rename to 3rd_party/sdl-2.0.20/include/SDL_config_windows.h diff --git a/code/3rd_party/sdl-2.0.20/include/SDL_config_winrt.h b/3rd_party/sdl-2.0.20/include/SDL_config_winrt.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/include/SDL_config_winrt.h rename to 3rd_party/sdl-2.0.20/include/SDL_config_winrt.h diff --git a/code/3rd_party/sdl-2.0.20/include/SDL_config_wiz.h b/3rd_party/sdl-2.0.20/include/SDL_config_wiz.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/include/SDL_config_wiz.h rename to 3rd_party/sdl-2.0.20/include/SDL_config_wiz.h diff --git a/code/3rd_party/sdl-2.0.20/include/SDL_copying.h b/3rd_party/sdl-2.0.20/include/SDL_copying.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/include/SDL_copying.h rename to 3rd_party/sdl-2.0.20/include/SDL_copying.h diff --git a/code/3rd_party/sdl-2.0.20/include/SDL_cpuinfo.h b/3rd_party/sdl-2.0.20/include/SDL_cpuinfo.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/include/SDL_cpuinfo.h rename to 3rd_party/sdl-2.0.20/include/SDL_cpuinfo.h diff --git a/code/3rd_party/sdl-2.0.20/include/SDL_egl.h b/3rd_party/sdl-2.0.20/include/SDL_egl.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/include/SDL_egl.h rename to 3rd_party/sdl-2.0.20/include/SDL_egl.h diff --git a/code/3rd_party/sdl-2.0.20/include/SDL_endian.h b/3rd_party/sdl-2.0.20/include/SDL_endian.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/include/SDL_endian.h rename to 3rd_party/sdl-2.0.20/include/SDL_endian.h diff --git a/code/3rd_party/sdl-2.0.20/include/SDL_error.h b/3rd_party/sdl-2.0.20/include/SDL_error.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/include/SDL_error.h rename to 3rd_party/sdl-2.0.20/include/SDL_error.h diff --git a/code/3rd_party/sdl-2.0.20/include/SDL_events.h b/3rd_party/sdl-2.0.20/include/SDL_events.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/include/SDL_events.h rename to 3rd_party/sdl-2.0.20/include/SDL_events.h diff --git a/code/3rd_party/sdl-2.0.20/include/SDL_filesystem.h b/3rd_party/sdl-2.0.20/include/SDL_filesystem.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/include/SDL_filesystem.h rename to 3rd_party/sdl-2.0.20/include/SDL_filesystem.h diff --git a/code/3rd_party/sdl-2.0.20/include/SDL_gamecontroller.h b/3rd_party/sdl-2.0.20/include/SDL_gamecontroller.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/include/SDL_gamecontroller.h rename to 3rd_party/sdl-2.0.20/include/SDL_gamecontroller.h diff --git a/code/3rd_party/sdl-2.0.20/include/SDL_gesture.h b/3rd_party/sdl-2.0.20/include/SDL_gesture.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/include/SDL_gesture.h rename to 3rd_party/sdl-2.0.20/include/SDL_gesture.h diff --git a/code/3rd_party/sdl-2.0.20/include/SDL_haptic.h b/3rd_party/sdl-2.0.20/include/SDL_haptic.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/include/SDL_haptic.h rename to 3rd_party/sdl-2.0.20/include/SDL_haptic.h diff --git a/code/3rd_party/sdl-2.0.20/include/SDL_hidapi.h b/3rd_party/sdl-2.0.20/include/SDL_hidapi.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/include/SDL_hidapi.h rename to 3rd_party/sdl-2.0.20/include/SDL_hidapi.h diff --git a/code/3rd_party/sdl-2.0.20/include/SDL_hints.h b/3rd_party/sdl-2.0.20/include/SDL_hints.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/include/SDL_hints.h rename to 3rd_party/sdl-2.0.20/include/SDL_hints.h diff --git a/code/3rd_party/sdl-2.0.20/include/SDL_joystick.h b/3rd_party/sdl-2.0.20/include/SDL_joystick.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/include/SDL_joystick.h rename to 3rd_party/sdl-2.0.20/include/SDL_joystick.h diff --git a/code/3rd_party/sdl-2.0.20/include/SDL_keyboard.h b/3rd_party/sdl-2.0.20/include/SDL_keyboard.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/include/SDL_keyboard.h rename to 3rd_party/sdl-2.0.20/include/SDL_keyboard.h diff --git a/code/3rd_party/sdl-2.0.20/include/SDL_keycode.h b/3rd_party/sdl-2.0.20/include/SDL_keycode.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/include/SDL_keycode.h rename to 3rd_party/sdl-2.0.20/include/SDL_keycode.h diff --git a/code/3rd_party/sdl-2.0.20/include/SDL_loadso.h b/3rd_party/sdl-2.0.20/include/SDL_loadso.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/include/SDL_loadso.h rename to 3rd_party/sdl-2.0.20/include/SDL_loadso.h diff --git a/code/3rd_party/sdl-2.0.20/include/SDL_locale.h b/3rd_party/sdl-2.0.20/include/SDL_locale.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/include/SDL_locale.h rename to 3rd_party/sdl-2.0.20/include/SDL_locale.h diff --git a/code/3rd_party/sdl-2.0.20/include/SDL_log.h b/3rd_party/sdl-2.0.20/include/SDL_log.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/include/SDL_log.h rename to 3rd_party/sdl-2.0.20/include/SDL_log.h diff --git a/code/3rd_party/sdl-2.0.20/include/SDL_main.h b/3rd_party/sdl-2.0.20/include/SDL_main.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/include/SDL_main.h rename to 3rd_party/sdl-2.0.20/include/SDL_main.h diff --git a/code/3rd_party/sdl-2.0.20/include/SDL_messagebox.h b/3rd_party/sdl-2.0.20/include/SDL_messagebox.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/include/SDL_messagebox.h rename to 3rd_party/sdl-2.0.20/include/SDL_messagebox.h diff --git a/code/3rd_party/sdl-2.0.20/include/SDL_metal.h b/3rd_party/sdl-2.0.20/include/SDL_metal.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/include/SDL_metal.h rename to 3rd_party/sdl-2.0.20/include/SDL_metal.h diff --git a/code/3rd_party/sdl-2.0.20/include/SDL_misc.h b/3rd_party/sdl-2.0.20/include/SDL_misc.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/include/SDL_misc.h rename to 3rd_party/sdl-2.0.20/include/SDL_misc.h diff --git a/code/3rd_party/sdl-2.0.20/include/SDL_mouse.h b/3rd_party/sdl-2.0.20/include/SDL_mouse.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/include/SDL_mouse.h rename to 3rd_party/sdl-2.0.20/include/SDL_mouse.h diff --git a/code/3rd_party/sdl-2.0.20/include/SDL_mutex.h b/3rd_party/sdl-2.0.20/include/SDL_mutex.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/include/SDL_mutex.h rename to 3rd_party/sdl-2.0.20/include/SDL_mutex.h diff --git a/code/3rd_party/sdl-2.0.20/include/SDL_name.h b/3rd_party/sdl-2.0.20/include/SDL_name.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/include/SDL_name.h rename to 3rd_party/sdl-2.0.20/include/SDL_name.h diff --git a/code/3rd_party/sdl-2.0.20/include/SDL_opengl.h b/3rd_party/sdl-2.0.20/include/SDL_opengl.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/include/SDL_opengl.h rename to 3rd_party/sdl-2.0.20/include/SDL_opengl.h diff --git a/code/3rd_party/sdl-2.0.20/include/SDL_opengl_glext.h b/3rd_party/sdl-2.0.20/include/SDL_opengl_glext.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/include/SDL_opengl_glext.h rename to 3rd_party/sdl-2.0.20/include/SDL_opengl_glext.h diff --git a/code/3rd_party/sdl-2.0.20/include/SDL_opengles.h b/3rd_party/sdl-2.0.20/include/SDL_opengles.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/include/SDL_opengles.h rename to 3rd_party/sdl-2.0.20/include/SDL_opengles.h diff --git a/code/3rd_party/sdl-2.0.20/include/SDL_opengles2.h b/3rd_party/sdl-2.0.20/include/SDL_opengles2.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/include/SDL_opengles2.h rename to 3rd_party/sdl-2.0.20/include/SDL_opengles2.h diff --git a/code/3rd_party/sdl-2.0.20/include/SDL_opengles2_gl2.h b/3rd_party/sdl-2.0.20/include/SDL_opengles2_gl2.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/include/SDL_opengles2_gl2.h rename to 3rd_party/sdl-2.0.20/include/SDL_opengles2_gl2.h diff --git a/code/3rd_party/sdl-2.0.20/include/SDL_opengles2_gl2ext.h b/3rd_party/sdl-2.0.20/include/SDL_opengles2_gl2ext.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/include/SDL_opengles2_gl2ext.h rename to 3rd_party/sdl-2.0.20/include/SDL_opengles2_gl2ext.h diff --git a/code/3rd_party/sdl-2.0.20/include/SDL_opengles2_gl2platform.h b/3rd_party/sdl-2.0.20/include/SDL_opengles2_gl2platform.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/include/SDL_opengles2_gl2platform.h rename to 3rd_party/sdl-2.0.20/include/SDL_opengles2_gl2platform.h diff --git a/code/3rd_party/sdl-2.0.20/include/SDL_opengles2_khrplatform.h b/3rd_party/sdl-2.0.20/include/SDL_opengles2_khrplatform.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/include/SDL_opengles2_khrplatform.h rename to 3rd_party/sdl-2.0.20/include/SDL_opengles2_khrplatform.h diff --git a/code/3rd_party/sdl-2.0.20/include/SDL_pixels.h b/3rd_party/sdl-2.0.20/include/SDL_pixels.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/include/SDL_pixels.h rename to 3rd_party/sdl-2.0.20/include/SDL_pixels.h diff --git a/code/3rd_party/sdl-2.0.20/include/SDL_platform.h b/3rd_party/sdl-2.0.20/include/SDL_platform.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/include/SDL_platform.h rename to 3rd_party/sdl-2.0.20/include/SDL_platform.h diff --git a/code/3rd_party/sdl-2.0.20/include/SDL_power.h b/3rd_party/sdl-2.0.20/include/SDL_power.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/include/SDL_power.h rename to 3rd_party/sdl-2.0.20/include/SDL_power.h diff --git a/code/3rd_party/sdl-2.0.20/include/SDL_quit.h b/3rd_party/sdl-2.0.20/include/SDL_quit.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/include/SDL_quit.h rename to 3rd_party/sdl-2.0.20/include/SDL_quit.h diff --git a/code/3rd_party/sdl-2.0.20/include/SDL_rect.h b/3rd_party/sdl-2.0.20/include/SDL_rect.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/include/SDL_rect.h rename to 3rd_party/sdl-2.0.20/include/SDL_rect.h diff --git a/code/3rd_party/sdl-2.0.20/include/SDL_render.h b/3rd_party/sdl-2.0.20/include/SDL_render.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/include/SDL_render.h rename to 3rd_party/sdl-2.0.20/include/SDL_render.h diff --git a/code/3rd_party/sdl-2.0.20/include/SDL_revision.h b/3rd_party/sdl-2.0.20/include/SDL_revision.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/include/SDL_revision.h rename to 3rd_party/sdl-2.0.20/include/SDL_revision.h diff --git a/code/3rd_party/sdl-2.0.20/include/SDL_revision.h.cmake b/3rd_party/sdl-2.0.20/include/SDL_revision.h.cmake similarity index 100% rename from code/3rd_party/sdl-2.0.20/include/SDL_revision.h.cmake rename to 3rd_party/sdl-2.0.20/include/SDL_revision.h.cmake diff --git a/code/3rd_party/sdl-2.0.20/include/SDL_rwops.h b/3rd_party/sdl-2.0.20/include/SDL_rwops.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/include/SDL_rwops.h rename to 3rd_party/sdl-2.0.20/include/SDL_rwops.h diff --git a/code/3rd_party/sdl-2.0.20/include/SDL_scancode.h b/3rd_party/sdl-2.0.20/include/SDL_scancode.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/include/SDL_scancode.h rename to 3rd_party/sdl-2.0.20/include/SDL_scancode.h diff --git a/code/3rd_party/sdl-2.0.20/include/SDL_sensor.h b/3rd_party/sdl-2.0.20/include/SDL_sensor.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/include/SDL_sensor.h rename to 3rd_party/sdl-2.0.20/include/SDL_sensor.h diff --git a/code/3rd_party/sdl-2.0.20/include/SDL_shape.h b/3rd_party/sdl-2.0.20/include/SDL_shape.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/include/SDL_shape.h rename to 3rd_party/sdl-2.0.20/include/SDL_shape.h diff --git a/code/3rd_party/sdl-2.0.20/include/SDL_stdinc.h b/3rd_party/sdl-2.0.20/include/SDL_stdinc.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/include/SDL_stdinc.h rename to 3rd_party/sdl-2.0.20/include/SDL_stdinc.h diff --git a/code/3rd_party/sdl-2.0.20/include/SDL_surface.h b/3rd_party/sdl-2.0.20/include/SDL_surface.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/include/SDL_surface.h rename to 3rd_party/sdl-2.0.20/include/SDL_surface.h diff --git a/code/3rd_party/sdl-2.0.20/include/SDL_system.h b/3rd_party/sdl-2.0.20/include/SDL_system.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/include/SDL_system.h rename to 3rd_party/sdl-2.0.20/include/SDL_system.h diff --git a/code/3rd_party/sdl-2.0.20/include/SDL_syswm.h b/3rd_party/sdl-2.0.20/include/SDL_syswm.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/include/SDL_syswm.h rename to 3rd_party/sdl-2.0.20/include/SDL_syswm.h diff --git a/code/3rd_party/sdl-2.0.20/include/SDL_test.h b/3rd_party/sdl-2.0.20/include/SDL_test.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/include/SDL_test.h rename to 3rd_party/sdl-2.0.20/include/SDL_test.h diff --git a/code/3rd_party/sdl-2.0.20/include/SDL_test_assert.h b/3rd_party/sdl-2.0.20/include/SDL_test_assert.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/include/SDL_test_assert.h rename to 3rd_party/sdl-2.0.20/include/SDL_test_assert.h diff --git a/code/3rd_party/sdl-2.0.20/include/SDL_test_common.h b/3rd_party/sdl-2.0.20/include/SDL_test_common.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/include/SDL_test_common.h rename to 3rd_party/sdl-2.0.20/include/SDL_test_common.h diff --git a/code/3rd_party/sdl-2.0.20/include/SDL_test_compare.h b/3rd_party/sdl-2.0.20/include/SDL_test_compare.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/include/SDL_test_compare.h rename to 3rd_party/sdl-2.0.20/include/SDL_test_compare.h diff --git a/code/3rd_party/sdl-2.0.20/include/SDL_test_crc32.h b/3rd_party/sdl-2.0.20/include/SDL_test_crc32.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/include/SDL_test_crc32.h rename to 3rd_party/sdl-2.0.20/include/SDL_test_crc32.h diff --git a/code/3rd_party/sdl-2.0.20/include/SDL_test_font.h b/3rd_party/sdl-2.0.20/include/SDL_test_font.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/include/SDL_test_font.h rename to 3rd_party/sdl-2.0.20/include/SDL_test_font.h diff --git a/code/3rd_party/sdl-2.0.20/include/SDL_test_fuzzer.h b/3rd_party/sdl-2.0.20/include/SDL_test_fuzzer.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/include/SDL_test_fuzzer.h rename to 3rd_party/sdl-2.0.20/include/SDL_test_fuzzer.h diff --git a/code/3rd_party/sdl-2.0.20/include/SDL_test_harness.h b/3rd_party/sdl-2.0.20/include/SDL_test_harness.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/include/SDL_test_harness.h rename to 3rd_party/sdl-2.0.20/include/SDL_test_harness.h diff --git a/code/3rd_party/sdl-2.0.20/include/SDL_test_images.h b/3rd_party/sdl-2.0.20/include/SDL_test_images.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/include/SDL_test_images.h rename to 3rd_party/sdl-2.0.20/include/SDL_test_images.h diff --git a/code/3rd_party/sdl-2.0.20/include/SDL_test_log.h b/3rd_party/sdl-2.0.20/include/SDL_test_log.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/include/SDL_test_log.h rename to 3rd_party/sdl-2.0.20/include/SDL_test_log.h diff --git a/code/3rd_party/sdl-2.0.20/include/SDL_test_md5.h b/3rd_party/sdl-2.0.20/include/SDL_test_md5.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/include/SDL_test_md5.h rename to 3rd_party/sdl-2.0.20/include/SDL_test_md5.h diff --git a/code/3rd_party/sdl-2.0.20/include/SDL_test_memory.h b/3rd_party/sdl-2.0.20/include/SDL_test_memory.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/include/SDL_test_memory.h rename to 3rd_party/sdl-2.0.20/include/SDL_test_memory.h diff --git a/code/3rd_party/sdl-2.0.20/include/SDL_test_random.h b/3rd_party/sdl-2.0.20/include/SDL_test_random.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/include/SDL_test_random.h rename to 3rd_party/sdl-2.0.20/include/SDL_test_random.h diff --git a/code/3rd_party/sdl-2.0.20/include/SDL_thread.h b/3rd_party/sdl-2.0.20/include/SDL_thread.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/include/SDL_thread.h rename to 3rd_party/sdl-2.0.20/include/SDL_thread.h diff --git a/code/3rd_party/sdl-2.0.20/include/SDL_timer.h b/3rd_party/sdl-2.0.20/include/SDL_timer.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/include/SDL_timer.h rename to 3rd_party/sdl-2.0.20/include/SDL_timer.h diff --git a/code/3rd_party/sdl-2.0.20/include/SDL_touch.h b/3rd_party/sdl-2.0.20/include/SDL_touch.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/include/SDL_touch.h rename to 3rd_party/sdl-2.0.20/include/SDL_touch.h diff --git a/code/3rd_party/sdl-2.0.20/include/SDL_types.h b/3rd_party/sdl-2.0.20/include/SDL_types.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/include/SDL_types.h rename to 3rd_party/sdl-2.0.20/include/SDL_types.h diff --git a/code/3rd_party/sdl-2.0.20/include/SDL_version.h b/3rd_party/sdl-2.0.20/include/SDL_version.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/include/SDL_version.h rename to 3rd_party/sdl-2.0.20/include/SDL_version.h diff --git a/code/3rd_party/sdl-2.0.20/include/SDL_video.h b/3rd_party/sdl-2.0.20/include/SDL_video.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/include/SDL_video.h rename to 3rd_party/sdl-2.0.20/include/SDL_video.h diff --git a/code/3rd_party/sdl-2.0.20/include/SDL_vulkan.h b/3rd_party/sdl-2.0.20/include/SDL_vulkan.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/include/SDL_vulkan.h rename to 3rd_party/sdl-2.0.20/include/SDL_vulkan.h diff --git a/code/3rd_party/sdl-2.0.20/include/begin_code.h b/3rd_party/sdl-2.0.20/include/begin_code.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/include/begin_code.h rename to 3rd_party/sdl-2.0.20/include/begin_code.h diff --git a/code/3rd_party/sdl-2.0.20/include/close_code.h b/3rd_party/sdl-2.0.20/include/close_code.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/include/close_code.h rename to 3rd_party/sdl-2.0.20/include/close_code.h diff --git a/code/3rd_party/sdl-2.0.20/sdl2-config-version.cmake.in b/3rd_party/sdl-2.0.20/sdl2-config-version.cmake.in similarity index 100% rename from code/3rd_party/sdl-2.0.20/sdl2-config-version.cmake.in rename to 3rd_party/sdl-2.0.20/sdl2-config-version.cmake.in diff --git a/code/3rd_party/sdl-2.0.20/sdl2-config.cmake.in b/3rd_party/sdl-2.0.20/sdl2-config.cmake.in similarity index 100% rename from code/3rd_party/sdl-2.0.20/sdl2-config.cmake.in rename to 3rd_party/sdl-2.0.20/sdl2-config.cmake.in diff --git a/code/3rd_party/sdl-2.0.20/sdl2-config.in b/3rd_party/sdl-2.0.20/sdl2-config.in similarity index 100% rename from code/3rd_party/sdl-2.0.20/sdl2-config.in rename to 3rd_party/sdl-2.0.20/sdl2-config.in diff --git a/code/3rd_party/sdl-2.0.20/sdl2.m4 b/3rd_party/sdl-2.0.20/sdl2.m4 similarity index 100% rename from code/3rd_party/sdl-2.0.20/sdl2.m4 rename to 3rd_party/sdl-2.0.20/sdl2.m4 diff --git a/code/3rd_party/sdl-2.0.20/sdl2.pc.in b/3rd_party/sdl-2.0.20/sdl2.pc.in similarity index 100% rename from code/3rd_party/sdl-2.0.20/sdl2.pc.in rename to 3rd_party/sdl-2.0.20/sdl2.pc.in diff --git a/code/3rd_party/sdl-2.0.20/src/SDL.c b/3rd_party/sdl-2.0.20/src/SDL.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/SDL.c rename to 3rd_party/sdl-2.0.20/src/SDL.c diff --git a/code/3rd_party/sdl-2.0.20/src/SDL_assert.c b/3rd_party/sdl-2.0.20/src/SDL_assert.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/SDL_assert.c rename to 3rd_party/sdl-2.0.20/src/SDL_assert.c diff --git a/code/3rd_party/sdl-2.0.20/src/SDL_assert_c.h b/3rd_party/sdl-2.0.20/src/SDL_assert_c.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/SDL_assert_c.h rename to 3rd_party/sdl-2.0.20/src/SDL_assert_c.h diff --git a/code/3rd_party/sdl-2.0.20/src/SDL_dataqueue.c b/3rd_party/sdl-2.0.20/src/SDL_dataqueue.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/SDL_dataqueue.c rename to 3rd_party/sdl-2.0.20/src/SDL_dataqueue.c diff --git a/code/3rd_party/sdl-2.0.20/src/SDL_dataqueue.h b/3rd_party/sdl-2.0.20/src/SDL_dataqueue.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/SDL_dataqueue.h rename to 3rd_party/sdl-2.0.20/src/SDL_dataqueue.h diff --git a/code/3rd_party/sdl-2.0.20/src/SDL_error.c b/3rd_party/sdl-2.0.20/src/SDL_error.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/SDL_error.c rename to 3rd_party/sdl-2.0.20/src/SDL_error.c diff --git a/code/3rd_party/sdl-2.0.20/src/SDL_error_c.h b/3rd_party/sdl-2.0.20/src/SDL_error_c.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/SDL_error_c.h rename to 3rd_party/sdl-2.0.20/src/SDL_error_c.h diff --git a/code/3rd_party/sdl-2.0.20/src/SDL_hints.c b/3rd_party/sdl-2.0.20/src/SDL_hints.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/SDL_hints.c rename to 3rd_party/sdl-2.0.20/src/SDL_hints.c diff --git a/code/3rd_party/sdl-2.0.20/src/SDL_hints_c.h b/3rd_party/sdl-2.0.20/src/SDL_hints_c.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/SDL_hints_c.h rename to 3rd_party/sdl-2.0.20/src/SDL_hints_c.h diff --git a/code/3rd_party/sdl-2.0.20/src/SDL_internal.h b/3rd_party/sdl-2.0.20/src/SDL_internal.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/SDL_internal.h rename to 3rd_party/sdl-2.0.20/src/SDL_internal.h diff --git a/code/3rd_party/sdl-2.0.20/src/SDL_log.c b/3rd_party/sdl-2.0.20/src/SDL_log.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/SDL_log.c rename to 3rd_party/sdl-2.0.20/src/SDL_log.c diff --git a/code/3rd_party/sdl-2.0.20/src/atomic/SDL_atomic.c b/3rd_party/sdl-2.0.20/src/atomic/SDL_atomic.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/atomic/SDL_atomic.c rename to 3rd_party/sdl-2.0.20/src/atomic/SDL_atomic.c diff --git a/code/3rd_party/sdl-2.0.20/src/atomic/SDL_spinlock.c b/3rd_party/sdl-2.0.20/src/atomic/SDL_spinlock.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/atomic/SDL_spinlock.c rename to 3rd_party/sdl-2.0.20/src/atomic/SDL_spinlock.c diff --git a/code/3rd_party/sdl-2.0.20/src/audio/SDL_audio.c b/3rd_party/sdl-2.0.20/src/audio/SDL_audio.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/audio/SDL_audio.c rename to 3rd_party/sdl-2.0.20/src/audio/SDL_audio.c diff --git a/code/3rd_party/sdl-2.0.20/src/audio/SDL_audio_c.h b/3rd_party/sdl-2.0.20/src/audio/SDL_audio_c.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/audio/SDL_audio_c.h rename to 3rd_party/sdl-2.0.20/src/audio/SDL_audio_c.h diff --git a/code/3rd_party/sdl-2.0.20/src/audio/SDL_audiocvt.c b/3rd_party/sdl-2.0.20/src/audio/SDL_audiocvt.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/audio/SDL_audiocvt.c rename to 3rd_party/sdl-2.0.20/src/audio/SDL_audiocvt.c diff --git a/code/3rd_party/sdl-2.0.20/src/audio/SDL_audiodev.c b/3rd_party/sdl-2.0.20/src/audio/SDL_audiodev.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/audio/SDL_audiodev.c rename to 3rd_party/sdl-2.0.20/src/audio/SDL_audiodev.c diff --git a/code/3rd_party/sdl-2.0.20/src/audio/SDL_audiodev_c.h b/3rd_party/sdl-2.0.20/src/audio/SDL_audiodev_c.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/audio/SDL_audiodev_c.h rename to 3rd_party/sdl-2.0.20/src/audio/SDL_audiodev_c.h diff --git a/code/3rd_party/sdl-2.0.20/src/audio/SDL_audiotypecvt.c b/3rd_party/sdl-2.0.20/src/audio/SDL_audiotypecvt.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/audio/SDL_audiotypecvt.c rename to 3rd_party/sdl-2.0.20/src/audio/SDL_audiotypecvt.c diff --git a/code/3rd_party/sdl-2.0.20/src/audio/SDL_mixer.c b/3rd_party/sdl-2.0.20/src/audio/SDL_mixer.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/audio/SDL_mixer.c rename to 3rd_party/sdl-2.0.20/src/audio/SDL_mixer.c diff --git a/code/3rd_party/sdl-2.0.20/src/audio/SDL_sysaudio.h b/3rd_party/sdl-2.0.20/src/audio/SDL_sysaudio.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/audio/SDL_sysaudio.h rename to 3rd_party/sdl-2.0.20/src/audio/SDL_sysaudio.h diff --git a/code/3rd_party/sdl-2.0.20/src/audio/SDL_wave.c b/3rd_party/sdl-2.0.20/src/audio/SDL_wave.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/audio/SDL_wave.c rename to 3rd_party/sdl-2.0.20/src/audio/SDL_wave.c diff --git a/code/3rd_party/sdl-2.0.20/src/audio/SDL_wave.h b/3rd_party/sdl-2.0.20/src/audio/SDL_wave.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/audio/SDL_wave.h rename to 3rd_party/sdl-2.0.20/src/audio/SDL_wave.h diff --git a/code/3rd_party/sdl-2.0.20/src/audio/aaudio/SDL_aaudio.c b/3rd_party/sdl-2.0.20/src/audio/aaudio/SDL_aaudio.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/audio/aaudio/SDL_aaudio.c rename to 3rd_party/sdl-2.0.20/src/audio/aaudio/SDL_aaudio.c diff --git a/code/3rd_party/sdl-2.0.20/src/audio/aaudio/SDL_aaudio.h b/3rd_party/sdl-2.0.20/src/audio/aaudio/SDL_aaudio.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/audio/aaudio/SDL_aaudio.h rename to 3rd_party/sdl-2.0.20/src/audio/aaudio/SDL_aaudio.h diff --git a/code/3rd_party/sdl-2.0.20/src/audio/aaudio/SDL_aaudiofuncs.h b/3rd_party/sdl-2.0.20/src/audio/aaudio/SDL_aaudiofuncs.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/audio/aaudio/SDL_aaudiofuncs.h rename to 3rd_party/sdl-2.0.20/src/audio/aaudio/SDL_aaudiofuncs.h diff --git a/code/3rd_party/sdl-2.0.20/src/audio/alsa/SDL_alsa_audio.c b/3rd_party/sdl-2.0.20/src/audio/alsa/SDL_alsa_audio.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/audio/alsa/SDL_alsa_audio.c rename to 3rd_party/sdl-2.0.20/src/audio/alsa/SDL_alsa_audio.c diff --git a/code/3rd_party/sdl-2.0.20/src/audio/alsa/SDL_alsa_audio.h b/3rd_party/sdl-2.0.20/src/audio/alsa/SDL_alsa_audio.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/audio/alsa/SDL_alsa_audio.h rename to 3rd_party/sdl-2.0.20/src/audio/alsa/SDL_alsa_audio.h diff --git a/code/3rd_party/sdl-2.0.20/src/audio/android/SDL_androidaudio.c b/3rd_party/sdl-2.0.20/src/audio/android/SDL_androidaudio.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/audio/android/SDL_androidaudio.c rename to 3rd_party/sdl-2.0.20/src/audio/android/SDL_androidaudio.c diff --git a/code/3rd_party/sdl-2.0.20/src/audio/android/SDL_androidaudio.h b/3rd_party/sdl-2.0.20/src/audio/android/SDL_androidaudio.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/audio/android/SDL_androidaudio.h rename to 3rd_party/sdl-2.0.20/src/audio/android/SDL_androidaudio.h diff --git a/code/3rd_party/sdl-2.0.20/src/audio/arts/SDL_artsaudio.c b/3rd_party/sdl-2.0.20/src/audio/arts/SDL_artsaudio.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/audio/arts/SDL_artsaudio.c rename to 3rd_party/sdl-2.0.20/src/audio/arts/SDL_artsaudio.c diff --git a/code/3rd_party/sdl-2.0.20/src/audio/arts/SDL_artsaudio.h b/3rd_party/sdl-2.0.20/src/audio/arts/SDL_artsaudio.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/audio/arts/SDL_artsaudio.h rename to 3rd_party/sdl-2.0.20/src/audio/arts/SDL_artsaudio.h diff --git a/code/3rd_party/sdl-2.0.20/src/audio/coreaudio/SDL_coreaudio.h b/3rd_party/sdl-2.0.20/src/audio/coreaudio/SDL_coreaudio.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/audio/coreaudio/SDL_coreaudio.h rename to 3rd_party/sdl-2.0.20/src/audio/coreaudio/SDL_coreaudio.h diff --git a/code/3rd_party/sdl-2.0.20/src/audio/coreaudio/SDL_coreaudio.m b/3rd_party/sdl-2.0.20/src/audio/coreaudio/SDL_coreaudio.m similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/audio/coreaudio/SDL_coreaudio.m rename to 3rd_party/sdl-2.0.20/src/audio/coreaudio/SDL_coreaudio.m diff --git a/code/3rd_party/sdl-2.0.20/src/audio/directsound/SDL_directsound.c b/3rd_party/sdl-2.0.20/src/audio/directsound/SDL_directsound.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/audio/directsound/SDL_directsound.c rename to 3rd_party/sdl-2.0.20/src/audio/directsound/SDL_directsound.c diff --git a/code/3rd_party/sdl-2.0.20/src/audio/directsound/SDL_directsound.h b/3rd_party/sdl-2.0.20/src/audio/directsound/SDL_directsound.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/audio/directsound/SDL_directsound.h rename to 3rd_party/sdl-2.0.20/src/audio/directsound/SDL_directsound.h diff --git a/code/3rd_party/sdl-2.0.20/src/audio/disk/SDL_diskaudio.c b/3rd_party/sdl-2.0.20/src/audio/disk/SDL_diskaudio.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/audio/disk/SDL_diskaudio.c rename to 3rd_party/sdl-2.0.20/src/audio/disk/SDL_diskaudio.c diff --git a/code/3rd_party/sdl-2.0.20/src/audio/disk/SDL_diskaudio.h b/3rd_party/sdl-2.0.20/src/audio/disk/SDL_diskaudio.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/audio/disk/SDL_diskaudio.h rename to 3rd_party/sdl-2.0.20/src/audio/disk/SDL_diskaudio.h diff --git a/code/3rd_party/sdl-2.0.20/src/audio/dsp/SDL_dspaudio.c b/3rd_party/sdl-2.0.20/src/audio/dsp/SDL_dspaudio.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/audio/dsp/SDL_dspaudio.c rename to 3rd_party/sdl-2.0.20/src/audio/dsp/SDL_dspaudio.c diff --git a/code/3rd_party/sdl-2.0.20/src/audio/dsp/SDL_dspaudio.h b/3rd_party/sdl-2.0.20/src/audio/dsp/SDL_dspaudio.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/audio/dsp/SDL_dspaudio.h rename to 3rd_party/sdl-2.0.20/src/audio/dsp/SDL_dspaudio.h diff --git a/code/3rd_party/sdl-2.0.20/src/audio/dummy/SDL_dummyaudio.c b/3rd_party/sdl-2.0.20/src/audio/dummy/SDL_dummyaudio.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/audio/dummy/SDL_dummyaudio.c rename to 3rd_party/sdl-2.0.20/src/audio/dummy/SDL_dummyaudio.c diff --git a/code/3rd_party/sdl-2.0.20/src/audio/dummy/SDL_dummyaudio.h b/3rd_party/sdl-2.0.20/src/audio/dummy/SDL_dummyaudio.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/audio/dummy/SDL_dummyaudio.h rename to 3rd_party/sdl-2.0.20/src/audio/dummy/SDL_dummyaudio.h diff --git a/code/3rd_party/sdl-2.0.20/src/audio/emscripten/SDL_emscriptenaudio.c b/3rd_party/sdl-2.0.20/src/audio/emscripten/SDL_emscriptenaudio.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/audio/emscripten/SDL_emscriptenaudio.c rename to 3rd_party/sdl-2.0.20/src/audio/emscripten/SDL_emscriptenaudio.c diff --git a/code/3rd_party/sdl-2.0.20/src/audio/emscripten/SDL_emscriptenaudio.h b/3rd_party/sdl-2.0.20/src/audio/emscripten/SDL_emscriptenaudio.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/audio/emscripten/SDL_emscriptenaudio.h rename to 3rd_party/sdl-2.0.20/src/audio/emscripten/SDL_emscriptenaudio.h diff --git a/code/3rd_party/sdl-2.0.20/src/audio/esd/SDL_esdaudio.c b/3rd_party/sdl-2.0.20/src/audio/esd/SDL_esdaudio.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/audio/esd/SDL_esdaudio.c rename to 3rd_party/sdl-2.0.20/src/audio/esd/SDL_esdaudio.c diff --git a/code/3rd_party/sdl-2.0.20/src/audio/esd/SDL_esdaudio.h b/3rd_party/sdl-2.0.20/src/audio/esd/SDL_esdaudio.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/audio/esd/SDL_esdaudio.h rename to 3rd_party/sdl-2.0.20/src/audio/esd/SDL_esdaudio.h diff --git a/code/3rd_party/sdl-2.0.20/src/audio/fusionsound/SDL_fsaudio.c b/3rd_party/sdl-2.0.20/src/audio/fusionsound/SDL_fsaudio.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/audio/fusionsound/SDL_fsaudio.c rename to 3rd_party/sdl-2.0.20/src/audio/fusionsound/SDL_fsaudio.c diff --git a/code/3rd_party/sdl-2.0.20/src/audio/fusionsound/SDL_fsaudio.h b/3rd_party/sdl-2.0.20/src/audio/fusionsound/SDL_fsaudio.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/audio/fusionsound/SDL_fsaudio.h rename to 3rd_party/sdl-2.0.20/src/audio/fusionsound/SDL_fsaudio.h diff --git a/code/3rd_party/sdl-2.0.20/src/audio/haiku/SDL_haikuaudio.cc b/3rd_party/sdl-2.0.20/src/audio/haiku/SDL_haikuaudio.cc similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/audio/haiku/SDL_haikuaudio.cc rename to 3rd_party/sdl-2.0.20/src/audio/haiku/SDL_haikuaudio.cc diff --git a/code/3rd_party/sdl-2.0.20/src/audio/haiku/SDL_haikuaudio.h b/3rd_party/sdl-2.0.20/src/audio/haiku/SDL_haikuaudio.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/audio/haiku/SDL_haikuaudio.h rename to 3rd_party/sdl-2.0.20/src/audio/haiku/SDL_haikuaudio.h diff --git a/code/3rd_party/sdl-2.0.20/src/audio/jack/SDL_jackaudio.c b/3rd_party/sdl-2.0.20/src/audio/jack/SDL_jackaudio.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/audio/jack/SDL_jackaudio.c rename to 3rd_party/sdl-2.0.20/src/audio/jack/SDL_jackaudio.c diff --git a/code/3rd_party/sdl-2.0.20/src/audio/jack/SDL_jackaudio.h b/3rd_party/sdl-2.0.20/src/audio/jack/SDL_jackaudio.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/audio/jack/SDL_jackaudio.h rename to 3rd_party/sdl-2.0.20/src/audio/jack/SDL_jackaudio.h diff --git a/code/3rd_party/sdl-2.0.20/src/audio/nacl/SDL_naclaudio.c b/3rd_party/sdl-2.0.20/src/audio/nacl/SDL_naclaudio.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/audio/nacl/SDL_naclaudio.c rename to 3rd_party/sdl-2.0.20/src/audio/nacl/SDL_naclaudio.c diff --git a/code/3rd_party/sdl-2.0.20/src/audio/nacl/SDL_naclaudio.h b/3rd_party/sdl-2.0.20/src/audio/nacl/SDL_naclaudio.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/audio/nacl/SDL_naclaudio.h rename to 3rd_party/sdl-2.0.20/src/audio/nacl/SDL_naclaudio.h diff --git a/code/3rd_party/sdl-2.0.20/src/audio/nas/SDL_nasaudio.c b/3rd_party/sdl-2.0.20/src/audio/nas/SDL_nasaudio.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/audio/nas/SDL_nasaudio.c rename to 3rd_party/sdl-2.0.20/src/audio/nas/SDL_nasaudio.c diff --git a/code/3rd_party/sdl-2.0.20/src/audio/nas/SDL_nasaudio.h b/3rd_party/sdl-2.0.20/src/audio/nas/SDL_nasaudio.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/audio/nas/SDL_nasaudio.h rename to 3rd_party/sdl-2.0.20/src/audio/nas/SDL_nasaudio.h diff --git a/code/3rd_party/sdl-2.0.20/src/audio/netbsd/SDL_netbsdaudio.c b/3rd_party/sdl-2.0.20/src/audio/netbsd/SDL_netbsdaudio.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/audio/netbsd/SDL_netbsdaudio.c rename to 3rd_party/sdl-2.0.20/src/audio/netbsd/SDL_netbsdaudio.c diff --git a/code/3rd_party/sdl-2.0.20/src/audio/netbsd/SDL_netbsdaudio.h b/3rd_party/sdl-2.0.20/src/audio/netbsd/SDL_netbsdaudio.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/audio/netbsd/SDL_netbsdaudio.h rename to 3rd_party/sdl-2.0.20/src/audio/netbsd/SDL_netbsdaudio.h diff --git a/code/3rd_party/sdl-2.0.20/src/audio/openslES/SDL_openslES.c b/3rd_party/sdl-2.0.20/src/audio/openslES/SDL_openslES.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/audio/openslES/SDL_openslES.c rename to 3rd_party/sdl-2.0.20/src/audio/openslES/SDL_openslES.c diff --git a/code/3rd_party/sdl-2.0.20/src/audio/openslES/SDL_openslES.h b/3rd_party/sdl-2.0.20/src/audio/openslES/SDL_openslES.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/audio/openslES/SDL_openslES.h rename to 3rd_party/sdl-2.0.20/src/audio/openslES/SDL_openslES.h diff --git a/code/3rd_party/sdl-2.0.20/src/audio/os2/SDL_os2audio.c b/3rd_party/sdl-2.0.20/src/audio/os2/SDL_os2audio.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/audio/os2/SDL_os2audio.c rename to 3rd_party/sdl-2.0.20/src/audio/os2/SDL_os2audio.c diff --git a/code/3rd_party/sdl-2.0.20/src/audio/os2/SDL_os2audio.h b/3rd_party/sdl-2.0.20/src/audio/os2/SDL_os2audio.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/audio/os2/SDL_os2audio.h rename to 3rd_party/sdl-2.0.20/src/audio/os2/SDL_os2audio.h diff --git a/code/3rd_party/sdl-2.0.20/src/audio/paudio/SDL_paudio.c b/3rd_party/sdl-2.0.20/src/audio/paudio/SDL_paudio.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/audio/paudio/SDL_paudio.c rename to 3rd_party/sdl-2.0.20/src/audio/paudio/SDL_paudio.c diff --git a/code/3rd_party/sdl-2.0.20/src/audio/paudio/SDL_paudio.h b/3rd_party/sdl-2.0.20/src/audio/paudio/SDL_paudio.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/audio/paudio/SDL_paudio.h rename to 3rd_party/sdl-2.0.20/src/audio/paudio/SDL_paudio.h diff --git a/code/3rd_party/sdl-2.0.20/src/audio/pipewire/SDL_pipewire.c b/3rd_party/sdl-2.0.20/src/audio/pipewire/SDL_pipewire.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/audio/pipewire/SDL_pipewire.c rename to 3rd_party/sdl-2.0.20/src/audio/pipewire/SDL_pipewire.c diff --git a/code/3rd_party/sdl-2.0.20/src/audio/pipewire/SDL_pipewire.h b/3rd_party/sdl-2.0.20/src/audio/pipewire/SDL_pipewire.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/audio/pipewire/SDL_pipewire.h rename to 3rd_party/sdl-2.0.20/src/audio/pipewire/SDL_pipewire.h diff --git a/code/3rd_party/sdl-2.0.20/src/audio/psp/SDL_pspaudio.c b/3rd_party/sdl-2.0.20/src/audio/psp/SDL_pspaudio.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/audio/psp/SDL_pspaudio.c rename to 3rd_party/sdl-2.0.20/src/audio/psp/SDL_pspaudio.c diff --git a/code/3rd_party/sdl-2.0.20/src/audio/psp/SDL_pspaudio.h b/3rd_party/sdl-2.0.20/src/audio/psp/SDL_pspaudio.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/audio/psp/SDL_pspaudio.h rename to 3rd_party/sdl-2.0.20/src/audio/psp/SDL_pspaudio.h diff --git a/code/3rd_party/sdl-2.0.20/src/audio/pulseaudio/SDL_pulseaudio.c b/3rd_party/sdl-2.0.20/src/audio/pulseaudio/SDL_pulseaudio.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/audio/pulseaudio/SDL_pulseaudio.c rename to 3rd_party/sdl-2.0.20/src/audio/pulseaudio/SDL_pulseaudio.c diff --git a/code/3rd_party/sdl-2.0.20/src/audio/pulseaudio/SDL_pulseaudio.h b/3rd_party/sdl-2.0.20/src/audio/pulseaudio/SDL_pulseaudio.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/audio/pulseaudio/SDL_pulseaudio.h rename to 3rd_party/sdl-2.0.20/src/audio/pulseaudio/SDL_pulseaudio.h diff --git a/code/3rd_party/sdl-2.0.20/src/audio/qsa/SDL_qsa_audio.c b/3rd_party/sdl-2.0.20/src/audio/qsa/SDL_qsa_audio.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/audio/qsa/SDL_qsa_audio.c rename to 3rd_party/sdl-2.0.20/src/audio/qsa/SDL_qsa_audio.c diff --git a/code/3rd_party/sdl-2.0.20/src/audio/qsa/SDL_qsa_audio.h b/3rd_party/sdl-2.0.20/src/audio/qsa/SDL_qsa_audio.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/audio/qsa/SDL_qsa_audio.h rename to 3rd_party/sdl-2.0.20/src/audio/qsa/SDL_qsa_audio.h diff --git a/code/3rd_party/sdl-2.0.20/src/audio/sndio/SDL_sndioaudio.c b/3rd_party/sdl-2.0.20/src/audio/sndio/SDL_sndioaudio.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/audio/sndio/SDL_sndioaudio.c rename to 3rd_party/sdl-2.0.20/src/audio/sndio/SDL_sndioaudio.c diff --git a/code/3rd_party/sdl-2.0.20/src/audio/sndio/SDL_sndioaudio.h b/3rd_party/sdl-2.0.20/src/audio/sndio/SDL_sndioaudio.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/audio/sndio/SDL_sndioaudio.h rename to 3rd_party/sdl-2.0.20/src/audio/sndio/SDL_sndioaudio.h diff --git a/code/3rd_party/sdl-2.0.20/src/audio/sun/SDL_sunaudio.c b/3rd_party/sdl-2.0.20/src/audio/sun/SDL_sunaudio.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/audio/sun/SDL_sunaudio.c rename to 3rd_party/sdl-2.0.20/src/audio/sun/SDL_sunaudio.c diff --git a/code/3rd_party/sdl-2.0.20/src/audio/sun/SDL_sunaudio.h b/3rd_party/sdl-2.0.20/src/audio/sun/SDL_sunaudio.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/audio/sun/SDL_sunaudio.h rename to 3rd_party/sdl-2.0.20/src/audio/sun/SDL_sunaudio.h diff --git a/code/3rd_party/sdl-2.0.20/src/audio/vita/SDL_vitaaudio.c b/3rd_party/sdl-2.0.20/src/audio/vita/SDL_vitaaudio.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/audio/vita/SDL_vitaaudio.c rename to 3rd_party/sdl-2.0.20/src/audio/vita/SDL_vitaaudio.c diff --git a/code/3rd_party/sdl-2.0.20/src/audio/vita/SDL_vitaaudio.h b/3rd_party/sdl-2.0.20/src/audio/vita/SDL_vitaaudio.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/audio/vita/SDL_vitaaudio.h rename to 3rd_party/sdl-2.0.20/src/audio/vita/SDL_vitaaudio.h diff --git a/code/3rd_party/sdl-2.0.20/src/audio/wasapi/SDL_wasapi.c b/3rd_party/sdl-2.0.20/src/audio/wasapi/SDL_wasapi.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/audio/wasapi/SDL_wasapi.c rename to 3rd_party/sdl-2.0.20/src/audio/wasapi/SDL_wasapi.c diff --git a/code/3rd_party/sdl-2.0.20/src/audio/wasapi/SDL_wasapi.h b/3rd_party/sdl-2.0.20/src/audio/wasapi/SDL_wasapi.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/audio/wasapi/SDL_wasapi.h rename to 3rd_party/sdl-2.0.20/src/audio/wasapi/SDL_wasapi.h diff --git a/code/3rd_party/sdl-2.0.20/src/audio/wasapi/SDL_wasapi_win32.c b/3rd_party/sdl-2.0.20/src/audio/wasapi/SDL_wasapi_win32.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/audio/wasapi/SDL_wasapi_win32.c rename to 3rd_party/sdl-2.0.20/src/audio/wasapi/SDL_wasapi_win32.c diff --git a/code/3rd_party/sdl-2.0.20/src/audio/wasapi/SDL_wasapi_winrt.cpp b/3rd_party/sdl-2.0.20/src/audio/wasapi/SDL_wasapi_winrt.cpp similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/audio/wasapi/SDL_wasapi_winrt.cpp rename to 3rd_party/sdl-2.0.20/src/audio/wasapi/SDL_wasapi_winrt.cpp diff --git a/code/3rd_party/sdl-2.0.20/src/audio/winmm/SDL_winmm.c b/3rd_party/sdl-2.0.20/src/audio/winmm/SDL_winmm.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/audio/winmm/SDL_winmm.c rename to 3rd_party/sdl-2.0.20/src/audio/winmm/SDL_winmm.c diff --git a/code/3rd_party/sdl-2.0.20/src/audio/winmm/SDL_winmm.h b/3rd_party/sdl-2.0.20/src/audio/winmm/SDL_winmm.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/audio/winmm/SDL_winmm.h rename to 3rd_party/sdl-2.0.20/src/audio/winmm/SDL_winmm.h diff --git a/code/3rd_party/sdl-2.0.20/src/core/android/SDL_android.c b/3rd_party/sdl-2.0.20/src/core/android/SDL_android.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/core/android/SDL_android.c rename to 3rd_party/sdl-2.0.20/src/core/android/SDL_android.c diff --git a/code/3rd_party/sdl-2.0.20/src/core/android/SDL_android.h b/3rd_party/sdl-2.0.20/src/core/android/SDL_android.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/core/android/SDL_android.h rename to 3rd_party/sdl-2.0.20/src/core/android/SDL_android.h diff --git a/code/3rd_party/sdl-2.0.20/src/core/android/keyinfotable.h b/3rd_party/sdl-2.0.20/src/core/android/keyinfotable.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/core/android/keyinfotable.h rename to 3rd_party/sdl-2.0.20/src/core/android/keyinfotable.h diff --git a/code/3rd_party/sdl-2.0.20/src/core/freebsd/SDL_evdev_kbd_default_keyaccmap.h b/3rd_party/sdl-2.0.20/src/core/freebsd/SDL_evdev_kbd_default_keyaccmap.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/core/freebsd/SDL_evdev_kbd_default_keyaccmap.h rename to 3rd_party/sdl-2.0.20/src/core/freebsd/SDL_evdev_kbd_default_keyaccmap.h diff --git a/code/3rd_party/sdl-2.0.20/src/core/freebsd/SDL_evdev_kbd_freebsd.c b/3rd_party/sdl-2.0.20/src/core/freebsd/SDL_evdev_kbd_freebsd.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/core/freebsd/SDL_evdev_kbd_freebsd.c rename to 3rd_party/sdl-2.0.20/src/core/freebsd/SDL_evdev_kbd_freebsd.c diff --git a/code/3rd_party/sdl-2.0.20/src/core/linux/SDL_dbus.c b/3rd_party/sdl-2.0.20/src/core/linux/SDL_dbus.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/core/linux/SDL_dbus.c rename to 3rd_party/sdl-2.0.20/src/core/linux/SDL_dbus.c diff --git a/code/3rd_party/sdl-2.0.20/src/core/linux/SDL_dbus.h b/3rd_party/sdl-2.0.20/src/core/linux/SDL_dbus.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/core/linux/SDL_dbus.h rename to 3rd_party/sdl-2.0.20/src/core/linux/SDL_dbus.h diff --git a/code/3rd_party/sdl-2.0.20/src/core/linux/SDL_evdev.c b/3rd_party/sdl-2.0.20/src/core/linux/SDL_evdev.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/core/linux/SDL_evdev.c rename to 3rd_party/sdl-2.0.20/src/core/linux/SDL_evdev.c diff --git a/code/3rd_party/sdl-2.0.20/src/core/linux/SDL_evdev.h b/3rd_party/sdl-2.0.20/src/core/linux/SDL_evdev.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/core/linux/SDL_evdev.h rename to 3rd_party/sdl-2.0.20/src/core/linux/SDL_evdev.h diff --git a/code/3rd_party/sdl-2.0.20/src/core/linux/SDL_evdev_capabilities.c b/3rd_party/sdl-2.0.20/src/core/linux/SDL_evdev_capabilities.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/core/linux/SDL_evdev_capabilities.c rename to 3rd_party/sdl-2.0.20/src/core/linux/SDL_evdev_capabilities.c diff --git a/code/3rd_party/sdl-2.0.20/src/core/linux/SDL_evdev_capabilities.h b/3rd_party/sdl-2.0.20/src/core/linux/SDL_evdev_capabilities.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/core/linux/SDL_evdev_capabilities.h rename to 3rd_party/sdl-2.0.20/src/core/linux/SDL_evdev_capabilities.h diff --git a/code/3rd_party/sdl-2.0.20/src/core/linux/SDL_evdev_kbd.c b/3rd_party/sdl-2.0.20/src/core/linux/SDL_evdev_kbd.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/core/linux/SDL_evdev_kbd.c rename to 3rd_party/sdl-2.0.20/src/core/linux/SDL_evdev_kbd.c diff --git a/code/3rd_party/sdl-2.0.20/src/core/linux/SDL_evdev_kbd.h b/3rd_party/sdl-2.0.20/src/core/linux/SDL_evdev_kbd.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/core/linux/SDL_evdev_kbd.h rename to 3rd_party/sdl-2.0.20/src/core/linux/SDL_evdev_kbd.h diff --git a/code/3rd_party/sdl-2.0.20/src/core/linux/SDL_evdev_kbd_default_accents.h b/3rd_party/sdl-2.0.20/src/core/linux/SDL_evdev_kbd_default_accents.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/core/linux/SDL_evdev_kbd_default_accents.h rename to 3rd_party/sdl-2.0.20/src/core/linux/SDL_evdev_kbd_default_accents.h diff --git a/code/3rd_party/sdl-2.0.20/src/core/linux/SDL_evdev_kbd_default_keymap.h b/3rd_party/sdl-2.0.20/src/core/linux/SDL_evdev_kbd_default_keymap.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/core/linux/SDL_evdev_kbd_default_keymap.h rename to 3rd_party/sdl-2.0.20/src/core/linux/SDL_evdev_kbd_default_keymap.h diff --git a/code/3rd_party/sdl-2.0.20/src/core/linux/SDL_fcitx.c b/3rd_party/sdl-2.0.20/src/core/linux/SDL_fcitx.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/core/linux/SDL_fcitx.c rename to 3rd_party/sdl-2.0.20/src/core/linux/SDL_fcitx.c diff --git a/code/3rd_party/sdl-2.0.20/src/core/linux/SDL_fcitx.h b/3rd_party/sdl-2.0.20/src/core/linux/SDL_fcitx.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/core/linux/SDL_fcitx.h rename to 3rd_party/sdl-2.0.20/src/core/linux/SDL_fcitx.h diff --git a/code/3rd_party/sdl-2.0.20/src/core/linux/SDL_ibus.c b/3rd_party/sdl-2.0.20/src/core/linux/SDL_ibus.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/core/linux/SDL_ibus.c rename to 3rd_party/sdl-2.0.20/src/core/linux/SDL_ibus.c diff --git a/code/3rd_party/sdl-2.0.20/src/core/linux/SDL_ibus.h b/3rd_party/sdl-2.0.20/src/core/linux/SDL_ibus.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/core/linux/SDL_ibus.h rename to 3rd_party/sdl-2.0.20/src/core/linux/SDL_ibus.h diff --git a/code/3rd_party/sdl-2.0.20/src/core/linux/SDL_ime.c b/3rd_party/sdl-2.0.20/src/core/linux/SDL_ime.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/core/linux/SDL_ime.c rename to 3rd_party/sdl-2.0.20/src/core/linux/SDL_ime.c diff --git a/code/3rd_party/sdl-2.0.20/src/core/linux/SDL_ime.h b/3rd_party/sdl-2.0.20/src/core/linux/SDL_ime.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/core/linux/SDL_ime.h rename to 3rd_party/sdl-2.0.20/src/core/linux/SDL_ime.h diff --git a/code/3rd_party/sdl-2.0.20/src/core/linux/SDL_threadprio.c b/3rd_party/sdl-2.0.20/src/core/linux/SDL_threadprio.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/core/linux/SDL_threadprio.c rename to 3rd_party/sdl-2.0.20/src/core/linux/SDL_threadprio.c diff --git a/code/3rd_party/sdl-2.0.20/src/core/linux/SDL_udev.c b/3rd_party/sdl-2.0.20/src/core/linux/SDL_udev.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/core/linux/SDL_udev.c rename to 3rd_party/sdl-2.0.20/src/core/linux/SDL_udev.c diff --git a/code/3rd_party/sdl-2.0.20/src/core/linux/SDL_udev.h b/3rd_party/sdl-2.0.20/src/core/linux/SDL_udev.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/core/linux/SDL_udev.h rename to 3rd_party/sdl-2.0.20/src/core/linux/SDL_udev.h diff --git a/code/3rd_party/sdl-2.0.20/src/core/openbsd/SDL_wscons.h b/3rd_party/sdl-2.0.20/src/core/openbsd/SDL_wscons.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/core/openbsd/SDL_wscons.h rename to 3rd_party/sdl-2.0.20/src/core/openbsd/SDL_wscons.h diff --git a/code/3rd_party/sdl-2.0.20/src/core/openbsd/SDL_wscons_kbd.c b/3rd_party/sdl-2.0.20/src/core/openbsd/SDL_wscons_kbd.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/core/openbsd/SDL_wscons_kbd.c rename to 3rd_party/sdl-2.0.20/src/core/openbsd/SDL_wscons_kbd.c diff --git a/code/3rd_party/sdl-2.0.20/src/core/openbsd/SDL_wscons_mouse.c b/3rd_party/sdl-2.0.20/src/core/openbsd/SDL_wscons_mouse.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/core/openbsd/SDL_wscons_mouse.c rename to 3rd_party/sdl-2.0.20/src/core/openbsd/SDL_wscons_mouse.c diff --git a/code/3rd_party/sdl-2.0.20/src/core/os2/SDL_os2.c b/3rd_party/sdl-2.0.20/src/core/os2/SDL_os2.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/core/os2/SDL_os2.c rename to 3rd_party/sdl-2.0.20/src/core/os2/SDL_os2.c diff --git a/code/3rd_party/sdl-2.0.20/src/core/os2/SDL_os2.h b/3rd_party/sdl-2.0.20/src/core/os2/SDL_os2.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/core/os2/SDL_os2.h rename to 3rd_party/sdl-2.0.20/src/core/os2/SDL_os2.h diff --git a/code/3rd_party/sdl-2.0.20/src/core/os2/geniconv/geniconv.c b/3rd_party/sdl-2.0.20/src/core/os2/geniconv/geniconv.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/core/os2/geniconv/geniconv.c rename to 3rd_party/sdl-2.0.20/src/core/os2/geniconv/geniconv.c diff --git a/code/3rd_party/sdl-2.0.20/src/core/os2/geniconv/geniconv.h b/3rd_party/sdl-2.0.20/src/core/os2/geniconv/geniconv.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/core/os2/geniconv/geniconv.h rename to 3rd_party/sdl-2.0.20/src/core/os2/geniconv/geniconv.h diff --git a/code/3rd_party/sdl-2.0.20/src/core/os2/geniconv/iconv.h b/3rd_party/sdl-2.0.20/src/core/os2/geniconv/iconv.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/core/os2/geniconv/iconv.h rename to 3rd_party/sdl-2.0.20/src/core/os2/geniconv/iconv.h diff --git a/code/3rd_party/sdl-2.0.20/src/core/os2/geniconv/makefile b/3rd_party/sdl-2.0.20/src/core/os2/geniconv/makefile similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/core/os2/geniconv/makefile rename to 3rd_party/sdl-2.0.20/src/core/os2/geniconv/makefile diff --git a/code/3rd_party/sdl-2.0.20/src/core/os2/geniconv/os2cp.c b/3rd_party/sdl-2.0.20/src/core/os2/geniconv/os2cp.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/core/os2/geniconv/os2cp.c rename to 3rd_party/sdl-2.0.20/src/core/os2/geniconv/os2cp.c diff --git a/code/3rd_party/sdl-2.0.20/src/core/os2/geniconv/os2cp.h b/3rd_party/sdl-2.0.20/src/core/os2/geniconv/os2cp.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/core/os2/geniconv/os2cp.h rename to 3rd_party/sdl-2.0.20/src/core/os2/geniconv/os2cp.h diff --git a/code/3rd_party/sdl-2.0.20/src/core/os2/geniconv/os2iconv.c b/3rd_party/sdl-2.0.20/src/core/os2/geniconv/os2iconv.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/core/os2/geniconv/os2iconv.c rename to 3rd_party/sdl-2.0.20/src/core/os2/geniconv/os2iconv.c diff --git a/code/3rd_party/sdl-2.0.20/src/core/os2/geniconv/sys2utf8.c b/3rd_party/sdl-2.0.20/src/core/os2/geniconv/sys2utf8.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/core/os2/geniconv/sys2utf8.c rename to 3rd_party/sdl-2.0.20/src/core/os2/geniconv/sys2utf8.c diff --git a/code/3rd_party/sdl-2.0.20/src/core/os2/geniconv/test.c b/3rd_party/sdl-2.0.20/src/core/os2/geniconv/test.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/core/os2/geniconv/test.c rename to 3rd_party/sdl-2.0.20/src/core/os2/geniconv/test.c diff --git a/code/3rd_party/sdl-2.0.20/src/core/os2/iconv2.lbc b/3rd_party/sdl-2.0.20/src/core/os2/iconv2.lbc similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/core/os2/iconv2.lbc rename to 3rd_party/sdl-2.0.20/src/core/os2/iconv2.lbc diff --git a/code/3rd_party/sdl-2.0.20/src/core/unix/SDL_poll.c b/3rd_party/sdl-2.0.20/src/core/unix/SDL_poll.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/core/unix/SDL_poll.c rename to 3rd_party/sdl-2.0.20/src/core/unix/SDL_poll.c diff --git a/code/3rd_party/sdl-2.0.20/src/core/unix/SDL_poll.h b/3rd_party/sdl-2.0.20/src/core/unix/SDL_poll.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/core/unix/SDL_poll.h rename to 3rd_party/sdl-2.0.20/src/core/unix/SDL_poll.h diff --git a/code/3rd_party/sdl-2.0.20/src/core/windows/SDL_directx.h b/3rd_party/sdl-2.0.20/src/core/windows/SDL_directx.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/core/windows/SDL_directx.h rename to 3rd_party/sdl-2.0.20/src/core/windows/SDL_directx.h diff --git a/code/3rd_party/sdl-2.0.20/src/core/windows/SDL_hid.c b/3rd_party/sdl-2.0.20/src/core/windows/SDL_hid.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/core/windows/SDL_hid.c rename to 3rd_party/sdl-2.0.20/src/core/windows/SDL_hid.c diff --git a/code/3rd_party/sdl-2.0.20/src/core/windows/SDL_hid.h b/3rd_party/sdl-2.0.20/src/core/windows/SDL_hid.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/core/windows/SDL_hid.h rename to 3rd_party/sdl-2.0.20/src/core/windows/SDL_hid.h diff --git a/code/3rd_party/sdl-2.0.20/src/core/windows/SDL_windows.c b/3rd_party/sdl-2.0.20/src/core/windows/SDL_windows.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/core/windows/SDL_windows.c rename to 3rd_party/sdl-2.0.20/src/core/windows/SDL_windows.c diff --git a/code/3rd_party/sdl-2.0.20/src/core/windows/SDL_windows.h b/3rd_party/sdl-2.0.20/src/core/windows/SDL_windows.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/core/windows/SDL_windows.h rename to 3rd_party/sdl-2.0.20/src/core/windows/SDL_windows.h diff --git a/code/3rd_party/sdl-2.0.20/src/core/windows/SDL_xinput.c b/3rd_party/sdl-2.0.20/src/core/windows/SDL_xinput.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/core/windows/SDL_xinput.c rename to 3rd_party/sdl-2.0.20/src/core/windows/SDL_xinput.c diff --git a/code/3rd_party/sdl-2.0.20/src/core/windows/SDL_xinput.h b/3rd_party/sdl-2.0.20/src/core/windows/SDL_xinput.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/core/windows/SDL_xinput.h rename to 3rd_party/sdl-2.0.20/src/core/windows/SDL_xinput.h diff --git a/code/3rd_party/sdl-2.0.20/src/core/winrt/SDL_winrtapp_common.cpp b/3rd_party/sdl-2.0.20/src/core/winrt/SDL_winrtapp_common.cpp similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/core/winrt/SDL_winrtapp_common.cpp rename to 3rd_party/sdl-2.0.20/src/core/winrt/SDL_winrtapp_common.cpp diff --git a/code/3rd_party/sdl-2.0.20/src/core/winrt/SDL_winrtapp_common.h b/3rd_party/sdl-2.0.20/src/core/winrt/SDL_winrtapp_common.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/core/winrt/SDL_winrtapp_common.h rename to 3rd_party/sdl-2.0.20/src/core/winrt/SDL_winrtapp_common.h diff --git a/code/3rd_party/sdl-2.0.20/src/core/winrt/SDL_winrtapp_direct3d.cpp b/3rd_party/sdl-2.0.20/src/core/winrt/SDL_winrtapp_direct3d.cpp similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/core/winrt/SDL_winrtapp_direct3d.cpp rename to 3rd_party/sdl-2.0.20/src/core/winrt/SDL_winrtapp_direct3d.cpp diff --git a/code/3rd_party/sdl-2.0.20/src/core/winrt/SDL_winrtapp_direct3d.h b/3rd_party/sdl-2.0.20/src/core/winrt/SDL_winrtapp_direct3d.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/core/winrt/SDL_winrtapp_direct3d.h rename to 3rd_party/sdl-2.0.20/src/core/winrt/SDL_winrtapp_direct3d.h diff --git a/code/3rd_party/sdl-2.0.20/src/core/winrt/SDL_winrtapp_xaml.cpp b/3rd_party/sdl-2.0.20/src/core/winrt/SDL_winrtapp_xaml.cpp similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/core/winrt/SDL_winrtapp_xaml.cpp rename to 3rd_party/sdl-2.0.20/src/core/winrt/SDL_winrtapp_xaml.cpp diff --git a/code/3rd_party/sdl-2.0.20/src/core/winrt/SDL_winrtapp_xaml.h b/3rd_party/sdl-2.0.20/src/core/winrt/SDL_winrtapp_xaml.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/core/winrt/SDL_winrtapp_xaml.h rename to 3rd_party/sdl-2.0.20/src/core/winrt/SDL_winrtapp_xaml.h diff --git a/code/3rd_party/sdl-2.0.20/src/cpuinfo/SDL_cpuinfo.c b/3rd_party/sdl-2.0.20/src/cpuinfo/SDL_cpuinfo.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/cpuinfo/SDL_cpuinfo.c rename to 3rd_party/sdl-2.0.20/src/cpuinfo/SDL_cpuinfo.c diff --git a/code/3rd_party/sdl-2.0.20/src/dynapi/SDL_dynapi.c b/3rd_party/sdl-2.0.20/src/dynapi/SDL_dynapi.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/dynapi/SDL_dynapi.c rename to 3rd_party/sdl-2.0.20/src/dynapi/SDL_dynapi.c diff --git a/code/3rd_party/sdl-2.0.20/src/dynapi/SDL_dynapi.h b/3rd_party/sdl-2.0.20/src/dynapi/SDL_dynapi.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/dynapi/SDL_dynapi.h rename to 3rd_party/sdl-2.0.20/src/dynapi/SDL_dynapi.h diff --git a/code/3rd_party/sdl-2.0.20/src/dynapi/SDL_dynapi_overrides.h b/3rd_party/sdl-2.0.20/src/dynapi/SDL_dynapi_overrides.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/dynapi/SDL_dynapi_overrides.h rename to 3rd_party/sdl-2.0.20/src/dynapi/SDL_dynapi_overrides.h diff --git a/code/3rd_party/sdl-2.0.20/src/dynapi/SDL_dynapi_procs.h b/3rd_party/sdl-2.0.20/src/dynapi/SDL_dynapi_procs.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/dynapi/SDL_dynapi_procs.h rename to 3rd_party/sdl-2.0.20/src/dynapi/SDL_dynapi_procs.h diff --git a/code/3rd_party/sdl-2.0.20/src/dynapi/gendynapi.pl b/3rd_party/sdl-2.0.20/src/dynapi/gendynapi.pl similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/dynapi/gendynapi.pl rename to 3rd_party/sdl-2.0.20/src/dynapi/gendynapi.pl diff --git a/code/3rd_party/sdl-2.0.20/src/events/SDL_clipboardevents.c b/3rd_party/sdl-2.0.20/src/events/SDL_clipboardevents.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/events/SDL_clipboardevents.c rename to 3rd_party/sdl-2.0.20/src/events/SDL_clipboardevents.c diff --git a/code/3rd_party/sdl-2.0.20/src/events/SDL_clipboardevents_c.h b/3rd_party/sdl-2.0.20/src/events/SDL_clipboardevents_c.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/events/SDL_clipboardevents_c.h rename to 3rd_party/sdl-2.0.20/src/events/SDL_clipboardevents_c.h diff --git a/code/3rd_party/sdl-2.0.20/src/events/SDL_displayevents.c b/3rd_party/sdl-2.0.20/src/events/SDL_displayevents.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/events/SDL_displayevents.c rename to 3rd_party/sdl-2.0.20/src/events/SDL_displayevents.c diff --git a/code/3rd_party/sdl-2.0.20/src/events/SDL_displayevents_c.h b/3rd_party/sdl-2.0.20/src/events/SDL_displayevents_c.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/events/SDL_displayevents_c.h rename to 3rd_party/sdl-2.0.20/src/events/SDL_displayevents_c.h diff --git a/code/3rd_party/sdl-2.0.20/src/events/SDL_dropevents.c b/3rd_party/sdl-2.0.20/src/events/SDL_dropevents.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/events/SDL_dropevents.c rename to 3rd_party/sdl-2.0.20/src/events/SDL_dropevents.c diff --git a/code/3rd_party/sdl-2.0.20/src/events/SDL_dropevents_c.h b/3rd_party/sdl-2.0.20/src/events/SDL_dropevents_c.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/events/SDL_dropevents_c.h rename to 3rd_party/sdl-2.0.20/src/events/SDL_dropevents_c.h diff --git a/code/3rd_party/sdl-2.0.20/src/events/SDL_events.c b/3rd_party/sdl-2.0.20/src/events/SDL_events.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/events/SDL_events.c rename to 3rd_party/sdl-2.0.20/src/events/SDL_events.c diff --git a/code/3rd_party/sdl-2.0.20/src/events/SDL_events_c.h b/3rd_party/sdl-2.0.20/src/events/SDL_events_c.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/events/SDL_events_c.h rename to 3rd_party/sdl-2.0.20/src/events/SDL_events_c.h diff --git a/code/3rd_party/sdl-2.0.20/src/events/SDL_gesture.c b/3rd_party/sdl-2.0.20/src/events/SDL_gesture.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/events/SDL_gesture.c rename to 3rd_party/sdl-2.0.20/src/events/SDL_gesture.c diff --git a/code/3rd_party/sdl-2.0.20/src/events/SDL_gesture_c.h b/3rd_party/sdl-2.0.20/src/events/SDL_gesture_c.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/events/SDL_gesture_c.h rename to 3rd_party/sdl-2.0.20/src/events/SDL_gesture_c.h diff --git a/code/3rd_party/sdl-2.0.20/src/events/SDL_keyboard.c b/3rd_party/sdl-2.0.20/src/events/SDL_keyboard.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/events/SDL_keyboard.c rename to 3rd_party/sdl-2.0.20/src/events/SDL_keyboard.c diff --git a/code/3rd_party/sdl-2.0.20/src/events/SDL_keyboard_c.h b/3rd_party/sdl-2.0.20/src/events/SDL_keyboard_c.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/events/SDL_keyboard_c.h rename to 3rd_party/sdl-2.0.20/src/events/SDL_keyboard_c.h diff --git a/code/3rd_party/sdl-2.0.20/src/events/SDL_mouse.c b/3rd_party/sdl-2.0.20/src/events/SDL_mouse.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/events/SDL_mouse.c rename to 3rd_party/sdl-2.0.20/src/events/SDL_mouse.c diff --git a/code/3rd_party/sdl-2.0.20/src/events/SDL_mouse_c.h b/3rd_party/sdl-2.0.20/src/events/SDL_mouse_c.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/events/SDL_mouse_c.h rename to 3rd_party/sdl-2.0.20/src/events/SDL_mouse_c.h diff --git a/code/3rd_party/sdl-2.0.20/src/events/SDL_quit.c b/3rd_party/sdl-2.0.20/src/events/SDL_quit.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/events/SDL_quit.c rename to 3rd_party/sdl-2.0.20/src/events/SDL_quit.c diff --git a/code/3rd_party/sdl-2.0.20/src/events/SDL_sysevents.h b/3rd_party/sdl-2.0.20/src/events/SDL_sysevents.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/events/SDL_sysevents.h rename to 3rd_party/sdl-2.0.20/src/events/SDL_sysevents.h diff --git a/code/3rd_party/sdl-2.0.20/src/events/SDL_touch.c b/3rd_party/sdl-2.0.20/src/events/SDL_touch.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/events/SDL_touch.c rename to 3rd_party/sdl-2.0.20/src/events/SDL_touch.c diff --git a/code/3rd_party/sdl-2.0.20/src/events/SDL_touch_c.h b/3rd_party/sdl-2.0.20/src/events/SDL_touch_c.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/events/SDL_touch_c.h rename to 3rd_party/sdl-2.0.20/src/events/SDL_touch_c.h diff --git a/code/3rd_party/sdl-2.0.20/src/events/SDL_windowevents.c b/3rd_party/sdl-2.0.20/src/events/SDL_windowevents.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/events/SDL_windowevents.c rename to 3rd_party/sdl-2.0.20/src/events/SDL_windowevents.c diff --git a/code/3rd_party/sdl-2.0.20/src/events/SDL_windowevents_c.h b/3rd_party/sdl-2.0.20/src/events/SDL_windowevents_c.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/events/SDL_windowevents_c.h rename to 3rd_party/sdl-2.0.20/src/events/SDL_windowevents_c.h diff --git a/code/3rd_party/sdl-2.0.20/src/events/blank_cursor.h b/3rd_party/sdl-2.0.20/src/events/blank_cursor.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/events/blank_cursor.h rename to 3rd_party/sdl-2.0.20/src/events/blank_cursor.h diff --git a/code/3rd_party/sdl-2.0.20/src/events/default_cursor.h b/3rd_party/sdl-2.0.20/src/events/default_cursor.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/events/default_cursor.h rename to 3rd_party/sdl-2.0.20/src/events/default_cursor.h diff --git a/code/3rd_party/sdl-2.0.20/src/events/imKStoUCS.c b/3rd_party/sdl-2.0.20/src/events/imKStoUCS.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/events/imKStoUCS.c rename to 3rd_party/sdl-2.0.20/src/events/imKStoUCS.c diff --git a/code/3rd_party/sdl-2.0.20/src/events/imKStoUCS.h b/3rd_party/sdl-2.0.20/src/events/imKStoUCS.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/events/imKStoUCS.h rename to 3rd_party/sdl-2.0.20/src/events/imKStoUCS.h diff --git a/code/3rd_party/sdl-2.0.20/src/events/scancodes_darwin.h b/3rd_party/sdl-2.0.20/src/events/scancodes_darwin.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/events/scancodes_darwin.h rename to 3rd_party/sdl-2.0.20/src/events/scancodes_darwin.h diff --git a/code/3rd_party/sdl-2.0.20/src/events/scancodes_linux.h b/3rd_party/sdl-2.0.20/src/events/scancodes_linux.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/events/scancodes_linux.h rename to 3rd_party/sdl-2.0.20/src/events/scancodes_linux.h diff --git a/code/3rd_party/sdl-2.0.20/src/events/scancodes_windows.h b/3rd_party/sdl-2.0.20/src/events/scancodes_windows.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/events/scancodes_windows.h rename to 3rd_party/sdl-2.0.20/src/events/scancodes_windows.h diff --git a/code/3rd_party/sdl-2.0.20/src/events/scancodes_xfree86.h b/3rd_party/sdl-2.0.20/src/events/scancodes_xfree86.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/events/scancodes_xfree86.h rename to 3rd_party/sdl-2.0.20/src/events/scancodes_xfree86.h diff --git a/code/3rd_party/sdl-2.0.20/src/file/SDL_rwops.c b/3rd_party/sdl-2.0.20/src/file/SDL_rwops.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/file/SDL_rwops.c rename to 3rd_party/sdl-2.0.20/src/file/SDL_rwops.c diff --git a/code/3rd_party/sdl-2.0.20/src/file/cocoa/SDL_rwopsbundlesupport.h b/3rd_party/sdl-2.0.20/src/file/cocoa/SDL_rwopsbundlesupport.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/file/cocoa/SDL_rwopsbundlesupport.h rename to 3rd_party/sdl-2.0.20/src/file/cocoa/SDL_rwopsbundlesupport.h diff --git a/code/3rd_party/sdl-2.0.20/src/file/cocoa/SDL_rwopsbundlesupport.m b/3rd_party/sdl-2.0.20/src/file/cocoa/SDL_rwopsbundlesupport.m similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/file/cocoa/SDL_rwopsbundlesupport.m rename to 3rd_party/sdl-2.0.20/src/file/cocoa/SDL_rwopsbundlesupport.m diff --git a/code/3rd_party/sdl-2.0.20/src/filesystem/android/SDL_sysfilesystem.c b/3rd_party/sdl-2.0.20/src/filesystem/android/SDL_sysfilesystem.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/filesystem/android/SDL_sysfilesystem.c rename to 3rd_party/sdl-2.0.20/src/filesystem/android/SDL_sysfilesystem.c diff --git a/code/3rd_party/sdl-2.0.20/src/filesystem/cocoa/SDL_sysfilesystem.m b/3rd_party/sdl-2.0.20/src/filesystem/cocoa/SDL_sysfilesystem.m similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/filesystem/cocoa/SDL_sysfilesystem.m rename to 3rd_party/sdl-2.0.20/src/filesystem/cocoa/SDL_sysfilesystem.m diff --git a/code/3rd_party/sdl-2.0.20/src/filesystem/dummy/SDL_sysfilesystem.c b/3rd_party/sdl-2.0.20/src/filesystem/dummy/SDL_sysfilesystem.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/filesystem/dummy/SDL_sysfilesystem.c rename to 3rd_party/sdl-2.0.20/src/filesystem/dummy/SDL_sysfilesystem.c diff --git a/code/3rd_party/sdl-2.0.20/src/filesystem/emscripten/SDL_sysfilesystem.c b/3rd_party/sdl-2.0.20/src/filesystem/emscripten/SDL_sysfilesystem.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/filesystem/emscripten/SDL_sysfilesystem.c rename to 3rd_party/sdl-2.0.20/src/filesystem/emscripten/SDL_sysfilesystem.c diff --git a/code/3rd_party/sdl-2.0.20/src/filesystem/haiku/SDL_sysfilesystem.cc b/3rd_party/sdl-2.0.20/src/filesystem/haiku/SDL_sysfilesystem.cc similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/filesystem/haiku/SDL_sysfilesystem.cc rename to 3rd_party/sdl-2.0.20/src/filesystem/haiku/SDL_sysfilesystem.cc diff --git a/code/3rd_party/sdl-2.0.20/src/filesystem/nacl/SDL_sysfilesystem.c b/3rd_party/sdl-2.0.20/src/filesystem/nacl/SDL_sysfilesystem.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/filesystem/nacl/SDL_sysfilesystem.c rename to 3rd_party/sdl-2.0.20/src/filesystem/nacl/SDL_sysfilesystem.c diff --git a/code/3rd_party/sdl-2.0.20/src/filesystem/os2/SDL_sysfilesystem.c b/3rd_party/sdl-2.0.20/src/filesystem/os2/SDL_sysfilesystem.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/filesystem/os2/SDL_sysfilesystem.c rename to 3rd_party/sdl-2.0.20/src/filesystem/os2/SDL_sysfilesystem.c diff --git a/code/3rd_party/sdl-2.0.20/src/filesystem/psp/SDL_sysfilesystem.c b/3rd_party/sdl-2.0.20/src/filesystem/psp/SDL_sysfilesystem.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/filesystem/psp/SDL_sysfilesystem.c rename to 3rd_party/sdl-2.0.20/src/filesystem/psp/SDL_sysfilesystem.c diff --git a/code/3rd_party/sdl-2.0.20/src/filesystem/riscos/SDL_sysfilesystem.c b/3rd_party/sdl-2.0.20/src/filesystem/riscos/SDL_sysfilesystem.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/filesystem/riscos/SDL_sysfilesystem.c rename to 3rd_party/sdl-2.0.20/src/filesystem/riscos/SDL_sysfilesystem.c diff --git a/code/3rd_party/sdl-2.0.20/src/filesystem/unix/SDL_sysfilesystem.c b/3rd_party/sdl-2.0.20/src/filesystem/unix/SDL_sysfilesystem.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/filesystem/unix/SDL_sysfilesystem.c rename to 3rd_party/sdl-2.0.20/src/filesystem/unix/SDL_sysfilesystem.c diff --git a/code/3rd_party/sdl-2.0.20/src/filesystem/vita/SDL_sysfilesystem.c b/3rd_party/sdl-2.0.20/src/filesystem/vita/SDL_sysfilesystem.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/filesystem/vita/SDL_sysfilesystem.c rename to 3rd_party/sdl-2.0.20/src/filesystem/vita/SDL_sysfilesystem.c diff --git a/code/3rd_party/sdl-2.0.20/src/filesystem/windows/SDL_sysfilesystem.c b/3rd_party/sdl-2.0.20/src/filesystem/windows/SDL_sysfilesystem.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/filesystem/windows/SDL_sysfilesystem.c rename to 3rd_party/sdl-2.0.20/src/filesystem/windows/SDL_sysfilesystem.c diff --git a/code/3rd_party/sdl-2.0.20/src/filesystem/winrt/SDL_sysfilesystem.cpp b/3rd_party/sdl-2.0.20/src/filesystem/winrt/SDL_sysfilesystem.cpp similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/filesystem/winrt/SDL_sysfilesystem.cpp rename to 3rd_party/sdl-2.0.20/src/filesystem/winrt/SDL_sysfilesystem.cpp diff --git a/code/3rd_party/sdl-2.0.20/src/haptic/SDL_haptic.c b/3rd_party/sdl-2.0.20/src/haptic/SDL_haptic.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/haptic/SDL_haptic.c rename to 3rd_party/sdl-2.0.20/src/haptic/SDL_haptic.c diff --git a/code/3rd_party/sdl-2.0.20/src/haptic/SDL_haptic_c.h b/3rd_party/sdl-2.0.20/src/haptic/SDL_haptic_c.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/haptic/SDL_haptic_c.h rename to 3rd_party/sdl-2.0.20/src/haptic/SDL_haptic_c.h diff --git a/code/3rd_party/sdl-2.0.20/src/haptic/SDL_syshaptic.h b/3rd_party/sdl-2.0.20/src/haptic/SDL_syshaptic.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/haptic/SDL_syshaptic.h rename to 3rd_party/sdl-2.0.20/src/haptic/SDL_syshaptic.h diff --git a/code/3rd_party/sdl-2.0.20/src/haptic/android/SDL_syshaptic.c b/3rd_party/sdl-2.0.20/src/haptic/android/SDL_syshaptic.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/haptic/android/SDL_syshaptic.c rename to 3rd_party/sdl-2.0.20/src/haptic/android/SDL_syshaptic.c diff --git a/code/3rd_party/sdl-2.0.20/src/haptic/android/SDL_syshaptic_c.h b/3rd_party/sdl-2.0.20/src/haptic/android/SDL_syshaptic_c.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/haptic/android/SDL_syshaptic_c.h rename to 3rd_party/sdl-2.0.20/src/haptic/android/SDL_syshaptic_c.h diff --git a/code/3rd_party/sdl-2.0.20/src/haptic/darwin/SDL_syshaptic.c b/3rd_party/sdl-2.0.20/src/haptic/darwin/SDL_syshaptic.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/haptic/darwin/SDL_syshaptic.c rename to 3rd_party/sdl-2.0.20/src/haptic/darwin/SDL_syshaptic.c diff --git a/code/3rd_party/sdl-2.0.20/src/haptic/darwin/SDL_syshaptic_c.h b/3rd_party/sdl-2.0.20/src/haptic/darwin/SDL_syshaptic_c.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/haptic/darwin/SDL_syshaptic_c.h rename to 3rd_party/sdl-2.0.20/src/haptic/darwin/SDL_syshaptic_c.h diff --git a/code/3rd_party/sdl-2.0.20/src/haptic/dummy/SDL_syshaptic.c b/3rd_party/sdl-2.0.20/src/haptic/dummy/SDL_syshaptic.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/haptic/dummy/SDL_syshaptic.c rename to 3rd_party/sdl-2.0.20/src/haptic/dummy/SDL_syshaptic.c diff --git a/code/3rd_party/sdl-2.0.20/src/haptic/linux/SDL_syshaptic.c b/3rd_party/sdl-2.0.20/src/haptic/linux/SDL_syshaptic.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/haptic/linux/SDL_syshaptic.c rename to 3rd_party/sdl-2.0.20/src/haptic/linux/SDL_syshaptic.c diff --git a/code/3rd_party/sdl-2.0.20/src/haptic/windows/SDL_dinputhaptic.c b/3rd_party/sdl-2.0.20/src/haptic/windows/SDL_dinputhaptic.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/haptic/windows/SDL_dinputhaptic.c rename to 3rd_party/sdl-2.0.20/src/haptic/windows/SDL_dinputhaptic.c diff --git a/code/3rd_party/sdl-2.0.20/src/haptic/windows/SDL_dinputhaptic_c.h b/3rd_party/sdl-2.0.20/src/haptic/windows/SDL_dinputhaptic_c.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/haptic/windows/SDL_dinputhaptic_c.h rename to 3rd_party/sdl-2.0.20/src/haptic/windows/SDL_dinputhaptic_c.h diff --git a/code/3rd_party/sdl-2.0.20/src/haptic/windows/SDL_windowshaptic.c b/3rd_party/sdl-2.0.20/src/haptic/windows/SDL_windowshaptic.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/haptic/windows/SDL_windowshaptic.c rename to 3rd_party/sdl-2.0.20/src/haptic/windows/SDL_windowshaptic.c diff --git a/code/3rd_party/sdl-2.0.20/src/haptic/windows/SDL_windowshaptic_c.h b/3rd_party/sdl-2.0.20/src/haptic/windows/SDL_windowshaptic_c.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/haptic/windows/SDL_windowshaptic_c.h rename to 3rd_party/sdl-2.0.20/src/haptic/windows/SDL_windowshaptic_c.h diff --git a/code/3rd_party/sdl-2.0.20/src/haptic/windows/SDL_xinputhaptic.c b/3rd_party/sdl-2.0.20/src/haptic/windows/SDL_xinputhaptic.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/haptic/windows/SDL_xinputhaptic.c rename to 3rd_party/sdl-2.0.20/src/haptic/windows/SDL_xinputhaptic.c diff --git a/code/3rd_party/sdl-2.0.20/src/haptic/windows/SDL_xinputhaptic_c.h b/3rd_party/sdl-2.0.20/src/haptic/windows/SDL_xinputhaptic_c.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/haptic/windows/SDL_xinputhaptic_c.h rename to 3rd_party/sdl-2.0.20/src/haptic/windows/SDL_xinputhaptic_c.h diff --git a/code/3rd_party/sdl-2.0.20/src/hidapi/AUTHORS.txt b/3rd_party/sdl-2.0.20/src/hidapi/AUTHORS.txt similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/hidapi/AUTHORS.txt rename to 3rd_party/sdl-2.0.20/src/hidapi/AUTHORS.txt diff --git a/code/3rd_party/sdl-2.0.20/src/hidapi/HACKING.txt b/3rd_party/sdl-2.0.20/src/hidapi/HACKING.txt similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/hidapi/HACKING.txt rename to 3rd_party/sdl-2.0.20/src/hidapi/HACKING.txt diff --git a/code/3rd_party/sdl-2.0.20/src/hidapi/LICENSE-bsd.txt b/3rd_party/sdl-2.0.20/src/hidapi/LICENSE-bsd.txt similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/hidapi/LICENSE-bsd.txt rename to 3rd_party/sdl-2.0.20/src/hidapi/LICENSE-bsd.txt diff --git a/code/3rd_party/sdl-2.0.20/src/hidapi/LICENSE-gpl3.txt b/3rd_party/sdl-2.0.20/src/hidapi/LICENSE-gpl3.txt similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/hidapi/LICENSE-gpl3.txt rename to 3rd_party/sdl-2.0.20/src/hidapi/LICENSE-gpl3.txt diff --git a/code/3rd_party/sdl-2.0.20/src/hidapi/LICENSE-orig.txt b/3rd_party/sdl-2.0.20/src/hidapi/LICENSE-orig.txt similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/hidapi/LICENSE-orig.txt rename to 3rd_party/sdl-2.0.20/src/hidapi/LICENSE-orig.txt diff --git a/code/3rd_party/sdl-2.0.20/src/hidapi/LICENSE.txt b/3rd_party/sdl-2.0.20/src/hidapi/LICENSE.txt similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/hidapi/LICENSE.txt rename to 3rd_party/sdl-2.0.20/src/hidapi/LICENSE.txt diff --git a/code/3rd_party/sdl-2.0.20/src/hidapi/Makefile.am b/3rd_party/sdl-2.0.20/src/hidapi/Makefile.am similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/hidapi/Makefile.am rename to 3rd_party/sdl-2.0.20/src/hidapi/Makefile.am diff --git a/code/3rd_party/sdl-2.0.20/src/hidapi/README.txt b/3rd_party/sdl-2.0.20/src/hidapi/README.txt similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/hidapi/README.txt rename to 3rd_party/sdl-2.0.20/src/hidapi/README.txt diff --git a/code/3rd_party/sdl-2.0.20/src/hidapi/SDL_hidapi.c b/3rd_party/sdl-2.0.20/src/hidapi/SDL_hidapi.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/hidapi/SDL_hidapi.c rename to 3rd_party/sdl-2.0.20/src/hidapi/SDL_hidapi.c diff --git a/code/3rd_party/sdl-2.0.20/src/hidapi/SDL_hidapi_c.h b/3rd_party/sdl-2.0.20/src/hidapi/SDL_hidapi_c.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/hidapi/SDL_hidapi_c.h rename to 3rd_party/sdl-2.0.20/src/hidapi/SDL_hidapi_c.h diff --git a/code/3rd_party/sdl-2.0.20/src/hidapi/android/hid.cpp b/3rd_party/sdl-2.0.20/src/hidapi/android/hid.cpp similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/hidapi/android/hid.cpp rename to 3rd_party/sdl-2.0.20/src/hidapi/android/hid.cpp diff --git a/code/3rd_party/sdl-2.0.20/src/hidapi/android/jni/Android.mk b/3rd_party/sdl-2.0.20/src/hidapi/android/jni/Android.mk similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/hidapi/android/jni/Android.mk rename to 3rd_party/sdl-2.0.20/src/hidapi/android/jni/Android.mk diff --git a/code/3rd_party/sdl-2.0.20/src/hidapi/android/jni/Application.mk b/3rd_party/sdl-2.0.20/src/hidapi/android/jni/Application.mk similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/hidapi/android/jni/Application.mk rename to 3rd_party/sdl-2.0.20/src/hidapi/android/jni/Application.mk diff --git a/code/3rd_party/sdl-2.0.20/src/hidapi/android/project.properties b/3rd_party/sdl-2.0.20/src/hidapi/android/project.properties similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/hidapi/android/project.properties rename to 3rd_party/sdl-2.0.20/src/hidapi/android/project.properties diff --git a/code/3rd_party/sdl-2.0.20/src/hidapi/bootstrap b/3rd_party/sdl-2.0.20/src/hidapi/bootstrap similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/hidapi/bootstrap rename to 3rd_party/sdl-2.0.20/src/hidapi/bootstrap diff --git a/code/3rd_party/sdl-2.0.20/src/hidapi/configure.ac b/3rd_party/sdl-2.0.20/src/hidapi/configure.ac similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/hidapi/configure.ac rename to 3rd_party/sdl-2.0.20/src/hidapi/configure.ac diff --git a/code/3rd_party/sdl-2.0.20/src/hidapi/doxygen/Doxyfile b/3rd_party/sdl-2.0.20/src/hidapi/doxygen/Doxyfile similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/hidapi/doxygen/Doxyfile rename to 3rd_party/sdl-2.0.20/src/hidapi/doxygen/Doxyfile diff --git a/code/3rd_party/sdl-2.0.20/src/hidapi/hidapi/hidapi.h b/3rd_party/sdl-2.0.20/src/hidapi/hidapi/hidapi.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/hidapi/hidapi/hidapi.h rename to 3rd_party/sdl-2.0.20/src/hidapi/hidapi/hidapi.h diff --git a/code/3rd_party/sdl-2.0.20/src/hidapi/hidtest/Makefile.am b/3rd_party/sdl-2.0.20/src/hidapi/hidtest/Makefile.am similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/hidapi/hidtest/Makefile.am rename to 3rd_party/sdl-2.0.20/src/hidapi/hidtest/Makefile.am diff --git a/code/3rd_party/sdl-2.0.20/src/hidapi/hidtest/hidtest.cpp b/3rd_party/sdl-2.0.20/src/hidapi/hidtest/hidtest.cpp similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/hidapi/hidtest/hidtest.cpp rename to 3rd_party/sdl-2.0.20/src/hidapi/hidtest/hidtest.cpp diff --git a/code/3rd_party/sdl-2.0.20/src/hidapi/ios/Makefile-manual b/3rd_party/sdl-2.0.20/src/hidapi/ios/Makefile-manual similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/hidapi/ios/Makefile-manual rename to 3rd_party/sdl-2.0.20/src/hidapi/ios/Makefile-manual diff --git a/code/3rd_party/sdl-2.0.20/src/hidapi/ios/Makefile.am b/3rd_party/sdl-2.0.20/src/hidapi/ios/Makefile.am similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/hidapi/ios/Makefile.am rename to 3rd_party/sdl-2.0.20/src/hidapi/ios/Makefile.am diff --git a/code/3rd_party/sdl-2.0.20/src/hidapi/ios/hid.m b/3rd_party/sdl-2.0.20/src/hidapi/ios/hid.m similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/hidapi/ios/hid.m rename to 3rd_party/sdl-2.0.20/src/hidapi/ios/hid.m diff --git a/code/3rd_party/sdl-2.0.20/src/hidapi/libusb/Makefile-manual b/3rd_party/sdl-2.0.20/src/hidapi/libusb/Makefile-manual similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/hidapi/libusb/Makefile-manual rename to 3rd_party/sdl-2.0.20/src/hidapi/libusb/Makefile-manual diff --git a/code/3rd_party/sdl-2.0.20/src/hidapi/libusb/Makefile.am b/3rd_party/sdl-2.0.20/src/hidapi/libusb/Makefile.am similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/hidapi/libusb/Makefile.am rename to 3rd_party/sdl-2.0.20/src/hidapi/libusb/Makefile.am diff --git a/code/3rd_party/sdl-2.0.20/src/hidapi/libusb/Makefile.freebsd b/3rd_party/sdl-2.0.20/src/hidapi/libusb/Makefile.freebsd similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/hidapi/libusb/Makefile.freebsd rename to 3rd_party/sdl-2.0.20/src/hidapi/libusb/Makefile.freebsd diff --git a/code/3rd_party/sdl-2.0.20/src/hidapi/libusb/Makefile.linux b/3rd_party/sdl-2.0.20/src/hidapi/libusb/Makefile.linux similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/hidapi/libusb/Makefile.linux rename to 3rd_party/sdl-2.0.20/src/hidapi/libusb/Makefile.linux diff --git a/code/3rd_party/sdl-2.0.20/src/hidapi/libusb/hid.c b/3rd_party/sdl-2.0.20/src/hidapi/libusb/hid.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/hidapi/libusb/hid.c rename to 3rd_party/sdl-2.0.20/src/hidapi/libusb/hid.c diff --git a/code/3rd_party/sdl-2.0.20/src/hidapi/libusb/hidusb.cpp b/3rd_party/sdl-2.0.20/src/hidapi/libusb/hidusb.cpp similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/hidapi/libusb/hidusb.cpp rename to 3rd_party/sdl-2.0.20/src/hidapi/libusb/hidusb.cpp diff --git a/code/3rd_party/sdl-2.0.20/src/hidapi/linux/Makefile-manual b/3rd_party/sdl-2.0.20/src/hidapi/linux/Makefile-manual similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/hidapi/linux/Makefile-manual rename to 3rd_party/sdl-2.0.20/src/hidapi/linux/Makefile-manual diff --git a/code/3rd_party/sdl-2.0.20/src/hidapi/linux/Makefile.am b/3rd_party/sdl-2.0.20/src/hidapi/linux/Makefile.am similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/hidapi/linux/Makefile.am rename to 3rd_party/sdl-2.0.20/src/hidapi/linux/Makefile.am diff --git a/code/3rd_party/sdl-2.0.20/src/hidapi/linux/README.txt b/3rd_party/sdl-2.0.20/src/hidapi/linux/README.txt similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/hidapi/linux/README.txt rename to 3rd_party/sdl-2.0.20/src/hidapi/linux/README.txt diff --git a/code/3rd_party/sdl-2.0.20/src/hidapi/linux/hid.c b/3rd_party/sdl-2.0.20/src/hidapi/linux/hid.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/hidapi/linux/hid.c rename to 3rd_party/sdl-2.0.20/src/hidapi/linux/hid.c diff --git a/code/3rd_party/sdl-2.0.20/src/hidapi/linux/hidraw.cpp b/3rd_party/sdl-2.0.20/src/hidapi/linux/hidraw.cpp similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/hidapi/linux/hidraw.cpp rename to 3rd_party/sdl-2.0.20/src/hidapi/linux/hidraw.cpp diff --git a/code/3rd_party/sdl-2.0.20/src/hidapi/m4/ax_pthread.m4 b/3rd_party/sdl-2.0.20/src/hidapi/m4/ax_pthread.m4 similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/hidapi/m4/ax_pthread.m4 rename to 3rd_party/sdl-2.0.20/src/hidapi/m4/ax_pthread.m4 diff --git a/code/3rd_party/sdl-2.0.20/src/hidapi/m4/pkg.m4 b/3rd_party/sdl-2.0.20/src/hidapi/m4/pkg.m4 similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/hidapi/m4/pkg.m4 rename to 3rd_party/sdl-2.0.20/src/hidapi/m4/pkg.m4 diff --git a/code/3rd_party/sdl-2.0.20/src/hidapi/mac/Makefile-manual b/3rd_party/sdl-2.0.20/src/hidapi/mac/Makefile-manual similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/hidapi/mac/Makefile-manual rename to 3rd_party/sdl-2.0.20/src/hidapi/mac/Makefile-manual diff --git a/code/3rd_party/sdl-2.0.20/src/hidapi/mac/Makefile.am b/3rd_party/sdl-2.0.20/src/hidapi/mac/Makefile.am similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/hidapi/mac/Makefile.am rename to 3rd_party/sdl-2.0.20/src/hidapi/mac/Makefile.am diff --git a/code/3rd_party/sdl-2.0.20/src/hidapi/mac/hid.c b/3rd_party/sdl-2.0.20/src/hidapi/mac/hid.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/hidapi/mac/hid.c rename to 3rd_party/sdl-2.0.20/src/hidapi/mac/hid.c diff --git a/code/3rd_party/sdl-2.0.20/src/hidapi/pc/hidapi-hidraw.pc.in b/3rd_party/sdl-2.0.20/src/hidapi/pc/hidapi-hidraw.pc.in similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/hidapi/pc/hidapi-hidraw.pc.in rename to 3rd_party/sdl-2.0.20/src/hidapi/pc/hidapi-hidraw.pc.in diff --git a/code/3rd_party/sdl-2.0.20/src/hidapi/pc/hidapi-libusb.pc.in b/3rd_party/sdl-2.0.20/src/hidapi/pc/hidapi-libusb.pc.in similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/hidapi/pc/hidapi-libusb.pc.in rename to 3rd_party/sdl-2.0.20/src/hidapi/pc/hidapi-libusb.pc.in diff --git a/code/3rd_party/sdl-2.0.20/src/hidapi/pc/hidapi.pc.in b/3rd_party/sdl-2.0.20/src/hidapi/pc/hidapi.pc.in similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/hidapi/pc/hidapi.pc.in rename to 3rd_party/sdl-2.0.20/src/hidapi/pc/hidapi.pc.in diff --git a/code/3rd_party/sdl-2.0.20/src/hidapi/testgui/Makefile-manual b/3rd_party/sdl-2.0.20/src/hidapi/testgui/Makefile-manual similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/hidapi/testgui/Makefile-manual rename to 3rd_party/sdl-2.0.20/src/hidapi/testgui/Makefile-manual diff --git a/code/3rd_party/sdl-2.0.20/src/hidapi/testgui/Makefile.am b/3rd_party/sdl-2.0.20/src/hidapi/testgui/Makefile.am similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/hidapi/testgui/Makefile.am rename to 3rd_party/sdl-2.0.20/src/hidapi/testgui/Makefile.am diff --git a/code/3rd_party/sdl-2.0.20/src/hidapi/testgui/Makefile.freebsd b/3rd_party/sdl-2.0.20/src/hidapi/testgui/Makefile.freebsd similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/hidapi/testgui/Makefile.freebsd rename to 3rd_party/sdl-2.0.20/src/hidapi/testgui/Makefile.freebsd diff --git a/code/3rd_party/sdl-2.0.20/src/hidapi/testgui/Makefile.linux b/3rd_party/sdl-2.0.20/src/hidapi/testgui/Makefile.linux similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/hidapi/testgui/Makefile.linux rename to 3rd_party/sdl-2.0.20/src/hidapi/testgui/Makefile.linux diff --git a/code/3rd_party/sdl-2.0.20/src/hidapi/testgui/Makefile.mac b/3rd_party/sdl-2.0.20/src/hidapi/testgui/Makefile.mac similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/hidapi/testgui/Makefile.mac rename to 3rd_party/sdl-2.0.20/src/hidapi/testgui/Makefile.mac diff --git a/code/3rd_party/sdl-2.0.20/src/hidapi/testgui/Makefile.mingw b/3rd_party/sdl-2.0.20/src/hidapi/testgui/Makefile.mingw similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/hidapi/testgui/Makefile.mingw rename to 3rd_party/sdl-2.0.20/src/hidapi/testgui/Makefile.mingw diff --git a/code/3rd_party/sdl-2.0.20/src/hidapi/testgui/TestGUI.app.in/Contents/Info.plist b/3rd_party/sdl-2.0.20/src/hidapi/testgui/TestGUI.app.in/Contents/Info.plist similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/hidapi/testgui/TestGUI.app.in/Contents/Info.plist rename to 3rd_party/sdl-2.0.20/src/hidapi/testgui/TestGUI.app.in/Contents/Info.plist diff --git a/code/3rd_party/sdl-2.0.20/src/hidapi/testgui/TestGUI.app.in/Contents/PkgInfo b/3rd_party/sdl-2.0.20/src/hidapi/testgui/TestGUI.app.in/Contents/PkgInfo similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/hidapi/testgui/TestGUI.app.in/Contents/PkgInfo rename to 3rd_party/sdl-2.0.20/src/hidapi/testgui/TestGUI.app.in/Contents/PkgInfo diff --git a/code/3rd_party/sdl-2.0.20/src/hidapi/testgui/TestGUI.app.in/Contents/Resources/English.lproj/InfoPlist.strings b/3rd_party/sdl-2.0.20/src/hidapi/testgui/TestGUI.app.in/Contents/Resources/English.lproj/InfoPlist.strings similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/hidapi/testgui/TestGUI.app.in/Contents/Resources/English.lproj/InfoPlist.strings rename to 3rd_party/sdl-2.0.20/src/hidapi/testgui/TestGUI.app.in/Contents/Resources/English.lproj/InfoPlist.strings diff --git a/code/3rd_party/sdl-2.0.20/src/hidapi/testgui/TestGUI.app.in/Contents/Resources/Signal11.icns b/3rd_party/sdl-2.0.20/src/hidapi/testgui/TestGUI.app.in/Contents/Resources/Signal11.icns similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/hidapi/testgui/TestGUI.app.in/Contents/Resources/Signal11.icns rename to 3rd_party/sdl-2.0.20/src/hidapi/testgui/TestGUI.app.in/Contents/Resources/Signal11.icns diff --git a/code/3rd_party/sdl-2.0.20/src/hidapi/testgui/copy_to_bundle.sh b/3rd_party/sdl-2.0.20/src/hidapi/testgui/copy_to_bundle.sh similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/hidapi/testgui/copy_to_bundle.sh rename to 3rd_party/sdl-2.0.20/src/hidapi/testgui/copy_to_bundle.sh diff --git a/code/3rd_party/sdl-2.0.20/src/hidapi/testgui/mac_support.cpp b/3rd_party/sdl-2.0.20/src/hidapi/testgui/mac_support.cpp similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/hidapi/testgui/mac_support.cpp rename to 3rd_party/sdl-2.0.20/src/hidapi/testgui/mac_support.cpp diff --git a/code/3rd_party/sdl-2.0.20/src/hidapi/testgui/mac_support.h b/3rd_party/sdl-2.0.20/src/hidapi/testgui/mac_support.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/hidapi/testgui/mac_support.h rename to 3rd_party/sdl-2.0.20/src/hidapi/testgui/mac_support.h diff --git a/code/3rd_party/sdl-2.0.20/src/hidapi/testgui/mac_support_cocoa.m b/3rd_party/sdl-2.0.20/src/hidapi/testgui/mac_support_cocoa.m similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/hidapi/testgui/mac_support_cocoa.m rename to 3rd_party/sdl-2.0.20/src/hidapi/testgui/mac_support_cocoa.m diff --git a/code/3rd_party/sdl-2.0.20/src/hidapi/testgui/start.sh b/3rd_party/sdl-2.0.20/src/hidapi/testgui/start.sh similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/hidapi/testgui/start.sh rename to 3rd_party/sdl-2.0.20/src/hidapi/testgui/start.sh diff --git a/code/3rd_party/sdl-2.0.20/src/hidapi/testgui/test.cpp b/3rd_party/sdl-2.0.20/src/hidapi/testgui/test.cpp similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/hidapi/testgui/test.cpp rename to 3rd_party/sdl-2.0.20/src/hidapi/testgui/test.cpp diff --git a/code/3rd_party/sdl-2.0.20/src/hidapi/testgui/testgui.sln b/3rd_party/sdl-2.0.20/src/hidapi/testgui/testgui.sln similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/hidapi/testgui/testgui.sln rename to 3rd_party/sdl-2.0.20/src/hidapi/testgui/testgui.sln diff --git a/code/3rd_party/sdl-2.0.20/src/hidapi/testgui/testgui.vcproj b/3rd_party/sdl-2.0.20/src/hidapi/testgui/testgui.vcproj similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/hidapi/testgui/testgui.vcproj rename to 3rd_party/sdl-2.0.20/src/hidapi/testgui/testgui.vcproj diff --git a/code/3rd_party/sdl-2.0.20/src/hidapi/udev/99-hid.rules b/3rd_party/sdl-2.0.20/src/hidapi/udev/99-hid.rules similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/hidapi/udev/99-hid.rules rename to 3rd_party/sdl-2.0.20/src/hidapi/udev/99-hid.rules diff --git a/code/3rd_party/sdl-2.0.20/src/hidapi/windows/Makefile-manual b/3rd_party/sdl-2.0.20/src/hidapi/windows/Makefile-manual similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/hidapi/windows/Makefile-manual rename to 3rd_party/sdl-2.0.20/src/hidapi/windows/Makefile-manual diff --git a/code/3rd_party/sdl-2.0.20/src/hidapi/windows/Makefile.am b/3rd_party/sdl-2.0.20/src/hidapi/windows/Makefile.am similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/hidapi/windows/Makefile.am rename to 3rd_party/sdl-2.0.20/src/hidapi/windows/Makefile.am diff --git a/code/3rd_party/sdl-2.0.20/src/hidapi/windows/Makefile.mingw b/3rd_party/sdl-2.0.20/src/hidapi/windows/Makefile.mingw similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/hidapi/windows/Makefile.mingw rename to 3rd_party/sdl-2.0.20/src/hidapi/windows/Makefile.mingw diff --git a/code/3rd_party/sdl-2.0.20/src/hidapi/windows/ddk_build/hidapi.def b/3rd_party/sdl-2.0.20/src/hidapi/windows/ddk_build/hidapi.def similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/hidapi/windows/ddk_build/hidapi.def rename to 3rd_party/sdl-2.0.20/src/hidapi/windows/ddk_build/hidapi.def diff --git a/code/3rd_party/sdl-2.0.20/src/hidapi/windows/ddk_build/makefile b/3rd_party/sdl-2.0.20/src/hidapi/windows/ddk_build/makefile similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/hidapi/windows/ddk_build/makefile rename to 3rd_party/sdl-2.0.20/src/hidapi/windows/ddk_build/makefile diff --git a/code/3rd_party/sdl-2.0.20/src/hidapi/windows/ddk_build/sources b/3rd_party/sdl-2.0.20/src/hidapi/windows/ddk_build/sources similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/hidapi/windows/ddk_build/sources rename to 3rd_party/sdl-2.0.20/src/hidapi/windows/ddk_build/sources diff --git a/code/3rd_party/sdl-2.0.20/src/hidapi/windows/hid.c b/3rd_party/sdl-2.0.20/src/hidapi/windows/hid.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/hidapi/windows/hid.c rename to 3rd_party/sdl-2.0.20/src/hidapi/windows/hid.c diff --git a/code/3rd_party/sdl-2.0.20/src/hidapi/windows/hidapi.sln b/3rd_party/sdl-2.0.20/src/hidapi/windows/hidapi.sln similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/hidapi/windows/hidapi.sln rename to 3rd_party/sdl-2.0.20/src/hidapi/windows/hidapi.sln diff --git a/code/3rd_party/sdl-2.0.20/src/hidapi/windows/hidapi.vcproj b/3rd_party/sdl-2.0.20/src/hidapi/windows/hidapi.vcproj similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/hidapi/windows/hidapi.vcproj rename to 3rd_party/sdl-2.0.20/src/hidapi/windows/hidapi.vcproj diff --git a/code/3rd_party/sdl-2.0.20/src/hidapi/windows/hidtest.vcproj b/3rd_party/sdl-2.0.20/src/hidapi/windows/hidtest.vcproj similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/hidapi/windows/hidtest.vcproj rename to 3rd_party/sdl-2.0.20/src/hidapi/windows/hidtest.vcproj diff --git a/code/3rd_party/sdl-2.0.20/src/joystick/SDL_gamecontroller.c b/3rd_party/sdl-2.0.20/src/joystick/SDL_gamecontroller.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/joystick/SDL_gamecontroller.c rename to 3rd_party/sdl-2.0.20/src/joystick/SDL_gamecontroller.c diff --git a/code/3rd_party/sdl-2.0.20/src/joystick/SDL_gamecontrollerdb.h b/3rd_party/sdl-2.0.20/src/joystick/SDL_gamecontrollerdb.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/joystick/SDL_gamecontrollerdb.h rename to 3rd_party/sdl-2.0.20/src/joystick/SDL_gamecontrollerdb.h diff --git a/code/3rd_party/sdl-2.0.20/src/joystick/SDL_joystick.c b/3rd_party/sdl-2.0.20/src/joystick/SDL_joystick.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/joystick/SDL_joystick.c rename to 3rd_party/sdl-2.0.20/src/joystick/SDL_joystick.c diff --git a/code/3rd_party/sdl-2.0.20/src/joystick/SDL_joystick_c.h b/3rd_party/sdl-2.0.20/src/joystick/SDL_joystick_c.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/joystick/SDL_joystick_c.h rename to 3rd_party/sdl-2.0.20/src/joystick/SDL_joystick_c.h diff --git a/code/3rd_party/sdl-2.0.20/src/joystick/SDL_sysjoystick.h b/3rd_party/sdl-2.0.20/src/joystick/SDL_sysjoystick.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/joystick/SDL_sysjoystick.h rename to 3rd_party/sdl-2.0.20/src/joystick/SDL_sysjoystick.h diff --git a/code/3rd_party/sdl-2.0.20/src/joystick/android/SDL_sysjoystick.c b/3rd_party/sdl-2.0.20/src/joystick/android/SDL_sysjoystick.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/joystick/android/SDL_sysjoystick.c rename to 3rd_party/sdl-2.0.20/src/joystick/android/SDL_sysjoystick.c diff --git a/code/3rd_party/sdl-2.0.20/src/joystick/android/SDL_sysjoystick_c.h b/3rd_party/sdl-2.0.20/src/joystick/android/SDL_sysjoystick_c.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/joystick/android/SDL_sysjoystick_c.h rename to 3rd_party/sdl-2.0.20/src/joystick/android/SDL_sysjoystick_c.h diff --git a/code/3rd_party/sdl-2.0.20/src/joystick/bsd/SDL_bsdjoystick.c b/3rd_party/sdl-2.0.20/src/joystick/bsd/SDL_bsdjoystick.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/joystick/bsd/SDL_bsdjoystick.c rename to 3rd_party/sdl-2.0.20/src/joystick/bsd/SDL_bsdjoystick.c diff --git a/code/3rd_party/sdl-2.0.20/src/joystick/check_8bitdo.sh b/3rd_party/sdl-2.0.20/src/joystick/check_8bitdo.sh similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/joystick/check_8bitdo.sh rename to 3rd_party/sdl-2.0.20/src/joystick/check_8bitdo.sh diff --git a/code/3rd_party/sdl-2.0.20/src/joystick/controller_type.h b/3rd_party/sdl-2.0.20/src/joystick/controller_type.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/joystick/controller_type.h rename to 3rd_party/sdl-2.0.20/src/joystick/controller_type.h diff --git a/code/3rd_party/sdl-2.0.20/src/joystick/darwin/SDL_iokitjoystick.c b/3rd_party/sdl-2.0.20/src/joystick/darwin/SDL_iokitjoystick.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/joystick/darwin/SDL_iokitjoystick.c rename to 3rd_party/sdl-2.0.20/src/joystick/darwin/SDL_iokitjoystick.c diff --git a/code/3rd_party/sdl-2.0.20/src/joystick/darwin/SDL_iokitjoystick_c.h b/3rd_party/sdl-2.0.20/src/joystick/darwin/SDL_iokitjoystick_c.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/joystick/darwin/SDL_iokitjoystick_c.h rename to 3rd_party/sdl-2.0.20/src/joystick/darwin/SDL_iokitjoystick_c.h diff --git a/code/3rd_party/sdl-2.0.20/src/joystick/dummy/SDL_sysjoystick.c b/3rd_party/sdl-2.0.20/src/joystick/dummy/SDL_sysjoystick.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/joystick/dummy/SDL_sysjoystick.c rename to 3rd_party/sdl-2.0.20/src/joystick/dummy/SDL_sysjoystick.c diff --git a/code/3rd_party/sdl-2.0.20/src/joystick/emscripten/SDL_sysjoystick.c b/3rd_party/sdl-2.0.20/src/joystick/emscripten/SDL_sysjoystick.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/joystick/emscripten/SDL_sysjoystick.c rename to 3rd_party/sdl-2.0.20/src/joystick/emscripten/SDL_sysjoystick.c diff --git a/code/3rd_party/sdl-2.0.20/src/joystick/emscripten/SDL_sysjoystick_c.h b/3rd_party/sdl-2.0.20/src/joystick/emscripten/SDL_sysjoystick_c.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/joystick/emscripten/SDL_sysjoystick_c.h rename to 3rd_party/sdl-2.0.20/src/joystick/emscripten/SDL_sysjoystick_c.h diff --git a/code/3rd_party/sdl-2.0.20/src/joystick/haiku/SDL_haikujoystick.cc b/3rd_party/sdl-2.0.20/src/joystick/haiku/SDL_haikujoystick.cc similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/joystick/haiku/SDL_haikujoystick.cc rename to 3rd_party/sdl-2.0.20/src/joystick/haiku/SDL_haikujoystick.cc diff --git a/code/3rd_party/sdl-2.0.20/src/joystick/hidapi/SDL_hidapi_gamecube.c b/3rd_party/sdl-2.0.20/src/joystick/hidapi/SDL_hidapi_gamecube.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/joystick/hidapi/SDL_hidapi_gamecube.c rename to 3rd_party/sdl-2.0.20/src/joystick/hidapi/SDL_hidapi_gamecube.c diff --git a/code/3rd_party/sdl-2.0.20/src/joystick/hidapi/SDL_hidapi_luna.c b/3rd_party/sdl-2.0.20/src/joystick/hidapi/SDL_hidapi_luna.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/joystick/hidapi/SDL_hidapi_luna.c rename to 3rd_party/sdl-2.0.20/src/joystick/hidapi/SDL_hidapi_luna.c diff --git a/code/3rd_party/sdl-2.0.20/src/joystick/hidapi/SDL_hidapi_ps4.c b/3rd_party/sdl-2.0.20/src/joystick/hidapi/SDL_hidapi_ps4.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/joystick/hidapi/SDL_hidapi_ps4.c rename to 3rd_party/sdl-2.0.20/src/joystick/hidapi/SDL_hidapi_ps4.c diff --git a/code/3rd_party/sdl-2.0.20/src/joystick/hidapi/SDL_hidapi_ps5.c b/3rd_party/sdl-2.0.20/src/joystick/hidapi/SDL_hidapi_ps5.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/joystick/hidapi/SDL_hidapi_ps5.c rename to 3rd_party/sdl-2.0.20/src/joystick/hidapi/SDL_hidapi_ps5.c diff --git a/code/3rd_party/sdl-2.0.20/src/joystick/hidapi/SDL_hidapi_rumble.c b/3rd_party/sdl-2.0.20/src/joystick/hidapi/SDL_hidapi_rumble.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/joystick/hidapi/SDL_hidapi_rumble.c rename to 3rd_party/sdl-2.0.20/src/joystick/hidapi/SDL_hidapi_rumble.c diff --git a/code/3rd_party/sdl-2.0.20/src/joystick/hidapi/SDL_hidapi_rumble.h b/3rd_party/sdl-2.0.20/src/joystick/hidapi/SDL_hidapi_rumble.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/joystick/hidapi/SDL_hidapi_rumble.h rename to 3rd_party/sdl-2.0.20/src/joystick/hidapi/SDL_hidapi_rumble.h diff --git a/code/3rd_party/sdl-2.0.20/src/joystick/hidapi/SDL_hidapi_stadia.c b/3rd_party/sdl-2.0.20/src/joystick/hidapi/SDL_hidapi_stadia.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/joystick/hidapi/SDL_hidapi_stadia.c rename to 3rd_party/sdl-2.0.20/src/joystick/hidapi/SDL_hidapi_stadia.c diff --git a/code/3rd_party/sdl-2.0.20/src/joystick/hidapi/SDL_hidapi_steam.c b/3rd_party/sdl-2.0.20/src/joystick/hidapi/SDL_hidapi_steam.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/joystick/hidapi/SDL_hidapi_steam.c rename to 3rd_party/sdl-2.0.20/src/joystick/hidapi/SDL_hidapi_steam.c diff --git a/code/3rd_party/sdl-2.0.20/src/joystick/hidapi/SDL_hidapi_switch.c b/3rd_party/sdl-2.0.20/src/joystick/hidapi/SDL_hidapi_switch.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/joystick/hidapi/SDL_hidapi_switch.c rename to 3rd_party/sdl-2.0.20/src/joystick/hidapi/SDL_hidapi_switch.c diff --git a/code/3rd_party/sdl-2.0.20/src/joystick/hidapi/SDL_hidapi_xbox360.c b/3rd_party/sdl-2.0.20/src/joystick/hidapi/SDL_hidapi_xbox360.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/joystick/hidapi/SDL_hidapi_xbox360.c rename to 3rd_party/sdl-2.0.20/src/joystick/hidapi/SDL_hidapi_xbox360.c diff --git a/code/3rd_party/sdl-2.0.20/src/joystick/hidapi/SDL_hidapi_xbox360w.c b/3rd_party/sdl-2.0.20/src/joystick/hidapi/SDL_hidapi_xbox360w.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/joystick/hidapi/SDL_hidapi_xbox360w.c rename to 3rd_party/sdl-2.0.20/src/joystick/hidapi/SDL_hidapi_xbox360w.c diff --git a/code/3rd_party/sdl-2.0.20/src/joystick/hidapi/SDL_hidapi_xboxone.c b/3rd_party/sdl-2.0.20/src/joystick/hidapi/SDL_hidapi_xboxone.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/joystick/hidapi/SDL_hidapi_xboxone.c rename to 3rd_party/sdl-2.0.20/src/joystick/hidapi/SDL_hidapi_xboxone.c diff --git a/code/3rd_party/sdl-2.0.20/src/joystick/hidapi/SDL_hidapijoystick.c b/3rd_party/sdl-2.0.20/src/joystick/hidapi/SDL_hidapijoystick.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/joystick/hidapi/SDL_hidapijoystick.c rename to 3rd_party/sdl-2.0.20/src/joystick/hidapi/SDL_hidapijoystick.c diff --git a/code/3rd_party/sdl-2.0.20/src/joystick/hidapi/SDL_hidapijoystick_c.h b/3rd_party/sdl-2.0.20/src/joystick/hidapi/SDL_hidapijoystick_c.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/joystick/hidapi/SDL_hidapijoystick_c.h rename to 3rd_party/sdl-2.0.20/src/joystick/hidapi/SDL_hidapijoystick_c.h diff --git a/code/3rd_party/sdl-2.0.20/src/joystick/hidapi/steam/controller_constants.h b/3rd_party/sdl-2.0.20/src/joystick/hidapi/steam/controller_constants.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/joystick/hidapi/steam/controller_constants.h rename to 3rd_party/sdl-2.0.20/src/joystick/hidapi/steam/controller_constants.h diff --git a/code/3rd_party/sdl-2.0.20/src/joystick/hidapi/steam/controller_structs.h b/3rd_party/sdl-2.0.20/src/joystick/hidapi/steam/controller_structs.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/joystick/hidapi/steam/controller_structs.h rename to 3rd_party/sdl-2.0.20/src/joystick/hidapi/steam/controller_structs.h diff --git a/code/3rd_party/sdl-2.0.20/src/joystick/iphoneos/SDL_mfijoystick.m b/3rd_party/sdl-2.0.20/src/joystick/iphoneos/SDL_mfijoystick.m similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/joystick/iphoneos/SDL_mfijoystick.m rename to 3rd_party/sdl-2.0.20/src/joystick/iphoneos/SDL_mfijoystick.m diff --git a/code/3rd_party/sdl-2.0.20/src/joystick/iphoneos/SDL_mfijoystick_c.h b/3rd_party/sdl-2.0.20/src/joystick/iphoneos/SDL_mfijoystick_c.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/joystick/iphoneos/SDL_mfijoystick_c.h rename to 3rd_party/sdl-2.0.20/src/joystick/iphoneos/SDL_mfijoystick_c.h diff --git a/code/3rd_party/sdl-2.0.20/src/joystick/linux/SDL_sysjoystick.c b/3rd_party/sdl-2.0.20/src/joystick/linux/SDL_sysjoystick.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/joystick/linux/SDL_sysjoystick.c rename to 3rd_party/sdl-2.0.20/src/joystick/linux/SDL_sysjoystick.c diff --git a/code/3rd_party/sdl-2.0.20/src/joystick/linux/SDL_sysjoystick_c.h b/3rd_party/sdl-2.0.20/src/joystick/linux/SDL_sysjoystick_c.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/joystick/linux/SDL_sysjoystick_c.h rename to 3rd_party/sdl-2.0.20/src/joystick/linux/SDL_sysjoystick_c.h diff --git a/code/3rd_party/sdl-2.0.20/src/joystick/os2/SDL_os2joystick.c b/3rd_party/sdl-2.0.20/src/joystick/os2/SDL_os2joystick.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/joystick/os2/SDL_os2joystick.c rename to 3rd_party/sdl-2.0.20/src/joystick/os2/SDL_os2joystick.c diff --git a/code/3rd_party/sdl-2.0.20/src/joystick/psp/SDL_sysjoystick.c b/3rd_party/sdl-2.0.20/src/joystick/psp/SDL_sysjoystick.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/joystick/psp/SDL_sysjoystick.c rename to 3rd_party/sdl-2.0.20/src/joystick/psp/SDL_sysjoystick.c diff --git a/code/3rd_party/sdl-2.0.20/src/joystick/sort_controllers.py b/3rd_party/sdl-2.0.20/src/joystick/sort_controllers.py similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/joystick/sort_controllers.py rename to 3rd_party/sdl-2.0.20/src/joystick/sort_controllers.py diff --git a/code/3rd_party/sdl-2.0.20/src/joystick/steam/SDL_steamcontroller.c b/3rd_party/sdl-2.0.20/src/joystick/steam/SDL_steamcontroller.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/joystick/steam/SDL_steamcontroller.c rename to 3rd_party/sdl-2.0.20/src/joystick/steam/SDL_steamcontroller.c diff --git a/code/3rd_party/sdl-2.0.20/src/joystick/steam/SDL_steamcontroller.h b/3rd_party/sdl-2.0.20/src/joystick/steam/SDL_steamcontroller.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/joystick/steam/SDL_steamcontroller.h rename to 3rd_party/sdl-2.0.20/src/joystick/steam/SDL_steamcontroller.h diff --git a/code/3rd_party/sdl-2.0.20/src/joystick/usb_ids.h b/3rd_party/sdl-2.0.20/src/joystick/usb_ids.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/joystick/usb_ids.h rename to 3rd_party/sdl-2.0.20/src/joystick/usb_ids.h diff --git a/code/3rd_party/sdl-2.0.20/src/joystick/virtual/SDL_virtualjoystick.c b/3rd_party/sdl-2.0.20/src/joystick/virtual/SDL_virtualjoystick.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/joystick/virtual/SDL_virtualjoystick.c rename to 3rd_party/sdl-2.0.20/src/joystick/virtual/SDL_virtualjoystick.c diff --git a/code/3rd_party/sdl-2.0.20/src/joystick/virtual/SDL_virtualjoystick_c.h b/3rd_party/sdl-2.0.20/src/joystick/virtual/SDL_virtualjoystick_c.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/joystick/virtual/SDL_virtualjoystick_c.h rename to 3rd_party/sdl-2.0.20/src/joystick/virtual/SDL_virtualjoystick_c.h diff --git a/code/3rd_party/sdl-2.0.20/src/joystick/vita/SDL_sysjoystick.c b/3rd_party/sdl-2.0.20/src/joystick/vita/SDL_sysjoystick.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/joystick/vita/SDL_sysjoystick.c rename to 3rd_party/sdl-2.0.20/src/joystick/vita/SDL_sysjoystick.c diff --git a/code/3rd_party/sdl-2.0.20/src/joystick/windows/SDL_dinputjoystick.c b/3rd_party/sdl-2.0.20/src/joystick/windows/SDL_dinputjoystick.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/joystick/windows/SDL_dinputjoystick.c rename to 3rd_party/sdl-2.0.20/src/joystick/windows/SDL_dinputjoystick.c diff --git a/code/3rd_party/sdl-2.0.20/src/joystick/windows/SDL_dinputjoystick_c.h b/3rd_party/sdl-2.0.20/src/joystick/windows/SDL_dinputjoystick_c.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/joystick/windows/SDL_dinputjoystick_c.h rename to 3rd_party/sdl-2.0.20/src/joystick/windows/SDL_dinputjoystick_c.h diff --git a/code/3rd_party/sdl-2.0.20/src/joystick/windows/SDL_rawinputjoystick.c b/3rd_party/sdl-2.0.20/src/joystick/windows/SDL_rawinputjoystick.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/joystick/windows/SDL_rawinputjoystick.c rename to 3rd_party/sdl-2.0.20/src/joystick/windows/SDL_rawinputjoystick.c diff --git a/code/3rd_party/sdl-2.0.20/src/joystick/windows/SDL_rawinputjoystick_c.h b/3rd_party/sdl-2.0.20/src/joystick/windows/SDL_rawinputjoystick_c.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/joystick/windows/SDL_rawinputjoystick_c.h rename to 3rd_party/sdl-2.0.20/src/joystick/windows/SDL_rawinputjoystick_c.h diff --git a/code/3rd_party/sdl-2.0.20/src/joystick/windows/SDL_windows_gaming_input.c b/3rd_party/sdl-2.0.20/src/joystick/windows/SDL_windows_gaming_input.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/joystick/windows/SDL_windows_gaming_input.c rename to 3rd_party/sdl-2.0.20/src/joystick/windows/SDL_windows_gaming_input.c diff --git a/code/3rd_party/sdl-2.0.20/src/joystick/windows/SDL_windowsjoystick.c b/3rd_party/sdl-2.0.20/src/joystick/windows/SDL_windowsjoystick.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/joystick/windows/SDL_windowsjoystick.c rename to 3rd_party/sdl-2.0.20/src/joystick/windows/SDL_windowsjoystick.c diff --git a/code/3rd_party/sdl-2.0.20/src/joystick/windows/SDL_windowsjoystick_c.h b/3rd_party/sdl-2.0.20/src/joystick/windows/SDL_windowsjoystick_c.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/joystick/windows/SDL_windowsjoystick_c.h rename to 3rd_party/sdl-2.0.20/src/joystick/windows/SDL_windowsjoystick_c.h diff --git a/code/3rd_party/sdl-2.0.20/src/joystick/windows/SDL_xinputjoystick.c b/3rd_party/sdl-2.0.20/src/joystick/windows/SDL_xinputjoystick.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/joystick/windows/SDL_xinputjoystick.c rename to 3rd_party/sdl-2.0.20/src/joystick/windows/SDL_xinputjoystick.c diff --git a/code/3rd_party/sdl-2.0.20/src/joystick/windows/SDL_xinputjoystick_c.h b/3rd_party/sdl-2.0.20/src/joystick/windows/SDL_xinputjoystick_c.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/joystick/windows/SDL_xinputjoystick_c.h rename to 3rd_party/sdl-2.0.20/src/joystick/windows/SDL_xinputjoystick_c.h diff --git a/code/3rd_party/sdl-2.0.20/src/libm/e_atan2.c b/3rd_party/sdl-2.0.20/src/libm/e_atan2.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/libm/e_atan2.c rename to 3rd_party/sdl-2.0.20/src/libm/e_atan2.c diff --git a/code/3rd_party/sdl-2.0.20/src/libm/e_exp.c b/3rd_party/sdl-2.0.20/src/libm/e_exp.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/libm/e_exp.c rename to 3rd_party/sdl-2.0.20/src/libm/e_exp.c diff --git a/code/3rd_party/sdl-2.0.20/src/libm/e_fmod.c b/3rd_party/sdl-2.0.20/src/libm/e_fmod.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/libm/e_fmod.c rename to 3rd_party/sdl-2.0.20/src/libm/e_fmod.c diff --git a/code/3rd_party/sdl-2.0.20/src/libm/e_log.c b/3rd_party/sdl-2.0.20/src/libm/e_log.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/libm/e_log.c rename to 3rd_party/sdl-2.0.20/src/libm/e_log.c diff --git a/code/3rd_party/sdl-2.0.20/src/libm/e_log10.c b/3rd_party/sdl-2.0.20/src/libm/e_log10.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/libm/e_log10.c rename to 3rd_party/sdl-2.0.20/src/libm/e_log10.c diff --git a/code/3rd_party/sdl-2.0.20/src/libm/e_pow.c b/3rd_party/sdl-2.0.20/src/libm/e_pow.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/libm/e_pow.c rename to 3rd_party/sdl-2.0.20/src/libm/e_pow.c diff --git a/code/3rd_party/sdl-2.0.20/src/libm/e_rem_pio2.c b/3rd_party/sdl-2.0.20/src/libm/e_rem_pio2.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/libm/e_rem_pio2.c rename to 3rd_party/sdl-2.0.20/src/libm/e_rem_pio2.c diff --git a/code/3rd_party/sdl-2.0.20/src/libm/e_sqrt.c b/3rd_party/sdl-2.0.20/src/libm/e_sqrt.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/libm/e_sqrt.c rename to 3rd_party/sdl-2.0.20/src/libm/e_sqrt.c diff --git a/code/3rd_party/sdl-2.0.20/src/libm/k_cos.c b/3rd_party/sdl-2.0.20/src/libm/k_cos.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/libm/k_cos.c rename to 3rd_party/sdl-2.0.20/src/libm/k_cos.c diff --git a/code/3rd_party/sdl-2.0.20/src/libm/k_rem_pio2.c b/3rd_party/sdl-2.0.20/src/libm/k_rem_pio2.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/libm/k_rem_pio2.c rename to 3rd_party/sdl-2.0.20/src/libm/k_rem_pio2.c diff --git a/code/3rd_party/sdl-2.0.20/src/libm/k_sin.c b/3rd_party/sdl-2.0.20/src/libm/k_sin.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/libm/k_sin.c rename to 3rd_party/sdl-2.0.20/src/libm/k_sin.c diff --git a/code/3rd_party/sdl-2.0.20/src/libm/k_tan.c b/3rd_party/sdl-2.0.20/src/libm/k_tan.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/libm/k_tan.c rename to 3rd_party/sdl-2.0.20/src/libm/k_tan.c diff --git a/code/3rd_party/sdl-2.0.20/src/libm/math_libm.h b/3rd_party/sdl-2.0.20/src/libm/math_libm.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/libm/math_libm.h rename to 3rd_party/sdl-2.0.20/src/libm/math_libm.h diff --git a/code/3rd_party/sdl-2.0.20/src/libm/math_private.h b/3rd_party/sdl-2.0.20/src/libm/math_private.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/libm/math_private.h rename to 3rd_party/sdl-2.0.20/src/libm/math_private.h diff --git a/code/3rd_party/sdl-2.0.20/src/libm/s_atan.c b/3rd_party/sdl-2.0.20/src/libm/s_atan.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/libm/s_atan.c rename to 3rd_party/sdl-2.0.20/src/libm/s_atan.c diff --git a/code/3rd_party/sdl-2.0.20/src/libm/s_copysign.c b/3rd_party/sdl-2.0.20/src/libm/s_copysign.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/libm/s_copysign.c rename to 3rd_party/sdl-2.0.20/src/libm/s_copysign.c diff --git a/code/3rd_party/sdl-2.0.20/src/libm/s_cos.c b/3rd_party/sdl-2.0.20/src/libm/s_cos.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/libm/s_cos.c rename to 3rd_party/sdl-2.0.20/src/libm/s_cos.c diff --git a/code/3rd_party/sdl-2.0.20/src/libm/s_fabs.c b/3rd_party/sdl-2.0.20/src/libm/s_fabs.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/libm/s_fabs.c rename to 3rd_party/sdl-2.0.20/src/libm/s_fabs.c diff --git a/code/3rd_party/sdl-2.0.20/src/libm/s_floor.c b/3rd_party/sdl-2.0.20/src/libm/s_floor.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/libm/s_floor.c rename to 3rd_party/sdl-2.0.20/src/libm/s_floor.c diff --git a/code/3rd_party/sdl-2.0.20/src/libm/s_scalbn.c b/3rd_party/sdl-2.0.20/src/libm/s_scalbn.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/libm/s_scalbn.c rename to 3rd_party/sdl-2.0.20/src/libm/s_scalbn.c diff --git a/code/3rd_party/sdl-2.0.20/src/libm/s_sin.c b/3rd_party/sdl-2.0.20/src/libm/s_sin.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/libm/s_sin.c rename to 3rd_party/sdl-2.0.20/src/libm/s_sin.c diff --git a/code/3rd_party/sdl-2.0.20/src/libm/s_tan.c b/3rd_party/sdl-2.0.20/src/libm/s_tan.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/libm/s_tan.c rename to 3rd_party/sdl-2.0.20/src/libm/s_tan.c diff --git a/code/3rd_party/sdl-2.0.20/src/loadso/dlopen/SDL_sysloadso.c b/3rd_party/sdl-2.0.20/src/loadso/dlopen/SDL_sysloadso.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/loadso/dlopen/SDL_sysloadso.c rename to 3rd_party/sdl-2.0.20/src/loadso/dlopen/SDL_sysloadso.c diff --git a/code/3rd_party/sdl-2.0.20/src/loadso/dummy/SDL_sysloadso.c b/3rd_party/sdl-2.0.20/src/loadso/dummy/SDL_sysloadso.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/loadso/dummy/SDL_sysloadso.c rename to 3rd_party/sdl-2.0.20/src/loadso/dummy/SDL_sysloadso.c diff --git a/code/3rd_party/sdl-2.0.20/src/loadso/os2/SDL_sysloadso.c b/3rd_party/sdl-2.0.20/src/loadso/os2/SDL_sysloadso.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/loadso/os2/SDL_sysloadso.c rename to 3rd_party/sdl-2.0.20/src/loadso/os2/SDL_sysloadso.c diff --git a/code/3rd_party/sdl-2.0.20/src/loadso/windows/SDL_sysloadso.c b/3rd_party/sdl-2.0.20/src/loadso/windows/SDL_sysloadso.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/loadso/windows/SDL_sysloadso.c rename to 3rd_party/sdl-2.0.20/src/loadso/windows/SDL_sysloadso.c diff --git a/code/3rd_party/sdl-2.0.20/src/locale/SDL_locale.c b/3rd_party/sdl-2.0.20/src/locale/SDL_locale.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/locale/SDL_locale.c rename to 3rd_party/sdl-2.0.20/src/locale/SDL_locale.c diff --git a/code/3rd_party/sdl-2.0.20/src/locale/SDL_syslocale.h b/3rd_party/sdl-2.0.20/src/locale/SDL_syslocale.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/locale/SDL_syslocale.h rename to 3rd_party/sdl-2.0.20/src/locale/SDL_syslocale.h diff --git a/code/3rd_party/sdl-2.0.20/src/locale/android/SDL_syslocale.c b/3rd_party/sdl-2.0.20/src/locale/android/SDL_syslocale.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/locale/android/SDL_syslocale.c rename to 3rd_party/sdl-2.0.20/src/locale/android/SDL_syslocale.c diff --git a/code/3rd_party/sdl-2.0.20/src/locale/dummy/SDL_syslocale.c b/3rd_party/sdl-2.0.20/src/locale/dummy/SDL_syslocale.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/locale/dummy/SDL_syslocale.c rename to 3rd_party/sdl-2.0.20/src/locale/dummy/SDL_syslocale.c diff --git a/code/3rd_party/sdl-2.0.20/src/locale/emscripten/SDL_syslocale.c b/3rd_party/sdl-2.0.20/src/locale/emscripten/SDL_syslocale.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/locale/emscripten/SDL_syslocale.c rename to 3rd_party/sdl-2.0.20/src/locale/emscripten/SDL_syslocale.c diff --git a/code/3rd_party/sdl-2.0.20/src/locale/haiku/SDL_syslocale.cc b/3rd_party/sdl-2.0.20/src/locale/haiku/SDL_syslocale.cc similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/locale/haiku/SDL_syslocale.cc rename to 3rd_party/sdl-2.0.20/src/locale/haiku/SDL_syslocale.cc diff --git a/code/3rd_party/sdl-2.0.20/src/locale/macosx/SDL_syslocale.m b/3rd_party/sdl-2.0.20/src/locale/macosx/SDL_syslocale.m similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/locale/macosx/SDL_syslocale.m rename to 3rd_party/sdl-2.0.20/src/locale/macosx/SDL_syslocale.m diff --git a/code/3rd_party/sdl-2.0.20/src/locale/unix/SDL_syslocale.c b/3rd_party/sdl-2.0.20/src/locale/unix/SDL_syslocale.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/locale/unix/SDL_syslocale.c rename to 3rd_party/sdl-2.0.20/src/locale/unix/SDL_syslocale.c diff --git a/code/3rd_party/sdl-2.0.20/src/locale/windows/SDL_syslocale.c b/3rd_party/sdl-2.0.20/src/locale/windows/SDL_syslocale.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/locale/windows/SDL_syslocale.c rename to 3rd_party/sdl-2.0.20/src/locale/windows/SDL_syslocale.c diff --git a/code/3rd_party/sdl-2.0.20/src/locale/winrt/SDL_syslocale.c b/3rd_party/sdl-2.0.20/src/locale/winrt/SDL_syslocale.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/locale/winrt/SDL_syslocale.c rename to 3rd_party/sdl-2.0.20/src/locale/winrt/SDL_syslocale.c diff --git a/code/3rd_party/sdl-2.0.20/src/main/android/SDL_android_main.c b/3rd_party/sdl-2.0.20/src/main/android/SDL_android_main.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/main/android/SDL_android_main.c rename to 3rd_party/sdl-2.0.20/src/main/android/SDL_android_main.c diff --git a/code/3rd_party/sdl-2.0.20/src/main/dummy/SDL_dummy_main.c b/3rd_party/sdl-2.0.20/src/main/dummy/SDL_dummy_main.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/main/dummy/SDL_dummy_main.c rename to 3rd_party/sdl-2.0.20/src/main/dummy/SDL_dummy_main.c diff --git a/code/3rd_party/sdl-2.0.20/src/main/haiku/SDL_BApp.h b/3rd_party/sdl-2.0.20/src/main/haiku/SDL_BApp.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/main/haiku/SDL_BApp.h rename to 3rd_party/sdl-2.0.20/src/main/haiku/SDL_BApp.h diff --git a/code/3rd_party/sdl-2.0.20/src/main/haiku/SDL_BeApp.cc b/3rd_party/sdl-2.0.20/src/main/haiku/SDL_BeApp.cc similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/main/haiku/SDL_BeApp.cc rename to 3rd_party/sdl-2.0.20/src/main/haiku/SDL_BeApp.cc diff --git a/code/3rd_party/sdl-2.0.20/src/main/haiku/SDL_BeApp.h b/3rd_party/sdl-2.0.20/src/main/haiku/SDL_BeApp.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/main/haiku/SDL_BeApp.h rename to 3rd_party/sdl-2.0.20/src/main/haiku/SDL_BeApp.h diff --git a/code/3rd_party/sdl-2.0.20/src/main/nacl/SDL_nacl_main.c b/3rd_party/sdl-2.0.20/src/main/nacl/SDL_nacl_main.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/main/nacl/SDL_nacl_main.c rename to 3rd_party/sdl-2.0.20/src/main/nacl/SDL_nacl_main.c diff --git a/code/3rd_party/sdl-2.0.20/src/main/psp/SDL_psp_main.c b/3rd_party/sdl-2.0.20/src/main/psp/SDL_psp_main.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/main/psp/SDL_psp_main.c rename to 3rd_party/sdl-2.0.20/src/main/psp/SDL_psp_main.c diff --git a/code/3rd_party/sdl-2.0.20/src/main/uikit/SDL_uikit_main.c b/3rd_party/sdl-2.0.20/src/main/uikit/SDL_uikit_main.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/main/uikit/SDL_uikit_main.c rename to 3rd_party/sdl-2.0.20/src/main/uikit/SDL_uikit_main.c diff --git a/code/3rd_party/sdl-2.0.20/src/main/windows/SDL_windows_main.c b/3rd_party/sdl-2.0.20/src/main/windows/SDL_windows_main.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/main/windows/SDL_windows_main.c rename to 3rd_party/sdl-2.0.20/src/main/windows/SDL_windows_main.c diff --git a/code/3rd_party/sdl-2.0.20/src/main/windows/version.rc b/3rd_party/sdl-2.0.20/src/main/windows/version.rc similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/main/windows/version.rc rename to 3rd_party/sdl-2.0.20/src/main/windows/version.rc diff --git a/code/3rd_party/sdl-2.0.20/src/main/winrt/SDL2-WinRTResource_BlankCursor.cur b/3rd_party/sdl-2.0.20/src/main/winrt/SDL2-WinRTResource_BlankCursor.cur similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/main/winrt/SDL2-WinRTResource_BlankCursor.cur rename to 3rd_party/sdl-2.0.20/src/main/winrt/SDL2-WinRTResource_BlankCursor.cur diff --git a/code/3rd_party/sdl-2.0.20/src/main/winrt/SDL2-WinRTResources.rc b/3rd_party/sdl-2.0.20/src/main/winrt/SDL2-WinRTResources.rc similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/main/winrt/SDL2-WinRTResources.rc rename to 3rd_party/sdl-2.0.20/src/main/winrt/SDL2-WinRTResources.rc diff --git a/code/3rd_party/sdl-2.0.20/src/main/winrt/SDL_winrt_main_NonXAML.cpp b/3rd_party/sdl-2.0.20/src/main/winrt/SDL_winrt_main_NonXAML.cpp similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/main/winrt/SDL_winrt_main_NonXAML.cpp rename to 3rd_party/sdl-2.0.20/src/main/winrt/SDL_winrt_main_NonXAML.cpp diff --git a/code/3rd_party/sdl-2.0.20/src/misc/SDL_sysurl.h b/3rd_party/sdl-2.0.20/src/misc/SDL_sysurl.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/misc/SDL_sysurl.h rename to 3rd_party/sdl-2.0.20/src/misc/SDL_sysurl.h diff --git a/code/3rd_party/sdl-2.0.20/src/misc/SDL_url.c b/3rd_party/sdl-2.0.20/src/misc/SDL_url.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/misc/SDL_url.c rename to 3rd_party/sdl-2.0.20/src/misc/SDL_url.c diff --git a/code/3rd_party/sdl-2.0.20/src/misc/android/SDL_sysurl.c b/3rd_party/sdl-2.0.20/src/misc/android/SDL_sysurl.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/misc/android/SDL_sysurl.c rename to 3rd_party/sdl-2.0.20/src/misc/android/SDL_sysurl.c diff --git a/code/3rd_party/sdl-2.0.20/src/misc/dummy/SDL_sysurl.c b/3rd_party/sdl-2.0.20/src/misc/dummy/SDL_sysurl.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/misc/dummy/SDL_sysurl.c rename to 3rd_party/sdl-2.0.20/src/misc/dummy/SDL_sysurl.c diff --git a/code/3rd_party/sdl-2.0.20/src/misc/haiku/SDL_sysurl.cc b/3rd_party/sdl-2.0.20/src/misc/haiku/SDL_sysurl.cc similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/misc/haiku/SDL_sysurl.cc rename to 3rd_party/sdl-2.0.20/src/misc/haiku/SDL_sysurl.cc diff --git a/code/3rd_party/sdl-2.0.20/src/misc/ios/SDL_sysurl.m b/3rd_party/sdl-2.0.20/src/misc/ios/SDL_sysurl.m similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/misc/ios/SDL_sysurl.m rename to 3rd_party/sdl-2.0.20/src/misc/ios/SDL_sysurl.m diff --git a/code/3rd_party/sdl-2.0.20/src/misc/macosx/SDL_sysurl.m b/3rd_party/sdl-2.0.20/src/misc/macosx/SDL_sysurl.m similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/misc/macosx/SDL_sysurl.m rename to 3rd_party/sdl-2.0.20/src/misc/macosx/SDL_sysurl.m diff --git a/code/3rd_party/sdl-2.0.20/src/misc/riscos/SDL_sysurl.c b/3rd_party/sdl-2.0.20/src/misc/riscos/SDL_sysurl.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/misc/riscos/SDL_sysurl.c rename to 3rd_party/sdl-2.0.20/src/misc/riscos/SDL_sysurl.c diff --git a/code/3rd_party/sdl-2.0.20/src/misc/unix/SDL_sysurl.c b/3rd_party/sdl-2.0.20/src/misc/unix/SDL_sysurl.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/misc/unix/SDL_sysurl.c rename to 3rd_party/sdl-2.0.20/src/misc/unix/SDL_sysurl.c diff --git a/code/3rd_party/sdl-2.0.20/src/misc/vita/SDL_sysurl.c b/3rd_party/sdl-2.0.20/src/misc/vita/SDL_sysurl.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/misc/vita/SDL_sysurl.c rename to 3rd_party/sdl-2.0.20/src/misc/vita/SDL_sysurl.c diff --git a/code/3rd_party/sdl-2.0.20/src/misc/windows/SDL_sysurl.c b/3rd_party/sdl-2.0.20/src/misc/windows/SDL_sysurl.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/misc/windows/SDL_sysurl.c rename to 3rd_party/sdl-2.0.20/src/misc/windows/SDL_sysurl.c diff --git a/code/3rd_party/sdl-2.0.20/src/misc/winrt/SDL_sysurl.cpp b/3rd_party/sdl-2.0.20/src/misc/winrt/SDL_sysurl.cpp similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/misc/winrt/SDL_sysurl.cpp rename to 3rd_party/sdl-2.0.20/src/misc/winrt/SDL_sysurl.cpp diff --git a/code/3rd_party/sdl-2.0.20/src/power/SDL_power.c b/3rd_party/sdl-2.0.20/src/power/SDL_power.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/power/SDL_power.c rename to 3rd_party/sdl-2.0.20/src/power/SDL_power.c diff --git a/code/3rd_party/sdl-2.0.20/src/power/SDL_syspower.h b/3rd_party/sdl-2.0.20/src/power/SDL_syspower.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/power/SDL_syspower.h rename to 3rd_party/sdl-2.0.20/src/power/SDL_syspower.h diff --git a/code/3rd_party/sdl-2.0.20/src/power/android/SDL_syspower.c b/3rd_party/sdl-2.0.20/src/power/android/SDL_syspower.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/power/android/SDL_syspower.c rename to 3rd_party/sdl-2.0.20/src/power/android/SDL_syspower.c diff --git a/code/3rd_party/sdl-2.0.20/src/power/emscripten/SDL_syspower.c b/3rd_party/sdl-2.0.20/src/power/emscripten/SDL_syspower.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/power/emscripten/SDL_syspower.c rename to 3rd_party/sdl-2.0.20/src/power/emscripten/SDL_syspower.c diff --git a/code/3rd_party/sdl-2.0.20/src/power/haiku/SDL_syspower.c b/3rd_party/sdl-2.0.20/src/power/haiku/SDL_syspower.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/power/haiku/SDL_syspower.c rename to 3rd_party/sdl-2.0.20/src/power/haiku/SDL_syspower.c diff --git a/code/3rd_party/sdl-2.0.20/src/power/linux/SDL_syspower.c b/3rd_party/sdl-2.0.20/src/power/linux/SDL_syspower.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/power/linux/SDL_syspower.c rename to 3rd_party/sdl-2.0.20/src/power/linux/SDL_syspower.c diff --git a/code/3rd_party/sdl-2.0.20/src/power/macosx/SDL_syspower.c b/3rd_party/sdl-2.0.20/src/power/macosx/SDL_syspower.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/power/macosx/SDL_syspower.c rename to 3rd_party/sdl-2.0.20/src/power/macosx/SDL_syspower.c diff --git a/code/3rd_party/sdl-2.0.20/src/power/psp/SDL_syspower.c b/3rd_party/sdl-2.0.20/src/power/psp/SDL_syspower.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/power/psp/SDL_syspower.c rename to 3rd_party/sdl-2.0.20/src/power/psp/SDL_syspower.c diff --git a/code/3rd_party/sdl-2.0.20/src/power/uikit/SDL_syspower.h b/3rd_party/sdl-2.0.20/src/power/uikit/SDL_syspower.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/power/uikit/SDL_syspower.h rename to 3rd_party/sdl-2.0.20/src/power/uikit/SDL_syspower.h diff --git a/code/3rd_party/sdl-2.0.20/src/power/uikit/SDL_syspower.m b/3rd_party/sdl-2.0.20/src/power/uikit/SDL_syspower.m similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/power/uikit/SDL_syspower.m rename to 3rd_party/sdl-2.0.20/src/power/uikit/SDL_syspower.m diff --git a/code/3rd_party/sdl-2.0.20/src/power/vita/SDL_syspower.c b/3rd_party/sdl-2.0.20/src/power/vita/SDL_syspower.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/power/vita/SDL_syspower.c rename to 3rd_party/sdl-2.0.20/src/power/vita/SDL_syspower.c diff --git a/code/3rd_party/sdl-2.0.20/src/power/windows/SDL_syspower.c b/3rd_party/sdl-2.0.20/src/power/windows/SDL_syspower.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/power/windows/SDL_syspower.c rename to 3rd_party/sdl-2.0.20/src/power/windows/SDL_syspower.c diff --git a/code/3rd_party/sdl-2.0.20/src/power/winrt/SDL_syspower.cpp b/3rd_party/sdl-2.0.20/src/power/winrt/SDL_syspower.cpp similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/power/winrt/SDL_syspower.cpp rename to 3rd_party/sdl-2.0.20/src/power/winrt/SDL_syspower.cpp diff --git a/code/3rd_party/sdl-2.0.20/src/render/SDL_d3dmath.c b/3rd_party/sdl-2.0.20/src/render/SDL_d3dmath.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/render/SDL_d3dmath.c rename to 3rd_party/sdl-2.0.20/src/render/SDL_d3dmath.c diff --git a/code/3rd_party/sdl-2.0.20/src/render/SDL_d3dmath.h b/3rd_party/sdl-2.0.20/src/render/SDL_d3dmath.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/render/SDL_d3dmath.h rename to 3rd_party/sdl-2.0.20/src/render/SDL_d3dmath.h diff --git a/code/3rd_party/sdl-2.0.20/src/render/SDL_render.c b/3rd_party/sdl-2.0.20/src/render/SDL_render.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/render/SDL_render.c rename to 3rd_party/sdl-2.0.20/src/render/SDL_render.c diff --git a/code/3rd_party/sdl-2.0.20/src/render/SDL_sysrender.h b/3rd_party/sdl-2.0.20/src/render/SDL_sysrender.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/render/SDL_sysrender.h rename to 3rd_party/sdl-2.0.20/src/render/SDL_sysrender.h diff --git a/code/3rd_party/sdl-2.0.20/src/render/SDL_yuv_sw.c b/3rd_party/sdl-2.0.20/src/render/SDL_yuv_sw.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/render/SDL_yuv_sw.c rename to 3rd_party/sdl-2.0.20/src/render/SDL_yuv_sw.c diff --git a/code/3rd_party/sdl-2.0.20/src/render/SDL_yuv_sw_c.h b/3rd_party/sdl-2.0.20/src/render/SDL_yuv_sw_c.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/render/SDL_yuv_sw_c.h rename to 3rd_party/sdl-2.0.20/src/render/SDL_yuv_sw_c.h diff --git a/code/3rd_party/sdl-2.0.20/src/render/direct3d/SDL_render_d3d.c b/3rd_party/sdl-2.0.20/src/render/direct3d/SDL_render_d3d.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/render/direct3d/SDL_render_d3d.c rename to 3rd_party/sdl-2.0.20/src/render/direct3d/SDL_render_d3d.c diff --git a/code/3rd_party/sdl-2.0.20/src/render/direct3d/SDL_shaders_d3d.c b/3rd_party/sdl-2.0.20/src/render/direct3d/SDL_shaders_d3d.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/render/direct3d/SDL_shaders_d3d.c rename to 3rd_party/sdl-2.0.20/src/render/direct3d/SDL_shaders_d3d.c diff --git a/code/3rd_party/sdl-2.0.20/src/render/direct3d/SDL_shaders_d3d.h b/3rd_party/sdl-2.0.20/src/render/direct3d/SDL_shaders_d3d.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/render/direct3d/SDL_shaders_d3d.h rename to 3rd_party/sdl-2.0.20/src/render/direct3d/SDL_shaders_d3d.h diff --git a/code/3rd_party/sdl-2.0.20/src/render/direct3d11/SDL_render_d3d11.c b/3rd_party/sdl-2.0.20/src/render/direct3d11/SDL_render_d3d11.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/render/direct3d11/SDL_render_d3d11.c rename to 3rd_party/sdl-2.0.20/src/render/direct3d11/SDL_render_d3d11.c diff --git a/code/3rd_party/sdl-2.0.20/src/render/direct3d11/SDL_render_winrt.cpp b/3rd_party/sdl-2.0.20/src/render/direct3d11/SDL_render_winrt.cpp similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/render/direct3d11/SDL_render_winrt.cpp rename to 3rd_party/sdl-2.0.20/src/render/direct3d11/SDL_render_winrt.cpp diff --git a/code/3rd_party/sdl-2.0.20/src/render/direct3d11/SDL_render_winrt.h b/3rd_party/sdl-2.0.20/src/render/direct3d11/SDL_render_winrt.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/render/direct3d11/SDL_render_winrt.h rename to 3rd_party/sdl-2.0.20/src/render/direct3d11/SDL_render_winrt.h diff --git a/code/3rd_party/sdl-2.0.20/src/render/direct3d11/SDL_shaders_d3d11.c b/3rd_party/sdl-2.0.20/src/render/direct3d11/SDL_shaders_d3d11.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/render/direct3d11/SDL_shaders_d3d11.c rename to 3rd_party/sdl-2.0.20/src/render/direct3d11/SDL_shaders_d3d11.c diff --git a/code/3rd_party/sdl-2.0.20/src/render/direct3d11/SDL_shaders_d3d11.h b/3rd_party/sdl-2.0.20/src/render/direct3d11/SDL_shaders_d3d11.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/render/direct3d11/SDL_shaders_d3d11.h rename to 3rd_party/sdl-2.0.20/src/render/direct3d11/SDL_shaders_d3d11.h diff --git a/code/3rd_party/sdl-2.0.20/src/render/metal/SDL_render_metal.m b/3rd_party/sdl-2.0.20/src/render/metal/SDL_render_metal.m similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/render/metal/SDL_render_metal.m rename to 3rd_party/sdl-2.0.20/src/render/metal/SDL_render_metal.m diff --git a/code/3rd_party/sdl-2.0.20/src/render/metal/SDL_shaders_metal.metal b/3rd_party/sdl-2.0.20/src/render/metal/SDL_shaders_metal.metal similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/render/metal/SDL_shaders_metal.metal rename to 3rd_party/sdl-2.0.20/src/render/metal/SDL_shaders_metal.metal diff --git a/code/3rd_party/sdl-2.0.20/src/render/metal/SDL_shaders_metal_ios.h b/3rd_party/sdl-2.0.20/src/render/metal/SDL_shaders_metal_ios.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/render/metal/SDL_shaders_metal_ios.h rename to 3rd_party/sdl-2.0.20/src/render/metal/SDL_shaders_metal_ios.h diff --git a/code/3rd_party/sdl-2.0.20/src/render/metal/SDL_shaders_metal_iphonesimulator.h b/3rd_party/sdl-2.0.20/src/render/metal/SDL_shaders_metal_iphonesimulator.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/render/metal/SDL_shaders_metal_iphonesimulator.h rename to 3rd_party/sdl-2.0.20/src/render/metal/SDL_shaders_metal_iphonesimulator.h diff --git a/code/3rd_party/sdl-2.0.20/src/render/metal/SDL_shaders_metal_osx.h b/3rd_party/sdl-2.0.20/src/render/metal/SDL_shaders_metal_osx.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/render/metal/SDL_shaders_metal_osx.h rename to 3rd_party/sdl-2.0.20/src/render/metal/SDL_shaders_metal_osx.h diff --git a/code/3rd_party/sdl-2.0.20/src/render/metal/SDL_shaders_metal_tvos.h b/3rd_party/sdl-2.0.20/src/render/metal/SDL_shaders_metal_tvos.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/render/metal/SDL_shaders_metal_tvos.h rename to 3rd_party/sdl-2.0.20/src/render/metal/SDL_shaders_metal_tvos.h diff --git a/code/3rd_party/sdl-2.0.20/src/render/metal/SDL_shaders_metal_tvsimulator.h b/3rd_party/sdl-2.0.20/src/render/metal/SDL_shaders_metal_tvsimulator.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/render/metal/SDL_shaders_metal_tvsimulator.h rename to 3rd_party/sdl-2.0.20/src/render/metal/SDL_shaders_metal_tvsimulator.h diff --git a/code/3rd_party/sdl-2.0.20/src/render/metal/build-metal-shaders.sh b/3rd_party/sdl-2.0.20/src/render/metal/build-metal-shaders.sh similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/render/metal/build-metal-shaders.sh rename to 3rd_party/sdl-2.0.20/src/render/metal/build-metal-shaders.sh diff --git a/code/3rd_party/sdl-2.0.20/src/render/opengl/SDL_glfuncs.h b/3rd_party/sdl-2.0.20/src/render/opengl/SDL_glfuncs.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/render/opengl/SDL_glfuncs.h rename to 3rd_party/sdl-2.0.20/src/render/opengl/SDL_glfuncs.h diff --git a/code/3rd_party/sdl-2.0.20/src/render/opengl/SDL_render_gl.c b/3rd_party/sdl-2.0.20/src/render/opengl/SDL_render_gl.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/render/opengl/SDL_render_gl.c rename to 3rd_party/sdl-2.0.20/src/render/opengl/SDL_render_gl.c diff --git a/code/3rd_party/sdl-2.0.20/src/render/opengl/SDL_shaders_gl.c b/3rd_party/sdl-2.0.20/src/render/opengl/SDL_shaders_gl.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/render/opengl/SDL_shaders_gl.c rename to 3rd_party/sdl-2.0.20/src/render/opengl/SDL_shaders_gl.c diff --git a/code/3rd_party/sdl-2.0.20/src/render/opengl/SDL_shaders_gl.h b/3rd_party/sdl-2.0.20/src/render/opengl/SDL_shaders_gl.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/render/opengl/SDL_shaders_gl.h rename to 3rd_party/sdl-2.0.20/src/render/opengl/SDL_shaders_gl.h diff --git a/code/3rd_party/sdl-2.0.20/src/render/opengles/SDL_glesfuncs.h b/3rd_party/sdl-2.0.20/src/render/opengles/SDL_glesfuncs.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/render/opengles/SDL_glesfuncs.h rename to 3rd_party/sdl-2.0.20/src/render/opengles/SDL_glesfuncs.h diff --git a/code/3rd_party/sdl-2.0.20/src/render/opengles/SDL_render_gles.c b/3rd_party/sdl-2.0.20/src/render/opengles/SDL_render_gles.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/render/opengles/SDL_render_gles.c rename to 3rd_party/sdl-2.0.20/src/render/opengles/SDL_render_gles.c diff --git a/code/3rd_party/sdl-2.0.20/src/render/opengles2/SDL_gles2funcs.h b/3rd_party/sdl-2.0.20/src/render/opengles2/SDL_gles2funcs.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/render/opengles2/SDL_gles2funcs.h rename to 3rd_party/sdl-2.0.20/src/render/opengles2/SDL_gles2funcs.h diff --git a/code/3rd_party/sdl-2.0.20/src/render/opengles2/SDL_render_gles2.c b/3rd_party/sdl-2.0.20/src/render/opengles2/SDL_render_gles2.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/render/opengles2/SDL_render_gles2.c rename to 3rd_party/sdl-2.0.20/src/render/opengles2/SDL_render_gles2.c diff --git a/code/3rd_party/sdl-2.0.20/src/render/opengles2/SDL_shaders_gles2.c b/3rd_party/sdl-2.0.20/src/render/opengles2/SDL_shaders_gles2.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/render/opengles2/SDL_shaders_gles2.c rename to 3rd_party/sdl-2.0.20/src/render/opengles2/SDL_shaders_gles2.c diff --git a/code/3rd_party/sdl-2.0.20/src/render/opengles2/SDL_shaders_gles2.h b/3rd_party/sdl-2.0.20/src/render/opengles2/SDL_shaders_gles2.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/render/opengles2/SDL_shaders_gles2.h rename to 3rd_party/sdl-2.0.20/src/render/opengles2/SDL_shaders_gles2.h diff --git a/code/3rd_party/sdl-2.0.20/src/render/psp/SDL_render_psp.c b/3rd_party/sdl-2.0.20/src/render/psp/SDL_render_psp.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/render/psp/SDL_render_psp.c rename to 3rd_party/sdl-2.0.20/src/render/psp/SDL_render_psp.c diff --git a/code/3rd_party/sdl-2.0.20/src/render/software/SDL_blendfillrect.c b/3rd_party/sdl-2.0.20/src/render/software/SDL_blendfillrect.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/render/software/SDL_blendfillrect.c rename to 3rd_party/sdl-2.0.20/src/render/software/SDL_blendfillrect.c diff --git a/code/3rd_party/sdl-2.0.20/src/render/software/SDL_blendfillrect.h b/3rd_party/sdl-2.0.20/src/render/software/SDL_blendfillrect.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/render/software/SDL_blendfillrect.h rename to 3rd_party/sdl-2.0.20/src/render/software/SDL_blendfillrect.h diff --git a/code/3rd_party/sdl-2.0.20/src/render/software/SDL_blendline.c b/3rd_party/sdl-2.0.20/src/render/software/SDL_blendline.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/render/software/SDL_blendline.c rename to 3rd_party/sdl-2.0.20/src/render/software/SDL_blendline.c diff --git a/code/3rd_party/sdl-2.0.20/src/render/software/SDL_blendline.h b/3rd_party/sdl-2.0.20/src/render/software/SDL_blendline.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/render/software/SDL_blendline.h rename to 3rd_party/sdl-2.0.20/src/render/software/SDL_blendline.h diff --git a/code/3rd_party/sdl-2.0.20/src/render/software/SDL_blendpoint.c b/3rd_party/sdl-2.0.20/src/render/software/SDL_blendpoint.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/render/software/SDL_blendpoint.c rename to 3rd_party/sdl-2.0.20/src/render/software/SDL_blendpoint.c diff --git a/code/3rd_party/sdl-2.0.20/src/render/software/SDL_blendpoint.h b/3rd_party/sdl-2.0.20/src/render/software/SDL_blendpoint.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/render/software/SDL_blendpoint.h rename to 3rd_party/sdl-2.0.20/src/render/software/SDL_blendpoint.h diff --git a/code/3rd_party/sdl-2.0.20/src/render/software/SDL_draw.h b/3rd_party/sdl-2.0.20/src/render/software/SDL_draw.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/render/software/SDL_draw.h rename to 3rd_party/sdl-2.0.20/src/render/software/SDL_draw.h diff --git a/code/3rd_party/sdl-2.0.20/src/render/software/SDL_drawline.c b/3rd_party/sdl-2.0.20/src/render/software/SDL_drawline.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/render/software/SDL_drawline.c rename to 3rd_party/sdl-2.0.20/src/render/software/SDL_drawline.c diff --git a/code/3rd_party/sdl-2.0.20/src/render/software/SDL_drawline.h b/3rd_party/sdl-2.0.20/src/render/software/SDL_drawline.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/render/software/SDL_drawline.h rename to 3rd_party/sdl-2.0.20/src/render/software/SDL_drawline.h diff --git a/code/3rd_party/sdl-2.0.20/src/render/software/SDL_drawpoint.c b/3rd_party/sdl-2.0.20/src/render/software/SDL_drawpoint.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/render/software/SDL_drawpoint.c rename to 3rd_party/sdl-2.0.20/src/render/software/SDL_drawpoint.c diff --git a/code/3rd_party/sdl-2.0.20/src/render/software/SDL_drawpoint.h b/3rd_party/sdl-2.0.20/src/render/software/SDL_drawpoint.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/render/software/SDL_drawpoint.h rename to 3rd_party/sdl-2.0.20/src/render/software/SDL_drawpoint.h diff --git a/code/3rd_party/sdl-2.0.20/src/render/software/SDL_render_sw.c b/3rd_party/sdl-2.0.20/src/render/software/SDL_render_sw.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/render/software/SDL_render_sw.c rename to 3rd_party/sdl-2.0.20/src/render/software/SDL_render_sw.c diff --git a/code/3rd_party/sdl-2.0.20/src/render/software/SDL_render_sw_c.h b/3rd_party/sdl-2.0.20/src/render/software/SDL_render_sw_c.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/render/software/SDL_render_sw_c.h rename to 3rd_party/sdl-2.0.20/src/render/software/SDL_render_sw_c.h diff --git a/code/3rd_party/sdl-2.0.20/src/render/software/SDL_rotate.c b/3rd_party/sdl-2.0.20/src/render/software/SDL_rotate.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/render/software/SDL_rotate.c rename to 3rd_party/sdl-2.0.20/src/render/software/SDL_rotate.c diff --git a/code/3rd_party/sdl-2.0.20/src/render/software/SDL_rotate.h b/3rd_party/sdl-2.0.20/src/render/software/SDL_rotate.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/render/software/SDL_rotate.h rename to 3rd_party/sdl-2.0.20/src/render/software/SDL_rotate.h diff --git a/code/3rd_party/sdl-2.0.20/src/render/software/SDL_triangle.c b/3rd_party/sdl-2.0.20/src/render/software/SDL_triangle.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/render/software/SDL_triangle.c rename to 3rd_party/sdl-2.0.20/src/render/software/SDL_triangle.c diff --git a/code/3rd_party/sdl-2.0.20/src/render/software/SDL_triangle.h b/3rd_party/sdl-2.0.20/src/render/software/SDL_triangle.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/render/software/SDL_triangle.h rename to 3rd_party/sdl-2.0.20/src/render/software/SDL_triangle.h diff --git a/code/3rd_party/sdl-2.0.20/src/render/vitagxm/SDL_render_vita_gxm.c b/3rd_party/sdl-2.0.20/src/render/vitagxm/SDL_render_vita_gxm.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/render/vitagxm/SDL_render_vita_gxm.c rename to 3rd_party/sdl-2.0.20/src/render/vitagxm/SDL_render_vita_gxm.c diff --git a/code/3rd_party/sdl-2.0.20/src/render/vitagxm/SDL_render_vita_gxm_memory.c b/3rd_party/sdl-2.0.20/src/render/vitagxm/SDL_render_vita_gxm_memory.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/render/vitagxm/SDL_render_vita_gxm_memory.c rename to 3rd_party/sdl-2.0.20/src/render/vitagxm/SDL_render_vita_gxm_memory.c diff --git a/code/3rd_party/sdl-2.0.20/src/render/vitagxm/SDL_render_vita_gxm_memory.h b/3rd_party/sdl-2.0.20/src/render/vitagxm/SDL_render_vita_gxm_memory.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/render/vitagxm/SDL_render_vita_gxm_memory.h rename to 3rd_party/sdl-2.0.20/src/render/vitagxm/SDL_render_vita_gxm_memory.h diff --git a/code/3rd_party/sdl-2.0.20/src/render/vitagxm/SDL_render_vita_gxm_shaders.h b/3rd_party/sdl-2.0.20/src/render/vitagxm/SDL_render_vita_gxm_shaders.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/render/vitagxm/SDL_render_vita_gxm_shaders.h rename to 3rd_party/sdl-2.0.20/src/render/vitagxm/SDL_render_vita_gxm_shaders.h diff --git a/code/3rd_party/sdl-2.0.20/src/render/vitagxm/SDL_render_vita_gxm_tools.c b/3rd_party/sdl-2.0.20/src/render/vitagxm/SDL_render_vita_gxm_tools.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/render/vitagxm/SDL_render_vita_gxm_tools.c rename to 3rd_party/sdl-2.0.20/src/render/vitagxm/SDL_render_vita_gxm_tools.c diff --git a/code/3rd_party/sdl-2.0.20/src/render/vitagxm/SDL_render_vita_gxm_tools.h b/3rd_party/sdl-2.0.20/src/render/vitagxm/SDL_render_vita_gxm_tools.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/render/vitagxm/SDL_render_vita_gxm_tools.h rename to 3rd_party/sdl-2.0.20/src/render/vitagxm/SDL_render_vita_gxm_tools.h diff --git a/code/3rd_party/sdl-2.0.20/src/render/vitagxm/SDL_render_vita_gxm_types.h b/3rd_party/sdl-2.0.20/src/render/vitagxm/SDL_render_vita_gxm_types.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/render/vitagxm/SDL_render_vita_gxm_types.h rename to 3rd_party/sdl-2.0.20/src/render/vitagxm/SDL_render_vita_gxm_types.h diff --git a/code/3rd_party/sdl-2.0.20/src/render/vitagxm/shader_src/clear_f.cg b/3rd_party/sdl-2.0.20/src/render/vitagxm/shader_src/clear_f.cg similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/render/vitagxm/shader_src/clear_f.cg rename to 3rd_party/sdl-2.0.20/src/render/vitagxm/shader_src/clear_f.cg diff --git a/code/3rd_party/sdl-2.0.20/src/render/vitagxm/shader_src/clear_v.cg b/3rd_party/sdl-2.0.20/src/render/vitagxm/shader_src/clear_v.cg similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/render/vitagxm/shader_src/clear_v.cg rename to 3rd_party/sdl-2.0.20/src/render/vitagxm/shader_src/clear_v.cg diff --git a/code/3rd_party/sdl-2.0.20/src/render/vitagxm/shader_src/color_f.cg b/3rd_party/sdl-2.0.20/src/render/vitagxm/shader_src/color_f.cg similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/render/vitagxm/shader_src/color_f.cg rename to 3rd_party/sdl-2.0.20/src/render/vitagxm/shader_src/color_f.cg diff --git a/code/3rd_party/sdl-2.0.20/src/render/vitagxm/shader_src/color_v.cg b/3rd_party/sdl-2.0.20/src/render/vitagxm/shader_src/color_v.cg similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/render/vitagxm/shader_src/color_v.cg rename to 3rd_party/sdl-2.0.20/src/render/vitagxm/shader_src/color_v.cg diff --git a/code/3rd_party/sdl-2.0.20/src/render/vitagxm/shader_src/texture_f.cg b/3rd_party/sdl-2.0.20/src/render/vitagxm/shader_src/texture_f.cg similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/render/vitagxm/shader_src/texture_f.cg rename to 3rd_party/sdl-2.0.20/src/render/vitagxm/shader_src/texture_f.cg diff --git a/code/3rd_party/sdl-2.0.20/src/render/vitagxm/shader_src/texture_v.cg b/3rd_party/sdl-2.0.20/src/render/vitagxm/shader_src/texture_v.cg similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/render/vitagxm/shader_src/texture_v.cg rename to 3rd_party/sdl-2.0.20/src/render/vitagxm/shader_src/texture_v.cg diff --git a/code/3rd_party/sdl-2.0.20/src/sensor/SDL_sensor.c b/3rd_party/sdl-2.0.20/src/sensor/SDL_sensor.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/sensor/SDL_sensor.c rename to 3rd_party/sdl-2.0.20/src/sensor/SDL_sensor.c diff --git a/code/3rd_party/sdl-2.0.20/src/sensor/SDL_sensor_c.h b/3rd_party/sdl-2.0.20/src/sensor/SDL_sensor_c.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/sensor/SDL_sensor_c.h rename to 3rd_party/sdl-2.0.20/src/sensor/SDL_sensor_c.h diff --git a/code/3rd_party/sdl-2.0.20/src/sensor/SDL_syssensor.h b/3rd_party/sdl-2.0.20/src/sensor/SDL_syssensor.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/sensor/SDL_syssensor.h rename to 3rd_party/sdl-2.0.20/src/sensor/SDL_syssensor.h diff --git a/code/3rd_party/sdl-2.0.20/src/sensor/android/SDL_androidsensor.c b/3rd_party/sdl-2.0.20/src/sensor/android/SDL_androidsensor.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/sensor/android/SDL_androidsensor.c rename to 3rd_party/sdl-2.0.20/src/sensor/android/SDL_androidsensor.c diff --git a/code/3rd_party/sdl-2.0.20/src/sensor/android/SDL_androidsensor.h b/3rd_party/sdl-2.0.20/src/sensor/android/SDL_androidsensor.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/sensor/android/SDL_androidsensor.h rename to 3rd_party/sdl-2.0.20/src/sensor/android/SDL_androidsensor.h diff --git a/code/3rd_party/sdl-2.0.20/src/sensor/coremotion/SDL_coremotionsensor.h b/3rd_party/sdl-2.0.20/src/sensor/coremotion/SDL_coremotionsensor.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/sensor/coremotion/SDL_coremotionsensor.h rename to 3rd_party/sdl-2.0.20/src/sensor/coremotion/SDL_coremotionsensor.h diff --git a/code/3rd_party/sdl-2.0.20/src/sensor/coremotion/SDL_coremotionsensor.m b/3rd_party/sdl-2.0.20/src/sensor/coremotion/SDL_coremotionsensor.m similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/sensor/coremotion/SDL_coremotionsensor.m rename to 3rd_party/sdl-2.0.20/src/sensor/coremotion/SDL_coremotionsensor.m diff --git a/code/3rd_party/sdl-2.0.20/src/sensor/dummy/SDL_dummysensor.c b/3rd_party/sdl-2.0.20/src/sensor/dummy/SDL_dummysensor.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/sensor/dummy/SDL_dummysensor.c rename to 3rd_party/sdl-2.0.20/src/sensor/dummy/SDL_dummysensor.c diff --git a/code/3rd_party/sdl-2.0.20/src/sensor/dummy/SDL_dummysensor.h b/3rd_party/sdl-2.0.20/src/sensor/dummy/SDL_dummysensor.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/sensor/dummy/SDL_dummysensor.h rename to 3rd_party/sdl-2.0.20/src/sensor/dummy/SDL_dummysensor.h diff --git a/code/3rd_party/sdl-2.0.20/src/sensor/vita/SDL_vitasensor.c b/3rd_party/sdl-2.0.20/src/sensor/vita/SDL_vitasensor.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/sensor/vita/SDL_vitasensor.c rename to 3rd_party/sdl-2.0.20/src/sensor/vita/SDL_vitasensor.c diff --git a/code/3rd_party/sdl-2.0.20/src/sensor/vita/SDL_vitasensor.h b/3rd_party/sdl-2.0.20/src/sensor/vita/SDL_vitasensor.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/sensor/vita/SDL_vitasensor.h rename to 3rd_party/sdl-2.0.20/src/sensor/vita/SDL_vitasensor.h diff --git a/code/3rd_party/sdl-2.0.20/src/sensor/windows/SDL_windowssensor.c b/3rd_party/sdl-2.0.20/src/sensor/windows/SDL_windowssensor.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/sensor/windows/SDL_windowssensor.c rename to 3rd_party/sdl-2.0.20/src/sensor/windows/SDL_windowssensor.c diff --git a/code/3rd_party/sdl-2.0.20/src/sensor/windows/SDL_windowssensor.h b/3rd_party/sdl-2.0.20/src/sensor/windows/SDL_windowssensor.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/sensor/windows/SDL_windowssensor.h rename to 3rd_party/sdl-2.0.20/src/sensor/windows/SDL_windowssensor.h diff --git a/code/3rd_party/sdl-2.0.20/src/stdlib/SDL_crc32.c b/3rd_party/sdl-2.0.20/src/stdlib/SDL_crc32.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/stdlib/SDL_crc32.c rename to 3rd_party/sdl-2.0.20/src/stdlib/SDL_crc32.c diff --git a/code/3rd_party/sdl-2.0.20/src/stdlib/SDL_getenv.c b/3rd_party/sdl-2.0.20/src/stdlib/SDL_getenv.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/stdlib/SDL_getenv.c rename to 3rd_party/sdl-2.0.20/src/stdlib/SDL_getenv.c diff --git a/code/3rd_party/sdl-2.0.20/src/stdlib/SDL_iconv.c b/3rd_party/sdl-2.0.20/src/stdlib/SDL_iconv.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/stdlib/SDL_iconv.c rename to 3rd_party/sdl-2.0.20/src/stdlib/SDL_iconv.c diff --git a/code/3rd_party/sdl-2.0.20/src/stdlib/SDL_malloc.c b/3rd_party/sdl-2.0.20/src/stdlib/SDL_malloc.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/stdlib/SDL_malloc.c rename to 3rd_party/sdl-2.0.20/src/stdlib/SDL_malloc.c diff --git a/code/3rd_party/sdl-2.0.20/src/stdlib/SDL_qsort.c b/3rd_party/sdl-2.0.20/src/stdlib/SDL_qsort.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/stdlib/SDL_qsort.c rename to 3rd_party/sdl-2.0.20/src/stdlib/SDL_qsort.c diff --git a/code/3rd_party/sdl-2.0.20/src/stdlib/SDL_stdlib.c b/3rd_party/sdl-2.0.20/src/stdlib/SDL_stdlib.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/stdlib/SDL_stdlib.c rename to 3rd_party/sdl-2.0.20/src/stdlib/SDL_stdlib.c diff --git a/code/3rd_party/sdl-2.0.20/src/stdlib/SDL_string.c b/3rd_party/sdl-2.0.20/src/stdlib/SDL_string.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/stdlib/SDL_string.c rename to 3rd_party/sdl-2.0.20/src/stdlib/SDL_string.c diff --git a/code/3rd_party/sdl-2.0.20/src/stdlib/SDL_strtokr.c b/3rd_party/sdl-2.0.20/src/stdlib/SDL_strtokr.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/stdlib/SDL_strtokr.c rename to 3rd_party/sdl-2.0.20/src/stdlib/SDL_strtokr.c diff --git a/code/3rd_party/sdl-2.0.20/src/test/SDL_test_assert.c b/3rd_party/sdl-2.0.20/src/test/SDL_test_assert.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/test/SDL_test_assert.c rename to 3rd_party/sdl-2.0.20/src/test/SDL_test_assert.c diff --git a/code/3rd_party/sdl-2.0.20/src/test/SDL_test_common.c b/3rd_party/sdl-2.0.20/src/test/SDL_test_common.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/test/SDL_test_common.c rename to 3rd_party/sdl-2.0.20/src/test/SDL_test_common.c diff --git a/code/3rd_party/sdl-2.0.20/src/test/SDL_test_compare.c b/3rd_party/sdl-2.0.20/src/test/SDL_test_compare.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/test/SDL_test_compare.c rename to 3rd_party/sdl-2.0.20/src/test/SDL_test_compare.c diff --git a/code/3rd_party/sdl-2.0.20/src/test/SDL_test_crc32.c b/3rd_party/sdl-2.0.20/src/test/SDL_test_crc32.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/test/SDL_test_crc32.c rename to 3rd_party/sdl-2.0.20/src/test/SDL_test_crc32.c diff --git a/code/3rd_party/sdl-2.0.20/src/test/SDL_test_font.c b/3rd_party/sdl-2.0.20/src/test/SDL_test_font.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/test/SDL_test_font.c rename to 3rd_party/sdl-2.0.20/src/test/SDL_test_font.c diff --git a/code/3rd_party/sdl-2.0.20/src/test/SDL_test_fuzzer.c b/3rd_party/sdl-2.0.20/src/test/SDL_test_fuzzer.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/test/SDL_test_fuzzer.c rename to 3rd_party/sdl-2.0.20/src/test/SDL_test_fuzzer.c diff --git a/code/3rd_party/sdl-2.0.20/src/test/SDL_test_harness.c b/3rd_party/sdl-2.0.20/src/test/SDL_test_harness.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/test/SDL_test_harness.c rename to 3rd_party/sdl-2.0.20/src/test/SDL_test_harness.c diff --git a/code/3rd_party/sdl-2.0.20/src/test/SDL_test_imageBlit.c b/3rd_party/sdl-2.0.20/src/test/SDL_test_imageBlit.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/test/SDL_test_imageBlit.c rename to 3rd_party/sdl-2.0.20/src/test/SDL_test_imageBlit.c diff --git a/code/3rd_party/sdl-2.0.20/src/test/SDL_test_imageBlitBlend.c b/3rd_party/sdl-2.0.20/src/test/SDL_test_imageBlitBlend.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/test/SDL_test_imageBlitBlend.c rename to 3rd_party/sdl-2.0.20/src/test/SDL_test_imageBlitBlend.c diff --git a/code/3rd_party/sdl-2.0.20/src/test/SDL_test_imageFace.c b/3rd_party/sdl-2.0.20/src/test/SDL_test_imageFace.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/test/SDL_test_imageFace.c rename to 3rd_party/sdl-2.0.20/src/test/SDL_test_imageFace.c diff --git a/code/3rd_party/sdl-2.0.20/src/test/SDL_test_imagePrimitives.c b/3rd_party/sdl-2.0.20/src/test/SDL_test_imagePrimitives.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/test/SDL_test_imagePrimitives.c rename to 3rd_party/sdl-2.0.20/src/test/SDL_test_imagePrimitives.c diff --git a/code/3rd_party/sdl-2.0.20/src/test/SDL_test_imagePrimitivesBlend.c b/3rd_party/sdl-2.0.20/src/test/SDL_test_imagePrimitivesBlend.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/test/SDL_test_imagePrimitivesBlend.c rename to 3rd_party/sdl-2.0.20/src/test/SDL_test_imagePrimitivesBlend.c diff --git a/code/3rd_party/sdl-2.0.20/src/test/SDL_test_log.c b/3rd_party/sdl-2.0.20/src/test/SDL_test_log.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/test/SDL_test_log.c rename to 3rd_party/sdl-2.0.20/src/test/SDL_test_log.c diff --git a/code/3rd_party/sdl-2.0.20/src/test/SDL_test_md5.c b/3rd_party/sdl-2.0.20/src/test/SDL_test_md5.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/test/SDL_test_md5.c rename to 3rd_party/sdl-2.0.20/src/test/SDL_test_md5.c diff --git a/code/3rd_party/sdl-2.0.20/src/test/SDL_test_memory.c b/3rd_party/sdl-2.0.20/src/test/SDL_test_memory.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/test/SDL_test_memory.c rename to 3rd_party/sdl-2.0.20/src/test/SDL_test_memory.c diff --git a/code/3rd_party/sdl-2.0.20/src/test/SDL_test_random.c b/3rd_party/sdl-2.0.20/src/test/SDL_test_random.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/test/SDL_test_random.c rename to 3rd_party/sdl-2.0.20/src/test/SDL_test_random.c diff --git a/code/3rd_party/sdl-2.0.20/src/thread/SDL_systhread.h b/3rd_party/sdl-2.0.20/src/thread/SDL_systhread.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/thread/SDL_systhread.h rename to 3rd_party/sdl-2.0.20/src/thread/SDL_systhread.h diff --git a/code/3rd_party/sdl-2.0.20/src/thread/SDL_thread.c b/3rd_party/sdl-2.0.20/src/thread/SDL_thread.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/thread/SDL_thread.c rename to 3rd_party/sdl-2.0.20/src/thread/SDL_thread.c diff --git a/code/3rd_party/sdl-2.0.20/src/thread/SDL_thread_c.h b/3rd_party/sdl-2.0.20/src/thread/SDL_thread_c.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/thread/SDL_thread_c.h rename to 3rd_party/sdl-2.0.20/src/thread/SDL_thread_c.h diff --git a/code/3rd_party/sdl-2.0.20/src/thread/generic/SDL_syscond.c b/3rd_party/sdl-2.0.20/src/thread/generic/SDL_syscond.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/thread/generic/SDL_syscond.c rename to 3rd_party/sdl-2.0.20/src/thread/generic/SDL_syscond.c diff --git a/code/3rd_party/sdl-2.0.20/src/thread/generic/SDL_syscond_c.h b/3rd_party/sdl-2.0.20/src/thread/generic/SDL_syscond_c.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/thread/generic/SDL_syscond_c.h rename to 3rd_party/sdl-2.0.20/src/thread/generic/SDL_syscond_c.h diff --git a/code/3rd_party/sdl-2.0.20/src/thread/generic/SDL_sysmutex.c b/3rd_party/sdl-2.0.20/src/thread/generic/SDL_sysmutex.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/thread/generic/SDL_sysmutex.c rename to 3rd_party/sdl-2.0.20/src/thread/generic/SDL_sysmutex.c diff --git a/code/3rd_party/sdl-2.0.20/src/thread/generic/SDL_sysmutex_c.h b/3rd_party/sdl-2.0.20/src/thread/generic/SDL_sysmutex_c.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/thread/generic/SDL_sysmutex_c.h rename to 3rd_party/sdl-2.0.20/src/thread/generic/SDL_sysmutex_c.h diff --git a/code/3rd_party/sdl-2.0.20/src/thread/generic/SDL_syssem.c b/3rd_party/sdl-2.0.20/src/thread/generic/SDL_syssem.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/thread/generic/SDL_syssem.c rename to 3rd_party/sdl-2.0.20/src/thread/generic/SDL_syssem.c diff --git a/code/3rd_party/sdl-2.0.20/src/thread/generic/SDL_systhread.c b/3rd_party/sdl-2.0.20/src/thread/generic/SDL_systhread.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/thread/generic/SDL_systhread.c rename to 3rd_party/sdl-2.0.20/src/thread/generic/SDL_systhread.c diff --git a/code/3rd_party/sdl-2.0.20/src/thread/generic/SDL_systhread_c.h b/3rd_party/sdl-2.0.20/src/thread/generic/SDL_systhread_c.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/thread/generic/SDL_systhread_c.h rename to 3rd_party/sdl-2.0.20/src/thread/generic/SDL_systhread_c.h diff --git a/code/3rd_party/sdl-2.0.20/src/thread/generic/SDL_systls.c b/3rd_party/sdl-2.0.20/src/thread/generic/SDL_systls.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/thread/generic/SDL_systls.c rename to 3rd_party/sdl-2.0.20/src/thread/generic/SDL_systls.c diff --git a/code/3rd_party/sdl-2.0.20/src/thread/os2/SDL_sysmutex.c b/3rd_party/sdl-2.0.20/src/thread/os2/SDL_sysmutex.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/thread/os2/SDL_sysmutex.c rename to 3rd_party/sdl-2.0.20/src/thread/os2/SDL_sysmutex.c diff --git a/code/3rd_party/sdl-2.0.20/src/thread/os2/SDL_syssem.c b/3rd_party/sdl-2.0.20/src/thread/os2/SDL_syssem.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/thread/os2/SDL_syssem.c rename to 3rd_party/sdl-2.0.20/src/thread/os2/SDL_syssem.c diff --git a/code/3rd_party/sdl-2.0.20/src/thread/os2/SDL_systhread.c b/3rd_party/sdl-2.0.20/src/thread/os2/SDL_systhread.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/thread/os2/SDL_systhread.c rename to 3rd_party/sdl-2.0.20/src/thread/os2/SDL_systhread.c diff --git a/code/3rd_party/sdl-2.0.20/src/thread/os2/SDL_systhread_c.h b/3rd_party/sdl-2.0.20/src/thread/os2/SDL_systhread_c.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/thread/os2/SDL_systhread_c.h rename to 3rd_party/sdl-2.0.20/src/thread/os2/SDL_systhread_c.h diff --git a/code/3rd_party/sdl-2.0.20/src/thread/os2/SDL_systls.c b/3rd_party/sdl-2.0.20/src/thread/os2/SDL_systls.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/thread/os2/SDL_systls.c rename to 3rd_party/sdl-2.0.20/src/thread/os2/SDL_systls.c diff --git a/code/3rd_party/sdl-2.0.20/src/thread/os2/SDL_systls_c.h b/3rd_party/sdl-2.0.20/src/thread/os2/SDL_systls_c.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/thread/os2/SDL_systls_c.h rename to 3rd_party/sdl-2.0.20/src/thread/os2/SDL_systls_c.h diff --git a/code/3rd_party/sdl-2.0.20/src/thread/psp/SDL_syscond.c b/3rd_party/sdl-2.0.20/src/thread/psp/SDL_syscond.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/thread/psp/SDL_syscond.c rename to 3rd_party/sdl-2.0.20/src/thread/psp/SDL_syscond.c diff --git a/code/3rd_party/sdl-2.0.20/src/thread/psp/SDL_sysmutex.c b/3rd_party/sdl-2.0.20/src/thread/psp/SDL_sysmutex.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/thread/psp/SDL_sysmutex.c rename to 3rd_party/sdl-2.0.20/src/thread/psp/SDL_sysmutex.c diff --git a/code/3rd_party/sdl-2.0.20/src/thread/psp/SDL_sysmutex_c.h b/3rd_party/sdl-2.0.20/src/thread/psp/SDL_sysmutex_c.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/thread/psp/SDL_sysmutex_c.h rename to 3rd_party/sdl-2.0.20/src/thread/psp/SDL_sysmutex_c.h diff --git a/code/3rd_party/sdl-2.0.20/src/thread/psp/SDL_syssem.c b/3rd_party/sdl-2.0.20/src/thread/psp/SDL_syssem.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/thread/psp/SDL_syssem.c rename to 3rd_party/sdl-2.0.20/src/thread/psp/SDL_syssem.c diff --git a/code/3rd_party/sdl-2.0.20/src/thread/psp/SDL_systhread.c b/3rd_party/sdl-2.0.20/src/thread/psp/SDL_systhread.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/thread/psp/SDL_systhread.c rename to 3rd_party/sdl-2.0.20/src/thread/psp/SDL_systhread.c diff --git a/code/3rd_party/sdl-2.0.20/src/thread/psp/SDL_systhread_c.h b/3rd_party/sdl-2.0.20/src/thread/psp/SDL_systhread_c.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/thread/psp/SDL_systhread_c.h rename to 3rd_party/sdl-2.0.20/src/thread/psp/SDL_systhread_c.h diff --git a/code/3rd_party/sdl-2.0.20/src/thread/pthread/SDL_syscond.c b/3rd_party/sdl-2.0.20/src/thread/pthread/SDL_syscond.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/thread/pthread/SDL_syscond.c rename to 3rd_party/sdl-2.0.20/src/thread/pthread/SDL_syscond.c diff --git a/code/3rd_party/sdl-2.0.20/src/thread/pthread/SDL_sysmutex.c b/3rd_party/sdl-2.0.20/src/thread/pthread/SDL_sysmutex.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/thread/pthread/SDL_sysmutex.c rename to 3rd_party/sdl-2.0.20/src/thread/pthread/SDL_sysmutex.c diff --git a/code/3rd_party/sdl-2.0.20/src/thread/pthread/SDL_sysmutex_c.h b/3rd_party/sdl-2.0.20/src/thread/pthread/SDL_sysmutex_c.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/thread/pthread/SDL_sysmutex_c.h rename to 3rd_party/sdl-2.0.20/src/thread/pthread/SDL_sysmutex_c.h diff --git a/code/3rd_party/sdl-2.0.20/src/thread/pthread/SDL_syssem.c b/3rd_party/sdl-2.0.20/src/thread/pthread/SDL_syssem.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/thread/pthread/SDL_syssem.c rename to 3rd_party/sdl-2.0.20/src/thread/pthread/SDL_syssem.c diff --git a/code/3rd_party/sdl-2.0.20/src/thread/pthread/SDL_systhread.c b/3rd_party/sdl-2.0.20/src/thread/pthread/SDL_systhread.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/thread/pthread/SDL_systhread.c rename to 3rd_party/sdl-2.0.20/src/thread/pthread/SDL_systhread.c diff --git a/code/3rd_party/sdl-2.0.20/src/thread/pthread/SDL_systhread_c.h b/3rd_party/sdl-2.0.20/src/thread/pthread/SDL_systhread_c.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/thread/pthread/SDL_systhread_c.h rename to 3rd_party/sdl-2.0.20/src/thread/pthread/SDL_systhread_c.h diff --git a/code/3rd_party/sdl-2.0.20/src/thread/pthread/SDL_systls.c b/3rd_party/sdl-2.0.20/src/thread/pthread/SDL_systls.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/thread/pthread/SDL_systls.c rename to 3rd_party/sdl-2.0.20/src/thread/pthread/SDL_systls.c diff --git a/code/3rd_party/sdl-2.0.20/src/thread/stdcpp/SDL_syscond.cpp b/3rd_party/sdl-2.0.20/src/thread/stdcpp/SDL_syscond.cpp similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/thread/stdcpp/SDL_syscond.cpp rename to 3rd_party/sdl-2.0.20/src/thread/stdcpp/SDL_syscond.cpp diff --git a/code/3rd_party/sdl-2.0.20/src/thread/stdcpp/SDL_sysmutex.cpp b/3rd_party/sdl-2.0.20/src/thread/stdcpp/SDL_sysmutex.cpp similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/thread/stdcpp/SDL_sysmutex.cpp rename to 3rd_party/sdl-2.0.20/src/thread/stdcpp/SDL_sysmutex.cpp diff --git a/code/3rd_party/sdl-2.0.20/src/thread/stdcpp/SDL_sysmutex_c.h b/3rd_party/sdl-2.0.20/src/thread/stdcpp/SDL_sysmutex_c.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/thread/stdcpp/SDL_sysmutex_c.h rename to 3rd_party/sdl-2.0.20/src/thread/stdcpp/SDL_sysmutex_c.h diff --git a/code/3rd_party/sdl-2.0.20/src/thread/stdcpp/SDL_systhread.cpp b/3rd_party/sdl-2.0.20/src/thread/stdcpp/SDL_systhread.cpp similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/thread/stdcpp/SDL_systhread.cpp rename to 3rd_party/sdl-2.0.20/src/thread/stdcpp/SDL_systhread.cpp diff --git a/code/3rd_party/sdl-2.0.20/src/thread/stdcpp/SDL_systhread_c.h b/3rd_party/sdl-2.0.20/src/thread/stdcpp/SDL_systhread_c.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/thread/stdcpp/SDL_systhread_c.h rename to 3rd_party/sdl-2.0.20/src/thread/stdcpp/SDL_systhread_c.h diff --git a/code/3rd_party/sdl-2.0.20/src/thread/vita/SDL_syscond.c b/3rd_party/sdl-2.0.20/src/thread/vita/SDL_syscond.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/thread/vita/SDL_syscond.c rename to 3rd_party/sdl-2.0.20/src/thread/vita/SDL_syscond.c diff --git a/code/3rd_party/sdl-2.0.20/src/thread/vita/SDL_sysmutex.c b/3rd_party/sdl-2.0.20/src/thread/vita/SDL_sysmutex.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/thread/vita/SDL_sysmutex.c rename to 3rd_party/sdl-2.0.20/src/thread/vita/SDL_sysmutex.c diff --git a/code/3rd_party/sdl-2.0.20/src/thread/vita/SDL_sysmutex_c.h b/3rd_party/sdl-2.0.20/src/thread/vita/SDL_sysmutex_c.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/thread/vita/SDL_sysmutex_c.h rename to 3rd_party/sdl-2.0.20/src/thread/vita/SDL_sysmutex_c.h diff --git a/code/3rd_party/sdl-2.0.20/src/thread/vita/SDL_syssem.c b/3rd_party/sdl-2.0.20/src/thread/vita/SDL_syssem.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/thread/vita/SDL_syssem.c rename to 3rd_party/sdl-2.0.20/src/thread/vita/SDL_syssem.c diff --git a/code/3rd_party/sdl-2.0.20/src/thread/vita/SDL_systhread.c b/3rd_party/sdl-2.0.20/src/thread/vita/SDL_systhread.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/thread/vita/SDL_systhread.c rename to 3rd_party/sdl-2.0.20/src/thread/vita/SDL_systhread.c diff --git a/code/3rd_party/sdl-2.0.20/src/thread/vita/SDL_systhread_c.h b/3rd_party/sdl-2.0.20/src/thread/vita/SDL_systhread_c.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/thread/vita/SDL_systhread_c.h rename to 3rd_party/sdl-2.0.20/src/thread/vita/SDL_systhread_c.h diff --git a/code/3rd_party/sdl-2.0.20/src/thread/windows/SDL_syscond_cv.c b/3rd_party/sdl-2.0.20/src/thread/windows/SDL_syscond_cv.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/thread/windows/SDL_syscond_cv.c rename to 3rd_party/sdl-2.0.20/src/thread/windows/SDL_syscond_cv.c diff --git a/code/3rd_party/sdl-2.0.20/src/thread/windows/SDL_sysmutex.c b/3rd_party/sdl-2.0.20/src/thread/windows/SDL_sysmutex.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/thread/windows/SDL_sysmutex.c rename to 3rd_party/sdl-2.0.20/src/thread/windows/SDL_sysmutex.c diff --git a/code/3rd_party/sdl-2.0.20/src/thread/windows/SDL_sysmutex_c.h b/3rd_party/sdl-2.0.20/src/thread/windows/SDL_sysmutex_c.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/thread/windows/SDL_sysmutex_c.h rename to 3rd_party/sdl-2.0.20/src/thread/windows/SDL_sysmutex_c.h diff --git a/code/3rd_party/sdl-2.0.20/src/thread/windows/SDL_syssem.c b/3rd_party/sdl-2.0.20/src/thread/windows/SDL_syssem.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/thread/windows/SDL_syssem.c rename to 3rd_party/sdl-2.0.20/src/thread/windows/SDL_syssem.c diff --git a/code/3rd_party/sdl-2.0.20/src/thread/windows/SDL_systhread.c b/3rd_party/sdl-2.0.20/src/thread/windows/SDL_systhread.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/thread/windows/SDL_systhread.c rename to 3rd_party/sdl-2.0.20/src/thread/windows/SDL_systhread.c diff --git a/code/3rd_party/sdl-2.0.20/src/thread/windows/SDL_systhread_c.h b/3rd_party/sdl-2.0.20/src/thread/windows/SDL_systhread_c.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/thread/windows/SDL_systhread_c.h rename to 3rd_party/sdl-2.0.20/src/thread/windows/SDL_systhread_c.h diff --git a/code/3rd_party/sdl-2.0.20/src/thread/windows/SDL_systls.c b/3rd_party/sdl-2.0.20/src/thread/windows/SDL_systls.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/thread/windows/SDL_systls.c rename to 3rd_party/sdl-2.0.20/src/thread/windows/SDL_systls.c diff --git a/code/3rd_party/sdl-2.0.20/src/timer/SDL_timer.c b/3rd_party/sdl-2.0.20/src/timer/SDL_timer.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/timer/SDL_timer.c rename to 3rd_party/sdl-2.0.20/src/timer/SDL_timer.c diff --git a/code/3rd_party/sdl-2.0.20/src/timer/SDL_timer_c.h b/3rd_party/sdl-2.0.20/src/timer/SDL_timer_c.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/timer/SDL_timer_c.h rename to 3rd_party/sdl-2.0.20/src/timer/SDL_timer_c.h diff --git a/code/3rd_party/sdl-2.0.20/src/timer/dummy/SDL_systimer.c b/3rd_party/sdl-2.0.20/src/timer/dummy/SDL_systimer.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/timer/dummy/SDL_systimer.c rename to 3rd_party/sdl-2.0.20/src/timer/dummy/SDL_systimer.c diff --git a/code/3rd_party/sdl-2.0.20/src/timer/haiku/SDL_systimer.c b/3rd_party/sdl-2.0.20/src/timer/haiku/SDL_systimer.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/timer/haiku/SDL_systimer.c rename to 3rd_party/sdl-2.0.20/src/timer/haiku/SDL_systimer.c diff --git a/code/3rd_party/sdl-2.0.20/src/timer/os2/SDL_systimer.c b/3rd_party/sdl-2.0.20/src/timer/os2/SDL_systimer.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/timer/os2/SDL_systimer.c rename to 3rd_party/sdl-2.0.20/src/timer/os2/SDL_systimer.c diff --git a/code/3rd_party/sdl-2.0.20/src/timer/psp/SDL_systimer.c b/3rd_party/sdl-2.0.20/src/timer/psp/SDL_systimer.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/timer/psp/SDL_systimer.c rename to 3rd_party/sdl-2.0.20/src/timer/psp/SDL_systimer.c diff --git a/code/3rd_party/sdl-2.0.20/src/timer/unix/SDL_systimer.c b/3rd_party/sdl-2.0.20/src/timer/unix/SDL_systimer.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/timer/unix/SDL_systimer.c rename to 3rd_party/sdl-2.0.20/src/timer/unix/SDL_systimer.c diff --git a/code/3rd_party/sdl-2.0.20/src/timer/vita/SDL_systimer.c b/3rd_party/sdl-2.0.20/src/timer/vita/SDL_systimer.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/timer/vita/SDL_systimer.c rename to 3rd_party/sdl-2.0.20/src/timer/vita/SDL_systimer.c diff --git a/code/3rd_party/sdl-2.0.20/src/timer/windows/SDL_systimer.c b/3rd_party/sdl-2.0.20/src/timer/windows/SDL_systimer.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/timer/windows/SDL_systimer.c rename to 3rd_party/sdl-2.0.20/src/timer/windows/SDL_systimer.c diff --git a/code/3rd_party/sdl-2.0.20/src/video/SDL_RLEaccel.c b/3rd_party/sdl-2.0.20/src/video/SDL_RLEaccel.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/video/SDL_RLEaccel.c rename to 3rd_party/sdl-2.0.20/src/video/SDL_RLEaccel.c diff --git a/code/3rd_party/sdl-2.0.20/src/video/SDL_RLEaccel_c.h b/3rd_party/sdl-2.0.20/src/video/SDL_RLEaccel_c.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/video/SDL_RLEaccel_c.h rename to 3rd_party/sdl-2.0.20/src/video/SDL_RLEaccel_c.h diff --git a/code/3rd_party/sdl-2.0.20/src/video/SDL_blit.c b/3rd_party/sdl-2.0.20/src/video/SDL_blit.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/video/SDL_blit.c rename to 3rd_party/sdl-2.0.20/src/video/SDL_blit.c diff --git a/code/3rd_party/sdl-2.0.20/src/video/SDL_blit.h b/3rd_party/sdl-2.0.20/src/video/SDL_blit.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/video/SDL_blit.h rename to 3rd_party/sdl-2.0.20/src/video/SDL_blit.h diff --git a/code/3rd_party/sdl-2.0.20/src/video/SDL_blit_0.c b/3rd_party/sdl-2.0.20/src/video/SDL_blit_0.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/video/SDL_blit_0.c rename to 3rd_party/sdl-2.0.20/src/video/SDL_blit_0.c diff --git a/code/3rd_party/sdl-2.0.20/src/video/SDL_blit_1.c b/3rd_party/sdl-2.0.20/src/video/SDL_blit_1.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/video/SDL_blit_1.c rename to 3rd_party/sdl-2.0.20/src/video/SDL_blit_1.c diff --git a/code/3rd_party/sdl-2.0.20/src/video/SDL_blit_A.c b/3rd_party/sdl-2.0.20/src/video/SDL_blit_A.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/video/SDL_blit_A.c rename to 3rd_party/sdl-2.0.20/src/video/SDL_blit_A.c diff --git a/code/3rd_party/sdl-2.0.20/src/video/SDL_blit_N.c b/3rd_party/sdl-2.0.20/src/video/SDL_blit_N.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/video/SDL_blit_N.c rename to 3rd_party/sdl-2.0.20/src/video/SDL_blit_N.c diff --git a/code/3rd_party/sdl-2.0.20/src/video/SDL_blit_auto.c b/3rd_party/sdl-2.0.20/src/video/SDL_blit_auto.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/video/SDL_blit_auto.c rename to 3rd_party/sdl-2.0.20/src/video/SDL_blit_auto.c diff --git a/code/3rd_party/sdl-2.0.20/src/video/SDL_blit_auto.h b/3rd_party/sdl-2.0.20/src/video/SDL_blit_auto.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/video/SDL_blit_auto.h rename to 3rd_party/sdl-2.0.20/src/video/SDL_blit_auto.h diff --git a/code/3rd_party/sdl-2.0.20/src/video/SDL_blit_copy.c b/3rd_party/sdl-2.0.20/src/video/SDL_blit_copy.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/video/SDL_blit_copy.c rename to 3rd_party/sdl-2.0.20/src/video/SDL_blit_copy.c diff --git a/code/3rd_party/sdl-2.0.20/src/video/SDL_blit_copy.h b/3rd_party/sdl-2.0.20/src/video/SDL_blit_copy.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/video/SDL_blit_copy.h rename to 3rd_party/sdl-2.0.20/src/video/SDL_blit_copy.h diff --git a/code/3rd_party/sdl-2.0.20/src/video/SDL_blit_slow.c b/3rd_party/sdl-2.0.20/src/video/SDL_blit_slow.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/video/SDL_blit_slow.c rename to 3rd_party/sdl-2.0.20/src/video/SDL_blit_slow.c diff --git a/code/3rd_party/sdl-2.0.20/src/video/SDL_blit_slow.h b/3rd_party/sdl-2.0.20/src/video/SDL_blit_slow.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/video/SDL_blit_slow.h rename to 3rd_party/sdl-2.0.20/src/video/SDL_blit_slow.h diff --git a/code/3rd_party/sdl-2.0.20/src/video/SDL_bmp.c b/3rd_party/sdl-2.0.20/src/video/SDL_bmp.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/video/SDL_bmp.c rename to 3rd_party/sdl-2.0.20/src/video/SDL_bmp.c diff --git a/code/3rd_party/sdl-2.0.20/src/video/SDL_clipboard.c b/3rd_party/sdl-2.0.20/src/video/SDL_clipboard.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/video/SDL_clipboard.c rename to 3rd_party/sdl-2.0.20/src/video/SDL_clipboard.c diff --git a/code/3rd_party/sdl-2.0.20/src/video/SDL_egl.c b/3rd_party/sdl-2.0.20/src/video/SDL_egl.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/video/SDL_egl.c rename to 3rd_party/sdl-2.0.20/src/video/SDL_egl.c diff --git a/code/3rd_party/sdl-2.0.20/src/video/SDL_egl_c.h b/3rd_party/sdl-2.0.20/src/video/SDL_egl_c.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/video/SDL_egl_c.h rename to 3rd_party/sdl-2.0.20/src/video/SDL_egl_c.h diff --git a/code/3rd_party/sdl-2.0.20/src/video/SDL_fillrect.c b/3rd_party/sdl-2.0.20/src/video/SDL_fillrect.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/video/SDL_fillrect.c rename to 3rd_party/sdl-2.0.20/src/video/SDL_fillrect.c diff --git a/code/3rd_party/sdl-2.0.20/src/video/SDL_pixels.c b/3rd_party/sdl-2.0.20/src/video/SDL_pixels.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/video/SDL_pixels.c rename to 3rd_party/sdl-2.0.20/src/video/SDL_pixels.c diff --git a/code/3rd_party/sdl-2.0.20/src/video/SDL_pixels_c.h b/3rd_party/sdl-2.0.20/src/video/SDL_pixels_c.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/video/SDL_pixels_c.h rename to 3rd_party/sdl-2.0.20/src/video/SDL_pixels_c.h diff --git a/code/3rd_party/sdl-2.0.20/src/video/SDL_rect.c b/3rd_party/sdl-2.0.20/src/video/SDL_rect.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/video/SDL_rect.c rename to 3rd_party/sdl-2.0.20/src/video/SDL_rect.c diff --git a/code/3rd_party/sdl-2.0.20/src/video/SDL_rect_c.h b/3rd_party/sdl-2.0.20/src/video/SDL_rect_c.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/video/SDL_rect_c.h rename to 3rd_party/sdl-2.0.20/src/video/SDL_rect_c.h diff --git a/code/3rd_party/sdl-2.0.20/src/video/SDL_shape.c b/3rd_party/sdl-2.0.20/src/video/SDL_shape.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/video/SDL_shape.c rename to 3rd_party/sdl-2.0.20/src/video/SDL_shape.c diff --git a/code/3rd_party/sdl-2.0.20/src/video/SDL_shape_internals.h b/3rd_party/sdl-2.0.20/src/video/SDL_shape_internals.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/video/SDL_shape_internals.h rename to 3rd_party/sdl-2.0.20/src/video/SDL_shape_internals.h diff --git a/code/3rd_party/sdl-2.0.20/src/video/SDL_stretch.c b/3rd_party/sdl-2.0.20/src/video/SDL_stretch.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/video/SDL_stretch.c rename to 3rd_party/sdl-2.0.20/src/video/SDL_stretch.c diff --git a/code/3rd_party/sdl-2.0.20/src/video/SDL_surface.c b/3rd_party/sdl-2.0.20/src/video/SDL_surface.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/video/SDL_surface.c rename to 3rd_party/sdl-2.0.20/src/video/SDL_surface.c diff --git a/code/3rd_party/sdl-2.0.20/src/video/SDL_sysvideo.h b/3rd_party/sdl-2.0.20/src/video/SDL_sysvideo.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/video/SDL_sysvideo.h rename to 3rd_party/sdl-2.0.20/src/video/SDL_sysvideo.h diff --git a/code/3rd_party/sdl-2.0.20/src/video/SDL_video.c b/3rd_party/sdl-2.0.20/src/video/SDL_video.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/video/SDL_video.c rename to 3rd_party/sdl-2.0.20/src/video/SDL_video.c diff --git a/code/3rd_party/sdl-2.0.20/src/video/SDL_vulkan_internal.h b/3rd_party/sdl-2.0.20/src/video/SDL_vulkan_internal.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/video/SDL_vulkan_internal.h rename to 3rd_party/sdl-2.0.20/src/video/SDL_vulkan_internal.h diff --git a/code/3rd_party/sdl-2.0.20/src/video/SDL_vulkan_utils.c b/3rd_party/sdl-2.0.20/src/video/SDL_vulkan_utils.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/video/SDL_vulkan_utils.c rename to 3rd_party/sdl-2.0.20/src/video/SDL_vulkan_utils.c diff --git a/code/3rd_party/sdl-2.0.20/src/video/SDL_yuv.c b/3rd_party/sdl-2.0.20/src/video/SDL_yuv.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/video/SDL_yuv.c rename to 3rd_party/sdl-2.0.20/src/video/SDL_yuv.c diff --git a/code/3rd_party/sdl-2.0.20/src/video/SDL_yuv_c.h b/3rd_party/sdl-2.0.20/src/video/SDL_yuv_c.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/video/SDL_yuv_c.h rename to 3rd_party/sdl-2.0.20/src/video/SDL_yuv_c.h diff --git a/code/3rd_party/sdl-2.0.20/src/video/android/SDL_androidclipboard.c b/3rd_party/sdl-2.0.20/src/video/android/SDL_androidclipboard.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/video/android/SDL_androidclipboard.c rename to 3rd_party/sdl-2.0.20/src/video/android/SDL_androidclipboard.c diff --git a/code/3rd_party/sdl-2.0.20/src/video/android/SDL_androidclipboard.h b/3rd_party/sdl-2.0.20/src/video/android/SDL_androidclipboard.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/video/android/SDL_androidclipboard.h rename to 3rd_party/sdl-2.0.20/src/video/android/SDL_androidclipboard.h diff --git a/code/3rd_party/sdl-2.0.20/src/video/android/SDL_androidevents.c b/3rd_party/sdl-2.0.20/src/video/android/SDL_androidevents.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/video/android/SDL_androidevents.c rename to 3rd_party/sdl-2.0.20/src/video/android/SDL_androidevents.c diff --git a/code/3rd_party/sdl-2.0.20/src/video/android/SDL_androidevents.h b/3rd_party/sdl-2.0.20/src/video/android/SDL_androidevents.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/video/android/SDL_androidevents.h rename to 3rd_party/sdl-2.0.20/src/video/android/SDL_androidevents.h diff --git a/code/3rd_party/sdl-2.0.20/src/video/android/SDL_androidgl.c b/3rd_party/sdl-2.0.20/src/video/android/SDL_androidgl.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/video/android/SDL_androidgl.c rename to 3rd_party/sdl-2.0.20/src/video/android/SDL_androidgl.c diff --git a/code/3rd_party/sdl-2.0.20/src/video/android/SDL_androidgl.h b/3rd_party/sdl-2.0.20/src/video/android/SDL_androidgl.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/video/android/SDL_androidgl.h rename to 3rd_party/sdl-2.0.20/src/video/android/SDL_androidgl.h diff --git a/code/3rd_party/sdl-2.0.20/src/video/android/SDL_androidkeyboard.c b/3rd_party/sdl-2.0.20/src/video/android/SDL_androidkeyboard.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/video/android/SDL_androidkeyboard.c rename to 3rd_party/sdl-2.0.20/src/video/android/SDL_androidkeyboard.c diff --git a/code/3rd_party/sdl-2.0.20/src/video/android/SDL_androidkeyboard.h b/3rd_party/sdl-2.0.20/src/video/android/SDL_androidkeyboard.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/video/android/SDL_androidkeyboard.h rename to 3rd_party/sdl-2.0.20/src/video/android/SDL_androidkeyboard.h diff --git a/code/3rd_party/sdl-2.0.20/src/video/android/SDL_androidmessagebox.c b/3rd_party/sdl-2.0.20/src/video/android/SDL_androidmessagebox.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/video/android/SDL_androidmessagebox.c rename to 3rd_party/sdl-2.0.20/src/video/android/SDL_androidmessagebox.c diff --git a/code/3rd_party/sdl-2.0.20/src/video/android/SDL_androidmessagebox.h b/3rd_party/sdl-2.0.20/src/video/android/SDL_androidmessagebox.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/video/android/SDL_androidmessagebox.h rename to 3rd_party/sdl-2.0.20/src/video/android/SDL_androidmessagebox.h diff --git a/code/3rd_party/sdl-2.0.20/src/video/android/SDL_androidmouse.c b/3rd_party/sdl-2.0.20/src/video/android/SDL_androidmouse.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/video/android/SDL_androidmouse.c rename to 3rd_party/sdl-2.0.20/src/video/android/SDL_androidmouse.c diff --git a/code/3rd_party/sdl-2.0.20/src/video/android/SDL_androidmouse.h b/3rd_party/sdl-2.0.20/src/video/android/SDL_androidmouse.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/video/android/SDL_androidmouse.h rename to 3rd_party/sdl-2.0.20/src/video/android/SDL_androidmouse.h diff --git a/code/3rd_party/sdl-2.0.20/src/video/android/SDL_androidtouch.c b/3rd_party/sdl-2.0.20/src/video/android/SDL_androidtouch.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/video/android/SDL_androidtouch.c rename to 3rd_party/sdl-2.0.20/src/video/android/SDL_androidtouch.c diff --git a/code/3rd_party/sdl-2.0.20/src/video/android/SDL_androidtouch.h b/3rd_party/sdl-2.0.20/src/video/android/SDL_androidtouch.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/video/android/SDL_androidtouch.h rename to 3rd_party/sdl-2.0.20/src/video/android/SDL_androidtouch.h diff --git a/code/3rd_party/sdl-2.0.20/src/video/android/SDL_androidvideo.c b/3rd_party/sdl-2.0.20/src/video/android/SDL_androidvideo.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/video/android/SDL_androidvideo.c rename to 3rd_party/sdl-2.0.20/src/video/android/SDL_androidvideo.c diff --git a/code/3rd_party/sdl-2.0.20/src/video/android/SDL_androidvideo.h b/3rd_party/sdl-2.0.20/src/video/android/SDL_androidvideo.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/video/android/SDL_androidvideo.h rename to 3rd_party/sdl-2.0.20/src/video/android/SDL_androidvideo.h diff --git a/code/3rd_party/sdl-2.0.20/src/video/android/SDL_androidvulkan.c b/3rd_party/sdl-2.0.20/src/video/android/SDL_androidvulkan.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/video/android/SDL_androidvulkan.c rename to 3rd_party/sdl-2.0.20/src/video/android/SDL_androidvulkan.c diff --git a/code/3rd_party/sdl-2.0.20/src/video/android/SDL_androidvulkan.h b/3rd_party/sdl-2.0.20/src/video/android/SDL_androidvulkan.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/video/android/SDL_androidvulkan.h rename to 3rd_party/sdl-2.0.20/src/video/android/SDL_androidvulkan.h diff --git a/code/3rd_party/sdl-2.0.20/src/video/android/SDL_androidwindow.c b/3rd_party/sdl-2.0.20/src/video/android/SDL_androidwindow.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/video/android/SDL_androidwindow.c rename to 3rd_party/sdl-2.0.20/src/video/android/SDL_androidwindow.c diff --git a/code/3rd_party/sdl-2.0.20/src/video/android/SDL_androidwindow.h b/3rd_party/sdl-2.0.20/src/video/android/SDL_androidwindow.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/video/android/SDL_androidwindow.h rename to 3rd_party/sdl-2.0.20/src/video/android/SDL_androidwindow.h diff --git a/code/3rd_party/sdl-2.0.20/src/video/arm/pixman-arm-asm.h b/3rd_party/sdl-2.0.20/src/video/arm/pixman-arm-asm.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/video/arm/pixman-arm-asm.h rename to 3rd_party/sdl-2.0.20/src/video/arm/pixman-arm-asm.h diff --git a/code/3rd_party/sdl-2.0.20/src/video/arm/pixman-arm-neon-asm.S b/3rd_party/sdl-2.0.20/src/video/arm/pixman-arm-neon-asm.S similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/video/arm/pixman-arm-neon-asm.S rename to 3rd_party/sdl-2.0.20/src/video/arm/pixman-arm-neon-asm.S diff --git a/code/3rd_party/sdl-2.0.20/src/video/arm/pixman-arm-neon-asm.h b/3rd_party/sdl-2.0.20/src/video/arm/pixman-arm-neon-asm.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/video/arm/pixman-arm-neon-asm.h rename to 3rd_party/sdl-2.0.20/src/video/arm/pixman-arm-neon-asm.h diff --git a/code/3rd_party/sdl-2.0.20/src/video/arm/pixman-arm-simd-asm.S b/3rd_party/sdl-2.0.20/src/video/arm/pixman-arm-simd-asm.S similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/video/arm/pixman-arm-simd-asm.S rename to 3rd_party/sdl-2.0.20/src/video/arm/pixman-arm-simd-asm.S diff --git a/code/3rd_party/sdl-2.0.20/src/video/arm/pixman-arm-simd-asm.h b/3rd_party/sdl-2.0.20/src/video/arm/pixman-arm-simd-asm.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/video/arm/pixman-arm-simd-asm.h rename to 3rd_party/sdl-2.0.20/src/video/arm/pixman-arm-simd-asm.h diff --git a/code/3rd_party/sdl-2.0.20/src/video/cocoa/SDL_cocoaclipboard.h b/3rd_party/sdl-2.0.20/src/video/cocoa/SDL_cocoaclipboard.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/video/cocoa/SDL_cocoaclipboard.h rename to 3rd_party/sdl-2.0.20/src/video/cocoa/SDL_cocoaclipboard.h diff --git a/code/3rd_party/sdl-2.0.20/src/video/cocoa/SDL_cocoaclipboard.m b/3rd_party/sdl-2.0.20/src/video/cocoa/SDL_cocoaclipboard.m similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/video/cocoa/SDL_cocoaclipboard.m rename to 3rd_party/sdl-2.0.20/src/video/cocoa/SDL_cocoaclipboard.m diff --git a/code/3rd_party/sdl-2.0.20/src/video/cocoa/SDL_cocoaevents.h b/3rd_party/sdl-2.0.20/src/video/cocoa/SDL_cocoaevents.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/video/cocoa/SDL_cocoaevents.h rename to 3rd_party/sdl-2.0.20/src/video/cocoa/SDL_cocoaevents.h diff --git a/code/3rd_party/sdl-2.0.20/src/video/cocoa/SDL_cocoaevents.m b/3rd_party/sdl-2.0.20/src/video/cocoa/SDL_cocoaevents.m similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/video/cocoa/SDL_cocoaevents.m rename to 3rd_party/sdl-2.0.20/src/video/cocoa/SDL_cocoaevents.m diff --git a/code/3rd_party/sdl-2.0.20/src/video/cocoa/SDL_cocoakeyboard.h b/3rd_party/sdl-2.0.20/src/video/cocoa/SDL_cocoakeyboard.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/video/cocoa/SDL_cocoakeyboard.h rename to 3rd_party/sdl-2.0.20/src/video/cocoa/SDL_cocoakeyboard.h diff --git a/code/3rd_party/sdl-2.0.20/src/video/cocoa/SDL_cocoakeyboard.m b/3rd_party/sdl-2.0.20/src/video/cocoa/SDL_cocoakeyboard.m similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/video/cocoa/SDL_cocoakeyboard.m rename to 3rd_party/sdl-2.0.20/src/video/cocoa/SDL_cocoakeyboard.m diff --git a/code/3rd_party/sdl-2.0.20/src/video/cocoa/SDL_cocoamessagebox.h b/3rd_party/sdl-2.0.20/src/video/cocoa/SDL_cocoamessagebox.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/video/cocoa/SDL_cocoamessagebox.h rename to 3rd_party/sdl-2.0.20/src/video/cocoa/SDL_cocoamessagebox.h diff --git a/code/3rd_party/sdl-2.0.20/src/video/cocoa/SDL_cocoamessagebox.m b/3rd_party/sdl-2.0.20/src/video/cocoa/SDL_cocoamessagebox.m similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/video/cocoa/SDL_cocoamessagebox.m rename to 3rd_party/sdl-2.0.20/src/video/cocoa/SDL_cocoamessagebox.m diff --git a/code/3rd_party/sdl-2.0.20/src/video/cocoa/SDL_cocoametalview.h b/3rd_party/sdl-2.0.20/src/video/cocoa/SDL_cocoametalview.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/video/cocoa/SDL_cocoametalview.h rename to 3rd_party/sdl-2.0.20/src/video/cocoa/SDL_cocoametalview.h diff --git a/code/3rd_party/sdl-2.0.20/src/video/cocoa/SDL_cocoametalview.m b/3rd_party/sdl-2.0.20/src/video/cocoa/SDL_cocoametalview.m similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/video/cocoa/SDL_cocoametalview.m rename to 3rd_party/sdl-2.0.20/src/video/cocoa/SDL_cocoametalview.m diff --git a/code/3rd_party/sdl-2.0.20/src/video/cocoa/SDL_cocoamodes.h b/3rd_party/sdl-2.0.20/src/video/cocoa/SDL_cocoamodes.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/video/cocoa/SDL_cocoamodes.h rename to 3rd_party/sdl-2.0.20/src/video/cocoa/SDL_cocoamodes.h diff --git a/code/3rd_party/sdl-2.0.20/src/video/cocoa/SDL_cocoamodes.m b/3rd_party/sdl-2.0.20/src/video/cocoa/SDL_cocoamodes.m similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/video/cocoa/SDL_cocoamodes.m rename to 3rd_party/sdl-2.0.20/src/video/cocoa/SDL_cocoamodes.m diff --git a/code/3rd_party/sdl-2.0.20/src/video/cocoa/SDL_cocoamouse.h b/3rd_party/sdl-2.0.20/src/video/cocoa/SDL_cocoamouse.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/video/cocoa/SDL_cocoamouse.h rename to 3rd_party/sdl-2.0.20/src/video/cocoa/SDL_cocoamouse.h diff --git a/code/3rd_party/sdl-2.0.20/src/video/cocoa/SDL_cocoamouse.m b/3rd_party/sdl-2.0.20/src/video/cocoa/SDL_cocoamouse.m similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/video/cocoa/SDL_cocoamouse.m rename to 3rd_party/sdl-2.0.20/src/video/cocoa/SDL_cocoamouse.m diff --git a/code/3rd_party/sdl-2.0.20/src/video/cocoa/SDL_cocoaopengl.h b/3rd_party/sdl-2.0.20/src/video/cocoa/SDL_cocoaopengl.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/video/cocoa/SDL_cocoaopengl.h rename to 3rd_party/sdl-2.0.20/src/video/cocoa/SDL_cocoaopengl.h diff --git a/code/3rd_party/sdl-2.0.20/src/video/cocoa/SDL_cocoaopengl.m b/3rd_party/sdl-2.0.20/src/video/cocoa/SDL_cocoaopengl.m similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/video/cocoa/SDL_cocoaopengl.m rename to 3rd_party/sdl-2.0.20/src/video/cocoa/SDL_cocoaopengl.m diff --git a/code/3rd_party/sdl-2.0.20/src/video/cocoa/SDL_cocoaopengles.h b/3rd_party/sdl-2.0.20/src/video/cocoa/SDL_cocoaopengles.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/video/cocoa/SDL_cocoaopengles.h rename to 3rd_party/sdl-2.0.20/src/video/cocoa/SDL_cocoaopengles.h diff --git a/code/3rd_party/sdl-2.0.20/src/video/cocoa/SDL_cocoaopengles.m b/3rd_party/sdl-2.0.20/src/video/cocoa/SDL_cocoaopengles.m similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/video/cocoa/SDL_cocoaopengles.m rename to 3rd_party/sdl-2.0.20/src/video/cocoa/SDL_cocoaopengles.m diff --git a/code/3rd_party/sdl-2.0.20/src/video/cocoa/SDL_cocoashape.h b/3rd_party/sdl-2.0.20/src/video/cocoa/SDL_cocoashape.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/video/cocoa/SDL_cocoashape.h rename to 3rd_party/sdl-2.0.20/src/video/cocoa/SDL_cocoashape.h diff --git a/code/3rd_party/sdl-2.0.20/src/video/cocoa/SDL_cocoashape.m b/3rd_party/sdl-2.0.20/src/video/cocoa/SDL_cocoashape.m similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/video/cocoa/SDL_cocoashape.m rename to 3rd_party/sdl-2.0.20/src/video/cocoa/SDL_cocoashape.m diff --git a/code/3rd_party/sdl-2.0.20/src/video/cocoa/SDL_cocoavideo.h b/3rd_party/sdl-2.0.20/src/video/cocoa/SDL_cocoavideo.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/video/cocoa/SDL_cocoavideo.h rename to 3rd_party/sdl-2.0.20/src/video/cocoa/SDL_cocoavideo.h diff --git a/code/3rd_party/sdl-2.0.20/src/video/cocoa/SDL_cocoavideo.m b/3rd_party/sdl-2.0.20/src/video/cocoa/SDL_cocoavideo.m similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/video/cocoa/SDL_cocoavideo.m rename to 3rd_party/sdl-2.0.20/src/video/cocoa/SDL_cocoavideo.m diff --git a/code/3rd_party/sdl-2.0.20/src/video/cocoa/SDL_cocoavulkan.h b/3rd_party/sdl-2.0.20/src/video/cocoa/SDL_cocoavulkan.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/video/cocoa/SDL_cocoavulkan.h rename to 3rd_party/sdl-2.0.20/src/video/cocoa/SDL_cocoavulkan.h diff --git a/code/3rd_party/sdl-2.0.20/src/video/cocoa/SDL_cocoavulkan.m b/3rd_party/sdl-2.0.20/src/video/cocoa/SDL_cocoavulkan.m similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/video/cocoa/SDL_cocoavulkan.m rename to 3rd_party/sdl-2.0.20/src/video/cocoa/SDL_cocoavulkan.m diff --git a/code/3rd_party/sdl-2.0.20/src/video/cocoa/SDL_cocoawindow.h b/3rd_party/sdl-2.0.20/src/video/cocoa/SDL_cocoawindow.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/video/cocoa/SDL_cocoawindow.h rename to 3rd_party/sdl-2.0.20/src/video/cocoa/SDL_cocoawindow.h diff --git a/code/3rd_party/sdl-2.0.20/src/video/cocoa/SDL_cocoawindow.m b/3rd_party/sdl-2.0.20/src/video/cocoa/SDL_cocoawindow.m similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/video/cocoa/SDL_cocoawindow.m rename to 3rd_party/sdl-2.0.20/src/video/cocoa/SDL_cocoawindow.m diff --git a/code/3rd_party/sdl-2.0.20/src/video/directfb/SDL_DirectFB_WM.c b/3rd_party/sdl-2.0.20/src/video/directfb/SDL_DirectFB_WM.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/video/directfb/SDL_DirectFB_WM.c rename to 3rd_party/sdl-2.0.20/src/video/directfb/SDL_DirectFB_WM.c diff --git a/code/3rd_party/sdl-2.0.20/src/video/directfb/SDL_DirectFB_WM.h b/3rd_party/sdl-2.0.20/src/video/directfb/SDL_DirectFB_WM.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/video/directfb/SDL_DirectFB_WM.h rename to 3rd_party/sdl-2.0.20/src/video/directfb/SDL_DirectFB_WM.h diff --git a/code/3rd_party/sdl-2.0.20/src/video/directfb/SDL_DirectFB_dyn.c b/3rd_party/sdl-2.0.20/src/video/directfb/SDL_DirectFB_dyn.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/video/directfb/SDL_DirectFB_dyn.c rename to 3rd_party/sdl-2.0.20/src/video/directfb/SDL_DirectFB_dyn.c diff --git a/code/3rd_party/sdl-2.0.20/src/video/directfb/SDL_DirectFB_dyn.h b/3rd_party/sdl-2.0.20/src/video/directfb/SDL_DirectFB_dyn.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/video/directfb/SDL_DirectFB_dyn.h rename to 3rd_party/sdl-2.0.20/src/video/directfb/SDL_DirectFB_dyn.h diff --git a/code/3rd_party/sdl-2.0.20/src/video/directfb/SDL_DirectFB_events.c b/3rd_party/sdl-2.0.20/src/video/directfb/SDL_DirectFB_events.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/video/directfb/SDL_DirectFB_events.c rename to 3rd_party/sdl-2.0.20/src/video/directfb/SDL_DirectFB_events.c diff --git a/code/3rd_party/sdl-2.0.20/src/video/directfb/SDL_DirectFB_events.h b/3rd_party/sdl-2.0.20/src/video/directfb/SDL_DirectFB_events.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/video/directfb/SDL_DirectFB_events.h rename to 3rd_party/sdl-2.0.20/src/video/directfb/SDL_DirectFB_events.h diff --git a/code/3rd_party/sdl-2.0.20/src/video/directfb/SDL_DirectFB_modes.c b/3rd_party/sdl-2.0.20/src/video/directfb/SDL_DirectFB_modes.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/video/directfb/SDL_DirectFB_modes.c rename to 3rd_party/sdl-2.0.20/src/video/directfb/SDL_DirectFB_modes.c diff --git a/code/3rd_party/sdl-2.0.20/src/video/directfb/SDL_DirectFB_modes.h b/3rd_party/sdl-2.0.20/src/video/directfb/SDL_DirectFB_modes.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/video/directfb/SDL_DirectFB_modes.h rename to 3rd_party/sdl-2.0.20/src/video/directfb/SDL_DirectFB_modes.h diff --git a/code/3rd_party/sdl-2.0.20/src/video/directfb/SDL_DirectFB_mouse.c b/3rd_party/sdl-2.0.20/src/video/directfb/SDL_DirectFB_mouse.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/video/directfb/SDL_DirectFB_mouse.c rename to 3rd_party/sdl-2.0.20/src/video/directfb/SDL_DirectFB_mouse.c diff --git a/code/3rd_party/sdl-2.0.20/src/video/directfb/SDL_DirectFB_mouse.h b/3rd_party/sdl-2.0.20/src/video/directfb/SDL_DirectFB_mouse.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/video/directfb/SDL_DirectFB_mouse.h rename to 3rd_party/sdl-2.0.20/src/video/directfb/SDL_DirectFB_mouse.h diff --git a/code/3rd_party/sdl-2.0.20/src/video/directfb/SDL_DirectFB_opengl.c b/3rd_party/sdl-2.0.20/src/video/directfb/SDL_DirectFB_opengl.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/video/directfb/SDL_DirectFB_opengl.c rename to 3rd_party/sdl-2.0.20/src/video/directfb/SDL_DirectFB_opengl.c diff --git a/code/3rd_party/sdl-2.0.20/src/video/directfb/SDL_DirectFB_opengl.h b/3rd_party/sdl-2.0.20/src/video/directfb/SDL_DirectFB_opengl.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/video/directfb/SDL_DirectFB_opengl.h rename to 3rd_party/sdl-2.0.20/src/video/directfb/SDL_DirectFB_opengl.h diff --git a/code/3rd_party/sdl-2.0.20/src/video/directfb/SDL_DirectFB_render.c b/3rd_party/sdl-2.0.20/src/video/directfb/SDL_DirectFB_render.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/video/directfb/SDL_DirectFB_render.c rename to 3rd_party/sdl-2.0.20/src/video/directfb/SDL_DirectFB_render.c diff --git a/code/3rd_party/sdl-2.0.20/src/video/directfb/SDL_DirectFB_render.h b/3rd_party/sdl-2.0.20/src/video/directfb/SDL_DirectFB_render.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/video/directfb/SDL_DirectFB_render.h rename to 3rd_party/sdl-2.0.20/src/video/directfb/SDL_DirectFB_render.h diff --git a/code/3rd_party/sdl-2.0.20/src/video/directfb/SDL_DirectFB_shape.c b/3rd_party/sdl-2.0.20/src/video/directfb/SDL_DirectFB_shape.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/video/directfb/SDL_DirectFB_shape.c rename to 3rd_party/sdl-2.0.20/src/video/directfb/SDL_DirectFB_shape.c diff --git a/code/3rd_party/sdl-2.0.20/src/video/directfb/SDL_DirectFB_shape.h b/3rd_party/sdl-2.0.20/src/video/directfb/SDL_DirectFB_shape.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/video/directfb/SDL_DirectFB_shape.h rename to 3rd_party/sdl-2.0.20/src/video/directfb/SDL_DirectFB_shape.h diff --git a/code/3rd_party/sdl-2.0.20/src/video/directfb/SDL_DirectFB_video.c b/3rd_party/sdl-2.0.20/src/video/directfb/SDL_DirectFB_video.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/video/directfb/SDL_DirectFB_video.c rename to 3rd_party/sdl-2.0.20/src/video/directfb/SDL_DirectFB_video.c diff --git a/code/3rd_party/sdl-2.0.20/src/video/directfb/SDL_DirectFB_video.h b/3rd_party/sdl-2.0.20/src/video/directfb/SDL_DirectFB_video.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/video/directfb/SDL_DirectFB_video.h rename to 3rd_party/sdl-2.0.20/src/video/directfb/SDL_DirectFB_video.h diff --git a/code/3rd_party/sdl-2.0.20/src/video/directfb/SDL_DirectFB_vulkan.c b/3rd_party/sdl-2.0.20/src/video/directfb/SDL_DirectFB_vulkan.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/video/directfb/SDL_DirectFB_vulkan.c rename to 3rd_party/sdl-2.0.20/src/video/directfb/SDL_DirectFB_vulkan.c diff --git a/code/3rd_party/sdl-2.0.20/src/video/directfb/SDL_DirectFB_vulkan.h b/3rd_party/sdl-2.0.20/src/video/directfb/SDL_DirectFB_vulkan.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/video/directfb/SDL_DirectFB_vulkan.h rename to 3rd_party/sdl-2.0.20/src/video/directfb/SDL_DirectFB_vulkan.h diff --git a/code/3rd_party/sdl-2.0.20/src/video/directfb/SDL_DirectFB_window.c b/3rd_party/sdl-2.0.20/src/video/directfb/SDL_DirectFB_window.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/video/directfb/SDL_DirectFB_window.c rename to 3rd_party/sdl-2.0.20/src/video/directfb/SDL_DirectFB_window.c diff --git a/code/3rd_party/sdl-2.0.20/src/video/directfb/SDL_DirectFB_window.h b/3rd_party/sdl-2.0.20/src/video/directfb/SDL_DirectFB_window.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/video/directfb/SDL_DirectFB_window.h rename to 3rd_party/sdl-2.0.20/src/video/directfb/SDL_DirectFB_window.h diff --git a/code/3rd_party/sdl-2.0.20/src/video/dummy/SDL_nullevents.c b/3rd_party/sdl-2.0.20/src/video/dummy/SDL_nullevents.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/video/dummy/SDL_nullevents.c rename to 3rd_party/sdl-2.0.20/src/video/dummy/SDL_nullevents.c diff --git a/code/3rd_party/sdl-2.0.20/src/video/dummy/SDL_nullevents_c.h b/3rd_party/sdl-2.0.20/src/video/dummy/SDL_nullevents_c.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/video/dummy/SDL_nullevents_c.h rename to 3rd_party/sdl-2.0.20/src/video/dummy/SDL_nullevents_c.h diff --git a/code/3rd_party/sdl-2.0.20/src/video/dummy/SDL_nullframebuffer.c b/3rd_party/sdl-2.0.20/src/video/dummy/SDL_nullframebuffer.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/video/dummy/SDL_nullframebuffer.c rename to 3rd_party/sdl-2.0.20/src/video/dummy/SDL_nullframebuffer.c diff --git a/code/3rd_party/sdl-2.0.20/src/video/dummy/SDL_nullframebuffer_c.h b/3rd_party/sdl-2.0.20/src/video/dummy/SDL_nullframebuffer_c.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/video/dummy/SDL_nullframebuffer_c.h rename to 3rd_party/sdl-2.0.20/src/video/dummy/SDL_nullframebuffer_c.h diff --git a/code/3rd_party/sdl-2.0.20/src/video/dummy/SDL_nullvideo.c b/3rd_party/sdl-2.0.20/src/video/dummy/SDL_nullvideo.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/video/dummy/SDL_nullvideo.c rename to 3rd_party/sdl-2.0.20/src/video/dummy/SDL_nullvideo.c diff --git a/code/3rd_party/sdl-2.0.20/src/video/dummy/SDL_nullvideo.h b/3rd_party/sdl-2.0.20/src/video/dummy/SDL_nullvideo.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/video/dummy/SDL_nullvideo.h rename to 3rd_party/sdl-2.0.20/src/video/dummy/SDL_nullvideo.h diff --git a/code/3rd_party/sdl-2.0.20/src/video/emscripten/SDL_emscriptenevents.c b/3rd_party/sdl-2.0.20/src/video/emscripten/SDL_emscriptenevents.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/video/emscripten/SDL_emscriptenevents.c rename to 3rd_party/sdl-2.0.20/src/video/emscripten/SDL_emscriptenevents.c diff --git a/code/3rd_party/sdl-2.0.20/src/video/emscripten/SDL_emscriptenevents.h b/3rd_party/sdl-2.0.20/src/video/emscripten/SDL_emscriptenevents.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/video/emscripten/SDL_emscriptenevents.h rename to 3rd_party/sdl-2.0.20/src/video/emscripten/SDL_emscriptenevents.h diff --git a/code/3rd_party/sdl-2.0.20/src/video/emscripten/SDL_emscriptenframebuffer.c b/3rd_party/sdl-2.0.20/src/video/emscripten/SDL_emscriptenframebuffer.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/video/emscripten/SDL_emscriptenframebuffer.c rename to 3rd_party/sdl-2.0.20/src/video/emscripten/SDL_emscriptenframebuffer.c diff --git a/code/3rd_party/sdl-2.0.20/src/video/emscripten/SDL_emscriptenframebuffer.h b/3rd_party/sdl-2.0.20/src/video/emscripten/SDL_emscriptenframebuffer.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/video/emscripten/SDL_emscriptenframebuffer.h rename to 3rd_party/sdl-2.0.20/src/video/emscripten/SDL_emscriptenframebuffer.h diff --git a/code/3rd_party/sdl-2.0.20/src/video/emscripten/SDL_emscriptenmouse.c b/3rd_party/sdl-2.0.20/src/video/emscripten/SDL_emscriptenmouse.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/video/emscripten/SDL_emscriptenmouse.c rename to 3rd_party/sdl-2.0.20/src/video/emscripten/SDL_emscriptenmouse.c diff --git a/code/3rd_party/sdl-2.0.20/src/video/emscripten/SDL_emscriptenmouse.h b/3rd_party/sdl-2.0.20/src/video/emscripten/SDL_emscriptenmouse.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/video/emscripten/SDL_emscriptenmouse.h rename to 3rd_party/sdl-2.0.20/src/video/emscripten/SDL_emscriptenmouse.h diff --git a/code/3rd_party/sdl-2.0.20/src/video/emscripten/SDL_emscriptenopengles.c b/3rd_party/sdl-2.0.20/src/video/emscripten/SDL_emscriptenopengles.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/video/emscripten/SDL_emscriptenopengles.c rename to 3rd_party/sdl-2.0.20/src/video/emscripten/SDL_emscriptenopengles.c diff --git a/code/3rd_party/sdl-2.0.20/src/video/emscripten/SDL_emscriptenopengles.h b/3rd_party/sdl-2.0.20/src/video/emscripten/SDL_emscriptenopengles.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/video/emscripten/SDL_emscriptenopengles.h rename to 3rd_party/sdl-2.0.20/src/video/emscripten/SDL_emscriptenopengles.h diff --git a/code/3rd_party/sdl-2.0.20/src/video/emscripten/SDL_emscriptenvideo.c b/3rd_party/sdl-2.0.20/src/video/emscripten/SDL_emscriptenvideo.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/video/emscripten/SDL_emscriptenvideo.c rename to 3rd_party/sdl-2.0.20/src/video/emscripten/SDL_emscriptenvideo.c diff --git a/code/3rd_party/sdl-2.0.20/src/video/emscripten/SDL_emscriptenvideo.h b/3rd_party/sdl-2.0.20/src/video/emscripten/SDL_emscriptenvideo.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/video/emscripten/SDL_emscriptenvideo.h rename to 3rd_party/sdl-2.0.20/src/video/emscripten/SDL_emscriptenvideo.h diff --git a/code/3rd_party/sdl-2.0.20/src/video/haiku/SDL_BWin.h b/3rd_party/sdl-2.0.20/src/video/haiku/SDL_BWin.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/video/haiku/SDL_BWin.h rename to 3rd_party/sdl-2.0.20/src/video/haiku/SDL_BWin.h diff --git a/code/3rd_party/sdl-2.0.20/src/video/haiku/SDL_bclipboard.cc b/3rd_party/sdl-2.0.20/src/video/haiku/SDL_bclipboard.cc similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/video/haiku/SDL_bclipboard.cc rename to 3rd_party/sdl-2.0.20/src/video/haiku/SDL_bclipboard.cc diff --git a/code/3rd_party/sdl-2.0.20/src/video/haiku/SDL_bclipboard.h b/3rd_party/sdl-2.0.20/src/video/haiku/SDL_bclipboard.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/video/haiku/SDL_bclipboard.h rename to 3rd_party/sdl-2.0.20/src/video/haiku/SDL_bclipboard.h diff --git a/code/3rd_party/sdl-2.0.20/src/video/haiku/SDL_bevents.cc b/3rd_party/sdl-2.0.20/src/video/haiku/SDL_bevents.cc similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/video/haiku/SDL_bevents.cc rename to 3rd_party/sdl-2.0.20/src/video/haiku/SDL_bevents.cc diff --git a/code/3rd_party/sdl-2.0.20/src/video/haiku/SDL_bevents.h b/3rd_party/sdl-2.0.20/src/video/haiku/SDL_bevents.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/video/haiku/SDL_bevents.h rename to 3rd_party/sdl-2.0.20/src/video/haiku/SDL_bevents.h diff --git a/code/3rd_party/sdl-2.0.20/src/video/haiku/SDL_bframebuffer.cc b/3rd_party/sdl-2.0.20/src/video/haiku/SDL_bframebuffer.cc similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/video/haiku/SDL_bframebuffer.cc rename to 3rd_party/sdl-2.0.20/src/video/haiku/SDL_bframebuffer.cc diff --git a/code/3rd_party/sdl-2.0.20/src/video/haiku/SDL_bframebuffer.h b/3rd_party/sdl-2.0.20/src/video/haiku/SDL_bframebuffer.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/video/haiku/SDL_bframebuffer.h rename to 3rd_party/sdl-2.0.20/src/video/haiku/SDL_bframebuffer.h diff --git a/code/3rd_party/sdl-2.0.20/src/video/haiku/SDL_bkeyboard.cc b/3rd_party/sdl-2.0.20/src/video/haiku/SDL_bkeyboard.cc similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/video/haiku/SDL_bkeyboard.cc rename to 3rd_party/sdl-2.0.20/src/video/haiku/SDL_bkeyboard.cc diff --git a/code/3rd_party/sdl-2.0.20/src/video/haiku/SDL_bkeyboard.h b/3rd_party/sdl-2.0.20/src/video/haiku/SDL_bkeyboard.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/video/haiku/SDL_bkeyboard.h rename to 3rd_party/sdl-2.0.20/src/video/haiku/SDL_bkeyboard.h diff --git a/code/3rd_party/sdl-2.0.20/src/video/haiku/SDL_bmessagebox.cc b/3rd_party/sdl-2.0.20/src/video/haiku/SDL_bmessagebox.cc similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/video/haiku/SDL_bmessagebox.cc rename to 3rd_party/sdl-2.0.20/src/video/haiku/SDL_bmessagebox.cc diff --git a/code/3rd_party/sdl-2.0.20/src/video/haiku/SDL_bmessagebox.h b/3rd_party/sdl-2.0.20/src/video/haiku/SDL_bmessagebox.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/video/haiku/SDL_bmessagebox.h rename to 3rd_party/sdl-2.0.20/src/video/haiku/SDL_bmessagebox.h diff --git a/code/3rd_party/sdl-2.0.20/src/video/haiku/SDL_bmodes.cc b/3rd_party/sdl-2.0.20/src/video/haiku/SDL_bmodes.cc similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/video/haiku/SDL_bmodes.cc rename to 3rd_party/sdl-2.0.20/src/video/haiku/SDL_bmodes.cc diff --git a/code/3rd_party/sdl-2.0.20/src/video/haiku/SDL_bmodes.h b/3rd_party/sdl-2.0.20/src/video/haiku/SDL_bmodes.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/video/haiku/SDL_bmodes.h rename to 3rd_party/sdl-2.0.20/src/video/haiku/SDL_bmodes.h diff --git a/code/3rd_party/sdl-2.0.20/src/video/haiku/SDL_bopengl.cc b/3rd_party/sdl-2.0.20/src/video/haiku/SDL_bopengl.cc similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/video/haiku/SDL_bopengl.cc rename to 3rd_party/sdl-2.0.20/src/video/haiku/SDL_bopengl.cc diff --git a/code/3rd_party/sdl-2.0.20/src/video/haiku/SDL_bopengl.h b/3rd_party/sdl-2.0.20/src/video/haiku/SDL_bopengl.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/video/haiku/SDL_bopengl.h rename to 3rd_party/sdl-2.0.20/src/video/haiku/SDL_bopengl.h diff --git a/code/3rd_party/sdl-2.0.20/src/video/haiku/SDL_bvideo.cc b/3rd_party/sdl-2.0.20/src/video/haiku/SDL_bvideo.cc similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/video/haiku/SDL_bvideo.cc rename to 3rd_party/sdl-2.0.20/src/video/haiku/SDL_bvideo.cc diff --git a/code/3rd_party/sdl-2.0.20/src/video/haiku/SDL_bvideo.h b/3rd_party/sdl-2.0.20/src/video/haiku/SDL_bvideo.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/video/haiku/SDL_bvideo.h rename to 3rd_party/sdl-2.0.20/src/video/haiku/SDL_bvideo.h diff --git a/code/3rd_party/sdl-2.0.20/src/video/haiku/SDL_bwindow.cc b/3rd_party/sdl-2.0.20/src/video/haiku/SDL_bwindow.cc similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/video/haiku/SDL_bwindow.cc rename to 3rd_party/sdl-2.0.20/src/video/haiku/SDL_bwindow.cc diff --git a/code/3rd_party/sdl-2.0.20/src/video/haiku/SDL_bwindow.h b/3rd_party/sdl-2.0.20/src/video/haiku/SDL_bwindow.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/video/haiku/SDL_bwindow.h rename to 3rd_party/sdl-2.0.20/src/video/haiku/SDL_bwindow.h diff --git a/code/3rd_party/sdl-2.0.20/src/video/khronos/EGL/egl.h b/3rd_party/sdl-2.0.20/src/video/khronos/EGL/egl.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/video/khronos/EGL/egl.h rename to 3rd_party/sdl-2.0.20/src/video/khronos/EGL/egl.h diff --git a/code/3rd_party/sdl-2.0.20/src/video/khronos/EGL/eglext.h b/3rd_party/sdl-2.0.20/src/video/khronos/EGL/eglext.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/video/khronos/EGL/eglext.h rename to 3rd_party/sdl-2.0.20/src/video/khronos/EGL/eglext.h diff --git a/code/3rd_party/sdl-2.0.20/src/video/khronos/EGL/eglplatform.h b/3rd_party/sdl-2.0.20/src/video/khronos/EGL/eglplatform.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/video/khronos/EGL/eglplatform.h rename to 3rd_party/sdl-2.0.20/src/video/khronos/EGL/eglplatform.h diff --git a/code/3rd_party/sdl-2.0.20/src/video/khronos/GLES2/gl2.h b/3rd_party/sdl-2.0.20/src/video/khronos/GLES2/gl2.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/video/khronos/GLES2/gl2.h rename to 3rd_party/sdl-2.0.20/src/video/khronos/GLES2/gl2.h diff --git a/code/3rd_party/sdl-2.0.20/src/video/khronos/GLES2/gl2ext.h b/3rd_party/sdl-2.0.20/src/video/khronos/GLES2/gl2ext.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/video/khronos/GLES2/gl2ext.h rename to 3rd_party/sdl-2.0.20/src/video/khronos/GLES2/gl2ext.h diff --git a/code/3rd_party/sdl-2.0.20/src/video/khronos/GLES2/gl2platform.h b/3rd_party/sdl-2.0.20/src/video/khronos/GLES2/gl2platform.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/video/khronos/GLES2/gl2platform.h rename to 3rd_party/sdl-2.0.20/src/video/khronos/GLES2/gl2platform.h diff --git a/code/3rd_party/sdl-2.0.20/src/video/khronos/KHR/khrplatform.h b/3rd_party/sdl-2.0.20/src/video/khronos/KHR/khrplatform.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/video/khronos/KHR/khrplatform.h rename to 3rd_party/sdl-2.0.20/src/video/khronos/KHR/khrplatform.h diff --git a/code/3rd_party/sdl-2.0.20/src/video/khronos/vulkan/vk_icd.h b/3rd_party/sdl-2.0.20/src/video/khronos/vulkan/vk_icd.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/video/khronos/vulkan/vk_icd.h rename to 3rd_party/sdl-2.0.20/src/video/khronos/vulkan/vk_icd.h diff --git a/code/3rd_party/sdl-2.0.20/src/video/khronos/vulkan/vk_layer.h b/3rd_party/sdl-2.0.20/src/video/khronos/vulkan/vk_layer.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/video/khronos/vulkan/vk_layer.h rename to 3rd_party/sdl-2.0.20/src/video/khronos/vulkan/vk_layer.h diff --git a/code/3rd_party/sdl-2.0.20/src/video/khronos/vulkan/vk_platform.h b/3rd_party/sdl-2.0.20/src/video/khronos/vulkan/vk_platform.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/video/khronos/vulkan/vk_platform.h rename to 3rd_party/sdl-2.0.20/src/video/khronos/vulkan/vk_platform.h diff --git a/code/3rd_party/sdl-2.0.20/src/video/khronos/vulkan/vk_sdk_platform.h b/3rd_party/sdl-2.0.20/src/video/khronos/vulkan/vk_sdk_platform.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/video/khronos/vulkan/vk_sdk_platform.h rename to 3rd_party/sdl-2.0.20/src/video/khronos/vulkan/vk_sdk_platform.h diff --git a/code/3rd_party/sdl-2.0.20/src/video/khronos/vulkan/vulkan.h b/3rd_party/sdl-2.0.20/src/video/khronos/vulkan/vulkan.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/video/khronos/vulkan/vulkan.h rename to 3rd_party/sdl-2.0.20/src/video/khronos/vulkan/vulkan.h diff --git a/code/3rd_party/sdl-2.0.20/src/video/khronos/vulkan/vulkan.hpp b/3rd_party/sdl-2.0.20/src/video/khronos/vulkan/vulkan.hpp similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/video/khronos/vulkan/vulkan.hpp rename to 3rd_party/sdl-2.0.20/src/video/khronos/vulkan/vulkan.hpp diff --git a/code/3rd_party/sdl-2.0.20/src/video/khronos/vulkan/vulkan_android.h b/3rd_party/sdl-2.0.20/src/video/khronos/vulkan/vulkan_android.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/video/khronos/vulkan/vulkan_android.h rename to 3rd_party/sdl-2.0.20/src/video/khronos/vulkan/vulkan_android.h diff --git a/code/3rd_party/sdl-2.0.20/src/video/khronos/vulkan/vulkan_beta.h b/3rd_party/sdl-2.0.20/src/video/khronos/vulkan/vulkan_beta.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/video/khronos/vulkan/vulkan_beta.h rename to 3rd_party/sdl-2.0.20/src/video/khronos/vulkan/vulkan_beta.h diff --git a/code/3rd_party/sdl-2.0.20/src/video/khronos/vulkan/vulkan_core.h b/3rd_party/sdl-2.0.20/src/video/khronos/vulkan/vulkan_core.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/video/khronos/vulkan/vulkan_core.h rename to 3rd_party/sdl-2.0.20/src/video/khronos/vulkan/vulkan_core.h diff --git a/code/3rd_party/sdl-2.0.20/src/video/khronos/vulkan/vulkan_directfb.h b/3rd_party/sdl-2.0.20/src/video/khronos/vulkan/vulkan_directfb.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/video/khronos/vulkan/vulkan_directfb.h rename to 3rd_party/sdl-2.0.20/src/video/khronos/vulkan/vulkan_directfb.h diff --git a/code/3rd_party/sdl-2.0.20/src/video/khronos/vulkan/vulkan_fuchsia.h b/3rd_party/sdl-2.0.20/src/video/khronos/vulkan/vulkan_fuchsia.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/video/khronos/vulkan/vulkan_fuchsia.h rename to 3rd_party/sdl-2.0.20/src/video/khronos/vulkan/vulkan_fuchsia.h diff --git a/code/3rd_party/sdl-2.0.20/src/video/khronos/vulkan/vulkan_ggp.h b/3rd_party/sdl-2.0.20/src/video/khronos/vulkan/vulkan_ggp.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/video/khronos/vulkan/vulkan_ggp.h rename to 3rd_party/sdl-2.0.20/src/video/khronos/vulkan/vulkan_ggp.h diff --git a/code/3rd_party/sdl-2.0.20/src/video/khronos/vulkan/vulkan_ios.h b/3rd_party/sdl-2.0.20/src/video/khronos/vulkan/vulkan_ios.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/video/khronos/vulkan/vulkan_ios.h rename to 3rd_party/sdl-2.0.20/src/video/khronos/vulkan/vulkan_ios.h diff --git a/code/3rd_party/sdl-2.0.20/src/video/khronos/vulkan/vulkan_macos.h b/3rd_party/sdl-2.0.20/src/video/khronos/vulkan/vulkan_macos.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/video/khronos/vulkan/vulkan_macos.h rename to 3rd_party/sdl-2.0.20/src/video/khronos/vulkan/vulkan_macos.h diff --git a/code/3rd_party/sdl-2.0.20/src/video/khronos/vulkan/vulkan_metal.h b/3rd_party/sdl-2.0.20/src/video/khronos/vulkan/vulkan_metal.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/video/khronos/vulkan/vulkan_metal.h rename to 3rd_party/sdl-2.0.20/src/video/khronos/vulkan/vulkan_metal.h diff --git a/code/3rd_party/sdl-2.0.20/src/video/khronos/vulkan/vulkan_vi.h b/3rd_party/sdl-2.0.20/src/video/khronos/vulkan/vulkan_vi.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/video/khronos/vulkan/vulkan_vi.h rename to 3rd_party/sdl-2.0.20/src/video/khronos/vulkan/vulkan_vi.h diff --git a/code/3rd_party/sdl-2.0.20/src/video/khronos/vulkan/vulkan_wayland.h b/3rd_party/sdl-2.0.20/src/video/khronos/vulkan/vulkan_wayland.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/video/khronos/vulkan/vulkan_wayland.h rename to 3rd_party/sdl-2.0.20/src/video/khronos/vulkan/vulkan_wayland.h diff --git a/code/3rd_party/sdl-2.0.20/src/video/khronos/vulkan/vulkan_win32.h b/3rd_party/sdl-2.0.20/src/video/khronos/vulkan/vulkan_win32.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/video/khronos/vulkan/vulkan_win32.h rename to 3rd_party/sdl-2.0.20/src/video/khronos/vulkan/vulkan_win32.h diff --git a/code/3rd_party/sdl-2.0.20/src/video/khronos/vulkan/vulkan_xcb.h b/3rd_party/sdl-2.0.20/src/video/khronos/vulkan/vulkan_xcb.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/video/khronos/vulkan/vulkan_xcb.h rename to 3rd_party/sdl-2.0.20/src/video/khronos/vulkan/vulkan_xcb.h diff --git a/code/3rd_party/sdl-2.0.20/src/video/khronos/vulkan/vulkan_xlib.h b/3rd_party/sdl-2.0.20/src/video/khronos/vulkan/vulkan_xlib.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/video/khronos/vulkan/vulkan_xlib.h rename to 3rd_party/sdl-2.0.20/src/video/khronos/vulkan/vulkan_xlib.h diff --git a/code/3rd_party/sdl-2.0.20/src/video/khronos/vulkan/vulkan_xlib_xrandr.h b/3rd_party/sdl-2.0.20/src/video/khronos/vulkan/vulkan_xlib_xrandr.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/video/khronos/vulkan/vulkan_xlib_xrandr.h rename to 3rd_party/sdl-2.0.20/src/video/khronos/vulkan/vulkan_xlib_xrandr.h diff --git a/code/3rd_party/sdl-2.0.20/src/video/kmsdrm/SDL_kmsdrmdyn.c b/3rd_party/sdl-2.0.20/src/video/kmsdrm/SDL_kmsdrmdyn.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/video/kmsdrm/SDL_kmsdrmdyn.c rename to 3rd_party/sdl-2.0.20/src/video/kmsdrm/SDL_kmsdrmdyn.c diff --git a/code/3rd_party/sdl-2.0.20/src/video/kmsdrm/SDL_kmsdrmdyn.h b/3rd_party/sdl-2.0.20/src/video/kmsdrm/SDL_kmsdrmdyn.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/video/kmsdrm/SDL_kmsdrmdyn.h rename to 3rd_party/sdl-2.0.20/src/video/kmsdrm/SDL_kmsdrmdyn.h diff --git a/code/3rd_party/sdl-2.0.20/src/video/kmsdrm/SDL_kmsdrmevents.c b/3rd_party/sdl-2.0.20/src/video/kmsdrm/SDL_kmsdrmevents.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/video/kmsdrm/SDL_kmsdrmevents.c rename to 3rd_party/sdl-2.0.20/src/video/kmsdrm/SDL_kmsdrmevents.c diff --git a/code/3rd_party/sdl-2.0.20/src/video/kmsdrm/SDL_kmsdrmevents.h b/3rd_party/sdl-2.0.20/src/video/kmsdrm/SDL_kmsdrmevents.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/video/kmsdrm/SDL_kmsdrmevents.h rename to 3rd_party/sdl-2.0.20/src/video/kmsdrm/SDL_kmsdrmevents.h diff --git a/code/3rd_party/sdl-2.0.20/src/video/kmsdrm/SDL_kmsdrmmouse.c b/3rd_party/sdl-2.0.20/src/video/kmsdrm/SDL_kmsdrmmouse.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/video/kmsdrm/SDL_kmsdrmmouse.c rename to 3rd_party/sdl-2.0.20/src/video/kmsdrm/SDL_kmsdrmmouse.c diff --git a/code/3rd_party/sdl-2.0.20/src/video/kmsdrm/SDL_kmsdrmmouse.h b/3rd_party/sdl-2.0.20/src/video/kmsdrm/SDL_kmsdrmmouse.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/video/kmsdrm/SDL_kmsdrmmouse.h rename to 3rd_party/sdl-2.0.20/src/video/kmsdrm/SDL_kmsdrmmouse.h diff --git a/code/3rd_party/sdl-2.0.20/src/video/kmsdrm/SDL_kmsdrmopengles.c b/3rd_party/sdl-2.0.20/src/video/kmsdrm/SDL_kmsdrmopengles.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/video/kmsdrm/SDL_kmsdrmopengles.c rename to 3rd_party/sdl-2.0.20/src/video/kmsdrm/SDL_kmsdrmopengles.c diff --git a/code/3rd_party/sdl-2.0.20/src/video/kmsdrm/SDL_kmsdrmopengles.h b/3rd_party/sdl-2.0.20/src/video/kmsdrm/SDL_kmsdrmopengles.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/video/kmsdrm/SDL_kmsdrmopengles.h rename to 3rd_party/sdl-2.0.20/src/video/kmsdrm/SDL_kmsdrmopengles.h diff --git a/code/3rd_party/sdl-2.0.20/src/video/kmsdrm/SDL_kmsdrmsym.h b/3rd_party/sdl-2.0.20/src/video/kmsdrm/SDL_kmsdrmsym.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/video/kmsdrm/SDL_kmsdrmsym.h rename to 3rd_party/sdl-2.0.20/src/video/kmsdrm/SDL_kmsdrmsym.h diff --git a/code/3rd_party/sdl-2.0.20/src/video/kmsdrm/SDL_kmsdrmvideo.c b/3rd_party/sdl-2.0.20/src/video/kmsdrm/SDL_kmsdrmvideo.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/video/kmsdrm/SDL_kmsdrmvideo.c rename to 3rd_party/sdl-2.0.20/src/video/kmsdrm/SDL_kmsdrmvideo.c diff --git a/code/3rd_party/sdl-2.0.20/src/video/kmsdrm/SDL_kmsdrmvideo.h b/3rd_party/sdl-2.0.20/src/video/kmsdrm/SDL_kmsdrmvideo.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/video/kmsdrm/SDL_kmsdrmvideo.h rename to 3rd_party/sdl-2.0.20/src/video/kmsdrm/SDL_kmsdrmvideo.h diff --git a/code/3rd_party/sdl-2.0.20/src/video/kmsdrm/SDL_kmsdrmvulkan.c b/3rd_party/sdl-2.0.20/src/video/kmsdrm/SDL_kmsdrmvulkan.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/video/kmsdrm/SDL_kmsdrmvulkan.c rename to 3rd_party/sdl-2.0.20/src/video/kmsdrm/SDL_kmsdrmvulkan.c diff --git a/code/3rd_party/sdl-2.0.20/src/video/kmsdrm/SDL_kmsdrmvulkan.h b/3rd_party/sdl-2.0.20/src/video/kmsdrm/SDL_kmsdrmvulkan.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/video/kmsdrm/SDL_kmsdrmvulkan.h rename to 3rd_party/sdl-2.0.20/src/video/kmsdrm/SDL_kmsdrmvulkan.h diff --git a/code/3rd_party/sdl-2.0.20/src/video/nacl/SDL_naclevents.c b/3rd_party/sdl-2.0.20/src/video/nacl/SDL_naclevents.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/video/nacl/SDL_naclevents.c rename to 3rd_party/sdl-2.0.20/src/video/nacl/SDL_naclevents.c diff --git a/code/3rd_party/sdl-2.0.20/src/video/nacl/SDL_naclevents_c.h b/3rd_party/sdl-2.0.20/src/video/nacl/SDL_naclevents_c.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/video/nacl/SDL_naclevents_c.h rename to 3rd_party/sdl-2.0.20/src/video/nacl/SDL_naclevents_c.h diff --git a/code/3rd_party/sdl-2.0.20/src/video/nacl/SDL_naclglue.c b/3rd_party/sdl-2.0.20/src/video/nacl/SDL_naclglue.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/video/nacl/SDL_naclglue.c rename to 3rd_party/sdl-2.0.20/src/video/nacl/SDL_naclglue.c diff --git a/code/3rd_party/sdl-2.0.20/src/video/nacl/SDL_naclopengles.c b/3rd_party/sdl-2.0.20/src/video/nacl/SDL_naclopengles.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/video/nacl/SDL_naclopengles.c rename to 3rd_party/sdl-2.0.20/src/video/nacl/SDL_naclopengles.c diff --git a/code/3rd_party/sdl-2.0.20/src/video/nacl/SDL_naclopengles.h b/3rd_party/sdl-2.0.20/src/video/nacl/SDL_naclopengles.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/video/nacl/SDL_naclopengles.h rename to 3rd_party/sdl-2.0.20/src/video/nacl/SDL_naclopengles.h diff --git a/code/3rd_party/sdl-2.0.20/src/video/nacl/SDL_naclvideo.c b/3rd_party/sdl-2.0.20/src/video/nacl/SDL_naclvideo.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/video/nacl/SDL_naclvideo.c rename to 3rd_party/sdl-2.0.20/src/video/nacl/SDL_naclvideo.c diff --git a/code/3rd_party/sdl-2.0.20/src/video/nacl/SDL_naclvideo.h b/3rd_party/sdl-2.0.20/src/video/nacl/SDL_naclvideo.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/video/nacl/SDL_naclvideo.h rename to 3rd_party/sdl-2.0.20/src/video/nacl/SDL_naclvideo.h diff --git a/code/3rd_party/sdl-2.0.20/src/video/nacl/SDL_naclwindow.c b/3rd_party/sdl-2.0.20/src/video/nacl/SDL_naclwindow.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/video/nacl/SDL_naclwindow.c rename to 3rd_party/sdl-2.0.20/src/video/nacl/SDL_naclwindow.c diff --git a/code/3rd_party/sdl-2.0.20/src/video/nacl/SDL_naclwindow.h b/3rd_party/sdl-2.0.20/src/video/nacl/SDL_naclwindow.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/video/nacl/SDL_naclwindow.h rename to 3rd_party/sdl-2.0.20/src/video/nacl/SDL_naclwindow.h diff --git a/code/3rd_party/sdl-2.0.20/src/video/offscreen/SDL_offscreenevents.c b/3rd_party/sdl-2.0.20/src/video/offscreen/SDL_offscreenevents.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/video/offscreen/SDL_offscreenevents.c rename to 3rd_party/sdl-2.0.20/src/video/offscreen/SDL_offscreenevents.c diff --git a/code/3rd_party/sdl-2.0.20/src/video/offscreen/SDL_offscreenevents_c.h b/3rd_party/sdl-2.0.20/src/video/offscreen/SDL_offscreenevents_c.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/video/offscreen/SDL_offscreenevents_c.h rename to 3rd_party/sdl-2.0.20/src/video/offscreen/SDL_offscreenevents_c.h diff --git a/code/3rd_party/sdl-2.0.20/src/video/offscreen/SDL_offscreenframebuffer.c b/3rd_party/sdl-2.0.20/src/video/offscreen/SDL_offscreenframebuffer.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/video/offscreen/SDL_offscreenframebuffer.c rename to 3rd_party/sdl-2.0.20/src/video/offscreen/SDL_offscreenframebuffer.c diff --git a/code/3rd_party/sdl-2.0.20/src/video/offscreen/SDL_offscreenframebuffer_c.h b/3rd_party/sdl-2.0.20/src/video/offscreen/SDL_offscreenframebuffer_c.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/video/offscreen/SDL_offscreenframebuffer_c.h rename to 3rd_party/sdl-2.0.20/src/video/offscreen/SDL_offscreenframebuffer_c.h diff --git a/code/3rd_party/sdl-2.0.20/src/video/offscreen/SDL_offscreenopengl.c b/3rd_party/sdl-2.0.20/src/video/offscreen/SDL_offscreenopengl.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/video/offscreen/SDL_offscreenopengl.c rename to 3rd_party/sdl-2.0.20/src/video/offscreen/SDL_offscreenopengl.c diff --git a/code/3rd_party/sdl-2.0.20/src/video/offscreen/SDL_offscreenopengl.h b/3rd_party/sdl-2.0.20/src/video/offscreen/SDL_offscreenopengl.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/video/offscreen/SDL_offscreenopengl.h rename to 3rd_party/sdl-2.0.20/src/video/offscreen/SDL_offscreenopengl.h diff --git a/code/3rd_party/sdl-2.0.20/src/video/offscreen/SDL_offscreenvideo.c b/3rd_party/sdl-2.0.20/src/video/offscreen/SDL_offscreenvideo.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/video/offscreen/SDL_offscreenvideo.c rename to 3rd_party/sdl-2.0.20/src/video/offscreen/SDL_offscreenvideo.c diff --git a/code/3rd_party/sdl-2.0.20/src/video/offscreen/SDL_offscreenvideo.h b/3rd_party/sdl-2.0.20/src/video/offscreen/SDL_offscreenvideo.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/video/offscreen/SDL_offscreenvideo.h rename to 3rd_party/sdl-2.0.20/src/video/offscreen/SDL_offscreenvideo.h diff --git a/code/3rd_party/sdl-2.0.20/src/video/offscreen/SDL_offscreenwindow.c b/3rd_party/sdl-2.0.20/src/video/offscreen/SDL_offscreenwindow.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/video/offscreen/SDL_offscreenwindow.c rename to 3rd_party/sdl-2.0.20/src/video/offscreen/SDL_offscreenwindow.c diff --git a/code/3rd_party/sdl-2.0.20/src/video/offscreen/SDL_offscreenwindow.h b/3rd_party/sdl-2.0.20/src/video/offscreen/SDL_offscreenwindow.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/video/offscreen/SDL_offscreenwindow.h rename to 3rd_party/sdl-2.0.20/src/video/offscreen/SDL_offscreenwindow.h diff --git a/code/3rd_party/sdl-2.0.20/src/video/os2/SDL_gradd.h b/3rd_party/sdl-2.0.20/src/video/os2/SDL_gradd.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/video/os2/SDL_gradd.h rename to 3rd_party/sdl-2.0.20/src/video/os2/SDL_gradd.h diff --git a/code/3rd_party/sdl-2.0.20/src/video/os2/SDL_os2dive.c b/3rd_party/sdl-2.0.20/src/video/os2/SDL_os2dive.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/video/os2/SDL_os2dive.c rename to 3rd_party/sdl-2.0.20/src/video/os2/SDL_os2dive.c diff --git a/code/3rd_party/sdl-2.0.20/src/video/os2/SDL_os2messagebox.c b/3rd_party/sdl-2.0.20/src/video/os2/SDL_os2messagebox.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/video/os2/SDL_os2messagebox.c rename to 3rd_party/sdl-2.0.20/src/video/os2/SDL_os2messagebox.c diff --git a/code/3rd_party/sdl-2.0.20/src/video/os2/SDL_os2messagebox.h b/3rd_party/sdl-2.0.20/src/video/os2/SDL_os2messagebox.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/video/os2/SDL_os2messagebox.h rename to 3rd_party/sdl-2.0.20/src/video/os2/SDL_os2messagebox.h diff --git a/code/3rd_party/sdl-2.0.20/src/video/os2/SDL_os2mouse.c b/3rd_party/sdl-2.0.20/src/video/os2/SDL_os2mouse.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/video/os2/SDL_os2mouse.c rename to 3rd_party/sdl-2.0.20/src/video/os2/SDL_os2mouse.c diff --git a/code/3rd_party/sdl-2.0.20/src/video/os2/SDL_os2mouse.h b/3rd_party/sdl-2.0.20/src/video/os2/SDL_os2mouse.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/video/os2/SDL_os2mouse.h rename to 3rd_party/sdl-2.0.20/src/video/os2/SDL_os2mouse.h diff --git a/code/3rd_party/sdl-2.0.20/src/video/os2/SDL_os2output.h b/3rd_party/sdl-2.0.20/src/video/os2/SDL_os2output.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/video/os2/SDL_os2output.h rename to 3rd_party/sdl-2.0.20/src/video/os2/SDL_os2output.h diff --git a/code/3rd_party/sdl-2.0.20/src/video/os2/SDL_os2util.c b/3rd_party/sdl-2.0.20/src/video/os2/SDL_os2util.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/video/os2/SDL_os2util.c rename to 3rd_party/sdl-2.0.20/src/video/os2/SDL_os2util.c diff --git a/code/3rd_party/sdl-2.0.20/src/video/os2/SDL_os2util.h b/3rd_party/sdl-2.0.20/src/video/os2/SDL_os2util.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/video/os2/SDL_os2util.h rename to 3rd_party/sdl-2.0.20/src/video/os2/SDL_os2util.h diff --git a/code/3rd_party/sdl-2.0.20/src/video/os2/SDL_os2video.c b/3rd_party/sdl-2.0.20/src/video/os2/SDL_os2video.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/video/os2/SDL_os2video.c rename to 3rd_party/sdl-2.0.20/src/video/os2/SDL_os2video.c diff --git a/code/3rd_party/sdl-2.0.20/src/video/os2/SDL_os2video.h b/3rd_party/sdl-2.0.20/src/video/os2/SDL_os2video.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/video/os2/SDL_os2video.h rename to 3rd_party/sdl-2.0.20/src/video/os2/SDL_os2video.h diff --git a/code/3rd_party/sdl-2.0.20/src/video/os2/SDL_os2vman.c b/3rd_party/sdl-2.0.20/src/video/os2/SDL_os2vman.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/video/os2/SDL_os2vman.c rename to 3rd_party/sdl-2.0.20/src/video/os2/SDL_os2vman.c diff --git a/code/3rd_party/sdl-2.0.20/src/video/pandora/SDL_pandora.c b/3rd_party/sdl-2.0.20/src/video/pandora/SDL_pandora.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/video/pandora/SDL_pandora.c rename to 3rd_party/sdl-2.0.20/src/video/pandora/SDL_pandora.c diff --git a/code/3rd_party/sdl-2.0.20/src/video/pandora/SDL_pandora.h b/3rd_party/sdl-2.0.20/src/video/pandora/SDL_pandora.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/video/pandora/SDL_pandora.h rename to 3rd_party/sdl-2.0.20/src/video/pandora/SDL_pandora.h diff --git a/code/3rd_party/sdl-2.0.20/src/video/pandora/SDL_pandora_events.c b/3rd_party/sdl-2.0.20/src/video/pandora/SDL_pandora_events.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/video/pandora/SDL_pandora_events.c rename to 3rd_party/sdl-2.0.20/src/video/pandora/SDL_pandora_events.c diff --git a/code/3rd_party/sdl-2.0.20/src/video/pandora/SDL_pandora_events.h b/3rd_party/sdl-2.0.20/src/video/pandora/SDL_pandora_events.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/video/pandora/SDL_pandora_events.h rename to 3rd_party/sdl-2.0.20/src/video/pandora/SDL_pandora_events.h diff --git a/code/3rd_party/sdl-2.0.20/src/video/psp/SDL_pspevents.c b/3rd_party/sdl-2.0.20/src/video/psp/SDL_pspevents.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/video/psp/SDL_pspevents.c rename to 3rd_party/sdl-2.0.20/src/video/psp/SDL_pspevents.c diff --git a/code/3rd_party/sdl-2.0.20/src/video/psp/SDL_pspevents_c.h b/3rd_party/sdl-2.0.20/src/video/psp/SDL_pspevents_c.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/video/psp/SDL_pspevents_c.h rename to 3rd_party/sdl-2.0.20/src/video/psp/SDL_pspevents_c.h diff --git a/code/3rd_party/sdl-2.0.20/src/video/psp/SDL_pspgl.c b/3rd_party/sdl-2.0.20/src/video/psp/SDL_pspgl.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/video/psp/SDL_pspgl.c rename to 3rd_party/sdl-2.0.20/src/video/psp/SDL_pspgl.c diff --git a/code/3rd_party/sdl-2.0.20/src/video/psp/SDL_pspgl_c.h b/3rd_party/sdl-2.0.20/src/video/psp/SDL_pspgl_c.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/video/psp/SDL_pspgl_c.h rename to 3rd_party/sdl-2.0.20/src/video/psp/SDL_pspgl_c.h diff --git a/code/3rd_party/sdl-2.0.20/src/video/psp/SDL_pspmouse.c b/3rd_party/sdl-2.0.20/src/video/psp/SDL_pspmouse.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/video/psp/SDL_pspmouse.c rename to 3rd_party/sdl-2.0.20/src/video/psp/SDL_pspmouse.c diff --git a/code/3rd_party/sdl-2.0.20/src/video/psp/SDL_pspmouse_c.h b/3rd_party/sdl-2.0.20/src/video/psp/SDL_pspmouse_c.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/video/psp/SDL_pspmouse_c.h rename to 3rd_party/sdl-2.0.20/src/video/psp/SDL_pspmouse_c.h diff --git a/code/3rd_party/sdl-2.0.20/src/video/psp/SDL_pspvideo.c b/3rd_party/sdl-2.0.20/src/video/psp/SDL_pspvideo.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/video/psp/SDL_pspvideo.c rename to 3rd_party/sdl-2.0.20/src/video/psp/SDL_pspvideo.c diff --git a/code/3rd_party/sdl-2.0.20/src/video/psp/SDL_pspvideo.h b/3rd_party/sdl-2.0.20/src/video/psp/SDL_pspvideo.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/video/psp/SDL_pspvideo.h rename to 3rd_party/sdl-2.0.20/src/video/psp/SDL_pspvideo.h diff --git a/code/3rd_party/sdl-2.0.20/src/video/qnx/gl.c b/3rd_party/sdl-2.0.20/src/video/qnx/gl.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/video/qnx/gl.c rename to 3rd_party/sdl-2.0.20/src/video/qnx/gl.c diff --git a/code/3rd_party/sdl-2.0.20/src/video/qnx/keyboard.c b/3rd_party/sdl-2.0.20/src/video/qnx/keyboard.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/video/qnx/keyboard.c rename to 3rd_party/sdl-2.0.20/src/video/qnx/keyboard.c diff --git a/code/3rd_party/sdl-2.0.20/src/video/qnx/sdl_qnx.h b/3rd_party/sdl-2.0.20/src/video/qnx/sdl_qnx.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/video/qnx/sdl_qnx.h rename to 3rd_party/sdl-2.0.20/src/video/qnx/sdl_qnx.h diff --git a/code/3rd_party/sdl-2.0.20/src/video/qnx/video.c b/3rd_party/sdl-2.0.20/src/video/qnx/video.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/video/qnx/video.c rename to 3rd_party/sdl-2.0.20/src/video/qnx/video.c diff --git a/code/3rd_party/sdl-2.0.20/src/video/raspberry/SDL_rpievents.c b/3rd_party/sdl-2.0.20/src/video/raspberry/SDL_rpievents.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/video/raspberry/SDL_rpievents.c rename to 3rd_party/sdl-2.0.20/src/video/raspberry/SDL_rpievents.c diff --git a/code/3rd_party/sdl-2.0.20/src/video/raspberry/SDL_rpievents_c.h b/3rd_party/sdl-2.0.20/src/video/raspberry/SDL_rpievents_c.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/video/raspberry/SDL_rpievents_c.h rename to 3rd_party/sdl-2.0.20/src/video/raspberry/SDL_rpievents_c.h diff --git a/code/3rd_party/sdl-2.0.20/src/video/raspberry/SDL_rpimouse.c b/3rd_party/sdl-2.0.20/src/video/raspberry/SDL_rpimouse.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/video/raspberry/SDL_rpimouse.c rename to 3rd_party/sdl-2.0.20/src/video/raspberry/SDL_rpimouse.c diff --git a/code/3rd_party/sdl-2.0.20/src/video/raspberry/SDL_rpimouse.h b/3rd_party/sdl-2.0.20/src/video/raspberry/SDL_rpimouse.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/video/raspberry/SDL_rpimouse.h rename to 3rd_party/sdl-2.0.20/src/video/raspberry/SDL_rpimouse.h diff --git a/code/3rd_party/sdl-2.0.20/src/video/raspberry/SDL_rpiopengles.c b/3rd_party/sdl-2.0.20/src/video/raspberry/SDL_rpiopengles.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/video/raspberry/SDL_rpiopengles.c rename to 3rd_party/sdl-2.0.20/src/video/raspberry/SDL_rpiopengles.c diff --git a/code/3rd_party/sdl-2.0.20/src/video/raspberry/SDL_rpiopengles.h b/3rd_party/sdl-2.0.20/src/video/raspberry/SDL_rpiopengles.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/video/raspberry/SDL_rpiopengles.h rename to 3rd_party/sdl-2.0.20/src/video/raspberry/SDL_rpiopengles.h diff --git a/code/3rd_party/sdl-2.0.20/src/video/raspberry/SDL_rpivideo.c b/3rd_party/sdl-2.0.20/src/video/raspberry/SDL_rpivideo.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/video/raspberry/SDL_rpivideo.c rename to 3rd_party/sdl-2.0.20/src/video/raspberry/SDL_rpivideo.c diff --git a/code/3rd_party/sdl-2.0.20/src/video/raspberry/SDL_rpivideo.h b/3rd_party/sdl-2.0.20/src/video/raspberry/SDL_rpivideo.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/video/raspberry/SDL_rpivideo.h rename to 3rd_party/sdl-2.0.20/src/video/raspberry/SDL_rpivideo.h diff --git a/code/3rd_party/sdl-2.0.20/src/video/riscos/SDL_riscosdefs.h b/3rd_party/sdl-2.0.20/src/video/riscos/SDL_riscosdefs.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/video/riscos/SDL_riscosdefs.h rename to 3rd_party/sdl-2.0.20/src/video/riscos/SDL_riscosdefs.h diff --git a/code/3rd_party/sdl-2.0.20/src/video/riscos/SDL_riscosevents.c b/3rd_party/sdl-2.0.20/src/video/riscos/SDL_riscosevents.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/video/riscos/SDL_riscosevents.c rename to 3rd_party/sdl-2.0.20/src/video/riscos/SDL_riscosevents.c diff --git a/code/3rd_party/sdl-2.0.20/src/video/riscos/SDL_riscosevents_c.h b/3rd_party/sdl-2.0.20/src/video/riscos/SDL_riscosevents_c.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/video/riscos/SDL_riscosevents_c.h rename to 3rd_party/sdl-2.0.20/src/video/riscos/SDL_riscosevents_c.h diff --git a/code/3rd_party/sdl-2.0.20/src/video/riscos/SDL_riscosframebuffer.c b/3rd_party/sdl-2.0.20/src/video/riscos/SDL_riscosframebuffer.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/video/riscos/SDL_riscosframebuffer.c rename to 3rd_party/sdl-2.0.20/src/video/riscos/SDL_riscosframebuffer.c diff --git a/code/3rd_party/sdl-2.0.20/src/video/riscos/SDL_riscosframebuffer_c.h b/3rd_party/sdl-2.0.20/src/video/riscos/SDL_riscosframebuffer_c.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/video/riscos/SDL_riscosframebuffer_c.h rename to 3rd_party/sdl-2.0.20/src/video/riscos/SDL_riscosframebuffer_c.h diff --git a/code/3rd_party/sdl-2.0.20/src/video/riscos/SDL_riscosmessagebox.c b/3rd_party/sdl-2.0.20/src/video/riscos/SDL_riscosmessagebox.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/video/riscos/SDL_riscosmessagebox.c rename to 3rd_party/sdl-2.0.20/src/video/riscos/SDL_riscosmessagebox.c diff --git a/code/3rd_party/sdl-2.0.20/src/video/riscos/SDL_riscosmessagebox.h b/3rd_party/sdl-2.0.20/src/video/riscos/SDL_riscosmessagebox.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/video/riscos/SDL_riscosmessagebox.h rename to 3rd_party/sdl-2.0.20/src/video/riscos/SDL_riscosmessagebox.h diff --git a/code/3rd_party/sdl-2.0.20/src/video/riscos/SDL_riscosmodes.c b/3rd_party/sdl-2.0.20/src/video/riscos/SDL_riscosmodes.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/video/riscos/SDL_riscosmodes.c rename to 3rd_party/sdl-2.0.20/src/video/riscos/SDL_riscosmodes.c diff --git a/code/3rd_party/sdl-2.0.20/src/video/riscos/SDL_riscosmodes.h b/3rd_party/sdl-2.0.20/src/video/riscos/SDL_riscosmodes.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/video/riscos/SDL_riscosmodes.h rename to 3rd_party/sdl-2.0.20/src/video/riscos/SDL_riscosmodes.h diff --git a/code/3rd_party/sdl-2.0.20/src/video/riscos/SDL_riscosvideo.c b/3rd_party/sdl-2.0.20/src/video/riscos/SDL_riscosvideo.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/video/riscos/SDL_riscosvideo.c rename to 3rd_party/sdl-2.0.20/src/video/riscos/SDL_riscosvideo.c diff --git a/code/3rd_party/sdl-2.0.20/src/video/riscos/SDL_riscosvideo.h b/3rd_party/sdl-2.0.20/src/video/riscos/SDL_riscosvideo.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/video/riscos/SDL_riscosvideo.h rename to 3rd_party/sdl-2.0.20/src/video/riscos/SDL_riscosvideo.h diff --git a/code/3rd_party/sdl-2.0.20/src/video/riscos/SDL_riscoswindow.c b/3rd_party/sdl-2.0.20/src/video/riscos/SDL_riscoswindow.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/video/riscos/SDL_riscoswindow.c rename to 3rd_party/sdl-2.0.20/src/video/riscos/SDL_riscoswindow.c diff --git a/code/3rd_party/sdl-2.0.20/src/video/riscos/SDL_riscoswindow.h b/3rd_party/sdl-2.0.20/src/video/riscos/SDL_riscoswindow.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/video/riscos/SDL_riscoswindow.h rename to 3rd_party/sdl-2.0.20/src/video/riscos/SDL_riscoswindow.h diff --git a/code/3rd_party/sdl-2.0.20/src/video/riscos/scancodes_riscos.h b/3rd_party/sdl-2.0.20/src/video/riscos/scancodes_riscos.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/video/riscos/scancodes_riscos.h rename to 3rd_party/sdl-2.0.20/src/video/riscos/scancodes_riscos.h diff --git a/code/3rd_party/sdl-2.0.20/src/video/sdlgenblit.pl b/3rd_party/sdl-2.0.20/src/video/sdlgenblit.pl similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/video/sdlgenblit.pl rename to 3rd_party/sdl-2.0.20/src/video/sdlgenblit.pl diff --git a/code/3rd_party/sdl-2.0.20/src/video/uikit/SDL_uikitappdelegate.h b/3rd_party/sdl-2.0.20/src/video/uikit/SDL_uikitappdelegate.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/video/uikit/SDL_uikitappdelegate.h rename to 3rd_party/sdl-2.0.20/src/video/uikit/SDL_uikitappdelegate.h diff --git a/code/3rd_party/sdl-2.0.20/src/video/uikit/SDL_uikitappdelegate.m b/3rd_party/sdl-2.0.20/src/video/uikit/SDL_uikitappdelegate.m similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/video/uikit/SDL_uikitappdelegate.m rename to 3rd_party/sdl-2.0.20/src/video/uikit/SDL_uikitappdelegate.m diff --git a/code/3rd_party/sdl-2.0.20/src/video/uikit/SDL_uikitclipboard.h b/3rd_party/sdl-2.0.20/src/video/uikit/SDL_uikitclipboard.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/video/uikit/SDL_uikitclipboard.h rename to 3rd_party/sdl-2.0.20/src/video/uikit/SDL_uikitclipboard.h diff --git a/code/3rd_party/sdl-2.0.20/src/video/uikit/SDL_uikitclipboard.m b/3rd_party/sdl-2.0.20/src/video/uikit/SDL_uikitclipboard.m similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/video/uikit/SDL_uikitclipboard.m rename to 3rd_party/sdl-2.0.20/src/video/uikit/SDL_uikitclipboard.m diff --git a/code/3rd_party/sdl-2.0.20/src/video/uikit/SDL_uikitevents.h b/3rd_party/sdl-2.0.20/src/video/uikit/SDL_uikitevents.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/video/uikit/SDL_uikitevents.h rename to 3rd_party/sdl-2.0.20/src/video/uikit/SDL_uikitevents.h diff --git a/code/3rd_party/sdl-2.0.20/src/video/uikit/SDL_uikitevents.m b/3rd_party/sdl-2.0.20/src/video/uikit/SDL_uikitevents.m similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/video/uikit/SDL_uikitevents.m rename to 3rd_party/sdl-2.0.20/src/video/uikit/SDL_uikitevents.m diff --git a/code/3rd_party/sdl-2.0.20/src/video/uikit/SDL_uikitmessagebox.h b/3rd_party/sdl-2.0.20/src/video/uikit/SDL_uikitmessagebox.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/video/uikit/SDL_uikitmessagebox.h rename to 3rd_party/sdl-2.0.20/src/video/uikit/SDL_uikitmessagebox.h diff --git a/code/3rd_party/sdl-2.0.20/src/video/uikit/SDL_uikitmessagebox.m b/3rd_party/sdl-2.0.20/src/video/uikit/SDL_uikitmessagebox.m similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/video/uikit/SDL_uikitmessagebox.m rename to 3rd_party/sdl-2.0.20/src/video/uikit/SDL_uikitmessagebox.m diff --git a/code/3rd_party/sdl-2.0.20/src/video/uikit/SDL_uikitmetalview.h b/3rd_party/sdl-2.0.20/src/video/uikit/SDL_uikitmetalview.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/video/uikit/SDL_uikitmetalview.h rename to 3rd_party/sdl-2.0.20/src/video/uikit/SDL_uikitmetalview.h diff --git a/code/3rd_party/sdl-2.0.20/src/video/uikit/SDL_uikitmetalview.m b/3rd_party/sdl-2.0.20/src/video/uikit/SDL_uikitmetalview.m similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/video/uikit/SDL_uikitmetalview.m rename to 3rd_party/sdl-2.0.20/src/video/uikit/SDL_uikitmetalview.m diff --git a/code/3rd_party/sdl-2.0.20/src/video/uikit/SDL_uikitmodes.h b/3rd_party/sdl-2.0.20/src/video/uikit/SDL_uikitmodes.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/video/uikit/SDL_uikitmodes.h rename to 3rd_party/sdl-2.0.20/src/video/uikit/SDL_uikitmodes.h diff --git a/code/3rd_party/sdl-2.0.20/src/video/uikit/SDL_uikitmodes.m b/3rd_party/sdl-2.0.20/src/video/uikit/SDL_uikitmodes.m similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/video/uikit/SDL_uikitmodes.m rename to 3rd_party/sdl-2.0.20/src/video/uikit/SDL_uikitmodes.m diff --git a/code/3rd_party/sdl-2.0.20/src/video/uikit/SDL_uikitopengles.h b/3rd_party/sdl-2.0.20/src/video/uikit/SDL_uikitopengles.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/video/uikit/SDL_uikitopengles.h rename to 3rd_party/sdl-2.0.20/src/video/uikit/SDL_uikitopengles.h diff --git a/code/3rd_party/sdl-2.0.20/src/video/uikit/SDL_uikitopengles.m b/3rd_party/sdl-2.0.20/src/video/uikit/SDL_uikitopengles.m similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/video/uikit/SDL_uikitopengles.m rename to 3rd_party/sdl-2.0.20/src/video/uikit/SDL_uikitopengles.m diff --git a/code/3rd_party/sdl-2.0.20/src/video/uikit/SDL_uikitopenglview.h b/3rd_party/sdl-2.0.20/src/video/uikit/SDL_uikitopenglview.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/video/uikit/SDL_uikitopenglview.h rename to 3rd_party/sdl-2.0.20/src/video/uikit/SDL_uikitopenglview.h diff --git a/code/3rd_party/sdl-2.0.20/src/video/uikit/SDL_uikitopenglview.m b/3rd_party/sdl-2.0.20/src/video/uikit/SDL_uikitopenglview.m similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/video/uikit/SDL_uikitopenglview.m rename to 3rd_party/sdl-2.0.20/src/video/uikit/SDL_uikitopenglview.m diff --git a/code/3rd_party/sdl-2.0.20/src/video/uikit/SDL_uikitvideo.h b/3rd_party/sdl-2.0.20/src/video/uikit/SDL_uikitvideo.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/video/uikit/SDL_uikitvideo.h rename to 3rd_party/sdl-2.0.20/src/video/uikit/SDL_uikitvideo.h diff --git a/code/3rd_party/sdl-2.0.20/src/video/uikit/SDL_uikitvideo.m b/3rd_party/sdl-2.0.20/src/video/uikit/SDL_uikitvideo.m similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/video/uikit/SDL_uikitvideo.m rename to 3rd_party/sdl-2.0.20/src/video/uikit/SDL_uikitvideo.m diff --git a/code/3rd_party/sdl-2.0.20/src/video/uikit/SDL_uikitview.h b/3rd_party/sdl-2.0.20/src/video/uikit/SDL_uikitview.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/video/uikit/SDL_uikitview.h rename to 3rd_party/sdl-2.0.20/src/video/uikit/SDL_uikitview.h diff --git a/code/3rd_party/sdl-2.0.20/src/video/uikit/SDL_uikitview.m b/3rd_party/sdl-2.0.20/src/video/uikit/SDL_uikitview.m similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/video/uikit/SDL_uikitview.m rename to 3rd_party/sdl-2.0.20/src/video/uikit/SDL_uikitview.m diff --git a/code/3rd_party/sdl-2.0.20/src/video/uikit/SDL_uikitviewcontroller.h b/3rd_party/sdl-2.0.20/src/video/uikit/SDL_uikitviewcontroller.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/video/uikit/SDL_uikitviewcontroller.h rename to 3rd_party/sdl-2.0.20/src/video/uikit/SDL_uikitviewcontroller.h diff --git a/code/3rd_party/sdl-2.0.20/src/video/uikit/SDL_uikitviewcontroller.m b/3rd_party/sdl-2.0.20/src/video/uikit/SDL_uikitviewcontroller.m similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/video/uikit/SDL_uikitviewcontroller.m rename to 3rd_party/sdl-2.0.20/src/video/uikit/SDL_uikitviewcontroller.m diff --git a/code/3rd_party/sdl-2.0.20/src/video/uikit/SDL_uikitvulkan.h b/3rd_party/sdl-2.0.20/src/video/uikit/SDL_uikitvulkan.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/video/uikit/SDL_uikitvulkan.h rename to 3rd_party/sdl-2.0.20/src/video/uikit/SDL_uikitvulkan.h diff --git a/code/3rd_party/sdl-2.0.20/src/video/uikit/SDL_uikitvulkan.m b/3rd_party/sdl-2.0.20/src/video/uikit/SDL_uikitvulkan.m similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/video/uikit/SDL_uikitvulkan.m rename to 3rd_party/sdl-2.0.20/src/video/uikit/SDL_uikitvulkan.m diff --git a/code/3rd_party/sdl-2.0.20/src/video/uikit/SDL_uikitwindow.h b/3rd_party/sdl-2.0.20/src/video/uikit/SDL_uikitwindow.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/video/uikit/SDL_uikitwindow.h rename to 3rd_party/sdl-2.0.20/src/video/uikit/SDL_uikitwindow.h diff --git a/code/3rd_party/sdl-2.0.20/src/video/uikit/SDL_uikitwindow.m b/3rd_party/sdl-2.0.20/src/video/uikit/SDL_uikitwindow.m similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/video/uikit/SDL_uikitwindow.m rename to 3rd_party/sdl-2.0.20/src/video/uikit/SDL_uikitwindow.m diff --git a/code/3rd_party/sdl-2.0.20/src/video/uikit/keyinfotable.h b/3rd_party/sdl-2.0.20/src/video/uikit/keyinfotable.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/video/uikit/keyinfotable.h rename to 3rd_party/sdl-2.0.20/src/video/uikit/keyinfotable.h diff --git a/code/3rd_party/sdl-2.0.20/src/video/vita/SDL_vitaframebuffer.c b/3rd_party/sdl-2.0.20/src/video/vita/SDL_vitaframebuffer.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/video/vita/SDL_vitaframebuffer.c rename to 3rd_party/sdl-2.0.20/src/video/vita/SDL_vitaframebuffer.c diff --git a/code/3rd_party/sdl-2.0.20/src/video/vita/SDL_vitaframebuffer.h b/3rd_party/sdl-2.0.20/src/video/vita/SDL_vitaframebuffer.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/video/vita/SDL_vitaframebuffer.h rename to 3rd_party/sdl-2.0.20/src/video/vita/SDL_vitaframebuffer.h diff --git a/code/3rd_party/sdl-2.0.20/src/video/vita/SDL_vitagl.c b/3rd_party/sdl-2.0.20/src/video/vita/SDL_vitagl.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/video/vita/SDL_vitagl.c rename to 3rd_party/sdl-2.0.20/src/video/vita/SDL_vitagl.c diff --git a/code/3rd_party/sdl-2.0.20/src/video/vita/SDL_vitagl_c.h b/3rd_party/sdl-2.0.20/src/video/vita/SDL_vitagl_c.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/video/vita/SDL_vitagl_c.h rename to 3rd_party/sdl-2.0.20/src/video/vita/SDL_vitagl_c.h diff --git a/code/3rd_party/sdl-2.0.20/src/video/vita/SDL_vitagl_pvr.c b/3rd_party/sdl-2.0.20/src/video/vita/SDL_vitagl_pvr.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/video/vita/SDL_vitagl_pvr.c rename to 3rd_party/sdl-2.0.20/src/video/vita/SDL_vitagl_pvr.c diff --git a/code/3rd_party/sdl-2.0.20/src/video/vita/SDL_vitagl_pvr_c.h b/3rd_party/sdl-2.0.20/src/video/vita/SDL_vitagl_pvr_c.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/video/vita/SDL_vitagl_pvr_c.h rename to 3rd_party/sdl-2.0.20/src/video/vita/SDL_vitagl_pvr_c.h diff --git a/code/3rd_party/sdl-2.0.20/src/video/vita/SDL_vitakeyboard.c b/3rd_party/sdl-2.0.20/src/video/vita/SDL_vitakeyboard.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/video/vita/SDL_vitakeyboard.c rename to 3rd_party/sdl-2.0.20/src/video/vita/SDL_vitakeyboard.c diff --git a/code/3rd_party/sdl-2.0.20/src/video/vita/SDL_vitakeyboard.h b/3rd_party/sdl-2.0.20/src/video/vita/SDL_vitakeyboard.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/video/vita/SDL_vitakeyboard.h rename to 3rd_party/sdl-2.0.20/src/video/vita/SDL_vitakeyboard.h diff --git a/code/3rd_party/sdl-2.0.20/src/video/vita/SDL_vitamessagebox.c b/3rd_party/sdl-2.0.20/src/video/vita/SDL_vitamessagebox.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/video/vita/SDL_vitamessagebox.c rename to 3rd_party/sdl-2.0.20/src/video/vita/SDL_vitamessagebox.c diff --git a/code/3rd_party/sdl-2.0.20/src/video/vita/SDL_vitamessagebox.h b/3rd_party/sdl-2.0.20/src/video/vita/SDL_vitamessagebox.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/video/vita/SDL_vitamessagebox.h rename to 3rd_party/sdl-2.0.20/src/video/vita/SDL_vitamessagebox.h diff --git a/code/3rd_party/sdl-2.0.20/src/video/vita/SDL_vitamouse.c b/3rd_party/sdl-2.0.20/src/video/vita/SDL_vitamouse.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/video/vita/SDL_vitamouse.c rename to 3rd_party/sdl-2.0.20/src/video/vita/SDL_vitamouse.c diff --git a/code/3rd_party/sdl-2.0.20/src/video/vita/SDL_vitamouse_c.h b/3rd_party/sdl-2.0.20/src/video/vita/SDL_vitamouse_c.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/video/vita/SDL_vitamouse_c.h rename to 3rd_party/sdl-2.0.20/src/video/vita/SDL_vitamouse_c.h diff --git a/code/3rd_party/sdl-2.0.20/src/video/vita/SDL_vitatouch.c b/3rd_party/sdl-2.0.20/src/video/vita/SDL_vitatouch.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/video/vita/SDL_vitatouch.c rename to 3rd_party/sdl-2.0.20/src/video/vita/SDL_vitatouch.c diff --git a/code/3rd_party/sdl-2.0.20/src/video/vita/SDL_vitatouch.h b/3rd_party/sdl-2.0.20/src/video/vita/SDL_vitatouch.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/video/vita/SDL_vitatouch.h rename to 3rd_party/sdl-2.0.20/src/video/vita/SDL_vitatouch.h diff --git a/code/3rd_party/sdl-2.0.20/src/video/vita/SDL_vitavideo.c b/3rd_party/sdl-2.0.20/src/video/vita/SDL_vitavideo.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/video/vita/SDL_vitavideo.c rename to 3rd_party/sdl-2.0.20/src/video/vita/SDL_vitavideo.c diff --git a/code/3rd_party/sdl-2.0.20/src/video/vita/SDL_vitavideo.h b/3rd_party/sdl-2.0.20/src/video/vita/SDL_vitavideo.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/video/vita/SDL_vitavideo.h rename to 3rd_party/sdl-2.0.20/src/video/vita/SDL_vitavideo.h diff --git a/code/3rd_party/sdl-2.0.20/src/video/vivante/SDL_vivanteopengles.c b/3rd_party/sdl-2.0.20/src/video/vivante/SDL_vivanteopengles.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/video/vivante/SDL_vivanteopengles.c rename to 3rd_party/sdl-2.0.20/src/video/vivante/SDL_vivanteopengles.c diff --git a/code/3rd_party/sdl-2.0.20/src/video/vivante/SDL_vivanteopengles.h b/3rd_party/sdl-2.0.20/src/video/vivante/SDL_vivanteopengles.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/video/vivante/SDL_vivanteopengles.h rename to 3rd_party/sdl-2.0.20/src/video/vivante/SDL_vivanteopengles.h diff --git a/code/3rd_party/sdl-2.0.20/src/video/vivante/SDL_vivanteplatform.c b/3rd_party/sdl-2.0.20/src/video/vivante/SDL_vivanteplatform.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/video/vivante/SDL_vivanteplatform.c rename to 3rd_party/sdl-2.0.20/src/video/vivante/SDL_vivanteplatform.c diff --git a/code/3rd_party/sdl-2.0.20/src/video/vivante/SDL_vivanteplatform.h b/3rd_party/sdl-2.0.20/src/video/vivante/SDL_vivanteplatform.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/video/vivante/SDL_vivanteplatform.h rename to 3rd_party/sdl-2.0.20/src/video/vivante/SDL_vivanteplatform.h diff --git a/code/3rd_party/sdl-2.0.20/src/video/vivante/SDL_vivantevideo.c b/3rd_party/sdl-2.0.20/src/video/vivante/SDL_vivantevideo.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/video/vivante/SDL_vivantevideo.c rename to 3rd_party/sdl-2.0.20/src/video/vivante/SDL_vivantevideo.c diff --git a/code/3rd_party/sdl-2.0.20/src/video/vivante/SDL_vivantevideo.h b/3rd_party/sdl-2.0.20/src/video/vivante/SDL_vivantevideo.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/video/vivante/SDL_vivantevideo.h rename to 3rd_party/sdl-2.0.20/src/video/vivante/SDL_vivantevideo.h diff --git a/code/3rd_party/sdl-2.0.20/src/video/vivante/SDL_vivantevulkan.c b/3rd_party/sdl-2.0.20/src/video/vivante/SDL_vivantevulkan.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/video/vivante/SDL_vivantevulkan.c rename to 3rd_party/sdl-2.0.20/src/video/vivante/SDL_vivantevulkan.c diff --git a/code/3rd_party/sdl-2.0.20/src/video/vivante/SDL_vivantevulkan.h b/3rd_party/sdl-2.0.20/src/video/vivante/SDL_vivantevulkan.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/video/vivante/SDL_vivantevulkan.h rename to 3rd_party/sdl-2.0.20/src/video/vivante/SDL_vivantevulkan.h diff --git a/code/3rd_party/sdl-2.0.20/src/video/wayland/SDL_waylandclipboard.c b/3rd_party/sdl-2.0.20/src/video/wayland/SDL_waylandclipboard.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/video/wayland/SDL_waylandclipboard.c rename to 3rd_party/sdl-2.0.20/src/video/wayland/SDL_waylandclipboard.c diff --git a/code/3rd_party/sdl-2.0.20/src/video/wayland/SDL_waylandclipboard.h b/3rd_party/sdl-2.0.20/src/video/wayland/SDL_waylandclipboard.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/video/wayland/SDL_waylandclipboard.h rename to 3rd_party/sdl-2.0.20/src/video/wayland/SDL_waylandclipboard.h diff --git a/code/3rd_party/sdl-2.0.20/src/video/wayland/SDL_waylanddatamanager.c b/3rd_party/sdl-2.0.20/src/video/wayland/SDL_waylanddatamanager.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/video/wayland/SDL_waylanddatamanager.c rename to 3rd_party/sdl-2.0.20/src/video/wayland/SDL_waylanddatamanager.c diff --git a/code/3rd_party/sdl-2.0.20/src/video/wayland/SDL_waylanddatamanager.h b/3rd_party/sdl-2.0.20/src/video/wayland/SDL_waylanddatamanager.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/video/wayland/SDL_waylanddatamanager.h rename to 3rd_party/sdl-2.0.20/src/video/wayland/SDL_waylanddatamanager.h diff --git a/code/3rd_party/sdl-2.0.20/src/video/wayland/SDL_waylanddyn.c b/3rd_party/sdl-2.0.20/src/video/wayland/SDL_waylanddyn.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/video/wayland/SDL_waylanddyn.c rename to 3rd_party/sdl-2.0.20/src/video/wayland/SDL_waylanddyn.c diff --git a/code/3rd_party/sdl-2.0.20/src/video/wayland/SDL_waylanddyn.h b/3rd_party/sdl-2.0.20/src/video/wayland/SDL_waylanddyn.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/video/wayland/SDL_waylanddyn.h rename to 3rd_party/sdl-2.0.20/src/video/wayland/SDL_waylanddyn.h diff --git a/code/3rd_party/sdl-2.0.20/src/video/wayland/SDL_waylandevents.c b/3rd_party/sdl-2.0.20/src/video/wayland/SDL_waylandevents.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/video/wayland/SDL_waylandevents.c rename to 3rd_party/sdl-2.0.20/src/video/wayland/SDL_waylandevents.c diff --git a/code/3rd_party/sdl-2.0.20/src/video/wayland/SDL_waylandevents_c.h b/3rd_party/sdl-2.0.20/src/video/wayland/SDL_waylandevents_c.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/video/wayland/SDL_waylandevents_c.h rename to 3rd_party/sdl-2.0.20/src/video/wayland/SDL_waylandevents_c.h diff --git a/code/3rd_party/sdl-2.0.20/src/video/wayland/SDL_waylandkeyboard.c b/3rd_party/sdl-2.0.20/src/video/wayland/SDL_waylandkeyboard.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/video/wayland/SDL_waylandkeyboard.c rename to 3rd_party/sdl-2.0.20/src/video/wayland/SDL_waylandkeyboard.c diff --git a/code/3rd_party/sdl-2.0.20/src/video/wayland/SDL_waylandkeyboard.h b/3rd_party/sdl-2.0.20/src/video/wayland/SDL_waylandkeyboard.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/video/wayland/SDL_waylandkeyboard.h rename to 3rd_party/sdl-2.0.20/src/video/wayland/SDL_waylandkeyboard.h diff --git a/code/3rd_party/sdl-2.0.20/src/video/wayland/SDL_waylandmessagebox.c b/3rd_party/sdl-2.0.20/src/video/wayland/SDL_waylandmessagebox.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/video/wayland/SDL_waylandmessagebox.c rename to 3rd_party/sdl-2.0.20/src/video/wayland/SDL_waylandmessagebox.c diff --git a/code/3rd_party/sdl-2.0.20/src/video/wayland/SDL_waylandmessagebox.h b/3rd_party/sdl-2.0.20/src/video/wayland/SDL_waylandmessagebox.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/video/wayland/SDL_waylandmessagebox.h rename to 3rd_party/sdl-2.0.20/src/video/wayland/SDL_waylandmessagebox.h diff --git a/code/3rd_party/sdl-2.0.20/src/video/wayland/SDL_waylandmouse.c b/3rd_party/sdl-2.0.20/src/video/wayland/SDL_waylandmouse.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/video/wayland/SDL_waylandmouse.c rename to 3rd_party/sdl-2.0.20/src/video/wayland/SDL_waylandmouse.c diff --git a/code/3rd_party/sdl-2.0.20/src/video/wayland/SDL_waylandmouse.h b/3rd_party/sdl-2.0.20/src/video/wayland/SDL_waylandmouse.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/video/wayland/SDL_waylandmouse.h rename to 3rd_party/sdl-2.0.20/src/video/wayland/SDL_waylandmouse.h diff --git a/code/3rd_party/sdl-2.0.20/src/video/wayland/SDL_waylandopengles.c b/3rd_party/sdl-2.0.20/src/video/wayland/SDL_waylandopengles.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/video/wayland/SDL_waylandopengles.c rename to 3rd_party/sdl-2.0.20/src/video/wayland/SDL_waylandopengles.c diff --git a/code/3rd_party/sdl-2.0.20/src/video/wayland/SDL_waylandopengles.h b/3rd_party/sdl-2.0.20/src/video/wayland/SDL_waylandopengles.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/video/wayland/SDL_waylandopengles.h rename to 3rd_party/sdl-2.0.20/src/video/wayland/SDL_waylandopengles.h diff --git a/code/3rd_party/sdl-2.0.20/src/video/wayland/SDL_waylandsym.h b/3rd_party/sdl-2.0.20/src/video/wayland/SDL_waylandsym.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/video/wayland/SDL_waylandsym.h rename to 3rd_party/sdl-2.0.20/src/video/wayland/SDL_waylandsym.h diff --git a/code/3rd_party/sdl-2.0.20/src/video/wayland/SDL_waylandtouch.c b/3rd_party/sdl-2.0.20/src/video/wayland/SDL_waylandtouch.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/video/wayland/SDL_waylandtouch.c rename to 3rd_party/sdl-2.0.20/src/video/wayland/SDL_waylandtouch.c diff --git a/code/3rd_party/sdl-2.0.20/src/video/wayland/SDL_waylandtouch.h b/3rd_party/sdl-2.0.20/src/video/wayland/SDL_waylandtouch.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/video/wayland/SDL_waylandtouch.h rename to 3rd_party/sdl-2.0.20/src/video/wayland/SDL_waylandtouch.h diff --git a/code/3rd_party/sdl-2.0.20/src/video/wayland/SDL_waylandvideo.c b/3rd_party/sdl-2.0.20/src/video/wayland/SDL_waylandvideo.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/video/wayland/SDL_waylandvideo.c rename to 3rd_party/sdl-2.0.20/src/video/wayland/SDL_waylandvideo.c diff --git a/code/3rd_party/sdl-2.0.20/src/video/wayland/SDL_waylandvideo.h b/3rd_party/sdl-2.0.20/src/video/wayland/SDL_waylandvideo.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/video/wayland/SDL_waylandvideo.h rename to 3rd_party/sdl-2.0.20/src/video/wayland/SDL_waylandvideo.h diff --git a/code/3rd_party/sdl-2.0.20/src/video/wayland/SDL_waylandvulkan.c b/3rd_party/sdl-2.0.20/src/video/wayland/SDL_waylandvulkan.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/video/wayland/SDL_waylandvulkan.c rename to 3rd_party/sdl-2.0.20/src/video/wayland/SDL_waylandvulkan.c diff --git a/code/3rd_party/sdl-2.0.20/src/video/wayland/SDL_waylandvulkan.h b/3rd_party/sdl-2.0.20/src/video/wayland/SDL_waylandvulkan.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/video/wayland/SDL_waylandvulkan.h rename to 3rd_party/sdl-2.0.20/src/video/wayland/SDL_waylandvulkan.h diff --git a/code/3rd_party/sdl-2.0.20/src/video/wayland/SDL_waylandwindow.c b/3rd_party/sdl-2.0.20/src/video/wayland/SDL_waylandwindow.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/video/wayland/SDL_waylandwindow.c rename to 3rd_party/sdl-2.0.20/src/video/wayland/SDL_waylandwindow.c diff --git a/code/3rd_party/sdl-2.0.20/src/video/wayland/SDL_waylandwindow.h b/3rd_party/sdl-2.0.20/src/video/wayland/SDL_waylandwindow.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/video/wayland/SDL_waylandwindow.h rename to 3rd_party/sdl-2.0.20/src/video/wayland/SDL_waylandwindow.h diff --git a/code/3rd_party/sdl-2.0.20/src/video/windows/SDL_msctf.h b/3rd_party/sdl-2.0.20/src/video/windows/SDL_msctf.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/video/windows/SDL_msctf.h rename to 3rd_party/sdl-2.0.20/src/video/windows/SDL_msctf.h diff --git a/code/3rd_party/sdl-2.0.20/src/video/windows/SDL_vkeys.h b/3rd_party/sdl-2.0.20/src/video/windows/SDL_vkeys.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/video/windows/SDL_vkeys.h rename to 3rd_party/sdl-2.0.20/src/video/windows/SDL_vkeys.h diff --git a/code/3rd_party/sdl-2.0.20/src/video/windows/SDL_windowsclipboard.c b/3rd_party/sdl-2.0.20/src/video/windows/SDL_windowsclipboard.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/video/windows/SDL_windowsclipboard.c rename to 3rd_party/sdl-2.0.20/src/video/windows/SDL_windowsclipboard.c diff --git a/code/3rd_party/sdl-2.0.20/src/video/windows/SDL_windowsclipboard.h b/3rd_party/sdl-2.0.20/src/video/windows/SDL_windowsclipboard.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/video/windows/SDL_windowsclipboard.h rename to 3rd_party/sdl-2.0.20/src/video/windows/SDL_windowsclipboard.h diff --git a/code/3rd_party/sdl-2.0.20/src/video/windows/SDL_windowsevents.c b/3rd_party/sdl-2.0.20/src/video/windows/SDL_windowsevents.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/video/windows/SDL_windowsevents.c rename to 3rd_party/sdl-2.0.20/src/video/windows/SDL_windowsevents.c diff --git a/code/3rd_party/sdl-2.0.20/src/video/windows/SDL_windowsevents.h b/3rd_party/sdl-2.0.20/src/video/windows/SDL_windowsevents.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/video/windows/SDL_windowsevents.h rename to 3rd_party/sdl-2.0.20/src/video/windows/SDL_windowsevents.h diff --git a/code/3rd_party/sdl-2.0.20/src/video/windows/SDL_windowsframebuffer.c b/3rd_party/sdl-2.0.20/src/video/windows/SDL_windowsframebuffer.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/video/windows/SDL_windowsframebuffer.c rename to 3rd_party/sdl-2.0.20/src/video/windows/SDL_windowsframebuffer.c diff --git a/code/3rd_party/sdl-2.0.20/src/video/windows/SDL_windowsframebuffer.h b/3rd_party/sdl-2.0.20/src/video/windows/SDL_windowsframebuffer.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/video/windows/SDL_windowsframebuffer.h rename to 3rd_party/sdl-2.0.20/src/video/windows/SDL_windowsframebuffer.h diff --git a/code/3rd_party/sdl-2.0.20/src/video/windows/SDL_windowskeyboard.c b/3rd_party/sdl-2.0.20/src/video/windows/SDL_windowskeyboard.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/video/windows/SDL_windowskeyboard.c rename to 3rd_party/sdl-2.0.20/src/video/windows/SDL_windowskeyboard.c diff --git a/code/3rd_party/sdl-2.0.20/src/video/windows/SDL_windowskeyboard.h b/3rd_party/sdl-2.0.20/src/video/windows/SDL_windowskeyboard.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/video/windows/SDL_windowskeyboard.h rename to 3rd_party/sdl-2.0.20/src/video/windows/SDL_windowskeyboard.h diff --git a/code/3rd_party/sdl-2.0.20/src/video/windows/SDL_windowsmessagebox.c b/3rd_party/sdl-2.0.20/src/video/windows/SDL_windowsmessagebox.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/video/windows/SDL_windowsmessagebox.c rename to 3rd_party/sdl-2.0.20/src/video/windows/SDL_windowsmessagebox.c diff --git a/code/3rd_party/sdl-2.0.20/src/video/windows/SDL_windowsmessagebox.h b/3rd_party/sdl-2.0.20/src/video/windows/SDL_windowsmessagebox.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/video/windows/SDL_windowsmessagebox.h rename to 3rd_party/sdl-2.0.20/src/video/windows/SDL_windowsmessagebox.h diff --git a/code/3rd_party/sdl-2.0.20/src/video/windows/SDL_windowsmodes.c b/3rd_party/sdl-2.0.20/src/video/windows/SDL_windowsmodes.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/video/windows/SDL_windowsmodes.c rename to 3rd_party/sdl-2.0.20/src/video/windows/SDL_windowsmodes.c diff --git a/code/3rd_party/sdl-2.0.20/src/video/windows/SDL_windowsmodes.h b/3rd_party/sdl-2.0.20/src/video/windows/SDL_windowsmodes.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/video/windows/SDL_windowsmodes.h rename to 3rd_party/sdl-2.0.20/src/video/windows/SDL_windowsmodes.h diff --git a/code/3rd_party/sdl-2.0.20/src/video/windows/SDL_windowsmouse.c b/3rd_party/sdl-2.0.20/src/video/windows/SDL_windowsmouse.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/video/windows/SDL_windowsmouse.c rename to 3rd_party/sdl-2.0.20/src/video/windows/SDL_windowsmouse.c diff --git a/code/3rd_party/sdl-2.0.20/src/video/windows/SDL_windowsmouse.h b/3rd_party/sdl-2.0.20/src/video/windows/SDL_windowsmouse.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/video/windows/SDL_windowsmouse.h rename to 3rd_party/sdl-2.0.20/src/video/windows/SDL_windowsmouse.h diff --git a/code/3rd_party/sdl-2.0.20/src/video/windows/SDL_windowsopengl.c b/3rd_party/sdl-2.0.20/src/video/windows/SDL_windowsopengl.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/video/windows/SDL_windowsopengl.c rename to 3rd_party/sdl-2.0.20/src/video/windows/SDL_windowsopengl.c diff --git a/code/3rd_party/sdl-2.0.20/src/video/windows/SDL_windowsopengl.h b/3rd_party/sdl-2.0.20/src/video/windows/SDL_windowsopengl.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/video/windows/SDL_windowsopengl.h rename to 3rd_party/sdl-2.0.20/src/video/windows/SDL_windowsopengl.h diff --git a/code/3rd_party/sdl-2.0.20/src/video/windows/SDL_windowsopengles.c b/3rd_party/sdl-2.0.20/src/video/windows/SDL_windowsopengles.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/video/windows/SDL_windowsopengles.c rename to 3rd_party/sdl-2.0.20/src/video/windows/SDL_windowsopengles.c diff --git a/code/3rd_party/sdl-2.0.20/src/video/windows/SDL_windowsopengles.h b/3rd_party/sdl-2.0.20/src/video/windows/SDL_windowsopengles.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/video/windows/SDL_windowsopengles.h rename to 3rd_party/sdl-2.0.20/src/video/windows/SDL_windowsopengles.h diff --git a/code/3rd_party/sdl-2.0.20/src/video/windows/SDL_windowsshape.c b/3rd_party/sdl-2.0.20/src/video/windows/SDL_windowsshape.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/video/windows/SDL_windowsshape.c rename to 3rd_party/sdl-2.0.20/src/video/windows/SDL_windowsshape.c diff --git a/code/3rd_party/sdl-2.0.20/src/video/windows/SDL_windowsshape.h b/3rd_party/sdl-2.0.20/src/video/windows/SDL_windowsshape.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/video/windows/SDL_windowsshape.h rename to 3rd_party/sdl-2.0.20/src/video/windows/SDL_windowsshape.h diff --git a/code/3rd_party/sdl-2.0.20/src/video/windows/SDL_windowstaskdialog.h b/3rd_party/sdl-2.0.20/src/video/windows/SDL_windowstaskdialog.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/video/windows/SDL_windowstaskdialog.h rename to 3rd_party/sdl-2.0.20/src/video/windows/SDL_windowstaskdialog.h diff --git a/code/3rd_party/sdl-2.0.20/src/video/windows/SDL_windowsvideo.c b/3rd_party/sdl-2.0.20/src/video/windows/SDL_windowsvideo.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/video/windows/SDL_windowsvideo.c rename to 3rd_party/sdl-2.0.20/src/video/windows/SDL_windowsvideo.c diff --git a/code/3rd_party/sdl-2.0.20/src/video/windows/SDL_windowsvideo.h b/3rd_party/sdl-2.0.20/src/video/windows/SDL_windowsvideo.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/video/windows/SDL_windowsvideo.h rename to 3rd_party/sdl-2.0.20/src/video/windows/SDL_windowsvideo.h diff --git a/code/3rd_party/sdl-2.0.20/src/video/windows/SDL_windowsvulkan.c b/3rd_party/sdl-2.0.20/src/video/windows/SDL_windowsvulkan.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/video/windows/SDL_windowsvulkan.c rename to 3rd_party/sdl-2.0.20/src/video/windows/SDL_windowsvulkan.c diff --git a/code/3rd_party/sdl-2.0.20/src/video/windows/SDL_windowsvulkan.h b/3rd_party/sdl-2.0.20/src/video/windows/SDL_windowsvulkan.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/video/windows/SDL_windowsvulkan.h rename to 3rd_party/sdl-2.0.20/src/video/windows/SDL_windowsvulkan.h diff --git a/code/3rd_party/sdl-2.0.20/src/video/windows/SDL_windowswindow.c b/3rd_party/sdl-2.0.20/src/video/windows/SDL_windowswindow.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/video/windows/SDL_windowswindow.c rename to 3rd_party/sdl-2.0.20/src/video/windows/SDL_windowswindow.c diff --git a/code/3rd_party/sdl-2.0.20/src/video/windows/SDL_windowswindow.h b/3rd_party/sdl-2.0.20/src/video/windows/SDL_windowswindow.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/video/windows/SDL_windowswindow.h rename to 3rd_party/sdl-2.0.20/src/video/windows/SDL_windowswindow.h diff --git a/code/3rd_party/sdl-2.0.20/src/video/windows/wmmsg.h b/3rd_party/sdl-2.0.20/src/video/windows/wmmsg.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/video/windows/wmmsg.h rename to 3rd_party/sdl-2.0.20/src/video/windows/wmmsg.h diff --git a/code/3rd_party/sdl-2.0.20/src/video/winrt/SDL_winrtevents.cpp b/3rd_party/sdl-2.0.20/src/video/winrt/SDL_winrtevents.cpp similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/video/winrt/SDL_winrtevents.cpp rename to 3rd_party/sdl-2.0.20/src/video/winrt/SDL_winrtevents.cpp diff --git a/code/3rd_party/sdl-2.0.20/src/video/winrt/SDL_winrtevents_c.h b/3rd_party/sdl-2.0.20/src/video/winrt/SDL_winrtevents_c.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/video/winrt/SDL_winrtevents_c.h rename to 3rd_party/sdl-2.0.20/src/video/winrt/SDL_winrtevents_c.h diff --git a/code/3rd_party/sdl-2.0.20/src/video/winrt/SDL_winrtgamebar.cpp b/3rd_party/sdl-2.0.20/src/video/winrt/SDL_winrtgamebar.cpp similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/video/winrt/SDL_winrtgamebar.cpp rename to 3rd_party/sdl-2.0.20/src/video/winrt/SDL_winrtgamebar.cpp diff --git a/code/3rd_party/sdl-2.0.20/src/video/winrt/SDL_winrtgamebar_cpp.h b/3rd_party/sdl-2.0.20/src/video/winrt/SDL_winrtgamebar_cpp.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/video/winrt/SDL_winrtgamebar_cpp.h rename to 3rd_party/sdl-2.0.20/src/video/winrt/SDL_winrtgamebar_cpp.h diff --git a/code/3rd_party/sdl-2.0.20/src/video/winrt/SDL_winrtkeyboard.cpp b/3rd_party/sdl-2.0.20/src/video/winrt/SDL_winrtkeyboard.cpp similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/video/winrt/SDL_winrtkeyboard.cpp rename to 3rd_party/sdl-2.0.20/src/video/winrt/SDL_winrtkeyboard.cpp diff --git a/code/3rd_party/sdl-2.0.20/src/video/winrt/SDL_winrtmessagebox.cpp b/3rd_party/sdl-2.0.20/src/video/winrt/SDL_winrtmessagebox.cpp similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/video/winrt/SDL_winrtmessagebox.cpp rename to 3rd_party/sdl-2.0.20/src/video/winrt/SDL_winrtmessagebox.cpp diff --git a/code/3rd_party/sdl-2.0.20/src/video/winrt/SDL_winrtmessagebox.h b/3rd_party/sdl-2.0.20/src/video/winrt/SDL_winrtmessagebox.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/video/winrt/SDL_winrtmessagebox.h rename to 3rd_party/sdl-2.0.20/src/video/winrt/SDL_winrtmessagebox.h diff --git a/code/3rd_party/sdl-2.0.20/src/video/winrt/SDL_winrtmouse.cpp b/3rd_party/sdl-2.0.20/src/video/winrt/SDL_winrtmouse.cpp similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/video/winrt/SDL_winrtmouse.cpp rename to 3rd_party/sdl-2.0.20/src/video/winrt/SDL_winrtmouse.cpp diff --git a/code/3rd_party/sdl-2.0.20/src/video/winrt/SDL_winrtmouse_c.h b/3rd_party/sdl-2.0.20/src/video/winrt/SDL_winrtmouse_c.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/video/winrt/SDL_winrtmouse_c.h rename to 3rd_party/sdl-2.0.20/src/video/winrt/SDL_winrtmouse_c.h diff --git a/code/3rd_party/sdl-2.0.20/src/video/winrt/SDL_winrtopengles.cpp b/3rd_party/sdl-2.0.20/src/video/winrt/SDL_winrtopengles.cpp similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/video/winrt/SDL_winrtopengles.cpp rename to 3rd_party/sdl-2.0.20/src/video/winrt/SDL_winrtopengles.cpp diff --git a/code/3rd_party/sdl-2.0.20/src/video/winrt/SDL_winrtopengles.h b/3rd_party/sdl-2.0.20/src/video/winrt/SDL_winrtopengles.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/video/winrt/SDL_winrtopengles.h rename to 3rd_party/sdl-2.0.20/src/video/winrt/SDL_winrtopengles.h diff --git a/code/3rd_party/sdl-2.0.20/src/video/winrt/SDL_winrtpointerinput.cpp b/3rd_party/sdl-2.0.20/src/video/winrt/SDL_winrtpointerinput.cpp similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/video/winrt/SDL_winrtpointerinput.cpp rename to 3rd_party/sdl-2.0.20/src/video/winrt/SDL_winrtpointerinput.cpp diff --git a/code/3rd_party/sdl-2.0.20/src/video/winrt/SDL_winrtvideo.cpp b/3rd_party/sdl-2.0.20/src/video/winrt/SDL_winrtvideo.cpp similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/video/winrt/SDL_winrtvideo.cpp rename to 3rd_party/sdl-2.0.20/src/video/winrt/SDL_winrtvideo.cpp diff --git a/code/3rd_party/sdl-2.0.20/src/video/winrt/SDL_winrtvideo_cpp.h b/3rd_party/sdl-2.0.20/src/video/winrt/SDL_winrtvideo_cpp.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/video/winrt/SDL_winrtvideo_cpp.h rename to 3rd_party/sdl-2.0.20/src/video/winrt/SDL_winrtvideo_cpp.h diff --git a/code/3rd_party/sdl-2.0.20/src/video/x11/SDL_x11clipboard.c b/3rd_party/sdl-2.0.20/src/video/x11/SDL_x11clipboard.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/video/x11/SDL_x11clipboard.c rename to 3rd_party/sdl-2.0.20/src/video/x11/SDL_x11clipboard.c diff --git a/code/3rd_party/sdl-2.0.20/src/video/x11/SDL_x11clipboard.h b/3rd_party/sdl-2.0.20/src/video/x11/SDL_x11clipboard.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/video/x11/SDL_x11clipboard.h rename to 3rd_party/sdl-2.0.20/src/video/x11/SDL_x11clipboard.h diff --git a/code/3rd_party/sdl-2.0.20/src/video/x11/SDL_x11dyn.c b/3rd_party/sdl-2.0.20/src/video/x11/SDL_x11dyn.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/video/x11/SDL_x11dyn.c rename to 3rd_party/sdl-2.0.20/src/video/x11/SDL_x11dyn.c diff --git a/code/3rd_party/sdl-2.0.20/src/video/x11/SDL_x11dyn.h b/3rd_party/sdl-2.0.20/src/video/x11/SDL_x11dyn.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/video/x11/SDL_x11dyn.h rename to 3rd_party/sdl-2.0.20/src/video/x11/SDL_x11dyn.h diff --git a/code/3rd_party/sdl-2.0.20/src/video/x11/SDL_x11events.c b/3rd_party/sdl-2.0.20/src/video/x11/SDL_x11events.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/video/x11/SDL_x11events.c rename to 3rd_party/sdl-2.0.20/src/video/x11/SDL_x11events.c diff --git a/code/3rd_party/sdl-2.0.20/src/video/x11/SDL_x11events.h b/3rd_party/sdl-2.0.20/src/video/x11/SDL_x11events.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/video/x11/SDL_x11events.h rename to 3rd_party/sdl-2.0.20/src/video/x11/SDL_x11events.h diff --git a/code/3rd_party/sdl-2.0.20/src/video/x11/SDL_x11framebuffer.c b/3rd_party/sdl-2.0.20/src/video/x11/SDL_x11framebuffer.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/video/x11/SDL_x11framebuffer.c rename to 3rd_party/sdl-2.0.20/src/video/x11/SDL_x11framebuffer.c diff --git a/code/3rd_party/sdl-2.0.20/src/video/x11/SDL_x11framebuffer.h b/3rd_party/sdl-2.0.20/src/video/x11/SDL_x11framebuffer.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/video/x11/SDL_x11framebuffer.h rename to 3rd_party/sdl-2.0.20/src/video/x11/SDL_x11framebuffer.h diff --git a/code/3rd_party/sdl-2.0.20/src/video/x11/SDL_x11keyboard.c b/3rd_party/sdl-2.0.20/src/video/x11/SDL_x11keyboard.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/video/x11/SDL_x11keyboard.c rename to 3rd_party/sdl-2.0.20/src/video/x11/SDL_x11keyboard.c diff --git a/code/3rd_party/sdl-2.0.20/src/video/x11/SDL_x11keyboard.h b/3rd_party/sdl-2.0.20/src/video/x11/SDL_x11keyboard.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/video/x11/SDL_x11keyboard.h rename to 3rd_party/sdl-2.0.20/src/video/x11/SDL_x11keyboard.h diff --git a/code/3rd_party/sdl-2.0.20/src/video/x11/SDL_x11messagebox.c b/3rd_party/sdl-2.0.20/src/video/x11/SDL_x11messagebox.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/video/x11/SDL_x11messagebox.c rename to 3rd_party/sdl-2.0.20/src/video/x11/SDL_x11messagebox.c diff --git a/code/3rd_party/sdl-2.0.20/src/video/x11/SDL_x11messagebox.h b/3rd_party/sdl-2.0.20/src/video/x11/SDL_x11messagebox.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/video/x11/SDL_x11messagebox.h rename to 3rd_party/sdl-2.0.20/src/video/x11/SDL_x11messagebox.h diff --git a/code/3rd_party/sdl-2.0.20/src/video/x11/SDL_x11modes.c b/3rd_party/sdl-2.0.20/src/video/x11/SDL_x11modes.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/video/x11/SDL_x11modes.c rename to 3rd_party/sdl-2.0.20/src/video/x11/SDL_x11modes.c diff --git a/code/3rd_party/sdl-2.0.20/src/video/x11/SDL_x11modes.h b/3rd_party/sdl-2.0.20/src/video/x11/SDL_x11modes.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/video/x11/SDL_x11modes.h rename to 3rd_party/sdl-2.0.20/src/video/x11/SDL_x11modes.h diff --git a/code/3rd_party/sdl-2.0.20/src/video/x11/SDL_x11mouse.c b/3rd_party/sdl-2.0.20/src/video/x11/SDL_x11mouse.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/video/x11/SDL_x11mouse.c rename to 3rd_party/sdl-2.0.20/src/video/x11/SDL_x11mouse.c diff --git a/code/3rd_party/sdl-2.0.20/src/video/x11/SDL_x11mouse.h b/3rd_party/sdl-2.0.20/src/video/x11/SDL_x11mouse.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/video/x11/SDL_x11mouse.h rename to 3rd_party/sdl-2.0.20/src/video/x11/SDL_x11mouse.h diff --git a/code/3rd_party/sdl-2.0.20/src/video/x11/SDL_x11opengl.c b/3rd_party/sdl-2.0.20/src/video/x11/SDL_x11opengl.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/video/x11/SDL_x11opengl.c rename to 3rd_party/sdl-2.0.20/src/video/x11/SDL_x11opengl.c diff --git a/code/3rd_party/sdl-2.0.20/src/video/x11/SDL_x11opengl.h b/3rd_party/sdl-2.0.20/src/video/x11/SDL_x11opengl.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/video/x11/SDL_x11opengl.h rename to 3rd_party/sdl-2.0.20/src/video/x11/SDL_x11opengl.h diff --git a/code/3rd_party/sdl-2.0.20/src/video/x11/SDL_x11opengles.c b/3rd_party/sdl-2.0.20/src/video/x11/SDL_x11opengles.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/video/x11/SDL_x11opengles.c rename to 3rd_party/sdl-2.0.20/src/video/x11/SDL_x11opengles.c diff --git a/code/3rd_party/sdl-2.0.20/src/video/x11/SDL_x11opengles.h b/3rd_party/sdl-2.0.20/src/video/x11/SDL_x11opengles.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/video/x11/SDL_x11opengles.h rename to 3rd_party/sdl-2.0.20/src/video/x11/SDL_x11opengles.h diff --git a/code/3rd_party/sdl-2.0.20/src/video/x11/SDL_x11shape.c b/3rd_party/sdl-2.0.20/src/video/x11/SDL_x11shape.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/video/x11/SDL_x11shape.c rename to 3rd_party/sdl-2.0.20/src/video/x11/SDL_x11shape.c diff --git a/code/3rd_party/sdl-2.0.20/src/video/x11/SDL_x11shape.h b/3rd_party/sdl-2.0.20/src/video/x11/SDL_x11shape.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/video/x11/SDL_x11shape.h rename to 3rd_party/sdl-2.0.20/src/video/x11/SDL_x11shape.h diff --git a/code/3rd_party/sdl-2.0.20/src/video/x11/SDL_x11sym.h b/3rd_party/sdl-2.0.20/src/video/x11/SDL_x11sym.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/video/x11/SDL_x11sym.h rename to 3rd_party/sdl-2.0.20/src/video/x11/SDL_x11sym.h diff --git a/code/3rd_party/sdl-2.0.20/src/video/x11/SDL_x11touch.c b/3rd_party/sdl-2.0.20/src/video/x11/SDL_x11touch.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/video/x11/SDL_x11touch.c rename to 3rd_party/sdl-2.0.20/src/video/x11/SDL_x11touch.c diff --git a/code/3rd_party/sdl-2.0.20/src/video/x11/SDL_x11touch.h b/3rd_party/sdl-2.0.20/src/video/x11/SDL_x11touch.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/video/x11/SDL_x11touch.h rename to 3rd_party/sdl-2.0.20/src/video/x11/SDL_x11touch.h diff --git a/code/3rd_party/sdl-2.0.20/src/video/x11/SDL_x11video.c b/3rd_party/sdl-2.0.20/src/video/x11/SDL_x11video.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/video/x11/SDL_x11video.c rename to 3rd_party/sdl-2.0.20/src/video/x11/SDL_x11video.c diff --git a/code/3rd_party/sdl-2.0.20/src/video/x11/SDL_x11video.h b/3rd_party/sdl-2.0.20/src/video/x11/SDL_x11video.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/video/x11/SDL_x11video.h rename to 3rd_party/sdl-2.0.20/src/video/x11/SDL_x11video.h diff --git a/code/3rd_party/sdl-2.0.20/src/video/x11/SDL_x11vulkan.c b/3rd_party/sdl-2.0.20/src/video/x11/SDL_x11vulkan.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/video/x11/SDL_x11vulkan.c rename to 3rd_party/sdl-2.0.20/src/video/x11/SDL_x11vulkan.c diff --git a/code/3rd_party/sdl-2.0.20/src/video/x11/SDL_x11vulkan.h b/3rd_party/sdl-2.0.20/src/video/x11/SDL_x11vulkan.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/video/x11/SDL_x11vulkan.h rename to 3rd_party/sdl-2.0.20/src/video/x11/SDL_x11vulkan.h diff --git a/code/3rd_party/sdl-2.0.20/src/video/x11/SDL_x11window.c b/3rd_party/sdl-2.0.20/src/video/x11/SDL_x11window.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/video/x11/SDL_x11window.c rename to 3rd_party/sdl-2.0.20/src/video/x11/SDL_x11window.c diff --git a/code/3rd_party/sdl-2.0.20/src/video/x11/SDL_x11window.h b/3rd_party/sdl-2.0.20/src/video/x11/SDL_x11window.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/video/x11/SDL_x11window.h rename to 3rd_party/sdl-2.0.20/src/video/x11/SDL_x11window.h diff --git a/code/3rd_party/sdl-2.0.20/src/video/x11/SDL_x11xfixes.c b/3rd_party/sdl-2.0.20/src/video/x11/SDL_x11xfixes.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/video/x11/SDL_x11xfixes.c rename to 3rd_party/sdl-2.0.20/src/video/x11/SDL_x11xfixes.c diff --git a/code/3rd_party/sdl-2.0.20/src/video/x11/SDL_x11xfixes.h b/3rd_party/sdl-2.0.20/src/video/x11/SDL_x11xfixes.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/video/x11/SDL_x11xfixes.h rename to 3rd_party/sdl-2.0.20/src/video/x11/SDL_x11xfixes.h diff --git a/code/3rd_party/sdl-2.0.20/src/video/x11/SDL_x11xinput2.c b/3rd_party/sdl-2.0.20/src/video/x11/SDL_x11xinput2.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/video/x11/SDL_x11xinput2.c rename to 3rd_party/sdl-2.0.20/src/video/x11/SDL_x11xinput2.c diff --git a/code/3rd_party/sdl-2.0.20/src/video/x11/SDL_x11xinput2.h b/3rd_party/sdl-2.0.20/src/video/x11/SDL_x11xinput2.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/video/x11/SDL_x11xinput2.h rename to 3rd_party/sdl-2.0.20/src/video/x11/SDL_x11xinput2.h diff --git a/code/3rd_party/sdl-2.0.20/src/video/x11/edid-parse.c b/3rd_party/sdl-2.0.20/src/video/x11/edid-parse.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/video/x11/edid-parse.c rename to 3rd_party/sdl-2.0.20/src/video/x11/edid-parse.c diff --git a/code/3rd_party/sdl-2.0.20/src/video/x11/edid.h b/3rd_party/sdl-2.0.20/src/video/x11/edid.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/video/x11/edid.h rename to 3rd_party/sdl-2.0.20/src/video/x11/edid.h diff --git a/code/3rd_party/sdl-2.0.20/src/video/yuv2rgb/LICENSE b/3rd_party/sdl-2.0.20/src/video/yuv2rgb/LICENSE similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/video/yuv2rgb/LICENSE rename to 3rd_party/sdl-2.0.20/src/video/yuv2rgb/LICENSE diff --git a/code/3rd_party/sdl-2.0.20/src/video/yuv2rgb/README.md b/3rd_party/sdl-2.0.20/src/video/yuv2rgb/README.md similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/video/yuv2rgb/README.md rename to 3rd_party/sdl-2.0.20/src/video/yuv2rgb/README.md diff --git a/code/3rd_party/sdl-2.0.20/src/video/yuv2rgb/yuv_rgb.c b/3rd_party/sdl-2.0.20/src/video/yuv2rgb/yuv_rgb.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/video/yuv2rgb/yuv_rgb.c rename to 3rd_party/sdl-2.0.20/src/video/yuv2rgb/yuv_rgb.c diff --git a/code/3rd_party/sdl-2.0.20/src/video/yuv2rgb/yuv_rgb.h b/3rd_party/sdl-2.0.20/src/video/yuv2rgb/yuv_rgb.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/video/yuv2rgb/yuv_rgb.h rename to 3rd_party/sdl-2.0.20/src/video/yuv2rgb/yuv_rgb.h diff --git a/code/3rd_party/sdl-2.0.20/src/video/yuv2rgb/yuv_rgb_sse_func.h b/3rd_party/sdl-2.0.20/src/video/yuv2rgb/yuv_rgb_sse_func.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/video/yuv2rgb/yuv_rgb_sse_func.h rename to 3rd_party/sdl-2.0.20/src/video/yuv2rgb/yuv_rgb_sse_func.h diff --git a/code/3rd_party/sdl-2.0.20/src/video/yuv2rgb/yuv_rgb_std_func.h b/3rd_party/sdl-2.0.20/src/video/yuv2rgb/yuv_rgb_std_func.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/src/video/yuv2rgb/yuv_rgb_std_func.h rename to 3rd_party/sdl-2.0.20/src/video/yuv2rgb/yuv_rgb_std_func.h diff --git a/code/3rd_party/sdl-2.0.20/test/CMakeLists.txt b/3rd_party/sdl-2.0.20/test/CMakeLists.txt similarity index 100% rename from code/3rd_party/sdl-2.0.20/test/CMakeLists.txt rename to 3rd_party/sdl-2.0.20/test/CMakeLists.txt diff --git a/code/3rd_party/sdl-2.0.20/test/COPYING b/3rd_party/sdl-2.0.20/test/COPYING similarity index 100% rename from code/3rd_party/sdl-2.0.20/test/COPYING rename to 3rd_party/sdl-2.0.20/test/COPYING diff --git a/code/3rd_party/sdl-2.0.20/test/Makefile.in b/3rd_party/sdl-2.0.20/test/Makefile.in similarity index 100% rename from code/3rd_party/sdl-2.0.20/test/Makefile.in rename to 3rd_party/sdl-2.0.20/test/Makefile.in diff --git a/code/3rd_party/sdl-2.0.20/test/Makefile.os2 b/3rd_party/sdl-2.0.20/test/Makefile.os2 similarity index 100% rename from code/3rd_party/sdl-2.0.20/test/Makefile.os2 rename to 3rd_party/sdl-2.0.20/test/Makefile.os2 diff --git a/code/3rd_party/sdl-2.0.20/test/README b/3rd_party/sdl-2.0.20/test/README similarity index 100% rename from code/3rd_party/sdl-2.0.20/test/README rename to 3rd_party/sdl-2.0.20/test/README diff --git a/code/3rd_party/sdl-2.0.20/test/acinclude.m4 b/3rd_party/sdl-2.0.20/test/acinclude.m4 similarity index 100% rename from code/3rd_party/sdl-2.0.20/test/acinclude.m4 rename to 3rd_party/sdl-2.0.20/test/acinclude.m4 diff --git a/code/3rd_party/sdl-2.0.20/test/autogen.sh b/3rd_party/sdl-2.0.20/test/autogen.sh similarity index 100% rename from code/3rd_party/sdl-2.0.20/test/autogen.sh rename to 3rd_party/sdl-2.0.20/test/autogen.sh diff --git a/code/3rd_party/sdl-2.0.20/test/axis.bmp b/3rd_party/sdl-2.0.20/test/axis.bmp similarity index 100% rename from code/3rd_party/sdl-2.0.20/test/axis.bmp rename to 3rd_party/sdl-2.0.20/test/axis.bmp diff --git a/code/3rd_party/sdl-2.0.20/test/button.bmp b/3rd_party/sdl-2.0.20/test/button.bmp similarity index 100% rename from code/3rd_party/sdl-2.0.20/test/button.bmp rename to 3rd_party/sdl-2.0.20/test/button.bmp diff --git a/code/3rd_party/sdl-2.0.20/test/checkkeys.c b/3rd_party/sdl-2.0.20/test/checkkeys.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/test/checkkeys.c rename to 3rd_party/sdl-2.0.20/test/checkkeys.c diff --git a/code/3rd_party/sdl-2.0.20/test/checkkeysthreads.c b/3rd_party/sdl-2.0.20/test/checkkeysthreads.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/test/checkkeysthreads.c rename to 3rd_party/sdl-2.0.20/test/checkkeysthreads.c diff --git a/code/3rd_party/sdl-2.0.20/test/configure b/3rd_party/sdl-2.0.20/test/configure similarity index 100% rename from code/3rd_party/sdl-2.0.20/test/configure rename to 3rd_party/sdl-2.0.20/test/configure diff --git a/code/3rd_party/sdl-2.0.20/test/configure.ac b/3rd_party/sdl-2.0.20/test/configure.ac similarity index 100% rename from code/3rd_party/sdl-2.0.20/test/configure.ac rename to 3rd_party/sdl-2.0.20/test/configure.ac diff --git a/code/3rd_party/sdl-2.0.20/test/controllermap.bmp b/3rd_party/sdl-2.0.20/test/controllermap.bmp similarity index 100% rename from code/3rd_party/sdl-2.0.20/test/controllermap.bmp rename to 3rd_party/sdl-2.0.20/test/controllermap.bmp diff --git a/code/3rd_party/sdl-2.0.20/test/controllermap.c b/3rd_party/sdl-2.0.20/test/controllermap.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/test/controllermap.c rename to 3rd_party/sdl-2.0.20/test/controllermap.c diff --git a/code/3rd_party/sdl-2.0.20/test/controllermap_back.bmp b/3rd_party/sdl-2.0.20/test/controllermap_back.bmp similarity index 100% rename from code/3rd_party/sdl-2.0.20/test/controllermap_back.bmp rename to 3rd_party/sdl-2.0.20/test/controllermap_back.bmp diff --git a/code/3rd_party/sdl-2.0.20/test/emscripten/joystick-pre.js b/3rd_party/sdl-2.0.20/test/emscripten/joystick-pre.js similarity index 100% rename from code/3rd_party/sdl-2.0.20/test/emscripten/joystick-pre.js rename to 3rd_party/sdl-2.0.20/test/emscripten/joystick-pre.js diff --git a/code/3rd_party/sdl-2.0.20/test/gcc-fat.sh b/3rd_party/sdl-2.0.20/test/gcc-fat.sh similarity index 100% rename from code/3rd_party/sdl-2.0.20/test/gcc-fat.sh rename to 3rd_party/sdl-2.0.20/test/gcc-fat.sh diff --git a/code/3rd_party/sdl-2.0.20/test/icon.bmp b/3rd_party/sdl-2.0.20/test/icon.bmp similarity index 100% rename from code/3rd_party/sdl-2.0.20/test/icon.bmp rename to 3rd_party/sdl-2.0.20/test/icon.bmp diff --git a/code/3rd_party/sdl-2.0.20/test/loopwave.c b/3rd_party/sdl-2.0.20/test/loopwave.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/test/loopwave.c rename to 3rd_party/sdl-2.0.20/test/loopwave.c diff --git a/code/3rd_party/sdl-2.0.20/test/loopwavequeue.c b/3rd_party/sdl-2.0.20/test/loopwavequeue.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/test/loopwavequeue.c rename to 3rd_party/sdl-2.0.20/test/loopwavequeue.c diff --git a/code/3rd_party/sdl-2.0.20/test/moose.dat b/3rd_party/sdl-2.0.20/test/moose.dat similarity index 100% rename from code/3rd_party/sdl-2.0.20/test/moose.dat rename to 3rd_party/sdl-2.0.20/test/moose.dat diff --git a/code/3rd_party/sdl-2.0.20/test/nacl/background.js b/3rd_party/sdl-2.0.20/test/nacl/background.js similarity index 100% rename from code/3rd_party/sdl-2.0.20/test/nacl/background.js rename to 3rd_party/sdl-2.0.20/test/nacl/background.js diff --git a/code/3rd_party/sdl-2.0.20/test/nacl/common.js b/3rd_party/sdl-2.0.20/test/nacl/common.js similarity index 100% rename from code/3rd_party/sdl-2.0.20/test/nacl/common.js rename to 3rd_party/sdl-2.0.20/test/nacl/common.js diff --git a/code/3rd_party/sdl-2.0.20/test/nacl/index.html b/3rd_party/sdl-2.0.20/test/nacl/index.html similarity index 100% rename from code/3rd_party/sdl-2.0.20/test/nacl/index.html rename to 3rd_party/sdl-2.0.20/test/nacl/index.html diff --git a/code/3rd_party/sdl-2.0.20/test/nacl/manifest.json b/3rd_party/sdl-2.0.20/test/nacl/manifest.json similarity index 100% rename from code/3rd_party/sdl-2.0.20/test/nacl/manifest.json rename to 3rd_party/sdl-2.0.20/test/nacl/manifest.json diff --git a/code/3rd_party/sdl-2.0.20/test/picture.xbm b/3rd_party/sdl-2.0.20/test/picture.xbm similarity index 100% rename from code/3rd_party/sdl-2.0.20/test/picture.xbm rename to 3rd_party/sdl-2.0.20/test/picture.xbm diff --git a/code/3rd_party/sdl-2.0.20/test/relative_mode.markdown b/3rd_party/sdl-2.0.20/test/relative_mode.markdown similarity index 100% rename from code/3rd_party/sdl-2.0.20/test/relative_mode.markdown rename to 3rd_party/sdl-2.0.20/test/relative_mode.markdown diff --git a/code/3rd_party/sdl-2.0.20/test/sample.bmp b/3rd_party/sdl-2.0.20/test/sample.bmp similarity index 100% rename from code/3rd_party/sdl-2.0.20/test/sample.bmp rename to 3rd_party/sdl-2.0.20/test/sample.bmp diff --git a/code/3rd_party/sdl-2.0.20/test/sample.wav b/3rd_party/sdl-2.0.20/test/sample.wav similarity index 100% rename from code/3rd_party/sdl-2.0.20/test/sample.wav rename to 3rd_party/sdl-2.0.20/test/sample.wav diff --git a/code/3rd_party/sdl-2.0.20/test/shapes/p01_shape24.bmp b/3rd_party/sdl-2.0.20/test/shapes/p01_shape24.bmp similarity index 100% rename from code/3rd_party/sdl-2.0.20/test/shapes/p01_shape24.bmp rename to 3rd_party/sdl-2.0.20/test/shapes/p01_shape24.bmp diff --git a/code/3rd_party/sdl-2.0.20/test/shapes/p01_shape32alpha.bmp b/3rd_party/sdl-2.0.20/test/shapes/p01_shape32alpha.bmp similarity index 100% rename from code/3rd_party/sdl-2.0.20/test/shapes/p01_shape32alpha.bmp rename to 3rd_party/sdl-2.0.20/test/shapes/p01_shape32alpha.bmp diff --git a/code/3rd_party/sdl-2.0.20/test/shapes/p01_shape8.bmp b/3rd_party/sdl-2.0.20/test/shapes/p01_shape8.bmp similarity index 100% rename from code/3rd_party/sdl-2.0.20/test/shapes/p01_shape8.bmp rename to 3rd_party/sdl-2.0.20/test/shapes/p01_shape8.bmp diff --git a/code/3rd_party/sdl-2.0.20/test/shapes/p02_shape24.bmp b/3rd_party/sdl-2.0.20/test/shapes/p02_shape24.bmp similarity index 100% rename from code/3rd_party/sdl-2.0.20/test/shapes/p02_shape24.bmp rename to 3rd_party/sdl-2.0.20/test/shapes/p02_shape24.bmp diff --git a/code/3rd_party/sdl-2.0.20/test/shapes/p02_shape32alpha.bmp b/3rd_party/sdl-2.0.20/test/shapes/p02_shape32alpha.bmp similarity index 100% rename from code/3rd_party/sdl-2.0.20/test/shapes/p02_shape32alpha.bmp rename to 3rd_party/sdl-2.0.20/test/shapes/p02_shape32alpha.bmp diff --git a/code/3rd_party/sdl-2.0.20/test/shapes/p02_shape8.bmp b/3rd_party/sdl-2.0.20/test/shapes/p02_shape8.bmp similarity index 100% rename from code/3rd_party/sdl-2.0.20/test/shapes/p02_shape8.bmp rename to 3rd_party/sdl-2.0.20/test/shapes/p02_shape8.bmp diff --git a/code/3rd_party/sdl-2.0.20/test/shapes/p03_shape24.bmp b/3rd_party/sdl-2.0.20/test/shapes/p03_shape24.bmp similarity index 100% rename from code/3rd_party/sdl-2.0.20/test/shapes/p03_shape24.bmp rename to 3rd_party/sdl-2.0.20/test/shapes/p03_shape24.bmp diff --git a/code/3rd_party/sdl-2.0.20/test/shapes/p03_shape8.bmp b/3rd_party/sdl-2.0.20/test/shapes/p03_shape8.bmp similarity index 100% rename from code/3rd_party/sdl-2.0.20/test/shapes/p03_shape8.bmp rename to 3rd_party/sdl-2.0.20/test/shapes/p03_shape8.bmp diff --git a/code/3rd_party/sdl-2.0.20/test/shapes/p04_shape1.bmp b/3rd_party/sdl-2.0.20/test/shapes/p04_shape1.bmp similarity index 100% rename from code/3rd_party/sdl-2.0.20/test/shapes/p04_shape1.bmp rename to 3rd_party/sdl-2.0.20/test/shapes/p04_shape1.bmp diff --git a/code/3rd_party/sdl-2.0.20/test/shapes/p04_shape24.bmp b/3rd_party/sdl-2.0.20/test/shapes/p04_shape24.bmp similarity index 100% rename from code/3rd_party/sdl-2.0.20/test/shapes/p04_shape24.bmp rename to 3rd_party/sdl-2.0.20/test/shapes/p04_shape24.bmp diff --git a/code/3rd_party/sdl-2.0.20/test/shapes/p04_shape32alpha.bmp b/3rd_party/sdl-2.0.20/test/shapes/p04_shape32alpha.bmp similarity index 100% rename from code/3rd_party/sdl-2.0.20/test/shapes/p04_shape32alpha.bmp rename to 3rd_party/sdl-2.0.20/test/shapes/p04_shape32alpha.bmp diff --git a/code/3rd_party/sdl-2.0.20/test/shapes/p04_shape8.bmp b/3rd_party/sdl-2.0.20/test/shapes/p04_shape8.bmp similarity index 100% rename from code/3rd_party/sdl-2.0.20/test/shapes/p04_shape8.bmp rename to 3rd_party/sdl-2.0.20/test/shapes/p04_shape8.bmp diff --git a/code/3rd_party/sdl-2.0.20/test/shapes/p05_shape8.bmp b/3rd_party/sdl-2.0.20/test/shapes/p05_shape8.bmp similarity index 100% rename from code/3rd_party/sdl-2.0.20/test/shapes/p05_shape8.bmp rename to 3rd_party/sdl-2.0.20/test/shapes/p05_shape8.bmp diff --git a/code/3rd_party/sdl-2.0.20/test/shapes/p06_shape1alpha.bmp b/3rd_party/sdl-2.0.20/test/shapes/p06_shape1alpha.bmp similarity index 100% rename from code/3rd_party/sdl-2.0.20/test/shapes/p06_shape1alpha.bmp rename to 3rd_party/sdl-2.0.20/test/shapes/p06_shape1alpha.bmp diff --git a/code/3rd_party/sdl-2.0.20/test/shapes/p06_shape24.bmp b/3rd_party/sdl-2.0.20/test/shapes/p06_shape24.bmp similarity index 100% rename from code/3rd_party/sdl-2.0.20/test/shapes/p06_shape24.bmp rename to 3rd_party/sdl-2.0.20/test/shapes/p06_shape24.bmp diff --git a/code/3rd_party/sdl-2.0.20/test/shapes/p06_shape32alpha.bmp b/3rd_party/sdl-2.0.20/test/shapes/p06_shape32alpha.bmp similarity index 100% rename from code/3rd_party/sdl-2.0.20/test/shapes/p06_shape32alpha.bmp rename to 3rd_party/sdl-2.0.20/test/shapes/p06_shape32alpha.bmp diff --git a/code/3rd_party/sdl-2.0.20/test/shapes/p06_shape8.bmp b/3rd_party/sdl-2.0.20/test/shapes/p06_shape8.bmp similarity index 100% rename from code/3rd_party/sdl-2.0.20/test/shapes/p06_shape8.bmp rename to 3rd_party/sdl-2.0.20/test/shapes/p06_shape8.bmp diff --git a/code/3rd_party/sdl-2.0.20/test/shapes/p07_shape24.bmp b/3rd_party/sdl-2.0.20/test/shapes/p07_shape24.bmp similarity index 100% rename from code/3rd_party/sdl-2.0.20/test/shapes/p07_shape24.bmp rename to 3rd_party/sdl-2.0.20/test/shapes/p07_shape24.bmp diff --git a/code/3rd_party/sdl-2.0.20/test/shapes/p07_shape32alpha.bmp b/3rd_party/sdl-2.0.20/test/shapes/p07_shape32alpha.bmp similarity index 100% rename from code/3rd_party/sdl-2.0.20/test/shapes/p07_shape32alpha.bmp rename to 3rd_party/sdl-2.0.20/test/shapes/p07_shape32alpha.bmp diff --git a/code/3rd_party/sdl-2.0.20/test/shapes/p07_shape8.bmp b/3rd_party/sdl-2.0.20/test/shapes/p07_shape8.bmp similarity index 100% rename from code/3rd_party/sdl-2.0.20/test/shapes/p07_shape8.bmp rename to 3rd_party/sdl-2.0.20/test/shapes/p07_shape8.bmp diff --git a/code/3rd_party/sdl-2.0.20/test/shapes/p08_shape24.bmp b/3rd_party/sdl-2.0.20/test/shapes/p08_shape24.bmp similarity index 100% rename from code/3rd_party/sdl-2.0.20/test/shapes/p08_shape24.bmp rename to 3rd_party/sdl-2.0.20/test/shapes/p08_shape24.bmp diff --git a/code/3rd_party/sdl-2.0.20/test/shapes/p08_shape32alpha.bmp b/3rd_party/sdl-2.0.20/test/shapes/p08_shape32alpha.bmp similarity index 100% rename from code/3rd_party/sdl-2.0.20/test/shapes/p08_shape32alpha.bmp rename to 3rd_party/sdl-2.0.20/test/shapes/p08_shape32alpha.bmp diff --git a/code/3rd_party/sdl-2.0.20/test/shapes/p08_shape8.bmp b/3rd_party/sdl-2.0.20/test/shapes/p08_shape8.bmp similarity index 100% rename from code/3rd_party/sdl-2.0.20/test/shapes/p08_shape8.bmp rename to 3rd_party/sdl-2.0.20/test/shapes/p08_shape8.bmp diff --git a/code/3rd_party/sdl-2.0.20/test/shapes/p09_shape24.bmp b/3rd_party/sdl-2.0.20/test/shapes/p09_shape24.bmp similarity index 100% rename from code/3rd_party/sdl-2.0.20/test/shapes/p09_shape24.bmp rename to 3rd_party/sdl-2.0.20/test/shapes/p09_shape24.bmp diff --git a/code/3rd_party/sdl-2.0.20/test/shapes/p09_shape32alpha.bmp b/3rd_party/sdl-2.0.20/test/shapes/p09_shape32alpha.bmp similarity index 100% rename from code/3rd_party/sdl-2.0.20/test/shapes/p09_shape32alpha.bmp rename to 3rd_party/sdl-2.0.20/test/shapes/p09_shape32alpha.bmp diff --git a/code/3rd_party/sdl-2.0.20/test/shapes/p09_shape8.bmp b/3rd_party/sdl-2.0.20/test/shapes/p09_shape8.bmp similarity index 100% rename from code/3rd_party/sdl-2.0.20/test/shapes/p09_shape8.bmp rename to 3rd_party/sdl-2.0.20/test/shapes/p09_shape8.bmp diff --git a/code/3rd_party/sdl-2.0.20/test/shapes/p10_shape1.bmp b/3rd_party/sdl-2.0.20/test/shapes/p10_shape1.bmp similarity index 100% rename from code/3rd_party/sdl-2.0.20/test/shapes/p10_shape1.bmp rename to 3rd_party/sdl-2.0.20/test/shapes/p10_shape1.bmp diff --git a/code/3rd_party/sdl-2.0.20/test/shapes/p10_shape24.bmp b/3rd_party/sdl-2.0.20/test/shapes/p10_shape24.bmp similarity index 100% rename from code/3rd_party/sdl-2.0.20/test/shapes/p10_shape24.bmp rename to 3rd_party/sdl-2.0.20/test/shapes/p10_shape24.bmp diff --git a/code/3rd_party/sdl-2.0.20/test/shapes/p10_shape32alpha.bmp b/3rd_party/sdl-2.0.20/test/shapes/p10_shape32alpha.bmp similarity index 100% rename from code/3rd_party/sdl-2.0.20/test/shapes/p10_shape32alpha.bmp rename to 3rd_party/sdl-2.0.20/test/shapes/p10_shape32alpha.bmp diff --git a/code/3rd_party/sdl-2.0.20/test/shapes/p10_shape8.bmp b/3rd_party/sdl-2.0.20/test/shapes/p10_shape8.bmp similarity index 100% rename from code/3rd_party/sdl-2.0.20/test/shapes/p10_shape8.bmp rename to 3rd_party/sdl-2.0.20/test/shapes/p10_shape8.bmp diff --git a/code/3rd_party/sdl-2.0.20/test/shapes/p11_shape24.bmp b/3rd_party/sdl-2.0.20/test/shapes/p11_shape24.bmp similarity index 100% rename from code/3rd_party/sdl-2.0.20/test/shapes/p11_shape24.bmp rename to 3rd_party/sdl-2.0.20/test/shapes/p11_shape24.bmp diff --git a/code/3rd_party/sdl-2.0.20/test/shapes/p11_shape32alpha.bmp b/3rd_party/sdl-2.0.20/test/shapes/p11_shape32alpha.bmp similarity index 100% rename from code/3rd_party/sdl-2.0.20/test/shapes/p11_shape32alpha.bmp rename to 3rd_party/sdl-2.0.20/test/shapes/p11_shape32alpha.bmp diff --git a/code/3rd_party/sdl-2.0.20/test/shapes/p11_shape8.bmp b/3rd_party/sdl-2.0.20/test/shapes/p11_shape8.bmp similarity index 100% rename from code/3rd_party/sdl-2.0.20/test/shapes/p11_shape8.bmp rename to 3rd_party/sdl-2.0.20/test/shapes/p11_shape8.bmp diff --git a/code/3rd_party/sdl-2.0.20/test/shapes/p12_shape24.bmp b/3rd_party/sdl-2.0.20/test/shapes/p12_shape24.bmp similarity index 100% rename from code/3rd_party/sdl-2.0.20/test/shapes/p12_shape24.bmp rename to 3rd_party/sdl-2.0.20/test/shapes/p12_shape24.bmp diff --git a/code/3rd_party/sdl-2.0.20/test/shapes/p12_shape8.bmp b/3rd_party/sdl-2.0.20/test/shapes/p12_shape8.bmp similarity index 100% rename from code/3rd_party/sdl-2.0.20/test/shapes/p12_shape8.bmp rename to 3rd_party/sdl-2.0.20/test/shapes/p12_shape8.bmp diff --git a/code/3rd_party/sdl-2.0.20/test/shapes/p13_shape24.bmp b/3rd_party/sdl-2.0.20/test/shapes/p13_shape24.bmp similarity index 100% rename from code/3rd_party/sdl-2.0.20/test/shapes/p13_shape24.bmp rename to 3rd_party/sdl-2.0.20/test/shapes/p13_shape24.bmp diff --git a/code/3rd_party/sdl-2.0.20/test/shapes/p13_shape32alpha.bmp b/3rd_party/sdl-2.0.20/test/shapes/p13_shape32alpha.bmp similarity index 100% rename from code/3rd_party/sdl-2.0.20/test/shapes/p13_shape32alpha.bmp rename to 3rd_party/sdl-2.0.20/test/shapes/p13_shape32alpha.bmp diff --git a/code/3rd_party/sdl-2.0.20/test/shapes/p13_shape8.bmp b/3rd_party/sdl-2.0.20/test/shapes/p13_shape8.bmp similarity index 100% rename from code/3rd_party/sdl-2.0.20/test/shapes/p13_shape8.bmp rename to 3rd_party/sdl-2.0.20/test/shapes/p13_shape8.bmp diff --git a/code/3rd_party/sdl-2.0.20/test/shapes/p14_shape24.bmp b/3rd_party/sdl-2.0.20/test/shapes/p14_shape24.bmp similarity index 100% rename from code/3rd_party/sdl-2.0.20/test/shapes/p14_shape24.bmp rename to 3rd_party/sdl-2.0.20/test/shapes/p14_shape24.bmp diff --git a/code/3rd_party/sdl-2.0.20/test/shapes/p14_shape8.bmp b/3rd_party/sdl-2.0.20/test/shapes/p14_shape8.bmp similarity index 100% rename from code/3rd_party/sdl-2.0.20/test/shapes/p14_shape8.bmp rename to 3rd_party/sdl-2.0.20/test/shapes/p14_shape8.bmp diff --git a/code/3rd_party/sdl-2.0.20/test/shapes/p15_shape24.bmp b/3rd_party/sdl-2.0.20/test/shapes/p15_shape24.bmp similarity index 100% rename from code/3rd_party/sdl-2.0.20/test/shapes/p15_shape24.bmp rename to 3rd_party/sdl-2.0.20/test/shapes/p15_shape24.bmp diff --git a/code/3rd_party/sdl-2.0.20/test/shapes/p15_shape32alpha.bmp b/3rd_party/sdl-2.0.20/test/shapes/p15_shape32alpha.bmp similarity index 100% rename from code/3rd_party/sdl-2.0.20/test/shapes/p15_shape32alpha.bmp rename to 3rd_party/sdl-2.0.20/test/shapes/p15_shape32alpha.bmp diff --git a/code/3rd_party/sdl-2.0.20/test/shapes/p15_shape8.bmp b/3rd_party/sdl-2.0.20/test/shapes/p15_shape8.bmp similarity index 100% rename from code/3rd_party/sdl-2.0.20/test/shapes/p15_shape8.bmp rename to 3rd_party/sdl-2.0.20/test/shapes/p15_shape8.bmp diff --git a/code/3rd_party/sdl-2.0.20/test/shapes/p16_shape1.bmp b/3rd_party/sdl-2.0.20/test/shapes/p16_shape1.bmp similarity index 100% rename from code/3rd_party/sdl-2.0.20/test/shapes/p16_shape1.bmp rename to 3rd_party/sdl-2.0.20/test/shapes/p16_shape1.bmp diff --git a/code/3rd_party/sdl-2.0.20/test/shapes/p16_shape24.bmp b/3rd_party/sdl-2.0.20/test/shapes/p16_shape24.bmp similarity index 100% rename from code/3rd_party/sdl-2.0.20/test/shapes/p16_shape24.bmp rename to 3rd_party/sdl-2.0.20/test/shapes/p16_shape24.bmp diff --git a/code/3rd_party/sdl-2.0.20/test/shapes/p16_shape8.bmp b/3rd_party/sdl-2.0.20/test/shapes/p16_shape8.bmp similarity index 100% rename from code/3rd_party/sdl-2.0.20/test/shapes/p16_shape8.bmp rename to 3rd_party/sdl-2.0.20/test/shapes/p16_shape8.bmp diff --git a/code/3rd_party/sdl-2.0.20/test/shapes/trollface_24.bmp b/3rd_party/sdl-2.0.20/test/shapes/trollface_24.bmp similarity index 100% rename from code/3rd_party/sdl-2.0.20/test/shapes/trollface_24.bmp rename to 3rd_party/sdl-2.0.20/test/shapes/trollface_24.bmp diff --git a/code/3rd_party/sdl-2.0.20/test/shapes/trollface_32alpha.bmp b/3rd_party/sdl-2.0.20/test/shapes/trollface_32alpha.bmp similarity index 100% rename from code/3rd_party/sdl-2.0.20/test/shapes/trollface_32alpha.bmp rename to 3rd_party/sdl-2.0.20/test/shapes/trollface_32alpha.bmp diff --git a/code/3rd_party/sdl-2.0.20/test/testatomic.c b/3rd_party/sdl-2.0.20/test/testatomic.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/test/testatomic.c rename to 3rd_party/sdl-2.0.20/test/testatomic.c diff --git a/code/3rd_party/sdl-2.0.20/test/testaudiocapture.c b/3rd_party/sdl-2.0.20/test/testaudiocapture.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/test/testaudiocapture.c rename to 3rd_party/sdl-2.0.20/test/testaudiocapture.c diff --git a/code/3rd_party/sdl-2.0.20/test/testaudiohotplug.c b/3rd_party/sdl-2.0.20/test/testaudiohotplug.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/test/testaudiohotplug.c rename to 3rd_party/sdl-2.0.20/test/testaudiohotplug.c diff --git a/code/3rd_party/sdl-2.0.20/test/testaudioinfo.c b/3rd_party/sdl-2.0.20/test/testaudioinfo.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/test/testaudioinfo.c rename to 3rd_party/sdl-2.0.20/test/testaudioinfo.c diff --git a/code/3rd_party/sdl-2.0.20/test/testautomation.c b/3rd_party/sdl-2.0.20/test/testautomation.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/test/testautomation.c rename to 3rd_party/sdl-2.0.20/test/testautomation.c diff --git a/code/3rd_party/sdl-2.0.20/test/testautomation_audio.c b/3rd_party/sdl-2.0.20/test/testautomation_audio.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/test/testautomation_audio.c rename to 3rd_party/sdl-2.0.20/test/testautomation_audio.c diff --git a/code/3rd_party/sdl-2.0.20/test/testautomation_clipboard.c b/3rd_party/sdl-2.0.20/test/testautomation_clipboard.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/test/testautomation_clipboard.c rename to 3rd_party/sdl-2.0.20/test/testautomation_clipboard.c diff --git a/code/3rd_party/sdl-2.0.20/test/testautomation_events.c b/3rd_party/sdl-2.0.20/test/testautomation_events.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/test/testautomation_events.c rename to 3rd_party/sdl-2.0.20/test/testautomation_events.c diff --git a/code/3rd_party/sdl-2.0.20/test/testautomation_hints.c b/3rd_party/sdl-2.0.20/test/testautomation_hints.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/test/testautomation_hints.c rename to 3rd_party/sdl-2.0.20/test/testautomation_hints.c diff --git a/code/3rd_party/sdl-2.0.20/test/testautomation_keyboard.c b/3rd_party/sdl-2.0.20/test/testautomation_keyboard.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/test/testautomation_keyboard.c rename to 3rd_party/sdl-2.0.20/test/testautomation_keyboard.c diff --git a/code/3rd_party/sdl-2.0.20/test/testautomation_main.c b/3rd_party/sdl-2.0.20/test/testautomation_main.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/test/testautomation_main.c rename to 3rd_party/sdl-2.0.20/test/testautomation_main.c diff --git a/code/3rd_party/sdl-2.0.20/test/testautomation_mouse.c b/3rd_party/sdl-2.0.20/test/testautomation_mouse.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/test/testautomation_mouse.c rename to 3rd_party/sdl-2.0.20/test/testautomation_mouse.c diff --git a/code/3rd_party/sdl-2.0.20/test/testautomation_pixels.c b/3rd_party/sdl-2.0.20/test/testautomation_pixels.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/test/testautomation_pixels.c rename to 3rd_party/sdl-2.0.20/test/testautomation_pixels.c diff --git a/code/3rd_party/sdl-2.0.20/test/testautomation_platform.c b/3rd_party/sdl-2.0.20/test/testautomation_platform.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/test/testautomation_platform.c rename to 3rd_party/sdl-2.0.20/test/testautomation_platform.c diff --git a/code/3rd_party/sdl-2.0.20/test/testautomation_rect.c b/3rd_party/sdl-2.0.20/test/testautomation_rect.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/test/testautomation_rect.c rename to 3rd_party/sdl-2.0.20/test/testautomation_rect.c diff --git a/code/3rd_party/sdl-2.0.20/test/testautomation_render.c b/3rd_party/sdl-2.0.20/test/testautomation_render.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/test/testautomation_render.c rename to 3rd_party/sdl-2.0.20/test/testautomation_render.c diff --git a/code/3rd_party/sdl-2.0.20/test/testautomation_rwops.c b/3rd_party/sdl-2.0.20/test/testautomation_rwops.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/test/testautomation_rwops.c rename to 3rd_party/sdl-2.0.20/test/testautomation_rwops.c diff --git a/code/3rd_party/sdl-2.0.20/test/testautomation_sdltest.c b/3rd_party/sdl-2.0.20/test/testautomation_sdltest.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/test/testautomation_sdltest.c rename to 3rd_party/sdl-2.0.20/test/testautomation_sdltest.c diff --git a/code/3rd_party/sdl-2.0.20/test/testautomation_stdlib.c b/3rd_party/sdl-2.0.20/test/testautomation_stdlib.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/test/testautomation_stdlib.c rename to 3rd_party/sdl-2.0.20/test/testautomation_stdlib.c diff --git a/code/3rd_party/sdl-2.0.20/test/testautomation_suites.h b/3rd_party/sdl-2.0.20/test/testautomation_suites.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/test/testautomation_suites.h rename to 3rd_party/sdl-2.0.20/test/testautomation_suites.h diff --git a/code/3rd_party/sdl-2.0.20/test/testautomation_surface.c b/3rd_party/sdl-2.0.20/test/testautomation_surface.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/test/testautomation_surface.c rename to 3rd_party/sdl-2.0.20/test/testautomation_surface.c diff --git a/code/3rd_party/sdl-2.0.20/test/testautomation_syswm.c b/3rd_party/sdl-2.0.20/test/testautomation_syswm.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/test/testautomation_syswm.c rename to 3rd_party/sdl-2.0.20/test/testautomation_syswm.c diff --git a/code/3rd_party/sdl-2.0.20/test/testautomation_timer.c b/3rd_party/sdl-2.0.20/test/testautomation_timer.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/test/testautomation_timer.c rename to 3rd_party/sdl-2.0.20/test/testautomation_timer.c diff --git a/code/3rd_party/sdl-2.0.20/test/testautomation_video.c b/3rd_party/sdl-2.0.20/test/testautomation_video.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/test/testautomation_video.c rename to 3rd_party/sdl-2.0.20/test/testautomation_video.c diff --git a/code/3rd_party/sdl-2.0.20/test/testbounds.c b/3rd_party/sdl-2.0.20/test/testbounds.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/test/testbounds.c rename to 3rd_party/sdl-2.0.20/test/testbounds.c diff --git a/code/3rd_party/sdl-2.0.20/test/testcustomcursor.c b/3rd_party/sdl-2.0.20/test/testcustomcursor.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/test/testcustomcursor.c rename to 3rd_party/sdl-2.0.20/test/testcustomcursor.c diff --git a/code/3rd_party/sdl-2.0.20/test/testdisplayinfo.c b/3rd_party/sdl-2.0.20/test/testdisplayinfo.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/test/testdisplayinfo.c rename to 3rd_party/sdl-2.0.20/test/testdisplayinfo.c diff --git a/code/3rd_party/sdl-2.0.20/test/testdraw2.c b/3rd_party/sdl-2.0.20/test/testdraw2.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/test/testdraw2.c rename to 3rd_party/sdl-2.0.20/test/testdraw2.c diff --git a/code/3rd_party/sdl-2.0.20/test/testdrawchessboard.c b/3rd_party/sdl-2.0.20/test/testdrawchessboard.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/test/testdrawchessboard.c rename to 3rd_party/sdl-2.0.20/test/testdrawchessboard.c diff --git a/code/3rd_party/sdl-2.0.20/test/testdropfile.c b/3rd_party/sdl-2.0.20/test/testdropfile.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/test/testdropfile.c rename to 3rd_party/sdl-2.0.20/test/testdropfile.c diff --git a/code/3rd_party/sdl-2.0.20/test/testerror.c b/3rd_party/sdl-2.0.20/test/testerror.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/test/testerror.c rename to 3rd_party/sdl-2.0.20/test/testerror.c diff --git a/code/3rd_party/sdl-2.0.20/test/testevdev.c b/3rd_party/sdl-2.0.20/test/testevdev.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/test/testevdev.c rename to 3rd_party/sdl-2.0.20/test/testevdev.c diff --git a/code/3rd_party/sdl-2.0.20/test/testfile.c b/3rd_party/sdl-2.0.20/test/testfile.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/test/testfile.c rename to 3rd_party/sdl-2.0.20/test/testfile.c diff --git a/code/3rd_party/sdl-2.0.20/test/testfilesystem.c b/3rd_party/sdl-2.0.20/test/testfilesystem.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/test/testfilesystem.c rename to 3rd_party/sdl-2.0.20/test/testfilesystem.c diff --git a/code/3rd_party/sdl-2.0.20/test/testgamecontroller.c b/3rd_party/sdl-2.0.20/test/testgamecontroller.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/test/testgamecontroller.c rename to 3rd_party/sdl-2.0.20/test/testgamecontroller.c diff --git a/code/3rd_party/sdl-2.0.20/test/testgeometry.c b/3rd_party/sdl-2.0.20/test/testgeometry.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/test/testgeometry.c rename to 3rd_party/sdl-2.0.20/test/testgeometry.c diff --git a/code/3rd_party/sdl-2.0.20/test/testgesture.c b/3rd_party/sdl-2.0.20/test/testgesture.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/test/testgesture.c rename to 3rd_party/sdl-2.0.20/test/testgesture.c diff --git a/code/3rd_party/sdl-2.0.20/test/testgl2.c b/3rd_party/sdl-2.0.20/test/testgl2.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/test/testgl2.c rename to 3rd_party/sdl-2.0.20/test/testgl2.c diff --git a/code/3rd_party/sdl-2.0.20/test/testgles.c b/3rd_party/sdl-2.0.20/test/testgles.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/test/testgles.c rename to 3rd_party/sdl-2.0.20/test/testgles.c diff --git a/code/3rd_party/sdl-2.0.20/test/testgles2.c b/3rd_party/sdl-2.0.20/test/testgles2.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/test/testgles2.c rename to 3rd_party/sdl-2.0.20/test/testgles2.c diff --git a/code/3rd_party/sdl-2.0.20/test/testgles2_sdf.c b/3rd_party/sdl-2.0.20/test/testgles2_sdf.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/test/testgles2_sdf.c rename to 3rd_party/sdl-2.0.20/test/testgles2_sdf.c diff --git a/code/3rd_party/sdl-2.0.20/test/testgles2_sdf_img_normal.bmp b/3rd_party/sdl-2.0.20/test/testgles2_sdf_img_normal.bmp similarity index 100% rename from code/3rd_party/sdl-2.0.20/test/testgles2_sdf_img_normal.bmp rename to 3rd_party/sdl-2.0.20/test/testgles2_sdf_img_normal.bmp diff --git a/code/3rd_party/sdl-2.0.20/test/testgles2_sdf_img_sdf.bmp b/3rd_party/sdl-2.0.20/test/testgles2_sdf_img_sdf.bmp similarity index 100% rename from code/3rd_party/sdl-2.0.20/test/testgles2_sdf_img_sdf.bmp rename to 3rd_party/sdl-2.0.20/test/testgles2_sdf_img_sdf.bmp diff --git a/code/3rd_party/sdl-2.0.20/test/testhaptic.c b/3rd_party/sdl-2.0.20/test/testhaptic.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/test/testhaptic.c rename to 3rd_party/sdl-2.0.20/test/testhaptic.c diff --git a/code/3rd_party/sdl-2.0.20/test/testhittesting.c b/3rd_party/sdl-2.0.20/test/testhittesting.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/test/testhittesting.c rename to 3rd_party/sdl-2.0.20/test/testhittesting.c diff --git a/code/3rd_party/sdl-2.0.20/test/testhotplug.c b/3rd_party/sdl-2.0.20/test/testhotplug.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/test/testhotplug.c rename to 3rd_party/sdl-2.0.20/test/testhotplug.c diff --git a/code/3rd_party/sdl-2.0.20/test/testiconv.c b/3rd_party/sdl-2.0.20/test/testiconv.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/test/testiconv.c rename to 3rd_party/sdl-2.0.20/test/testiconv.c diff --git a/code/3rd_party/sdl-2.0.20/test/testime.c b/3rd_party/sdl-2.0.20/test/testime.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/test/testime.c rename to 3rd_party/sdl-2.0.20/test/testime.c diff --git a/code/3rd_party/sdl-2.0.20/test/testintersections.c b/3rd_party/sdl-2.0.20/test/testintersections.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/test/testintersections.c rename to 3rd_party/sdl-2.0.20/test/testintersections.c diff --git a/code/3rd_party/sdl-2.0.20/test/testjoystick.c b/3rd_party/sdl-2.0.20/test/testjoystick.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/test/testjoystick.c rename to 3rd_party/sdl-2.0.20/test/testjoystick.c diff --git a/code/3rd_party/sdl-2.0.20/test/testkeys.c b/3rd_party/sdl-2.0.20/test/testkeys.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/test/testkeys.c rename to 3rd_party/sdl-2.0.20/test/testkeys.c diff --git a/code/3rd_party/sdl-2.0.20/test/testloadso.c b/3rd_party/sdl-2.0.20/test/testloadso.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/test/testloadso.c rename to 3rd_party/sdl-2.0.20/test/testloadso.c diff --git a/code/3rd_party/sdl-2.0.20/test/testlocale.c b/3rd_party/sdl-2.0.20/test/testlocale.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/test/testlocale.c rename to 3rd_party/sdl-2.0.20/test/testlocale.c diff --git a/code/3rd_party/sdl-2.0.20/test/testlock.c b/3rd_party/sdl-2.0.20/test/testlock.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/test/testlock.c rename to 3rd_party/sdl-2.0.20/test/testlock.c diff --git a/code/3rd_party/sdl-2.0.20/test/testmessage.c b/3rd_party/sdl-2.0.20/test/testmessage.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/test/testmessage.c rename to 3rd_party/sdl-2.0.20/test/testmessage.c diff --git a/code/3rd_party/sdl-2.0.20/test/testmouse.c b/3rd_party/sdl-2.0.20/test/testmouse.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/test/testmouse.c rename to 3rd_party/sdl-2.0.20/test/testmouse.c diff --git a/code/3rd_party/sdl-2.0.20/test/testmultiaudio.c b/3rd_party/sdl-2.0.20/test/testmultiaudio.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/test/testmultiaudio.c rename to 3rd_party/sdl-2.0.20/test/testmultiaudio.c diff --git a/code/3rd_party/sdl-2.0.20/test/testnative.c b/3rd_party/sdl-2.0.20/test/testnative.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/test/testnative.c rename to 3rd_party/sdl-2.0.20/test/testnative.c diff --git a/code/3rd_party/sdl-2.0.20/test/testnative.h b/3rd_party/sdl-2.0.20/test/testnative.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/test/testnative.h rename to 3rd_party/sdl-2.0.20/test/testnative.h diff --git a/code/3rd_party/sdl-2.0.20/test/testnativecocoa.m b/3rd_party/sdl-2.0.20/test/testnativecocoa.m similarity index 100% rename from code/3rd_party/sdl-2.0.20/test/testnativecocoa.m rename to 3rd_party/sdl-2.0.20/test/testnativecocoa.m diff --git a/code/3rd_party/sdl-2.0.20/test/testnativeos2.c b/3rd_party/sdl-2.0.20/test/testnativeos2.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/test/testnativeos2.c rename to 3rd_party/sdl-2.0.20/test/testnativeos2.c diff --git a/code/3rd_party/sdl-2.0.20/test/testnativew32.c b/3rd_party/sdl-2.0.20/test/testnativew32.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/test/testnativew32.c rename to 3rd_party/sdl-2.0.20/test/testnativew32.c diff --git a/code/3rd_party/sdl-2.0.20/test/testnativex11.c b/3rd_party/sdl-2.0.20/test/testnativex11.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/test/testnativex11.c rename to 3rd_party/sdl-2.0.20/test/testnativex11.c diff --git a/code/3rd_party/sdl-2.0.20/test/testoffscreen.c b/3rd_party/sdl-2.0.20/test/testoffscreen.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/test/testoffscreen.c rename to 3rd_party/sdl-2.0.20/test/testoffscreen.c diff --git a/code/3rd_party/sdl-2.0.20/test/testoverlay2.c b/3rd_party/sdl-2.0.20/test/testoverlay2.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/test/testoverlay2.c rename to 3rd_party/sdl-2.0.20/test/testoverlay2.c diff --git a/code/3rd_party/sdl-2.0.20/test/testplatform.c b/3rd_party/sdl-2.0.20/test/testplatform.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/test/testplatform.c rename to 3rd_party/sdl-2.0.20/test/testplatform.c diff --git a/code/3rd_party/sdl-2.0.20/test/testpower.c b/3rd_party/sdl-2.0.20/test/testpower.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/test/testpower.c rename to 3rd_party/sdl-2.0.20/test/testpower.c diff --git a/code/3rd_party/sdl-2.0.20/test/testqsort.c b/3rd_party/sdl-2.0.20/test/testqsort.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/test/testqsort.c rename to 3rd_party/sdl-2.0.20/test/testqsort.c diff --git a/code/3rd_party/sdl-2.0.20/test/testrelative.c b/3rd_party/sdl-2.0.20/test/testrelative.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/test/testrelative.c rename to 3rd_party/sdl-2.0.20/test/testrelative.c diff --git a/code/3rd_party/sdl-2.0.20/test/testrendercopyex.c b/3rd_party/sdl-2.0.20/test/testrendercopyex.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/test/testrendercopyex.c rename to 3rd_party/sdl-2.0.20/test/testrendercopyex.c diff --git a/code/3rd_party/sdl-2.0.20/test/testrendertarget.c b/3rd_party/sdl-2.0.20/test/testrendertarget.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/test/testrendertarget.c rename to 3rd_party/sdl-2.0.20/test/testrendertarget.c diff --git a/code/3rd_party/sdl-2.0.20/test/testresample.c b/3rd_party/sdl-2.0.20/test/testresample.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/test/testresample.c rename to 3rd_party/sdl-2.0.20/test/testresample.c diff --git a/code/3rd_party/sdl-2.0.20/test/testrumble.c b/3rd_party/sdl-2.0.20/test/testrumble.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/test/testrumble.c rename to 3rd_party/sdl-2.0.20/test/testrumble.c diff --git a/code/3rd_party/sdl-2.0.20/test/testscale.c b/3rd_party/sdl-2.0.20/test/testscale.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/test/testscale.c rename to 3rd_party/sdl-2.0.20/test/testscale.c diff --git a/code/3rd_party/sdl-2.0.20/test/testsem.c b/3rd_party/sdl-2.0.20/test/testsem.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/test/testsem.c rename to 3rd_party/sdl-2.0.20/test/testsem.c diff --git a/code/3rd_party/sdl-2.0.20/test/testsensor.c b/3rd_party/sdl-2.0.20/test/testsensor.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/test/testsensor.c rename to 3rd_party/sdl-2.0.20/test/testsensor.c diff --git a/code/3rd_party/sdl-2.0.20/test/testshader.c b/3rd_party/sdl-2.0.20/test/testshader.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/test/testshader.c rename to 3rd_party/sdl-2.0.20/test/testshader.c diff --git a/code/3rd_party/sdl-2.0.20/test/testshape.c b/3rd_party/sdl-2.0.20/test/testshape.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/test/testshape.c rename to 3rd_party/sdl-2.0.20/test/testshape.c diff --git a/code/3rd_party/sdl-2.0.20/test/testsprite2.c b/3rd_party/sdl-2.0.20/test/testsprite2.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/test/testsprite2.c rename to 3rd_party/sdl-2.0.20/test/testsprite2.c diff --git a/code/3rd_party/sdl-2.0.20/test/testspriteminimal.c b/3rd_party/sdl-2.0.20/test/testspriteminimal.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/test/testspriteminimal.c rename to 3rd_party/sdl-2.0.20/test/testspriteminimal.c diff --git a/code/3rd_party/sdl-2.0.20/test/teststreaming.c b/3rd_party/sdl-2.0.20/test/teststreaming.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/test/teststreaming.c rename to 3rd_party/sdl-2.0.20/test/teststreaming.c diff --git a/code/3rd_party/sdl-2.0.20/test/testsurround.c b/3rd_party/sdl-2.0.20/test/testsurround.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/test/testsurround.c rename to 3rd_party/sdl-2.0.20/test/testsurround.c diff --git a/code/3rd_party/sdl-2.0.20/test/testthread.c b/3rd_party/sdl-2.0.20/test/testthread.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/test/testthread.c rename to 3rd_party/sdl-2.0.20/test/testthread.c diff --git a/code/3rd_party/sdl-2.0.20/test/testtimer.c b/3rd_party/sdl-2.0.20/test/testtimer.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/test/testtimer.c rename to 3rd_party/sdl-2.0.20/test/testtimer.c diff --git a/code/3rd_party/sdl-2.0.20/test/testurl.c b/3rd_party/sdl-2.0.20/test/testurl.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/test/testurl.c rename to 3rd_party/sdl-2.0.20/test/testurl.c diff --git a/code/3rd_party/sdl-2.0.20/test/testver.c b/3rd_party/sdl-2.0.20/test/testver.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/test/testver.c rename to 3rd_party/sdl-2.0.20/test/testver.c diff --git a/code/3rd_party/sdl-2.0.20/test/testviewport.c b/3rd_party/sdl-2.0.20/test/testviewport.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/test/testviewport.c rename to 3rd_party/sdl-2.0.20/test/testviewport.c diff --git a/code/3rd_party/sdl-2.0.20/test/testvulkan.c b/3rd_party/sdl-2.0.20/test/testvulkan.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/test/testvulkan.c rename to 3rd_party/sdl-2.0.20/test/testvulkan.c diff --git a/code/3rd_party/sdl-2.0.20/test/testwm2.c b/3rd_party/sdl-2.0.20/test/testwm2.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/test/testwm2.c rename to 3rd_party/sdl-2.0.20/test/testwm2.c diff --git a/code/3rd_party/sdl-2.0.20/test/testyuv.bmp b/3rd_party/sdl-2.0.20/test/testyuv.bmp similarity index 100% rename from code/3rd_party/sdl-2.0.20/test/testyuv.bmp rename to 3rd_party/sdl-2.0.20/test/testyuv.bmp diff --git a/code/3rd_party/sdl-2.0.20/test/testyuv.c b/3rd_party/sdl-2.0.20/test/testyuv.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/test/testyuv.c rename to 3rd_party/sdl-2.0.20/test/testyuv.c diff --git a/code/3rd_party/sdl-2.0.20/test/testyuv_cvt.c b/3rd_party/sdl-2.0.20/test/testyuv_cvt.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/test/testyuv_cvt.c rename to 3rd_party/sdl-2.0.20/test/testyuv_cvt.c diff --git a/code/3rd_party/sdl-2.0.20/test/testyuv_cvt.h b/3rd_party/sdl-2.0.20/test/testyuv_cvt.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/test/testyuv_cvt.h rename to 3rd_party/sdl-2.0.20/test/testyuv_cvt.h diff --git a/code/3rd_party/sdl-2.0.20/test/torturethread.c b/3rd_party/sdl-2.0.20/test/torturethread.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/test/torturethread.c rename to 3rd_party/sdl-2.0.20/test/torturethread.c diff --git a/code/3rd_party/sdl-2.0.20/test/unifont-13.0.06-license.txt b/3rd_party/sdl-2.0.20/test/unifont-13.0.06-license.txt similarity index 100% rename from code/3rd_party/sdl-2.0.20/test/unifont-13.0.06-license.txt rename to 3rd_party/sdl-2.0.20/test/unifont-13.0.06-license.txt diff --git a/code/3rd_party/sdl-2.0.20/test/unifont-13.0.06.hex b/3rd_party/sdl-2.0.20/test/unifont-13.0.06.hex similarity index 100% rename from code/3rd_party/sdl-2.0.20/test/unifont-13.0.06.hex rename to 3rd_party/sdl-2.0.20/test/unifont-13.0.06.hex diff --git a/code/3rd_party/sdl-2.0.20/test/utf8.txt b/3rd_party/sdl-2.0.20/test/utf8.txt similarity index 100% rename from code/3rd_party/sdl-2.0.20/test/utf8.txt rename to 3rd_party/sdl-2.0.20/test/utf8.txt diff --git a/code/3rd_party/sdl-2.0.20/visualtest/COPYING.txt b/3rd_party/sdl-2.0.20/visualtest/COPYING.txt similarity index 100% rename from code/3rd_party/sdl-2.0.20/visualtest/COPYING.txt rename to 3rd_party/sdl-2.0.20/visualtest/COPYING.txt diff --git a/code/3rd_party/sdl-2.0.20/visualtest/Makefile.in b/3rd_party/sdl-2.0.20/visualtest/Makefile.in similarity index 100% rename from code/3rd_party/sdl-2.0.20/visualtest/Makefile.in rename to 3rd_party/sdl-2.0.20/visualtest/Makefile.in diff --git a/code/3rd_party/sdl-2.0.20/visualtest/README.txt b/3rd_party/sdl-2.0.20/visualtest/README.txt similarity index 100% rename from code/3rd_party/sdl-2.0.20/visualtest/README.txt rename to 3rd_party/sdl-2.0.20/visualtest/README.txt diff --git a/code/3rd_party/sdl-2.0.20/visualtest/acinclude.m4 b/3rd_party/sdl-2.0.20/visualtest/acinclude.m4 similarity index 100% rename from code/3rd_party/sdl-2.0.20/visualtest/acinclude.m4 rename to 3rd_party/sdl-2.0.20/visualtest/acinclude.m4 diff --git a/code/3rd_party/sdl-2.0.20/visualtest/autogen.sh b/3rd_party/sdl-2.0.20/visualtest/autogen.sh similarity index 100% rename from code/3rd_party/sdl-2.0.20/visualtest/autogen.sh rename to 3rd_party/sdl-2.0.20/visualtest/autogen.sh diff --git a/code/3rd_party/sdl-2.0.20/visualtest/configs/testsprite2_blendmodes/testsprite2_blendmodes.actions b/3rd_party/sdl-2.0.20/visualtest/configs/testsprite2_blendmodes/testsprite2_blendmodes.actions similarity index 100% rename from code/3rd_party/sdl-2.0.20/visualtest/configs/testsprite2_blendmodes/testsprite2_blendmodes.actions rename to 3rd_party/sdl-2.0.20/visualtest/configs/testsprite2_blendmodes/testsprite2_blendmodes.actions diff --git a/code/3rd_party/sdl-2.0.20/visualtest/configs/testsprite2_blendmodes/testsprite2_blendmodes.config b/3rd_party/sdl-2.0.20/visualtest/configs/testsprite2_blendmodes/testsprite2_blendmodes.config similarity index 100% rename from code/3rd_party/sdl-2.0.20/visualtest/configs/testsprite2_blendmodes/testsprite2_blendmodes.config rename to 3rd_party/sdl-2.0.20/visualtest/configs/testsprite2_blendmodes/testsprite2_blendmodes.config diff --git a/code/3rd_party/sdl-2.0.20/visualtest/configs/testsprite2_blendmodes/testsprite2_blendmodes.parameters b/3rd_party/sdl-2.0.20/visualtest/configs/testsprite2_blendmodes/testsprite2_blendmodes.parameters similarity index 100% rename from code/3rd_party/sdl-2.0.20/visualtest/configs/testsprite2_blendmodes/testsprite2_blendmodes.parameters rename to 3rd_party/sdl-2.0.20/visualtest/configs/testsprite2_blendmodes/testsprite2_blendmodes.parameters diff --git a/code/3rd_party/sdl-2.0.20/visualtest/configs/testsprite2_crashtest/testsprite2_crashtest.actions b/3rd_party/sdl-2.0.20/visualtest/configs/testsprite2_crashtest/testsprite2_crashtest.actions similarity index 100% rename from code/3rd_party/sdl-2.0.20/visualtest/configs/testsprite2_crashtest/testsprite2_crashtest.actions rename to 3rd_party/sdl-2.0.20/visualtest/configs/testsprite2_crashtest/testsprite2_crashtest.actions diff --git a/code/3rd_party/sdl-2.0.20/visualtest/configs/testsprite2_crashtest/testsprite2_crashtest.config b/3rd_party/sdl-2.0.20/visualtest/configs/testsprite2_crashtest/testsprite2_crashtest.config similarity index 100% rename from code/3rd_party/sdl-2.0.20/visualtest/configs/testsprite2_crashtest/testsprite2_crashtest.config rename to 3rd_party/sdl-2.0.20/visualtest/configs/testsprite2_crashtest/testsprite2_crashtest.config diff --git a/code/3rd_party/sdl-2.0.20/visualtest/configs/testsprite2_crashtest/testsprite2_crashtest.parameters b/3rd_party/sdl-2.0.20/visualtest/configs/testsprite2_crashtest/testsprite2_crashtest.parameters similarity index 100% rename from code/3rd_party/sdl-2.0.20/visualtest/configs/testsprite2_crashtest/testsprite2_crashtest.parameters rename to 3rd_party/sdl-2.0.20/visualtest/configs/testsprite2_crashtest/testsprite2_crashtest.parameters diff --git a/code/3rd_party/sdl-2.0.20/visualtest/configs/testsprite2_fullscreen/testsprite2_fullscreen.actions b/3rd_party/sdl-2.0.20/visualtest/configs/testsprite2_fullscreen/testsprite2_fullscreen.actions similarity index 100% rename from code/3rd_party/sdl-2.0.20/visualtest/configs/testsprite2_fullscreen/testsprite2_fullscreen.actions rename to 3rd_party/sdl-2.0.20/visualtest/configs/testsprite2_fullscreen/testsprite2_fullscreen.actions diff --git a/code/3rd_party/sdl-2.0.20/visualtest/configs/testsprite2_fullscreen/testsprite2_fullscreen.config b/3rd_party/sdl-2.0.20/visualtest/configs/testsprite2_fullscreen/testsprite2_fullscreen.config similarity index 100% rename from code/3rd_party/sdl-2.0.20/visualtest/configs/testsprite2_fullscreen/testsprite2_fullscreen.config rename to 3rd_party/sdl-2.0.20/visualtest/configs/testsprite2_fullscreen/testsprite2_fullscreen.config diff --git a/code/3rd_party/sdl-2.0.20/visualtest/configs/testsprite2_fullscreen/testsprite2_fullscreen.parameters b/3rd_party/sdl-2.0.20/visualtest/configs/testsprite2_fullscreen/testsprite2_fullscreen.parameters similarity index 100% rename from code/3rd_party/sdl-2.0.20/visualtest/configs/testsprite2_fullscreen/testsprite2_fullscreen.parameters rename to 3rd_party/sdl-2.0.20/visualtest/configs/testsprite2_fullscreen/testsprite2_fullscreen.parameters diff --git a/code/3rd_party/sdl-2.0.20/visualtest/configs/testsprite2_geometry/testsprite2_geometry.actions b/3rd_party/sdl-2.0.20/visualtest/configs/testsprite2_geometry/testsprite2_geometry.actions similarity index 100% rename from code/3rd_party/sdl-2.0.20/visualtest/configs/testsprite2_geometry/testsprite2_geometry.actions rename to 3rd_party/sdl-2.0.20/visualtest/configs/testsprite2_geometry/testsprite2_geometry.actions diff --git a/code/3rd_party/sdl-2.0.20/visualtest/configs/testsprite2_geometry/testsprite2_geometry.config b/3rd_party/sdl-2.0.20/visualtest/configs/testsprite2_geometry/testsprite2_geometry.config similarity index 100% rename from code/3rd_party/sdl-2.0.20/visualtest/configs/testsprite2_geometry/testsprite2_geometry.config rename to 3rd_party/sdl-2.0.20/visualtest/configs/testsprite2_geometry/testsprite2_geometry.config diff --git a/code/3rd_party/sdl-2.0.20/visualtest/configs/testsprite2_geometry/testsprite2_geometry.parameters b/3rd_party/sdl-2.0.20/visualtest/configs/testsprite2_geometry/testsprite2_geometry.parameters similarity index 100% rename from code/3rd_party/sdl-2.0.20/visualtest/configs/testsprite2_geometry/testsprite2_geometry.parameters rename to 3rd_party/sdl-2.0.20/visualtest/configs/testsprite2_geometry/testsprite2_geometry.parameters diff --git a/code/3rd_party/sdl-2.0.20/visualtest/configure b/3rd_party/sdl-2.0.20/visualtest/configure similarity index 100% rename from code/3rd_party/sdl-2.0.20/visualtest/configure rename to 3rd_party/sdl-2.0.20/visualtest/configure diff --git a/code/3rd_party/sdl-2.0.20/visualtest/configure.ac b/3rd_party/sdl-2.0.20/visualtest/configure.ac similarity index 100% rename from code/3rd_party/sdl-2.0.20/visualtest/configure.ac rename to 3rd_party/sdl-2.0.20/visualtest/configure.ac diff --git a/code/3rd_party/sdl-2.0.20/visualtest/docs/Doxyfile b/3rd_party/sdl-2.0.20/visualtest/docs/Doxyfile similarity index 100% rename from code/3rd_party/sdl-2.0.20/visualtest/docs/Doxyfile rename to 3rd_party/sdl-2.0.20/visualtest/docs/Doxyfile diff --git a/code/3rd_party/sdl-2.0.20/visualtest/include/SDL_visualtest_action_configparser.h b/3rd_party/sdl-2.0.20/visualtest/include/SDL_visualtest_action_configparser.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/visualtest/include/SDL_visualtest_action_configparser.h rename to 3rd_party/sdl-2.0.20/visualtest/include/SDL_visualtest_action_configparser.h diff --git a/code/3rd_party/sdl-2.0.20/visualtest/include/SDL_visualtest_exhaustive_variator.h b/3rd_party/sdl-2.0.20/visualtest/include/SDL_visualtest_exhaustive_variator.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/visualtest/include/SDL_visualtest_exhaustive_variator.h rename to 3rd_party/sdl-2.0.20/visualtest/include/SDL_visualtest_exhaustive_variator.h diff --git a/code/3rd_party/sdl-2.0.20/visualtest/include/SDL_visualtest_harness_argparser.h b/3rd_party/sdl-2.0.20/visualtest/include/SDL_visualtest_harness_argparser.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/visualtest/include/SDL_visualtest_harness_argparser.h rename to 3rd_party/sdl-2.0.20/visualtest/include/SDL_visualtest_harness_argparser.h diff --git a/code/3rd_party/sdl-2.0.20/visualtest/include/SDL_visualtest_mischelper.h b/3rd_party/sdl-2.0.20/visualtest/include/SDL_visualtest_mischelper.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/visualtest/include/SDL_visualtest_mischelper.h rename to 3rd_party/sdl-2.0.20/visualtest/include/SDL_visualtest_mischelper.h diff --git a/code/3rd_party/sdl-2.0.20/visualtest/include/SDL_visualtest_parsehelper.h b/3rd_party/sdl-2.0.20/visualtest/include/SDL_visualtest_parsehelper.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/visualtest/include/SDL_visualtest_parsehelper.h rename to 3rd_party/sdl-2.0.20/visualtest/include/SDL_visualtest_parsehelper.h diff --git a/code/3rd_party/sdl-2.0.20/visualtest/include/SDL_visualtest_process.h b/3rd_party/sdl-2.0.20/visualtest/include/SDL_visualtest_process.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/visualtest/include/SDL_visualtest_process.h rename to 3rd_party/sdl-2.0.20/visualtest/include/SDL_visualtest_process.h diff --git a/code/3rd_party/sdl-2.0.20/visualtest/include/SDL_visualtest_random_variator.h b/3rd_party/sdl-2.0.20/visualtest/include/SDL_visualtest_random_variator.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/visualtest/include/SDL_visualtest_random_variator.h rename to 3rd_party/sdl-2.0.20/visualtest/include/SDL_visualtest_random_variator.h diff --git a/code/3rd_party/sdl-2.0.20/visualtest/include/SDL_visualtest_rwhelper.h b/3rd_party/sdl-2.0.20/visualtest/include/SDL_visualtest_rwhelper.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/visualtest/include/SDL_visualtest_rwhelper.h rename to 3rd_party/sdl-2.0.20/visualtest/include/SDL_visualtest_rwhelper.h diff --git a/code/3rd_party/sdl-2.0.20/visualtest/include/SDL_visualtest_screenshot.h b/3rd_party/sdl-2.0.20/visualtest/include/SDL_visualtest_screenshot.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/visualtest/include/SDL_visualtest_screenshot.h rename to 3rd_party/sdl-2.0.20/visualtest/include/SDL_visualtest_screenshot.h diff --git a/code/3rd_party/sdl-2.0.20/visualtest/include/SDL_visualtest_sut_configparser.h b/3rd_party/sdl-2.0.20/visualtest/include/SDL_visualtest_sut_configparser.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/visualtest/include/SDL_visualtest_sut_configparser.h rename to 3rd_party/sdl-2.0.20/visualtest/include/SDL_visualtest_sut_configparser.h diff --git a/code/3rd_party/sdl-2.0.20/visualtest/include/SDL_visualtest_variator_common.h b/3rd_party/sdl-2.0.20/visualtest/include/SDL_visualtest_variator_common.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/visualtest/include/SDL_visualtest_variator_common.h rename to 3rd_party/sdl-2.0.20/visualtest/include/SDL_visualtest_variator_common.h diff --git a/code/3rd_party/sdl-2.0.20/visualtest/include/SDL_visualtest_variators.h b/3rd_party/sdl-2.0.20/visualtest/include/SDL_visualtest_variators.h similarity index 100% rename from code/3rd_party/sdl-2.0.20/visualtest/include/SDL_visualtest_variators.h rename to 3rd_party/sdl-2.0.20/visualtest/include/SDL_visualtest_variators.h diff --git a/code/3rd_party/sdl-2.0.20/visualtest/launch_harness.cmd b/3rd_party/sdl-2.0.20/visualtest/launch_harness.cmd similarity index 100% rename from code/3rd_party/sdl-2.0.20/visualtest/launch_harness.cmd rename to 3rd_party/sdl-2.0.20/visualtest/launch_harness.cmd diff --git a/code/3rd_party/sdl-2.0.20/visualtest/launch_harness.sh b/3rd_party/sdl-2.0.20/visualtest/launch_harness.sh similarity index 100% rename from code/3rd_party/sdl-2.0.20/visualtest/launch_harness.sh rename to 3rd_party/sdl-2.0.20/visualtest/launch_harness.sh diff --git a/code/3rd_party/sdl-2.0.20/visualtest/src/action_configparser.c b/3rd_party/sdl-2.0.20/visualtest/src/action_configparser.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/visualtest/src/action_configparser.c rename to 3rd_party/sdl-2.0.20/visualtest/src/action_configparser.c diff --git a/code/3rd_party/sdl-2.0.20/visualtest/src/harness_argparser.c b/3rd_party/sdl-2.0.20/visualtest/src/harness_argparser.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/visualtest/src/harness_argparser.c rename to 3rd_party/sdl-2.0.20/visualtest/src/harness_argparser.c diff --git a/code/3rd_party/sdl-2.0.20/visualtest/src/linux/linux_process.c b/3rd_party/sdl-2.0.20/visualtest/src/linux/linux_process.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/visualtest/src/linux/linux_process.c rename to 3rd_party/sdl-2.0.20/visualtest/src/linux/linux_process.c diff --git a/code/3rd_party/sdl-2.0.20/visualtest/src/mischelper.c b/3rd_party/sdl-2.0.20/visualtest/src/mischelper.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/visualtest/src/mischelper.c rename to 3rd_party/sdl-2.0.20/visualtest/src/mischelper.c diff --git a/code/3rd_party/sdl-2.0.20/visualtest/src/parsehelper.c b/3rd_party/sdl-2.0.20/visualtest/src/parsehelper.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/visualtest/src/parsehelper.c rename to 3rd_party/sdl-2.0.20/visualtest/src/parsehelper.c diff --git a/code/3rd_party/sdl-2.0.20/visualtest/src/rwhelper.c b/3rd_party/sdl-2.0.20/visualtest/src/rwhelper.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/visualtest/src/rwhelper.c rename to 3rd_party/sdl-2.0.20/visualtest/src/rwhelper.c diff --git a/code/3rd_party/sdl-2.0.20/visualtest/src/screenshot.c b/3rd_party/sdl-2.0.20/visualtest/src/screenshot.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/visualtest/src/screenshot.c rename to 3rd_party/sdl-2.0.20/visualtest/src/screenshot.c diff --git a/code/3rd_party/sdl-2.0.20/visualtest/src/sut_configparser.c b/3rd_party/sdl-2.0.20/visualtest/src/sut_configparser.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/visualtest/src/sut_configparser.c rename to 3rd_party/sdl-2.0.20/visualtest/src/sut_configparser.c diff --git a/code/3rd_party/sdl-2.0.20/visualtest/src/testharness.c b/3rd_party/sdl-2.0.20/visualtest/src/testharness.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/visualtest/src/testharness.c rename to 3rd_party/sdl-2.0.20/visualtest/src/testharness.c diff --git a/code/3rd_party/sdl-2.0.20/visualtest/src/variator_common.c b/3rd_party/sdl-2.0.20/visualtest/src/variator_common.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/visualtest/src/variator_common.c rename to 3rd_party/sdl-2.0.20/visualtest/src/variator_common.c diff --git a/code/3rd_party/sdl-2.0.20/visualtest/src/variator_exhaustive.c b/3rd_party/sdl-2.0.20/visualtest/src/variator_exhaustive.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/visualtest/src/variator_exhaustive.c rename to 3rd_party/sdl-2.0.20/visualtest/src/variator_exhaustive.c diff --git a/code/3rd_party/sdl-2.0.20/visualtest/src/variator_random.c b/3rd_party/sdl-2.0.20/visualtest/src/variator_random.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/visualtest/src/variator_random.c rename to 3rd_party/sdl-2.0.20/visualtest/src/variator_random.c diff --git a/code/3rd_party/sdl-2.0.20/visualtest/src/variators.c b/3rd_party/sdl-2.0.20/visualtest/src/variators.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/visualtest/src/variators.c rename to 3rd_party/sdl-2.0.20/visualtest/src/variators.c diff --git a/code/3rd_party/sdl-2.0.20/visualtest/src/windows/windows_process.c b/3rd_party/sdl-2.0.20/visualtest/src/windows/windows_process.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/visualtest/src/windows/windows_process.c rename to 3rd_party/sdl-2.0.20/visualtest/src/windows/windows_process.c diff --git a/code/3rd_party/sdl-2.0.20/visualtest/src/windows/windows_screenshot.c b/3rd_party/sdl-2.0.20/visualtest/src/windows/windows_screenshot.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/visualtest/src/windows/windows_screenshot.c rename to 3rd_party/sdl-2.0.20/visualtest/src/windows/windows_screenshot.c diff --git a/code/3rd_party/sdl-2.0.20/visualtest/testsprite2_sample.actions b/3rd_party/sdl-2.0.20/visualtest/testsprite2_sample.actions similarity index 100% rename from code/3rd_party/sdl-2.0.20/visualtest/testsprite2_sample.actions rename to 3rd_party/sdl-2.0.20/visualtest/testsprite2_sample.actions diff --git a/code/3rd_party/sdl-2.0.20/visualtest/testsprite2_sample.config b/3rd_party/sdl-2.0.20/visualtest/testsprite2_sample.config similarity index 100% rename from code/3rd_party/sdl-2.0.20/visualtest/testsprite2_sample.config rename to 3rd_party/sdl-2.0.20/visualtest/testsprite2_sample.config diff --git a/code/3rd_party/sdl-2.0.20/visualtest/testsprite2_sample.parameters b/3rd_party/sdl-2.0.20/visualtest/testsprite2_sample.parameters similarity index 100% rename from code/3rd_party/sdl-2.0.20/visualtest/testsprite2_sample.parameters rename to 3rd_party/sdl-2.0.20/visualtest/testsprite2_sample.parameters diff --git a/code/3rd_party/sdl-2.0.20/visualtest/unittest/testquit.actions b/3rd_party/sdl-2.0.20/visualtest/unittest/testquit.actions similarity index 100% rename from code/3rd_party/sdl-2.0.20/visualtest/unittest/testquit.actions rename to 3rd_party/sdl-2.0.20/visualtest/unittest/testquit.actions diff --git a/code/3rd_party/sdl-2.0.20/visualtest/unittest/testquit.c b/3rd_party/sdl-2.0.20/visualtest/unittest/testquit.c similarity index 100% rename from code/3rd_party/sdl-2.0.20/visualtest/unittest/testquit.c rename to 3rd_party/sdl-2.0.20/visualtest/unittest/testquit.c diff --git a/code/3rd_party/sdl-2.0.20/visualtest/unittest/testquit.config b/3rd_party/sdl-2.0.20/visualtest/unittest/testquit.config similarity index 100% rename from code/3rd_party/sdl-2.0.20/visualtest/unittest/testquit.config rename to 3rd_party/sdl-2.0.20/visualtest/unittest/testquit.config diff --git a/code/3rd_party/sdl-2.0.20/visualtest/unittest/testquit.parameters b/3rd_party/sdl-2.0.20/visualtest/unittest/testquit.parameters similarity index 100% rename from code/3rd_party/sdl-2.0.20/visualtest/unittest/testquit.parameters rename to 3rd_party/sdl-2.0.20/visualtest/unittest/testquit.parameters diff --git a/code/3rd_party/sdl-2.0.20/wayland-protocols/idle-inhibit-unstable-v1.xml b/3rd_party/sdl-2.0.20/wayland-protocols/idle-inhibit-unstable-v1.xml similarity index 100% rename from code/3rd_party/sdl-2.0.20/wayland-protocols/idle-inhibit-unstable-v1.xml rename to 3rd_party/sdl-2.0.20/wayland-protocols/idle-inhibit-unstable-v1.xml diff --git a/code/3rd_party/sdl-2.0.20/wayland-protocols/keyboard-shortcuts-inhibit-unstable-v1.xml b/3rd_party/sdl-2.0.20/wayland-protocols/keyboard-shortcuts-inhibit-unstable-v1.xml similarity index 100% rename from code/3rd_party/sdl-2.0.20/wayland-protocols/keyboard-shortcuts-inhibit-unstable-v1.xml rename to 3rd_party/sdl-2.0.20/wayland-protocols/keyboard-shortcuts-inhibit-unstable-v1.xml diff --git a/code/3rd_party/sdl-2.0.20/wayland-protocols/pointer-constraints-unstable-v1.xml b/3rd_party/sdl-2.0.20/wayland-protocols/pointer-constraints-unstable-v1.xml similarity index 100% rename from code/3rd_party/sdl-2.0.20/wayland-protocols/pointer-constraints-unstable-v1.xml rename to 3rd_party/sdl-2.0.20/wayland-protocols/pointer-constraints-unstable-v1.xml diff --git a/code/3rd_party/sdl-2.0.20/wayland-protocols/relative-pointer-unstable-v1.xml b/3rd_party/sdl-2.0.20/wayland-protocols/relative-pointer-unstable-v1.xml similarity index 100% rename from code/3rd_party/sdl-2.0.20/wayland-protocols/relative-pointer-unstable-v1.xml rename to 3rd_party/sdl-2.0.20/wayland-protocols/relative-pointer-unstable-v1.xml diff --git a/code/3rd_party/sdl-2.0.20/wayland-protocols/text-input-unstable-v3.xml b/3rd_party/sdl-2.0.20/wayland-protocols/text-input-unstable-v3.xml similarity index 100% rename from code/3rd_party/sdl-2.0.20/wayland-protocols/text-input-unstable-v3.xml rename to 3rd_party/sdl-2.0.20/wayland-protocols/text-input-unstable-v3.xml diff --git a/code/3rd_party/sdl-2.0.20/wayland-protocols/wayland.xml b/3rd_party/sdl-2.0.20/wayland-protocols/wayland.xml similarity index 100% rename from code/3rd_party/sdl-2.0.20/wayland-protocols/wayland.xml rename to 3rd_party/sdl-2.0.20/wayland-protocols/wayland.xml diff --git a/code/3rd_party/sdl-2.0.20/wayland-protocols/xdg-activation-v1.xml b/3rd_party/sdl-2.0.20/wayland-protocols/xdg-activation-v1.xml similarity index 100% rename from code/3rd_party/sdl-2.0.20/wayland-protocols/xdg-activation-v1.xml rename to 3rd_party/sdl-2.0.20/wayland-protocols/xdg-activation-v1.xml diff --git a/code/3rd_party/sdl-2.0.20/wayland-protocols/xdg-decoration-unstable-v1.xml b/3rd_party/sdl-2.0.20/wayland-protocols/xdg-decoration-unstable-v1.xml similarity index 100% rename from code/3rd_party/sdl-2.0.20/wayland-protocols/xdg-decoration-unstable-v1.xml rename to 3rd_party/sdl-2.0.20/wayland-protocols/xdg-decoration-unstable-v1.xml diff --git a/code/3rd_party/sdl-2.0.20/wayland-protocols/xdg-shell.xml b/3rd_party/sdl-2.0.20/wayland-protocols/xdg-shell.xml similarity index 100% rename from code/3rd_party/sdl-2.0.20/wayland-protocols/xdg-shell.xml rename to 3rd_party/sdl-2.0.20/wayland-protocols/xdg-shell.xml diff --git a/CMakeLists.txt b/CMakeLists.txt index 3a59d61..89c72ac 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -7,7 +7,9 @@ set(CMAKE_C_COMPILER "clang" CACHE STRING "C compiler" FORCE) set(CMAKE_CXX_COMPILER "clang++" CACHE STRING "C++ compiler" FORCE) set(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -O0") set(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} -O2") + set(DEPENDENCY_WARNINGS "-w") + set(PROJECT_WARNINGS -Werror -W -Wall -Wextra -Wshadow @@ -29,20 +31,16 @@ endif() set(PROJECT obolos) project(${PROJECT}) -set(BIN ${PROJECT}) -set(GAME game) - - ########################################################### # DIRECTORIES ########################################################### -set(3RD_PARTY_DIR ${CMAKE_SOURCE_DIR}/code/3rd_party) -set(SRC_DIR ${CMAKE_SOURCE_DIR}/code/src) -set(ASSET_DIR ${CMAKE_SOURCE_DIR}/assets/processed) -set(SHADER_DIR ${CMAKE_SOURCE_DIR}/code/shaders) -set(SCRIPTS_DIR ${CMAKE_SOURCE_DIR}/tools/scripts) set(PACKAGE_DIR ${CMAKE_BINARY_DIR}/package) +set(ASSET_DIR ${CMAKE_SOURCE_DIR}/assets/processed) +set(3RD_PARTY_DIR ${CMAKE_SOURCE_DIR}/3rd_party) +set(SRC_DIR ${CMAKE_SOURCE_DIR}/code/game) +set(SHADER_DIR ${CMAKE_SOURCE_DIR}/code/shaders) +set(TOOLS_DIR ${CMAKE_SOURCE_DIR}/code/tools) ########################################################### @@ -51,49 +49,55 @@ set(PACKAGE_DIR ${CMAKE_BINARY_DIR}/package) # glad add_subdirectory(${3RD_PARTY_DIR}/glad EXCLUDE_FROM_ALL) +set_target_properties(glad PROPERTIES COMPILE_FLAGS ${DEPENDENCY_WARNINGS}) +set_target_properties(glad PROPERTIES LINK_FLAGS_RELEASE -s) # SDL set(SDL_SHARED ON CACHE BOOL "" FORCE) set(SDL_STATIC OFF CACHE BOOL "" FORCE) add_subdirectory(${3RD_PARTY_DIR}/sdl-2.0.20 EXCLUDE_FROM_ALL) set_target_properties(SDL2 PROPERTIES COMPILE_FLAGS ${DEPENDENCY_WARNINGS}) +set_target_properties(SDL2 PROPERTIES LINK_FLAGS_RELEASE -s) set_target_properties(SDL2main PROPERTIES COMPILE_FLAGS ${DEPENDENCY_WARNINGS}) +set_target_properties(SDL2main PROPERTIES LINK_FLAGS_RELEASE -s) ########################################################### # ASSETS ########################################################### -# Copy processed assets and shaders to build directory -add_custom_target( - invalidate_assets ALL - COMMAND ${CMAKE_COMMAND} -E touch - ${ASSET_DIR} - COMMAND ${CMAKE_COMMAND} -E touch - ${SHADER_DIR}) +add_custom_target(copy_assets ALL) add_custom_command( - TARGET invalidate_assets POST_BUILD - COMMAND ${CMAKE_COMMAND} -E copy_directory ${ASSET_DIR}/ ${CMAKE_BINARY_DIR} - COMMAND ${CMAKE_COMMAND} -E copy_directory ${SHADER_DIR} ${CMAKE_BINARY_DIR}/shaders) - - -########################################################### -# TARGETS -########################################################### - -add_executable(${BIN}) -add_library(${GAME} SHARED) + TARGET copy_assets POST_BUILD + COMMAND mkdir -p ${CMAKE_BINARY_DIR}/shaders + COMMAND cp -u ${SHADER_DIR}/*.glsl ${CMAKE_BINARY_DIR}/shaders + COMMAND cp -u ${ASSET_DIR}/*.bin ${CMAKE_BINARY_DIR}) ########################################################### # BUILD CONFIGURATIONS ########################################################### +if (CMAKE_BUILD_TYPE STREQUAL "Release") + add_compile_definitions(BUILD_RELEASE) +elseif (CMAKE_BUILD_TYPE STREQUAL "Debug") + add_compile_definitions(BUILD_DEBUG) +endif() + + +########################################################### +# EXECUTABLE +########################################################### + +set(BIN ${PROJECT}) set(BIN_SRCS ${SRC_DIR}/main.c) -set(GAME_SRCS ${SRC_DIR}/all.c) -set(BIN_LIBS glad SDL2) -set(GAME_LIBS glad SDL2) +set(BIN_LIBS glad SDL2 m) + +add_executable(${BIN}) + +set_target_properties(${BIN} PROPERTIES ${PROJECT_PROPERTIES}) +set_target_properties(${BIN} PROPERTIES LINK_FLAGS_RELEASE -s) if(WIN32) set(BIN_LIBS @@ -103,16 +107,14 @@ if(WIN32) endif() if (CMAKE_BUILD_TYPE STREQUAL "Release") - add_compile_definitions(BUILD_RELEASE) - - set(GAME_SRCS ${GAME_SRCS} ${SRC_DIR}/engine/glsl.inc) + set(BIN_SRCS ${BIN_SRCS} ${SRC_DIR}/glsl.inc) add_custom_command( PRE_BUILD - OUTPUT ${SRC_DIR}/engine/glsl.inc + OUTPUT ${SRC_DIR}/glsl.inc COMMAND - ${SCRIPTS_DIR}/header_generator.sh - ${SRC_DIR}/engine/glsl.inc # output + ${TOOLS_DIR}/scripts/header_generator.sh + ${SRC_DIR}/glsl.inc # output ${SHADER_DIR}/geo.glsl # input ${SHADER_DIR}/screen.glsl # input ${SHADER_DIR}/text.glsl # input @@ -122,57 +124,11 @@ if (CMAKE_BUILD_TYPE STREQUAL "Release") ${SHADER_DIR}/text.glsl) add_custom_command( - TARGET ${GAME} + TARGET ${BIN} POST_BUILD - COMMAND ${CMAKE_COMMAND} -E rm ${SRC_DIR}/engine/glsl.inc) -elseif(CMAKE_BUILD_TYPE STREQUAL "Debug") - add_compile_definitions(BUILD_DEBUG) - - # Required for a valid language server compilation database to be generated with unity builds - if (CMAKE_EXPORT_COMPILE_COMMANDS) - file(GLOB GAME_SRCS - ${SRC_DIR}/all.c - ${SRC_DIR}/engine/*.c - ${SRC_DIR}/game/*.c) - - target_compile_options( - ${GAME} - PRIVATE - -include ${SRC_DIR}/all.c) - endif() -else() - message(FATAL_ERROR "No build configuration selected") + COMMAND ${CMAKE_COMMAND} -E rm ${SRC_DIR}/glsl.inc) endif() - -########################################################### -# GAME LIBRARY -########################################################### - -set_target_properties(${GAME} PROPERTIES ${PROJECT_PROPERTIES}) - -target_sources( - ${GAME} - PRIVATE - ${GAME_SRCS}) - -target_link_libraries( - ${GAME} - PRIVATE - ${GAME_LIBS}) - -target_compile_options( - ${GAME} - PRIVATE - ${PROJECT_WARNINGS}) - - -########################################################### -# EXECUTABLE -########################################################### - -set_target_properties(${BIN} PROPERTIES ${PROJECT_PROPERTIES}) - target_sources( ${BIN} PRIVATE @@ -195,12 +151,60 @@ add_custom_target( WORKING_DIRECTORY ${CMAKE_BINARY_DIR}) +########################################################### +# GAME LIBRARY +########################################################### + +if (CMAKE_BUILD_TYPE STREQUAL "Debug") + set(GAME game) + + add_library(${GAME} SHARED) + set(GAME_SRCS ${SRC_DIR}/all.c) + set(GAME_LIBS glad SDL2 m) + + # Required for a valid language server compilation database to be generated with unity builds + if (CMAKE_EXPORT_COMPILE_COMMANDS) + file(GLOB GAME_SRCS + ${SRC_DIR}/all.c + ${SRC_DIR}/engine.c + ${SRC_DIR}/game.c + ${SRC_DIR}/engine/*.c + ${SRC_DIR}/game/*.c) + + target_compile_options( + ${GAME} + PRIVATE + -include ${SRC_DIR}/all.c) + endif() + + set_target_properties(${GAME} PROPERTIES ${PROJECT_PROPERTIES}) + set_target_properties(${GAME} PROPERTIES LINK_FLAGS_RELEASE -s) + + target_sources( + ${GAME} + PRIVATE + ${GAME_SRCS}) + + target_link_libraries( + ${GAME} + PRIVATE + ${GAME_LIBS}) + + target_compile_options( + ${GAME} + PRIVATE + ${PROJECT_WARNINGS}) +endif() + + ########################################################### # INSTALL ########################################################### +list(REMOVE_ITEM BIN_LIBS "m") + install( - TARGETS ${BIN} ${GAME} ${ENGINE} ${BIN_LIBS} ${GAME_LIBS} ${ENGINE_LIBS} + TARGETS ${BIN} ${BIN_LIBS} CONFIGURATIONS Release RUNTIME DESTINATION ${PACKAGE_DIR} LIBRARY DESTINATION ${PACKAGE_DIR}) diff --git a/assets/processed/data.bin b/assets/processed/data.bin deleted file mode 100644 index 6bc8742..0000000 Binary files a/assets/processed/data.bin and /dev/null differ diff --git a/assets/processed/data1.bin b/assets/processed/data1.bin new file mode 100644 index 0000000..cf8ac32 Binary files /dev/null and b/assets/processed/data1.bin differ diff --git a/assets/processed/data2.bin b/assets/processed/data2.bin new file mode 100644 index 0000000..947a354 Binary files /dev/null and b/assets/processed/data2.bin differ diff --git a/assets/source/models/coin.blend b/assets/source/models/coin.blend index 153d3f6..bb7d6e7 100644 Binary files a/assets/source/models/coin.blend and b/assets/source/models/coin.blend differ diff --git a/assets/source/models/level.blend b/assets/source/models/level.blend index 112e9b7..5ee8ffe 100644 Binary files a/assets/source/models/level.blend and b/assets/source/models/level.blend differ diff --git a/assets/source/models/maze.blend b/assets/source/models/maze.blend index c463b10..91d817a 100644 Binary files a/assets/source/models/maze.blend and b/assets/source/models/maze.blend differ diff --git a/assets/source/models/skull.blend b/assets/source/models/skull.blend index f53a1ba..bf91749 100644 Binary files a/assets/source/models/skull.blend and b/assets/source/models/skull.blend differ diff --git a/code/game/all.c b/code/game/all.c new file mode 100644 index 0000000..cc8232c --- /dev/null +++ b/code/game/all.c @@ -0,0 +1,74 @@ +// Shared by platform/engine/game +#include "common.h" + +// Debug target loads shaders from file +// Release target includes shaders directly into the binary +#ifndef BUILD_DEBUG +#include "glsl.inc" +#endif + +typedef uint32_t handle_t; +const handle_t NULL_HANDLE = 0; +enum {MAX_NAME_LENGTH = 64}; + +// Engine Headers +#include "engine/logger.h" +#include "engine/math.h" +#include "engine/hash.h" +#include "engine/memory.h" +#include "engine/camera.h" +#include "engine/ui.h" +#include "engine/data_loader.h" +#include "engine/asset_types.h" +#include "engine/asset_mgr.h" +#include "engine/audio_mgr.h" +#include "engine/render_mgr.h" +#include "engine/node.h" +#include "engine.h" + +#ifdef BUILD_DEBUG +#include "engine/debug.h" +#endif + +// Game Headers +#include "game/logic.h" +#include "game/menu.h" +#include "game/render.h" +#include "game.h" + +#ifdef BUILD_DEBUG +#include "game/debug.h" +#endif + +// Globals +#include "globals.inc" + +// Engine Source +#include "engine/data_loader.c" +#include "engine/font.inc" +#include "engine/math.c" +#include "engine/logger.c" +#include "engine/memory.c" +#include "engine/hash.c" +#include "engine/asset_mgr.c" +#include "engine/audio_mgr.c" +#include "engine/node.c" +#include "engine/camera.c" +#include "engine/render_mgr.c" +#include "engine/ui.c" +#include "engine/engine.c" + +// Game Source +#include "game/logic.c" +#include "game/menu.c" +#include "game/render.c" +#include "game/game.c" + +#ifdef BUILD_DEBUG +#include "game/debug.c" +#endif + +#ifdef BUILD_DEBUG +#include "engine/debug.c" +#endif + diff --git a/code/src/common.h b/code/game/common.h similarity index 54% rename from code/src/common.h rename to code/game/common.h index cb97e79..3bd13e6 100644 --- a/code/src/common.h +++ b/code/game/common.h @@ -24,9 +24,15 @@ const int WINDOW_WIDTH = 1280; const int WINDOW_HEIGHT = 960; const int RENDER_WIDTH = 320; const int RENDER_HEIGHT = 240; -const size_t ENGINE_MEMORY_SIZE = 8U * 1024U * 1024U; -const size_t GAME_MEMORY_SIZE = 8U * 1024U * 1024U; -const size_t SCRATCH_MEMORY_SIZE = 8U * 1024U * 1024U; +const size_t ENGINE_MEMORY_SIZE = 1U * 1024U * 1024U; +const size_t GAME_MEMORY_SIZE = 1U * 1024U * 1024U; +const size_t DATA1_MEMORY_SIZE = 8U * 1024U * 1024U; +const size_t DATA2_MEMORY_SIZE = 8U * 1024U * 1024U; +const size_t SCRATCH_MEMORY_SIZE = 1U * 1024U * 1024U; + +#ifdef BUILD_DEBUG +const size_t DEBUG_MEMORY_SIZE = 1U * 1024U * 1024U; +#endif const float VIEWPORT_WIDTH = (float)RENDER_WIDTH * WINDOW_HEIGHT / RENDER_HEIGHT; const float VIEWPORT_HEIGHT = (float)RENDER_HEIGHT * WINDOW_HEIGHT / RENDER_HEIGHT; @@ -34,37 +40,41 @@ const float VIEWPORT_X = WINDOW_WIDTH/2 - VIEWPORT_WIDTH/2; const float VIEWPORT_Y = WINDOW_HEIGHT/2 - VIEWPORT_HEIGHT/2; typedef struct input { - bool up; - bool down; - bool left; - bool right; + bool forward; bool backward; + bool strafe_left; bool strafe_right; + bool up; bool down; + bool left; bool right; bool select; bool interact; bool pause; int mouse_x_delta; int mouse_y_delta; + +#ifdef BUILD_DEBUG + struct { + bool enable; + bool speed; + bool up; + bool down; + } debug; +#endif } input_t; +typedef struct memory_region { + void* begin; + void* current; + void* end; +} memory_region_t; + typedef struct memory { - struct { - size_t size; - void* begin; - void* current; - void* end; - } engine; + memory_region_t engine; + memory_region_t game; + memory_region_t data1; + memory_region_t data2; + memory_region_t scratch; - struct { - size_t size; - void* begin; - void* current; - void* end; - } game; - - struct { - size_t size; - void* begin; - void* current; - void* end; - } scratch; +#ifdef BUILD_DEBUG + memory_region_t debug; +#endif } memory_t; diff --git a/code/game/engine.h b/code/game/engine.h new file mode 100644 index 0000000..a3ddaf8 --- /dev/null +++ b/code/game/engine.h @@ -0,0 +1,34 @@ +#pragma once + +typedef struct engine { + asset_mgr_t asset_mgr; + audio_mgr_t audio_mgr; + render_mgr_t render_mgr; + + bool is_window_focused; + float time; +} engine_t; + +void +engine_startup(memory_t* memory); + +void +engine_shutdown(void); + +void +engine_update(float dt, input_t input, bool is_window_focused, bool* out_quit); + +void +engine_render(void); + +void +engine_audio_callback(void* userdata, uint8_t* stream, int len); + +#ifdef BUILD_DEBUG +void +engine_reload(memory_t* memory); + +void +engine_debug(float dt, input_t input, uint64_t update_time, uint64_t render_time, uint64_t frame_time); +#endif + diff --git a/code/game/engine/asset_mgr.c b/code/game/engine/asset_mgr.c new file mode 100644 index 0000000..8a7d486 --- /dev/null +++ b/code/game/engine/asset_mgr.c @@ -0,0 +1,194 @@ +void +asset_mgr_startup(void) +{ + g_engine->asset_mgr.meshes.hash = hash_create(NEAREST_PRIME_1024, sizeof(handle_t)); + g_engine->asset_mgr.materials.hash = hash_create(NEAREST_PRIME_256, sizeof(handle_t)); + g_engine->asset_mgr.cameras.hash = hash_create(NEAREST_PRIME_256, sizeof(handle_t)); + g_engine->asset_mgr.sounds.hash = hash_create(NEAREST_PRIME_256, sizeof(handle_t)); + g_engine->asset_mgr.audio_sources.hash = hash_create(NEAREST_PRIME_256, sizeof(handle_t)); +} + +void +insert_mesh(mesh_t mesh) +{ + handle_t handle = g_engine->asset_mgr.meshes.count; + + g_engine->asset_mgr.meshes.data[handle] = mesh; + hash_add(&g_engine->asset_mgr.meshes.hash, HASH_CSTR(mesh.name), &handle); + + g_engine->asset_mgr.meshes.count++; +} + +void +insert_material(material_t material) +{ + handle_t handle = g_engine->asset_mgr.materials.count; + + g_engine->asset_mgr.materials.data[handle] = material; + hash_add(&g_engine->asset_mgr.materials.hash, HASH_CSTR(material.name), &handle); + + g_engine->asset_mgr.materials.count++; +} + +void +insert_sound(sound_t sound) +{ + handle_t handle = g_engine->asset_mgr.sounds.count; + + g_engine->asset_mgr.sounds.data[handle] = sound; + hash_add(&g_engine->asset_mgr.sounds.hash, HASH_CSTR(sound.name), &handle); + + g_engine->asset_mgr.sounds.count++; +} + +void +insert_audio_source(audio_source_t source) +{ + handle_t handle = g_engine->asset_mgr.audio_sources.count; + + g_engine->asset_mgr.audio_sources.data[handle] = source; + hash_add(&g_engine->asset_mgr.audio_sources.hash, HASH_CSTR(source.name), &handle); + + g_engine->asset_mgr.audio_sources.count++; +} + +void +insert_transform(transform_t transform) +{ + handle_t handle = g_engine->asset_mgr.transforms.count; + + g_engine->asset_mgr.transforms.data[handle] = transform; + g_engine->asset_mgr.transforms.count++; +} + +void +insert_camera(camera_t camera) +{ + handle_t handle = g_engine->asset_mgr.cameras.count; + + g_engine->asset_mgr.cameras.data[handle] = camera; + hash_add(&g_engine->asset_mgr.cameras.hash, HASH_CSTR(camera.name), &handle); + + g_engine->asset_mgr.cameras.count++; +} + +void +insert_renderable(renderable_t renderable) +{ + handle_t handle = g_engine->asset_mgr.renderables.count; + + g_engine->asset_mgr.renderables.data[handle] = renderable; + + g_engine->asset_mgr.renderables.count++; +} + +void +insert_collider(box_collider_t collider) +{ + handle_t handle = g_engine->asset_mgr.colliders.count; + + g_engine->asset_mgr.colliders.data[handle] = collider; + + g_engine->asset_mgr.colliders.count++; +} + +void +insert_light(point_light_t light) +{ + handle_t handle = g_engine->asset_mgr.lights.count; + + g_engine->asset_mgr.lights.data[handle] = light; + + g_engine->asset_mgr.lights.count++; +} + +handle_t +get_mesh_handle(const char* name) +{ + handle_t* handle = (handle_t*)hash_get(g_engine->asset_mgr.meshes.hash, HASH_CSTR(name)); + + return *handle; +} + +mesh_t* +get_mesh(handle_t handle) +{ + mesh_t* result = &g_engine->asset_mgr.meshes.data[handle]; + + return result; +} + +handle_t +get_material_handle(const char* name) +{ + handle_t* handle = (handle_t*)hash_get(g_engine->asset_mgr.materials.hash, HASH_CSTR(name)); + + return *handle; +} + +material_t* +get_material(handle_t handle) +{ + material_t* result = &g_engine->asset_mgr.materials.data[handle]; + + return result; +} + +handle_t +get_sound_handle(const char* name) +{ + handle_t* handle = (handle_t*)hash_get(g_engine->asset_mgr.sounds.hash, HASH_CSTR(name)); + + return *handle; +} + +sound_t* +get_sound(handle_t handle) +{ + sound_t* result = &g_engine->asset_mgr.sounds.data[handle]; + return result; +} + +handle_t +get_audio_source_handle(const char* name) +{ + handle_t* handle = (handle_t*)hash_get(g_engine->asset_mgr.audio_sources.hash, HASH_CSTR(name)); + + return *handle; +} + +audio_source_t* +get_audio_source(handle_t handle) +{ + audio_source_t* result = &g_engine->asset_mgr.audio_sources.data[handle]; + return result; +} + +renderable_t* +get_renderable(handle_t handle) +{ + renderable_t* result = &g_engine->asset_mgr.renderables.data[handle]; + return result; +} + +transform_t* +get_transform(handle_t handle) +{ + transform_t* result = &g_engine->asset_mgr.transforms.data[handle]; + return result; +} + +camera_t* +get_camera(handle_t handle) +{ + camera_t* result = &g_engine->asset_mgr.cameras.data[handle]; + return result; +} + +handle_t +get_camera_handle(const char* name) +{ + handle_t* handle = (handle_t*)hash_get(g_engine->asset_mgr.cameras.hash, HASH_CSTR(name)); + + return *handle; +} diff --git a/code/game/engine/asset_mgr.h b/code/game/engine/asset_mgr.h new file mode 100644 index 0000000..45b4ec6 --- /dev/null +++ b/code/game/engine/asset_mgr.h @@ -0,0 +1,120 @@ +#pragma once + +typedef struct asset_mgr { + struct { + hash_t hash; + size_t count; + mesh_t data[MAX_MESH_COUNT]; + } meshes; + + struct { + hash_t hash; + size_t count; + material_t data[MAX_MATERIAL_COUNT]; + } materials; + + struct { + size_t count; + transform_t data[MAX_TRANSFORM_COUNT]; + } transforms; + + struct { + hash_t hash; + size_t count; + camera_t data[MAX_CAMERA_COUNT]; + } cameras; + + struct { + size_t count; + renderable_t data[MAX_RENDERABLE_COUNT]; + } renderables; + + struct { + size_t count; + box_collider_t data[MAX_COLLIDER_COUNT]; + } colliders; + + struct { + size_t count; + point_light_t data[MAX_LIGHT_COUNT]; + } lights; + + struct { + hash_t hash; + size_t count; + sound_t data[MAX_SOUND_COUNT]; + } sounds; + + struct { + hash_t hash; + size_t count; + audio_source_t data[MAX_SOUND_COUNT]; + } audio_sources; +} asset_mgr_t; + +void +asset_mgr_startup(void); + +void +insert_mesh(mesh_t mesh); + +void +insert_material(material_t material); + +void +insert_sound(sound_t sound); + +void +insert_audio_source(audio_source_t source); + +void +insert_transform(transform_t transform); + +void +insert_camera(camera_t camera); + +void +insert_renderable(renderable_t renderable); + +void +insert_collider(box_collider_t collider); + +void +insert_light(point_light_t light); + +handle_t +get_mesh_handle(const char* name); + +mesh_t* +get_mesh(handle_t handle); + +handle_t +get_material_handle(const char* name); + +material_t* +get_material(handle_t handle); + +handle_t +get_sound_handle(const char* name); + +sound_t* +get_sound(handle_t handle); + +handle_t +get_audio_source_handle(const char* name); + +audio_source_t* +get_audio_source(handle_t handle); + +renderable_t* +get_renderable(handle_t handle); + +transform_t* +get_transform(handle_t handle); + +handle_t +get_camera_handle(const char* name); + +camera_t* +get_camera(handle_t handle); + diff --git a/code/game/engine/asset_types.h b/code/game/engine/asset_types.h new file mode 100644 index 0000000..3463040 --- /dev/null +++ b/code/game/engine/asset_types.h @@ -0,0 +1,77 @@ +#pragma once + +enum { + MAX_MESH_COUNT = 16, + MAX_MATERIAL_COUNT = 16, + MAX_TRANSFORM_COUNT = 2048, + MAX_CAMERA_COUNT = 4, + MAX_RENDERABLE_COUNT = 1024, + MAX_COLLIDER_COUNT = 256, + MAX_LIGHT_COUNT = 512, + MAX_SOUND_COUNT = 16, + MAX_AUDIO_SOURCE_COUNT = 16, + MAX_CHILDREN_COUNT = 8, +}; + +typedef struct transform { + vec3 position; + vec3 rotation; + vec3 scale; + size_t child_count; + handle_t parent; + handle_t children[MAX_CHILDREN_COUNT]; + mat4 matrix; +} transform_t; + +typedef struct vertex { + vec3 position; + vec3 normal; + vec2 texcoord; +} vertex_t; + +typedef struct mesh { + char name[MAX_NAME_LENGTH]; + GLuint vao, vbo, ebo; + uint16_t index_count; +} mesh_t; + +typedef struct material { + char name[MAX_NAME_LENGTH]; + GLuint texture; +} material_t; + +typedef struct sound { + char name[MAX_NAME_LENGTH]; + uint32_t byte_count; + float* data; +} sound_t; + +typedef struct light { + handle_t transform; + vec3 color; + float intensity; + float radius; +} point_light_t; + +typedef enum audio_type { + AUDIO_TYPE_NULL = 0, + AUDIO_TYPE_SFX, + AUDIO_TYPE_MUSIC +} audio_type_e; + +typedef struct audio_source { + char name[MAX_NAME_LENGTH]; + audio_type_e type; + handle_t transform; + float volume; + handle_t sound; + uint32_t cursor; +} audio_source_t; + +typedef struct renderable { + char name[MAX_NAME_LENGTH]; + handle_t transform; + handle_t mesh; + handle_t material; +} renderable_t; + diff --git a/code/game/engine/audio_mgr.c b/code/game/engine/audio_mgr.c new file mode 100644 index 0000000..6ec04de --- /dev/null +++ b/code/game/engine/audio_mgr.c @@ -0,0 +1,167 @@ +void +audio_mgr_startup(void) +{ + g_engine->audio_mgr.sound_count = NULL_HANDLE+1; +} + +void +set_listener(vec3 position, vec3 front, vec3 up) +{ + g_engine->audio_mgr.listener.position = position; + g_engine->audio_mgr.listener.front = front; + g_engine->audio_mgr.listener.up = up; +} + +handle_t +play_sound(audio_source_t sound) +{ + handle_t handle = NULL_HANDLE; + + if (g_engine->audio_mgr.sound_count < MAX_AUDIO_SOURCE_COUNT) + { + // Find free handle + for (int i = NULL_HANDLE+1; i < MAX_AUDIO_SOURCE_COUNT; i++) + { + if (g_engine->audio_mgr.handle_to_index_map[i] == NULL_HANDLE) + { + handle = i; + break; + } + } + + size_t new_index = g_engine->audio_mgr.sound_count; + g_engine->audio_mgr.handle_to_index_map[handle] = new_index; + g_engine->audio_mgr.index_to_handle_map[new_index] = handle; + g_engine->audio_mgr.sources[new_index] = sound; + g_engine->audio_mgr.sound_count++; + } + + return handle; +} + +void +stop_sound(int handle) +{ + // Copy element at end into deleted element's place to maintain density + int stopped_audio_index = g_engine->audio_mgr.handle_to_index_map[handle]; + size_t last_element_index = g_engine->audio_mgr.sound_count - 1; + g_engine->audio_mgr.sources[stopped_audio_index] = g_engine->audio_mgr.sources[last_element_index]; + + // Update maps to point to new locations + int last_element_handle = g_engine->audio_mgr.index_to_handle_map[last_element_index]; + g_engine->audio_mgr.handle_to_index_map[last_element_handle] = stopped_audio_index; + g_engine->audio_mgr.index_to_handle_map[stopped_audio_index] = last_element_handle; + + // Mark invalid + g_engine->audio_mgr.sources[last_element_index].type = AUDIO_TYPE_NULL; + g_engine->audio_mgr.handle_to_index_map[handle] = NULL_HANDLE; + g_engine->audio_mgr.index_to_handle_map[last_element_index] = NULL_HANDLE; + + g_engine->audio_mgr.sound_count--; +} + +void +update_sound_position(int handle, vec3 position) +{ + (void)handle;(void)position; + int index = g_engine->audio_mgr.handle_to_index_map[handle]; + + transform_t* transform = get_transform(g_engine->audio_mgr.sources[index].transform); + transform->position = position; +} + +void +fill_audio_buffer(uint8_t* buffer, int len) +{ + // Fill with silence ahead of time + memset(buffer, 0, len); + + int stop_count = 0; + int stop_handles[MAX_AUDIO_SOURCE_COUNT] = {NULL_HANDLE}; + + for (int i = NULL_HANDLE+1; i < g_engine->audio_mgr.sound_count; i++) + { + audio_source_t* source = &g_engine->audio_mgr.sources[i]; + sound_t* sound = get_sound(source->sound); + + LOG_ASSERT(sound->byte_count >= source->cursor, "Audio overflow"); + + int audio_bytes_remaining = sound->byte_count - source->cursor; + int bytes_to_fill = (len < audio_bytes_remaining) ? len : audio_bytes_remaining; + int samples_to_fill = bytes_to_fill / sizeof(*sound->data); + + float* data = (float*)((uint8_t*)sound->data + source->cursor); + float* buf = (float*)buffer; + + // Calculate angle from listener to source + float right_gain = 1.0f; + float left_gain = 1.0f; + + transform_t* transform = get_transform(source->transform); + + switch (source->type) + { + case AUDIO_TYPE_MUSIC: + { + right_gain = source->volume; + left_gain = source->volume; + } break; + case AUDIO_TYPE_SFX: + { + vec3 listener_right = vec3_cross(g_engine->audio_mgr.listener.front, g_engine->audio_mgr.listener.up); + vec3 listener_left = vec3_negate(listener_right); + vec3 target = vec3_sub(transform->position, g_engine->audio_mgr.listener.position); + float distance = vec3_length(target); + + if (distance > 0.0f) + { + float attenuation = 1.0f / distance; + + if (attenuation < 0.1f) { + attenuation = 0.0f; + } else if (attenuation > 1.0f) { + attenuation = 1.0f; + } + + // TODO: Make this better. This is probably very wrong. And I don't fully understand it. + float angle_left = RAD_TO_DEG(acosf(vec3_dot(listener_left, target)/distance)); + float angle_right = RAD_TO_DEG(acosf(vec3_dot(listener_right, target)/distance)); + + left_gain = source->volume * (angle_right/180.0f) * attenuation; + right_gain = source->volume* (angle_left/180.0f) * attenuation; + } + + } break; + default: break; + } + + for (int j = 0; j < samples_to_fill; j+=2) + { + // Left channel + *buf += *data * left_gain; + buf++; + data++; + + // Right channel + *buf += *data * right_gain; + buf++; + data++; + } + + source->cursor += bytes_to_fill; + + if (source->cursor >= sound->byte_count) + { + if (source->type == AUDIO_TYPE_MUSIC) { + source->cursor = 0; + } else if (source->type == AUDIO_TYPE_SFX) { + stop_handles[stop_count++] = g_engine->audio_mgr.index_to_handle_map[i]; + } + } + } + + for (int i = 0; i < stop_count; i++) { + stop_sound(stop_handles[i]); + } +} + diff --git a/code/game/engine/audio_mgr.h b/code/game/engine/audio_mgr.h new file mode 100644 index 0000000..ced3459 --- /dev/null +++ b/code/game/engine/audio_mgr.h @@ -0,0 +1,34 @@ +#pragma once + +typedef struct audio_listener { + vec3 position; + vec3 front; + vec3 up; +} audio_listener_t; + +typedef struct audio_mgr { + int sound_count; + audio_listener_t listener; + audio_source_t sources[MAX_AUDIO_SOURCE_COUNT]; + handle_t index_to_handle_map[MAX_AUDIO_SOURCE_COUNT]; + handle_t handle_to_index_map[MAX_AUDIO_SOURCE_COUNT]; +} audio_mgr_t; + +void +audio_mgr_startup(void); + +void +set_listener(vec3 position, vec3 front, vec3 up); + +handle_t +play_sound(audio_source_t sound); + +void +stop_sound(int handle); + +void +update_sound_position(int handle, vec3 position); + +void +fill_audio_buffer(uint8_t* buffer, int len); + diff --git a/code/src/engine/camera.c b/code/game/engine/camera.c similarity index 66% rename from code/src/engine/camera.c rename to code/game/engine/camera.c index e9569d2..9a4e662 100644 --- a/code/src/engine/camera.c +++ b/code/game/engine/camera.c @@ -1,43 +1,8 @@ -const vec3 WORLD_UP = {0.0f, 0.0f, 1.0f}; - -typedef struct camera { - vec3 position; - vec3 front; - vec3 right; - float yaw; - float pitch; - mat4 view_mat; -} camera_t; - -void -camera_update_view(camera_t* camera) -{ - // Create orthonormal basis for camera orientation - vec3 target = vec3_add(camera->position, camera->front); - vec3 front = vec3_normalize(vec3_sub(target, camera->position)); - vec3 side = vec3_normalize(vec3_cross(front, WORLD_UP)); - vec3 up = vec3_cross(side, front); - - // Create an inverse rotation matrix - // Orthogonal inverse is a simple transpose where the columns become the rows - // +X: Right - // +Y: Forward - // +Z: Up - mat4 view_mat = { - side.x, side.y, side.z, -vec3_dot(camera->position, side), - up.x, up.y, up.z, -vec3_dot(camera->position, up), - front.x, front.y, front.z, -vec3_dot(camera->position, front), - 0.0f, 0.0f, 0.0f, 1.0f - }; - - camera->view_mat = view_mat; -} - camera_t -camera_create(vec3 position) +camera_create(handle_t transform) { camera_t result = { - .position = position, + .transform = transform, .front = {0.0f, 1.0f, 0.0f}, .right = {1.0f, 0.0f, 0.0f}, .yaw = 90.0f}; @@ -50,18 +15,20 @@ camera_create(vec3 position) void camera_move(camera_t* camera, vec3 velocity) { + transform_t* transform = get_transform(camera->transform); + // Preserve Z - float position_z = camera->position.z; + float position_z = transform->position.z; // Forward/Backward - camera->position = vec3_add(camera->position, vec3_mult(camera->front, velocity.y)); + transform->position = vec3_add(transform->position, vec3_mult(camera->front, velocity.y)); // Left/Right camera->right = vec3_cross(camera->front, WORLD_UP); - camera->position = vec3_add(camera->position, vec3_mult(vec3_normalize(camera->right), velocity.x)); + transform->position = vec3_add(transform->position, vec3_mult(vec3_normalize(camera->right), velocity.x)); // Restore Z - camera->position.z = position_z; + transform->position.z = position_z; } void @@ -98,3 +65,29 @@ camera_rotate(camera_t* camera, float offset_x, float offset_y) camera->front = vec3_normalize(camera->front); } +void +camera_update_view(camera_t* camera) +{ + transform_t* transform = get_transform(camera->transform); + + // Create orthonormal basis for camera orientation + vec3 target = vec3_add(transform->position, camera->front); + vec3 front = vec3_normalize(vec3_sub(target, transform->position)); + vec3 side = vec3_normalize(vec3_cross(front, WORLD_UP)); + vec3 up = vec3_cross(side, front); + + // Create an inverse rotation matrix + // Orthogonal inverse is a simple transpose where the columns become the rows + // +X: Right + // +Y: Forward + // +Z: Up + mat4 view_mat = { + side.x, side.y, side.z, -vec3_dot(transform->position, side), + up.x, up.y, up.z, -vec3_dot(transform->position, up), + front.x, front.y, front.z, -vec3_dot(transform->position, front), + 0.0f, 0.0f, 0.0f, 1.0f + }; + + camera->view_mat = view_mat; +} + diff --git a/code/game/engine/camera.h b/code/game/engine/camera.h new file mode 100644 index 0000000..854c911 --- /dev/null +++ b/code/game/engine/camera.h @@ -0,0 +1,26 @@ +#pragma once + +const vec3 WORLD_UP = {0.0f, 0.0f, 1.0f}; + +typedef struct camera { + char name[MAX_NAME_LENGTH]; + handle_t transform; + vec3 front; + vec3 right; + float yaw; + float pitch; + mat4 view_mat; +} camera_t; + +camera_t +camera_create(handle_t transform); + +void +camera_move(camera_t* camera, vec3 velocity); + +void +camera_rotate(camera_t* camera, float offset_x, float offset_y); + +void +camera_update_view(camera_t* camera); + diff --git a/code/game/engine/data_loader.c b/code/game/engine/data_loader.c new file mode 100644 index 0000000..c093ba8 --- /dev/null +++ b/code/game/engine/data_loader.c @@ -0,0 +1,511 @@ +static mesh_t +create_mesh(uint16_t index_count, uint16_t* indices, uint16_t vertex_count, vertex_t* vertices); + +static mesh_t +load_mesh(SDL_RWops* ops); + +static material_t +create_material(uint16_t width, uint16_t height, uint8_t channel_count, uint8_t* data); + +static material_t +load_material(SDL_RWops* ops); + +static sound_t +load_sound(SDL_RWops* ops); + +static audio_source_t +load_audio_source(SDL_RWops* ops); + +static transform_t +load_transform(SDL_RWops* ops); + +static renderable_t +load_renderable(SDL_RWops* ops); + +static box_collider_t +load_collider(SDL_RWops* ops); + +static point_light_t +load_light(SDL_RWops* ops); + +void +load_data1(const char* path) +{ + LOG_DEBUG("Loading %s", path); + + SDL_RWops* ops = SDL_RWFromFile(path, "rb"); + if (ops == NULL) + { + LOG_ERROR("Error opening data file %s: %s", path, SDL_GetError()); + exit(EXIT_FAILURE); + } + + { + char magic[4]; + SDL_RWread(ops, magic, sizeof(magic), 1); + if (magic[0] != 'A' || magic[1] != 'J' || magic[2] != 'M' || magic[3] != '\0') { + LOG_ERROR("Data file %s has an invalid format", path); + exit(EXIT_FAILURE); + } + } + + // NOTE: All printed counts are decremented by 1 to account for the first value being a null item + + { + uint16_t count; + SDL_RWread(ops, &count, sizeof(count), 1); + LOG_ASSERT(count < MAX_TRANSFORM_COUNT, "Too many transforms"); + LOG_DEBUG("Load %d transforms", count-1); + + for (int i = 0; i < count; i++) + { + transform_t transform = load_transform(ops); + insert_transform(transform); + } + } + + { + uint16_t count; + SDL_RWread(ops, &count, sizeof(count), 1); + LOG_DEBUG("Load %d meshes", count-1); + LOG_ASSERT(count < MAX_MESH_COUNT, "Too many meshes"); + + for (int i = 0; i < count; i++) + { + mesh_t mesh = load_mesh(ops); + insert_mesh(mesh); + } + } + + { + uint16_t count; + SDL_RWread(ops, &count, sizeof(count), 1); + LOG_DEBUG("Load %d materials", count-1); + LOG_ASSERT(count < MAX_MATERIAL_COUNT, "Too many materials"); + + for (int i = 0; i < count; i++) + { + material_t material = load_material(ops); + insert_material(material); + } + } + + { + uint16_t count; + SDL_RWread(ops, &count, sizeof(count), 1); + LOG_DEBUG("Load %d cameras", count-1); + LOG_ASSERT(count < MAX_CAMERA_COUNT, "Too many cameras"); + + for (int i = 0; i < count; i++) + { + uint16_t name_length; + SDL_RWread(ops, &name_length, sizeof(name_length), 1); + + char* name = scratch_mem_alloc(name_length, sizeof(*name)); + SDL_RWread(ops, name, sizeof(*name), name_length); + LOG_ASSERT(name_length < MAX_NAME_LENGTH, "Name of camera is too long: %s", name); + + handle_t transform; + SDL_RWread(ops, &transform, sizeof(transform), 1); + + camera_t camera = camera_create(transform); + strncpy(camera.name, name, name_length); + + insert_camera(camera); + } + } + + { + uint16_t count; + SDL_RWread(ops, &count, sizeof(count), 1); + LOG_DEBUG("Load %d renderables", count-1); + LOG_ASSERT(count < MAX_RENDERABLE_COUNT, "Too many renderables"); + + for (int i = 0; i < count; i++) + { + renderable_t renderable = load_renderable(ops); + insert_renderable(renderable); + } + } + + { + uint16_t count; + SDL_RWread(ops, &count, sizeof(count), 1); + LOG_DEBUG("Load %d colliders", count-1); + LOG_ASSERT(count < MAX_COLLIDER_COUNT, "Too many colliders"); + + for (int i = 0; i < count; i++) + { + box_collider_t collider = load_collider(ops); + insert_collider(collider); + } + } + + { + uint16_t count; + SDL_RWread(ops, &count, sizeof(count), 1); + LOG_DEBUG("Load %d lights", count-1); + LOG_ASSERT(count < MAX_LIGHT_COUNT, "Too many lights"); + + for (int i = 0; i < count; i++) + { + point_light_t light = load_light(ops); + insert_light(light); + } + } + + int ret = SDL_RWclose(ops); + if (ret != 0) { + LOG_ERROR("Error closing file %s: %s", path, SDL_GetError()); + } +} + +void +load_data2(const char* path) +{ + LOG_DEBUG("Loading %s", path); + + SDL_RWops* ops = SDL_RWFromFile(path, "rb"); + if (ops == NULL) + { + LOG_ERROR("Error opening data file %s: %s", path, SDL_GetError()); + exit(EXIT_FAILURE); + } + + { + char magic[4]; + SDL_RWread(ops, magic, sizeof(magic), 1); + if (magic[0] != 'A' || magic[1] != 'J' || magic[2] != 'M' || magic[3] != '\0') { + LOG_ERROR("Data file %s has an invalid format", path); + exit(EXIT_FAILURE); + } + } + + { + uint16_t count; + SDL_RWread(ops, &count, sizeof(count), 1); + LOG_DEBUG("Load %d sounds", count-1); + LOG_ASSERT(count < MAX_SOUND_COUNT, "Too many sounds"); + + for (int i = 0; i < count; i++) + { + sound_t sound = load_sound(ops); + insert_sound(sound); + } + } + + { + uint16_t count; + SDL_RWread(ops, &count, sizeof(count), 1); + LOG_DEBUG("Load %d audio sources", count-1); + LOG_ASSERT(count < MAX_AUDIO_SOURCE_COUNT, "Too many audio sources"); + + for (int i = 0; i < count; i++) + { + audio_source_t source = load_audio_source(ops); + insert_audio_source(source); + } + } + + int ret = SDL_RWclose(ops); + if (ret != 0) { + LOG_ERROR("Error closing file %s: %s", path, SDL_GetError()); + } +} + +static mesh_t +create_mesh(uint16_t index_count, uint16_t* indices, uint16_t vertex_count, vertex_t* vertices) +{ + GLuint ebo; + glGenBuffers(1, &ebo); + glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, ebo); + glBufferData( + GL_ELEMENT_ARRAY_BUFFER, + index_count * sizeof(*indices), + indices, + GL_STATIC_DRAW); + + GLuint vbo; + glGenBuffers(1, &vbo); + glBindBuffer(GL_ARRAY_BUFFER, vbo); + glBufferData( + GL_ARRAY_BUFFER, + vertex_count * sizeof(*vertices), + vertices, + GL_STATIC_DRAW); + + GLuint vao; + glGenVertexArrays(1, &vao); + glBindVertexArray(vao); + glBindBuffer(GL_ARRAY_BUFFER, vbo); + glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, ebo); + + glEnableVertexAttribArray(0); + glVertexAttribPointer(0, 3, GL_FLOAT, GL_FALSE, sizeof(struct vertex), (void*)offsetof(struct vertex, position)); + + glEnableVertexAttribArray(1); + glVertexAttribPointer(1, 3, GL_FLOAT, GL_FALSE, sizeof(struct vertex), (void*)offsetof(struct vertex, normal)); + + glEnableVertexAttribArray(2); + glVertexAttribPointer(2, 2, GL_FLOAT, GL_FALSE, sizeof(struct vertex), (void*)offsetof(struct vertex, texcoord)); + + glBindVertexArray(0); + glBindBuffer(GL_ARRAY_BUFFER, 0); + glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, 0); + + mesh_t result = { + .vao = vao, + .vbo = vbo, + .ebo = ebo, + .index_count = index_count}; + + return result; +} + +static mesh_t +load_mesh(SDL_RWops* ops) +{ + uint16_t name_length; + SDL_RWread(ops, &name_length, sizeof(name_length), 1); + + char* name = scratch_mem_alloc(name_length, sizeof(*name)); + SDL_RWread(ops, name, sizeof(*name), name_length); + LOG_ASSERT(name_length < MAX_NAME_LENGTH, "Name of mesh is too long: %s", name); + + uint16_t index_count; + SDL_RWread(ops, &index_count, sizeof(index_count), 1); + + uint16_t* indices = scratch_mem_alloc(index_count, sizeof(*indices)); + SDL_RWread(ops, indices, sizeof(*indices), index_count); + + uint16_t vertex_count; + SDL_RWread(ops, &vertex_count, sizeof(vertex_count), 1); + + vertex_t* vertices = scratch_mem_alloc(vertex_count, sizeof(*vertices)); + SDL_RWread(ops, vertices, sizeof(*vertices), vertex_count); + + mesh_t result = create_mesh(index_count, indices, vertex_count, vertices); + + strncpy(result.name, name, name_length); + + return result; +} + +static material_t +create_material(uint16_t width, uint16_t height, uint8_t channel_count, uint8_t* data) +{ + GLuint format = (channel_count == 3) ? GL_RGB : GL_RGBA; + + GLuint texture; + glGenTextures(1, &texture); + glBindTexture(GL_TEXTURE_2D, texture); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST); + glTexImage2D(GL_TEXTURE_2D, 0, format, width, height, 0, format, GL_UNSIGNED_BYTE, data); + + material_t result = { + .texture = texture}; + + return result; +} + +static material_t +load_material(SDL_RWops* ops) +{ + uint16_t name_length; + SDL_RWread(ops, &name_length, sizeof(name_length), 1); + + char* name = scratch_mem_alloc(name_length, sizeof(*name)); + SDL_RWread(ops, name, sizeof(*name), name_length); + LOG_ASSERT(name_length < MAX_NAME_LENGTH, "Name of material is too long: %s", name); + + uint16_t width; + SDL_RWread(ops, &width, sizeof(width), 1); + + uint16_t height; + SDL_RWread(ops, &height, sizeof(height), 1); + + uint8_t channel_count; + SDL_RWread(ops, &channel_count, sizeof(channel_count), 1); + + uint8_t* data = scratch_mem_alloc(width * height * channel_count, sizeof(*data)); + SDL_RWread(ops, data, sizeof(*data), width * height * channel_count); + + material_t result = create_material(width, height, channel_count, data); + strncpy(result.name, name, name_length); + + return result; +} + +static transform_t +load_transform(SDL_RWops* ops) +{ + vec3 position; + SDL_RWread(ops, &position, sizeof(position), 1); + + vec3 rotation; + SDL_RWread(ops, &rotation, sizeof(rotation), 1); + + vec3 scale; + SDL_RWread(ops, &scale, sizeof(scale), 1); + + handle_t parent; + SDL_RWread(ops, &parent, sizeof(parent), 1); + + uint16_t child_count; + SDL_RWread(ops, &child_count, sizeof(child_count), 1); + LOG_ASSERT(child_count < MAX_CHILDREN_COUNT, "Transform has too many children: %d", child_count); + + handle_t* children = scratch_mem_alloc(child_count, sizeof(*children)); + SDL_RWread(ops, children, sizeof(*children), child_count); + + mat4 matrix = mat4_identity(); + + transform_t result = { + .position = position, + .rotation = rotation, + .scale = scale, + .child_count = child_count, + .parent = parent, + .matrix = matrix}; + + memcpy(result.children, children, child_count * sizeof(*children)); + + return result; +} + +static sound_t +load_sound(SDL_RWops* ops) +{ + uint16_t name_length; + SDL_RWread(ops, &name_length, sizeof(name_length), 1); + + char* name = scratch_mem_alloc(name_length, sizeof(*name)); + SDL_RWread(ops, name, sizeof(*name), name_length); + LOG_ASSERT(name_length < MAX_NAME_LENGTH, "Name of sound is too long: %s", name); + + uint32_t length; + SDL_RWread(ops, &length, sizeof(length), 1); + + uint32_t sample_rate; + SDL_RWread(ops, &sample_rate, sizeof(sample_rate), 1); + + uint8_t channel_count; + SDL_RWread(ops, &channel_count, sizeof(channel_count), 1); + + size_t size = length * channel_count; + float* wav_data = persistent_mem_alloc(&g_memory->data2, size, sizeof(*wav_data)); + SDL_RWread(ops, wav_data, sizeof(*wav_data), size); + + int byte_count = length * channel_count * sizeof(*wav_data); + + sound_t result = { + .data = wav_data, + .byte_count = byte_count}; + + strncpy(result.name, name, name_length); + + return result; +} + +static audio_source_t +load_audio_source(SDL_RWops* ops) +{ + uint16_t name_length; + SDL_RWread(ops, &name_length, sizeof(name_length), 1); + + char* name = scratch_mem_alloc(name_length, sizeof(*name)); + SDL_RWread(ops, name, sizeof(*name), name_length); + LOG_ASSERT(name_length < MAX_NAME_LENGTH, "Name of audio source is too long: %s", name); + + handle_t transform; + SDL_RWread(ops, &transform, sizeof(transform), 1); + + float volume; + SDL_RWread(ops, &volume, sizeof(volume), 1); + + uint32_t type; + SDL_RWread(ops, &type, sizeof(type), 1); + + handle_t sound; + SDL_RWread(ops, &sound, sizeof(sound), 1); + + audio_source_t result = { + .type = (audio_type_e)type, + .transform = transform, + .volume = volume, + .sound = sound}; + + strncpy(result.name, name, name_length); + + return result; +} + +static renderable_t +load_renderable(SDL_RWops* ops) +{ + uint16_t name_length; + SDL_RWread(ops, &name_length, sizeof(name_length), 1); + + char* name = scratch_mem_alloc(name_length, sizeof(*name)); + SDL_RWread(ops, name, sizeof(*name), name_length); + LOG_ASSERT(name_length < MAX_NAME_LENGTH, "Name of mesh is too long: %s", name); + + handle_t transform; + SDL_RWread(ops, &transform, sizeof(transform), 1); + + handle_t mesh; + SDL_RWread(ops, &mesh, sizeof(mesh), 1); + + handle_t material; + SDL_RWread(ops, &material, sizeof(material), 1); + + renderable_t result = { + .transform = transform, + .mesh = mesh, + .material = material}; + + strncpy(result.name, name, name_length); + + return result; +} + +static box_collider_t +load_collider(SDL_RWops* ops) +{ + handle_t transform; + SDL_RWread(ops, &transform, sizeof(transform), 1); + + vec3 extents; + SDL_RWread(ops, &extents, sizeof(extents), 1); + + box_collider_t result = { + .transform = transform, + .extents = extents}; + + return result; +} + +static point_light_t +load_light(SDL_RWops* ops) +{ + handle_t transform; + SDL_RWread(ops, &transform, sizeof(transform), 1); + + vec3 color; + SDL_RWread(ops, &color, sizeof(color), 1); + + float intensity; + SDL_RWread(ops, &intensity, sizeof(intensity), 1); + + float radius; + SDL_RWread(ops, &radius, sizeof(radius), 1); + + point_light_t result = { + .transform = transform, + .color = color, + .intensity = intensity, + .radius = radius}; + + return result; +} diff --git a/code/game/engine/data_loader.h b/code/game/engine/data_loader.h new file mode 100644 index 0000000..067f61d --- /dev/null +++ b/code/game/engine/data_loader.h @@ -0,0 +1,8 @@ +#pragma once + +void +load_data1(const char* path); + +void +load_data2(const char* path); + diff --git a/code/game/engine/debug.c b/code/game/engine/debug.c new file mode 100644 index 0000000..03220be --- /dev/null +++ b/code/game/engine/debug.c @@ -0,0 +1,235 @@ +void +DEBUG_startup(void) +{ + g_debug = persistent_mem_alloc(&g_memory->debug, 1, sizeof(*g_debug)); +} + +char* +DEBUG_load_shader(const char* path, size_t* size) +{ + SDL_RWops* ops = SDL_RWFromFile(path, "r"); + if (ops == NULL) + { + LOG_ERROR("Error opening file %s: %s", path, SDL_GetError()); + exit(EXIT_FAILURE); + } + + Sint64 file_size = SDL_RWsize(ops); + if (size < 0) { + LOG_ERROR("Error getting size of file %s: %s", path, SDL_GetError()); + } + + char* buf = scratch_mem_alloc(1, file_size); + + size_t items_read = SDL_RWread(ops, buf, file_size, 1); + if (items_read != 1) { + LOG_ERROR("Error reading file %s: %s", path, SDL_GetError()); + } + + int ret = SDL_RWclose(ops); + if (ret != 0) { + LOG_ERROR("Error closing file %s: %s", path, SDL_GetError()); + } + + *size = (size_t)file_size; + + return buf; +} + +void +DEBUG_reload_shaders(render_mgr_t* in) +{ + glUseProgram(0); + + { + struct stat attrib; + stat("shaders/geo.glsl", &attrib); + time_t mod_time = attrib.st_mtime; + if (mod_time != g_debug->render_mgr.geo) + { + LOG_DEBUG("Reloading geo.glsl"); + glDeleteProgram(in->geo.shader); + + size_t size; + char* buf = DEBUG_load_shader("shaders/geo.glsl", &size); + + in->geo.shader = create_shader(buf, size); + g_debug->render_mgr.geo = mod_time; + } + } + + { + struct stat attrib; + stat("shaders/screen.glsl", &attrib); + time_t mod_time = attrib.st_mtime; + if (mod_time != g_debug->render_mgr.screen) + { + LOG_DEBUG("Reloading screen.glsl"); + glDeleteProgram(in->screen.shader); + + size_t size; + char* buf = DEBUG_load_shader("shaders/screen.glsl", &size); + + in->screen.shader = create_shader(buf, size); + g_debug->render_mgr.screen = mod_time; + } + } + + { + struct stat attrib; + stat("shaders/text.glsl", &attrib); + time_t mod_time = attrib.st_mtime; + if (mod_time != g_debug->render_mgr.text) + { + LOG_DEBUG("Reloading text.glsl"); + glDeleteProgram(in->text.shader); + + size_t size; + char* buf = DEBUG_load_shader("shaders/text.glsl", &size); + + in->text.shader = create_shader(buf, size); + g_debug->render_mgr.text = mod_time; + } + } +} + +void +DEBUG_reload_data1(void) +{ + const char* path = "../../assets/processed/data1.bin"; + + struct stat attrib; + stat(path, &attrib); + time_t mod_time = attrib.st_mtime; + if (mod_time != g_debug->data_loader.data1) + { + LOG_DEBUG("Reloading data1.bin"); + g_debug->data_loader.data1 = mod_time; + + // Delay briefly to ensure file has been fully written + SDL_Delay(100); + + // Free old GPU data + for (size_t i = 0; i < g_engine->asset_mgr.meshes.count; i++) + { + mesh_t* mesh = &g_engine->asset_mgr.meshes.data[i]; + + glBindVertexArray(0); + glBindBuffer(GL_ARRAY_BUFFER, 0); + glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, 0); + glDeleteBuffers(1, &mesh->vbo); + glDeleteBuffers(1, &mesh->ebo); + glDeleteVertexArrays(1, &mesh->vao); + } + + for (size_t i = 0; i < g_engine->asset_mgr.materials.count; i++) + { + material_t* material = &g_engine->asset_mgr.materials.data[i]; + + glBindTexture(GL_TEXTURE_2D, 0); + glDeleteTextures(1, &material->texture); + } + + // Reset + // TODO: Do this automatically so that adding new fields to the asset_mgr doesn't require changing this + hash_reset(&g_engine->asset_mgr.meshes.hash); + hash_reset(&g_engine->asset_mgr.materials.hash); + hash_reset(&g_engine->asset_mgr.cameras.hash); + g_engine->asset_mgr.meshes.count = 0; + g_engine->asset_mgr.materials.count = 0; + g_engine->asset_mgr.transforms.count = 0; + g_engine->asset_mgr.cameras.count = 0; + g_engine->asset_mgr.renderables.count = 0; + g_engine->asset_mgr.colliders.count = 0; + g_engine->asset_mgr.lights.count = 0; + persistent_mem_reset(&g_memory->data1); + + load_data1(path); + } +} + +void +DEBUG_camera_toggle(void) +{ + if (g_debug->camera.enabled) + { + g_debug->camera.enabled = false; + } + else + { + g_debug->camera.enabled = true; + + camera_t* camera = get_active_camera(); + transform_t* transform = get_transform(camera->transform); + + // Copy existing camera's info so that debug camera starts from that position + g_debug->camera.fly = *camera; + g_debug->camera.transform = *transform; + } +} + +void +DEBUG_camera_update(float dt, input_t input) +{ + // Keep all this logic local to this one debug function so we don't pollute + // the non-debug functions which use real transform handles + + vec3 velocity = {0}; + if (input.forward) { + velocity.y = 1.0f; + } else if (input.backward) { + velocity.y = -1.0f; + } + + if (input.strafe_left) { + velocity.x = -1.0f; + } else if (input.strafe_right) { + velocity.x = 1.0f; + } + + if (input.debug.up) { + velocity.z = 1.0f; + } else if (input.debug.down) { + velocity.z = -1.0f; + } + + float speed_multiplier = 1.0f; + + if (input.debug.speed) { + speed_multiplier = 2.5f; + } + + float speed = dt * PLAYER_SPEED * speed_multiplier; + velocity = vec3_mult(vec3_normalize(velocity), speed); + + float mouse_offset_x = -1.0f * input.mouse_x_delta * CAMERA_SENSITIVITY; + float mouse_offset_y = -1.0f * input.mouse_y_delta * CAMERA_SENSITIVITY; + + camera_t* camera = &g_debug->camera.fly; + transform_t* transform = &g_debug->camera.transform; + + // Move + transform->position = vec3_add(transform->position, vec3_mult(camera->front, velocity.y)); + camera->right = vec3_cross(camera->front, WORLD_UP); + transform->position = vec3_add(transform->position, vec3_mult(vec3_normalize(camera->right), velocity.x)); + transform->position = vec3_add(transform->position, vec3_mult(WORLD_UP, velocity.z)); + + // Rotate + camera_rotate(camera, mouse_offset_x, mouse_offset_y); + + // Update view + vec3 target = vec3_add(transform->position, camera->front); + vec3 front = vec3_normalize(vec3_sub(target, transform->position)); + vec3 side = vec3_normalize(vec3_cross(front, WORLD_UP)); + vec3 up = vec3_cross(side, front); + + mat4 view_mat = { + side.x, side.y, side.z, -vec3_dot(transform->position, side), + up.x, up.y, up.z, -vec3_dot(transform->position, up), + front.x, front.y, front.z, -vec3_dot(transform->position, front), + 0.0f, 0.0f, 0.0f, 1.0f + }; + + camera->view_mat = view_mat; +} + diff --git a/code/game/engine/debug.h b/code/game/engine/debug.h new file mode 100644 index 0000000..002367c --- /dev/null +++ b/code/game/engine/debug.h @@ -0,0 +1,40 @@ +#pragma once + +typedef struct debug { + struct { + time_t data1; + } data_loader; + + struct { + time_t geo; + time_t screen; + time_t text; + } render_mgr; + + struct { + bool enabled; + camera_t fly; + transform_t transform; + } camera; +} debug_t; + +debug_t* g_debug; + +void +DEBUG_startup(void); + +char* +DEBUG_load_shader(const char* path, size_t* size); + +void +DEBUG_reload_shaders(render_mgr_t* in); + +void +DEBUG_reload_data1(void); + +void +DEBUG_camera_toggle(void); + +void +DEBUG_camera_update(float dt, input_t input); + diff --git a/code/game/engine/engine.c b/code/game/engine/engine.c new file mode 100644 index 0000000..ee245b4 --- /dev/null +++ b/code/game/engine/engine.c @@ -0,0 +1,103 @@ +void +engine_startup(memory_t* memory) +{ + if (SDL_BYTEORDER != SDL_LIL_ENDIAN) + { + LOG_ERROR("Machine is Big Endian; expected Little Endian."); + exit(EXIT_FAILURE); + } + + g_memory = memory; + + engine_t* engine = persistent_mem_alloc(&g_memory->engine, 1, sizeof(*engine)); + g_engine = engine; + + game_t* game = persistent_mem_alloc(&g_memory->game, 1, sizeof(*game)); + g_game = game; + +#ifdef BUILD_DEBUG + DEBUG_startup(); +#endif + + asset_mgr_startup(); + audio_mgr_startup(); + render_mgr_startup(); + + load_data1("data1.bin"); + load_data2("data2.bin"); + + game_startup(); +} + +void +engine_shutdown(void) +{ + game_shutdown(); +} + +void +engine_update(float dt, input_t input, bool is_window_focused, bool* out_quit) +{ + g_engine->time += dt; + g_engine->is_window_focused = is_window_focused; + + for (int i = 1; i < (int)g_engine->asset_mgr.transforms.count; i++) + { + transform_t* transform = get_transform(i); + update_transform(transform); + } + + if (is_window_focused) { + game_update(dt, input, out_quit); + } +} + +void +engine_render(void) +{ + render_geo_begin(); + game_render(); + render_geo_end(); + + render_screen_begin(); + render_screen_end(); +} + +void +engine_audio_callback(void* userdata, uint8_t* stream, int len) +{ + (void)userdata; (void)stream; (void)len; + + fill_audio_buffer(stream, len); +} + +#ifdef BUILD_DEBUG +void +engine_reload(memory_t* memory) +{ + g_memory = memory; + g_engine = (engine_t*)memory->engine.begin; + g_game = (game_t*)memory->game.begin; + g_debug = (debug_t*)memory->debug.begin; + + DEBUG_reload_shaders(&g_engine->render_mgr); + DEBUG_reload_data1(); +} + +void +engine_debug(float dt, input_t input, uint64_t update_time, uint64_t render_time, uint64_t frame_time) +{ + if (input.debug.enable) + { + DEBUG_camera_toggle(); + } + + if (g_engine->is_window_focused && g_debug->camera.enabled) + { + DEBUG_camera_update(dt, input); + } + + debug(update_time, render_time, frame_time); +} +#endif + diff --git a/code/src/engine/font.inc b/code/game/engine/font.inc similarity index 100% rename from code/src/engine/font.inc rename to code/game/engine/font.inc diff --git a/code/src/engine/hash.c b/code/game/engine/hash.c similarity index 83% rename from code/src/engine/hash.c rename to code/game/engine/hash.c index 99b3ae3..8517814 100644 --- a/code/src/engine/hash.c +++ b/code/game/engine/hash.c @@ -1,26 +1,9 @@ -#define HASH_CSTR(str) murmur_hash64(str, strlen(str), 0) -#define HASH_STR(str, len) murmur_hash64(str, len, 0) +static uint32_t +murmur_hash32(const char* key, size_t len, uint32_t seed); -const uint64_t HASH_UNUSED = 0xFFFFFFFFFFFFFFFFU; +static uint64_t +murmur_hash64(const char* key, size_t len, uint64_t seed); -enum { - NEAREST_PRIME_8 = 11, - NEAREST_PRIME_16 = 17, - NEAREST_PRIME_32 = 37, - NEAREST_PRIME_64 = 67, - NEAREST_PRIME_128 = 131, - NEAREST_PRIME_256 = 257, - NEAREST_PRIME_512 = 521, - NEAREST_PRIME_1024 = 1031 -}; - -typedef struct hash { - int count; - int capacity; - int element_size; - uint64_t* keys; - void* data; -} hash_t; hash_t hash_create(size_t capacity, size_t element_size) @@ -30,8 +13,8 @@ hash_create(size_t capacity, size_t element_size) result.count = 0; result.capacity = capacity; result.element_size = element_size; - result.keys = engine_mem_alloc(capacity, sizeof(*result.keys)); - result.data = engine_mem_alloc(capacity, element_size); + result.keys = persistent_mem_alloc(&g_memory->engine, capacity, sizeof(*result.keys)); + result.data = persistent_mem_alloc(&g_memory->engine, capacity, element_size); for (size_t i = 0; i < capacity; i++) { result.keys[i] = HASH_UNUSED; @@ -40,6 +23,16 @@ hash_create(size_t capacity, size_t element_size) return result; } +void +hash_reset(hash_t* hash) +{ + hash->count = 0; + + for (int i = 0; i < hash->capacity; i++) { + hash->keys[i] = HASH_UNUSED; + } +} + void hash_add(hash_t* hash, uint64_t key, void* element) { @@ -67,7 +60,7 @@ hash_get(hash_t hash, uint64_t key) return element; } -uint32_t +static uint32_t murmur_hash32(const char* key, size_t len, uint32_t seed) { const uint32_t C1 = 0xcc9e2d51; @@ -125,7 +118,7 @@ murmur_hash32(const char* key, size_t len, uint32_t seed) return hash; } -uint64_t +static uint64_t murmur_hash64(const char* key, size_t len, uint64_t seed) { const uint64_t M = 0xc6a4a7935bd1e995; diff --git a/code/game/engine/hash.h b/code/game/engine/hash.h new file mode 100644 index 0000000..7b641cb --- /dev/null +++ b/code/game/engine/hash.h @@ -0,0 +1,38 @@ +#pragma once + +#define HASH_CSTR(str) murmur_hash64(str, strlen(str), 0) +#define HASH_STR(str, len) murmur_hash64(str, len, 0) + +const uint64_t HASH_UNUSED = 0xFFFFFFFFFFFFFFFFU; + +enum { + NEAREST_PRIME_8 = 11, + NEAREST_PRIME_16 = 17, + NEAREST_PRIME_32 = 37, + NEAREST_PRIME_64 = 67, + NEAREST_PRIME_128 = 131, + NEAREST_PRIME_256 = 257, + NEAREST_PRIME_512 = 521, + NEAREST_PRIME_1024 = 1031 +}; + +typedef struct hash { + int count; + int capacity; + int element_size; + uint64_t* keys; + void* data; +} hash_t; + +hash_t +hash_create(size_t capacity, size_t element_size); + +void +hash_reset(hash_t* hash); + +void +hash_add(hash_t* hash, uint64_t key, void* element); + +void* +hash_get(hash_t hash, uint64_t key); + diff --git a/code/src/engine/logger.c b/code/game/engine/logger.c similarity index 60% rename from code/src/engine/logger.c rename to code/game/engine/logger.c index 2276d34..991f665 100644 --- a/code/src/engine/logger.c +++ b/code/game/engine/logger.c @@ -1,26 +1,3 @@ -enum { - LOG_TYPE_DEBUG = 0, - LOG_TYPE_INFO, - LOG_TYPE_WARN, - LOG_TYPE_ERROR, - LOG_TYPE_COUNT -}; - -#ifdef BUILD_RELEASE -#define LOG_ASSERT(condition, ...) -#define LOG_DEBUG(...) -#define LOG_INFO(...) -#define LOG_WARN(...) -#define LOG_ERROR(...) logger_write(LOG_TYPE_ERROR, __VA_ARGS__) -#else -#define LOG_ASSERT(condition, ...) \ - do { if (!(condition)) { logger_write(LOG_TYPE_ERROR, __VA_ARGS__); fflush(stdout); abort(); } } while (0) -#define LOG_DEBUG(...) logger_write(LOG_TYPE_DEBUG, __VA_ARGS__) -#define LOG_INFO(...) logger_write(LOG_TYPE_INFO, __VA_ARGS__) -#define LOG_WARN(...) logger_write(LOG_TYPE_WARN, __VA_ARGS__) -#define LOG_ERROR(...) logger_write(LOG_TYPE_ERROR, __VA_ARGS__) -#endif - void logger_write(int verbosity, char const* format, ...) { diff --git a/code/game/engine/logger.h b/code/game/engine/logger.h new file mode 100644 index 0000000..4faf916 --- /dev/null +++ b/code/game/engine/logger.h @@ -0,0 +1,28 @@ +#pragma once + +enum { + LOG_TYPE_DEBUG = 0, + LOG_TYPE_INFO, + LOG_TYPE_WARN, + LOG_TYPE_ERROR, + LOG_TYPE_COUNT +}; + +#ifdef BUILD_DEBUG +#define LOG_ASSERT(condition, ...) \ + do { if (!(condition)) { logger_write(LOG_TYPE_ERROR, __VA_ARGS__); fflush(stdout); abort(); } } while (0) +#define LOG_DEBUG(...) logger_write(LOG_TYPE_DEBUG, __VA_ARGS__) +#define LOG_INFO(...) logger_write(LOG_TYPE_INFO, __VA_ARGS__) +#define LOG_WARN(...) logger_write(LOG_TYPE_WARN, __VA_ARGS__) +#define LOG_ERROR(...) logger_write(LOG_TYPE_ERROR, __VA_ARGS__) +#else +#define LOG_ASSERT(condition, ...) +#define LOG_DEBUG(...) +#define LOG_INFO(...) +#define LOG_WARN(...) +#define LOG_ERROR(...) logger_write(LOG_TYPE_ERROR, __VA_ARGS__) +#endif + +void +logger_write(int verbosity, char const* format, ...); + diff --git a/code/src/engine/math.c b/code/game/engine/math.c similarity index 87% rename from code/src/engine/math.c rename to code/game/engine/math.c index de77212..db4f8d2 100644 --- a/code/src/engine/math.c +++ b/code/game/engine/math.c @@ -1,44 +1,3 @@ -#define DEG_TO_RAD(deg) ((deg) * 0.01745329251f) -#define RAD_TO_DEG(rad) ((rad) * 57.29578f) - -const float PI_DIV_2 = 1.570796f; - -typedef struct { - float x; - float y; -} vec2; - -typedef struct { - float x; - float y; - float z; -} vec3; - -typedef struct { - float x; - float y; - float z; - float w; -} vec4; - -typedef struct { - float e00; float e01; float e02; float e03; - float e10; float e11; float e12; float e13; - float e20; float e21; float e22; float e23; - float e30; float e31; float e32; float e33; -} mat4; - -typedef struct aabb { - vec3 origin; - vec3 extents; -} aabb_t; - -typedef struct ray { - vec3 origin; - vec3 direction; -} ray_t; - - float vec3_length(vec3 v) { @@ -191,8 +150,10 @@ mat4_multv(mat4 m, vec4 v) } bool -aabb_check(aabb_t a, aabb_t b) +aabb_check(box_collider_t a, box_collider_t b) { + (void)a; (void)b; + /* float a_left = a.origin.x - a.extents.x; float a_right = a.origin.x + a.extents.x; float a_top = a.origin.y + a.extents.y; @@ -208,6 +169,7 @@ aabb_check(aabb_t a, aabb_t b) if (a_bottom >= b_top) { return false; } if (a_left >= b_right) { return false; } if (a_right <= b_left) { return false; } + */ return true; } @@ -224,8 +186,10 @@ periodic_value(float min, float max, float freq, float time) } bool -ray_aabb_intersect(aabb_t aabb, ray_t ray) +ray_aabb_intersect(box_collider_t aabb, ray_t ray) { + (void)aabb; (void)ray; + /* float s_max = 0.0f; float t_min = FLT_MAX; @@ -266,6 +230,7 @@ ray_aabb_intersect(aabb_t aabb, ray_t ray) if (s > s_max) { s_max = s; } if (t < t_min) { t_min = t; } if (s_max > t_min) { return false; } + */ return true; } diff --git a/code/game/engine/math.h b/code/game/engine/math.h new file mode 100644 index 0000000..e6e15ef --- /dev/null +++ b/code/game/engine/math.h @@ -0,0 +1,90 @@ +#pragma once + +#define DEG_TO_RAD(deg) ((deg) * 0.01745329251f) +#define RAD_TO_DEG(rad) ((rad) * 57.29578f) + +const float PI_DIV_2 = 1.570796f; + +typedef struct { + float x; + float y; +} vec2; + +typedef struct { + float x; + float y; + float z; +} vec3; + +typedef struct { + float x; + float y; + float z; + float w; +} vec4; + +typedef struct { + float e00; float e01; float e02; float e03; + float e10; float e11; float e12; float e13; + float e20; float e21; float e22; float e23; + float e30; float e31; float e32; float e33; +} mat4; + +typedef struct ray { + vec3 origin; + vec3 direction; +} ray_t; + +typedef struct box_collider { + handle_t transform; + vec3 extents; +} box_collider_t; + +float +vec3_length(vec3 v); + +vec3 +vec3_normalize(vec3 v); + +vec3 +vec3_negate(vec3 v); + +vec3 +vec3_add(vec3 a, vec3 b); + +vec3 +vec3_sub(vec3 a, vec3 b); + +float +vec3_dot(vec3 a, vec3 b); + +vec3 +vec3_cross(vec3 a, vec3 b); + +vec3 +vec3_mult(vec3 v, float f); + +mat4 +mat4_identity(void); + +mat4 +mat4_multm(mat4 m0, mat4 m1); + +vec4 +mat4_multv(mat4 m, vec4 v); + +bool +aabb_check(box_collider_t a, box_collider_t b); + +float +periodic_value(float min, float max, float freq, float time); + +bool +ray_aabb_intersect(box_collider_t aabb, ray_t ray); + +float +lerp(float a, float b, float t); + +float +normalize(float val, float min, float max); + diff --git a/code/game/engine/memory.c b/code/game/engine/memory.c new file mode 100644 index 0000000..ed2b880 --- /dev/null +++ b/code/game/engine/memory.c @@ -0,0 +1,38 @@ +void* +persistent_mem_alloc(memory_region_t* region, size_t count, size_t size) +{ + size_t total_size = count * size; + + LOG_ASSERT(region->current + total_size < region->end, + "Exceeded bounds of engine memory by %d bytes", + region->current + total_size - region->end); + + void* result = region->current; + region->current += total_size; + + return result; +} + +void +persistent_mem_reset(memory_region_t* region) +{ + region->current = region->begin; +} + +void* +scratch_mem_alloc(size_t count, size_t size) +{ + size_t total_size = count * size; + + // Reset to beginning, overwriting old stale data + if (g_memory->scratch.current + total_size > g_memory->scratch.end) { + LOG_DEBUG("Transient memory reset to beginning"); + g_memory->scratch.current = g_memory->scratch.begin; + } + + void* result = g_memory->scratch.current; + g_memory->scratch.current += total_size; + + return result; +} + diff --git a/code/game/engine/memory.h b/code/game/engine/memory.h new file mode 100644 index 0000000..83a4519 --- /dev/null +++ b/code/game/engine/memory.h @@ -0,0 +1,11 @@ +#pragma once + +void* +persistent_mem_alloc(memory_region_t* region, size_t count, size_t size); + +void +persistent_mem_reset(memory_region_t* region); + +void* +scratch_mem_alloc(size_t count, size_t size); + diff --git a/code/game/engine/node.c b/code/game/engine/node.c new file mode 100644 index 0000000..8593ba1 --- /dev/null +++ b/code/game/engine/node.c @@ -0,0 +1,69 @@ +mat4 +calc_matrix(transform_t* transform) +{ + mat4 translation = mat4_identity(); + translation.e03 = transform->position.x; + translation.e13 = transform->position.y; + translation.e23 = transform->position.z; + + mat4 rotation; + { + mat4 rotation_x = mat4_identity(); + { + float cos_angle = cosf(transform->rotation.x); + float sin_angle = sinf(transform->rotation.x); + + rotation_x.e11 = cos_angle; + rotation_x.e12 = -sin_angle; + rotation_x.e21 = sin_angle; + rotation_x.e22 = cos_angle; + } + + mat4 rotation_y = mat4_identity(); + { + float cos_angle = cosf(transform->rotation.y); + float sin_angle = sinf(transform->rotation.y); + + rotation_y.e00 = cos_angle; + rotation_y.e02 = sin_angle; + rotation_y.e20 = -sin_angle; + rotation_y.e22 = cos_angle; + } + + mat4 rotation_z = mat4_identity(); + { + float cos_angle = cosf(transform->rotation.z); + float sin_angle = sinf(transform->rotation.z); + + rotation_z.e00 = cos_angle; + rotation_z.e01 = -sin_angle; + rotation_z.e10 = sin_angle; + rotation_z.e11 = cos_angle; + } + + rotation = mat4_multm(rotation_z, mat4_multm(rotation_y, rotation_x)); + } + + mat4 scale = mat4_identity(); + scale.e00 = transform->scale.x; + scale.e11 = transform->scale.y; + scale.e22 = transform->scale.z; + + mat4 result = mat4_multm(translation, mat4_multm(rotation, scale)); + + return result; +} + +void +update_transform(transform_t* transform) +{ + transform_t* parent = get_transform(transform->parent); + transform->matrix = mat4_multm(parent->matrix, calc_matrix(transform)); + + for (size_t i = 0; i < transform->child_count; i++) + { + transform_t* child = get_transform(transform->children[i]); + update_transform(child); + } +} + diff --git a/code/game/engine/node.h b/code/game/engine/node.h new file mode 100644 index 0000000..17034e3 --- /dev/null +++ b/code/game/engine/node.h @@ -0,0 +1,8 @@ +#pragma once + +mat4 +calc_matrix(transform_t* transform); + +void +update_node(transform_t* transform); + diff --git a/code/src/engine/renderer.c b/code/game/engine/render_mgr.c similarity index 58% rename from code/src/engine/renderer.c rename to code/game/engine/render_mgr.c index 262fad9..fb73a3b 100644 --- a/code/src/engine/renderer.c +++ b/code/game/engine/render_mgr.c @@ -1,192 +1,22 @@ -// Release target will include shaders into the binary -#ifdef BUILD_RELEASE -#include "glsl.inc" -#endif +static GLuint +compile_shader(char* contents, size_t size, unsigned int type); -enum { MAX_TEXT_LENGTH = 128 }; +static GLuint +create_shader(char* buf, size_t size); -typedef struct render_mgr { - struct { - GLuint shader; - GLuint u_proj; - GLuint u_view; - GLuint u_model; - GLuint u_texture; - GLuint u_texture_alpha; - GLuint u_light_count; - GLuint u_lights; - GLuint u_is_emitter; - GLuint u_uv_scale; - GLuint u_uv_translation; - GLuint u_powerup_timer; - GLuint u_ambient_adjust; - mat4 proj_mat; - } geo; - - struct { - GLuint shader; - GLuint vao; - GLuint vbo; - GLuint texture; - GLuint u_proj; - GLuint u_model; - GLuint u_texture; - GLuint u_color; - mat4 proj_mat; - } text; - - struct { - GLuint shader; - GLuint texture; - GLuint vao; - GLuint vbo; - GLuint fbo; - GLuint rbo; - GLuint u_texture; - GLuint u_powerup_timer; - } screen; - - #ifdef BUILD_DEBUG - struct { - time_t geo; - time_t screen; - time_t text; - } debug; - #endif -} render_mgr_t; - -GLuint -compile_shader(char* contents, size_t size, unsigned int type) -{ - const char* sources[3]; - sources[0] = "#version 400 core\n"; - sources[1] = (type == GL_VERTEX_SHADER) ? "#define VERTEX\n" : "#define FRAGMENT\n"; - sources[2] = contents; - - int lengths[3]; - lengths[0] = strlen(sources[0]); - lengths[1] = strlen(sources[1]); - lengths[2] = size; - - GLuint id = glCreateShader(type); - glShaderSource(id, 3, sources, lengths); - glCompileShader(id); - - char log[512]; - int success; - glGetShaderiv(id, GL_COMPILE_STATUS, &success); - if (!success) - { - glGetShaderInfoLog(id, sizeof(log), NULL, log); - - LOG_ERROR("Failed to compile shader:"); - LOG_ERROR(" %s", log); - -#ifdef BUILD_RELEASE - exit(EXIT_FAILURE); -#endif - } - - return id; -} - -#ifdef BUILD_DEBUG -char* -load_shader(const char* path, size_t* size) -{ - SDL_RWops* ops = SDL_RWFromFile(path, "r"); - if (ops == NULL) - { - LOG_ERROR("Error opening file %s: %s", path, SDL_GetError()); - exit(EXIT_FAILURE); - } - - Sint64 file_size = SDL_RWsize(ops); - if (size < 0) { - LOG_ERROR("Error getting size of file %s: %s", path, SDL_GetError()); - } - - char* buf = scratch_mem_alloc(1, file_size); - - size_t items_read = SDL_RWread(ops, buf, file_size, 1); - if (items_read != 1) { - LOG_ERROR("Error reading file %s: %s", path, SDL_GetError()); - } - - int ret = SDL_RWclose(ops); - if (ret != 0) { - LOG_ERROR("Error closing file %s: %s", path, SDL_GetError()); - } - - *size = (size_t)file_size; - - return buf; -} -#endif - -GLuint -create_shader(char* buf, size_t size) -{ - size_t vertex_size; - { - char* substring = strstr(buf, "#ifdef FRAGMENT"); - LOG_ASSERT(substring != NULL, "Error parsing vertex shader"); - - vertex_size = substring - buf; - } - - size_t fragment_size; - { - fragment_size = size - vertex_size; - } - - GLuint vertex = compile_shader(buf, vertex_size, GL_VERTEX_SHADER); - GLuint fragment = compile_shader(buf+vertex_size, fragment_size, GL_FRAGMENT_SHADER); - - GLuint shader = glCreateProgram(); - { - char log[512]; - int success; - - glAttachShader(shader, vertex); - glAttachShader(shader, fragment); - glLinkProgram(shader); - glGetProgramiv(shader, GL_LINK_STATUS, &success); - if (!success) - { - glGetProgramInfoLog(shader, sizeof(log), NULL, log); - - LOG_ERROR("Failed to link shader program:"); - LOG_ERROR(" %s", log); - -#ifdef BUILD_RELEASE - exit(EXIT_FAILURE); -#endif - } - - glDeleteShader(vertex); - glDeleteShader(fragment); - } - - return shader; -} void render_mgr_startup(void) { // Geometry rendering { - #ifdef BUILD_RELEASE +#ifdef BUILD_DEBUG + size_t size; + char* buf = DEBUG_load_shader("shaders/geo.glsl", &size); +#else size_t size = strlen(geo_glsl); char* buf = (char*)geo_glsl; - #else - size_t size; - char* buf = load_shader("shaders/geo.glsl", &size); - - struct stat attrib; - stat("shaders/geo.glsl", &attrib); - g_render_mgr->debug.geo = attrib.st_mtime; - #endif +#endif GLuint shader = create_shader(buf, size); @@ -194,14 +24,7 @@ render_mgr_startup(void) GLuint u_view = glGetUniformLocation(shader, "u_view"); GLuint u_proj = glGetUniformLocation(shader, "u_proj"); GLuint u_texture = glGetUniformLocation(shader, "u_texture"); - GLuint u_texture_alpha = glGetUniformLocation(shader, "u_texture_alpha"); - GLuint u_light_count = glGetUniformLocation(shader, "u_light_count"); - GLuint u_lights = glGetUniformLocation(shader, "u_lights[0].position"); - GLuint u_is_emitter = glGetUniformLocation(shader, "u_is_emitter"); - GLuint u_uv_scale = glGetUniformLocation(shader, "u_uv_scale"); - GLuint u_uv_translation = glGetUniformLocation(shader, "u_uv_translation"); - GLuint u_powerup_timer = glGetUniformLocation(shader, "u_powerup_timer"); - GLuint u_ambient_adjust = glGetUniformLocation(shader, "u_ambient_adjust"); + GLuint u_light = glGetUniformLocation(shader, "u_light"); const float n = 0.1f; const float f = 100.0f; @@ -216,35 +39,24 @@ render_mgr_startup(void) 0.0f, 0.0f, 1.0f, 0.0f }; - g_render_mgr->geo.shader = shader; - g_render_mgr->geo.u_model = u_model; - g_render_mgr->geo.u_proj = u_proj; - g_render_mgr->geo.u_view= u_view; - g_render_mgr->geo.u_texture = u_texture; - g_render_mgr->geo.u_texture_alpha = u_texture_alpha; - g_render_mgr->geo.u_light_count = u_light_count; - g_render_mgr->geo.u_lights = u_lights; - g_render_mgr->geo.u_is_emitter = u_is_emitter; - g_render_mgr->geo.u_uv_scale = u_uv_scale; - g_render_mgr->geo.u_uv_translation = u_uv_translation; - g_render_mgr->geo.u_powerup_timer = u_powerup_timer; - g_render_mgr->geo.u_ambient_adjust = u_ambient_adjust; - g_render_mgr->geo.proj_mat = proj_mat; + g_engine->render_mgr.geo.shader = shader; + g_engine->render_mgr.geo.u_model = u_model; + g_engine->render_mgr.geo.u_proj = u_proj; + g_engine->render_mgr.geo.u_view= u_view; + g_engine->render_mgr.geo.u_texture = u_texture; + g_engine->render_mgr.geo.u_light = u_light; + g_engine->render_mgr.geo.proj_mat = proj_mat; } // Text rendering { - #ifdef BUILD_RELEASE +#ifdef BUILD_DEBUG + size_t size; + char* buf = DEBUG_load_shader("shaders/text.glsl", &size); +#else size_t size = strlen(text_glsl); char* buf = (char*)text_glsl; - #else - size_t size; - char* buf = load_shader("shaders/text.glsl", &size); - - struct stat attrib; - stat("shaders/text.glsl", &attrib); - g_render_mgr->debug.text = attrib.st_mtime; - #endif +#endif GLuint shader = create_shader(buf, size); @@ -283,30 +95,26 @@ render_mgr_startup(void) 0.0f, 0.0f, 0.0f, 1.0f }; - g_render_mgr->text.shader = shader; - g_render_mgr->text.vao = vao; - g_render_mgr->text.vbo = vbo; - g_render_mgr->text.texture = texture; - g_render_mgr->text.u_proj = u_proj; - g_render_mgr->text.u_model = u_model; - g_render_mgr->text.u_texture = u_texture; - g_render_mgr->text.u_color = u_color; - g_render_mgr->text.proj_mat = proj_mat; + g_engine->render_mgr.text.shader = shader; + g_engine->render_mgr.text.vao = vao; + g_engine->render_mgr.text.vbo = vbo; + g_engine->render_mgr.text.texture = texture; + g_engine->render_mgr.text.u_proj = u_proj; + g_engine->render_mgr.text.u_model = u_model; + g_engine->render_mgr.text.u_texture = u_texture; + g_engine->render_mgr.text.u_color = u_color; + g_engine->render_mgr.text.proj_mat = proj_mat; } // Screen rendering { - #ifdef BUILD_RELEASE +#ifdef BUILD_DEBUG + size_t size; + char* buf = DEBUG_load_shader("shaders/screen.glsl", &size); +#else size_t size = strlen(screen_glsl); char* buf = (char*)screen_glsl; - #else - size_t size; - char* buf = load_shader("shaders/screen.glsl", &size); - - struct stat attrib; - stat("shaders/screen.glsl", &attrib); - g_render_mgr->debug.screen= attrib.st_mtime; - #endif +#endif GLuint shader = create_shader(buf, size); @@ -372,16 +180,14 @@ render_mgr_startup(void) glBindBuffer(GL_ARRAY_BUFFER, 0); GLuint u_texture = glGetUniformLocation(shader, "u_texture"); - GLuint u_powerup_timer = glGetUniformLocation(shader, "u_powerup_timer"); - g_render_mgr->screen.shader = shader; - g_render_mgr->screen.vao = vao; - g_render_mgr->screen.vbo = vbo; - g_render_mgr->screen.fbo = fbo; - g_render_mgr->screen.rbo = rbo; - g_render_mgr->screen.texture = texture; - g_render_mgr->screen.u_texture = u_texture; - g_render_mgr->screen.u_powerup_timer = u_powerup_timer; + g_engine->render_mgr.screen.shader = shader; + g_engine->render_mgr.screen.vao = vao; + g_engine->render_mgr.screen.vbo = vbo; + g_engine->render_mgr.screen.fbo = fbo; + g_engine->render_mgr.screen.rbo = rbo; + g_engine->render_mgr.screen.texture = texture; + g_engine->render_mgr.screen.u_texture = u_texture; } } @@ -399,17 +205,27 @@ format_text(const char* format, ...) } void -render_geo_begin(camera_t* camera) +render_geo_begin(void) { - glBindFramebuffer(GL_FRAMEBUFFER, g_render_mgr->screen.fbo); + glBindFramebuffer(GL_FRAMEBUFFER, g_engine->render_mgr.screen.fbo); glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); glEnable(GL_DEPTH_TEST); glEnable(GL_BLEND); - glUseProgram(g_render_mgr->geo.shader); + glUseProgram(g_engine->render_mgr.geo.shader); glViewport(0, 0, RENDER_WIDTH, RENDER_HEIGHT); - glUniformMatrix4fv(g_render_mgr->geo.u_proj, 1, GL_TRUE, (float*)&g_render_mgr->geo.proj_mat); - glUniformMatrix4fv(g_render_mgr->geo.u_view, 1, GL_TRUE, (float*)&camera->view_mat); + glUniformMatrix4fv(g_engine->render_mgr.geo.u_proj, 1, GL_TRUE, (float*)&g_engine->render_mgr.geo.proj_mat); + +#ifdef BUILD_DEBUG + if (g_debug->camera.enabled) { + glUniformMatrix4fv(g_engine->render_mgr.geo.u_view, 1, GL_TRUE, (float*)&g_debug->camera.fly.view_mat); + } + else { + glUniformMatrix4fv(g_engine->render_mgr.geo.u_view, 1, GL_TRUE, (float*)&g_engine->render_mgr.active_camera->view_mat); + } +#else + glUniformMatrix4fv(g_engine->render_mgr.geo.u_view, 1, GL_TRUE, (float*)&g_engine->render_mgr.active_camera->view_mat); +#endif } void @@ -425,8 +241,9 @@ render_screen_begin(void) glClear(GL_COLOR_BUFFER_BIT); glEnable(GL_BLEND); - glUseProgram(g_render_mgr->screen.shader); - glBindVertexArray(g_render_mgr->screen.vao); + glUseProgram(g_engine->render_mgr.screen.shader); + glBindVertexArray(g_engine->render_mgr.screen.vao); + glUniform1i(g_engine->render_mgr.screen.u_texture, 0); } void @@ -434,7 +251,7 @@ render_screen_end(void) { glDisable(GL_DEPTH_TEST); - glBindTexture(GL_TEXTURE_2D, g_render_mgr->screen.texture); + glBindTexture(GL_TEXTURE_2D, g_engine->render_mgr.screen.texture); glDrawArrays(GL_TRIANGLES, 0, 6); glViewport(0, 0, WINDOW_WIDTH, WINDOW_HEIGHT); } @@ -442,12 +259,12 @@ render_screen_end(void) void render_text(const char* text, vec2 position, vec3 color, float size) { - typedef struct vertex { + struct vertex { vec2 position; vec2 texcoord; - } vertex_t; + }; - vertex_t vertices[6 * MAX_TEXT_LENGTH]; + struct vertex vertices[6 * MAX_TEXT_LENGTH]; int text_length = strlen(text); LOG_ASSERT(text_length < MAX_TEXT_LENGTH, @@ -464,25 +281,25 @@ render_text(const char* text, vec2 position, vec3 color, float size) glyph_t glyph = g_font.glyphs[idx]; // Set up the four vertices required for the glyph's quad (texcoord.y is flipped to account for flipped texture) - vertex_t upper_left = { + struct vertex upper_left = { .position.x = cursor - glyph.origin_x, .position.y = glyph.origin_y, .texcoord.x = glyph.x * atlas_width_recip, .texcoord.y = 1.0f - (glyph.y * atlas_height_recip)}; - vertex_t upper_right = { + struct vertex upper_right = { .position.x = upper_left.position.x + glyph.width, .position.y = upper_left.position.y, .texcoord.x = (glyph.x + glyph.width) * atlas_width_recip, .texcoord.y = upper_left.texcoord.y}; - vertex_t bottom_right = { + struct vertex bottom_right = { .position.x = upper_right.position.x, .position.y = upper_left.position.y - glyph.height, .texcoord.x = upper_right.texcoord.x, .texcoord.y = 1.0f - ((glyph.y + glyph.height) * atlas_height_recip)}; - vertex_t bottom_left = { + struct vertex bottom_left = { .position.x = upper_left.position.x, .position.y = bottom_right.position.y, .texcoord.x = upper_left.texcoord.x, @@ -510,74 +327,112 @@ render_text(const char* text, vec2 position, vec3 color, float size) model_mat.e03 = position.x; model_mat.e13 = position.y; - glUseProgram(g_render_mgr->text.shader); - glUniformMatrix4fv(g_render_mgr->text.u_proj, 1, GL_TRUE, (float*)&g_render_mgr->text.proj_mat); - glUniformMatrix4fv(g_render_mgr->text.u_model, 1, GL_TRUE, (float*)&model_mat); - glUniform1i(g_render_mgr->text.u_texture, 0); - glUniform3fv(g_render_mgr->text.u_color, 1, (float*)&color); + glUseProgram(g_engine->render_mgr.text.shader); + glUniformMatrix4fv(g_engine->render_mgr.text.u_proj, 1, GL_TRUE, (float*)&g_engine->render_mgr.text.proj_mat); + glUniformMatrix4fv(g_engine->render_mgr.text.u_model, 1, GL_TRUE, (float*)&model_mat); + glUniform1i(g_engine->render_mgr.text.u_texture, 0); + glUniform3fv(g_engine->render_mgr.text.u_color, 1, (float*)&color); - glBindVertexArray(g_render_mgr->text.vao); + glBindVertexArray(g_engine->render_mgr.text.vao); glActiveTexture(GL_TEXTURE0); - glBindTexture(GL_TEXTURE_2D, g_render_mgr->text.texture); - glBindBuffer(GL_ARRAY_BUFFER, g_render_mgr->text.vbo); + glBindTexture(GL_TEXTURE_2D, g_engine->render_mgr.text.texture); + glBindBuffer(GL_ARRAY_BUFFER, g_engine->render_mgr.text.vbo); glBufferData(GL_ARRAY_BUFFER, sizeof(vertices[0]) * 6 * text_length, vertices, GL_DYNAMIC_DRAW); glDrawArrays(GL_TRIANGLES, 0, 6 * text_length); } void -reload_shaders(void) +set_active_camera(camera_t* camera) { -#ifdef BUILD_DEBUG - glUseProgram(0); - - { - struct stat attrib; - stat("shaders/geo.glsl", &attrib); - time_t mod_time = attrib.st_mtime; - if (mod_time != g_render_mgr->debug.geo) - { - glDeleteProgram(g_render_mgr->geo.shader); - - size_t size; - char* buf = load_shader("shaders/geo.glsl", &size); - - g_render_mgr->geo.shader = create_shader(buf, size); - g_render_mgr->debug.geo = mod_time; - } - } - - { - struct stat attrib; - stat("shaders/screen.glsl", &attrib); - time_t mod_time = attrib.st_mtime; - if (mod_time != g_render_mgr->debug.screen) - { - glDeleteProgram(g_render_mgr->screen.shader); - - size_t size; - char* buf = load_shader("shaders/screen.glsl", &size); - - g_render_mgr->screen.shader = create_shader(buf, size); - g_render_mgr->debug.screen = mod_time; - } - } - - { - struct stat attrib; - stat("shaders/text.glsl", &attrib); - time_t mod_time = attrib.st_mtime; - if (mod_time != g_render_mgr->debug.text) - { - glDeleteProgram(g_render_mgr->text.shader); - - size_t size; - char* buf = load_shader("shaders/text.glsl", &size); - - g_render_mgr->text.shader = create_shader(buf, size); - g_render_mgr->debug.text = mod_time; - } - } -#endif + g_engine->render_mgr.active_camera = camera; +} + +camera_t* +get_active_camera(void) +{ + return g_engine->render_mgr.active_camera; +} + +static GLuint +compile_shader(char* contents, size_t size, unsigned int type) +{ + const char* sources[3]; + sources[0] = "#version 400 core\n"; + sources[1] = (type == GL_VERTEX_SHADER) ? "#define VERTEX\n" : "#define FRAGMENT\n"; + sources[2] = contents; + + int lengths[3]; + lengths[0] = strlen(sources[0]); + lengths[1] = strlen(sources[1]); + lengths[2] = size; + + GLuint id = glCreateShader(type); + glShaderSource(id, 3, sources, lengths); + glCompileShader(id); + + char log[512]; + int success; + glGetShaderiv(id, GL_COMPILE_STATUS, &success); + if (!success) + { + glGetShaderInfoLog(id, sizeof(log), NULL, log); + + LOG_ERROR("Failed to compile shader:"); + LOG_ERROR(" %s", log); + +#ifndef BUILD_DEBUG + exit(EXIT_FAILURE); +#endif + } + + return id; +} + +static GLuint +create_shader(char* buf, size_t size) +{ + size_t vertex_size; + { + char* substring = strstr(buf, "#ifdef FRAGMENT"); + LOG_ASSERT(substring != NULL, "Error parsing vertex shader"); + + vertex_size = substring - buf; + } + + size_t fragment_size; + { + fragment_size = size - vertex_size; + } + + GLuint vertex = compile_shader(buf, vertex_size, GL_VERTEX_SHADER); + GLuint fragment = compile_shader(buf+vertex_size, fragment_size, GL_FRAGMENT_SHADER); + + GLuint shader = glCreateProgram(); + { + char log[512]; + int success; + + glAttachShader(shader, vertex); + glAttachShader(shader, fragment); + glLinkProgram(shader); + glGetProgramiv(shader, GL_LINK_STATUS, &success); + if (!success) + { + glGetProgramInfoLog(shader, sizeof(log), NULL, log); + + LOG_ERROR("Failed to link shader program:"); + LOG_ERROR(" %s", log); + +#ifndef BUILD_DEBUG + exit(EXIT_FAILURE); +#endif + } + + glDeleteShader(vertex); + glDeleteShader(fragment); + } + + return shader; } diff --git a/code/game/engine/render_mgr.h b/code/game/engine/render_mgr.h new file mode 100644 index 0000000..4d1571a --- /dev/null +++ b/code/game/engine/render_mgr.h @@ -0,0 +1,60 @@ +#pragma once + +enum { MAX_TEXT_LENGTH = 128 }; + +typedef struct render_mgr { + struct { + GLuint shader; + GLuint u_proj, u_view, u_model; + GLuint u_texture; + GLuint u_light; + mat4 proj_mat; + } geo; + + struct { + GLuint shader; + GLuint vao, vbo; + GLuint texture; + GLuint u_proj, u_model; + GLuint u_texture; + GLuint u_color; + mat4 proj_mat; + } text; + + struct { + GLuint shader; + GLuint texture; + GLuint vao, vbo, fbo, rbo; + GLuint u_texture; + } screen; + + camera_t* active_camera; +} render_mgr_t; + +void +render_mgr_startup(void); + +const char* +format_text(const char* format, ...); + +void +render_geo_begin(void); + +void +render_geo_end(void); + +void +render_screen_begin(void); + +void +render_screen_end(void); + +void +render_text(const char* text, vec2 position, vec3 color, float size); + +void +set_active_camera(camera_t* camera); + +camera_t* +get_active_camera(void); + diff --git a/code/game/engine/ui.c b/code/game/engine/ui.c new file mode 100644 index 0000000..e69de29 diff --git a/code/src/engine/ui.c b/code/game/engine/ui.h similarity index 84% rename from code/src/engine/ui.c rename to code/game/engine/ui.h index 6bfb9fc..927e9b6 100644 --- a/code/src/engine/ui.c +++ b/code/game/engine/ui.h @@ -1,4 +1,6 @@ -enum {MAX_WIDGET_NAME_LENGTH = 16}; +#pragma once + +enum {MAX_WIDGET_NAME_LENGTH = 64}; enum {MAX_WIDGET_COUNT = 16}; typedef struct ui_widget { diff --git a/code/game/game.h b/code/game/game.h new file mode 100644 index 0000000..26677b9 --- /dev/null +++ b/code/game/game.h @@ -0,0 +1,14 @@ +#pragma once + +void +game_startup(void); + +void +game_shutdown(void); + +void +game_update(float dt, input_t input, bool* out_quit); + +void +game_render(void); + diff --git a/code/game/game/debug.c b/code/game/game/debug.c new file mode 100644 index 0000000..8d32169 --- /dev/null +++ b/code/game/game/debug.c @@ -0,0 +1,77 @@ +void +debug(uint64_t update_time, uint64_t render_time, uint64_t frame_time) +{ + if (g_debug->camera.enabled) + { + render_text( + format_text("[DEBUG CAMERA]", frame_time), + (vec2){WINDOW_WIDTH/2, WINDOW_HEIGHT-40}, + (vec3){1.0f, 1.0f, 0.0f}, 2.0f); + } + + render_text( + format_text("Frame %lums", frame_time), + (vec2){0, WINDOW_HEIGHT-20}, + (vec3){1.0f, 1.0f, 0.0f}, 2.0f); + + render_text( + format_text("Update %lums", update_time), + (vec2){0, WINDOW_HEIGHT-40}, + (vec3){1.0f, 1.0f, 0.0f}, 2.0f); + + render_text( + format_text("Render %lums", render_time), + (vec2){0, WINDOW_HEIGHT-60}, + (vec3){1.0f, 1.0f, 0.0f}, 2.0f); + + { + float memory_used = (g_memory->engine.current - g_memory->engine.begin)/(1024.0f*1024.0f); + float memory_capacity = (g_memory->engine.end - g_memory->engine.begin)/(1024.0f*1024.0f); + + render_text( + format_text("Engine %.02fM/%.02fM", memory_used, memory_capacity), + (vec2){0, WINDOW_HEIGHT-80}, + (vec3){1.0f, 1.0f, 0.0f}, 2.0f); + } + + { + float memory_used = (g_memory->game.current - g_memory->game.begin)/(1024.0f*1024.0f); + float memory_capacity = (g_memory->game.end - g_memory->game.begin)/(1024.0f*1024.0f); + + render_text( + format_text("Game %.02fM/%.02fM", memory_used, memory_capacity), + (vec2){0, WINDOW_HEIGHT-100}, + (vec3){1.0f, 1.0f, 0.0f}, 2.0f); + } + + { + float memory_used = (g_memory->debug.current - g_memory->debug.begin)/(1024.0f*1024.0f); + float memory_capacity = (g_memory->debug.end - g_memory->debug.begin)/(1024.0f*1024.0f); + + render_text( + format_text("Debug %.02fM/%.02fM", memory_used, memory_capacity), + (vec2){0, WINDOW_HEIGHT-120}, + (vec3){1.0f, 1.0f, 0.0f}, 2.0f); + } + + { + float memory_used = (g_memory->data1.current - g_memory->data1.begin)/(1024.0f*1024.0f); + float memory_capacity = (g_memory->data1.end - g_memory->data1.begin)/(1024.0f*1024.0f); + + render_text( + format_text("Data1 %.02fM/%.02fM", memory_used, memory_capacity), + (vec2){0, WINDOW_HEIGHT-140}, + (vec3){1.0f, 1.0f, 0.0f}, 2.0f); + } + + { + float memory_used = (g_memory->data2.current - g_memory->data2.begin)/(1024.0f*1024.0f); + float memory_capacity = (g_memory->data2.end - g_memory->data2.begin)/(1024.0f*1024.0f); + + render_text( + format_text("Data2 %.02fM/%.02fM", memory_used, memory_capacity), + (vec2){0, WINDOW_HEIGHT-160}, + (vec3){1.0f, 1.0f, 0.0f}, 2.0f); + } +} + diff --git a/code/game/game/debug.h b/code/game/game/debug.h new file mode 100644 index 0000000..cd6668a --- /dev/null +++ b/code/game/game/debug.h @@ -0,0 +1,5 @@ +#pragma once + +void +debug(uint64_t update_time, uint64_t render_time, uint64_t frame_time); + diff --git a/code/game/game/game.c b/code/game/game/game.c new file mode 100644 index 0000000..dc899de --- /dev/null +++ b/code/game/game/game.c @@ -0,0 +1,89 @@ +void +game_startup(void) +{ + audio_source_t* music = get_audio_source(1); + play_sound(*music); + + camera_t* camera = get_camera(get_camera_handle("CameraMain")); + set_active_camera(camera); +} + +void +game_shutdown(void) +{ +} + +void +game_update(float dt, input_t input, bool* out_quit) +{ + (void)out_quit; + + { + camera_t* camera = get_active_camera(); + transform_t* transform = get_transform(camera->transform); + set_listener(transform->position, camera->front, WORLD_UP); + } + + play(dt, input); +} + +void +game_render(void) +{ + GLuint u_light_count = glGetUniformLocation(g_engine->render_mgr.geo.shader, "u_light_count"); + glUniform1i(u_light_count, g_engine->asset_mgr.lights.count); + + for (int i = 0; i < (int)g_engine->asset_mgr.lights.count; i++) + { + char buf[30]; + GLuint u_light_position; + { + snprintf(buf, sizeof(buf), "u_lights[%d].position", i); + u_light_position = glGetUniformLocation(g_engine->render_mgr.geo.shader, buf); + } + + GLuint u_light_color; + { + snprintf(buf, sizeof(buf), "u_lights[%d].color", i); + u_light_color = glGetUniformLocation(g_engine->render_mgr.geo.shader, buf); + } + + GLuint u_light_intensity; + { + snprintf(buf, sizeof(buf), "u_lights[%d].intensity", i); + u_light_intensity = glGetUniformLocation(g_engine->render_mgr.geo.shader, buf); + } + + GLuint u_light_radius; + { + snprintf(buf, sizeof(buf), "u_lights[%d].radius", i); + u_light_radius = glGetUniformLocation(g_engine->render_mgr.geo.shader, buf); + } + + point_light_t light = g_engine->asset_mgr.lights.data[i]; + transform_t* transform = get_transform(light.transform); + vec3 position = {transform->matrix.e03, transform->matrix.e13, transform->matrix.e23}; + + glUniform3fv(u_light_position, 1, (float*)&position); + glUniform3fv(u_light_color, 1, (float*)&light.color); + glUniform1f(u_light_intensity, light.intensity); + glUniform1f(u_light_radius, light.radius); + } + + for (size_t i = 0; i < g_engine->asset_mgr.renderables.count; i++) + { + renderable_t* renderable = get_renderable(i); + mesh_t* mesh = get_mesh(renderable->mesh); + material_t* material = get_material(renderable->material); + transform_t* transform = get_transform(renderable->transform); + + glBindTexture(GL_TEXTURE_2D, material->texture); + glUniform1i(g_engine->render_mgr.geo.u_texture, 0); + + glUniformMatrix4fv(g_engine->render_mgr.geo.u_model, 1, GL_TRUE, (float*)&transform->matrix); + + glBindVertexArray(mesh->vao); + glDrawElements(GL_TRIANGLES, mesh->index_count, GL_UNSIGNED_SHORT, NULL); + } +} + diff --git a/code/game/game/logic.c b/code/game/game/logic.c new file mode 100644 index 0000000..a456977 --- /dev/null +++ b/code/game/game/logic.c @@ -0,0 +1,36 @@ +void +play(float dt, input_t input) +{ + // Update camera +#ifdef BUILD_DEBUG + if (!g_debug->camera.enabled) +#endif + { + vec3 velocity = {0}; + if (input.forward) { + velocity.y = 1.0f; + } else if (input.backward) { + velocity.y = -1.0f; + } + + if (input.strafe_left) { + velocity.x = -1.0f; + } else if (input.strafe_right) { + velocity.x = 1.0f; + } + + float speed = dt * PLAYER_SPEED; + velocity = vec3_mult(vec3_normalize(velocity), speed); + + float mouse_offset_x = -1.0f * input.mouse_x_delta * CAMERA_SENSITIVITY; + float mouse_offset_y = -1.0f * input.mouse_y_delta * CAMERA_SENSITIVITY; + + camera_t* camera = get_active_camera(); + camera_move(camera, velocity); + camera_rotate(camera, mouse_offset_x, mouse_offset_y); + camera_update_view(camera); + + transform_t* transform = get_transform(camera->transform); + set_listener(transform->position, camera->front, WORLD_UP); + } +} diff --git a/code/game/game/logic.h b/code/game/game/logic.h new file mode 100644 index 0000000..22499c7 --- /dev/null +++ b/code/game/game/logic.h @@ -0,0 +1,33 @@ +#pragma once + +const float PLAYER_SPEED = 2.5f; +const float CAMERA_SENSITIVITY = 0.05f; + +typedef enum game_mode { + MODE_MAIN_MENU = 0, + MODE_OPTIONS, + MODE_PLAY, + MODE_PAUSE, + MODE_QUIT +} game_mode_e; + +typedef struct state { + game_mode_e mode; + game_mode_e mode_last; + camera_t camera; +} state_t; + +typedef struct ui { + ui_menu_t main_menu; + ui_menu_t options_menu; + ui_menu_t pause_menu; +} ui_t; + +typedef struct game { + state_t state; + ui_t ui; +} game_t; + +void +play(float dt, input_t input); + diff --git a/code/src/game/menu.c b/code/game/game/menu.c similarity index 86% rename from code/src/game/menu.c rename to code/game/game/menu.c index d0f8892..7371d6d 100644 --- a/code/src/game/menu.c +++ b/code/game/game/menu.c @@ -45,10 +45,7 @@ menu_exit(void) void menu_update(input_t input, ui_menu_t* menu) { - state_t* state = &g_game->state; - - if (input.down - && input.down != state->input_prev.down) + if (input.down) { if (menu->active_index == menu->widget_count-1) { menu->active_index = 0; @@ -56,8 +53,7 @@ menu_update(input_t input, ui_menu_t* menu) menu->active_index++; } } - else if (input.up && - input.up != state->input_prev.up) + else if (input.up) { if (menu->active_index == 0) { menu->active_index = menu->widget_count - 1; @@ -65,8 +61,7 @@ menu_update(input_t input, ui_menu_t* menu) menu->active_index--; } } - else if (input.select && - input.select != state->input_prev.select) + else if (input.select) { menu->widgets[menu->active_index].action(); } diff --git a/code/game/game/menu.h b/code/game/game/menu.h new file mode 100644 index 0000000..5e8d7b2 --- /dev/null +++ b/code/game/game/menu.h @@ -0,0 +1,23 @@ +#pragma once + +void +menu_play(void); + +void +menu_quit(void); + +void +menu_options(void); + +void +menu_main(void); + +void +menu_exit(void); + +void +menu_update(input_t input, ui_menu_t* menu); + +void +menu_render(ui_menu_t* menu); + diff --git a/code/game/game/render.c b/code/game/game/render.c new file mode 100644 index 0000000..a7114b4 --- /dev/null +++ b/code/game/game/render.c @@ -0,0 +1,10 @@ +void +render_geo(void) +{ +} + +void +render_screen(void) +{ +} + diff --git a/code/game/game/render.h b/code/game/game/render.h new file mode 100644 index 0000000..556fb5f --- /dev/null +++ b/code/game/game/render.h @@ -0,0 +1,8 @@ +#pragma once + +void +render_geo(void); + +void +render_screen(void); + diff --git a/code/game/globals.inc b/code/game/globals.inc new file mode 100644 index 0000000..3ef9c6a --- /dev/null +++ b/code/game/globals.inc @@ -0,0 +1,4 @@ +memory_t* g_memory; +engine_t* g_engine; +game_t* g_game; + diff --git a/code/game/main.c b/code/game/main.c new file mode 100644 index 0000000..f6eb6ae --- /dev/null +++ b/code/game/main.c @@ -0,0 +1,497 @@ +#ifdef BUILD_RELEASE +#include "all.c" +#else +#include "common.h" +#endif + +typedef struct keystate { + int w; int a; int s; int d; + int up; int left; int down; int right; + int q; int e; + int enter; int space; int esc; int shift; + int f1; +} keystate_t; + +#ifdef BUILD_DEBUG +typedef struct debug { + time_t mod_time; + const char* lib_name; + void* lib_ptr; +} debug_t; + +void (*engine_reload)(memory_t*); +void (*engine_debug)(float, input_t, uint64_t, uint64_t, uint64_t); +void (*engine_startup)(memory_t*); +void (*engine_shutdown)(void); +void (*engine_update)(float, input_t, bool, bool*); +void (*engine_render)(void); +void (*engine_audio_callback)(void* userdata, uint8_t* stream, int len); +#endif + +int main(int argc, char* argv[]) +{ + (void)argc; (void)argv; + + { + int ret; + + ret = SDL_InitSubSystem(SDL_INIT_VIDEO); + if (ret != 0) { + fprintf(stderr, "Error initializing SDL Video subsystem: %s\n", SDL_GetError()); + exit(EXIT_FAILURE); + } + + ret = SDL_InitSubSystem(SDL_INIT_AUDIO); + if (ret != 0) { + fprintf(stderr, "Error initializing SDL Audio subsystem: %s\n", SDL_GetError()); + exit(EXIT_FAILURE); + } + } + + SDL_Window* window = NULL; + SDL_GLContext* context = NULL; + { + window = SDL_CreateWindow( + WINDOW_TITLE, + SDL_WINDOWPOS_CENTERED, SDL_WINDOWPOS_CENTERED, + WINDOW_WIDTH, WINDOW_HEIGHT, + SDL_WINDOW_OPENGL); + + if (window == NULL) { + fprintf(stderr, "Error creating SDL window: %s\n", SDL_GetError()); + exit(EXIT_FAILURE); + } + + SDL_GL_SetAttribute(SDL_GL_CONTEXT_PROFILE_MASK, SDL_GL_CONTEXT_PROFILE_CORE); + SDL_GL_SetAttribute(SDL_GL_CONTEXT_MAJOR_VERSION, 4); + SDL_GL_SetAttribute(SDL_GL_CONTEXT_MINOR_VERSION, 0); + context = SDL_GL_CreateContext(window); + + if (context == NULL) { + fprintf(stderr, "Error creating SDL GL context: %s\n", SDL_GetError()); + exit(EXIT_FAILURE); + } + + SDL_GL_SetSwapInterval(0); + gladLoadGL((GLADloadfunc)SDL_GL_GetProcAddress); + + SDL_SetRelativeMouseMode(SDL_TRUE); + SDL_ShowCursor(SDL_DISABLE); + glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); + } + + memory_t memory; + { + memory.engine.begin = calloc(ENGINE_MEMORY_SIZE, 1); + memory.engine.end = memory.engine.begin + ENGINE_MEMORY_SIZE; + memory.engine.current = memory.engine.begin; + if (memory.engine.begin == NULL) { + fprintf(stderr, "Error requesting %lu bytes for engine memory\n", ENGINE_MEMORY_SIZE); + exit(EXIT_FAILURE); + } + + memory.game.begin = calloc(GAME_MEMORY_SIZE, 1); + memory.game.end = memory.game.begin + GAME_MEMORY_SIZE; + memory.game.current = memory.game.begin; + if (memory.game.begin == NULL) { + fprintf(stderr, "Error requesting %lu bytes for game memory\n", GAME_MEMORY_SIZE); + exit(EXIT_FAILURE); + } + + memory.data1.begin = calloc(DATA1_MEMORY_SIZE, 1); + memory.data1.end = memory.data1.begin + DATA1_MEMORY_SIZE; + memory.data1.current = memory.data1.begin; + if (memory.data1.begin == NULL) { + fprintf(stderr, "Error requesting %lu bytes for data1 memory\n", DATA1_MEMORY_SIZE); + exit(EXIT_FAILURE); + } + + memory.data2.begin = calloc(DATA2_MEMORY_SIZE, 1); + memory.data2.end = memory.data2.begin + DATA2_MEMORY_SIZE; + memory.data2.current = memory.data2.begin; + if (memory.data2.begin == NULL) { + fprintf(stderr, "Error requesting %lu bytes for data2 memory\n", DATA2_MEMORY_SIZE); + exit(EXIT_FAILURE); + } + + memory.scratch.begin = calloc(SCRATCH_MEMORY_SIZE, 1); + memory.scratch.end = memory.scratch.begin + SCRATCH_MEMORY_SIZE; + memory.scratch.current = memory.scratch.begin ; + if (memory.scratch.begin == NULL) { + fprintf(stderr, "Error requesting %lu bytes for scratch memory\n", SCRATCH_MEMORY_SIZE); + exit(EXIT_FAILURE); + } + } + +#ifdef BUILD_DEBUG + debug_t debug = {0}; + { + const char* platform_str = SDL_GetPlatform(); + + if (strcmp(platform_str, "Windows") == 0) { + debug.lib_name = ".\\libgame.dll"; + } else { + debug.lib_name = "./libgame.so"; + } + + struct stat attrib; + stat(debug.lib_name, &attrib); + debug.mod_time = attrib.st_mtime; + + debug.lib_ptr = SDL_LoadObject(debug.lib_name); + if (debug.lib_ptr == NULL) { + fprintf(stderr, "Error loading game library: %s\n", SDL_GetError()); + exit(EXIT_FAILURE); + } + + engine_startup = SDL_LoadFunction(debug.lib_ptr, "engine_startup"); + if (engine_startup == NULL) { + fprintf(stderr, "Error loading startup function from game lib: %s\n", SDL_GetError()); + exit(EXIT_FAILURE); + } + + engine_shutdown = SDL_LoadFunction(debug.lib_ptr, "engine_shutdown"); + if (engine_shutdown == NULL) { + fprintf(stderr, "Error loading shutdown function from game lib: %s\n", SDL_GetError()); + exit(EXIT_FAILURE); + } + + engine_update = SDL_LoadFunction(debug.lib_ptr, "engine_update"); + if (engine_update == NULL) { + fprintf(stderr, "Error loading update function pointer from game lib: %s\n", SDL_GetError()); + exit(EXIT_FAILURE); + } + + engine_render = SDL_LoadFunction(debug.lib_ptr, "engine_render"); + if (engine_render == NULL) { + fprintf(stderr, "Error loading render function pointer from game lib: %s\n", SDL_GetError()); + exit(EXIT_FAILURE); + } + + engine_audio_callback = SDL_LoadFunction(debug.lib_ptr, "engine_audio_callback"); + if (engine_audio_callback == NULL) { + fprintf(stderr, "Error loading audio function pointer from game lib: %s\n", SDL_GetError()); + exit(EXIT_FAILURE); + } + + engine_debug = SDL_LoadFunction(debug.lib_ptr, "engine_debug"); + if (engine_debug == NULL) { + fprintf(stderr, "Error loading debug function pointer from game lib: %s\n", SDL_GetError()); + exit(EXIT_FAILURE); + } + + engine_reload = SDL_LoadFunction(debug.lib_ptr, "engine_reload"); + if (engine_reload == NULL) { + fprintf(stderr, "Error loading reload function pointer from game lib: %s\n", SDL_GetError()); + exit(EXIT_FAILURE); + } + + memory.debug.begin = calloc(DEBUG_MEMORY_SIZE, 1); + memory.debug.end = memory.debug.begin + DEBUG_MEMORY_SIZE; + memory.debug.current = memory.debug.begin ; + if (memory.debug.begin == NULL) { + fprintf(stderr, "Error requesting %lu bytes for debug memory\n", DEBUG_MEMORY_SIZE); + exit(EXIT_FAILURE); + } + } +#endif + + // Set up audio + SDL_AudioDeviceID audio_device; + SDL_AudioSpec audio_specs = {0}; + { + audio_specs.freq = 8000; + audio_specs.format = AUDIO_F32; + audio_specs.channels = 2; + audio_specs.samples = 256; + audio_specs.callback = engine_audio_callback; + audio_specs.userdata = &memory; + + SDL_AudioSpec have; + audio_device = SDL_OpenAudioDevice(NULL, 0, &audio_specs, &have, 0); + + // Un-pause + SDL_PauseAudioDevice(audio_device, 0); + } + + engine_startup(&memory); + + bool window_focus = true; + bool is_running = true; + keystate_t keystate_current = {0}; + keystate_t keystate_previous = {0}; + uint64_t previous_time = SDL_GetTicks64(); + while (is_running) + { + float dt; + uint16_t frame_time; + { + uint64_t current_time = SDL_GetTicks64(); + frame_time = current_time - previous_time; + if (frame_time < TARGET_FRAME_TIME) + { + uint64_t sleep_time = TARGET_FRAME_TIME - frame_time; + SDL_Delay(sleep_time); + + current_time = SDL_GetTicks64(); + frame_time = current_time - previous_time; + } + + previous_time = current_time; + dt = frame_time / 1000.0f; + } + + bool quit_requested = false; + { + SDL_Event e; + while (SDL_PollEvent(&e)) + { + if (e.type == SDL_QUIT) { + quit_requested = true; + } + else if (e.type == SDL_WINDOWEVENT) + { + if (e.window.event == SDL_WINDOWEVENT_FOCUS_LOST) + { + window_focus = false; + } + else if (e.window.event == SDL_WINDOWEVENT_FOCUS_GAINED) + { + window_focus = true; + } + } + else if (e.type == SDL_KEYDOWN || e.type == SDL_KEYUP) + { + switch (e.key.keysym.sym) + { + case SDLK_w: { + keystate_current.w = e.type; + } break; + case SDLK_a: { + keystate_current.a = e.type; + } break; + case SDLK_s: { + keystate_current.s = e.type; + } break; + case SDLK_d: { + keystate_current.d = e.type; + } break; + case SDLK_UP: { + keystate_current.up = e.type; + } break; + case SDLK_LEFT: { + keystate_current.left = e.type; + } break; + case SDLK_DOWN: { + keystate_current.down = e.type; + } break; + case SDLK_RIGHT: { + keystate_current.right = e.type; + } break; + case SDLK_e: { + keystate_current.e = e.type; + } break; + case SDLK_q: { + keystate_current.q = e.type; + } break; + case SDLK_RETURN: { + keystate_current.enter = e.type; + } break; + case SDLK_SPACE: { + keystate_current.space= e.type; + } break; + case SDLK_ESCAPE: { + keystate_current.esc = e.type; + } break; + case SDLK_LSHIFT: { + keystate_current.shift = e.type; + } break; + case SDLK_F1: { + keystate_current.f1= e.type; + } break; + } + } + } + } + + input_t input = {0}; + + SDL_GetRelativeMouseState(&input.mouse_x_delta, &input.mouse_y_delta); + + // Continuous inputs + if (keystate_current.w == SDL_KEYDOWN) { + input.forward = true; + } + + if (keystate_current.a == SDL_KEYDOWN) { + input.strafe_left = true; + } + + if (keystate_current.s == SDL_KEYDOWN) { + input.backward = true; + } + + if (keystate_current.d == SDL_KEYDOWN) { + input.strafe_right = true; + } + + // Debounced inputs + if (keystate_current.up == SDL_KEYDOWN) + { + if (keystate_current.up != keystate_previous.up) { + input.up = true; + } + } + + if (keystate_current.down == SDL_KEYDOWN) + { + if (keystate_current.down != keystate_previous.down) { + input.down = true; + } + } + + if (keystate_current.left == SDL_KEYDOWN) + { + if (keystate_current.left != keystate_previous.left) { + input.left = true; + } + } + + if (keystate_current.left == SDL_KEYDOWN) + { + if (keystate_current.left != keystate_previous.left) { + input.right = true; + } + } + + if (keystate_current.e == SDL_KEYDOWN) + { + if (keystate_current.e != keystate_previous.e) { + input.interact = true; + } + } + + if (keystate_current.enter == SDL_KEYDOWN) + { + if (keystate_current.enter != keystate_previous.enter) { + input.select = true; + } + } + + if (keystate_current.esc == SDL_KEYDOWN) + { + if (keystate_current.esc != keystate_previous.esc) { + input.pause = true; + } + } + +#ifdef BUILD_RELEASE + engine_update(dt, input, window_focus, &quit_requested); + engine_render(); +#else + // Continuous inputs + if (keystate_current.q == SDL_KEYDOWN) { + input.debug.down = true; + } + + if (keystate_current.e == SDL_KEYDOWN) { + input.debug.up = true; + } + + if (keystate_current.shift == SDL_KEYDOWN) { + input.debug.speed = true; + } + + // Debounced inputs + if (keystate_current.f1 == SDL_KEYDOWN) + { + if (keystate_current.f1 != keystate_previous.f1) { + input.debug.enable = true; + } + } + + { + struct stat attrib; + stat(debug.lib_name, &attrib); + time_t mod_time = attrib.st_mtime; + if (mod_time != debug.mod_time) + { + SDL_CloseAudioDevice(audio_device); + + SDL_UnloadObject(debug.lib_ptr); + debug.lib_ptr = NULL; + engine_debug= NULL; + engine_update = NULL; + engine_render = NULL; + engine_audio_callback = NULL; + engine_shutdown = NULL; + + // Failure here is likely the first few times while it attempts to load a library + // that has not finished compiling, so we let it fail and try again next time + debug.lib_ptr = SDL_LoadObject(debug.lib_name); + if (debug.lib_ptr) + { + debug.mod_time = mod_time; + engine_update = SDL_LoadFunction(debug.lib_ptr, "engine_update"); + engine_render = SDL_LoadFunction(debug.lib_ptr, "engine_render"); + engine_shutdown = SDL_LoadFunction(debug.lib_ptr, "engine_shutdown"); + engine_debug = SDL_LoadFunction(debug.lib_ptr, "engine_debug"); + engine_reload = SDL_LoadFunction(debug.lib_ptr, "engine_reload"); + engine_audio_callback = SDL_LoadFunction(debug.lib_ptr, "engine_audio_callback"); + + if (engine_audio_callback) + { + // Need to re-initialize the audio device so it gets the updated callback pointer + audio_specs.callback = engine_audio_callback; + + SDL_AudioSpec have; + audio_device = SDL_OpenAudioDevice(NULL, 0, &audio_specs, &have, 0); + + SDL_PauseAudioDevice(audio_device, 0); + } + } + } + } + + if (engine_update && engine_render && engine_debug && engine_reload) + { + engine_reload(&memory); + + uint64_t update_time; + { + uint64_t pre_time = SDL_GetTicks64(); + engine_update(dt, input, window_focus, &quit_requested); + uint64_t post_time = SDL_GetTicks64(); + update_time = post_time - pre_time; + } + + uint16_t render_time; + { + uint64_t pre_time = SDL_GetTicks64(); + engine_render(); + uint64_t post_time = SDL_GetTicks64(); + render_time = post_time - pre_time; + } + + engine_debug(dt, input, update_time, render_time, frame_time); + } +#endif + + keystate_previous = keystate_current; + is_running = !quit_requested; + + SDL_GL_SwapWindow(window); + } + + engine_shutdown(); + +#ifdef BUILD_DEBUG + SDL_UnloadObject(debug.lib_ptr); +#endif + SDL_QuitSubSystem(SDL_INIT_AUDIO); + SDL_QuitSubSystem(SDL_INIT_VIDEO); + SDL_Quit(); + + return EXIT_SUCCESS; +} + diff --git a/code/shaders/geo.glsl b/code/shaders/geo.glsl index 627daac..2ece8f8 100644 --- a/code/shaders/geo.glsl +++ b/code/shaders/geo.glsl @@ -29,77 +29,58 @@ void main() #ifdef FRAGMENT +#define MAX_LIGHT_COUNT 30 + +struct light_t { + vec3 position; + vec3 color; + float intensity; + float radius; +}; + in vec3 v_fragpos; in vec2 v_texcoord; in vec3 v_normal; out vec4 f_color; -struct light_t { - vec3 position; - vec3 color; - float intensity; -}; - uniform sampler2D u_texture; -uniform float u_texture_alpha; -uniform int u_is_emitter; uniform int u_light_count; -uniform float u_uv_scale; -uniform vec2 u_uv_translation; -uniform float u_powerup_timer; -uniform float u_ambient_adjust; -uniform light_t u_lights[30]; +uniform light_t u_lights[MAX_LIGHT_COUNT]; -const float START_TIMER = 15.0f; -const float START_ALPHA = 0.25f; -const float TIMER_STEPS = (1.0f-START_ALPHA) / START_TIMER; +float attenuate(float dist, float radius) +{ + float val = 1.0f - ((dist*dist)/(radius*radius)); + + return clamp(val, 0.0f, 1.0f); +} vec3 calc_light(light_t light, vec3 frag_normal, vec3 frag_pos) { - const float ambient_strength = 0.5f; - const float atten_constant = 1.0f; - const float atten_linear = 0.05f; - const float atten_quadratic = 20.0f; - vec3 light_dir = normalize(light.position - frag_pos); + float distance = length(light.position-frag_pos); + vec3 light_color = light.color * light.intensity * attenuate(distance, light.radius); - float distance = length(light.position - frag_pos); - float attenuation = 1.0f / (atten_constant + atten_linear * distance + - atten_quadratic * (distance * distance)); + vec3 diffuse = light_color * max(dot(normalize(frag_normal), light_dir), 0.0f); - vec3 ambient = attenuation * vec3(ambient_strength); - vec3 diffuse = attenuation * light.intensity * light.color * max(dot(normalize(frag_normal), light_dir), 0.0f); - - return ambient + diffuse; + return diffuse; } void main() { - vec3 light = vec3(0.05f); - if (u_is_emitter == 1) + vec3 ambient_light = vec3(0.05f); + vec3 frag_normal = normalize(v_normal); + vec3 diffuse_light = vec3(0.0f); + + for (int i = 0; i < u_light_count; i++) { - light = vec3(u_ambient_adjust); - } - else - { - for (int i = 0; i < u_light_count; i++) - { - light += calc_light(u_lights[i], v_normal, v_fragpos); - } + diffuse_light += calc_light(u_lights[i], frag_normal, v_fragpos); } - vec2 texcoord = v_texcoord + (u_uv_translation * u_uv_scale); - vec4 tex = texture(u_texture, texcoord); - tex.a *= u_texture_alpha; + vec4 total_light = vec4(ambient_light + diffuse_light, 1.0f); - f_color = tex * vec4(light, 1.0f); - - if (u_powerup_timer > 0.0f) - { - float timer = u_powerup_timer / 100.0f; - f_color = vec4(f_color.rgb, START_ALPHA + (TIMER_STEPS*(START_TIMER-u_powerup_timer))); - } + vec4 tex_color = texture(u_texture, v_texcoord); + f_color = total_light * tex_color; } #endif diff --git a/code/shaders/screen.glsl b/code/shaders/screen.glsl index b32cc67..bd0c5b7 100644 --- a/code/shaders/screen.glsl +++ b/code/shaders/screen.glsl @@ -24,30 +24,13 @@ in vec2 v_texcoord; out vec4 f_color; uniform sampler2D u_texture; -uniform float u_powerup_timer; -const float START_TIMER = 15.0f; -const float START_R = 1.20f; -const float START_GB = 0.80f; -const float TIMER_STEPS_R = (START_R-1.0f) / START_TIMER; -const float TIMER_STEPS_GB = (1.0f-START_GB) / START_TIMER; +const float gamma = 2.2f; void main() { vec4 color = texture(u_texture, v_texcoord); - float gamma = 2.2f; - if (u_powerup_timer > 0.0f) - { - float timer = u_powerup_timer / 100.0f; - vec3 tint = vec3( - START_R - (TIMER_STEPS_R*(START_TIMER-u_powerup_timer)), - START_GB + (TIMER_STEPS_GB*(START_TIMER-u_powerup_timer)), - START_GB + (TIMER_STEPS_GB*(START_TIMER-u_powerup_timer))); - - color.rgb *= tint; - } - f_color = vec4(pow(color.rgb, vec3(1.0f/gamma)), color.a); } diff --git a/code/src/all.c b/code/src/all.c deleted file mode 100644 index 258cc2c..0000000 --- a/code/src/all.c +++ /dev/null @@ -1,26 +0,0 @@ -// Shared with platform layer -#include "common.h" - -// Engine -#include "engine/globals.inc" -#include "engine/font.inc" -#include "engine/math.c" -#include "engine/logger.c" -#include "engine/memory.c" -#include "engine/hash.c" -#include "engine/asset_mgr.c" -#include "engine/audio_mgr.c" -#include "engine/node.c" -#include "engine/camera.c" -#include "engine/renderer.c" -#include "engine/ui.c" -#include "engine.c" - -// Game -#include "game/data.c" -#include "game/logic.c" -#include "game/menu.c" -#include "game/render.c" -#include "game/debug.c" -#include "game.c" - diff --git a/code/src/engine.c b/code/src/engine.c deleted file mode 100644 index f465c2a..0000000 --- a/code/src/engine.c +++ /dev/null @@ -1,6 +0,0 @@ -typedef struct engine { - asset_mgr_t asset_mgr; - audio_mgr_t audio_mgr; - render_mgr_t render_mgr; -} engine_t; - diff --git a/code/src/engine/asset_mgr.c b/code/src/engine/asset_mgr.c deleted file mode 100644 index 2cdf44a..0000000 --- a/code/src/engine/asset_mgr.c +++ /dev/null @@ -1,173 +0,0 @@ -enum { - MAX_NAME_LENGTH = 64, - MAX_MESH_COUNT = 128, - MAX_MATERIAL_COUNT = 128, - MAX_MUSIC_COUNT = 128, - MAX_SFX_COUNT = 128 -}; - -typedef uint32_t handle_t; - -typedef struct mesh { - char name[MAX_NAME_LENGTH]; - GLuint vao, vbo, ebo; - uint16_t index_count; - handle_t material; -} mesh_t; - -typedef struct material { - char name[MAX_NAME_LENGTH]; - GLuint texture; -} material_t; - -typedef struct wav { - char name[MAX_NAME_LENGTH]; - uint32_t byte_count; - uint32_t sample_rate; - float volume; - float* data; -} wav_t; - -typedef struct asset_mgr { - struct { - hash_t hash; - size_t count; - mesh_t data[MAX_MESH_COUNT]; - } meshes; - - struct { - hash_t hash; - size_t count; - material_t data[MAX_MATERIAL_COUNT]; - } materials; - - struct { - hash_t hash; - size_t count; - wav_t data[MAX_MUSIC_COUNT]; - } music; - - struct { - hash_t hash; - size_t count; - wav_t data[MAX_SFX_COUNT]; - } sfx; -} asset_mgr_t; - -void -asset_mgr_startup(void) -{ - g_asset_mgr->meshes.hash = hash_create(NEAREST_PRIME_256, sizeof(handle_t)); - g_asset_mgr->materials.hash = hash_create(NEAREST_PRIME_256, sizeof(handle_t)); - g_asset_mgr->music.hash = hash_create(NEAREST_PRIME_256, sizeof(handle_t)); - g_asset_mgr->sfx.hash = hash_create(NEAREST_PRIME_256, sizeof(handle_t)); -} - -void -insert_mesh(mesh_t mesh) -{ - handle_t handle = g_asset_mgr->meshes.count; - - g_asset_mgr->meshes.data[handle] = mesh; - hash_add(&g_asset_mgr->meshes.hash, HASH_CSTR(mesh.name), &handle); - - g_asset_mgr->meshes.count++; -} - -void -insert_material(material_t material) -{ - handle_t handle = g_asset_mgr->materials.count; - - g_asset_mgr->materials.data[handle] = material; - hash_add(&g_asset_mgr->materials.hash, HASH_CSTR(material.name), &handle); - - g_asset_mgr->materials.count++; -} - -void -insert_music(wav_t music) -{ - handle_t handle = g_asset_mgr->music.count; - - g_asset_mgr->music.data[handle] = music; - hash_add(&g_asset_mgr->music.hash, HASH_CSTR(music.name), &handle); - - g_asset_mgr->music.count++; -} - -void -insert_sfx(wav_t sfx) -{ - handle_t handle = g_asset_mgr->sfx.count; - - g_asset_mgr->sfx.data[handle] = sfx; - hash_add(&g_asset_mgr->sfx.hash, HASH_CSTR(sfx.name), &handle); - - g_asset_mgr->sfx.count++; -} - -mesh_t* -get_mesh_by_name(const char* name) -{ - handle_t* handle = (handle_t*)hash_get(g_asset_mgr->meshes.hash, HASH_CSTR(name)); - - mesh_t* result = &g_asset_mgr->meshes.data[*handle]; - return result; -} - -mesh_t* -get_mesh_by_handle(handle_t handle) -{ - mesh_t* result = &g_asset_mgr->meshes.data[handle]; - return result; -} - -material_t* -get_material_by_name(const char* name) -{ - handle_t* handle = (handle_t*)hash_get(g_asset_mgr->materials.hash, HASH_CSTR(name)); - - material_t* result = &g_asset_mgr->materials.data[*handle]; - return result; -} - -material_t* -get_material_by_handle(handle_t handle) -{ - material_t* result = &g_asset_mgr->materials.data[handle]; - return result; -} - -wav_t* -get_music_by_name(const char* name) -{ - handle_t* handle = (handle_t*)hash_get(g_asset_mgr->music.hash, HASH_CSTR(name)); - - wav_t* result = &g_asset_mgr->music.data[*handle]; - return result; -} - -wav_t* -get_music_by_handle(handle_t handle) -{ - wav_t* result = &g_asset_mgr->music.data[handle]; - return result; -} - -wav_t* -get_sfx_by_name(const char* name) -{ - handle_t* handle = (handle_t*)hash_get(g_asset_mgr->sfx.hash, HASH_CSTR(name)); - - wav_t* result = &g_asset_mgr->sfx.data[*handle]; - return result; -} - -wav_t* -get_sfx_by_handle(handle_t handle) -{ - wav_t* result = &g_asset_mgr->sfx.data[handle]; - return result; -} - diff --git a/code/src/engine/audio_mgr.c b/code/src/engine/audio_mgr.c deleted file mode 100644 index e74dbd8..0000000 --- a/code/src/engine/audio_mgr.c +++ /dev/null @@ -1,174 +0,0 @@ -enum { MAX_SOUND_COUNT = 10 }; - -const int INVALID_INDEX = -1; -const int INVALID_HANDLE = -1; - -typedef struct audio_source { - vec3 position; - unsigned int cursor; - bool stereo; - bool is_looping; - wav_t* wav; -} audio_source_t; - -typedef struct audio_listener { - vec3 position; - vec3 front; - vec3 up; -} audio_listener_t; - -typedef struct audio_mgr { - int sound_count; - audio_listener_t listener; - audio_source_t sources[MAX_SOUND_COUNT]; - int index_to_handle_map[MAX_SOUND_COUNT]; - int handle_to_index_map[MAX_SOUND_COUNT]; -} audio_mgr_t; - -void -audio_mgr_startup(void) -{ - for (int i = 0; i < MAX_SOUND_COUNT; i++) - { - g_audio_mgr->handle_to_index_map[i] = INVALID_INDEX; - g_audio_mgr->index_to_handle_map[i] = INVALID_HANDLE; - } -} - -int -play_sound(audio_source_t sound) -{ - int handle = INVALID_HANDLE; - - if (g_audio_mgr->sound_count < MAX_SOUND_COUNT) - { - // Find free handle - for (int i = 0; i < MAX_SOUND_COUNT; i++) - { - if (g_audio_mgr->handle_to_index_map[i] == INVALID_INDEX) - { - handle = i; - break; - } - } - - // Put new entry at end and update the maps - if (handle != INVALID_HANDLE) - { - size_t new_index = g_audio_mgr->sound_count; - g_audio_mgr->handle_to_index_map[handle] = new_index; - g_audio_mgr->index_to_handle_map[new_index] = handle; - g_audio_mgr->sources[new_index] = sound; - g_audio_mgr->sound_count++; - } - } - - return handle; -} - -void -stop_sound(int handle) -{ - // Copy element at end into deleted element's place to maintain density - int stopped_audio_index = g_audio_mgr->handle_to_index_map[handle]; - size_t last_element_index = g_audio_mgr->sound_count - 1; - g_audio_mgr->sources[stopped_audio_index] = g_audio_mgr->sources[last_element_index]; - - // Update maps to point to new locations - int last_element_handle = g_audio_mgr->index_to_handle_map[last_element_index]; - g_audio_mgr->handle_to_index_map[last_element_handle] = stopped_audio_index; - g_audio_mgr->index_to_handle_map[stopped_audio_index] = last_element_handle; - - // Mark invalid - g_audio_mgr->handle_to_index_map[handle] = INVALID_INDEX; - g_audio_mgr->index_to_handle_map[last_element_index] = INVALID_HANDLE; - - g_audio_mgr->sound_count--; -} - -void -update_sound_position(int handle, vec3 position) -{ - int index = g_audio_mgr->handle_to_index_map[handle]; - - if (index != INVALID_INDEX) - { - g_audio_mgr->sources[index].position = position; - } -} - -void -fill_audio_buffer(uint8_t* buffer, int len) -{ - // Fill with silence ahead of time - memset(buffer, 0, len); - - int stop_count = 0; - int stop_sources[MAX_SOUND_COUNT] = {INVALID_HANDLE}; - - for (int i = 0; i < g_audio_mgr->sound_count; i++) - { - audio_source_t* sound = &g_audio_mgr->sources[i]; - - int audio_bytes_remaining = sound->wav->byte_count - sound->cursor; - int bytes_to_fill = (len < audio_bytes_remaining) ? len : audio_bytes_remaining; - int samples_to_fill = bytes_to_fill / sizeof(*sound->wav->data); - - float* data = (float*)((uint8_t*)sound->wav->data + sound->cursor); - float* buf = (float*)buffer; - - // Calculate angle from listener to source - float right_gain = sound->wav->volume; - float left_gain = sound->wav->volume; - - if (sound->stereo) - { - vec3 listener_right = vec3_cross(g_audio_mgr->listener.front, g_audio_mgr->listener.up); - vec3 listener_left = vec3_negate(listener_right); - vec3 target = vec3_sub(sound->position, g_audio_mgr->listener.position); - - float attenuation = 1.0f / vec3_length(target); - if (attenuation < 0.1f) { - attenuation = 0.0f; - } else if (attenuation > 1.0f) { - attenuation = 1.0f; - } - - float length_squared = vec3_length(listener_left) * vec3_length(target); - float angle_left = RAD_TO_DEG(acosf(vec3_dot(listener_left, target)/length_squared)); - float angle_right = RAD_TO_DEG(acosf(vec3_dot(listener_right, target)/length_squared)); - - left_gain *= (angle_right/180.0f) * attenuation; - right_gain *= (angle_left/180.0f) * attenuation; - } - - for (int j = 0; j < samples_to_fill; j+=2) - { - // Left channel - *buf += *data * left_gain; - buf++; - data++; - - // Right channel - *buf += *data * right_gain; - buf++; - data++; - } - - sound->cursor += bytes_to_fill; - - if (sound->cursor >= sound->wav->byte_count) - { - if (sound->is_looping) { - sound->cursor = 0; - } else { - stop_sources[stop_count++] = g_audio_mgr->index_to_handle_map[i]; - } - } - } - - for (int i = 0; i < stop_count; i++) { - stop_sound(stop_sources[i]); - } -} - diff --git a/code/src/engine/globals.inc b/code/src/engine/globals.inc deleted file mode 100644 index e36e153..0000000 --- a/code/src/engine/globals.inc +++ /dev/null @@ -1,13 +0,0 @@ -struct asset_mgr; -struct audio_mgr; -struct render_mgr; -struct game; -struct engine; - -memory_t* g_memory; -struct engine* g_engine; -struct game* g_game; -struct asset_mgr* g_asset_mgr; -struct audio_mgr* g_audio_mgr; -struct render_mgr* g_render_mgr; - diff --git a/code/src/engine/memory.c b/code/src/engine/memory.c deleted file mode 100644 index 1563fe6..0000000 --- a/code/src/engine/memory.c +++ /dev/null @@ -1,47 +0,0 @@ -void* -engine_mem_alloc(size_t count, size_t size) -{ - size_t total_size = count * size; - - LOG_ASSERT(g_memory->engine.current + total_size < g_memory->engine.end, - "Exceeded bounds of engine memory by %d bytes", - g_memory->engine.current + total_size - g_memory->engine.end); - - void* result = g_memory->engine.current; - g_memory->engine.current += total_size; - - return result; -} - -void* -game_mem_alloc(size_t count, size_t size) -{ - size_t total_size = count * size; - - LOG_ASSERT(g_memory->game.current + total_size < g_memory->game.end, - "Exceeded bounds of game memory by %d bytes", - g_memory->game.current + total_size - g_memory->game.end); - - void* result = g_memory->game.current; - g_memory->game.current += total_size; - - return result; -} - -void* -scratch_mem_alloc(size_t count, size_t size) -{ - size_t total_size = count * size; - - // Reset to beginning, overwriting old stale data - if (g_memory->scratch.current + total_size > g_memory->scratch.end) { - LOG_DEBUG("Transient memory reset to beginning"); - g_memory->scratch.current = g_memory->scratch.begin; - } - - void* result = g_memory->scratch.current; - g_memory->scratch.current += total_size; - - return result; -} - diff --git a/code/src/engine/node.c b/code/src/engine/node.c deleted file mode 100644 index a586c43..0000000 --- a/code/src/engine/node.c +++ /dev/null @@ -1,59 +0,0 @@ -enum { MAX_NODE_CHILDREN = 3 }; - -typedef struct transform { - vec3 position; - vec3 rotation; - vec3 scale; -} transform_t; - -typedef struct node { - transform_t transform; - int parent; - int children[MAX_NODE_CHILDREN]; - mat4 matrix; - mat4 rotation; -} node_t; - -mat4 -calc_matrix(node_t* node, transform_t transform) -{ - mat4 translation = mat4_identity(); - translation.e03 = transform.position.x; - translation.e13 = transform.position.y; - translation.e23 = transform.position.z; - - mat4 rotation = node->rotation; - - mat4 scale = mat4_identity(); - scale.e00 = transform.scale.x; - scale.e11 = transform.scale.y; - scale.e22 = transform.scale.z; - - mat4 result = mat4_multm(rotation, scale); - result = mat4_multm(translation, result); - - return result; -} - -void -update_node(node_t* nodes, node_t* node) -{ - if (node->parent != -1) - { - node_t* parent = &nodes[node->parent]; - - node->matrix = mat4_multm(parent->matrix, calc_matrix(node, node->transform)); - } - else - { - node->matrix = calc_matrix(node, node->transform); - } - - for (int i = 0; i < MAX_NODE_CHILDREN; i++) - { - if (node->children[i] != -1) - { - update_node(nodes, &nodes[node->children[i]]); - } - } -} diff --git a/code/src/game.c b/code/src/game.c deleted file mode 100644 index e456873..0000000 --- a/code/src/game.c +++ /dev/null @@ -1,277 +0,0 @@ -void -game_startup(memory_t* memory) -{ - if (SDL_BYTEORDER != SDL_LIL_ENDIAN) - { - LOG_ERROR("Machine is Big Endian; expected Little Endian."); - exit(EXIT_FAILURE); - } - - g_memory = memory; - - engine_t* engine = engine_mem_alloc(1, sizeof(*engine)); - g_engine = engine; - - game_t* game = game_mem_alloc(1, sizeof(*game)); - g_game = game; - - g_asset_mgr = &engine->asset_mgr; - g_audio_mgr = &engine->audio_mgr; - g_render_mgr = &engine->render_mgr; - - asset_mgr_startup(); - audio_mgr_startup(); - render_mgr_startup(); - - // Load data - game->data = data_load("data.bin"); - data_t* data = &game->data; - state_t* state = &game->state; - ui_t* ui = &game->ui; - - state->mode = MODE_MAIN_MENU; - state->mode_last = MODE_MAIN_MENU; - - // Set up menus - ui->main_menu = (ui_menu_t){ - .widget_count = 3, - .widgets = { - {"Play", WINDOW_WIDTH/2, WINDOW_HEIGHT/2, menu_play}, - {"Options", WINDOW_WIDTH/2, WINDOW_HEIGHT/2 + 40, menu_options}, - {"Quit", WINDOW_WIDTH/2, WINDOW_HEIGHT/2 + 80, menu_quit}}, - }; - - ui->pause_menu = (ui_menu_t){ - .widget_count = 3, - .widgets = { - {"Resume", WINDOW_WIDTH/2, WINDOW_HEIGHT/2, menu_play}, - {"Options", WINDOW_WIDTH/2, WINDOW_HEIGHT/2 + 40, menu_options}, - {"Quit", WINDOW_WIDTH/2, WINDOW_HEIGHT/2 + 80, menu_quit}}, - }; - - ui->options_menu = (ui_menu_t){ - .widget_count = 1, - .widgets = { - {"Exit", WINDOW_WIDTH/2, WINDOW_HEIGHT/2, menu_exit}}, - }; - - // Create systems - state->camera = camera_create((vec3){28.0f, 29.0f, 1.0f}); - - audio_source_t audio_source = { - .wav = get_sfx_by_name("SFX_Enemy"), - .is_looping = true, - .stereo = true}; - - // Set up world - state->skulls[0].tile_pos.x = 1; - state->skulls[0].tile_pos.y = 1; - state->skulls[0].front = (vec3){0.0f, 1.0f, 0.0f}; - audio_source.position = (vec3){ - state->skulls[0].tile_pos.x*2.0f+1.0f, - state->skulls[0].tile_pos.y*2.0f+1.0f, - 1.0f}; - state->skulls[0].audio_source_handle = play_sound(audio_source); - - state->skulls[1].tile_pos.x = 26; - state->skulls[1].tile_pos.y = 1; - state->skulls[1].front = (vec3){0.0f, 1.0f, 0.0f}; - audio_source.position = (vec3){ - state->skulls[1].tile_pos.x*2.0f+1.0f, - state->skulls[1].tile_pos.y*2.0f+1.0f, - 1.0f}; - state->skulls[1].audio_source_handle = play_sound(audio_source); - - state->skulls[2].tile_pos.x = 1; - state->skulls[2].tile_pos.y = 29; - state->skulls[2].front = (vec3){0.0f, -1.0f, 0.0f}; - audio_source.position = (vec3){ - state->skulls[2].tile_pos.x*2.0f+1.0f, - state->skulls[2].tile_pos.y*2.0f+1.0f, - 1.0f}; - state->skulls[2].audio_source_handle = play_sound(audio_source); - - state->skulls[3].tile_pos.x = 26; - state->skulls[3].tile_pos.y = 29; - state->skulls[3].front = (vec3){0.0f, -1.0f, 0.0f}; - audio_source.position = (vec3){ - state->skulls[3].tile_pos.x*2.0f+1.0f, - state->skulls[3].tile_pos.y*2.0f+1.0f, - 1.0f}; - state->skulls[3].audio_source_handle = play_sound(audio_source); - - state->nodes[0] = (node_t){ - .transform = (transform_t){(vec3){28.0f, 33.0f, 1.5f}, (vec3){0.0f, 0.0f, 0.0f}, (vec3){0.5f, 0.5f, 0.5f}}, - .parent = -1, - .children = {1, 2, 3}, - .matrix = mat4_identity(), - .rotation = mat4_identity()}; - - state->nodes[1] = (node_t){ - .transform = (transform_t){(vec3){-0.5f, 0.0f, 0.0f}, (vec3){0.0f, 0.0f, 0.0f}, (vec3){1.0f, 1.0f, 1.0f}}, - .parent = 0, - .children = {-1, -1, -1}, - .matrix = mat4_identity(), - .rotation = mat4_identity()}; - - state->nodes[2] = (node_t){ - .transform = (transform_t){(vec3){0.0f, 0.0f, 0.0f}, (vec3){0.0f, 0.0f, 0.0f}, (vec3){1.0f, 1.0f, 1.0f}}, - .parent = 0, - .children = {-1, -1, -1}, - .matrix = mat4_identity(), - .rotation = mat4_identity()}; - - state->nodes[3] = (node_t){ - .transform = (transform_t){(vec3){0.5f, 0.0f, 0.0f}, (vec3){0.0f, 0.0f, 0.0f}, (vec3){1.0f, 1.0f, 1.0f}}, - .parent = 0, - .children = {-1, -1, -1}, - .matrix = mat4_identity(), - .rotation = mat4_identity()}; - - // Initalize footsteps - state->footstep_timer = FOOTSTEP_TIMER; - state->footstep_cycle = false; - - // Create a copy of the game items so we can restore the original layout on new game/level - state->coin_count = data->items.coin_count; - state->eyeball_count = data->items.eyeball_count; - state->coins = game_mem_alloc(data->items.coin_count, sizeof(*state->coins)); - state->eyeballs = game_mem_alloc(data->items.eyeball_count, sizeof(*state->eyeballs)); - memcpy(state->coins, data->items.coins, data->items.coin_count * sizeof(*data->items.coins)); - - for (int i = 0; i < state->eyeball_count; i++) - { - state->eyeballs[i].transform = data->items.eyeballs[i]; - state->eyeballs[i].used = false; - } - - g_audio_mgr->listener.position = state->camera.position; - g_audio_mgr->listener.front = state->camera.front; - g_audio_mgr->listener.up = WORLD_UP; - - audio_source_t creepy_music = { - .wav = get_music_by_name("MUS_Ambience"), - .is_looping = true}; - - state->background_music_handle = play_sound(creepy_music); - - audio_source_t enemy_sfx = { - .position = {28.0f, 33.0f, 1.0f}, - .wav = get_sfx_by_name("SFX_SafeZone"), - .stereo = true, - .is_looping = true}; - - play_sound(enemy_sfx); -} - -void -game_shutdown(void) -{ -} - -void -game_update(memory_t* memory, float dt, input_t input, bool* quit_requested) -{ - // Re-cache memory pointer in case of DLL reload - g_memory = memory; - - engine_t* engine = (engine_t*)memory->engine.begin; - game_t* game = (game_t*)memory->game.begin; - state_t* state = &game->state; - ui_t* ui = &game->ui; - - // Re-cache - g_game = game; - g_asset_mgr = &engine->asset_mgr; - g_audio_mgr = &engine->audio_mgr; - g_render_mgr = &engine->render_mgr; - - state->time += dt; - - if (input.pause && input.pause != state->input_prev.pause) - { - state->mode = MODE_PAUSE; - } - - switch (state->mode) - { - case MODE_MAIN_MENU: - { - menu_update(input, &ui->main_menu); - } break; - case MODE_OPTIONS: - { - menu_update(input, &ui->options_menu); - } break; - case MODE_PAUSE: - { - menu_update(input, &ui->pause_menu); - } break; - case MODE_PLAY: - { - play(dt, input); - } break; - case MODE_QUIT: - { - *quit_requested = true; - } - default: break; - } - - state->input_prev = input; -} - -void -game_render(void) -{ - state_t* state = &g_game->state; - ui_t* ui = &g_game->ui; - - reload_shaders(); - - switch (state->mode) - { - case MODE_MAIN_MENU: - { - menu_render(&ui->main_menu); - } break; - case MODE_OPTIONS: - { - menu_render(&ui->options_menu); - } break; - case MODE_PAUSE: - { - menu_render(&ui->pause_menu); - } break; - case MODE_PLAY: - { - render_geo(); - render_screen(); - } break; - default: break; - } -} - -void -game_debug(uint64_t update_time, uint64_t render_time, uint64_t frame_time) -{ - state_t* state = &g_game->state; - - switch (state->mode) - { - case MODE_PLAY: - { - debug(update_time, render_time, frame_time); - } break; - default: break; - } -} - -void -game_audio_callback(void* userdata, uint8_t* stream, int len) -{ - (void)userdata; (void)stream; (void)len; - - fill_audio_buffer(stream, len); -} - diff --git a/code/src/game/data.c b/code/src/game/data.c deleted file mode 100644 index 907ddc2..0000000 --- a/code/src/game/data.c +++ /dev/null @@ -1,370 +0,0 @@ -enum {WALL_COUNT = 64}; -enum {TILE_COUNT = 32}; - -typedef struct data { - struct { - transform_t* coins; - transform_t* eyeballs; - transform_t* pedestals; - int coin_count; - int eyeball_count; - int pedestal_count; - } items; - struct { - transform_t hundreds; - transform_t tens; - transform_t ones; - transform_t coin; - aabb_t collider; - } score; - size_t wall_count; - aabb_t walls[WALL_COUNT]; - uint32_t tiles[TILE_COUNT]; -} data_t; - -mesh_t -mesh_load(SDL_RWops* ops) -{ - struct vertex { - vec3 position; - vec3 normal; - vec2 texcoord; - }; - - uint16_t material_idx; - { - SDL_RWread(ops, &material_idx, sizeof(material_idx), 1); - } - - GLuint ebo; - uint16_t index_count; - { - SDL_RWread(ops, &index_count, sizeof(index_count), 1); - uint16_t* indices = scratch_mem_alloc(index_count, sizeof(*indices)); - SDL_RWread(ops, indices, sizeof(*indices), index_count); - - glGenBuffers(1, &ebo); - glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, ebo); - glBufferData( - GL_ELEMENT_ARRAY_BUFFER, - index_count * sizeof(*indices), - indices, - GL_STATIC_DRAW); - } - - GLuint vbo; - { - uint16_t vertex_count; - SDL_RWread(ops, &vertex_count, sizeof(vertex_count), 1); - - struct vertex* vertices = scratch_mem_alloc(vertex_count, sizeof(*vertices)); - SDL_RWread(ops, vertices, sizeof(*vertices), vertex_count); - - glGenBuffers(1, &vbo); - glBindBuffer(GL_ARRAY_BUFFER, vbo); - glBufferData( - GL_ARRAY_BUFFER, - vertex_count * sizeof(*vertices), - vertices, - GL_STATIC_DRAW); - } - - GLuint vao; - { - glGenVertexArrays(1, &vao); - glBindVertexArray(vao); - glBindBuffer(GL_ARRAY_BUFFER, vbo); - glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, ebo); - - glEnableVertexAttribArray(0); - glVertexAttribPointer(0, 3, GL_FLOAT, GL_FALSE, sizeof(struct vertex), (void*)offsetof(struct vertex, position)); - - glEnableVertexAttribArray(1); - glVertexAttribPointer(1, 3, GL_FLOAT, GL_FALSE, sizeof(struct vertex), (void*)offsetof(struct vertex, normal)); - - glEnableVertexAttribArray(2); - glVertexAttribPointer(2, 2, GL_FLOAT, GL_FALSE, sizeof(struct vertex), (void*)offsetof(struct vertex, texcoord)); - - glBindVertexArray(0); - glBindBuffer(GL_ARRAY_BUFFER, 0); - glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, 0); - } - - mesh_t result = { - .vao = vao, - .vbo = vbo, - .ebo = ebo, - .index_count = index_count, - .material = material_idx}; - - return result; -} - -material_t -material_load(SDL_RWops* ops) -{ - GLuint texture; - { - uint16_t width; - SDL_RWread(ops, &width, sizeof(width), 1); - - uint16_t height; - SDL_RWread(ops, &height, sizeof(height), 1); - - uint8_t channel_count; - SDL_RWread(ops, &channel_count, sizeof(channel_count), 1); - - uint8_t* data = scratch_mem_alloc(width * height * channel_count, sizeof(*data)); - SDL_RWread(ops, data, sizeof(*data), width * height * channel_count); - - glGenTextures(1, &texture); - glBindTexture(GL_TEXTURE_2D, texture); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST); - glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, width, height, 0, GL_RGBA, GL_UNSIGNED_BYTE, data); - } - - material_t result = { - .texture = texture}; - - return result; -} - -wav_t -wav_load(SDL_RWops* ops) -{ - uint32_t length; - SDL_RWread(ops, &length, sizeof(length), 1); - - uint32_t sample_rate; - SDL_RWread(ops, &sample_rate, sizeof(sample_rate), 1); - - uint8_t channel_count; - SDL_RWread(ops, &channel_count, sizeof(channel_count), 1); - - float volume; - SDL_RWread(ops, &volume, sizeof(volume), 1); - - bool is_looping; - SDL_RWread(ops, &is_looping, sizeof(is_looping), 1); - - size_t size = length * channel_count; - float* wav_data = engine_mem_alloc(size, sizeof(*wav_data)); - SDL_RWread(ops, wav_data, sizeof(*wav_data), size); - - int byte_count = length * channel_count * sizeof(*wav_data); - - wav_t result = { - .data = wav_data, - .byte_count = byte_count, - .sample_rate = sample_rate, - .volume = volume}; - - return result; -} - -data_t -data_load(const char* path) -{ - SDL_RWops* ops = SDL_RWFromFile(path, "rb"); - if (ops == NULL) - { - LOG_ERROR("Error opening file %s: %s", path, SDL_GetError()); - exit(EXIT_FAILURE); - } - - { - char magic[4]; - SDL_RWread(ops, magic, sizeof(magic), 1); - if (magic[0] != 'A' || magic[1] != 'J' || magic[2] != 'M' || magic[3] != '\0') { - LOG_ERROR("%s has an invalid format", path); - exit(EXIT_FAILURE); - } - } - - data_t result = {0}; - - { - uint16_t count; - SDL_RWread(ops, &count, sizeof(count), 1); - LOG_DEBUG("Load %d meshes", count); - - for (int i = 0; i < count; i++) - { - uint16_t name_length; - SDL_RWread(ops, &name_length, sizeof(name_length), 1); - - char* name = scratch_mem_alloc(name_length, sizeof(*name)); - SDL_RWread(ops, name, sizeof(*name), name_length); - LOG_ASSERT(name_length < MAX_NAME_LENGTH, "Name of mesh is too long: %s", name); - - mesh_t mesh = mesh_load(ops); - strncpy(mesh.name, name, name_length); - insert_mesh(mesh); - } - } - - { - uint16_t count; - SDL_RWread(ops, &count, sizeof(count), 1); - LOG_DEBUG("Load %d materials", count); - - for (int i = 0; i < count; i++) - { - uint16_t name_length; - SDL_RWread(ops, &name_length, sizeof(name_length), 1); - - char* name = scratch_mem_alloc(name_length, sizeof(*name)); - SDL_RWread(ops, name, sizeof(*name), name_length); - LOG_ASSERT(name_length < MAX_NAME_LENGTH, "Name of material is too long: %s", name); - - material_t material = material_load(ops); - strncpy(material.name, name, name_length); - insert_material(material); - } - } - - // Coins - { - transform_t* data = NULL; - uint16_t count; - SDL_RWread(ops, &count, sizeof(count), 1); - - LOG_DEBUG("Load %d coins", count); - - data = game_mem_alloc(count, sizeof(*data)); - SDL_RWread(ops, data, sizeof(*data), count); - - result.items.coins = data; - result.items.coin_count = count; - } - - // Eyeballs - { - transform_t* data = NULL; - uint16_t count; - SDL_RWread(ops, &count, sizeof(count), 1); - - LOG_DEBUG("Load %d eyeballs", count); - - data = game_mem_alloc(count, sizeof(*data)); - SDL_RWread(ops, data, sizeof(*data), count); - - result.items.eyeballs = data; - result.items.eyeball_count = count; - } - - // Pedestals - { - transform_t* data = NULL; - uint16_t count; - SDL_RWread(ops, &count, sizeof(count), 1); - - LOG_DEBUG("Load %d pedestals", count); - - data = game_mem_alloc(count, sizeof(*data)); - SDL_RWread(ops, data, sizeof(*data), count); - - result.items.pedestals = data; - result.items.pedestal_count = count; - } - - // Score - { - transform_t hundreds; - transform_t tens; - transform_t ones; - transform_t coin; - aabb_t collider; - - SDL_RWread(ops, &hundreds, sizeof(hundreds), 1); - SDL_RWread(ops, &tens, sizeof(tens), 1); - SDL_RWread(ops, &ones, sizeof(ones), 1); - SDL_RWread(ops, &coin, sizeof(coin), 1); - SDL_RWread(ops, &collider, sizeof(collider), 1); - - result.score.hundreds = hundreds; - result.score.tens = tens; - result.score.ones = ones; - result.score.coin = coin; - result.score.collider = collider; - } - - { - aabb_t* walls = NULL; - uint16_t wall_count; - SDL_RWread(ops, &wall_count, sizeof(wall_count), 1); - LOG_ASSERT(wall_count <= WALL_COUNT, "Too many walls"); - - LOG_DEBUG("Load %d walls", wall_count); - - walls = scratch_mem_alloc(wall_count, sizeof(*walls)); - SDL_RWread(ops, walls, sizeof(*walls), wall_count); - - memcpy(&result.walls, walls, sizeof(*walls) * wall_count); - - result.wall_count = wall_count; - } - - { - uint32_t* tiles; - uint8_t tile_count; - SDL_RWread(ops, &tile_count, sizeof(tile_count), 1); - LOG_ASSERT(tile_count == TILE_COUNT, "Incorrect number of tiles"); - - LOG_DEBUG("Load %d tiles", tile_count); - - tiles = scratch_mem_alloc(tile_count, sizeof(*tiles)); - SDL_RWread(ops, tiles, sizeof(*tiles), TILE_COUNT); - - memcpy(&result.tiles, tiles, sizeof(*tiles) * tile_count); - } - - { - uint16_t count; - SDL_RWread(ops, &count, sizeof(count), 1); - LOG_DEBUG("Load %d songs", count); - - for (int i = 0; i < count; i++) - { - uint16_t name_length; - SDL_RWread(ops, &name_length, sizeof(name_length), 1); - - char* name = scratch_mem_alloc(name_length, sizeof(*name)); - SDL_RWread(ops, name, sizeof(*name), name_length); - LOG_ASSERT(name_length < MAX_NAME_LENGTH, "Name of music is too long: %s", name); - - wav_t music = wav_load(ops); - strncpy(music.name, name, name_length); - insert_music(music); - } - } - - { - uint16_t count; - SDL_RWread(ops, &count, sizeof(count), 1); - LOG_DEBUG("Load %d SFX", count); - - for (int i = 0; i < count; i++) - { - uint16_t name_length; - SDL_RWread(ops, &name_length, sizeof(name_length), 1); - - char* name = scratch_mem_alloc(name_length, sizeof(*name)); - SDL_RWread(ops, name, sizeof(*name), name_length); - LOG_ASSERT(name_length < MAX_NAME_LENGTH, "Name of SFX is too long: %s", name); - - wav_t sfx = wav_load(ops); - strncpy(sfx.name, name, name_length); - insert_sfx(sfx); - } - } - - int ret = SDL_RWclose(ops); - if (ret != 0) { - LOG_ERROR("Error closing file %s: %s", path, SDL_GetError()); - } - - return result; -} - diff --git a/code/src/game/debug.c b/code/src/game/debug.c deleted file mode 100644 index 245236b..0000000 --- a/code/src/game/debug.c +++ /dev/null @@ -1,39 +0,0 @@ -void -debug(uint64_t update_time, uint64_t render_time, uint64_t frame_time) -{ - render_text( - format_text("Frame %lums", frame_time), - (vec2){0, WINDOW_HEIGHT-20}, - (vec3){1.0f, 1.0f, 0.0f}, 2.0f); - - render_text( - format_text("Update %lums", update_time), - (vec2){0, WINDOW_HEIGHT-40}, - (vec3){1.0f, 1.0f, 0.0f}, 2.0f); - - render_text( - format_text("Render %lums", render_time), - (vec2){0, WINDOW_HEIGHT-60}, - (vec3){1.0f, 1.0f, 0.0f}, 2.0f); - - { - float memory_used = (g_memory->engine.current - g_memory->engine.begin)/(1024.0f*1024.0f); - float memory_capacity = (g_memory->engine.end - g_memory->engine.begin)/(1024.0f*1024.0f); - - render_text( - format_text("Engine %.02fM/%.02fM", memory_used, memory_capacity), - (vec2){0, WINDOW_HEIGHT-80}, - (vec3){1.0f, 1.0f, 0.0f}, 2.0f); - } - - { - float memory_used = (g_memory->game.current - g_memory->game.begin)/(1024.0f*1024.0f); - float memory_capacity = (g_memory->game.end - g_memory->game.begin)/(1024.0f*1024.0f); - - render_text( - format_text("Game %.02fM/%.02fM", memory_used, memory_capacity), - (vec2){0, WINDOW_HEIGHT-100}, - (vec3){1.0f, 1.0f, 0.0f}, 2.0f); - } -} - diff --git a/code/src/game/logic.c b/code/src/game/logic.c deleted file mode 100644 index 4a4626a..0000000 --- a/code/src/game/logic.c +++ /dev/null @@ -1,400 +0,0 @@ -const float PLAYER_SPEED = 2.5f; -const float CAMERA_SENSITIVITY = 0.05f; -const float ENEMY_SPEED = 2.0f; -const float POWERUP_TIME = 15.0f; -const float FOOTSTEP_TIMER = 0.75f; - -enum {ENEMY_COUNT = 4}; - -typedef enum game_mode { - MODE_MAIN_MENU = 0, - MODE_OPTIONS, - MODE_PLAY, - MODE_PAUSE, - MODE_QUIT -} game_mode_e; - -typedef struct skull { - vec3 tile_pos; - vec3 tile_pos_prev; - vec3 delta; - vec3 front; - int audio_source_handle; -} skull_t; - -typedef struct eyeball { - transform_t transform; - bool used; -} eyeball_t; - -typedef struct state { - game_mode_e mode; - game_mode_e mode_last; - input_t input_prev; - camera_t camera; - float time; - int coin_count; - int eyeball_count; - transform_t* coins; - eyeball_t* eyeballs; - skull_t skulls[ENEMY_COUNT]; - int background_music_handle; - int powerup_sfx_handle; - bool powered_up; - float powerup_timer; - bool footstep_cycle; - float footstep_timer; - vec2 skybox_offset; - node_t nodes[4]; -} state_t; - -typedef struct ui { - ui_menu_t main_menu; - ui_menu_t options_menu; - ui_menu_t pause_menu; -} ui_t; - -typedef struct game { - data_t data; - state_t state; - ui_t ui; -} game_t; - -void -play(float dt, input_t input) -{ - state_t* state = &g_game->state; - data_t* data = &g_game->data; - - if (state->footstep_timer > 0.0f) - { - state->footstep_timer -= dt; - } - - if (state->powerup_timer == POWERUP_TIME) - { - audio_source_t powerup_sfx = { - .wav = get_sfx_by_name("SFX_Powerup")}; - - state->powerup_sfx_handle = play_sound(powerup_sfx); - state->powered_up = true; - state->powerup_timer -= dt; - } - else if (state->powerup_timer > 0.0f) - { - state->powerup_timer -= dt; - } - else if (state->powerup_timer <= 0.0f) - { - state->powered_up = false; - state->powerup_timer = 0.0f; - } - - // Update camera - { - vec3 velocity = {0}; - if (input.up) { - velocity.y = 1.0f; - } else if (input.down) { - velocity.y = -1.0f; - } - - if (input.left) { - velocity.x = -1.0f; - } else if (input.right) { - velocity.x = 1.0f; - } - - float speed = dt * PLAYER_SPEED; - velocity = vec3_mult(vec3_normalize(velocity), speed); - - float mouse_offset_x = -1.0f * input.mouse_x_delta * CAMERA_SENSITIVITY; - float mouse_offset_y = -1.0f * input.mouse_y_delta * CAMERA_SENSITIVITY; - - camera_t camera_copy = state->camera; - camera_move(&camera_copy, velocity); - - aabb_t player_aabb = { - .origin = camera_copy.position, - .extents = {0.3f, 0.3f, 1.0f}}; - - // Walls - for (size_t i = 0; i < data->wall_count; i++) - { - aabb_t aabb = data->walls[i]; - - if (aabb_check(player_aabb, aabb)) - { - velocity.x = 0; - velocity.y = 0; - break; - } - } - - // Score zone - aabb_t aabb = data->score.collider; - - if (aabb_check(player_aabb, aabb)) - { - velocity.x = 0; - velocity.y = 0; - } - - const float baseline_position_z = 1.0f; - const float head_bob_amount = 0.02f; - const float idle_head_bob_freq = 1.5f; - const float moving_head_bob_freq = 8.0f; - - float position_z = baseline_position_z; - if (velocity.x != 0.0f || velocity.y != 0.0f) - { - position_z = baseline_position_z + sinf(moving_head_bob_freq * state->footstep_timer) * head_bob_amount; - - if (state->footstep_timer < 0.0f) - { - wav_t* wav; - if (state->footstep_cycle) { - wav = get_sfx_by_name("SFX_Footstep1"); - } else { - wav = get_sfx_by_name("SFX_Footstep2"); - } - - audio_source_t footstep_sfx = { - .wav = wav}; - - play_sound(footstep_sfx); - state->footstep_timer = FOOTSTEP_TIMER; - state->footstep_cycle = !state->footstep_cycle; - } - } - else - { - position_z = baseline_position_z + sinf(idle_head_bob_freq * state->time) * head_bob_amount; - } - - state->camera.position.z = position_z; - camera_move(&state->camera, velocity); - camera_rotate(&state->camera, mouse_offset_x, mouse_offset_y); - camera_update_view(&state->camera); - - g_audio_mgr->listener.position = state->camera.position; - g_audio_mgr->listener.front = state->camera.front; - } - - aabb_t player_aabb = { - .origin = state->camera.position, - .extents = {0.3f, 0.3f, 1.0f}}; - - // Check for coin collision - { - for (int i = 0; i < state->coin_count; i++) - { - transform_t coin = state->coins[i]; - - aabb_t coin_aabb = { - .origin = coin.position, - .extents = {0.5f, 0.5f, 1.0f}}; - - if (aabb_check(player_aabb, coin_aabb)) - { - audio_source_t coin_sfx = { - .wav = get_sfx_by_name("SFX_Coin")}; - - play_sound(coin_sfx); - state->coins[i] = state->coins[state->coin_count-1]; - state->coin_count--; - break; - } - } - } - - // Check for eyeball collision - { - for (int i = 0; i < state->eyeball_count; i++) - { - transform_t transform = state->eyeballs[i].transform; - - aabb_t eyeball_aabb = { - .origin = transform.position, - .extents = {1.0f, 1.0f, 1.0f}}; - - if (aabb_check(player_aabb, eyeball_aabb) && input.interact) - { - // TODO: Do we want to allow stacking powerups? - if (state->powerup_timer == 0.0f) - { - audio_source_t eyeball_sfx = { - .wav = get_sfx_by_name("SFX_Eyeball")}; - - play_sound(eyeball_sfx); - - state->powerup_timer = POWERUP_TIME; - state->eyeballs[i].used = true; - - // Move to end of list - eyeball_t eyeball = state->eyeballs[i]; - state->eyeballs[i] = state->eyeballs[state->eyeball_count-1]; - state->eyeballs[state->eyeball_count-1] = eyeball; - state->eyeball_count--; - } - - break; - } - } - } - - // Check for skull collision - { - for (int i = 0; i < ENEMY_COUNT; i++) - { - skull_t* skull = &state->skulls[i]; - - aabb_t skull_aabb = { - .origin = {skull->tile_pos.x*2.0f+1.0f, skull->tile_pos.y*2.0f+1.0f, 1.0f}, - .extents = {1.0f, 1.0f, 1.0f}}; - - if (aabb_check(player_aabb, skull_aabb)) - { - } - } - } - - // Update skull positions - { - for (int i = 0; i < ENEMY_COUNT; i++) - { - skull_t* skull = &state->skulls[i]; - - vec3 skull_front = skull->front; - vec3 skull_right = vec3_cross(skull->front, WORLD_UP); - vec3 skull_left = vec3_negate(skull_right); - - float player_dot = 0.0f; - { - vec3 skull_position = {skull->tile_pos.x*2.0f+1.0f, skull->tile_pos.x*2.0f+1.0f, 1.0f}; - vec3 player_position = state->camera.position; - vec3 target = vec3_normalize(vec3_sub(player_position, skull_position)); - - player_dot = vec3_dot(skull_right, target); - } - - bool left_tile_open = false; - { - int x = skull->tile_pos.x + (int)skull_left.x; - int y = skull->tile_pos.y + (int)skull_left.y; - left_tile_open = data->tiles[y] & (1U<<(31-x)); - } - - bool right_tile_open = false; - { - int x = skull->tile_pos.x + (int)skull_right.x; - int y = skull->tile_pos.y + (int)skull_right.y; - right_tile_open = data->tiles[y] & (1U<<(31-x)); - } - - bool front_tile_open = false; - { - int x = skull->tile_pos.x + (int)skull_front.x; - int y = skull->tile_pos.y + (int)skull_front.y; - front_tile_open = data->tiles[y] & (1U<<(31-x)); - } - - // Don't re-evaluate direction unless we've moved to a new tile - if (skull->tile_pos.x != skull->tile_pos_prev.x - || skull->tile_pos.y != skull->tile_pos_prev.y) - { - skull->tile_pos_prev.x = skull->tile_pos.x; - skull->tile_pos_prev.y = skull->tile_pos.y; - - // Front - if (front_tile_open && !left_tile_open && !right_tile_open) - { - skull->front = skull_front; - } - - // Right - else if (right_tile_open && !left_tile_open && !front_tile_open) - { - skull->front = skull_right; - } - - // Left - else if (left_tile_open && !right_tile_open && !front_tile_open) - { - skull->front = skull_left; - } - - // Left-Front - else if (left_tile_open && front_tile_open && !right_tile_open) - { - if (player_dot < -0.5f) - { - skull->front = skull_left; - } - } - - // Right-Front - else if (right_tile_open && front_tile_open && !left_tile_open) - { - if (player_dot > 0.5f) { - skull->front = skull_right; - } - } - - // Left-Right - else if (left_tile_open && right_tile_open && !front_tile_open) - { - if (player_dot <= 0.0f) { - skull->front = skull_left; - } else if (player_dot > 0.0f) { - skull->front = skull_right; - } - } - - // Left-Right-Front - else if (front_tile_open && left_tile_open && right_tile_open) - { - if (player_dot < 0.0f) { - skull->front = skull_left; - } else if (player_dot > 0.0f) { - skull->front = skull_right; - } - } - } - - // Keep track of smooth position so we can render the skull in world-space but still handle its collisions - // in tile-space - float skull_speed = ENEMY_SPEED; - - skull->delta.x += skull->front.x * skull_speed * dt; - skull->delta.y += skull->front.y * skull_speed * dt; - - if (skull->delta.x >= 2.0f) { - skull->tile_pos.x++; - skull->delta.x = 0.0f; - } - else if (skull->delta.x <= -2.0f) { - skull->tile_pos.x--; - skull->delta.x = 0.0f; - } - - if (skull->delta.y >= 2.0f) { - skull->tile_pos.y++; - skull->delta.y = 0.0f; - } - else if (skull->delta.y <= -2.0f) { - skull->tile_pos.y--; - skull->delta.y = 0.0f; - } - - vec3 world_position = { - skull->tile_pos.x*2.0f+1.0f, - skull->tile_pos.y*2.0f+1.0f, - 1.0f}; - - update_sound_position(skull->audio_source_handle, world_position); - - } - } -} - diff --git a/code/src/game/render.c b/code/src/game/render.c deleted file mode 100644 index f14108a..0000000 --- a/code/src/game/render.c +++ /dev/null @@ -1,489 +0,0 @@ -enum {MAX_COINS_VISIBLE = 30}; - -void -render_geo(void) -{ - data_t* data = &g_game->data; - state_t* state = &g_game->state; - - render_geo_begin(&state->camera); - - struct { - vec3 position; - vec3 color; - float intensity; - } light; - - // Determine which coins are near the camera - int coin_count = 0; - transform_t coins[MAX_COINS_VISIBLE] = {0}; - - for (int i = 0; i < state->coin_count; i++) - { - transform_t coin = state->coins[i]; - - vec3 heading = vec3_normalize(vec3_sub(coin.position, state->camera.position)); - float dot = vec3_dot(heading, state->camera.front); - - // Only check coins that are in front of us - if (dot > 0.0f) - { - ray_t ray = { - .origin = state->camera.position, - .direction = heading}; - - bool coin_obscured = false; - - for (size_t j = 0; j < data->wall_count; j++) - { - aabb_t aabb = data->walls[j]; - aabb.extents.x *= 0.80f; - aabb.extents.y *= 0.80f; - - float coin_distance = vec3_length(vec3_sub(state->camera.position, coin.position)); - - float wall_distance = vec3_length(vec3_sub(state->camera.position, aabb.origin)); - - if (coin_distance > wall_distance) - { - if (ray_aabb_intersect(aabb, ray)) - { - coin_obscured = true; - break; - } - } - } - - if (!coin_obscured){ - coins[coin_count++] = state->coins[i]; - } - } - - LOG_ASSERT(coin_count <= MAX_COINS_VISIBLE, "More coins visible than rendered"); - } - - transform_t* rendered_coins; - if (state->powerup_timer > 0.0f) - { - rendered_coins = state->coins; - coin_count = state->coin_count; - glUniform1i(g_render_mgr->geo.u_light_count, 0); - } - else - { - rendered_coins = coins; - glUniform1i(g_render_mgr->geo.u_light_count, coin_count); - } - - // Render the visble lit coins - { - mesh_t* coin = (mesh_t*)get_mesh_by_name("M_Coin"); - material_t* material = (material_t*)get_material_by_handle(coin->material); - - glBindTexture(GL_TEXTURE_2D, material->texture); - glUniform1i(g_render_mgr->geo.u_texture, 0); - glUniform1f(g_render_mgr->geo.u_uv_scale, 1.0f); - - glUniform1i(g_render_mgr->geo.u_is_emitter, 1); - glUniform1f(g_render_mgr->geo.u_ambient_adjust, 0.75f); - light.color = (vec3){1.0f, 0.7f, 0.0f}; - light.intensity = 1.0f; - - float sine = sinf(state->time); - float cosine = cosf(state->time); - float sine_rate_light = sine / 8.0f; - float sine_rate_mesh = sine / 16.0f; - - mat4 rotation = mat4_identity(); - rotation.e00 = cosine; - rotation.e01 = -sine; - rotation.e10 = sine; - rotation.e11 = cosine; - - mat4 translation = mat4_identity(); - glBindVertexArray(coin->vao); - for (int i = 0; i < coin_count; i++) - { - char buf[30]; - GLuint u_light_position; - { - snprintf(buf, sizeof(buf), "u_lights[%d].position", i); - u_light_position = glGetUniformLocation(g_render_mgr->geo.shader, buf); - } - - GLuint u_light_color; - { - snprintf(buf, sizeof(buf), "u_lights[%d].color", i); - u_light_color = glGetUniformLocation(g_render_mgr->geo.shader, buf); - } - - GLuint u_light_intensity; - { - snprintf(buf, sizeof(buf), "u_lights[%d].intensity", i); - u_light_intensity = glGetUniformLocation(g_render_mgr->geo.shader, buf); - } - - light.position = (vec3){rendered_coins[i].position.x, rendered_coins[i].position.y, 0.25f + sine_rate_light}; - - glUniform3fv(u_light_position, 1, (float*)&light.position); - glUniform3fv(u_light_color, 1, (float*)&light.color); - glUniform1f(u_light_intensity, light.intensity); - - translation.e03 = rendered_coins[i].position.x; - translation.e13 = rendered_coins[i].position.y; - translation.e23 = rendered_coins[i].position.z + sine_rate_mesh; - - mat4 model_mat = mat4_multm(translation, rotation); - glUniformMatrix4fv(g_render_mgr->geo.u_model, 1, GL_TRUE, (float*)&model_mat); - glDrawElements(GL_TRIANGLES, coin->index_count, GL_UNSIGNED_SHORT, NULL); - } - - glUniform1i(g_render_mgr->geo.u_is_emitter, 0); - } - - // Render skybox - { - mesh_t* mesh = (mesh_t*)get_mesh_by_name("M_Skybox"); - material_t* material = (material_t*)get_material_by_handle(mesh->material); - - glBindTexture(GL_TEXTURE_2D, material->texture); - glUniform1i(g_render_mgr->geo.u_texture, 0); - glUniform1f(g_render_mgr->geo.u_uv_scale, 1.0f); - glUniform1i(g_render_mgr->geo.u_is_emitter, 1); - glUniform1f(g_render_mgr->geo.u_ambient_adjust, 0.01f); - - state->skybox_offset.x += 0.0002f; - if (state->skybox_offset.x >= 1.0f) { state->skybox_offset.x = 0.0f; }; - - glUniform2fv(g_render_mgr->geo.u_uv_translation, 1, (float*)&state->skybox_offset); - - mat4 model_mat = mat4_identity(); - glUniformMatrix4fv(g_render_mgr->geo.u_model, 1, GL_TRUE, (float*)&model_mat); - - glBindVertexArray(mesh->vao); - glDrawElements(GL_TRIANGLES, mesh->index_count, GL_UNSIGNED_SHORT, NULL); - glUniform2f(g_render_mgr->geo.u_uv_translation, 0.0f, 0.0f); - glUniform1i(g_render_mgr->geo.u_is_emitter, 0); - } - - // Render maze - { - mesh_t* maze = (mesh_t*)get_mesh_by_name("M_Maze"); - material_t* material = (material_t*)get_material_by_handle(maze->material); - - glBindTexture(GL_TEXTURE_2D, material->texture); - glUniform1i(g_render_mgr->geo.u_texture, 0); - glUniform1f(g_render_mgr->geo.u_uv_scale, 1.0f); - - if (state->powerup_timer > 0.0f) - { - glUniform1i(g_render_mgr->geo.u_is_emitter, 1); - glUniform1f(g_render_mgr->geo.u_ambient_adjust, 0.05f); - } - else - { - glUniform1i(g_render_mgr->geo.u_is_emitter, 0); - } - - mat4 model_mat = mat4_identity(); - glUniformMatrix4fv(g_render_mgr->geo.u_model, 1, GL_TRUE, (float*)&model_mat); - - glUniform1f(g_render_mgr->geo.u_powerup_timer, state->powerup_timer); - - glBindVertexArray(maze->vao); - glDrawElements(GL_TRIANGLES, maze->index_count, GL_UNSIGNED_SHORT, NULL); - - glUniform1f(g_render_mgr->geo.u_powerup_timer, 0.0f); - } - - // Render pedestals - { - mesh_t* pedestal = (mesh_t*)get_mesh_by_name("M_Pedestal"); - material_t* material = (material_t*)get_material_by_handle(pedestal->material); - - glBindTexture(GL_TEXTURE_2D, material->texture); - glUniform1i(g_render_mgr->geo.u_texture, 0); - glUniform1f(g_render_mgr->geo.u_uv_scale, 1.0f); - - mat4 model_mat = mat4_identity(); - glBindVertexArray(pedestal->vao); - for (int i = 0; i < data->items.pedestal_count; i++) - { - transform_t transform = data->items.pedestals[i]; - - model_mat.e03 = transform.position.x; - model_mat.e13 = transform.position.y; - model_mat.e23 = transform.position.z; - - glUniformMatrix4fv(g_render_mgr->geo.u_model, 1, GL_TRUE, (float*)&model_mat); - glDrawElements(GL_TRIANGLES, pedestal->index_count, GL_UNSIGNED_SHORT, NULL); - } - } - - // Render the eyeballs - { - material_t* material = get_material_by_name("T_Eyeball"); - - glBindTexture(GL_TEXTURE_2D, material->texture); - glUniform1i(g_render_mgr->geo.u_texture, 0); - glUniform1f(g_render_mgr->geo.u_uv_scale, 1.0f); - - glUniform1i(g_render_mgr->geo.u_is_emitter, 1); - glUniform1f(g_render_mgr->geo.u_ambient_adjust, 0.50f); - light.color = (vec3){0.8f, 0.3f, 0.0f}; - light.intensity = 0.5f; - - for (int i = 0; i < data->items.eyeball_count; i++) - { - mesh_t* eyeball; - mat4 model_mat; - - vec3 position = state->eyeballs[i].transform.position; - mat4 translation = mat4_identity(); - translation.e03 = position.x; - translation.e13 = position.y; - translation.e23 = position.z; - - if (!state->eyeballs[i].used) - { - eyeball = get_mesh_by_name("M_Eyeball"); - - light.position = state->eyeballs[i].transform.position; - - glUniform3fv(g_render_mgr->geo.u_lights+(3*(i+state->coin_count))+0, 1, (float*)&light.position); - glUniform3fv(g_render_mgr->geo.u_lights+(3*(i+state->coin_count))+1, 1, (float*)&light.color); - glUniform1f(g_render_mgr->geo.u_lights+(3*(i+state->coin_count))+2, light.intensity); - - // Look at the player - vec3 front = vec3_normalize(vec3_sub(position, state->camera.position)); - vec3 side = vec3_normalize(vec3_cross(front, (vec3){0.0f, 0.0f, 1.0f})); - vec3 up = vec3_cross(side, front); - - mat4 rotation = mat4_identity(); - rotation.e00 = side.x; rotation.e01 = front.x; rotation.e02 = up.x; - rotation.e10 = side.y; rotation.e11 = front.y; rotation.e12 = up.y; - rotation.e20 = side.z; rotation.e21 = front.z; rotation.e22 = up.z; - - model_mat = mat4_multm(translation, rotation); - } else { - eyeball = get_mesh_by_name("M_EyeballUsed"); - - model_mat = translation; - } - - glBindVertexArray(eyeball->vao); - glUniformMatrix4fv(g_render_mgr->geo.u_model, 1, GL_TRUE, (float*)&model_mat); - glDrawElements(GL_TRIANGLES, eyeball->index_count, GL_UNSIGNED_SHORT, NULL); - } - - glUniform1i(g_render_mgr->geo.u_is_emitter, 0); - glUniform1f(g_render_mgr->geo.u_ambient_adjust, 0.01f); - } - - // Render the skulls - { - mesh_t* mesh_top = (mesh_t*)get_mesh_by_name("M_SkullTop"); - mesh_t* mesh_bottom = (mesh_t*)get_mesh_by_name("M_SkullBottom"); - material_t* material = (material_t*)get_material_by_handle(mesh_top->material); - - glBindTexture(GL_TEXTURE_2D, material->texture); - glUniform1i(g_render_mgr->geo.u_texture, 0); - glUniform1f(g_render_mgr->geo.u_uv_scale, 1.0f); - - float z_translation = 1.25f; - mat4 scale = mat4_identity(); - glUniform1f(g_render_mgr->geo.u_uv_scale, 1.0f); - - for (int i = 0; i < ENEMY_COUNT; i++) - { - vec3 position = { - state->skulls[i].tile_pos.x * 2.0f + 1.0f + state->skulls[i].delta.x, - state->skulls[i].tile_pos.y * 2.0f + 1.0f + state->skulls[i].delta.y, - z_translation}; - - mat4 model_mat = mat4_identity(); - - // Rotate top - { - float angle = atan2(state->skulls[i].front.y, state->skulls[i].front.x); - - // Compensate by 90 deg to align with Cartesian rotation - angle += PI_DIV_2; - - float sin_angle = sinf(angle); - float cos_angle = cosf(angle); - - model_mat.e00 = cos_angle; - model_mat.e01 = -sin_angle; - model_mat.e10 = sin_angle; - model_mat.e11 = cos_angle; - - model_mat.e03 = position.x; - model_mat.e13 = position.y; - model_mat.e23 = position.z; - - float distance = vec3_length(vec3_sub(state->camera.position, position)); - distance = normalize(distance, 1.0f, 5.0f); - - float mouth_angle = lerp(-45.0f, 0.0f, distance); - - mat4 rotate_x = mat4_identity(); - - sin_angle = sinf(DEG_TO_RAD(mouth_angle)); - cos_angle = cosf(DEG_TO_RAD(mouth_angle)); - - rotate_x.e11 = cos_angle; - rotate_x.e12 = -sin_angle; - rotate_x.e21 = sin_angle; - rotate_x.e22 = cos_angle; - - model_mat = mat4_multm(model_mat, scale); - model_mat = mat4_multm(model_mat, rotate_x); - - glUniformMatrix4fv(g_render_mgr->geo.u_model, 1, GL_TRUE, (float*)&model_mat); - - glBindVertexArray(mesh_top->vao); - glDrawElements(GL_TRIANGLES, mesh_top->index_count, GL_UNSIGNED_SHORT, NULL); - } - - // Rotate bottom - { - float distance = vec3_length(vec3_sub(state->camera.position, position)); - distance = 1.0f - normalize(distance, 1.0f, 5.0f); - - float mouth_angle = lerp(0.0f, 45.0f, distance); - - mat4 rotate_x = mat4_identity(); - - float sin_angle = sinf(DEG_TO_RAD(mouth_angle)); - float cos_angle = cosf(DEG_TO_RAD(mouth_angle)); - - rotate_x.e11 = cos_angle; - rotate_x.e12 = -sin_angle; - rotate_x.e21 = sin_angle; - rotate_x.e22 = cos_angle; - - rotate_x = mat4_multm(model_mat, rotate_x); - - glUniformMatrix4fv(g_render_mgr->geo.u_model, 1, GL_TRUE, (float*)&rotate_x); - - glBindVertexArray(mesh_bottom->vao); - glDrawElements(GL_TRIANGLES, mesh_bottom->index_count, GL_UNSIGNED_SHORT, NULL); - } - } - } - - // Render score - { - material_t* material = get_material_by_name("T_Numeral"); - - glBindTexture(GL_TEXTURE_2D, material->texture); - glUniform1i(g_render_mgr->geo.u_texture, 0); - glUniform1f(g_render_mgr->geo.u_texture_alpha, 0.4f); - glUniform1f(g_render_mgr->geo.u_uv_scale, 1.0f); - glUniform1i(g_render_mgr->geo.u_is_emitter, 1); - glUniform1f(g_render_mgr->geo.u_ambient_adjust, 0.75f); - - float sine = sinf(2.0f*state->time); - float cosine = cosf(2.0f*state->time); - mat4 rotation = mat4_identity(); - rotation.e00 = cosine; - rotation.e01 = -sine; - rotation.e10 = sine; - rotation.e11 = cosine; - { - state->nodes[0].rotation = rotation; - update_node(state->nodes, &state->nodes[0]); - - // Render the hundreds place - { - mat4 model_mat = state->nodes[1].matrix; - - int hundreds = state->coin_count / 100; - - char mesh_name[32]; - snprintf(mesh_name, sizeof(mesh_name), "M_Digit%d", hundreds); - - mesh_t* mesh = get_mesh_by_name(mesh_name); - glBindVertexArray(mesh->vao); - glUniformMatrix4fv(g_render_mgr->geo.u_model, 1, GL_TRUE, (float*)&model_mat); - glDrawElements(GL_TRIANGLES, mesh->index_count, GL_UNSIGNED_SHORT, NULL); - } - - // Render the tens place - { - mat4 model_mat = state->nodes[2].matrix; - - int tens = (state->coin_count % 100) / 10; - - char mesh_name[32]; - snprintf(mesh_name, sizeof(mesh_name), "M_Digit%d", tens); - - mesh_t* mesh = get_mesh_by_name(mesh_name); - glBindVertexArray(mesh->vao); - glUniformMatrix4fv(g_render_mgr->geo.u_model, 1, GL_TRUE, (float*)&model_mat); - glDrawElements(GL_TRIANGLES, mesh->index_count, GL_UNSIGNED_SHORT, NULL); - } - - // Render the ones place - { - mat4 model_mat = state->nodes[3].matrix; - - int ones = (state->coin_count % 100 % 10); - char mesh_name[32]; - snprintf(mesh_name, sizeof(mesh_name), "M_Digit%d", ones); - - mesh_t* mesh = get_mesh_by_name(mesh_name); - glBindVertexArray(mesh->vao); - glUniformMatrix4fv(g_render_mgr->geo.u_model, 1, GL_TRUE, (float*)&model_mat); - glDrawElements(GL_TRIANGLES, mesh->index_count, GL_UNSIGNED_SHORT, NULL); - } - } - - // Render the coin - { - mat4 translation = mat4_identity(); - translation.e03 = data->score.coin.position.x; - translation.e13 = data->score.coin.position.y; - translation.e23 = data->score.coin.position.z; - - mat4 scale = mat4_identity(); - scale.e00 = data->score.coin.scale.x; - scale.e11 = data->score.coin.scale.y; - scale.e22 = data->score.coin.scale.z; - - mat4 model_mat = mat4_multm(rotation, scale); - model_mat = mat4_multm(translation, model_mat); - - mesh_t* mesh = get_mesh_by_name("M_Coin"); - material = get_material_by_handle(mesh->material); - glBindTexture(GL_TEXTURE_2D, material->texture); - glUniform1i(g_render_mgr->geo.u_texture, 0); - glUniform1f(g_render_mgr->geo.u_uv_scale, 1.0f); - - - glBindVertexArray(mesh->vao); - glUniformMatrix4fv(g_render_mgr->geo.u_model, 1, GL_TRUE, (float*)&model_mat); - glDrawElements(GL_TRIANGLES, mesh->index_count, GL_UNSIGNED_SHORT, NULL); - } - - glUniform1i(g_render_mgr->geo.u_is_emitter, 0); - glUniform1f(g_render_mgr->geo.u_texture_alpha, 1.0f); - } - - render_geo_end(); -} - -void -render_screen(void) -{ - state_t* state = &g_game->state; - - render_screen_begin(); - - glUniform1i(g_render_mgr->screen.u_texture, 0); - glUniform1f(g_render_mgr->screen.u_powerup_timer, state->powerup_timer); - - render_screen_end(); -} - diff --git a/code/src/main.c b/code/src/main.c deleted file mode 100644 index 309e439..0000000 --- a/code/src/main.c +++ /dev/null @@ -1,348 +0,0 @@ -#include "common.h" - -typedef struct game { - time_t mod_time; - memory_t memory; - const char* lib_name; - void* lib_ptr; - void (*startup)(memory_t*); - void (*shutdown)(void); - void (*update)(memory_t*, float, input_t, bool*); - void (*render)(void); - void (*debug)(uint64_t, uint64_t, uint64_t); - void (*audio_callback)(void* userdata, uint8_t* stream, int len); -} game_t; - -typedef struct keystate { - int w; int a; int s; int d; - int up; int left; int down; int right; - int e; - int enter; int space; int esc; -} keystate_t; - -int main(int argc, char* argv[]) -{ - (void)argc; (void)argv; - - { - int ret; - - ret = SDL_InitSubSystem(SDL_INIT_VIDEO); - if (ret != 0) { - fprintf(stderr, "Error initializing SDL Video subsystem: %s\n", SDL_GetError()); - exit(EXIT_FAILURE); - } - - ret = SDL_InitSubSystem(SDL_INIT_AUDIO); - if (ret != 0) { - fprintf(stderr, "Error initializing SDL Audio subsystem: %s\n", SDL_GetError()); - exit(EXIT_FAILURE); - } - } - - SDL_Window* window = NULL; - SDL_GLContext* context = NULL; - { - window = SDL_CreateWindow( - WINDOW_TITLE, - SDL_WINDOWPOS_CENTERED, SDL_WINDOWPOS_CENTERED, - WINDOW_WIDTH, WINDOW_HEIGHT, - SDL_WINDOW_OPENGL); - - if (window == NULL) { - fprintf(stderr, "Error creating SDL window: %s\n", SDL_GetError()); - exit(EXIT_FAILURE); - } - - SDL_GL_SetAttribute(SDL_GL_CONTEXT_PROFILE_MASK, SDL_GL_CONTEXT_PROFILE_CORE); - SDL_GL_SetAttribute(SDL_GL_CONTEXT_MAJOR_VERSION, 4); - SDL_GL_SetAttribute(SDL_GL_CONTEXT_MINOR_VERSION, 0); - context = SDL_GL_CreateContext(window); - - if (context == NULL) { - fprintf(stderr, "Error creating SDL GL context: %s\n", SDL_GetError()); - exit(EXIT_FAILURE); - } - - SDL_GL_SetSwapInterval(0); - gladLoadGL((GLADloadfunc)SDL_GL_GetProcAddress); - - SDL_SetRelativeMouseMode(SDL_TRUE); - SDL_ShowCursor(SDL_DISABLE); - glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); - } - - game_t game = {0}; - { - const char* platform = SDL_GetPlatform(); - - if (strcmp(platform, "Windows") == 0) { - game.lib_name = ".\\libgame.dll"; - } else { - game.lib_name = "./libgame.so"; - } - - struct stat attrib; - stat(game.lib_name, &attrib); - game.mod_time = attrib.st_mtime; - - game.lib_ptr = SDL_LoadObject(game.lib_name); - if (game.lib_ptr == NULL) { - fprintf(stderr, "Error loading game library: %s\n", SDL_GetError()); - exit(EXIT_FAILURE); - } - - game.startup = SDL_LoadFunction(game.lib_ptr, "game_startup"); - if (game.startup == NULL) { - fprintf(stderr, "Error loading game function pointer from game lib: %s\n", SDL_GetError()); - exit(EXIT_FAILURE); - } - - game.shutdown = SDL_LoadFunction(game.lib_ptr, "game_shutdown"); - if (game.shutdown == NULL) { - fprintf(stderr, "Error loading game function pointer from game lib: %s\n", SDL_GetError()); - exit(EXIT_FAILURE); - } - - game.update = SDL_LoadFunction(game.lib_ptr, "game_update"); - if (game.update == NULL) { - fprintf(stderr, "Error loading game function pointer from game lib: %s\n", SDL_GetError()); - exit(EXIT_FAILURE); - } - - game.render = SDL_LoadFunction(game.lib_ptr, "game_render"); - if (game.render == NULL) { - fprintf(stderr, "Error loading game function pointer from game lib: %s\n", SDL_GetError()); - exit(EXIT_FAILURE); - } - - game.debug = SDL_LoadFunction(game.lib_ptr, "game_debug"); - if (game.debug == NULL) { - fprintf(stderr, "Error loading game function pointer from game lib: %s\n", SDL_GetError()); - exit(EXIT_FAILURE); - } - - game.audio_callback = SDL_LoadFunction(game.lib_ptr, "game_audio_callback"); - if (game.audio_callback == NULL) { - fprintf(stderr, "Error loading game function pointer from game lib: %s\n", SDL_GetError()); - exit(EXIT_FAILURE); - } - - game.memory.engine.begin = calloc(ENGINE_MEMORY_SIZE, 1); - game.memory.engine.end = game.memory.engine.begin + ENGINE_MEMORY_SIZE; - game.memory.engine.current = game.memory.engine.begin; - game.memory.engine.size = ENGINE_MEMORY_SIZE; - if (game.memory.engine.begin == NULL) { - fprintf(stderr, "Error requesting %lu bytes for engine memory\n", ENGINE_MEMORY_SIZE); - exit(EXIT_FAILURE); - } - - game.memory.game.begin = calloc(GAME_MEMORY_SIZE, 1); - game.memory.game.end = game.memory.game.begin + GAME_MEMORY_SIZE; - game.memory.game.current = game.memory.game.begin; - game.memory.game.size = GAME_MEMORY_SIZE; - if (game.memory.game.begin == NULL) { - fprintf(stderr, "Error requesting %lu bytes for game memory\n", GAME_MEMORY_SIZE); - exit(EXIT_FAILURE); - } - - game.memory.scratch.begin = calloc(SCRATCH_MEMORY_SIZE, 1); - game.memory.scratch.end = game.memory.scratch.begin + SCRATCH_MEMORY_SIZE; - game.memory.scratch.current = game.memory.scratch.begin ; - game.memory.scratch.size = SCRATCH_MEMORY_SIZE; - if (game.memory.scratch.begin == NULL) { - fprintf(stderr, "Error requesting %lu bytes for scratch memory\n", SCRATCH_MEMORY_SIZE); - exit(EXIT_FAILURE); - } - } - - // Set up audio - SDL_AudioDeviceID audio_device; - SDL_AudioSpec audio_specs = {0}; - { - audio_specs.freq = 8000; - audio_specs.format = AUDIO_F32; - audio_specs.channels = 2; - audio_specs.samples = 256; - audio_specs.callback = game.audio_callback; - audio_specs.userdata = &game.memory; - - SDL_AudioSpec have; - audio_device = SDL_OpenAudioDevice(NULL, 0, &audio_specs, &have, 0); - - // Un-pause - SDL_PauseAudioDevice(audio_device, 0); - } - - game.startup(&game.memory); - - bool is_running = true; - keystate_t keystate = {0}; - uint64_t previous_time = SDL_GetTicks64(); - while (is_running) - { - float dt; - uint16_t frame_time; - { - uint64_t current_time = SDL_GetTicks64(); - frame_time = current_time - previous_time; - if (frame_time < TARGET_FRAME_TIME) - { - uint64_t sleep_time = TARGET_FRAME_TIME - frame_time; - SDL_Delay(sleep_time); - - current_time = SDL_GetTicks64(); - frame_time = current_time - previous_time; - } - - previous_time = current_time; - dt = frame_time / 1000.0f; - } - - { - SDL_Event e; - while (SDL_PollEvent(&e)) - { - if (e.type == SDL_QUIT) { - is_running = false; - } - else if (e.type == SDL_KEYDOWN || e.type == SDL_KEYUP) - { - switch (e.key.keysym.sym) - { - case SDLK_w: { - keystate.w = e.type; - } break; - case SDLK_a: { - keystate.a = e.type; - } break; - case SDLK_s: { - keystate.s = e.type; - } break; - case SDLK_d: { - keystate.d = e.type; - } break; - case SDLK_UP: { - keystate.up = e.type; - } break; - case SDLK_LEFT: { - keystate.left = e.type; - } break; - case SDLK_DOWN: { - keystate.down = e.type; - } break; - case SDLK_RIGHT: { - keystate.right = e.type; - } break; - case SDLK_e: { - keystate.e = e.type; - } break; - case SDLK_RETURN: { - keystate.enter = e.type; - } break; - case SDLK_SPACE: { - keystate.space= e.type; - } break; - case SDLK_ESCAPE: { - keystate.esc = e.type; - } break; - } - } - } - } - - input_t input = {0}; - if (keystate.w == SDL_KEYDOWN || keystate.up == SDL_KEYDOWN) { input.up = true; } - if (keystate.a == SDL_KEYDOWN || keystate.left == SDL_KEYDOWN) { input.left = true; } - if (keystate.s == SDL_KEYDOWN || keystate.down == SDL_KEYDOWN) { input.down = true; } - if (keystate.d == SDL_KEYDOWN || keystate.right == SDL_KEYDOWN) { input.right = true; } - if (keystate.e == SDL_KEYDOWN) { input.interact = true; } - if (keystate.enter == SDL_KEYDOWN || keystate.space == SDL_KEYDOWN) { input.select = true; } - if (keystate.esc == SDL_KEYDOWN) { input.pause = true; } - SDL_GetRelativeMouseState(&input.mouse_x_delta, &input.mouse_y_delta); - - bool quit_requested = false; - -#ifdef BUILD_RELEASE - game.update(&game.memory, dt, input, &quit_requested); - game.render(&game.memory); -#else - { - struct stat attrib; - stat(game.lib_name, &attrib); - time_t mod_time = attrib.st_mtime; - if (mod_time != game.mod_time) - { - SDL_CloseAudioDevice(audio_device); - - SDL_UnloadObject(game.lib_ptr); - game.lib_ptr = NULL; - game.update = NULL; - game.render = NULL; - game.debug = NULL; - game.audio_callback = NULL; - game.shutdown = NULL; - - // Failure here is likely the first few times while it attempts to load a library - // that has not finished compiling, so we let it fail and try again next time - game.lib_ptr = SDL_LoadObject(game.lib_name); - if (game.lib_ptr) - { - game.mod_time = mod_time; - game.update = SDL_LoadFunction(game.lib_ptr, "game_update"); - game.render = SDL_LoadFunction(game.lib_ptr, "game_render"); - game.shutdown = SDL_LoadFunction(game.lib_ptr, "game_shutdown"); - game.debug = SDL_LoadFunction(game.lib_ptr, "game_debug"); - game.audio_callback = SDL_LoadFunction(game.lib_ptr, "game_audio_callback"); - - if (game.audio_callback) - { - // Need to re-initialize the audio device so it gets the updated callback pointer - audio_specs.callback = game.audio_callback; - - SDL_AudioSpec have; - audio_device = SDL_OpenAudioDevice(NULL, 0, &audio_specs, &have, 0); - - SDL_PauseAudioDevice(audio_device, 0); - } - } - } - } - - if (game.update && game.render && game.debug) - { - uint64_t update_time; - { - uint64_t pre_time = SDL_GetTicks64(); - game.update(&game.memory, dt, input, &quit_requested); - uint64_t post_time = SDL_GetTicks64(); - update_time = post_time - pre_time; - } - - uint16_t render_time; - { - uint64_t pre_time = SDL_GetTicks64(); - game.render(); - uint64_t post_time = SDL_GetTicks64(); - render_time = post_time - pre_time; - } - - game.debug(update_time, render_time, frame_time); - } -#endif - - is_running = !quit_requested; - - SDL_GL_SwapWindow(window); - } - - game.shutdown(); - - SDL_UnloadObject(game.lib_ptr); - SDL_QuitSubSystem(SDL_INIT_AUDIO); - SDL_QuitSubSystem(SDL_INIT_VIDEO); - SDL_Quit(); - - return EXIT_SUCCESS; -} - diff --git a/code/tools/blender/ajm_export/__init__.py b/code/tools/blender/ajm_export/__init__.py new file mode 100644 index 0000000..c0b70bb --- /dev/null +++ b/code/tools/blender/ajm_export/__init__.py @@ -0,0 +1,81 @@ +bl_info = { + "name": "AJM Exporter", + "description": "Exports AJM game data.", + "author": "Austin Morlan", + "blender": (2, 93, 0), + "location": "File > Export > Game (.bin)", + "category": "Import-Export", +} + +import bpy +from bpy_extras.io_utils import ExportHelper +from bpy.props import StringProperty +from bpy.types import Operator +from bpy.app.handlers import persistent + +import importlib +import os + +from .types import * +from .data import * + +#import pdb; pdb.set_trace() + +# Handle reloading of submodules +if "bpy" in locals(): + importlib.reload(types) + importlib.reload(data) + +def export(path): + base_name = os.path.splitext(path)[0] + ext = os.path.splitext(path)[1] + + scene = Scene() + + data1_path = base_name + "1" + ext + data1 = Data1(scene) + data1.serialize(data1_path) + + data2_path = base_name + "2" + ext + data2 = Data2(scene) + data2.serialize(data2_path) + + return {'FINISHED'} + +@persistent +def manual_export(dummy): + if "level.blend" in bpy.data.filepath: + path = bpy.path.abspath("//../../processed/data1.bin") + scene = Scene() + data1 = Data1(scene) + data1.serialize(path) + +class ExportGame(Operator, ExportHelper): + bl_idname = "game_export.scene_text" + bl_label = "Export Game (bin) File" + filename_ext = ".bin" + filter_glob: StringProperty( + default="*.bin", + options={'HIDDEN'}, + maxlen=255) + + def execute(self, context): + return export(self.filepath) + +def menu_func_export(self, context): + self.layout.operator(ExportGame.bl_idname, text="Game (.bin) Custom") + +def register(): + bpy.utils.register_class(ExportGame) + bpy.types.TOPBAR_MT_file_export.append(menu_func_export) + + if not manual_export in bpy.app.handlers.save_post: + bpy.app.handlers.save_post.append(manual_export) + +def unregister(): + bpy.utils.unregister_class(ExportGame) + bpy.types.TOPBAR_MT_file_export.remove(menu_func_export) + + if manual_export in bpy.app.handlers.save_post: + bpy.app.handlers.save_post.remove(manual_export) + diff --git a/code/tools/blender/ajm_export/data.py b/code/tools/blender/ajm_export/data.py new file mode 100644 index 0000000..07eb00d --- /dev/null +++ b/code/tools/blender/ajm_export/data.py @@ -0,0 +1,240 @@ +import bpy + +import os +import numpy as np + +from .types import * + +@dataclass +class Scene: + transforms: list[Transform] + + @classmethod + def collect_transforms(cls, parent, objs, out): + if len(objs) == 0: + return + + for obj in objs: + if parent == "": + name = obj.name + else: + name = parent + "+" + obj.name + + position = np.array([obj.location.x, obj.location.y, obj.location.z], dtype="float32") + rotation = np.array([obj.rotation_euler.x, obj.rotation_euler.y, obj.rotation_euler.z], dtype="float32") + scale = np.array([obj.scale.x, obj.scale.y, obj.scale.z], dtype="float32") + + if obj.instance_type == "COLLECTION": + prefab = obj.instance_collection + + # Collections flatten the hierarchy; unflatten it + components = {} + for o in prefab.objects: + components[o.name] = o + + to_remove = [] + for (k,v) in components.items(): + for child in v.children: + if child.name in components: + to_remove.append(child.name) + + for r in to_remove: + components.pop(r) + + # Now we have the direct children of the prefab itself + children = [] + for child in components: + child_name = name + "+" + child + children.append(child_name) + + transform = Transform(name, position, rotation, scale, parent, children, Handle(0), [], obj) + out.append(transform) + + cls.collect_transforms(name, components.values(), out) + else: + children = [] + for child in obj.children: + child_name = name + "+" + child.name + children.append(child_name) + + transform = Transform(name, position, rotation, scale, parent, children, Handle(0), [], obj) + out.append(transform) + + cls.collect_transforms(name, obj.children, out) + + def __init__(self): + # Load transforms in hierarchical order + transforms = [Transform()] + self.collect_transforms("Root", bpy.data.objects["Root"].children, transforms) + + # Set up parent-child relationships + for transform in transforms: + if transform.parent_name != "": + for i, parent_transform in enumerate(transforms): + if transform.parent_name == parent_transform.name: + transform.parent = Handle(np.uint32(i)) + break + + if len(transform.children_names) > 0: + for child_name in transform.children_names: + for i, child_transform in enumerate(transforms): + if child_name == child_transform.name: + transform.children.append(Handle(np.uint32(i))) + break + + self.transforms = transforms + +@dataclass +class Data1: + cameras: list[Camera] + materials: list[Material] + meshes: list[Mesh] + renderables: list[Renderable] + box_colliders: list[BoxCollider] + point_lights: list[PointLight] + + def __init__(self, scene): + materials = [Material()] + for material in bpy.data.materials: + if material.name == "Dots Stroke": + continue + + materials.append(Material.load(material)) + + meshes = [Mesh()] + for mesh in bpy.data.meshes: + meshes.append(Mesh.load(mesh)) + + renderables = [Renderable()] + box_colliders = [BoxCollider()] + point_lights = [PointLight()] + cameras = [Camera()] + for (i,transform) in enumerate(scene.transforms): + if transform.name == "NULL": + continue; + + obj = transform.obj + + if obj.ajm_type.box_collider: + box_colliders.append(BoxCollider.load(obj, i)) + + if obj.ajm_type.camera: + cameras.append(Camera.load(obj, i)) + + if obj.ajm_type.point_light: + point_lights.append(PointLight.load(obj, i)) + + if obj.ajm_type.renderable: + renderables.append(Renderable.load(obj, meshes, materials, i)) + + self.cameras = cameras + self.materials = materials + self.meshes = meshes + self.transforms = scene.transforms + self.renderables = renderables + self.box_colliders = box_colliders + self.point_lights = point_lights + + def serialize(self, path): + fp = open(path, "wb") + fp.write("AJM\0".encode('UTF-8')) + + # Transforms + print("Transforms: " + str(len(self.transforms)-1)) + transform_count = np.uint16(len(self.transforms)) + fp.write(transform_count.tobytes()) + for transform in self.transforms: + transform.serialize(fp) + + # Meshes + print("Meshes: " + str(len(self.meshes)-1)) + mesh_count = np.uint16(len(self.meshes)) + fp.write(mesh_count.tobytes()) + for mesh in self.meshes: + mesh.serialize(fp) + + # Materials + print("Materials: " + str(len(self.materials)-1)) + material_count = np.uint16(len(self.materials)) + fp.write(material_count.tobytes()) + for material in self.materials: + material.serialize(fp) + + # Cameras + print("Cameras: " + str(len(self.cameras)-1)) + camera_count = np.uint16(len(self.cameras)) + fp.write(camera_count.tobytes()) + for camera in self.cameras: + camera.serialize(fp) + + # Renderables + print("Renderables: " + str(len(self.renderables)-1)) + renderable_count = np.uint16(len(self.renderables)) + fp.write(renderable_count.tobytes()) + for renderable in self.renderables: + renderable.serialize(fp) + + # Box Colliders + print("Box Colliders: " + str(len(self.box_colliders)-1)) + box_collider_count = np.uint16(len(self.box_colliders)) + fp.write(box_collider_count.tobytes()) + for box_collider in self.box_colliders: + box_collider.serialize(fp) + + # Point Lights + print("Point Lights: " + str(len(self.point_lights)-1)) + point_light_count = np.uint16(len(self.point_lights)) + fp.write(point_light_count.tobytes()) + for point_light in self.point_lights: + point_light.serialize(fp) + + fp.close() + +@dataclass +class Data2: + sounds: list[Sound] + audio_sources: list[AudioSource] + + def __init__(self, scene): + sounds = [Sound()] + audio_sources = [AudioSource()] + for (i,transform) in enumerate(scene.transforms): + if transform.name == "NULL": + continue; + + obj = transform.obj + + if obj.ajm_type.audio_source: + sound = Sound.load(obj.ajm_audio_source.file_path) + + unique = True + for s in sounds: + if sound.path == s.path: + unique = False + + if unique: + sounds.append(sound) + + audio_sources.append(AudioSource.load(obj, sounds, i)) + + self.sounds = sounds + self.audio_sources = audio_sources + + def serialize(self, path): + fp = open(path, "wb") + fp.write("AJM\0".encode('UTF-8')) + + print("Sounds: " + str(len(self.sounds)-1)) + sound_count = np.uint16(len(self.sounds)) + fp.write(sound_count.tobytes()) + for sound in self.sounds: + sound.serialize(fp) + + print("Audio Sources: " + str(len(self.audio_sources)-1)) + audio_source_count = np.uint16(len(self.audio_sources)) + fp.write(audio_source_count.tobytes()) + for audio_source in self.audio_sources: + audio_source.serialize(fp) + + fp.close() + diff --git a/code/tools/blender/ajm_export/types.py b/code/tools/blender/ajm_export/types.py new file mode 100644 index 0000000..6e1f91a --- /dev/null +++ b/code/tools/blender/ajm_export/types.py @@ -0,0 +1,367 @@ +import bpy + +import os +import numpy as np +import wave +from dataclasses import dataclass, field + +Handle = np.uint32 + +@dataclass +class AudioSource: + name: str = "NULL" + transform: Handle = Handle(0) + type: np.uint32 = np.uint32(0) + volume: np.float32 = np.float32(0) + sound: Handle = Handle(0) + + @classmethod + def load(cls, obj, sounds, transform_index): + name = obj.name + transform = Handle(np.uint32(transform_index)) + volume = np.float32(obj.ajm_audio_source.volume) + + type = np.uint32(0) + if obj.ajm_audio_source.type == "sfx": + type = np.uint32(1) + elif obj.ajm_audio_source.type == "music": + type = np.uint32(2) + + sound = Handle(0) + for i,s in enumerate(sounds): + if s.path == obj.ajm_audio_source.file_path: + sound = Handle(np.uint32(i)) + + return cls(name, transform, type, volume, sound) + + def serialize(self, fp): + name = self.name.encode('UTF-8') + "\0".encode('UTF-8') + name_length = np.uint16(len(name)) + + fp.write(name_length.tobytes()) + fp.write(name) + fp.write(self.transform.tobytes()) + fp.write(self.volume.tobytes()) + fp.write(self.type.tobytes()) + fp.write(self.sound.tobytes()) + +@dataclass +class BoxCollider: + transform: Handle = Handle(0) + extents: np.array([]) = np.array([0,0,0], dtype="float32") + + @classmethod + def load(cls, obj, transform_index): + name = obj.name + transform = Handle(np.uint32(transform_index)) + extents = np.array([round(obj.ajm_box_collider.extents.x/2, 4), + round(obj.ajm_box_collider.extents.y/2, 4), + round(obj.ajm_box_collider.extents.z/2, 4)], + dtype="float32") + + return cls(transform, extents) + + def serialize(self, fp): + fp.write(self.transform.tobytes()) + fp.write(self.extents.tobytes()) + +@dataclass +class Camera: + name: str = "NULL" + transform: Handle = Handle(0) + + @classmethod + def load(cls, obj, transform_index): + name = obj.name + transform = Handle(np.uint32(transform_index)) + + return cls(name, transform) + + def serialize(self, fp): + name = self.name.encode('UTF-8') + "\0".encode('UTF-8') + name_length = np.uint16(len(name)) + + fp.write(name_length.tobytes()) + fp.write(name) + fp.write(self.transform.tobytes()) + +@dataclass +class Texture: + data: np.array([]) = np.array([], dtype="uint8") + width: np.uint16 = np.uint16(0) + height: np.uint16 = np.uint16(0) + channels: np.uint8 = np.uint8(0) + +@dataclass +class Material: + name: str = "NULL" + texture: Texture = Texture() + + @classmethod + def load(cls, obj): + name = obj.name + node = obj.node_tree.nodes['Image Texture'] + + data = np.array([int(p * 255) for p in node.image.pixels], dtype="uint8") + width = np.uint16(node.image.size[0]) + height = np.uint16(node.image.size[1]) + channels = np.uint8(node.image.channels) + texture = Texture(data, width, height, channels) + + return cls(name, texture) + + def serialize(self, fp): + name = self.name.encode('UTF-8') + "\0".encode('UTF-8') + name_length = np.uint16(len(name)) + + fp.write(name_length.tobytes()) + fp.write(name) + fp.write(self.texture.width.tobytes()) + fp.write(self.texture.height.tobytes()) + fp.write(self.texture.channels.tobytes()) + fp.write(self.texture.data.tobytes()) + +@dataclass +class Vertex: + position: np.array([]) = np.array([0,0,0], dtype="float32") + normal: np.array([]) = np.array([0,0,0], dtype="float32") + texcoord: np.array([]) = np.array([0,0,0], dtype="float32") + +@dataclass +class Mesh: + name: str = "NULL" + indices: list[np.uint16] = field(default_factory=list) + vertices: list[Vertex] = field(default_factory=list) + + @classmethod + def load(cls, obj): + name = obj.name + + # Calculate triangles and split normals + obj.calc_loop_triangles() + obj.calc_normals_split() + + # Collect all of the indices so that we know how many unique vertices we have + indices = [] + max_index = 0 + for tri in obj.loop_triangles: + loop_idx0 = tri.loops[0] + loop_idx1 = tri.loops[1] + loop_idx2 = tri.loops[2] + + indices.append(np.uint16(loop_idx0)) + indices.append(np.uint16(loop_idx1)) + indices.append(np.uint16(loop_idx2)) + + max_index = max(max_index, max(loop_idx0, max(loop_idx1, loop_idx2))) + + vertices = [None] * (max_index+1) + for tri in obj.loop_triangles: + vert_idx0 = tri.vertices[0] + vert_idx1 = tri.vertices[1] + vert_idx2 = tri.vertices[2] + loop_idx0 = tri.loops[0] + loop_idx1 = tri.loops[1] + loop_idx2 = tri.loops[2] + + p0 = np.array([ + obj.vertices[vert_idx0].co[0], + obj.vertices[vert_idx0].co[1], + obj.vertices[vert_idx0].co[2]], dtype="float32") + + p1 = np.array([ + obj.vertices[vert_idx1].co[0], + obj.vertices[vert_idx1].co[1], + obj.vertices[vert_idx1].co[2]], dtype="float32") + + p2 = np.array([ + obj.vertices[vert_idx2].co[0], + obj.vertices[vert_idx2].co[1], + obj.vertices[vert_idx2].co[2]], dtype="float32") + + n0 = np.array([ + tri.split_normals[0][0], + tri.split_normals[0][1], + tri.split_normals[0][2]], dtype="float32") + + n1 = np.array([ + tri.split_normals[1][0], + tri.split_normals[1][1], + tri.split_normals[1][2]], dtype="float32") + + n2 = np.array([ + tri.split_normals[2][0], + tri.split_normals[2][1], + tri.split_normals[2][2]], dtype="float32") + + t0 = np.array([ + obj.uv_layers.active.data[loop_idx0].uv[0], + obj.uv_layers.active.data[loop_idx0].uv[1]], dtype="float32") + + t1 = np.array([ + obj.uv_layers.active.data[loop_idx1].uv[0], + obj.uv_layers.active.data[loop_idx1].uv[1]], dtype="float32") + + t2 = np.array([ + obj.uv_layers.active.data[loop_idx2].uv[0], + obj.uv_layers.active.data[loop_idx2].uv[1]], dtype="float32") + + v0 = Vertex(p0, n0, t0) + v1 = Vertex(p1, n1, t1) + v2 = Vertex(p2, n2, t2) + + vertices[loop_idx0] = v0 + vertices[loop_idx1] = v1 + vertices[loop_idx2] = v2 + + return cls(name, indices, vertices) + + def serialize(self, fp): + name = self.name.encode('UTF-8') + "\0".encode('UTF-8') + name_length = np.uint16(len(name)) + + fp.write(name_length.tobytes()) + fp.write(name) + + index_count = np.uint16(len(self.indices)) + fp.write(index_count.tobytes()) + for index in self.indices: + fp.write(index.tobytes()) + + vertex_count = np.uint16(len(self.vertices)) + fp.write(vertex_count.tobytes()) + for vertex in self.vertices: + fp.write(vertex.position.tobytes()) + fp.write(vertex.normal.tobytes()) + fp.write(vertex.texcoord.tobytes()) + +@dataclass +class Transform: + name: str = "NULL" + position: np.array([]) = np.array([0,0,0], dtype="float32") + rotation: np.array([]) = np.array([0,0,0], dtype="float32") + scale: np.array([]) = np.array([1,1,1], dtype="float32") + parent_name: str = "" + children_names: list[str] = field(default_factory=list) + parent: Handle = Handle(0) + children: list[Handle] = field(default_factory=list) + obj: object = None + + def serialize(self, fp): + fp.write(self.position.tobytes()) + fp.write(self.rotation.tobytes()) + fp.write(self.scale.tobytes()) + + fp.write(self.parent.tobytes()) + + children_count = np.uint16(len(self.children)) + fp.write(children_count.tobytes()) + for child in self.children: + fp.write(child.tobytes()) + +@dataclass +class Renderable: + name: str = "NULL" + transform: Handle = Handle(0) + mesh: Handle = Handle(0) + material: Handle = Handle(0) + + @classmethod + def load(cls, obj, meshes, materials, transform_index): + name = obj.name + transform = Handle(np.uint32(transform_index)) + + mesh = Handle(0) + if obj.data != None: + mesh_name = obj.data.name + for i,m in enumerate(meshes): + if mesh_name == m.name: + mesh = Handle(np.uint32(i)) + + material = Handle(0) + if len(obj.material_slots) > 0: + material_name = obj.material_slots[0].name + for i,m in enumerate(materials): + if material_name == m.name: + material = Handle(np.uint32(i)) + + return cls(name, transform, mesh, material) + + def serialize(self, fp): + name = self.name.encode('UTF-8') + "\0".encode('UTF-8') + name_length = np.uint16(len(name)) + + fp.write(name_length.tobytes()) + fp.write(name) + fp.write(self.transform.tobytes()) + fp.write(self.mesh.tobytes()) + fp.write(self.material.tobytes()) + +@dataclass +class PointLight: + transform: Handle = Handle(0) + color: np.array([]) = np.array([0,0,0], dtype="float32") + intensity: np.float32 = np.float32(0) + radius: np.float32 = np.float32(0) + + @classmethod + def load(cls, obj, transform_index): + name = obj.name + transform = Handle(np.uint32(transform_index)) + color = np.array([round(obj.ajm_point_light.color.r, 4), + round(obj.ajm_point_light.color.g, 4), + round(obj.ajm_point_light.color.b, 4)], + dtype="float32") + intensity = np.float32(obj.ajm_point_light.intensity) + radius = np.float32(obj.ajm_point_light.radius) + + return cls(transform, color, intensity, radius) + + def serialize(self, fp): + fp.write(self.transform.tobytes()) + fp.write(self.color.tobytes()) + fp.write(self.intensity.tobytes()) + fp.write(self.radius.tobytes()) + +@dataclass +class Sound: + path: str = "NULL" + data: np.array([]) = np.array([], dtype="float32") + length: np.uint32 = np.uint32(0) + sample_rate: np.uint32 = np.uint32(0) + channel_count: np.uint8 = np.uint8(0) + + @classmethod + def load(cls, path): + abspath = bpy.path.abspath(path) + wav = wave.open(abspath, 'rb') + + length = np.uint32(wav.getnframes()) + sample_rate = np.uint32(wav.getframerate()) + channel_count = np.uint8(wav.getnchannels()) + + data_bytes = wav.readframes(length) + int_to_float = 1.0/32768.0 + + data_int = np.frombuffer(data_bytes, dtype="int16") + data_f32 = [] + + for i,d in enumerate(data_int): + val = float(d*int_to_float) + data_f32.append(val) + + data = np.array(data_f32, dtype="float32") + + return cls(path, data, length, sample_rate, channel_count) + + def serialize(self, fp): + name = os.path.basename(self.path).encode('UTF-8') + "\0".encode('UTF-8') + name_length = np.uint16(len(name)) + + fp.write(name_length.tobytes()) + fp.write(name) + fp.write(self.length.tobytes()) + fp.write(self.sample_rate.tobytes()) + fp.write(self.channel_count.tobytes()) + fp.write(self.data.tobytes()) + diff --git a/code/tools/blender/ajm_panel.py b/code/tools/blender/ajm_panel.py new file mode 100644 index 0000000..470bed0 --- /dev/null +++ b/code/tools/blender/ajm_panel.py @@ -0,0 +1,239 @@ +bl_info = { + 'name': 'AJM Data Panel', + 'blender': (2, 93, 0), + 'category': 'Object'} + +import bpy +from bpy.props import BoolProperty, FloatProperty, FloatVectorProperty, StringProperty, PointerProperty, EnumProperty + +class ajm_type(bpy.types.PropertyGroup): + @classmethod + def register(self): + bpy.types.Object.ajm_type = PointerProperty( + name = "AJM - Data Type", + description = "AJM - Data Type", + type = self) + + self.audio_source = BoolProperty( + name = "Audio Source", + description = "Audio source component", + default = False) + + self.box_collider = BoolProperty( + name = "Box Collider", + description = "Box Collider component", + default = False) + + self.camera = BoolProperty( + name = "Camera", + description = "Camera component", + default = False) + + self.point_light = BoolProperty( + name = "Point Light", + description = "Point Light component", + default = False) + + self.renderable = BoolProperty( + name = "Renderable", + description = "Renderable component", + default = False) + + @classmethod + def unregister(self): + del bpy.types.Object.ajm_type + +class ajm_audio_source(bpy.types.PropertyGroup): + @classmethod + def register(self): + bpy.types.Object.ajm_audio_source = PointerProperty( + name="AJM - Audio Source", + description="AJM - Audio Source", + type=self) + + self.file_path = StringProperty( + name="File Path", + description="Path of the audio WAV file", + subtype="FILE_PATH", + default="") + + self.volume = FloatProperty( + name="Volume", + description="Volume of the audio source", + min=0.0, + soft_min=0.0, + max=1.0, + soft_max=1.0, + default=1.0) + + self.type = EnumProperty( + name="Type", + description="Type of audio source", + items={ + ('null', 'Null', 'Null', 0), + ('sfx', 'SFX', 'One-shot SFX', 1), + ('music', 'Music', 'Looping music', 2)}, + default=0) + + @classmethod + def unregister(self): + del bpy.types.Object.ajm_audio_source + +class ajm_box_collider(bpy.types.PropertyGroup): + def change_extents(self, context): + context.active_object.scale.x = self.extents.x + context.active_object.scale.y = self.extents.y + context.active_object.scale.z = self.extents.z + return None + + @classmethod + def register(self): + bpy.types.Object.ajm_box_collider = PointerProperty( + name="AJM - Box Collider", + description="AJM - Box Collider", + type=self) + + self.extents = FloatVectorProperty( + name="Extents", + description="Extents of the box", + subtype="XYZ", + min=0.0, + soft_min=0.0, + default=[1.0,1.0,1.0], + update=self.change_extents) + + @classmethod + def unregister(self): + del bpy.types.Object.ajm_box_collider + +class ajm_camera(bpy.types.PropertyGroup): + @classmethod + def register(self): + bpy.types.Object.ajm_camera = PointerProperty( + name="AJM - Camera", + description="AJM - Camera", + type=self) + + @classmethod + def unregister(self): + del bpy.types.Object.ajm_camera + +class ajm_point_light(bpy.types.PropertyGroup): + def change_radius(self, context): + context.active_object.empty_display_size = self.radius + return None + + @classmethod + def register(self): + bpy.types.Object.ajm_point_light = PointerProperty( + name="AJM - Point Light", + description="AJM - Point Light", + type=self) + + self.color = FloatVectorProperty( + name="Color", + description="Color of the light", + subtype="COLOR", + min=0.0, + soft_min=0.0, + max=1.0, + soft_max=1.0, + default=[1.0,1.0,1.0]) + + self.intensity = FloatProperty( + name="Intensity", + description="Intensity of the light", + min=0.0, + soft_min=0.0, + default=1.0) + + self.radius = FloatProperty( + name="Radius", + description="Effective radius of the light", + min=0.0, + soft_min=0.0, + default=1.0, + update=self.change_radius) + + @classmethod + def unregister(self): + del bpy.types.Object.ajm_point_light + +class ajm_renderable(bpy.types.PropertyGroup): + @classmethod + def register(self): + bpy.types.Object.ajm_renderable = PointerProperty( + name="AJM - Renderable", + description="AJM - Renderable", + type=self) + + @classmethod + def unregister(self): + del bpy.types.Object.ajm_renderable + +class ajm_panel(bpy.types.Panel): + bl_label = "AJM Panel" + bl_idname = "OBJECT_PT_AJM_Panel" + + bl_space_type = "PROPERTIES" + bl_region_type = "WINDOW" + bl_context = "object" + + def draw(self, context): + column = self.layout.column() + + column.prop(context.active_object.ajm_type, "audio_source") + if context.active_object.ajm_type.audio_source: + box = column.box() + row = box.row() + row.prop(context.active_object.ajm_audio_source, "file_path") + row = box.row() + row.prop(context.active_object.ajm_audio_source, "volume") + row = box.row() + row.prop(context.active_object.ajm_audio_source, "type") + + column.prop(context.active_object.ajm_type, "box_collider") + if context.active_object.ajm_type.box_collider: + box = column.box() + row = box.row() + row.prop(context.active_object.ajm_box_collider, "extents") + + column.prop(context.active_object.ajm_type, "camera") + if context.active_object.ajm_type.camera: + box = column.box() + + column.prop(context.active_object.ajm_type, "point_light") + if context.active_object.ajm_type.point_light: + box = column.box() + row = box.row() + row.prop(context.active_object.ajm_point_light, "color") + row = box.row() + row.prop(context.active_object.ajm_point_light, "intensity") + row = box.row() + row.prop(context.active_object.ajm_point_light, "radius") + + column.prop(context.active_object.ajm_type, "renderable") + if context.active_object.ajm_type.renderable: + box = column.box() + +def register(): + bpy.utils.register_class(ajm_panel) + bpy.utils.register_class(ajm_type) + bpy.utils.register_class(ajm_audio_source) + bpy.utils.register_class(ajm_box_collider) + bpy.utils.register_class(ajm_camera) + bpy.utils.register_class(ajm_point_light) + bpy.utils.register_class(ajm_renderable) + +def unregister(): + bpy.utils.unregister_class(ajm_panel) + bpy.utils.unregister_class(ajm_type) + bpy.utils.unregister_class(ajm_audio_source) + bpy.utils.unregister_class(ajm_box_collider) + bpy.utils.unregister_class(ajm_camera) + bpy.utils.unregister_class(ajm_point_light) + bpy.utils.unregister_class(ajm_renderable) + +if __name__ == '__main__': + register() + diff --git a/code/tools/scripts/header_generator.sh b/code/tools/scripts/header_generator.sh new file mode 100755 index 0000000..fbe3b84 --- /dev/null +++ b/code/tools/scripts/header_generator.sh @@ -0,0 +1,27 @@ +#!/usr/bin/env bash + +output=$1 + +echo -e "#pragma once\n" > $output + +for input in "${@:2}"; +do + name=$(basename $input | sed -r 's/\./_/g') + contents="const char* ${name} = \"" + + while read -r line; + do + if [[ $line == *"#"* ]] || [[ $line == *"//"* ]]; + then + contents="${contents}\\n$line\\n" + else + contents="${contents}$line" + fi + done < "$input" + + echo "$contents\";" >> $output + echo >> $output +done + +echo >> $output +