Browse Source

Initial works to support 0.11.x, disabled armeabi builds, using now clang and libc++ instead of gnustl

Martin Felis 7 years ago
parent
commit
4d8f4f70ce
100 changed files with 4104 additions and 8788 deletions
  1. 1 1
      love/build.gradle
  2. 3 3
      love/src/jni/Application.mk
  3. 5 4
      love/src/jni/love/.hg_archival.txt
  4. 57 45
      love/src/jni/love/.hgignore
  5. 4 0
      love/src/jni/love/.hgtags
  6. 15 4
      love/src/jni/love/Android.mk
  7. 357 87
      love/src/jni/love/CMakeLists.txt
  8. 167 0
      love/src/jni/love/changes.txt
  9. 12 3
      love/src/jni/love/extra/appveyor/appveyor.yml
  10. BIN
      love/src/jni/love/extra/windows/love.rc
  11. 246 7
      love/src/jni/love/license.txt
  12. 0 28
      love/src/jni/love/platform/macosx/Info-Framework.plist
  13. 0 75
      love/src/jni/love/platform/macosx/OSX.mm
  14. BIN
      love/src/jni/love/platform/macosx/dmg/DS_Store
  15. BIN
      love/src/jni/love/platform/macosx/dmg/VolumeIcon.icns
  16. BIN
      love/src/jni/love/platform/macosx/dmg/backgroundImage.tiff
  17. BIN
      love/src/jni/love/platform/macosx/icons/Love.icns
  18. BIN
      love/src/jni/love/platform/macosx/icons/LoveDocument.icns
  19. 0 87
      love/src/jni/love/platform/macosx/love-Info.plist
  20. 0 2702
      love/src/jni/love/platform/macosx/love-framework.xcodeproj/project.pbxproj
  21. BIN
      love/src/jni/love/platform/macosx/love.xcodeproj/TemplateIcon.icns
  22. 0 1052
      love/src/jni/love/platform/macosx/love.xcodeproj/default.pbxuser
  23. 0 508
      love/src/jni/love/platform/macosx/love.xcodeproj/project.pbxproj
  24. 0 847
      love/src/jni/love/platform/msvc2010/liblove.vcxproj
  25. 0 1796
      love/src/jni/love/platform/msvc2010/liblove.vcxproj.filters
  26. BIN
      love/src/jni/love/platform/msvc2010/love.ico
  27. BIN
      love/src/jni/love/platform/msvc2010/love.rc
  28. 0 47
      love/src/jni/love/platform/msvc2010/love.sln
  29. 0 273
      love/src/jni/love/platform/msvc2010/love.vcxproj
  30. 0 9
      love/src/jni/love/platform/msvc2010/love.vcxproj.filters
  31. 22 20
      love/src/jni/love/platform/unix/automagic
  32. 56 59
      love/src/jni/love/platform/unix/configure.ac
  33. 0 5
      love/src/jni/love/platform/unix/debian/changelog
  34. 0 58
      love/src/jni/love/platform/unix/debian/control
  35. 1 1
      love/src/jni/love/platform/unix/debian/copyright
  36. 0 16
      love/src/jni/love/platform/unix/debian/rules
  37. 74 0
      love/src/jni/love/platform/unix/deps.m4
  38. 3 2
      love/src/jni/love/platform/unix/exclude
  39. 0 38
      love/src/jni/love/platform/unix/gen-makefile
  40. 60 64
      love/src/jni/love/platform/unix/genmodules
  41. 0 36
      love/src/jni/love/platform/unix/love.1
  42. 0 5
      love/src/jni/love/platform/unix/postinst
  43. 0 4
      love/src/jni/love/platform/unix/postrm
  44. 26 1
      love/src/jni/love/platform/xcode/Images.xcassets/iOS AppIcon.appiconset/Contents.json
  45. 1 1
      love/src/jni/love/platform/xcode/ios/love-ios.plist
  46. 527 247
      love/src/jni/love/platform/xcode/liblove.xcodeproj/project.pbxproj
  47. 102 19
      love/src/jni/love/platform/xcode/love.xcodeproj/project.pbxproj
  48. 5 0
      love/src/jni/love/platform/xcode/love.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings
  49. 1 1
      love/src/jni/love/platform/xcode/macosx/liblove-macosx.plist
  50. 4 2
      love/src/jni/love/platform/xcode/macosx/love-macosx.plist
  51. 39 7
      love/src/jni/love/src/common/Color.h
  52. 29 0
      love/src/jni/love/src/common/Data.cpp
  53. 7 1
      love/src/jni/love/src/common/Data.h
  54. 1 1
      love/src/jni/love/src/common/EnumMap.h
  55. 1 1
      love/src/jni/love/src/common/Exception.cpp
  56. 1 1
      love/src/jni/love/src/common/Exception.h
  57. 230 41
      love/src/jni/love/src/common/Matrix.cpp
  58. 103 22
      love/src/jni/love/src/common/Matrix.h
  59. 1 1
      love/src/jni/love/src/common/Memoizer.cpp
  60. 1 1
      love/src/jni/love/src/common/Memoizer.h
  61. 10 1
      love/src/jni/love/src/common/Module.cpp
  62. 6 2
      love/src/jni/love/src/common/Module.h
  63. 3 1
      love/src/jni/love/src/common/Object.cpp
  64. 4 1
      love/src/jni/love/src/common/Object.h
  65. 55 0
      love/src/jni/love/src/common/Optional.h
  66. 2 2
      love/src/jni/love/src/common/Reference.cpp
  67. 1 1
      love/src/jni/love/src/common/Reference.h
  68. 29 0
      love/src/jni/love/src/common/Stream.cpp
  69. 2 0
      love/src/jni/love/src/common/Stream.h
  70. 25 0
      love/src/jni/love/src/common/StringMap.cpp
  71. 22 1
      love/src/jni/love/src/common/StringMap.h
  72. 56 52
      love/src/jni/love/src/common/Variant.cpp
  73. 7 6
      love/src/jni/love/src/common/Variant.h
  74. 1 1
      love/src/jni/love/src/common/Vector.cpp
  75. 216 131
      love/src/jni/love/src/common/Vector.h
  76. 17 1
      love/src/jni/love/src/common/android.cpp
  77. 3 1
      love/src/jni/love/src/common/android.h
  78. 112 19
      love/src/jni/love/src/common/b64.cpp
  79. 18 4
      love/src/jni/love/src/common/b64.h
  80. 34 29
      love/src/jni/love/src/common/config.h
  81. 3 1
      love/src/jni/love/src/common/delay.cpp
  82. 1 1
      love/src/jni/love/src/common/delay.h
  83. 187 0
      love/src/jni/love/src/common/deprecation.cpp
  84. 81 0
      love/src/jni/love/src/common/deprecation.h
  85. 156 0
      love/src/jni/love/src/common/halffloat.cpp
  86. 38 0
      love/src/jni/love/src/common/halffloat.h
  87. 1 1
      love/src/jni/love/src/common/int.h
  88. 11 1
      love/src/jni/love/src/common/ios.h
  89. 24 1
      love/src/jni/love/src/common/ios.mm
  90. 1 1
      love/src/jni/love/src/common/macosx.h
  91. 1 1
      love/src/jni/love/src/common/macosx.mm
  92. 9 5
      love/src/jni/love/src/common/math.h
  93. 70 0
      love/src/jni/love/src/common/memory.cpp
  94. 9 18
      love/src/jni/love/src/common/memory.h
  95. 179 0
      love/src/jni/love/src/common/pixelformat.cpp
  96. 138 0
      love/src/jni/love/src/common/pixelformat.h
  97. 193 37
      love/src/jni/love/src/common/runtime.cpp
  98. 135 27
      love/src/jni/love/src/common/runtime.h
  99. 42 105
      love/src/jni/love/src/common/types.cpp
  100. 40 103
      love/src/jni/love/src/common/types.h

+ 1 - 1
love/build.gradle

@@ -21,7 +21,7 @@ android {
         ndk {
         ndk {
             // Specifies the ABI configurations of your native
             // Specifies the ABI configurations of your native
             // libraries Gradle should build and package with your APK.
             // libraries Gradle should build and package with your APK.
-            abiFilters 'armeabi-v7a', 'armeabi'
+            abiFilters 'armeabi-v7a'
         }
         }
     }
     }
     buildTypes {
     buildTypes {

+ 3 - 3
love/src/jni/Application.mk

@@ -1,12 +1,12 @@
 # Uncomment this if you're using STL in your project
 # Uncomment this if you're using STL in your project
 # See CPLUSPLUS-SUPPORT.html in the NDK documentation for more information
 # See CPLUSPLUS-SUPPORT.html in the NDK documentation for more information
 # APP_STL := stlport_static 
 # APP_STL := stlport_static 
-APP_STL := gnustl_shared
-APP_ABI := armeabi armeabi-v7a
+APP_STL := c++_shared
+APP_ABI := armeabi-v7a
 APP_CPPFLAGS := -frtti
 APP_CPPFLAGS := -frtti
 APP_LDFLAGS := -llog -landroid -lz
 APP_LDFLAGS := -llog -landroid -lz
 APP_PLATFORM := 10
 APP_PLATFORM := 10
-NDK_TOOLCHAIN_VERSION := 4.9
+NDK_TOOLCHAIN_VERSION := clang
 
 
 # Fix for building on Windows
 # Fix for building on Windows
 # http://stackoverflow.com/questions/12598933/ndk-build-createprocess-make-e-87-the-parameter-is-incorrect
 # http://stackoverflow.com/questions/12598933/ndk-build-createprocess-make-e-87-the-parameter-is-incorrect

+ 5 - 4
love/src/jni/love/.hg_archival.txt

@@ -1,5 +1,6 @@
 repo: d362ae6ab7f5005b8dbc7cba9ce592637de60f99
 repo: d362ae6ab7f5005b8dbc7cba9ce592637de60f99
-node: 228a26ab99bbb41e47d7ff792c670dba220fca88
-branch: android
-latesttag: 0.9.1
-latesttagdistance: 105
+node: a2e84c9fdb8ca18d073d0e782d68205b9aa9ec96
+branch: default
+latesttag: 0.10.2
+latesttagdistance: 381
+changessincelatesttag: 550

+ 57 - 45
love/src/jni/love/.hgignore

@@ -1,45 +1,57 @@
-relre:platform/msvc2008/include/
-glob:platform/msvc2008/lib/
-relre:platform/msvc2008/(.*)txt
-relre:platform/msvc2008/(.*)suo
-glob:extra/reshax/Release/
-glob:extra/reshax/Debug/
-glob:extra/reshax/resources.h
-glob:extra/reshax/resources.cpp
-glob:*.obj
-glob:*.o
-glob:*.dirstamp
-glob:*.m4
-glob:*.Po
-glob:*.lo
-glob:*.Plo
-glob:*.dll
-glob:*.user
-glob:*.suo
-glob:*/Release*
-glob:*/Debug*
-glob:*.lib
-glob:*.ncb
-glob:*.exe
-glob:*.bat
-glob:platform/macosx/build
-glob:platform/macosx/Build
-glob:platform/macosx/DerivedData
-glob:platform/macosx/*.xcodeproj/bill*
-glob:platform/macosx/*.xcodeproj/xcuserdata
-glob:platform/macosx/*.xcodeproj/project.xcworkspace
-glob:*.DS_Store
-glob:*.dylib
-glob:*.dmg*
-glob:demos
-glob:*.orig
-relre:platform/msvc2010/include/
-glob:platform/msvc2010/lib/
-relre:platform/msvc2010/(.*)txt
-relre:platform/msvc2010/(.*)suo
-relre:platform/msvc2010/(.*)sdf
-relre:platform/msvc2010/(.*)ipch
-glob:.*.swp
-glob:autom4te.cache/
-glob:src/.libs/
-glob:*~
+glob:extra/reshax/Release/
+glob:extra/reshax/Debug/
+glob:extra/reshax/resources.h
+glob:extra/reshax/resources.cpp
+glob:*.obj
+glob:*.o
+glob:*.dirstamp
+glob:*.m4
+glob:*.Po
+glob:*.lo
+glob:*.Plo
+glob:*.dll
+glob:*.user
+glob:*.suo
+glob:*/Release*
+glob:*/Debug*
+glob:*.lib
+glob:*.ncb
+glob:*.exe
+glob:*.bat
+glob:platform/xcode/Build
+glob:platform/xcode/DerivedData
+glob:platform/xcode/ios/include
+glob:platform/xcode/ios/libraries
+glob:*xcuserdata*
+glob:*.DS_Store
+glob:*.dylib
+glob:*.dmg*
+glob:demos
+glob:*.orig
+glob:.*.swp
+glob:autom4te.cache/
+glob:src/.libs/
+glob:*~
+glob:Makefile*
+glob:config*
+glob:libtool
+glob:platform/unix/ar-lib
+glob:platform/unix/compile
+glob:platform/unix/config.guess
+glob:platform/unix/config.sub
+glob:platform/unix/debian/changelog
+glob:platform/unix/debian/control
+glob:platform/unix/debian/rules
+glob:platform/unix/depcomp
+glob:platform/unix/install-sh
+glob:platform/unix/love.desktop
+glob:platform/unix/ltmain.sh
+glob:platform/unix/missing
+glob:.lineno
+glob:*.la
+glob:*.Tpo
+glob:*.rej
+glob:*/.deps
+glob:stamp-h1
+glob:src/love
+glob:src/tags

+ 4 - 0
love/src/jni/love/.hgtags

@@ -7,3 +7,7 @@ bcca82b60d0f5cd724edbe4ed65db18ab95d4691 0.7.2
 e0f98d53debb62347c6433ca0534a0f77f15f76f 0.8.0
 e0f98d53debb62347c6433ca0534a0f77f15f76f 0.8.0
 38c00c788bcb03bda2ad40efebcdfe7a6be85b4a 0.9.0
 38c00c788bcb03bda2ad40efebcdfe7a6be85b4a 0.9.0
 8b113c345e97e7bb7e963e5d67451abdfb05cfde 0.9.1
 8b113c345e97e7bb7e963e5d67451abdfb05cfde 0.9.1
+a5e405cdf14d030b71d09a105086797942ae91a9 0.9.2
+14717f0fb5d96d380c10fe6f41b74b7652c7d836 0.10.0
+3cb3559eebb89803c0b7fa83d51d8e48a2b20b7a 0.10.1
+afc69c4f714534c64e6f8c8660b724b5b736d7f3 0.10.2

+ 15 - 4
love/src/jni/love/Android.mk

@@ -16,6 +16,8 @@ LOCAL_C_INCLUDES  :=  \
 	${LOCAL_PATH}/src/modules \
 	${LOCAL_PATH}/src/modules \
 	${LOCAL_PATH}/src/libraries/ \
 	${LOCAL_PATH}/src/libraries/ \
 	${LOCAL_PATH}/src/libraries/enet/libenet/include \
 	${LOCAL_PATH}/src/libraries/enet/libenet/include \
+	${LOCAL_PATH}/src/libraries/physfs \
+	${LOCAL_PATH}/src/libraries/glslang/glslang/Include \
 	${LOCAL_PATH}/../SDL2-2.0.7/include \
 	${LOCAL_PATH}/../SDL2-2.0.7/include \
 	${LOCAL_PATH}/../jasper-1.900.1/src/libjasper/include \
 	${LOCAL_PATH}/../jasper-1.900.1/src/libjasper/include \
 	${LOCAL_PATH}/../libmng-1.0.10/ \
 	${LOCAL_PATH}/../libmng-1.0.10/ \
@@ -25,7 +27,6 @@ LOCAL_C_INCLUDES  :=  \
 	${LOCAL_PATH}/../openal-soft-1.18.2/OpenAL32/Include \
 	${LOCAL_PATH}/../openal-soft-1.18.2/OpenAL32/Include \
 	${LOCAL_PATH}/../freetype2-android/include \
 	${LOCAL_PATH}/../freetype2-android/include \
 	${LOCAL_PATH}/../freetype2-android/src \
 	${LOCAL_PATH}/../freetype2-android/src \
-	${LOCAL_PATH}/../physfs-3.0.1/src \
 	${LOCAL_PATH}/../mpg123-1.17.0/src/libmpg123 \
 	${LOCAL_PATH}/../mpg123-1.17.0/src/libmpg123 \
 	${LOCAL_PATH}/../libmodplug-0.8.8.4/src \
 	${LOCAL_PATH}/../libmodplug-0.8.8.4/src \
 	${LOCAL_PATH}/../libvorbis-1.3.5/include \
 	${LOCAL_PATH}/../libvorbis-1.3.5/include \
@@ -43,6 +44,7 @@ LOCAL_SRC_FILES := \
 	$(wildcard ${LOCAL_PATH}/src/modules/audio/*.cpp) \
 	$(wildcard ${LOCAL_PATH}/src/modules/audio/*.cpp) \
  	$(wildcard ${LOCAL_PATH}/src/modules/audio/null/*.cpp) \
  	$(wildcard ${LOCAL_PATH}/src/modules/audio/null/*.cpp) \
  	$(wildcard ${LOCAL_PATH}/src/modules/audio/openal/*.cpp) \
  	$(wildcard ${LOCAL_PATH}/src/modules/audio/openal/*.cpp) \
+ 	$(wildcard ${LOCAL_PATH}/src/modules/data/*.cpp) \
 	$(wildcard ${LOCAL_PATH}/src/modules/event/*.cpp) \
 	$(wildcard ${LOCAL_PATH}/src/modules/event/*.cpp) \
  	$(wildcard ${LOCAL_PATH}/src/modules/event/sdl/*.cpp) \
  	$(wildcard ${LOCAL_PATH}/src/modules/event/sdl/*.cpp) \
 	$(wildcard ${LOCAL_PATH}/src/modules/filesystem/*.cpp) \
 	$(wildcard ${LOCAL_PATH}/src/modules/filesystem/*.cpp) \
@@ -87,22 +89,31 @@ LOCAL_SRC_FILES := \
   $(wildcard ${LOCAL_PATH}/src/libraries/Box2D/Dynamics/Joints/*.cpp) \
   $(wildcard ${LOCAL_PATH}/src/libraries/Box2D/Dynamics/Joints/*.cpp) \
   $(wildcard ${LOCAL_PATH}/src/libraries/Box2D/Rope/*.cpp) \
   $(wildcard ${LOCAL_PATH}/src/libraries/Box2D/Rope/*.cpp) \
   $(wildcard ${LOCAL_PATH}/src/libraries/glad/*.cpp) \
   $(wildcard ${LOCAL_PATH}/src/libraries/glad/*.cpp) \
+  $(wildcard ${LOCAL_PATH}/src/libraries/glslang/glslang/GenericCodeGen/*.cpp) \
+  $(wildcard ${LOCAL_PATH}/src/libraries/glslang/glslang/MachineIndependent/*.cpp) \
+  $(wildcard ${LOCAL_PATH}/src/libraries/glslang/glslang/MachineIndependent/preprocessor/*.cpp) \
+  $(wildcard ${LOCAL_PATH}/src/libraries/glslang/glslang/OSDependent/Unix/*.cpp) \
+  $(wildcard ${LOCAL_PATH}/src/libraries/glslang/OGLCompilersDLL/*.cpp) \
+  $(wildcard ${LOCAL_PATH}/src/libraries/glslang/glslang//*.cpp) \
   $(wildcard ${LOCAL_PATH}/src/libraries/enet/*.cpp) \
   $(wildcard ${LOCAL_PATH}/src/libraries/enet/*.cpp) \
   $(wildcard ${LOCAL_PATH}/src/libraries/enet/libenet/*.c) \
   $(wildcard ${LOCAL_PATH}/src/libraries/enet/libenet/*.c) \
+  $(wildcard ${LOCAL_PATH}/src/libraries/lua53/*.c) \
   $(wildcard ${LOCAL_PATH}/src/libraries/luasocket/*.cpp) \
   $(wildcard ${LOCAL_PATH}/src/libraries/luasocket/*.cpp) \
   $(wildcard ${LOCAL_PATH}/src/libraries/luautf8/*.c) \
   $(wildcard ${LOCAL_PATH}/src/libraries/luautf8/*.c) \
   $(wildcard ${LOCAL_PATH}/src/libraries/luasocket/libluasocket/*.c) \
   $(wildcard ${LOCAL_PATH}/src/libraries/luasocket/libluasocket/*.c) \
-  $(wildcard ${LOCAL_PATH}/src/libraries/noise1234/*.cpp) \
-  $(wildcard ${LOCAL_PATH}/src/libraries/Wuff/*.c) \
   $(wildcard ${LOCAL_PATH}/src/libraries/lodepng/*.cpp) \
   $(wildcard ${LOCAL_PATH}/src/libraries/lodepng/*.cpp) \
   $(wildcard ${LOCAL_PATH}/src/libraries/lz4/*.c) \
   $(wildcard ${LOCAL_PATH}/src/libraries/lz4/*.c) \
+  $(wildcard ${LOCAL_PATH}/src/libraries/noise1234/*.cpp) \
+  $(wildcard ${LOCAL_PATH}/src/libraries/physfs/*.c) \
+	$(wildcard ${LOCAL_PATH}/src/libraries/Wuff/*.c) \
+  $(wildcard ${LOCAL_PATH}/src/libraries/xxHash/*.c) \
   ))
   ))
 
 
 LOCAL_CXXFLAGS := -std=c++0x
 LOCAL_CXXFLAGS := -std=c++0x
 
 
 LOCAL_SHARED_LIBRARIES := libopenal libmpg123 
 LOCAL_SHARED_LIBRARIES := libopenal libmpg123 
 
 
-LOCAL_STATIC_LIBRARIES := libphysfs libvorbis libogg libtheora libmodplug libfreetype libluajit SDL2_static
+LOCAL_STATIC_LIBRARIES := libvorbis libogg libtheora libmodplug libfreetype libluajit SDL2_static
 
 
 # $(info liblove: include dirs $(LOCAL_C_INCLUDES))
 # $(info liblove: include dirs $(LOCAL_C_INCLUDES))
 # $(info liblove: src files $(LOCAL_SRC_FILES))
 # $(info liblove: src files $(LOCAL_SRC_FILES))

+ 357 - 87
love/src/jni/love/CMakeLists.txt

@@ -1,5 +1,5 @@
 #
 #
-# Copyright (c) 2006-2016 LOVE Development Team
+# Copyright (c) 2006-2018 LOVE Development Team
 #
 #
 # This software is provided 'as-is', without any express or implied
 # This software is provided 'as-is', without any express or implied
 # warranty.  In no event will the authors be held liable for any damages
 # warranty.  In no event will the authors be held liable for any damages
@@ -97,7 +97,6 @@ if(MEGA)
 		${MEGA_LIBTHEORA}
 		${MEGA_LIBTHEORA}
 		${MEGA_MODPLUG}
 		${MEGA_MODPLUG}
 		${MEGA_OPENAL}
 		${MEGA_OPENAL}
-		${MEGA_PHYSFS}
 		${MEGA_SDL2MAIN}
 		${MEGA_SDL2MAIN}
 		${MEGA_SDL2}
 		${MEGA_SDL2}
 		${MEGA_ZLIB}
 		${MEGA_ZLIB}
@@ -172,7 +171,6 @@ Please see http://bitbucket.org/rude/megasource
 	find_package(ModPlug REQUIRED)
 	find_package(ModPlug REQUIRED)
 	find_package(OpenAL REQUIRED)
 	find_package(OpenAL REQUIRED)
 	find_package(OpenGL REQUIRED)
 	find_package(OpenGL REQUIRED)
-	find_package(PhysFS REQUIRED)
 	find_package(SDL2 REQUIRED)
 	find_package(SDL2 REQUIRED)
 	find_package(Theora REQUIRED)
 	find_package(Theora REQUIRED)
 	find_package(Vorbis REQUIRED)
 	find_package(Vorbis REQUIRED)
@@ -182,7 +180,6 @@ Please see http://bitbucket.org/rude/megasource
 
 
 	set(LOVE_INCLUDE_DIRS
 	set(LOVE_INCLUDE_DIRS
 		${SDL2_INCLUDE_DIR}
 		${SDL2_INCLUDE_DIR}
-		${PHYSFS_INCLUDE_DIR}
 		${FREETYPE_INCLUDE_DIRS}
 		${FREETYPE_INCLUDE_DIRS}
 		${VORBIS_INCLUDE_DIR}
 		${VORBIS_INCLUDE_DIR}
 	)
 	)
@@ -193,7 +190,6 @@ Please see http://bitbucket.org/rude/megasource
 		${FREETYPE_LIBRARY}
 		${FREETYPE_LIBRARY}
 		${OPENAL_LIBRARY}
 		${OPENAL_LIBRARY}
 		${MODPLUG_LIBRARY}
 		${MODPLUG_LIBRARY}
-		${PHYSFS_LIBRARY}
 		${THEORA_LIBRARY}
 		${THEORA_LIBRARY}
 		${THEORADEC_LIBRARY}
 		${THEORADEC_LIBRARY}
 		${VORBISFILE_LIBRARY}
 		${VORBISFILE_LIBRARY}
@@ -255,27 +251,41 @@ endfunction()
 set(LOVE_SRC_COMMON
 set(LOVE_SRC_COMMON
 	src/common/b64.cpp
 	src/common/b64.cpp
 	src/common/b64.h
 	src/common/b64.h
+	src/common/Color.h
 	src/common/config.h
 	src/common/config.h
+	src/common/Data.cpp
 	src/common/Data.h
 	src/common/Data.h
 	src/common/delay.cpp
 	src/common/delay.cpp
 	src/common/delay.h
 	src/common/delay.h
+	src/common/deprecation.cpp
+	src/common/deprecation.h
 	src/common/EnumMap.h
 	src/common/EnumMap.h
 	src/common/Exception.cpp
 	src/common/Exception.cpp
 	src/common/Exception.h
 	src/common/Exception.h
+	src/common/halffloat.cpp
+	src/common/halffloat.h
 	src/common/int.h
 	src/common/int.h
 	src/common/math.h
 	src/common/math.h
 	src/common/Matrix.cpp
 	src/common/Matrix.cpp
 	src/common/Matrix.h
 	src/common/Matrix.h
 	src/common/Memoizer.cpp
 	src/common/Memoizer.cpp
 	src/common/Memoizer.h
 	src/common/Memoizer.h
+	src/common/memory.cpp
+	src/common/memory.h
 	src/common/Module.cpp
 	src/common/Module.cpp
 	src/common/Module.h
 	src/common/Module.h
 	src/common/Object.cpp
 	src/common/Object.cpp
 	src/common/Object.h
 	src/common/Object.h
+	src/common/Optional.h
+	src/common/pixelformat.cpp
+	src/common/pixelformat.h
 	src/common/Reference.cpp
 	src/common/Reference.cpp
 	src/common/Reference.h
 	src/common/Reference.h
 	src/common/runtime.cpp
 	src/common/runtime.cpp
 	src/common/runtime.h
 	src/common/runtime.h
+	src/common/Stream.cpp
+	src/common/Stream.h
+	src/common/StringMap.cpp
 	src/common/StringMap.h
 	src/common/StringMap.h
 	src/common/types.cpp
 	src/common/types.cpp
 	src/common/types.h
 	src/common/types.h
@@ -286,8 +296,6 @@ set(LOVE_SRC_COMMON
 	#src/common/Vector.cpp # Vector.cpp is empty.
 	#src/common/Vector.cpp # Vector.cpp is empty.
 	src/common/Vector.h
 	src/common/Vector.h
 	src/common/version.h
 	src/common/version.h
-	src/common/wrap_Data.cpp
-	src/common/wrap_Data.h
 )
 )
 
 
 if (APPLE)
 if (APPLE)
@@ -307,10 +315,18 @@ set(LOVE_SRC_MODULE_AUDIO_ROOT
 	src/modules/audio/Audio.h
 	src/modules/audio/Audio.h
 	src/modules/audio/Source.cpp
 	src/modules/audio/Source.cpp
 	src/modules/audio/Source.h
 	src/modules/audio/Source.h
+	src/modules/audio/RecordingDevice.cpp
+	src/modules/audio/RecordingDevice.h
+	src/modules/audio/Filter.cpp
+	src/modules/audio/Filter.h
+	src/modules/audio/Effect.cpp
+	src/modules/audio/Effect.h
 	src/modules/audio/wrap_Audio.cpp
 	src/modules/audio/wrap_Audio.cpp
 	src/modules/audio/wrap_Audio.h
 	src/modules/audio/wrap_Audio.h
 	src/modules/audio/wrap_Source.cpp
 	src/modules/audio/wrap_Source.cpp
 	src/modules/audio/wrap_Source.h
 	src/modules/audio/wrap_Source.h
+	src/modules/audio/wrap_RecordingDevice.cpp
+	src/modules/audio/wrap_RecordingDevice.h
 )
 )
 
 
 set(LOVE_SRC_MODULE_AUDIO_NULL
 set(LOVE_SRC_MODULE_AUDIO_NULL
@@ -318,6 +334,8 @@ set(LOVE_SRC_MODULE_AUDIO_NULL
 	src/modules/audio/null/Audio.h
 	src/modules/audio/null/Audio.h
 	src/modules/audio/null/Source.cpp
 	src/modules/audio/null/Source.cpp
 	src/modules/audio/null/Source.h
 	src/modules/audio/null/Source.h
+	src/modules/audio/null/RecordingDevice.cpp
+	src/modules/audio/null/RecordingDevice.h
 )
 )
 
 
 set(LOVE_SRC_MODULE_AUDIO_OPENAL
 set(LOVE_SRC_MODULE_AUDIO_OPENAL
@@ -327,6 +345,12 @@ set(LOVE_SRC_MODULE_AUDIO_OPENAL
 	src/modules/audio/openal/Pool.h
 	src/modules/audio/openal/Pool.h
 	src/modules/audio/openal/Source.cpp
 	src/modules/audio/openal/Source.cpp
 	src/modules/audio/openal/Source.h
 	src/modules/audio/openal/Source.h
+	src/modules/audio/openal/RecordingDevice.cpp
+	src/modules/audio/openal/RecordingDevice.h
+	src/modules/audio/openal/Filter.cpp
+	src/modules/audio/openal/Filter.h
+	src/modules/audio/openal/Effect.cpp
+	src/modules/audio/openal/Effect.h
 )
 )
 
 
 set(LOVE_SRC_MODULE_AUDIO
 set(LOVE_SRC_MODULE_AUDIO
@@ -339,6 +363,37 @@ source_group("modules\\audio" FILES ${LOVE_SRC_MODULE_AUDIO_ROOT})
 source_group("modules\\audio\\null" FILES ${LOVE_SRC_MODULE_AUDIO_NULL})
 source_group("modules\\audio\\null" FILES ${LOVE_SRC_MODULE_AUDIO_NULL})
 source_group("modules\\audio\\openal" FILES ${LOVE_SRC_MODULE_AUDIO_OPENAL})
 source_group("modules\\audio\\openal" FILES ${LOVE_SRC_MODULE_AUDIO_OPENAL})
 
 
+#
+# love.data
+#
+
+set(LOVE_SRC_MODULE_DATA
+	src/modules/data/ByteData.cpp
+	src/modules/data/ByteData.h
+	src/modules/data/CompressedData.cpp
+	src/modules/data/CompressedData.h
+	src/modules/data/Compressor.cpp
+	src/modules/data/Compressor.h
+	src/modules/data/DataModule.cpp
+	src/modules/data/DataModule.h
+	src/modules/data/DataView.cpp
+	src/modules/data/DataView.h
+	src/modules/data/HashFunction.cpp
+	src/modules/data/HashFunction.h
+	src/modules/data/wrap_ByteData.cpp
+	src/modules/data/wrap_ByteData.h
+	src/modules/data/wrap_CompressedData.cpp
+	src/modules/data/wrap_CompressedData.h
+	src/modules/data/wrap_Data.cpp
+	src/modules/data/wrap_Data.h
+	src/modules/data/wrap_DataModule.cpp
+	src/modules/data/wrap_DataModule.h
+	src/modules/data/wrap_DataView.cpp
+	src/modules/data/wrap_DataView.h
+)
+
+source_group("modules\\data" FILES ${LOVE_SRC_MODULE_DATA})
+
 #
 #
 # love.event
 # love.event
 #
 #
@@ -446,71 +501,94 @@ source_group("modules\\font\\freetype" FILES ${LOVE_SRC_MODULE_FONT_FREETYPE})
 #
 #
 
 
 set(LOVE_SRC_MODULE_GRAPHICS_ROOT
 set(LOVE_SRC_MODULE_GRAPHICS_ROOT
-	src/modules/graphics/Color.h
+	src/modules/graphics/Buffer.cpp
+	src/modules/graphics/Buffer.h
+	src/modules/graphics/Canvas.cpp
+	src/modules/graphics/Canvas.h
+	src/modules/graphics/depthstencil.cpp
+	src/modules/graphics/depthstencil.h
+	src/modules/graphics/Deprecations.cpp
+	src/modules/graphics/Deprecations.h
+	src/modules/graphics/Drawable.cpp
 	src/modules/graphics/Drawable.h
 	src/modules/graphics/Drawable.h
+	src/modules/graphics/Font.cpp
+	src/modules/graphics/Font.h
 	src/modules/graphics/Graphics.cpp
 	src/modules/graphics/Graphics.cpp
 	src/modules/graphics/Graphics.h
 	src/modules/graphics/Graphics.h
+	src/modules/graphics/Image.cpp
+	src/modules/graphics/Image.h
+	src/modules/graphics/Mesh.cpp
+	src/modules/graphics/Mesh.h
 	src/modules/graphics/ParticleSystem.cpp
 	src/modules/graphics/ParticleSystem.cpp
 	src/modules/graphics/ParticleSystem.h
 	src/modules/graphics/ParticleSystem.h
+	src/modules/graphics/Polyline.cpp
+	src/modules/graphics/Polyline.h
 	src/modules/graphics/Quad.cpp
 	src/modules/graphics/Quad.cpp
 	src/modules/graphics/Quad.h
 	src/modules/graphics/Quad.h
+	src/modules/graphics/Resource.h
+	src/modules/graphics/Shader.cpp
+	src/modules/graphics/Shader.h
+	src/modules/graphics/ShaderStage.cpp
+	src/modules/graphics/ShaderStage.h
+	src/modules/graphics/SpriteBatch.cpp
+	src/modules/graphics/SpriteBatch.h
+	src/modules/graphics/StreamBuffer.cpp
+	src/modules/graphics/StreamBuffer.h
+	src/modules/graphics/Text.cpp
+	src/modules/graphics/Text.h
 	src/modules/graphics/Texture.cpp
 	src/modules/graphics/Texture.cpp
 	src/modules/graphics/Texture.h
 	src/modules/graphics/Texture.h
+	src/modules/graphics/vertex.cpp
+	src/modules/graphics/vertex.h
+	src/modules/graphics/Video.cpp
+	src/modules/graphics/Video.h
 	src/modules/graphics/Volatile.cpp
 	src/modules/graphics/Volatile.cpp
 	src/modules/graphics/Volatile.h
 	src/modules/graphics/Volatile.h
+	src/modules/graphics/wrap_Canvas.cpp
+	src/modules/graphics/wrap_Canvas.h
+	src/modules/graphics/wrap_Font.cpp
+	src/modules/graphics/wrap_Font.h
+	src/modules/graphics/wrap_Graphics.cpp
+	src/modules/graphics/wrap_Graphics.h
+	src/modules/graphics/wrap_Image.cpp
+	src/modules/graphics/wrap_Image.h
+	src/modules/graphics/wrap_Mesh.cpp
+	src/modules/graphics/wrap_Mesh.h
+	src/modules/graphics/wrap_ParticleSystem.cpp
+	src/modules/graphics/wrap_ParticleSystem.h
 	src/modules/graphics/wrap_Quad.cpp
 	src/modules/graphics/wrap_Quad.cpp
 	src/modules/graphics/wrap_Quad.h
 	src/modules/graphics/wrap_Quad.h
+	src/modules/graphics/wrap_Shader.cpp
+	src/modules/graphics/wrap_Shader.h
+	src/modules/graphics/wrap_SpriteBatch.cpp
+	src/modules/graphics/wrap_SpriteBatch.h
 	src/modules/graphics/wrap_Texture.cpp
 	src/modules/graphics/wrap_Texture.cpp
 	src/modules/graphics/wrap_Texture.h
 	src/modules/graphics/wrap_Texture.h
+	src/modules/graphics/wrap_Text.cpp
+	src/modules/graphics/wrap_Text.h
+	src/modules/graphics/wrap_Video.cpp
+	src/modules/graphics/wrap_Video.h
 )
 )
 
 
 set(LOVE_SRC_MODULE_GRAPHICS_OPENGL
 set(LOVE_SRC_MODULE_GRAPHICS_OPENGL
+	src/modules/graphics/opengl/Buffer.cpp
+	src/modules/graphics/opengl/Buffer.h
 	src/modules/graphics/opengl/Canvas.cpp
 	src/modules/graphics/opengl/Canvas.cpp
 	src/modules/graphics/opengl/Canvas.h
 	src/modules/graphics/opengl/Canvas.h
-	src/modules/graphics/opengl/Font.cpp
-	src/modules/graphics/opengl/Font.h
-	src/modules/graphics/opengl/GLBuffer.cpp
-	src/modules/graphics/opengl/GLBuffer.h
+	src/modules/graphics/opengl/FenceSync.cpp
+	src/modules/graphics/opengl/FenceSync.h
 	src/modules/graphics/opengl/Graphics.cpp
 	src/modules/graphics/opengl/Graphics.cpp
 	src/modules/graphics/opengl/Graphics.h
 	src/modules/graphics/opengl/Graphics.h
 	src/modules/graphics/opengl/Image.cpp
 	src/modules/graphics/opengl/Image.cpp
 	src/modules/graphics/opengl/Image.h
 	src/modules/graphics/opengl/Image.h
-	src/modules/graphics/opengl/Mesh.cpp
-	src/modules/graphics/opengl/Mesh.h
 	src/modules/graphics/opengl/OpenGL.cpp
 	src/modules/graphics/opengl/OpenGL.cpp
 	src/modules/graphics/opengl/OpenGL.h
 	src/modules/graphics/opengl/OpenGL.h
-	src/modules/graphics/opengl/ParticleSystem.cpp
-	src/modules/graphics/opengl/ParticleSystem.h
-	src/modules/graphics/opengl/Polyline.cpp
-	src/modules/graphics/opengl/Polyline.h
 	src/modules/graphics/opengl/Shader.cpp
 	src/modules/graphics/opengl/Shader.cpp
 	src/modules/graphics/opengl/Shader.h
 	src/modules/graphics/opengl/Shader.h
-	src/modules/graphics/opengl/SpriteBatch.cpp
-	src/modules/graphics/opengl/SpriteBatch.h
-	src/modules/graphics/opengl/Text.cpp
-	src/modules/graphics/opengl/Text.h
-	src/modules/graphics/opengl/Video.cpp
-	src/modules/graphics/opengl/Video.h
-	src/modules/graphics/opengl/wrap_Canvas.cpp
-	src/modules/graphics/opengl/wrap_Canvas.h
-	src/modules/graphics/opengl/wrap_Font.cpp
-	src/modules/graphics/opengl/wrap_Font.h
-	src/modules/graphics/opengl/wrap_Graphics.cpp
-	src/modules/graphics/opengl/wrap_Graphics.h
-	src/modules/graphics/opengl/wrap_Image.cpp
-	src/modules/graphics/opengl/wrap_Image.h
-	src/modules/graphics/opengl/wrap_Mesh.cpp
-	src/modules/graphics/opengl/wrap_Mesh.h
-	src/modules/graphics/opengl/wrap_ParticleSystem.cpp
-	src/modules/graphics/opengl/wrap_ParticleSystem.h
-	src/modules/graphics/opengl/wrap_Shader.cpp
-	src/modules/graphics/opengl/wrap_Shader.h
-	src/modules/graphics/opengl/wrap_SpriteBatch.cpp
-	src/modules/graphics/opengl/wrap_SpriteBatch.h
-	src/modules/graphics/opengl/wrap_Text.cpp
-	src/modules/graphics/opengl/wrap_Text.h
-	src/modules/graphics/opengl/wrap_Video.cpp
-	src/modules/graphics/opengl/wrap_Video.h
+	src/modules/graphics/opengl/ShaderStage.cpp
+	src/modules/graphics/opengl/ShaderStage.h
+	src/modules/graphics/opengl/StreamBuffer.cpp
+	src/modules/graphics/opengl/StreamBuffer.h
 )
 )
 
 
 set(LOVE_SRC_MODULE_GRAPHICS
 set(LOVE_SRC_MODULE_GRAPHICS
@@ -528,9 +606,16 @@ source_group("modules\\graphics\\opengl" FILES ${LOVE_SRC_MODULE_GRAPHICS_OPENGL
 set(LOVE_SRC_MODULE_IMAGE_ROOT
 set(LOVE_SRC_MODULE_IMAGE_ROOT
 	src/modules/image/CompressedImageData.cpp
 	src/modules/image/CompressedImageData.cpp
 	src/modules/image/CompressedImageData.h
 	src/modules/image/CompressedImageData.h
+	src/modules/image/CompressedSlice.cpp
+	src/modules/image/CompressedSlice.h
+	src/modules/image/FormatHandler.cpp
+	src/modules/image/FormatHandler.h
+	src/modules/image/Image.cpp
 	src/modules/image/Image.h
 	src/modules/image/Image.h
 	src/modules/image/ImageData.cpp
 	src/modules/image/ImageData.cpp
 	src/modules/image/ImageData.h
 	src/modules/image/ImageData.h
+	src/modules/image/ImageDataBase.cpp
+	src/modules/image/ImageDataBase.h
 	src/modules/image/wrap_CompressedImageData.cpp
 	src/modules/image/wrap_CompressedImageData.cpp
 	src/modules/image/wrap_CompressedImageData.h
 	src/modules/image/wrap_CompressedImageData.h
 	src/modules/image/wrap_Image.cpp
 	src/modules/image/wrap_Image.cpp
@@ -542,17 +627,10 @@ set(LOVE_SRC_MODULE_IMAGE_ROOT
 set(LOVE_SRC_MODULE_IMAGE_MAGPIE
 set(LOVE_SRC_MODULE_IMAGE_MAGPIE
 	src/modules/image/magpie/ASTCHandler.cpp
 	src/modules/image/magpie/ASTCHandler.cpp
 	src/modules/image/magpie/ASTCHandler.h
 	src/modules/image/magpie/ASTCHandler.h
-	src/modules/image/magpie/CompressedImageData.cpp
-	src/modules/image/magpie/CompressedImageData.h
-	src/modules/image/magpie/CompressedFormatHandler.h
 	src/modules/image/magpie/ddsHandler.cpp
 	src/modules/image/magpie/ddsHandler.cpp
 	src/modules/image/magpie/ddsHandler.h
 	src/modules/image/magpie/ddsHandler.h
-	src/modules/image/magpie/FormatHandler.cpp
-	src/modules/image/magpie/FormatHandler.h
-	src/modules/image/magpie/Image.cpp
-	src/modules/image/magpie/Image.h
-	src/modules/image/magpie/ImageData.cpp
-	src/modules/image/magpie/ImageData.h
+	src/modules/image/magpie/EXRHandler.cpp
+	src/modules/image/magpie/EXRHandler.h
 	src/modules/image/magpie/KTXHandler.cpp
 	src/modules/image/magpie/KTXHandler.cpp
 	src/modules/image/magpie/KTXHandler.h
 	src/modules/image/magpie/KTXHandler.h
 	src/modules/image/magpie/PKMHandler.cpp
 	src/modules/image/magpie/PKMHandler.cpp
@@ -633,22 +711,20 @@ source_group("modules\\keyboard\\sdl" FILES ${LOVE_SRC_MODULE_KEYBOARD_SDL})
 set(LOVE_SRC_MODULE_MATH
 set(LOVE_SRC_MODULE_MATH
 	src/modules/math/BezierCurve.cpp
 	src/modules/math/BezierCurve.cpp
 	src/modules/math/BezierCurve.h
 	src/modules/math/BezierCurve.h
-	src/modules/math/CompressedData.cpp
-	src/modules/math/CompressedData.h
-	src/modules/math/Compressor.cpp
-	src/modules/math/Compressor.h
 	src/modules/math/MathModule.cpp
 	src/modules/math/MathModule.cpp
 	src/modules/math/MathModule.h
 	src/modules/math/MathModule.h
 	src/modules/math/RandomGenerator.cpp
 	src/modules/math/RandomGenerator.cpp
 	src/modules/math/RandomGenerator.h
 	src/modules/math/RandomGenerator.h
+	src/modules/math/Transform.cpp
+	src/modules/math/Transform.h
 	src/modules/math/wrap_BezierCurve.cpp
 	src/modules/math/wrap_BezierCurve.cpp
 	src/modules/math/wrap_BezierCurve.h
 	src/modules/math/wrap_BezierCurve.h
-	src/modules/math/wrap_CompressedData.cpp
-	src/modules/math/wrap_CompressedData.h
 	src/modules/math/wrap_Math.cpp
 	src/modules/math/wrap_Math.cpp
 	src/modules/math/wrap_Math.h
 	src/modules/math/wrap_Math.h
 	src/modules/math/wrap_RandomGenerator.cpp
 	src/modules/math/wrap_RandomGenerator.cpp
 	src/modules/math/wrap_RandomGenerator.h
 	src/modules/math/wrap_RandomGenerator.h
+	src/modules/math/wrap_Transform.cpp
+	src/modules/math/wrap_Transform.h
 )
 )
 
 
 source_group("modules\\math" FILES ${LOVE_SRC_MODULE_MATH})
 source_group("modules\\math" FILES ${LOVE_SRC_MODULE_MATH})
@@ -809,6 +885,7 @@ source_group("modules\\physics\\box2d" FILES ${LOVE_SRC_MODULE_PHYSICS_BOX2D})
 #
 #
 
 
 set(LOVE_SRC_MODULE_SOUND_ROOT
 set(LOVE_SRC_MODULE_SOUND_ROOT
+	src/modules/sound/Decoder.cpp
 	src/modules/sound/Decoder.h
 	src/modules/sound/Decoder.h
 	src/modules/sound/Sound.cpp
 	src/modules/sound/Sound.cpp
 	src/modules/sound/Sound.h
 	src/modules/sound/Sound.h
@@ -823,8 +900,6 @@ set(LOVE_SRC_MODULE_SOUND_ROOT
 )
 )
 
 
 set(LOVE_SRC_MODULE_SOUND_LULLABY
 set(LOVE_SRC_MODULE_SOUND_LULLABY
-	src/modules/sound/lullaby/Decoder.cpp
-	src/modules/sound/lullaby/Decoder.h
 	src/modules/sound/lullaby/FLACDecoder.cpp
 	src/modules/sound/lullaby/FLACDecoder.cpp
 	src/modules/sound/lullaby/FLACDecoder.h
 	src/modules/sound/lullaby/FLACDecoder.h
 	src/modules/sound/lullaby/GmeDecoder.cpp
 	src/modules/sound/lullaby/GmeDecoder.cpp
@@ -920,25 +995,14 @@ source_group("modules\\thread\\sdl" FILES ${LOVE_SRC_MODULE_THREAD_SDL})
 # love.timer
 # love.timer
 #
 #
 
 
-set(LOVE_SRC_MODULE_TIMER_ROOT
+set(LOVE_SRC_MODULE_TIMER
 	src/modules/timer/Timer.cpp
 	src/modules/timer/Timer.cpp
 	src/modules/timer/Timer.h
 	src/modules/timer/Timer.h
 	src/modules/timer/wrap_Timer.cpp
 	src/modules/timer/wrap_Timer.cpp
 	src/modules/timer/wrap_Timer.h
 	src/modules/timer/wrap_Timer.h
 )
 )
 
 
-set(LOVE_SRC_MODULE_TIMER_SDL
-	src/modules/timer/sdl/Timer.cpp
-	src/modules/timer/sdl/Timer.h
-)
-
-set(LOVE_SRC_MODULE_TIMER
-	${LOVE_SRC_MODULE_TIMER_ROOT}
-	${LOVE_SRC_MODULE_TIMER_SDL}
-)
-
-source_group("modules\\timer" FILES ${LOVE_SRC_MODULE_TIMER_ROOT})
-source_group("modules\\timer\\sdl" FILES ${LOVE_SRC_MODULE_TIMER_SDL})
+source_group("modules\\timer" FILES ${LOVE_SRC_MODULE_TIMER})
 
 
 #
 #
 # love.touch
 # love.touch
@@ -980,8 +1044,10 @@ set(LOVE_SRC_MODULE_VIDEO_ROOT
 set(LOVE_SRC_MODULE_VIDEO_THEORA
 set(LOVE_SRC_MODULE_VIDEO_THEORA
 	src/modules/video/theora/Video.cpp
 	src/modules/video/theora/Video.cpp
 	src/modules/video/theora/Video.h
 	src/modules/video/theora/Video.h
-	src/modules/video/theora/VideoStream.cpp
-	src/modules/video/theora/VideoStream.h
+	src/modules/video/theora/OggDemuxer.cpp
+	src/modules/video/theora/OggDemuxer.h
+	src/modules/video/theora/TheoraVideoStream.cpp
+	src/modules/video/theora/TheoraVideoStream.h
 )
 )
 
 
 set(LOVE_SRC_MODULE_VIDEO
 set(LOVE_SRC_MODULE_VIDEO
@@ -1220,6 +1286,121 @@ set(LOVE_SRC_3P_GLAD
 
 
 add_library(love_3p_glad ${LOVE_SRC_3P_GLAD})
 add_library(love_3p_glad ${LOVE_SRC_3P_GLAD})
 
 
+#
+# glslang
+#
+
+set(LOVE_SRC_3P_GLSLANG_GLSLANG_GENERICCODEGEN
+	src/libraries/glslang/glslang/GenericCodeGen/CodeGen.cpp
+	src/libraries/glslang/glslang/GenericCodeGen/Link.cpp
+)
+
+set(LOVE_SRC_3P_GLSLANG_GLSLANG_INCLUDE
+	src/libraries/glslang/glslang/Include/arrays.h
+	src/libraries/glslang/glslang/Include/BaseTypes.h
+	src/libraries/glslang/glslang/Include/Common.h
+	src/libraries/glslang/glslang/Include/ConstantUnion.h
+	src/libraries/glslang/glslang/Include/InfoSink.h
+	src/libraries/glslang/glslang/Include/InitializeGlobals.h
+	src/libraries/glslang/glslang/Include/intermediate.h
+	src/libraries/glslang/glslang/Include/PoolAlloc.h
+	src/libraries/glslang/glslang/Include/ResourceLimits.h
+	src/libraries/glslang/glslang/Include/revision.h
+	src/libraries/glslang/glslang/Include/ShHandle.h
+	src/libraries/glslang/glslang/Include/Types.h
+)
+
+set(LOVE_SRC_3P_GLSLANG_GLSLANG_MACHINEINDEPENDENT_PREPROCESSOR
+	src/libraries/glslang/glslang/MachineIndependent/preprocessor/Pp.cpp
+	src/libraries/glslang/glslang/MachineIndependent/preprocessor/PpAtom.cpp
+	src/libraries/glslang/glslang/MachineIndependent/preprocessor/PpContext.cpp
+	src/libraries/glslang/glslang/MachineIndependent/preprocessor/PpContext.h
+	src/libraries/glslang/glslang/MachineIndependent/preprocessor/PpScanner.cpp
+	src/libraries/glslang/glslang/MachineIndependent/preprocessor/PpTokens.cpp
+	src/libraries/glslang/glslang/MachineIndependent/preprocessor/PpTokens.h
+)
+
+set(LOVE_SRC_3P_GLSLANG_GLSLANG_MACHINEINDEPENDENT
+	${LOVE_SRC_3P_GLSLANG_GLSLANG_MACHINEINDEPENDENT_PREPROCESSOR}
+	src/libraries/glslang/glslang/MachineIndependent/Constant.cpp
+	src/libraries/glslang/glslang/MachineIndependent/gl_types.h
+	src/libraries/glslang/glslang/MachineIndependent/glslang_tab.cpp
+	src/libraries/glslang/glslang/MachineIndependent/glslang_tab.cpp.h
+	src/libraries/glslang/glslang/MachineIndependent/InfoSink.cpp
+	src/libraries/glslang/glslang/MachineIndependent/Initialize.cpp
+	src/libraries/glslang/glslang/MachineIndependent/Initialize.h
+	src/libraries/glslang/glslang/MachineIndependent/Intermediate.cpp
+	src/libraries/glslang/glslang/MachineIndependent/intermOut.cpp
+	src/libraries/glslang/glslang/MachineIndependent/IntermTraverse.cpp
+	src/libraries/glslang/glslang/MachineIndependent/iomapper.cpp
+	src/libraries/glslang/glslang/MachineIndependent/iomapper.h
+	src/libraries/glslang/glslang/MachineIndependent/limits.cpp
+	src/libraries/glslang/glslang/MachineIndependent/linkValidate.cpp
+	src/libraries/glslang/glslang/MachineIndependent/LiveTraverser.h
+	src/libraries/glslang/glslang/MachineIndependent/localintermediate.h
+	src/libraries/glslang/glslang/MachineIndependent/parseConst.cpp
+	src/libraries/glslang/glslang/MachineIndependent/ParseContextBase.cpp
+	src/libraries/glslang/glslang/MachineIndependent/ParseHelper.cpp
+	src/libraries/glslang/glslang/MachineIndependent/ParseHelper.h
+	src/libraries/glslang/glslang/MachineIndependent/parseVersions.h
+	src/libraries/glslang/glslang/MachineIndependent/PoolAlloc.cpp
+	src/libraries/glslang/glslang/MachineIndependent/propagateNoContraction.cpp
+	src/libraries/glslang/glslang/MachineIndependent/propagateNoContraction.h
+	src/libraries/glslang/glslang/MachineIndependent/reflection.cpp
+	src/libraries/glslang/glslang/MachineIndependent/reflection.h
+	src/libraries/glslang/glslang/MachineIndependent/RemoveTree.cpp
+	src/libraries/glslang/glslang/MachineIndependent/RemoveTree.h
+	src/libraries/glslang/glslang/MachineIndependent/Scan.cpp
+	src/libraries/glslang/glslang/MachineIndependent/Scan.h
+	src/libraries/glslang/glslang/MachineIndependent/ScanContext.h
+	src/libraries/glslang/glslang/MachineIndependent/ShaderLang.cpp
+	src/libraries/glslang/glslang/MachineIndependent/SymbolTable.cpp
+	src/libraries/glslang/glslang/MachineIndependent/SymbolTable.h
+	src/libraries/glslang/glslang/MachineIndependent/Versions.cpp
+	src/libraries/glslang/glslang/MachineIndependent/Versions.h
+)
+
+set(LOVE_SRC_3P_GLSLANG_GLSLANG_OSDEPENDENT
+	src/libraries/glslang/glslang/OSDependent/osinclude.h
+)
+
+if(MSVC)
+	set(LOVE_SRC_3P_GLSLANG_GLSLANG_OSDEPENDENT
+		${LOVE_SRC_3P_GLSLANG_GLSLANG_OSDEPENDENT}
+		src/libraries/glslang/glslang/OSDependent/Windows/main.cpp
+		src/libraries/glslang/glslang/OSDependent/Windows/ossource.cpp
+	)
+else()
+	set(LOVE_SRC_3P_GLSLANG_GLSLANG_OSDEPENDENT
+		${LOVE_SRC_3P_GLSLANG_GLSLANG_OSDEPENDENT}
+		src/libraries/glslang/glslang/OSDependent/Unix/ossource.cpp
+	)
+endif()
+
+set(LOVE_SRC_3P_GLSLANG_GLSLANG_PUBLIC
+	src/libraries/glslang/glslang/Public/ShaderLang.h
+)
+
+set(LOVE_SRC_3P_GLSLANG_GLSLANG
+	${LOVE_SRC_3P_GLSLANG_GLSLANG_GENERICCODEGEN}
+	${LOVE_SRC_3P_GLSLANG_GLSLANG_INCLUDE}
+	${LOVE_SRC_3P_GLSLANG_GLSLANG_MACHINEINDEPENDENT}
+	${LOVE_SRC_3P_GLSLANG_GLSLANG_OSDEPENDENT}
+	${LOVE_SRC_3P_GLSLANG_GLSLANG_PUBLIC}
+)
+
+set(LOVE_SRC_3P_GLSLANG_OGLCOMPILERSDLL
+	src/libraries/glslang/OGLCompilersDLL/InitializeDll.cpp
+	src/libraries/glslang/OGLCompilersDLL/InitializeDll.h
+)
+
+set(LOVE_SRC_3P_GLSLANG
+	${LOVE_SRC_3P_GLSLANG_GLSLANG}
+	${LOVE_SRC_3P_GLSLANG_OGLCOMPILERSDLL}
+)
+
+add_library(love_3p_glslang ${LOVE_SRC_3P_GLSLANG})
+
 #
 #
 # LodePNG
 # LodePNG
 #
 #
@@ -1245,23 +1426,27 @@ set(LOVE_SRC_3P_LUASOCKET_LIBLUASOCKET
 	src/libraries/luasocket/libluasocket/auxiliar.h
 	src/libraries/luasocket/libluasocket/auxiliar.h
 	src/libraries/luasocket/libluasocket/buffer.c
 	src/libraries/luasocket/libluasocket/buffer.c
 	src/libraries/luasocket/libluasocket/buffer.h
 	src/libraries/luasocket/libluasocket/buffer.h
+	src/libraries/luasocket/libluasocket/compat.c
+	src/libraries/luasocket/libluasocket/compat.h
 	src/libraries/luasocket/libluasocket/except.c
 	src/libraries/luasocket/libluasocket/except.c
 	src/libraries/luasocket/libluasocket/except.h
 	src/libraries/luasocket/libluasocket/except.h
 	src/libraries/luasocket/libluasocket/ftp.lua.h
 	src/libraries/luasocket/libluasocket/ftp.lua.h
+	src/libraries/luasocket/libluasocket/headers.lua.h
 	src/libraries/luasocket/libluasocket/http.lua.h
 	src/libraries/luasocket/libluasocket/http.lua.h
 	src/libraries/luasocket/libluasocket/inet.c
 	src/libraries/luasocket/libluasocket/inet.c
 	src/libraries/luasocket/libluasocket/inet.h
 	src/libraries/luasocket/libluasocket/inet.h
 	src/libraries/luasocket/libluasocket/io.c
 	src/libraries/luasocket/libluasocket/io.c
 	src/libraries/luasocket/libluasocket/io.h
 	src/libraries/luasocket/libluasocket/io.h
 	src/libraries/luasocket/libluasocket/ltn12.lua.h
 	src/libraries/luasocket/libluasocket/ltn12.lua.h
-	src/libraries/luasocket/libluasocket/lua.h
 	src/libraries/luasocket/libluasocket/luasocket.c
 	src/libraries/luasocket/libluasocket/luasocket.c
 	src/libraries/luasocket/libluasocket/luasocket.h
 	src/libraries/luasocket/libluasocket/luasocket.h
+	src/libraries/luasocket/libluasocket/mbox.lua.h
 	src/libraries/luasocket/libluasocket/mime.c
 	src/libraries/luasocket/libluasocket/mime.c
 	src/libraries/luasocket/libluasocket/mime.h
 	src/libraries/luasocket/libluasocket/mime.h
 	src/libraries/luasocket/libluasocket/mime.lua.h
 	src/libraries/luasocket/libluasocket/mime.lua.h
 	src/libraries/luasocket/libluasocket/options.c
 	src/libraries/luasocket/libluasocket/options.c
 	src/libraries/luasocket/libluasocket/options.h
 	src/libraries/luasocket/libluasocket/options.h
+	src/libraries/luasocket/libluasocket/pierror.h
 	src/libraries/luasocket/libluasocket/select.c
 	src/libraries/luasocket/libluasocket/select.c
 	src/libraries/luasocket/libluasocket/select.h
 	src/libraries/luasocket/libluasocket/select.h
 	src/libraries/luasocket/libluasocket/smtp.lua.h
 	src/libraries/luasocket/libluasocket/smtp.lua.h
@@ -1277,15 +1462,29 @@ set(LOVE_SRC_3P_LUASOCKET_LIBLUASOCKET
 	src/libraries/luasocket/libluasocket/url.lua.h
 	src/libraries/luasocket/libluasocket/url.lua.h
 )
 )
 
 
+set(LOVE_LINK_L3P_LUASOCKET_LIBLUASOCKET)
+
 if(MSVC)
 if(MSVC)
 	set(LOVE_SRC_3P_LUASOCKET_LIBLUASOCKET
 	set(LOVE_SRC_3P_LUASOCKET_LIBLUASOCKET
 		${LOVE_SRC_3P_LUASOCKET_LIBLUASOCKET}
 		${LOVE_SRC_3P_LUASOCKET_LIBLUASOCKET}
 		src/libraries/luasocket/libluasocket/wsocket.c
 		src/libraries/luasocket/libluasocket/wsocket.c
 		src/libraries/luasocket/libluasocket/wsocket.h
 		src/libraries/luasocket/libluasocket/wsocket.h
 	)
 	)
+
+	set(LOVE_LINK_L3P_LUASOCKET_LIBLUASOCKET
+		${LOVE_LINK_L3P_LUASOCKET_LIBLUASOCKET}
+		ws2_32.lib
+	)
 else()
 else()
 	set(LOVE_SRC_3P_LUASOCKET_LIBLUASOCKET
 	set(LOVE_SRC_3P_LUASOCKET_LIBLUASOCKET
 		${LOVE_SRC_3P_LUASOCKET_LIBLUASOCKET}
 		${LOVE_SRC_3P_LUASOCKET_LIBLUASOCKET}
+		src/libraries/luasocket/libluasocket/serial.c
+		src/libraries/luasocket/libluasocket/unix.c
+		src/libraries/luasocket/libluasocket/unix.h
+		src/libraries/luasocket/libluasocket/unixtcp.c
+		src/libraries/luasocket/libluasocket/unixtcp.h
+		src/libraries/luasocket/libluasocket/unixudp.c
+		src/libraries/luasocket/libluasocket/unixudp.h
 		src/libraries/luasocket/libluasocket/usocket.c
 		src/libraries/luasocket/libluasocket/usocket.c
 		src/libraries/luasocket/libluasocket/usocket.h
 		src/libraries/luasocket/libluasocket/usocket.h
 	)
 	)
@@ -1297,20 +1496,22 @@ set(LOVE_SRC_3P_LUASOCKET
 )
 )
 
 
 add_library(love_3p_luasocket ${LOVE_SRC_3P_LUASOCKET})
 add_library(love_3p_luasocket ${LOVE_SRC_3P_LUASOCKET})
-target_link_libraries(love_3p_luasocket ${LOVE_LUA_LIBRARY})
+target_link_libraries(love_3p_luasocket ${LOVE_LUA_LIBRARY} ${LOVE_LINK_L3P_LUASOCKET_LIBLUASOCKET})
 
 
 #
 #
-# Lua 5.3's UTF-8 library
+# APIs from Lua 5.3
 #
 #
 
 
-set(LOVE_SRC_3P_LUAUTF8
-	src/libraries/luautf8/lprefix.h
-	src/libraries/luautf8/lutf8lib.c
-	src/libraries/luautf8/lutf8lib.h
+set(LOVE_SRC_3P_LUA53
+	src/libraries/lua53/lprefix.h
+	src/libraries/lua53/lstrlib.c
+	src/libraries/lua53/lstrlib.h
+	src/libraries/lua53/lutf8lib.c
+	src/libraries/lua53/lutf8lib.h
 )
 )
 
 
-add_library(love_3p_luautf8 ${LOVE_SRC_3P_LUAUTF8})
-target_link_libraries(love_3p_luautf8 ${LOVE_LUA_LIBRARY})
+add_library(love_3p_lua53 ${LOVE_SRC_3P_LUA53})
+target_link_libraries(love_3p_lua53 ${LOVE_LUA_LIBRARY})
 
 
 #
 #
 # lz4
 # lz4
@@ -1321,6 +1522,7 @@ set(LOVE_SRC_3P_LZ4
 	src/libraries/lz4/lz4.h
 	src/libraries/lz4/lz4.h
 	src/libraries/lz4/lz4hc.c
 	src/libraries/lz4/lz4hc.c
 	src/libraries/lz4/lz4hc.h
 	src/libraries/lz4/lz4hc.h
+	src/libraries/lz4/lz4opt.h
 )
 )
 
 
 add_library(love_3p_lz4 ${LOVE_SRC_3P_LZ4})
 add_library(love_3p_lz4 ${LOVE_SRC_3P_LZ4})
@@ -1338,6 +1540,49 @@ set(LOVE_SRC_3P_NOISE1234
 
 
 add_library(love_3p_noise1234 ${LOVE_SRC_3P_NOISE1234})
 add_library(love_3p_noise1234 ${LOVE_SRC_3P_NOISE1234})
 
 
+#
+# physfs
+#
+
+set(LOVE_SRC_3P_PHYSFS
+	src/libraries/physfs/physfs_archiver_7z.c
+	src/libraries/physfs/physfs_archiver_dir.c
+	src/libraries/physfs/physfs_archiver_grp.c
+	src/libraries/physfs/physfs_archiver_hog.c
+	src/libraries/physfs/physfs_archiver_iso9660.c
+	src/libraries/physfs/physfs_archiver_mvl.c
+	src/libraries/physfs/physfs_archiver_qpak.c
+	src/libraries/physfs/physfs_archiver_slb.c
+	src/libraries/physfs/physfs_archiver_unpacked.c
+	src/libraries/physfs/physfs_archiver_vdf.c
+	src/libraries/physfs/physfs_archiver_wad.c
+	src/libraries/physfs/physfs_archiver_zip.c
+	src/libraries/physfs/physfs_byteorder.c
+	src/libraries/physfs/physfs_casefolding.h
+	src/libraries/physfs/physfs_internal.h
+	src/libraries/physfs/physfs_lzmasdk.h
+	src/libraries/physfs/physfs_miniz.h
+	src/libraries/physfs/physfs_platform_haiku.cpp
+	src/libraries/physfs/physfs_platform_os2.c
+	src/libraries/physfs/physfs_platform_posix.c
+	src/libraries/physfs/physfs_platform_qnx.c
+	src/libraries/physfs/physfs_platform_unix.c
+	src/libraries/physfs/physfs_platform_windows.c
+	src/libraries/physfs/physfs_platform_winrt.cpp
+	src/libraries/physfs/physfs_platforms.h
+	src/libraries/physfs/physfs_unicode.c
+	src/libraries/physfs/physfs.c
+	src/libraries/physfs/physfs.h
+)
+
+if(APPLE)
+	set(LOVE_SRC_3P_PHYSFS ${LOVE_SRC_3P_PHYSFS}
+		src/libraries/physfs/physfs_platform_apple.m
+	)
+endif()
+
+add_library(love_3p_physfs ${LOVE_SRC_3P_PHYSFS})
+
 #
 #
 # stb_image
 # stb_image
 #
 #
@@ -1348,6 +1593,16 @@ set(LOVE_SRC_3P_STB
 
 
 # stb_image has no implementation files of its own.
 # stb_image has no implementation files of its own.
 
 
+#
+# tiny exr
+#
+
+set(LOVE_SRC_3P_TINYEXR
+	src/libraries/tinyexr/tinyexr.h
+)
+
+# tinyexr has no implementation files of its own.
+
 #
 #
 # utf8
 # utf8
 #
 #
@@ -1385,20 +1640,34 @@ set(LOVE_SRC_3P_WUFF
 
 
 add_library(love_3p_wuff ${LOVE_SRC_3P_WUFF})
 add_library(love_3p_wuff ${LOVE_SRC_3P_WUFF})
 
 
+#
+# xxHash
+#
+
+set(LOVE_SRC_3P_XXHASH
+	src/libraries/xxHash/xxhash.c
+	src/libraries/xxHash/xxhash.h
+)
+
+add_library(love_3p_xxhash ${LOVE_SRC_3P_XXHASH})
+
 set(LOVE_3P
 set(LOVE_3P
 	love_3p_box2d
 	love_3p_box2d
 	love_3p_ddsparse
 	love_3p_ddsparse
 	love_3p_enet
 	love_3p_enet
 	love_3p_glad
 	love_3p_glad
+	love_3p_glslang
 	love_3p_lodepng
 	love_3p_lodepng
 	love_3p_luasocket
 	love_3p_luasocket
-	love_3p_luautf8
+	love_3p_lua53
 	love_3p_lz4
 	love_3p_lz4
 	love_3p_noise1234
 	love_3p_noise1234
+	love_3p_physfs
 	love_3p_wuff
 	love_3p_wuff
+	love_3p_xxhash
 )
 )
 
 
-love_disable_warnings(love_3p_box2d love_3p_enet love_3p_luasocket)
+love_disable_warnings(love_3p_box2d love_3p_enet love_3p_luasocket love_3p_physfs)
 
 
 #
 #
 # liblove
 # liblove
@@ -1407,6 +1676,7 @@ set(LOVE_LIB_SRC
 	${LOVE_SRC_COMMON}
 	${LOVE_SRC_COMMON}
 	# Modules
 	# Modules
 	${LOVE_SRC_MODULE_AUDIO}
 	${LOVE_SRC_MODULE_AUDIO}
+	${LOVE_SRC_MODULE_DATA}
 	${LOVE_SRC_MODULE_EVENT}
 	${LOVE_SRC_MODULE_EVENT}
 	${LOVE_SRC_MODULE_FILESYSTEM}
 	${LOVE_SRC_MODULE_FILESYSTEM}
 	${LOVE_SRC_MODULE_FONT}
 	${LOVE_SRC_MODULE_FONT}

+ 167 - 0
love/src/jni/love/changes.txt

@@ -1,3 +1,170 @@
+LOVE 0.11.0 []
+--------------
+
+Released: N/A
+
+  * Added Object:release.
+  * Added Data:clone.
+  * Added queueable audio sources.
+  * Added audio input support.
+  * Added Source filters: low gain, high gain and band pass.
+  * Added audio effect APIs (reverb, echo, etc.)
+  * Added variants of SoundData:getSample/setSample which take a channel parameter.
+  * Added variants of all table-with-fields-returning get* functions, the new variants take an existing table to fill in.
+  * Added a variant to World:update, which accepts the number of iterations to run. The defaults are now 8 and 3.
+  * Added Body:isTouching.
+  * Added RopeJoint:setMaxLength.
+  * Added a click count argument to love.mousepressed and love.mousereleased.
+  * Added variants of love.filesystem.mount which accept a Data or FileData object containing zipped data.
+  * Added love.filesystem.get/setCRequirePath, and use that to find c libraries for require.
+  * Added variants of File:read and love.filesystem.read which take an enum to determine whether they return a FileData or a string.
+  * Added love.data module. It includes hex/base64 encoding functions, MD5 and SHA hashing, string packing, compression APIs, and more.
+  * Added Channel:hasRead, which checks if a message has been read. Takes an id, which Channel:push will now return.
+  * Added variants of Channel:demand and Channel:supply which take a timeout argument.
+  * Added Transform objects to love.math.
+  * Added support for different ImageData formats, including RGBA8 (the default), RGBA16, RGBA16F, and RGBA32F.
+  * Added the ability to load Radiance HDR, OpenEXR, and 16 bit PNG images.
+  * Added love.graphics.getImageFormats (replaces love.graphics.getCompressedImageFormats).
+  * Added the ability to specify a per-object pixel density scale factor when creating Images, Canvases, Fonts, and Videos. Affects drawing.
+  * Added Texture:getPixelWidth/Height and love.graphics.getPixelWidth/Height.
+  * Added Texture:getPixelDensity, love.graphics.getPixelDensity, and Font:getPixelDensity.
+  * Added Texture:getMipmapCount, getFormat, getLayerCount, getDepth, and getTextureType.
+  * Added Array, Cubemap, and Volume texture types and corresponding Image and Canvas APIs.
+  * Added love.graphics.getTextureTypes, returns a table with fields indicating support for each texture type.
+  * Added mipmapping support to Canvases, including both auto-generated mipmaps and manually rendering to a specific mipmap level.
+  * Added 'stencil8', 'depth24stencil8', 'depth32fstencil8', 'depth16', 'depth24', and 'depth32f' pixel formats for Canvases.
+  * Added variant of love.graphics.newCanvas which accepts a table of settings.
+  * Added optional 'readable' boolean field to the table passed into love.graphics.newCanvas.
+  * Added optional 'depthstencil' field to the table passed into love.graphics.setCanvas, for using a depth/stencil Canvas.
+  * Added optional 'depth' and 'stencil' boolean fields to the table passed into setCanvas, for enabling depth and stencil buffers if 'depthstencil' isn't used.
+  * Added shadow sampler support for Canvases.
+  * Added love.graphics.setDepthMode for using the depth buffer for depth testing/writes. Depth values of rendered objects can only be set via shaders.
+  * Added love.graphics.setMeshCullMode, for culling back- or front-facing triangles when drawing a Mesh.
+  * Added love.graphics.setFrontFaceWinding.
+  * Added variant of love.graphics.getCanvasFormats which takes a 'readable' boolean.
+  * Added love.graphics.drawLayer and SpriteBatch:add/setLayer for easily drawing layers of Array Textures.
+  * Added variants of love.graphics.print and printf which take a Font argument.
+  * Added variants of love.graphics.clear to control how the active depth and stencil buffers are cleared.
+  * Added love.graphics.applyTransform and love.graphics.replaceTransform.
+  * Added love.graphics.transformPoint and love.graphics.inverseTransformPoint.
+  * Added love.graphics.getStackDepth.
+  * Added love.graphics.flushBatch for manually flushing automatically batched draws.
+  * Added SpriteBatch:setDrawRange.
+  * Added per-shader opt in support for the GLSL 3.30 and GLSL ES 3.00 shading languages.
+  * Added 'void effect()' pixel shader entry point.
+  * Added love.graphics.validateShader.
+  * Added Shader:hasUniform.
+  * Added support for non-square shader uniform matrices on desktop platforms and on mobile GLSL 3.
+  * Added Shader:send(matrixname, is_column_major, matrix, ...) which specifies how to interpret the matrix table arguments.
+  * Added Shader:send variants which accept a Data object.
+  * Added 'borderellipse' and 'borderrectangle' ParticleSystem distributions.
+  * Added variant of ParticleSystem:setEmissionArea which accepts an area angle and a flag for whether particle directions are relative to the center of the area.
+  * Added ParticleSystem:set/getAreaSpreadAngle and set/getAreaSpreadIsRelativeDirection.
+  * Added love.graphics.captureScreenshot (replaces love.graphics.newScreenshot).
+  * Added 'glsl3', 'instancing', 'fullnpot','pixelshaderhighp', and 'shaderderivatives' graphics features.
+  * Added 'anisotropy' graphics limit.
+  * Added Mesh instancing support via love.graphics.drawInstanced and Mesh:attachAttribute.
+  * Added a Mesh:attachAttribute variant that takes a different target attribute name.
+  * Added Mesh:detachAttribute.
+  * Added a variant of Mesh:setVertexMap which accepts a Data object.
+  * Added love.window.updateMode.
+  * Added love.window.isMinimized.
+  * Added love.window.restore.
+  * Added the ability to prevent love from creating a stencil buffer for the window.
+  * Added cycle detection to Variant's table serialization, cycles now cause an error, rather than a stack overflow.
+  * Added love.graphics.newShader File and FileData variants.
+  * Added a default love.threaderror callback, which raises the error in the main thread.
+  * Added checks for invalid constants passed to love.keyboard.isDown/isScancodeDown.
+  * Added deprecation warnings, on by default for non-fused games.
+  * Added love.filesystem.getInfo.
+  * Added 'drawcallsbatched' to love.graphics.getStats.
+
+  * Deprecated love.filesystem.exists / isFile / isDirectory / isSymlink / getLastModified / getSize (use getInfo instead).
+  * Deprecated love.math.compress / decompress (use love.data.compress / decompress instead).
+
+  * - All renamed APIs are formally deprecated rather than completely removed.
+  * Renamed love.window.getPixelScale to love.window.getDPIScale.
+  * Renamed love.mouse.hasCursor to love.mouse.isCursorSupported.
+  * Renamed ParticleSystem:setAreaSpread to ParticleSystem:setEmissionArea.
+  * Renamed love.errhand to love.errorhandler.
+  * Renamed Source/SoundData/Decoder:getChannels to getChannelCount.
+  * Renamed PrismaticJoint/RevoluteJoint:hasLimitsEnabled to areLimitsEnabled.
+  * Renamed love.audio.getSourceCount to love.audio.getActiveSourceCount.
+  * Renamed all get[Object]List functions to get[Object]s.
+
+  * Removed the default source type for love.audio.newSource.
+  * Removed variant of love.filesystem.newFileData which takes base64 data, use love.math.decode instead.
+  * Removed the no-argument variant of Text:set, use Text:clear instead.
+  * Removed love.graphics.getCompressedImageFormats, use love.graphics.getImageFormats instead.
+  * Removed the 'void effects(...)' pixel shader entry point. Use the new 'void effect()' instead.
+  * Removed Shader:getExternVariable, use Shader:hasUniform instead.
+  * Removed love.graphics.newScreenshot, use love.graphics.captureScreenshot instead.
+  * Removed deprecated enet function host:socket_get_address.
+  * Removed functions deprecated in LÖVE 0.10.2:
+    * Removed Shader:sendInt, Shader:sendBoolean, Shader:sentFloat, Shader:sendMatrix, and Shader:sendTexture (use Shader:send instead).
+    * Removed love.window.isCreated (use love.window.isOpen instead).
+
+  * Improved performance when drawing textures, shapes, lines, and points by automatically batching their draw calls together when possible.
+  * Improved performance of Shader:send when the Shader is not active.
+  * Improved performance of love.math.randomNormal when LuaJIT's JIT compiler is enabled.
+  * Improved performance of love.filesystem.lines and File:lines, especially when reading from a file inside a zip/.love.
+
+  * Changed all color values to be in the range 0-1, rather than 0-255.
+  * Changed high-dpi functionality to require much less code (often none at all) for graphics to appear at the correct sizes and positions.
+  * Changed love.graphics.print and friends to ignore carriage returns.
+  * Changed the 'multiply' blend mode to error if not used with the 'premultiplied' blend alpha mode, since the formula only works with that anyway.
+  * Changed some love.graphics, love.window, and love.event APIs to cause an error if a Canvas is active.
+  * Changed stenciling functionality with a Canvas active to require stencil=true (or a custom stencil-formatted Canvas) to be set in setCanvas.
+  * Changed Mesh:setDrawRange to take 'start' and 'count' parameters instead of 'min' and 'max'.
+  * Changed the 'vsync' field of love.window.setMode and t.window in love.conf. It's now an integer with 0 disabling vsync.
+  * Changed the audio playback APIs drastically.
+  * Changed enet to no longer set the 'enet' global, again matching luasocket.
+  * Changed Source seeking behaviour, all kinds of Sources now behave similarly when seeking past the boundaries.
+  * Changed love.timer.step, it now returns dt.
+  * Changed love.run and love.errhand to return a function for their main loop, which gets called until love quits.
+
+  * Updated and improved command line argument handling.
+  * Updated the boot sequence to show an error instead of the no-game screen, if a nonexistant folder is passed in as the source game directory.
+  * Updated 'love.exe --version' on Windows to print to the parent console.
+  * Updated Android print rerouting and JIT compilation disabling to apply inside threads.
+  * Updated invalid enum value error messages to show a list of the valid enum values.
+  * Updated Source:seek to work if the Source isn't playing.
+  * Updated love.event.poll to stop allocating memory unnecessarily.
+  * Updated love.math.random to have improved numeric distribution.
+  * Updated love.graphics to support Core Profile OpenGL 3.3+ when available.
+  * Updated shaders to always expose derivative functions (dFdx, dFdy, fwidth) when available in OpenGL ES.
+  * Updated shaders to allow using VERTEX and PIXEL in shader code.
+  * Updated love.graphics.circle/ellipse/arc/rectangle to take transformation scale into account when determining the number of segments to use.
+  * Updated Font glyph generation to improve antialiasing.
+  * Updated Canvas:newImageData to return an ImageData with a format that matches the Canvas' as closely as possible.
+  * Updated love.graphics.newImage to treat file names ending with "@2x", "@3x", etc. as a pixel density scale factor if none is explicitly supplied.
+  * Updated the error message when bad values are given to love.graphics.line.
+  * Updated the maximum love.graphics transformation/state stack depth from 64 to 128.
+  * Updated the default error handler to allow copying the error to the clipboard when the user decides to do so.
+  * Updated love.filesystem.setRequirePath to support multiple template '?' characters in each path.
+  * Updated luasocket to version 3.0rc1.
+
+  * Fixed error in default error handler when the error message contains non UTF-8 bytes.
+  * Fixed a memory leak when sending love objects to threads which never load that object's module.
+  * Fixed a memory leak in enet when peer:send fails.
+  * Fixed os.execute always returning -1 in Linux.
+  * Fixed the default reference angle for WeldJoint, PrismaticJoint, and RevoluteJoint.
+  * Fixed Fixture:getShape to reuse the existing internal Fixture-owned shape.
+  * Fixed MouseJoint:setFrequency to error instead of crashing if a frequency of 0 is set.
+  * Fixed love.system.set/getClipboardText to error instead of crashing, when a window hasn't been created.
+  * Fixed Joystick:getGamepadMapping to work with xinput controllers.
+  * Fixed love.joystick.setGamepadMapping's replacement code.
+  * Fixed baseline calculation when rendering text.
+  * Fixed VaryingTexCoords and love_ScreenSize in shaders to be 'highp' in OpenGL ES, when supported.
+  * Fixed ParticleSystem:setParticleLifetime to error if a negative value is given.
+  * Fixed Shader:send and Shader:sendColor ignoring the last argument for an array.
+  * Fixed a crash when love.graphics.pop is called after a love.window.setMode while the transformation stack was not empty.
+  * Fixed love.window.isMaximized.
+  * Fixed video playback to work with a wider range of Ogg Theora files.
+  * Fixed video seeking to be faster.
+  * Fixed BezierCurves to error instead of hanging in some situations.
+  * Fixed compilation of luasocket with newer luajit 2.1.0 beta versions.
+
 LOVE 0.10.2 [Super Toast]
 LOVE 0.10.2 [Super Toast]
 -------------------------
 -------------------------
 
 

+ 12 - 3
love/src/jni/love/extra/appveyor/appveyor.yml

@@ -1,12 +1,21 @@
-version: 0.10.2.{build}
+version: 0.11.0.{build}
 
 
 image: Visual Studio 2013
 image: Visual Studio 2013
 
 
 shallow_clone: true
 shallow_clone: true
 
 
+environment:
+  matrix:
+    - PLATFORM: x86
+      VCVARSALL_PLATFORM: x86
+      GENERATOR: "Visual Studio 12"
+    - PLATFORM: x64
+      VCVARSALL_PLATFORM: x86_amd64
+      GENERATOR: "Visual Studio 12 Win64"
+
 init:
 init:
 # Make VS 2013 command line tools available
 # Make VS 2013 command line tools available
-- call "C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\vcvarsall.bat" %platform%
+- call "C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\vcvarsall.bat" %VCVARSALL_PLATFORM%
 
 
 install:
 install:
 # We need to install NSIS to create the packaged installer executable.
 # We need to install NSIS to create the packaged installer executable.
@@ -26,7 +35,7 @@ install:
 - move love libs\love
 - move love libs\love
 
 
 before_build:
 before_build:
-- cmake -G "Visual Studio 12" -H. -Bbuild
+- cmake -G "%GENERATOR%" -H. -Bbuild
 
 
 build_script:
 build_script:
 - cmake --build build --target PACKAGE --config Release
 - cmake --build build --target PACKAGE --config Release

BIN
love/src/jni/love/extra/windows/love.rc


+ 246 - 7
love/src/jni/love/license.txt

@@ -1,6 +1,6 @@
 This software uses LOVE:
 This software uses LOVE:
 
 
-LOVE is Copyright (c) 2006-2016 LOVE Development Team
+LOVE is Copyright (c) 2006-2018 LOVE Development Team
 
 
 This software is provided 'as-is', without any express or implied
 This software is provided 'as-is', without any express or implied
 warranty. In no event will the authors be held liable for any damages
 warranty. In no event will the authors be held liable for any damages
@@ -23,9 +23,9 @@ distribution.
 
 
 ---------
 ---------
 
 
-This software uses LuaJIT:
+This software uses ENet:
 
 
-LuaJIT is Copyright (c) 2005-2015 Mike Pall
+Copyright (c) 2002-2016 Lee Salzman
 
 
 Permission is hereby granted, free of charge, to any person obtaining a copy
 Permission is hereby granted, free of charge, to any person obtaining a copy
 of this software and associated documentation files (the "Software"), to deal
 of this software and associated documentation files (the "Software"), to deal
@@ -47,9 +47,97 @@ THE SOFTWARE.
 
 
 ---------
 ---------
 
 
-This software uses ENet:
+This software uses GLAD:
+
+ The MIT License (MIT)
+ 
+ Copyright (c) 2013 David Herberth, modified by Alex Szpakowski
+ 
+ Permission is hereby granted, free of charge, to any person obtaining a copy of
+ this software and associated documentation files (the "Software"), to deal in
+ the Software without restriction, including without limitation the rights to
+ use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
+ the Software, and to permit persons to whom the Software is furnished to do so,
+ subject to the following conditions:
+ 
+ The above copyright notice and this permission notice shall be included in all
+ copies or substantial portions of the Software.
+ 
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
+ FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
+ COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
+ IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+---------
+
+This software uses glslang:
+
+Copyright (C) 2002-2005  3Dlabs Inc. Ltd.
+Copyright (C) 2013-2016 LunarG, Inc.
+
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions
+are met:
+
+   Redistributions of source code must retain the above copyright
+   notice, this list of conditions and the following disclaimer.
+
+   Redistributions in binary form must reproduce the above
+   copyright notice, this list of conditions and the following
+   disclaimer in the documentation and/or other materials provided
+   with the distribution.
+
+   Neither the name of 3Dlabs Inc. Ltd. nor the names of its
+   contributors may be used to endorse or promote products derived
+   from this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGE.
+
+---------
+
+This software uses portions of Kepler Project's lua-compat-5.3:
+
+The MIT License (MIT)
+
+Copyright (c) 2015 Kepler Project.
+
+Permission is hereby granted, free of charge, to any person obtaining a copy of
+this software and associated documentation files (the "Software"), to deal in
+the Software without restriction, including without limitation the rights to
+use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
+the Software, and to permit persons to whom the Software is furnished to do so,
+subject to the following conditions:
 
 
-Copyright (c) 2002-2014 Lee Salzman
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
+FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
+COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
+IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+---------
+
+This software uses lua-enet:
+
+Copyright (C) 2011 by Leaf Corcoran
 
 
 Permission is hereby granted, free of charge, to any person obtaining a copy
 Permission is hereby granted, free of charge, to any person obtaining a copy
 of this software and associated documentation files (the "Software"), to deal
 of this software and associated documentation files (the "Software"), to deal
@@ -71,9 +159,9 @@ THE SOFTWARE.
 
 
 ---------
 ---------
 
 
-This software uses lua-enet:
+This software uses LuaJIT:
 
 
-Copyright (C) 2011 by Leaf Corcoran
+LuaJIT is Copyright (c) 2005-2016 Mike Pall
 
 
 Permission is hereby granted, free of charge, to any person obtaining a copy
 Permission is hereby granted, free of charge, to any person obtaining a copy
 of this software and associated documentation files (the "Software"), to deal
 of this software and associated documentation files (the "Software"), to deal
@@ -95,6 +183,121 @@ THE SOFTWARE.
 
 
 ---------
 ---------
 
 
+This software uses Lua's UTF-8 module:
+
+Copyright (C) 1994-2015 Lua.org, PUC-Rio, 2015 LOVE Development Team.
+
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of this software and associated documentation files (the
+"Software"), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
+CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
+TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
+SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+---------
+
+This software uses luasocket:
+
+LuaSocket 3.0 license
+Copyright (C) 2004-2013 Diego Nehab
+
+Permission is hereby granted, free of charge, to any person obtaining a
+copy of this software and associated documentation files (the "Software"),
+to deal in the Software without restriction, including without limitation
+the rights to use, copy, modify, merge, publish, distribute, sublicense,
+and/or sell copies of the Software, and to permit persons to whom the
+Software is furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+DEALINGS IN THE SOFTWARE.
+
+---------
+
+This software uses LZ4:
+
+LZ4 - Fast LZ compression algorithm
+Copyright (C) 2011-2015, Yann Collet.
+
+BSD 2-Clause License (http://www.opensource.org/licenses/bsd-license.php)
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are
+met:
+
+   * Redistributions of source code must retain the above copyright
+notice, this list of conditions and the following disclaimer.
+   * Redistributions in binary form must reproduce the above
+copyright notice, this list of conditions and the following disclaimer
+in the documentation and/or other materials provided with the
+distribution.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+You can contact the author at :
+- LZ4 source repository : https://github.com/Cyan4973/lz4
+- LZ4 public forum : https://groups.google.com/forum/#!forum/lz4c
+
+---------
+
+This software uses TinyEXR:
+
+Copyright (c) 2014 - 2016, Syoyo Fujita
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+    * Redistributions of source code must retain the above copyright
+      notice, this list of conditions and the following disclaimer.
+    * Redistributions in binary form must reproduce the above copyright
+      notice, this list of conditions and the following disclaimer in the
+      documentation and/or other materials provided with the distribution.
+    * Neither the name of the <organization> nor the
+      names of its contributors may be used to endorse or promote products
+      derived from this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+DISCLAIMED. IN NO EVENT SHALL <COPYRIGHT HOLDER> BE LIABLE FOR ANY
+DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+---------
+
 This software uses UTF8-CPP:
 This software uses UTF8-CPP:
 
 
 Copyright 2006 Nemanja Trifunovic
 Copyright 2006 Nemanja Trifunovic
@@ -123,12 +326,48 @@ DEALINGS IN THE SOFTWARE.
 
 
 ---------
 ---------
 
 
+This software uses xxHash:
+
+xxHash - Extremely Fast Hash algorithm
+Copyright (C) 2012-2016, Yann Collet.
+
+BSD 2-Clause License (http://www.opensource.org/licenses/bsd-license.php)
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are
+met:
+
+   * Redistributions of source code must retain the above copyright
+notice, this list of conditions and the following disclaimer.
+   * Redistributions in binary form must reproduce the above
+copyright notice, this list of conditions and the following disclaimer
+in the documentation and/or other materials provided with the
+distribution.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+You can contact the author at :
+- xxHash source repository : https://github.com/Cyan4973/xxHash
+
+---------
+
 This software uses the following LGPL libraries on Windows, Mac OS X, Linux,
 This software uses the following LGPL libraries on Windows, Mac OS X, Linux,
 and Android:
 and Android:
 
 
  - libmpg123
  - libmpg123
      Website: http://www.mpg123.de/
      Website: http://www.mpg123.de/
      Source download: http://sourceforge.net/projects/mpg123/files/latest/download
      Source download: http://sourceforge.net/projects/mpg123/files/latest/download
+
  - OpenAL Soft
  - OpenAL Soft
      Website: http://kcat.strangesoft.net/openal.html
      Website: http://kcat.strangesoft.net/openal.html
      Source download: http://kcat.strangesoft.net/openal.html#download
      Source download: http://kcat.strangesoft.net/openal.html#download

+ 0 - 28
love/src/jni/love/platform/macosx/Info-Framework.plist

@@ -1,28 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
-<plist version="1.0">
-<dict>
-	<key>CFBundleDevelopmentRegion</key>
-	<string>English</string>
-	<key>CFBundleExecutable</key>
-	<string>${EXECUTABLE_NAME}</string>
-	<key>CFBundleIconFile</key>
-	<string></string>
-	<key>CFBundleIdentifier</key>
-	<string>love2d.${PRODUCT_NAME:rfc1034identifier}</string>
-	<key>CFBundleInfoDictionaryVersion</key>
-	<string>6.0</string>
-	<key>CFBundleName</key>
-	<string>LÖVE</string>
-	<key>CFBundlePackageType</key>
-	<string>FMWK</string>
-	<key>CFBundleShortVersionString</key>
-	<string>0.9.2</string>
-	<key>CFBundleSignature</key>
-	<string>LoVe</string>
-	<key>CFBundleVersion</key>
-	<string>0.9.2</string>
-	<key>NSPrincipalClass</key>
-	<string></string>
-</dict>
-</plist>

+ 0 - 75
love/src/jni/love/platform/macosx/OSX.mm

@@ -1,75 +0,0 @@
-/**
- * Copyright (c) 2006-2014 LOVE Development Team
- *
- * This software is provided 'as-is', without any express or implied
- * warranty.  In no event will the authors be held liable for any damages
- * arising from the use of this software.
- *
- * Permission is granted to anyone to use this software for any purpose,
- * including commercial applications, and to alter it and redistribute it
- * freely, subject to the following restrictions:
- *
- * 1. The origin of this software must not be misrepresented; you must not
- *    claim that you wrote the original software. If you use this software
- *    in a product, an acknowledgment in the product documentation would be
- *    appreciated but is not required.
- * 2. Altered source versions must be plainly marked as such, and must not be
- *    misrepresented as being the original software.
- * 3. This notice may not be removed or altered from any source distribution.
- **/
-
-#import "OSX.h"
-#import <Foundation/Foundation.h>
-
-#include <SDL2/SDL.h>
-
-namespace love
-{
-namespace osx
-{
-
-std::string getLoveInResources()
-{
-	std::string path;
-
-	@autoreleasepool
-	{
-		// check to see if there are any .love files in Resources - props to stevejohnson/diordna
-		NSArray *lovePaths = [[NSBundle mainBundle] pathsForResourcesOfType:@"love" inDirectory:nil];
-		if ([lovePaths count] > 0)
-		{
-			NSString *firstLovePath = [lovePaths objectAtIndex:0];
-			path = std::string([firstLovePath UTF8String]);
-		}
-	}
-
-	return path;
-}
-
-std::string checkDropEvents()
-{
-	std::string dropstr;
-	SDL_Event event;
-
-	bool initvideo = SDL_WasInit(SDL_INIT_VIDEO) != 0;
-	if (!initvideo)
-		SDL_InitSubSystem(SDL_INIT_VIDEO);
-
-	SDL_PumpEvents();
-	if (SDL_PeepEvents(&event, 1, SDL_GETEVENT, SDL_DROPFILE, SDL_DROPFILE) > 0)
-	{
-		if (event.type == SDL_DROPFILE)
-		{
-			dropstr = std::string(event.drop.file);
-			SDL_free(event.drop.file);
-		}
-	}
-
-	if (!initvideo)
-		SDL_QuitSubSystem(SDL_INIT_VIDEO);
-
-	return dropstr;
-}
-
-} // osx
-} // love

BIN
love/src/jni/love/platform/macosx/dmg/DS_Store


BIN
love/src/jni/love/platform/macosx/dmg/VolumeIcon.icns


BIN
love/src/jni/love/platform/macosx/dmg/backgroundImage.tiff


BIN
love/src/jni/love/platform/macosx/icons/Love.icns


BIN
love/src/jni/love/platform/macosx/icons/LoveDocument.icns


+ 0 - 87
love/src/jni/love/platform/macosx/love-Info.plist

@@ -1,87 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
-<plist version="1.0">
-<dict>
-	<key>CFBundleDevelopmentRegion</key>
-	<string>English</string>
-	<key>CFBundleDocumentTypes</key>
-	<array>
-		<dict>
-			<key>CFBundleTypeIconFile</key>
-			<string>LoveDocument.icns</string>
-			<key>CFBundleTypeName</key>
-			<string>LÖVE Project</string>
-			<key>CFBundleTypeRole</key>
-			<string>Viewer</string>
-			<key>LSHandlerRank</key>
-			<string>Owner</string>
-			<key>LSItemContentTypes</key>
-			<array>
-				<string>org.love2d.love-game</string>
-			</array>
-		</dict>
-		<dict>
-			<key>CFBundleTypeName</key>
-			<string>Folder</string>
-			<key>CFBundleTypeOSTypes</key>
-			<array>
-				<string>fold</string>
-			</array>
-			<key>CFBundleTypeRole</key>
-			<string>Viewer</string>
-			<key>LSHandlerRank</key>
-			<string>None</string>
-		</dict>
-	</array>
-	<key>CFBundleExecutable</key>
-	<string>love</string>
-	<key>CFBundleIconFile</key>
-	<string>Love.icns</string>
-	<key>CFBundleIdentifier</key>
-	<string>org.love2d.love</string>
-	<key>CFBundleInfoDictionaryVersion</key>
-	<string>6.0</string>
-	<key>CFBundleName</key>
-	<string>LÖVE</string>
-	<key>CFBundlePackageType</key>
-	<string>APPL</string>
-	<key>CFBundleShortVersionString</key>
-	<string>0.9.2</string>
-	<key>CFBundleSignature</key>
-	<string>LoVe</string>
-	<key>LSApplicationCategoryType</key>
-	<string>public.app-category.games</string>
-	<key>NSHumanReadableCopyright</key>
-	<string>© 2006-2014 LÖVE Development Team</string>
-	<key>NSPrincipalClass</key>
-	<string>NSApplication</string>
-	<key>UTExportedTypeDeclarations</key>
-	<array>
-		<dict>
-			<key>UTTypeConformsTo</key>
-			<array>
-				<string>com.pkware.zip-archive</string>
-			</array>
-			<key>UTTypeDescription</key>
-			<string>LÖVE Project</string>
-			<key>UTTypeIconFile</key>
-			<string>LoveDocument.icns</string>
-			<key>UTTypeIdentifier</key>
-			<string>org.love2d.love-game</string>
-			<key>UTTypeReferenceURL</key>
-			<string>http://love2d.org/wiki/Game_Distribution</string>
-			<key>UTTypeTagSpecification</key>
-			<dict>
-				<key>com.apple.ostype</key>
-				<string>LOVE</string>
-				<key>public.filename-extension</key>
-				<array>
-					<string>love</string>
-				</array>
-				<key>public.mime-type</key>
-				<string>application/x-love-game</string>
-			</dict>
-		</dict>
-	</array>
-</dict>
-</plist>

+ 0 - 2702
love/src/jni/love/platform/macosx/love-framework.xcodeproj/project.pbxproj

@@ -1,2702 +0,0 @@
-// !$*UTF8*$!
-{
-	archiveVersion = 1;
-	classes = {
-	};
-	objectVersion = 46;
-	objects = {
-
-/* Begin PBXBuildFile section */
-		FA01BE1E1878E35B00640047 /* wrap_Texture.cpp in Sources */ = {isa = PBXBuildFile; fileRef = FA01BE1C1878E35B00640047 /* wrap_Texture.cpp */; };
-		FA01BE1F1878E35B00640047 /* wrap_Texture.h in Headers */ = {isa = PBXBuildFile; fileRef = FA01BE1D1878E35B00640047 /* wrap_Texture.h */; };
-		FA03546C1731F3A700284828 /* simplexnoise1234.cpp in Sources */ = {isa = PBXBuildFile; fileRef = FA03546A1731F3A700284828 /* simplexnoise1234.cpp */; };
-		FA03546D1731F3A700284828 /* simplexnoise1234.h in Headers */ = {isa = PBXBuildFile; fileRef = FA03546B1731F3A700284828 /* simplexnoise1234.h */; };
-		FA08F5B016C752F900F007B5 /* Source.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2FB732687B1669402408356D /* Source.cpp */; };
-		FA08F5B116C752F900F007B5 /* wrap_Audio.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 02CA1BE908D91B104EB9590F /* wrap_Audio.cpp */; };
-		FA08F5B216C752F900F007B5 /* wrap_Source.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 02662CBC29B954295A634A39 /* wrap_Source.cpp */; };
-		FA08F5B316C752FC00F007B5 /* Audio.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1839744763625B5D64EC70AC /* Audio.cpp */; };
-		FA08F5B416C7530100F007B5 /* Audio.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7CC5707C79175FA6427B3D62 /* Audio.cpp */; };
-		FA08F5B516C7530100F007B5 /* Source.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1A304E384AF2119905C01504 /* Source.cpp */; };
-		FA08F5B616C7530A00F007B5 /* Audio.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 6CB1193233FA78EE646A17A1 /* Audio.cpp */; };
-		FA08F5B716C7530A00F007B5 /* Pool.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 601E6A56345412E87E1D396B /* Pool.cpp */; };
-		FA08F5B816C7530A00F007B5 /* Source.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 28024635525B077E08A73D9B /* Source.cpp */; };
-		FA08F5B916C7532A00F007B5 /* b64.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 5D383DA1468545C30E7B5805 /* b64.cpp */; };
-		FA08F5BA16C7532A00F007B5 /* delay.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 36437CE95936736320710513 /* delay.cpp */; };
-		FA08F5BB16C7532A00F007B5 /* Exception.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 3746164716797CF80D6B0CEE /* Exception.cpp */; };
-		FA08F5BD16C7532A00F007B5 /* Matrix.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0CB6025618505B055A4E75DD /* Matrix.cpp */; };
-		FA08F5BE16C7532A00F007B5 /* Memoizer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 40A0593B616A223A4CEF07C9 /* Memoizer.cpp */; };
-		FA08F5BF16C7532A00F007B5 /* Module.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 30E466F441EE727658716873 /* Module.cpp */; };
-		FA08F5C016C7532A00F007B5 /* Object.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 411B061C49172C971C622125 /* Object.cpp */; };
-		FA08F5C116C7532A00F007B5 /* Reference.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 35B31EBC4DDB6F994BCA46B6 /* Reference.cpp */; };
-		FA08F5C216C7532A00F007B5 /* runtime.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 45E761A0072E0EF92BD66EA9 /* runtime.cpp */; };
-		FA08F5C316C7532A00F007B5 /* utf8.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7D9B03C2438B748D0DE93DD5 /* utf8.cpp */; };
-		FA08F5C416C7532A00F007B5 /* Variant.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 3C56375F752B7A9779DD37EC /* Variant.cpp */; };
-		FA08F5C516C7532A00F007B5 /* Vector.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1A2A61843B753E3F5B330703 /* Vector.cpp */; };
-		FA08F5C616C7532A00F007B5 /* wrap_Data.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 5ED732200E1B2E5F79831DDA /* wrap_Data.cpp */; };
-		FA08F5C716C7533C00F007B5 /* b2BroadPhase.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4B5F4DF8110020A96B5D3EAB /* b2BroadPhase.cpp */; };
-		FA08F5C816C7533C00F007B5 /* b2CollideCircle.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7E7A068041FD553876712F05 /* b2CollideCircle.cpp */; };
-		FA08F5C916C7533C00F007B5 /* b2CollideEdge.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1B036C7C5A8832AE53BB1C06 /* b2CollideEdge.cpp */; };
-		FA08F5CA16C7533C00F007B5 /* b2CollidePolygon.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 427B4B2517C0516844370E3D /* b2CollidePolygon.cpp */; };
-		FA08F5CB16C7533C00F007B5 /* b2Collision.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 32CC11481CD9164455455D72 /* b2Collision.cpp */; };
-		FA08F5CC16C7533C00F007B5 /* b2Distance.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 175A1B8D733B2D4803F64AC1 /* b2Distance.cpp */; };
-		FA08F5CD16C7533C00F007B5 /* b2DynamicTree.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 59D27EA33E8E62E15C185948 /* b2DynamicTree.cpp */; };
-		FA08F5CE16C7533C00F007B5 /* b2TimeOfImpact.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1F0D375C38A245E403E53DB5 /* b2TimeOfImpact.cpp */; };
-		FA08F5CF16C7534400F007B5 /* b2ChainShape.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4E6705C154C34FBD143F465E /* b2ChainShape.cpp */; };
-		FA08F5D016C7534400F007B5 /* b2CircleShape.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 08AA5965073A1C520A7A6833 /* b2CircleShape.cpp */; };
-		FA08F5D116C7534400F007B5 /* b2EdgeShape.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 633E37194CB535AE41A00092 /* b2EdgeShape.cpp */; };
-		FA08F5D216C7534400F007B5 /* b2PolygonShape.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 08983C025D0655270DF81A5B /* b2PolygonShape.cpp */; };
-		FA08F5D316C7535000F007B5 /* b2BlockAllocator.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 55A759CE711E157339930E58 /* b2BlockAllocator.cpp */; };
-		FA08F5D416C7535000F007B5 /* b2Draw.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 12390CBC115B00D06EF951DD /* b2Draw.cpp */; };
-		FA08F5D516C7535000F007B5 /* b2Math.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2C78323D7D5C628A53EC6931 /* b2Math.cpp */; };
-		FA08F5D616C7535000F007B5 /* b2Settings.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 6FF15DF4423F6426224024C9 /* b2Settings.cpp */; };
-		FA08F5D716C7535000F007B5 /* b2StackAllocator.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 780D5B6358096BEB1F1336EE /* b2StackAllocator.cpp */; };
-		FA08F5D816C7535000F007B5 /* b2Timer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 239054AE7475433E39747DA9 /* b2Timer.cpp */; };
-		FA08F5D916C7536C00F007B5 /* b2Body.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 120B391518206E964493126C /* b2Body.cpp */; };
-		FA08F5DA16C7536C00F007B5 /* b2ContactManager.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2A6150F7479D21346EC54B68 /* b2ContactManager.cpp */; };
-		FA08F5DB16C7536C00F007B5 /* b2Fixture.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 059C04C13F3A7C05570F2987 /* b2Fixture.cpp */; };
-		FA08F5DC16C7536C00F007B5 /* b2Island.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 59BE634A2ACE722F14B86F89 /* b2Island.cpp */; };
-		FA08F5DD16C7536C00F007B5 /* b2World.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0D6F00D95C4407BB26E71E02 /* b2World.cpp */; };
-		FA08F5DE16C7536C00F007B5 /* b2WorldCallbacks.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0F8D03F1544476B57CA97B01 /* b2WorldCallbacks.cpp */; };
-		FA08F5DF16C7537B00F007B5 /* b2ChainAndCircleContact.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 468F7A0A484820DE79CE76D2 /* b2ChainAndCircleContact.cpp */; };
-		FA08F5E016C7537B00F007B5 /* b2ChainAndPolygonContact.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 60C95C7F507A381D0A483B3F /* b2ChainAndPolygonContact.cpp */; };
-		FA08F5E116C7537B00F007B5 /* b2CircleContact.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 58792BC1126C2917432D706B /* b2CircleContact.cpp */; };
-		FA08F5E216C7537B00F007B5 /* b2Contact.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 71F878E2440A021B68D93ABC /* b2Contact.cpp */; };
-		FA08F5E316C7537B00F007B5 /* b2ContactSolver.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1E9E4F657DEC2772493B79CC /* b2ContactSolver.cpp */; };
-		FA08F5E416C7537B00F007B5 /* b2EdgeAndCircleContact.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1108594E361A22D90D6022E8 /* b2EdgeAndCircleContact.cpp */; };
-		FA08F5E516C7537B00F007B5 /* b2EdgeAndPolygonContact.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 243E18977E2A37CC6FDD55A5 /* b2EdgeAndPolygonContact.cpp */; };
-		FA08F5E616C7537B00F007B5 /* b2PolygonAndCircleContact.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 31871B8B7E1A697A73576040 /* b2PolygonAndCircleContact.cpp */; };
-		FA08F5E716C7537B00F007B5 /* b2PolygonContact.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1F4E747212DE41716BC245C9 /* b2PolygonContact.cpp */; };
-		FA08F5E816C7538F00F007B5 /* b2DistanceJoint.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 33627AE97E66147E76804EF9 /* b2DistanceJoint.cpp */; };
-		FA08F5E916C7538F00F007B5 /* b2FrictionJoint.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 13093ADC78426C5009DF3B13 /* b2FrictionJoint.cpp */; };
-		FA08F5EA16C7538F00F007B5 /* b2GearJoint.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 69A01D71103275D451F965B2 /* b2GearJoint.cpp */; };
-		FA08F5EB16C7538F00F007B5 /* b2Joint.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 6F1B61350B6B36AF216C57D7 /* b2Joint.cpp */; };
-		FA08F5EC16C7538F00F007B5 /* b2MouseJoint.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4A47384208BE218F688C4EFA /* b2MouseJoint.cpp */; };
-		FA08F5ED16C7538F00F007B5 /* b2PrismaticJoint.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1E27263847302FCA1F843B47 /* b2PrismaticJoint.cpp */; };
-		FA08F5EE16C7538F00F007B5 /* b2PulleyJoint.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 66EC3C0463A703A97445193B /* b2PulleyJoint.cpp */; };
-		FA08F5EF16C7538F00F007B5 /* b2RevoluteJoint.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 11D62E873092729B497B447F /* b2RevoluteJoint.cpp */; };
-		FA08F5F016C7538F00F007B5 /* b2RopeJoint.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 38AF72D4790619BB022E2AEF /* b2RopeJoint.cpp */; };
-		FA08F5F116C7538F00F007B5 /* b2WeldJoint.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 5BCC49F529F726385CD41FA6 /* b2WeldJoint.cpp */; };
-		FA08F5F216C7538F00F007B5 /* b2WheelJoint.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0602250B7E4664E43CA113DC /* b2WheelJoint.cpp */; };
-		FA08F5F316C7539B00F007B5 /* b2Rope.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4832527C02C105776536438A /* b2Rope.cpp */; };
-		FA08F5F416C753A400F007B5 /* luasocket.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2DC90F3C6160198256795C75 /* luasocket.cpp */; };
-		FA08F5F516C753B800F007B5 /* auxiliar.c in Sources */ = {isa = PBXBuildFile; fileRef = 1CD02D1975803957282F28AB /* auxiliar.c */; };
-		FA08F5F616C753B800F007B5 /* buffer.c in Sources */ = {isa = PBXBuildFile; fileRef = 21B25A7E333315172B754D4F /* buffer.c */; };
-		FA08F5F716C753B800F007B5 /* except.c in Sources */ = {isa = PBXBuildFile; fileRef = 49496EAF3305281B19223C22 /* except.c */; };
-		FA08F5F816C753B800F007B5 /* inet.c in Sources */ = {isa = PBXBuildFile; fileRef = 610B475400DE0F7213352BC3 /* inet.c */; };
-		FA08F5F916C753B800F007B5 /* io.c in Sources */ = {isa = PBXBuildFile; fileRef = 135801A6483528800C676492 /* io.c */; };
-		FA08F5FA16C753B800F007B5 /* luasocket.c in Sources */ = {isa = PBXBuildFile; fileRef = 5FAE2A9679C97F2C2792182D /* luasocket.c */; };
-		FA08F5FB16C753B800F007B5 /* mime.c in Sources */ = {isa = PBXBuildFile; fileRef = 00393E4930202C2B6E381F68 /* mime.c */; };
-		FA08F5FC16C753B800F007B5 /* options.c in Sources */ = {isa = PBXBuildFile; fileRef = 5F846B49240D52C10F6F76E5 /* options.c */; };
-		FA08F5FD16C753B800F007B5 /* select.c in Sources */ = {isa = PBXBuildFile; fileRef = 415E1438178736BE0EA908D5 /* select.c */; };
-		FA08F5FE16C753B800F007B5 /* tcp.c in Sources */ = {isa = PBXBuildFile; fileRef = 22256CC12B7C7D0D1B430D46 /* tcp.c */; };
-		FA08F5FF16C753B800F007B5 /* timeout.c in Sources */ = {isa = PBXBuildFile; fileRef = 4B41232F7AF7793540F46C58 /* timeout.c */; };
-		FA08F60016C753B800F007B5 /* udp.c in Sources */ = {isa = PBXBuildFile; fileRef = 2E2675AF3DAA24CE0728042C /* udp.c */; };
-		FA08F60116C753B800F007B5 /* unix.c in Sources */ = {isa = PBXBuildFile; fileRef = 734947AA28AF36E436D242FD /* unix.c */; };
-		FA08F60216C753B800F007B5 /* usocket.c in Sources */ = {isa = PBXBuildFile; fileRef = 041672ED2CF51FC62F532FDB /* usocket.c */; };
-		FA08F60316C753CE00F007B5 /* Event.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 24265680279E30A40DF81946 /* Event.cpp */; };
-		FA08F60416C753CE00F007B5 /* Event.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 3BA712260D725FEB72EB3CDE /* Event.cpp */; };
-		FA08F60516C753CE00F007B5 /* wrap_Event.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 691C5C5828550E2F60754EF2 /* wrap_Event.cpp */; };
-		FA08F60616C753DB00F007B5 /* File.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 11D141087979064B441B787D /* File.cpp */; };
-		FA08F60716C753DB00F007B5 /* FileData.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 62370A494F9D6E2D570065EB /* FileData.cpp */; };
-		FA08F60816C753DB00F007B5 /* File.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4E0F565B03D05C3722496F27 /* File.cpp */; };
-		FA08F60916C753DB00F007B5 /* Filesystem.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 6DE3129F3A0B2D9C178118F3 /* Filesystem.cpp */; };
-		FA08F60A16C753DB00F007B5 /* wrap_File.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 6C367AE309C453C412D91363 /* wrap_File.cpp */; };
-		FA08F60B16C753DB00F007B5 /* wrap_FileData.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 597478A255B82B56488B4717 /* wrap_FileData.cpp */; };
-		FA08F60C16C753DB00F007B5 /* wrap_Filesystem.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1E827AE8548C52493ED95629 /* wrap_Filesystem.cpp */; };
-		FA08F60D16C753E700F007B5 /* Font.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 714251EE742346DC17103357 /* Font.cpp */; };
-		FA08F60E16C753E700F007B5 /* TrueTypeRasterizer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0C30420F7FD3038C721223A5 /* TrueTypeRasterizer.cpp */; };
-		FA08F60F16C753E700F007B5 /* wrap_Font.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 232D67C67BEE54B776420682 /* wrap_Font.cpp */; };
-		FA08F61016C753E700F007B5 /* GlyphData.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 74003CB27FA762A021183AD5 /* GlyphData.cpp */; };
-		FA08F61116C753E700F007B5 /* ImageRasterizer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 5D016F4C27EF506C13FE3058 /* ImageRasterizer.cpp */; };
-		FA08F61216C753E700F007B5 /* Rasterizer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1B1C4E4D288A1D2F29E57B1B /* Rasterizer.cpp */; };
-		FA08F61316C753E700F007B5 /* wrap_GlyphData.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1B4E22F1388E2B2E76E3377B /* wrap_GlyphData.cpp */; };
-		FA08F61416C753E700F007B5 /* wrap_Rasterizer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 11745DE315E859F71E881D76 /* wrap_Rasterizer.cpp */; };
-		FA08F61716C753F600F007B5 /* Graphics.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 03F17FF546D637744E263961 /* Graphics.cpp */; };
-		FA08F61816C753F600F007B5 /* Texture.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 58CC50E70A375FDF53EF01B6 /* Texture.cpp */; };
-		FA08F61A16C753F600F007B5 /* Volatile.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4B731754147B27AF73AC5358 /* Volatile.cpp */; };
-		FA08F61B16C7541400F007B5 /* Canvas.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4AD52074367950B735707CE1 /* Canvas.cpp */; };
-		FA08F61C16C7541400F007B5 /* Font.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 583037E9238A6EF00DD20B1A /* Font.cpp */; };
-		FA08F61E16C7541400F007B5 /* Graphics.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 11773415762F3A38421C6DB3 /* Graphics.cpp */; };
-		FA08F61F16C7541400F007B5 /* Image.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 56D6030A0B8F7397715062B9 /* Image.cpp */; };
-		FA08F62016C7541400F007B5 /* OpenGL.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2E406F8328543EC63EB922C6 /* OpenGL.cpp */; };
-		FA08F62116C7541400F007B5 /* ParticleSystem.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 48A206C9004150640C432100 /* ParticleSystem.cpp */; };
-		FA08F62316C7541400F007B5 /* Shader.cpp in Sources */ = {isa = PBXBuildFile; fileRef = FA577A8516C71CF000860150 /* Shader.cpp */; };
-		FA08F62416C7541400F007B5 /* SpriteBatch.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4D700D182EAA46273D1E2CC4 /* SpriteBatch.cpp */; };
-		FA08F62516C7541400F007B5 /* VertexBuffer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 426B1C4475DC54505B824B7F /* VertexBuffer.cpp */; };
-		FA08F62616C7541400F007B5 /* wrap_Canvas.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4E3251027026699A1D4D310D /* wrap_Canvas.cpp */; };
-		FA08F62716C7541400F007B5 /* wrap_Font.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7A3B52AF1FBE73FC36AD50C8 /* wrap_Font.cpp */; };
-		FA08F62816C7541400F007B5 /* wrap_Graphics.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1A9810F758AC1D1E4B6431FD /* wrap_Graphics.cpp */; };
-		FA08F62916C7541400F007B5 /* wrap_Image.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 14AE68E14C2C74526A612FA0 /* wrap_Image.cpp */; };
-		FA08F62A16C7541400F007B5 /* wrap_ParticleSystem.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 5F42052D7C8271A1105541DE /* wrap_ParticleSystem.cpp */; };
-		FA08F62C16C7541400F007B5 /* wrap_Shader.cpp in Sources */ = {isa = PBXBuildFile; fileRef = FA577A8716C71CF000860150 /* wrap_Shader.cpp */; };
-		FA08F62D16C7541400F007B5 /* wrap_SpriteBatch.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 02C16FDB537A702F4D42534E /* wrap_SpriteBatch.cpp */; };
-		FA08F62E16C7542600F007B5 /* ImageData.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 78115E763B723C0C40AD47CF /* ImageData.cpp */; };
-		FA08F62F16C7542600F007B5 /* Image.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 505F23A73BFE250833D650E4 /* Image.cpp */; };
-		FA08F63016C7542600F007B5 /* DevilHandler.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1AA7781A230065F346E2313A /* DevilHandler.cpp */; };
-		FA08F63116C7542600F007B5 /* wrap_Image.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0B0728FA73B107B37A956A09 /* wrap_Image.cpp */; };
-		FA08F63216C7542600F007B5 /* wrap_ImageData.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 076840774B0B6E721D0C18D0 /* wrap_ImageData.cpp */; };
-		FA08F63416C7542D00F007B5 /* JoystickModule.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 55B425307C0C1C4B3EFC3A5F /* JoystickModule.cpp */; };
-		FA08F63516C7542D00F007B5 /* wrap_JoystickModule.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 139411436818381E493F00F5 /* wrap_JoystickModule.cpp */; };
-		FA08F63616C7543400F007B5 /* Keyboard.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 524741891BB93848039F4174 /* Keyboard.cpp */; };
-		FA08F63716C7543400F007B5 /* Keyboard.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 43BC2B1C505E5EFF650C31E3 /* Keyboard.cpp */; };
-		FA08F63816C7543400F007B5 /* wrap_Keyboard.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 19F40DF6507028212FEB1D77 /* wrap_Keyboard.cpp */; };
-		FA08F63916C7543A00F007B5 /* love.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 19ED419874B46EC16F927524 /* love.cpp */; };
-		FA08F63A16C7544300F007B5 /* Mouse.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 31E0110E5797041465FF5F95 /* Mouse.cpp */; };
-		FA08F63B16C7544300F007B5 /* Mouse.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 584E16AE09E12536206C46FE /* Mouse.cpp */; };
-		FA08F63C16C7544300F007B5 /* wrap_Mouse.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 22EF17981EBD442773FE41B6 /* wrap_Mouse.cpp */; };
-		FA08F63D16C7544B00F007B5 /* Body.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2DCE45C868A0091B762C7377 /* Body.cpp */; };
-		FA08F63E16C7544B00F007B5 /* Joint.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 69DB4423147C7E3362941E75 /* Joint.cpp */; };
-		FA08F63F16C7544B00F007B5 /* Shape.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 70F425B5336E1CD652827FD0 /* Shape.cpp */; };
-		FA08F64016C7546400F007B5 /* Body.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 089B1AC1248B21D336594457 /* Body.cpp */; };
-		FA08F64116C7546400F007B5 /* ChainShape.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0959542C4B54320B1DDD5911 /* ChainShape.cpp */; };
-		FA08F64216C7546400F007B5 /* CircleShape.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4DAB28A9235E2CBE75F56848 /* CircleShape.cpp */; };
-		FA08F64316C7546400F007B5 /* Contact.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 02CD63315FF902E336AB4657 /* Contact.cpp */; };
-		FA08F64416C7546400F007B5 /* DistanceJoint.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 34A36BB617BC5CCA5B870EA6 /* DistanceJoint.cpp */; };
-		FA08F64516C7546400F007B5 /* EdgeShape.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 755C2B980C106EA7423E7E5E /* EdgeShape.cpp */; };
-		FA08F64616C7546400F007B5 /* Fixture.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 47C77F6032FA77E046AA6810 /* Fixture.cpp */; };
-		FA08F64716C7546400F007B5 /* FrictionJoint.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1E22646A710E5EFC27FE3932 /* FrictionJoint.cpp */; };
-		FA08F64816C7546400F007B5 /* GearJoint.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 6F4D478A52A0408765095920 /* GearJoint.cpp */; };
-		FA08F64916C7546400F007B5 /* Joint.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 3EA80A4E0CE0014052076037 /* Joint.cpp */; };
-		FA08F64A16C7546400F007B5 /* MouseJoint.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 3C0B06AF6B5326C840477B18 /* MouseJoint.cpp */; };
-		FA08F64B16C7546400F007B5 /* Physics.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 370D76DC224F2EB300CB4E2F /* Physics.cpp */; };
-		FA08F64C16C7546400F007B5 /* PolygonShape.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 54E85987318206E93DC8189F /* PolygonShape.cpp */; };
-		FA08F64D16C7546400F007B5 /* PrismaticJoint.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0AE5755936E84C247FB56C65 /* PrismaticJoint.cpp */; };
-		FA08F64E16C7546400F007B5 /* PulleyJoint.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 5CB720BA493D7D995E0E20DD /* PulleyJoint.cpp */; };
-		FA08F64F16C7546400F007B5 /* RevoluteJoint.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 36DD053F754B2D29719B1F80 /* RevoluteJoint.cpp */; };
-		FA08F65016C7546400F007B5 /* RopeJoint.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 53C4064801456193163E4631 /* RopeJoint.cpp */; };
-		FA08F65116C7546400F007B5 /* Shape.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 61E64F07028039774F502D69 /* Shape.cpp */; };
-		FA08F65216C7547300F007B5 /* WeldJoint.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 78E50525407567F863476E27 /* WeldJoint.cpp */; };
-		FA08F65316C7547300F007B5 /* WheelJoint.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 44DE79C879CC0074510A2403 /* WheelJoint.cpp */; };
-		FA08F65416C7547300F007B5 /* World.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 644D0C953C3439FC57C03FC6 /* World.cpp */; };
-		FA08F65516C7547300F007B5 /* wrap_Body.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 64694F91593478085859666F /* wrap_Body.cpp */; };
-		FA08F65616C7547300F007B5 /* wrap_ChainShape.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1CAA69E00D0808BA2108238B /* wrap_ChainShape.cpp */; };
-		FA08F65716C7547300F007B5 /* wrap_CircleShape.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 6EF321185C2B1F1E1AF54F64 /* wrap_CircleShape.cpp */; };
-		FA08F65816C7547300F007B5 /* wrap_Contact.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 3BB22A142670197B0DBD0BED /* wrap_Contact.cpp */; };
-		FA08F65916C7547300F007B5 /* wrap_DistanceJoint.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 69967D2323404E1F0ED21F11 /* wrap_DistanceJoint.cpp */; };
-		FA08F65A16C7547300F007B5 /* wrap_EdgeShape.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 40F412FF29F65F5A3D511B98 /* wrap_EdgeShape.cpp */; };
-		FA08F65B16C7547300F007B5 /* wrap_Fixture.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7F796B7A3362196075C62E61 /* wrap_Fixture.cpp */; };
-		FA08F65C16C7547300F007B5 /* wrap_FrictionJoint.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 340345481F165F8945C716AE /* wrap_FrictionJoint.cpp */; };
-		FA08F65D16C7548200F007B5 /* wrap_GearJoint.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 50B67F2D0CC511706810302E /* wrap_GearJoint.cpp */; };
-		FA08F65E16C7548200F007B5 /* wrap_Joint.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 71810207414B52F8340D7797 /* wrap_Joint.cpp */; };
-		FA08F65F16C7548200F007B5 /* wrap_MouseJoint.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4D81102E7ABD1C282BE42CE3 /* wrap_MouseJoint.cpp */; };
-		FA08F66016C7548200F007B5 /* wrap_Physics.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 6CEB48E969FC42C53F9432B1 /* wrap_Physics.cpp */; };
-		FA08F66116C7548200F007B5 /* wrap_PolygonShape.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 3AD03C7A77C546ED07BE4C06 /* wrap_PolygonShape.cpp */; };
-		FA08F66216C7548200F007B5 /* wrap_PrismaticJoint.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0B4020CD058D70F569DF6129 /* wrap_PrismaticJoint.cpp */; };
-		FA08F66316C7548200F007B5 /* wrap_PulleyJoint.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1E840AF84AB61C6410E26634 /* wrap_PulleyJoint.cpp */; };
-		FA08F66416C7548200F007B5 /* wrap_RevoluteJoint.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1F3A277A44141DBF7BCF146A /* wrap_RevoluteJoint.cpp */; };
-		FA08F66516C7548200F007B5 /* wrap_RopeJoint.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0E3E13BC3E3A7C0C7DBE7DF8 /* wrap_RopeJoint.cpp */; };
-		FA08F66616C7548200F007B5 /* wrap_Shape.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 124E716E0BCA055534A60AD2 /* wrap_Shape.cpp */; };
-		FA08F66716C7548200F007B5 /* wrap_WeldJoint.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 3DFF31EE26405E554C610C8F /* wrap_WeldJoint.cpp */; };
-		FA08F66816C7548200F007B5 /* wrap_WheelJoint.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 73473B3C698B538002540A5D /* wrap_WheelJoint.cpp */; };
-		FA08F66916C7548200F007B5 /* wrap_World.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 36324E12371E518E6E9C61B5 /* wrap_World.cpp */; };
-		FA08F66A16C7549200F007B5 /* Sound.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 30ED4BB03C5F11254AF12E98 /* Sound.cpp */; };
-		FA08F66B16C7549200F007B5 /* SoundData.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0C5C6C6E47851D1308411DE6 /* SoundData.cpp */; };
-		FA08F66C16C7549200F007B5 /* wrap_Decoder.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 5CF629B94C7802D446D61C45 /* wrap_Decoder.cpp */; };
-		FA08F66D16C7549200F007B5 /* wrap_Sound.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 385902BD584E7D73154E4EBB /* wrap_Sound.cpp */; };
-		FA08F66E16C7549200F007B5 /* wrap_SoundData.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4DC3617831763D2760335D87 /* wrap_SoundData.cpp */; };
-		FA08F66F16C754A100F007B5 /* Decoder.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4E15567759041CC379292BE6 /* Decoder.cpp */; };
-		FA08F67016C754A100F007B5 /* FLACDecoder.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4A774BC26B7235E410D40C8E /* FLACDecoder.cpp */; };
-		FA08F67116C754A100F007B5 /* GmeDecoder.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 02F0197227150E1B28D9425B /* GmeDecoder.cpp */; };
-		FA08F67216C754A100F007B5 /* ModPlugDecoder.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 407422E8589417B6683D1042 /* ModPlugDecoder.cpp */; };
-		FA08F67316C754A100F007B5 /* Mpg123Decoder.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1F875B224C4E1B9E35854766 /* Mpg123Decoder.cpp */; };
-		FA08F67416C754A100F007B5 /* Sound.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2A5F7DCB40652F9B7D61073A /* Sound.cpp */; };
-		FA08F67516C754A100F007B5 /* VorbisDecoder.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 727648E06CD863A2582F798F /* VorbisDecoder.cpp */; };
-		FA08F67716C754A900F007B5 /* threads.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 6B3565203A1778431F8A5409 /* threads.cpp */; };
-		FA08F67916C754B100F007B5 /* Timer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 113269E55FCF208D2D6754BC /* Timer.cpp */; };
-		FA08F67A16C754B100F007B5 /* wrap_Timer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 695E4ED13AA0689E64280573 /* wrap_Timer.cpp */; };
-		FA08F67B16C754BA00F007B5 /* Window.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 351B09E51FDC338622F44624 /* Window.cpp */; };
-		FA08F67C16C754BA00F007B5 /* Window.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 6CDD4F3320303D222C180CD0 /* Window.cpp */; };
-		FA0A4BF0182E0C2800E1E4D2 /* b2MotorJoint.cpp in Sources */ = {isa = PBXBuildFile; fileRef = FA0A4BEE182E0C2800E1E4D2 /* b2MotorJoint.cpp */; };
-		FA0A4BF1182E0C2800E1E4D2 /* b2MotorJoint.h in Headers */ = {isa = PBXBuildFile; fileRef = FA0A4BEF182E0C2800E1E4D2 /* b2MotorJoint.h */; };
-		FA0A4BF4182E1AD600E1E4D2 /* MotorJoint.cpp in Sources */ = {isa = PBXBuildFile; fileRef = FA0A4BF2182E1AD600E1E4D2 /* MotorJoint.cpp */; };
-		FA0A4BF5182E1AD600E1E4D2 /* MotorJoint.h in Headers */ = {isa = PBXBuildFile; fileRef = FA0A4BF3182E1AD600E1E4D2 /* MotorJoint.h */; };
-		FA0A4BF9182E260200E1E4D2 /* wrap_MotorJoint.h in Headers */ = {isa = PBXBuildFile; fileRef = FA0A4BF7182E260200E1E4D2 /* wrap_MotorJoint.h */; };
-		FA0A4BFA182E26F500E1E4D2 /* wrap_MotorJoint.cpp in Sources */ = {isa = PBXBuildFile; fileRef = FA0A4BF6182E260200E1E4D2 /* wrap_MotorJoint.cpp */; };
-		FA0CDE3D1710F9A50056E8D7 /* FormatHandler.h in Headers */ = {isa = PBXBuildFile; fileRef = FA0CDE3B1710F9A50056E8D7 /* FormatHandler.h */; };
-		FA1EF7C41799FEAC00FF380C /* wrap_System.cpp in Sources */ = {isa = PBXBuildFile; fileRef = FA34E7D4174B55AF00E04D3F /* wrap_System.cpp */; };
-		FA1EF7C51799FEB200FF380C /* wrap_System.h in Headers */ = {isa = PBXBuildFile; fileRef = FA34E7D5174B55AF00E04D3F /* wrap_System.h */; };
-		FA34E7CD174B513F00E04D3F /* System.cpp in Sources */ = {isa = PBXBuildFile; fileRef = FA34E7CB174B513F00E04D3F /* System.cpp */; };
-		FA34E7CE174B513F00E04D3F /* System.h in Headers */ = {isa = PBXBuildFile; fileRef = FA34E7CC174B513F00E04D3F /* System.h */; };
-		FA34E7D2174B515D00E04D3F /* System.cpp in Sources */ = {isa = PBXBuildFile; fileRef = FA34E7D0174B515D00E04D3F /* System.cpp */; };
-		FA34E7D3174B515D00E04D3F /* System.h in Headers */ = {isa = PBXBuildFile; fileRef = FA34E7D1174B515D00E04D3F /* System.h */; };
-		FA3D9E0D16E68DE600CA6630 /* Cursor.cpp in Sources */ = {isa = PBXBuildFile; fileRef = FA3D9E0B16E68DE600CA6630 /* Cursor.cpp */; };
-		FA3D9E0E16E68DE600CA6630 /* Cursor.h in Headers */ = {isa = PBXBuildFile; fileRef = FA3D9E0C16E68DE600CA6630 /* Cursor.h */; };
-		FA3D9E1116E68EAE00CA6630 /* Cursor.cpp in Sources */ = {isa = PBXBuildFile; fileRef = FA3D9E0F16E68EAE00CA6630 /* Cursor.cpp */; };
-		FA3D9E1216E68EAE00CA6630 /* Cursor.h in Headers */ = {isa = PBXBuildFile; fileRef = FA3D9E1016E68EAE00CA6630 /* Cursor.h */; };
-		FA3D9E1516E6D41100CA6630 /* wrap_Cursor.cpp in Sources */ = {isa = PBXBuildFile; fileRef = FA3D9E1316E6D41000CA6630 /* wrap_Cursor.cpp */; };
-		FA3D9E1616E6D41100CA6630 /* wrap_Cursor.h in Headers */ = {isa = PBXBuildFile; fileRef = FA3D9E1416E6D41000CA6630 /* wrap_Cursor.h */; };
-		FA435EA317B36E9C004C3F22 /* Polyline.cpp in Sources */ = {isa = PBXBuildFile; fileRef = FA435EA117B36E9C004C3F22 /* Polyline.cpp */; };
-		FA435EA417B36E9C004C3F22 /* Polyline.h in Headers */ = {isa = PBXBuildFile; fileRef = FA435EA217B36E9C004C3F22 /* Polyline.h */; };
-		FA45F775187A0F3600D99ED8 /* Touch.cpp in Sources */ = {isa = PBXBuildFile; fileRef = FA45F770187A0F3600D99ED8 /* Touch.cpp */; };
-		FA45F776187A0F3600D99ED8 /* Touch.h in Headers */ = {isa = PBXBuildFile; fileRef = FA45F771187A0F3600D99ED8 /* Touch.h */; };
-		FA45F777187A0F3600D99ED8 /* Touch.h in Headers */ = {isa = PBXBuildFile; fileRef = FA45F772187A0F3600D99ED8 /* Touch.h */; };
-		FA45F778187A0F3600D99ED8 /* wrap_Touch.cpp in Sources */ = {isa = PBXBuildFile; fileRef = FA45F773187A0F3600D99ED8 /* wrap_Touch.cpp */; };
-		FA45F779187A0F3600D99ED8 /* wrap_Touch.h in Headers */ = {isa = PBXBuildFile; fileRef = FA45F774187A0F3600D99ED8 /* wrap_Touch.h */; };
-		FA4DAE691941410D009F0A3E /* PNGHandler.cpp in Sources */ = {isa = PBXBuildFile; fileRef = FA4DAE651941410D009F0A3E /* PNGHandler.cpp */; };
-		FA4DAE6A1941410D009F0A3E /* PNGHandler.h in Headers */ = {isa = PBXBuildFile; fileRef = FA4DAE661941410D009F0A3E /* PNGHandler.h */; };
-		FA4DAE6B1941410D009F0A3E /* STBHandler.cpp in Sources */ = {isa = PBXBuildFile; fileRef = FA4DAE671941410D009F0A3E /* STBHandler.cpp */; };
-		FA4DAE6C1941410D009F0A3E /* STBHandler.h in Headers */ = {isa = PBXBuildFile; fileRef = FA4DAE681941410D009F0A3E /* STBHandler.h */; };
-		FA4DAE731941411D009F0A3E /* lodepng.cpp in Sources */ = {isa = PBXBuildFile; fileRef = FA4DAE6E1941411D009F0A3E /* lodepng.cpp */; };
-		FA4DAE741941411D009F0A3E /* lodepng.h in Headers */ = {isa = PBXBuildFile; fileRef = FA4DAE6F1941411D009F0A3E /* lodepng.h */; };
-		FA4DAE761941411D009F0A3E /* stb_image.h in Headers */ = {isa = PBXBuildFile; fileRef = FA4DAE721941411D009F0A3E /* stb_image.h */; };
-		FA4DAE791941419A009F0A3E /* JPEGHandler.cpp in Sources */ = {isa = PBXBuildFile; fileRef = FA4DAE771941419A009F0A3E /* JPEGHandler.cpp */; };
-		FA4DAE7A1941419A009F0A3E /* JPEGHandler.h in Headers */ = {isa = PBXBuildFile; fileRef = FA4DAE781941419A009F0A3E /* JPEGHandler.h */; };
-		FA4DAE7C19414281009F0A3E /* libz.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = FA4DAE7B19414281009F0A3E /* libz.dylib */; };
-		FA52E446192AAADE0064D2FF /* PKMHandler.cpp in Sources */ = {isa = PBXBuildFile; fileRef = FA52E444192AAADE0064D2FF /* PKMHandler.cpp */; };
-		FA52E447192AAADE0064D2FF /* PKMHandler.h in Headers */ = {isa = PBXBuildFile; fileRef = FA52E445192AAADE0064D2FF /* PKMHandler.h */; };
-		FA5454C216F1310000D30303 /* MathModule.cpp in Sources */ = {isa = PBXBuildFile; fileRef = FA5454C016F1310000D30303 /* MathModule.cpp */; };
-		FA5454C316F1310000D30303 /* MathModule.h in Headers */ = {isa = PBXBuildFile; fileRef = FA5454C116F1310000D30303 /* MathModule.h */; };
-		FA577AB016C7507900860150 /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FA577A7916C71A1700860150 /* Cocoa.framework */; };
-		FA577AC216C7512D00860150 /* FreeType.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FA577A6716C719D900860150 /* FreeType.framework */; };
-		FA577AC416C7513200860150 /* IL.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FA577A6916C719DE00860150 /* IL.framework */; };
-		FA577AC516C7513400860150 /* libmodplug.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FA577A8216C71A5300860150 /* libmodplug.framework */; };
-		FA577AC716C7513A00860150 /* mpg123.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FA577A6F16C719F000860150 /* mpg123.framework */; };
-		FA577AC816C7513C00860150 /* Ogg.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FA577A7116C719F400860150 /* Ogg.framework */; };
-		FA577ACA16C7514100860150 /* OpenGL.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FA577A7C16C71A2600860150 /* OpenGL.framework */; };
-		FA577ACB16C7514400860150 /* physfs.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FA577A7316C719F900860150 /* physfs.framework */; };
-		FA577ACD16C7514C00860150 /* Vorbis.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FA577A7716C71A0800860150 /* Vorbis.framework */; };
-		FA5FDC791788D548002F0ED2 /* enet.cpp in Sources */ = {isa = PBXBuildFile; fileRef = FA5FDC5F1788D548002F0ED2 /* enet.cpp */; };
-		FA5FDC7A1788D548002F0ED2 /* callbacks.c in Sources */ = {isa = PBXBuildFile; fileRef = FA5FDC611788D548002F0ED2 /* callbacks.c */; };
-		FA5FDC7C1788D548002F0ED2 /* compress.c in Sources */ = {isa = PBXBuildFile; fileRef = FA5FDC631788D548002F0ED2 /* compress.c */; };
-		FA5FDC7D1788D548002F0ED2 /* host.c in Sources */ = {isa = PBXBuildFile; fileRef = FA5FDC641788D548002F0ED2 /* host.c */; };
-		FA5FDC7E1788D548002F0ED2 /* callbacks.h in Headers */ = {isa = PBXBuildFile; fileRef = FA5FDC671788D548002F0ED2 /* callbacks.h */; };
-		FA5FDC7F1788D548002F0ED2 /* enet.h in Headers */ = {isa = PBXBuildFile; fileRef = FA5FDC681788D548002F0ED2 /* enet.h */; };
-		FA5FDC801788D548002F0ED2 /* list.h in Headers */ = {isa = PBXBuildFile; fileRef = FA5FDC691788D548002F0ED2 /* list.h */; };
-		FA5FDC811788D548002F0ED2 /* protocol.h in Headers */ = {isa = PBXBuildFile; fileRef = FA5FDC6A1788D548002F0ED2 /* protocol.h */; };
-		FA5FDC821788D548002F0ED2 /* time.h in Headers */ = {isa = PBXBuildFile; fileRef = FA5FDC6B1788D548002F0ED2 /* time.h */; };
-		FA5FDC831788D548002F0ED2 /* types.h in Headers */ = {isa = PBXBuildFile; fileRef = FA5FDC6C1788D548002F0ED2 /* types.h */; };
-		FA5FDC841788D548002F0ED2 /* unix.h in Headers */ = {isa = PBXBuildFile; fileRef = FA5FDC6D1788D548002F0ED2 /* unix.h */; };
-		FA5FDC851788D548002F0ED2 /* utility.h in Headers */ = {isa = PBXBuildFile; fileRef = FA5FDC6E1788D548002F0ED2 /* utility.h */; };
-		FA5FDC861788D548002F0ED2 /* win32.h in Headers */ = {isa = PBXBuildFile; fileRef = FA5FDC6F1788D548002F0ED2 /* win32.h */; };
-		FA5FDC881788D548002F0ED2 /* list.c in Sources */ = {isa = PBXBuildFile; fileRef = FA5FDC711788D548002F0ED2 /* list.c */; };
-		FA5FDC891788D548002F0ED2 /* packet.c in Sources */ = {isa = PBXBuildFile; fileRef = FA5FDC721788D548002F0ED2 /* packet.c */; };
-		FA5FDC8A1788D548002F0ED2 /* peer.c in Sources */ = {isa = PBXBuildFile; fileRef = FA5FDC731788D548002F0ED2 /* peer.c */; };
-		FA5FDC8B1788D548002F0ED2 /* protocol.c in Sources */ = {isa = PBXBuildFile; fileRef = FA5FDC741788D548002F0ED2 /* protocol.c */; };
-		FA5FDC8D1788D548002F0ED2 /* unix.c in Sources */ = {isa = PBXBuildFile; fileRef = FA5FDC761788D548002F0ED2 /* unix.c */; };
-		FA5FDC8E1788D548002F0ED2 /* win32.c in Sources */ = {isa = PBXBuildFile; fileRef = FA5FDC771788D548002F0ED2 /* win32.c */; };
-		FA5FDC8F1788D548002F0ED2 /* lua-enet.h in Headers */ = {isa = PBXBuildFile; fileRef = FA5FDC781788D548002F0ED2 /* lua-enet.h */; };
-		FA61FD5E1926CFCE003AE9FB /* CompressedFormatHandler.h in Headers */ = {isa = PBXBuildFile; fileRef = FA61FD5B1926CFCE003AE9FB /* CompressedFormatHandler.h */; };
-		FA61FD5F1926CFCE003AE9FB /* PVRHandler.cpp in Sources */ = {isa = PBXBuildFile; fileRef = FA61FD5C1926CFCE003AE9FB /* PVRHandler.cpp */; };
-		FA61FD601926CFCE003AE9FB /* PVRHandler.h in Headers */ = {isa = PBXBuildFile; fileRef = FA61FD5D1926CFCE003AE9FB /* PVRHandler.h */; };
-		FA636D8A171B70920065623F /* RandomGenerator.cpp in Sources */ = {isa = PBXBuildFile; fileRef = FA636D88171B70920065623F /* RandomGenerator.cpp */; };
-		FA636D8B171B70920065623F /* RandomGenerator.h in Headers */ = {isa = PBXBuildFile; fileRef = FA636D89171B70920065623F /* RandomGenerator.h */; };
-		FA636D8E171B72A70065623F /* wrap_RandomGenerator.cpp in Sources */ = {isa = PBXBuildFile; fileRef = FA636D8C171B72A70065623F /* wrap_RandomGenerator.cpp */; };
-		FA636D8F171B72A70065623F /* wrap_RandomGenerator.h in Headers */ = {isa = PBXBuildFile; fileRef = FA636D8D171B72A70065623F /* wrap_RandomGenerator.h */; };
-		FA7175AA178E8418001FE7FE /* lua.h in Headers */ = {isa = PBXBuildFile; fileRef = FA7175A9178E8418001FE7FE /* lua.h */; };
-		FA7AA59217F6AC1F00704BE2 /* wrap_Mesh.cpp in Sources */ = {isa = PBXBuildFile; fileRef = FA7AA59017F6AC1F00704BE2 /* wrap_Mesh.cpp */; };
-		FA7AA59317F6AC1F00704BE2 /* wrap_Mesh.h in Headers */ = {isa = PBXBuildFile; fileRef = FA7AA59117F6AC1F00704BE2 /* wrap_Mesh.h */; };
-		FA7C937A16DCC6C2006F2BEE /* wrap_Math.cpp in Sources */ = {isa = PBXBuildFile; fileRef = FA7C937516DCC6C2006F2BEE /* wrap_Math.cpp */; };
-		FA7C937B16DCC6C2006F2BEE /* wrap_Math.h in Headers */ = {isa = PBXBuildFile; fileRef = FA7C937616DCC6C2006F2BEE /* wrap_Math.h */; };
-		FA9A100C182A0D5200106F9F /* glad.cpp in Sources */ = {isa = PBXBuildFile; fileRef = FA9A1009182A0D5200106F9F /* glad.cpp */; };
-		FA9A100D182A0D5200106F9F /* glad.hpp in Headers */ = {isa = PBXBuildFile; fileRef = FA9A100A182A0D5200106F9F /* glad.hpp */; };
-		FA9A100E182A0D5200106F9F /* gladfuncs.hpp in Headers */ = {isa = PBXBuildFile; fileRef = FA9A100B182A0D5200106F9F /* gladfuncs.hpp */; };
-		FA9B492A1875EFB900201DA9 /* Texture.h in Headers */ = {isa = PBXBuildFile; fileRef = FA9B49281875EFB900201DA9 /* Texture.h */; };
-		FA9B4A0816E1578300074F42 /* SDL2.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FA9B4A0716E1578300074F42 /* SDL2.framework */; };
-		FA9FC0B0173D6E3E005027FF /* wrap_Window.cpp in Sources */ = {isa = PBXBuildFile; fileRef = FA9FC0AE173D6E3E005027FF /* wrap_Window.cpp */; };
-		FA9FC0B1173D6E3E005027FF /* wrap_Window.h in Headers */ = {isa = PBXBuildFile; fileRef = FA9FC0AF173D6E3E005027FF /* wrap_Window.h */; };
-		FAA627CE18E7E1560080752D /* CoreServices.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FAA627CD18E7E1560080752D /* CoreServices.framework */; };
-		FAAC6B02170A373B008A61C5 /* CompressedData.cpp in Sources */ = {isa = PBXBuildFile; fileRef = FAAC6B00170A373A008A61C5 /* CompressedData.cpp */; };
-		FAAC6B03170A373B008A61C5 /* CompressedData.h in Headers */ = {isa = PBXBuildFile; fileRef = FAAC6B01170A373A008A61C5 /* CompressedData.h */; };
-		FAAFF04416CB11C700CCDE45 /* OpenAL-Soft.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FAAFF04316CB11C700CCDE45 /* OpenAL-Soft.framework */; };
-		FAB0078F1740C12D00A9664D /* Joystick.cpp in Sources */ = {isa = PBXBuildFile; fileRef = FAB0078D1740C12D00A9664D /* Joystick.cpp */; };
-		FAB007901740C12D00A9664D /* Joystick.h in Headers */ = {isa = PBXBuildFile; fileRef = FAB0078E1740C12D00A9664D /* Joystick.h */; };
-		FAB007931740C28900A9664D /* Joystick.cpp in Sources */ = {isa = PBXBuildFile; fileRef = FAB007911740C28900A9664D /* Joystick.cpp */; };
-		FAB007941740C28900A9664D /* Joystick.h in Headers */ = {isa = PBXBuildFile; fileRef = FAB007921740C28900A9664D /* Joystick.h */; };
-		FAB007971740C87D00A9664D /* wrap_Joystick.cpp in Sources */ = {isa = PBXBuildFile; fileRef = FAB007951740C87D00A9664D /* wrap_Joystick.cpp */; };
-		FAB007981740C87D00A9664D /* wrap_Joystick.h in Headers */ = {isa = PBXBuildFile; fileRef = FAB007961740C87D00A9664D /* wrap_Joystick.h */; };
-		FAC5710017402D1100D147E4 /* BezierCurve.cpp in Sources */ = {isa = PBXBuildFile; fileRef = FAC570FC17402D1100D147E4 /* BezierCurve.cpp */; };
-		FAC5710117402D1100D147E4 /* BezierCurve.h in Headers */ = {isa = PBXBuildFile; fileRef = FAC570FD17402D1100D147E4 /* BezierCurve.h */; };
-		FAC5710217402D1100D147E4 /* wrap_BezierCurve.cpp in Sources */ = {isa = PBXBuildFile; fileRef = FAC570FE17402D1100D147E4 /* wrap_BezierCurve.cpp */; };
-		FAC5710317402D1100D147E4 /* wrap_BezierCurve.h in Headers */ = {isa = PBXBuildFile; fileRef = FAC570FF17402D1100D147E4 /* wrap_BezierCurve.h */; };
-		FAC86E631724552C00EED715 /* wrap_Quad.cpp in Sources */ = {isa = PBXBuildFile; fileRef = FAC86E611724552C00EED715 /* wrap_Quad.cpp */; };
-		FAC86E641724552C00EED715 /* wrap_Quad.h in Headers */ = {isa = PBXBuildFile; fileRef = FAC86E621724552C00EED715 /* wrap_Quad.h */; };
-		FAC86E6B1724555D00EED715 /* Quad.cpp in Sources */ = {isa = PBXBuildFile; fileRef = FAC86E671724555D00EED715 /* Quad.cpp */; };
-		FAC86E6C1724555D00EED715 /* Quad.h in Headers */ = {isa = PBXBuildFile; fileRef = FAC86E681724555D00EED715 /* Quad.h */; };
-		FADD58DD18C30367005FC3BF /* FormatHandler.cpp in Sources */ = {isa = PBXBuildFile; fileRef = FADD58DC18C30367005FC3BF /* FormatHandler.cpp */; };
-		FAE010DB170DDE99006F29D0 /* ddsinfo.h in Headers */ = {isa = PBXBuildFile; fileRef = FAE010D8170DDE99006F29D0 /* ddsinfo.h */; };
-		FAE010DC170DDE99006F29D0 /* ddsparse.cpp in Sources */ = {isa = PBXBuildFile; fileRef = FAE010D9170DDE99006F29D0 /* ddsparse.cpp */; };
-		FAE010DD170DDE99006F29D0 /* ddsparse.h in Headers */ = {isa = PBXBuildFile; fileRef = FAE010DA170DDE99006F29D0 /* ddsparse.h */; };
-		FAE010E0170DE25E006F29D0 /* ddsHandler.cpp in Sources */ = {isa = PBXBuildFile; fileRef = FAE010DE170DE25E006F29D0 /* ddsHandler.cpp */; };
-		FAE010E1170DE25E006F29D0 /* ddsHandler.h in Headers */ = {isa = PBXBuildFile; fileRef = FAE010DF170DE25E006F29D0 /* ddsHandler.h */; };
-		FAE010E4170DF75C006F29D0 /* wrap_CompressedData.cpp in Sources */ = {isa = PBXBuildFile; fileRef = FAE010E2170DF75B006F29D0 /* wrap_CompressedData.cpp */; };
-		FAE010E5170DF75C006F29D0 /* wrap_CompressedData.h in Headers */ = {isa = PBXBuildFile; fileRef = FAE010E3170DF75C006F29D0 /* wrap_CompressedData.h */; };
-		FAE404401927F22C00814481 /* KTXHandler.cpp in Sources */ = {isa = PBXBuildFile; fileRef = FAE4043E1927F22C00814481 /* KTXHandler.cpp */; };
-		FAE404411927F22C00814481 /* KTXHandler.h in Headers */ = {isa = PBXBuildFile; fileRef = FAE4043F1927F22C00814481 /* KTXHandler.h */; };
-		FAEC808A1710FEA60057279A /* ImageData.cpp in Sources */ = {isa = PBXBuildFile; fileRef = FAEC80881710FEA60057279A /* ImageData.cpp */; };
-		FAEC808B1710FEA60057279A /* ImageData.h in Headers */ = {isa = PBXBuildFile; fileRef = FAEC80891710FEA60057279A /* ImageData.h */; };
-		FAEC808E1711E76C0057279A /* CompressedData.cpp in Sources */ = {isa = PBXBuildFile; fileRef = FAEC808C1711E76C0057279A /* CompressedData.cpp */; };
-		FAEC808F1711E76C0057279A /* CompressedData.h in Headers */ = {isa = PBXBuildFile; fileRef = FAEC808D1711E76C0057279A /* CompressedData.h */; };
-		FAF272A416E3D44400CC193A /* Channel.cpp in Sources */ = {isa = PBXBuildFile; fileRef = FAF2729816E3D44400CC193A /* Channel.cpp */; };
-		FAF272A516E3D44400CC193A /* Channel.h in Headers */ = {isa = PBXBuildFile; fileRef = FAF2729916E3D44400CC193A /* Channel.h */; };
-		FAF272A616E3D44400CC193A /* LuaThread.cpp in Sources */ = {isa = PBXBuildFile; fileRef = FAF2729A16E3D44400CC193A /* LuaThread.cpp */; };
-		FAF272A716E3D44400CC193A /* LuaThread.h in Headers */ = {isa = PBXBuildFile; fileRef = FAF2729B16E3D44400CC193A /* LuaThread.h */; };
-		FAF272A816E3D44400CC193A /* ThreadModule.cpp in Sources */ = {isa = PBXBuildFile; fileRef = FAF2729C16E3D44400CC193A /* ThreadModule.cpp */; };
-		FAF272A916E3D44400CC193A /* ThreadModule.h in Headers */ = {isa = PBXBuildFile; fileRef = FAF2729D16E3D44400CC193A /* ThreadModule.h */; };
-		FAF272AA16E3D44400CC193A /* wrap_Channel.cpp in Sources */ = {isa = PBXBuildFile; fileRef = FAF2729E16E3D44400CC193A /* wrap_Channel.cpp */; };
-		FAF272AB16E3D44400CC193A /* wrap_Channel.h in Headers */ = {isa = PBXBuildFile; fileRef = FAF2729F16E3D44400CC193A /* wrap_Channel.h */; };
-		FAF272AC16E3D44400CC193A /* wrap_LuaThread.cpp in Sources */ = {isa = PBXBuildFile; fileRef = FAF272A016E3D44400CC193A /* wrap_LuaThread.cpp */; };
-		FAF272AD16E3D44400CC193A /* wrap_LuaThread.h in Headers */ = {isa = PBXBuildFile; fileRef = FAF272A116E3D44400CC193A /* wrap_LuaThread.h */; };
-		FAF272AE16E3D44400CC193A /* wrap_ThreadModule.cpp in Sources */ = {isa = PBXBuildFile; fileRef = FAF272A216E3D44400CC193A /* wrap_ThreadModule.cpp */; };
-		FAF272AF16E3D44400CC193A /* wrap_ThreadModule.h in Headers */ = {isa = PBXBuildFile; fileRef = FAF272A316E3D44400CC193A /* wrap_ThreadModule.h */; };
-		FAF272B516E3D46400CC193A /* Thread.cpp in Sources */ = {isa = PBXBuildFile; fileRef = FAF272B116E3D46400CC193A /* Thread.cpp */; };
-		FAF272B616E3D46400CC193A /* Thread.h in Headers */ = {isa = PBXBuildFile; fileRef = FAF272B216E3D46400CC193A /* Thread.h */; };
-		FAF272B716E3D46400CC193A /* threads.cpp in Sources */ = {isa = PBXBuildFile; fileRef = FAF272B316E3D46400CC193A /* threads.cpp */; };
-		FAF272B816E3D46400CC193A /* threads.h in Headers */ = {isa = PBXBuildFile; fileRef = FAF272B416E3D46400CC193A /* threads.h */; };
-		FAF4376F17F4AC530074F9E2 /* Mesh.cpp in Sources */ = {isa = PBXBuildFile; fileRef = FAF4376D17F4AC530074F9E2 /* Mesh.cpp */; };
-		FAF4377017F4AC530074F9E2 /* Mesh.h in Headers */ = {isa = PBXBuildFile; fileRef = FAF4376E17F4AC530074F9E2 /* Mesh.h */; };
-		FAF6704C18184FF800DBDEEA /* wuff.c in Sources */ = {isa = PBXBuildFile; fileRef = FAF6704418184FF800DBDEEA /* wuff.c */; };
-		FAF6704D18184FF800DBDEEA /* wuff.h in Headers */ = {isa = PBXBuildFile; fileRef = FAF6704518184FF800DBDEEA /* wuff.h */; };
-		FAF6704E18184FF800DBDEEA /* wuff_config.h in Headers */ = {isa = PBXBuildFile; fileRef = FAF6704618184FF800DBDEEA /* wuff_config.h */; };
-		FAF6704F18184FF800DBDEEA /* wuff_convert.c in Sources */ = {isa = PBXBuildFile; fileRef = FAF6704718184FF800DBDEEA /* wuff_convert.c */; };
-		FAF6705018184FF800DBDEEA /* wuff_convert.h in Headers */ = {isa = PBXBuildFile; fileRef = FAF6704818184FF800DBDEEA /* wuff_convert.h */; };
-		FAF6705118184FF800DBDEEA /* wuff_internal.c in Sources */ = {isa = PBXBuildFile; fileRef = FAF6704918184FF800DBDEEA /* wuff_internal.c */; };
-		FAF6705218184FF800DBDEEA /* wuff_internal.h in Headers */ = {isa = PBXBuildFile; fileRef = FAF6704A18184FF800DBDEEA /* wuff_internal.h */; };
-		FAF6705318184FF800DBDEEA /* wuff_memory.c in Sources */ = {isa = PBXBuildFile; fileRef = FAF6704B18184FF800DBDEEA /* wuff_memory.c */; };
-		FAF670561818501300DBDEEA /* WaveDecoder.cpp in Sources */ = {isa = PBXBuildFile; fileRef = FAF670541818501300DBDEEA /* WaveDecoder.cpp */; };
-		FAF670571818501300DBDEEA /* WaveDecoder.h in Headers */ = {isa = PBXBuildFile; fileRef = FAF670551818501300DBDEEA /* WaveDecoder.h */; };
-/* End PBXBuildFile section */
-
-/* Begin PBXFileReference section */
-		001F02BC119E349012652C17 /* wrap_Data.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = wrap_Data.h; sourceTree = "<group>"; };
-		003142374F3D40A518716024 /* wrap_Keyboard.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = wrap_Keyboard.h; sourceTree = "<group>"; };
-		00393E4930202C2B6E381F68 /* mime.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = mime.c; sourceTree = "<group>"; };
-		006B015320155B4D42B43B61 /* wrap_Image.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = wrap_Image.h; sourceTree = "<group>"; };
-		00744BD73BFE3F591537728F /* Shape.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Shape.h; sourceTree = "<group>"; };
-		00D329851B1E7F6A3AF9614E /* tcp.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = tcp.h; sourceTree = "<group>"; };
-		02662CBC29B954295A634A39 /* wrap_Source.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = wrap_Source.cpp; sourceTree = "<group>"; };
-		02C16FDB537A702F4D42534E /* wrap_SpriteBatch.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = wrap_SpriteBatch.cpp; sourceTree = "<group>"; };
-		02CA1BE908D91B104EB9590F /* wrap_Audio.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = wrap_Audio.cpp; sourceTree = "<group>"; };
-		02CD63315FF902E336AB4657 /* Contact.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = Contact.cpp; sourceTree = "<group>"; };
-		02F0197227150E1B28D9425B /* GmeDecoder.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = GmeDecoder.cpp; sourceTree = "<group>"; };
-		02F064F5202E34F5718352B8 /* wrap_Shape.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = wrap_Shape.h; sourceTree = "<group>"; };
-		034144EE6C33421377674516 /* b2Distance.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = b2Distance.h; sourceTree = "<group>"; };
-		03F17FF546D637744E263961 /* Graphics.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = Graphics.cpp; sourceTree = "<group>"; };
-		041672ED2CF51FC62F532FDB /* usocket.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = usocket.c; sourceTree = "<group>"; };
-		047815B73C1C5373551442A6 /* wrap_Joint.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = wrap_Joint.h; sourceTree = "<group>"; };
-		048C39D14DA05F5843FE08CA /* ftp.lua.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ftp.lua.h; sourceTree = "<group>"; };
-		057A3770539D25AE6C8F20D3 /* Keyboard.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Keyboard.h; sourceTree = "<group>"; };
-		059C04C13F3A7C05570F2987 /* b2Fixture.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = b2Fixture.cpp; sourceTree = "<group>"; };
-		05DF237B657042515F3B4E52 /* wrap_Graphics.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = wrap_Graphics.h; sourceTree = "<group>"; };
-		0602250B7E4664E43CA113DC /* b2WheelJoint.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = b2WheelJoint.cpp; sourceTree = "<group>"; };
-		065364DB7A29396C777213D0 /* Joint.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Joint.h; sourceTree = "<group>"; };
-		076840774B0B6E721D0C18D0 /* wrap_ImageData.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = wrap_ImageData.cpp; sourceTree = "<group>"; };
-		079504CB332E415D4B27797B /* b2Body.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = b2Body.h; sourceTree = "<group>"; };
-		07B301984BE42246402F7D27 /* ImageData.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ImageData.h; sourceTree = "<group>"; };
-		085B376E3FBB254F0FD37958 /* Matrix.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Matrix.h; sourceTree = "<group>"; };
-		086B4A4E025B4B5F606747A2 /* b2DistanceJoint.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = b2DistanceJoint.h; sourceTree = "<group>"; };
-		08983C025D0655270DF81A5B /* b2PolygonShape.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = b2PolygonShape.cpp; sourceTree = "<group>"; };
-		089B1AC1248B21D336594457 /* Body.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = Body.cpp; sourceTree = "<group>"; };
-		08AA5965073A1C520A7A6833 /* b2CircleShape.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = b2CircleShape.cpp; sourceTree = "<group>"; };
-		08D24B70441A2496160C0849 /* Rasterizer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Rasterizer.h; sourceTree = "<group>"; };
-		090F537B70DA06EA0B29593F /* b2Settings.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = b2Settings.h; sourceTree = "<group>"; };
-		0959542C4B54320B1DDD5911 /* ChainShape.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = ChainShape.cpp; sourceTree = "<group>"; };
-		09C71F9D7DC45F5765B2462B /* socket.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = socket.h; sourceTree = "<group>"; };
-		0A063D006D52330E67FF4B3A /* b2PolygonContact.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = b2PolygonContact.h; sourceTree = "<group>"; };
-		0A0A2DA4094130187F655E52 /* b2Math.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = b2Math.h; sourceTree = "<group>"; };
-		0A420541704C1C2D718A4D20 /* b2EdgeAndCircleContact.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = b2EdgeAndCircleContact.h; sourceTree = "<group>"; };
-		0A936C83344E2CF84E703059 /* PulleyJoint.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = PulleyJoint.h; sourceTree = "<group>"; };
-		0AA1539E66B2641B66130709 /* b2MouseJoint.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = b2MouseJoint.h; sourceTree = "<group>"; };
-		0AE5755936E84C247FB56C65 /* PrismaticJoint.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = PrismaticJoint.cpp; sourceTree = "<group>"; };
-		0AFB7DA45B2D6913110A5AAB /* wrap_WheelJoint.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = wrap_WheelJoint.h; sourceTree = "<group>"; };
-		0B0728FA73B107B37A956A09 /* wrap_Image.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = wrap_Image.cpp; sourceTree = "<group>"; };
-		0B4020CD058D70F569DF6129 /* wrap_PrismaticJoint.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = wrap_PrismaticJoint.cpp; sourceTree = "<group>"; };
-		0B727D416262392743091BC3 /* TrueTypeRasterizer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = TrueTypeRasterizer.h; sourceTree = "<group>"; };
-		0BEB72033ACA25550ADA76C4 /* b64.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = b64.h; sourceTree = "<group>"; };
-		0C30420F7FD3038C721223A5 /* TrueTypeRasterizer.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = TrueTypeRasterizer.cpp; sourceTree = "<group>"; };
-		0C5C6C6E47851D1308411DE6 /* SoundData.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = SoundData.cpp; sourceTree = "<group>"; };
-		0CB6025618505B055A4E75DD /* Matrix.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = Matrix.cpp; sourceTree = "<group>"; };
-		0CFF64090F0F4F481BB80CF0 /* Volatile.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Volatile.h; sourceTree = "<group>"; };
-		0D6F00D95C4407BB26E71E02 /* b2World.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = b2World.cpp; sourceTree = "<group>"; };
-		0E3E13BC3E3A7C0C7DBE7DF8 /* wrap_RopeJoint.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = wrap_RopeJoint.cpp; sourceTree = "<group>"; };
-		0E755DCF691828CE11444877 /* b2PolygonShape.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = b2PolygonShape.h; sourceTree = "<group>"; };
-		0EA87794395D3B287C5949AA /* wrap_FrictionJoint.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = wrap_FrictionJoint.h; sourceTree = "<group>"; };
-		0EB870A1180261FD424A41B3 /* Shape.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Shape.h; sourceTree = "<group>"; };
-		0F0E666B7C790BB870477994 /* b2BlockAllocator.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = b2BlockAllocator.h; sourceTree = "<group>"; };
-		0F8D03F1544476B57CA97B01 /* b2WorldCallbacks.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = b2WorldCallbacks.cpp; sourceTree = "<group>"; };
-		104144AB73A974BC04A03131 /* graphics.lua.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = graphics.lua.h; sourceTree = "<group>"; };
-		104D5534669B772556942891 /* PrismaticJoint.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = PrismaticJoint.h; sourceTree = "<group>"; };
-		104D567660003ADE696D341A /* Source.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Source.h; sourceTree = "<group>"; };
-		10A608C96F067F972C962EFB /* love.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = love.h; sourceTree = "<group>"; };
-		10F83B5848B77A937C250FEB /* b2Joint.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = b2Joint.h; sourceTree = "<group>"; };
-		1108594E361A22D90D6022E8 /* b2EdgeAndCircleContact.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = b2EdgeAndCircleContact.cpp; sourceTree = "<group>"; };
-		112814480BBF2ED06EED15BF /* GlyphData.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = GlyphData.h; sourceTree = "<group>"; };
-		113269E55FCF208D2D6754BC /* Timer.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = Timer.cpp; sourceTree = "<group>"; };
-		11745DE315E859F71E881D76 /* wrap_Rasterizer.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = wrap_Rasterizer.cpp; sourceTree = "<group>"; };
-		11773415762F3A38421C6DB3 /* Graphics.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; lineEnding = 0; path = Graphics.cpp; sourceTree = "<group>"; xcLanguageSpecificationIdentifier = xcode.lang.cpp; };
-		11CF30E73CEA2D8D0A1B17D3 /* b2DynamicTree.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = b2DynamicTree.h; sourceTree = "<group>"; };
-		11D141087979064B441B787D /* File.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = File.cpp; sourceTree = "<group>"; };
-		11D62E873092729B497B447F /* b2RevoluteJoint.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = b2RevoluteJoint.cpp; sourceTree = "<group>"; };
-		120B391518206E964493126C /* b2Body.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = b2Body.cpp; sourceTree = "<group>"; };
-		12390CBC115B00D06EF951DD /* b2Draw.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = b2Draw.cpp; sourceTree = "<group>"; };
-		124E716E0BCA055534A60AD2 /* wrap_Shape.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = wrap_Shape.cpp; sourceTree = "<group>"; };
-		13093ADC78426C5009DF3B13 /* b2FrictionJoint.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = b2FrictionJoint.cpp; sourceTree = "<group>"; };
-		131F69C3368C4B8A55EE0DAD /* wrap_WeldJoint.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = wrap_WeldJoint.h; sourceTree = "<group>"; };
-		135801A6483528800C676492 /* io.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = io.c; sourceTree = "<group>"; };
-		138913BE5126483748FA43D0 /* Joint.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Joint.h; sourceTree = "<group>"; };
-		139411436818381E493F00F5 /* wrap_JoystickModule.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = wrap_JoystickModule.cpp; sourceTree = "<group>"; };
-		14AE68E14C2C74526A612FA0 /* wrap_Image.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = wrap_Image.cpp; sourceTree = "<group>"; };
-		15093E1B1A14176374C81299 /* wrap_CircleShape.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = wrap_CircleShape.h; sourceTree = "<group>"; };
-		153957EB332E1269671E7F4A /* b2CircleShape.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = b2CircleShape.h; sourceTree = "<group>"; };
-		16C36B3C59A10CDC7ACE0DD4 /* http.lua.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = http.lua.h; sourceTree = "<group>"; };
-		174D472C1AFE594D77A0322B /* b2ChainAndCircleContact.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = b2ChainAndCircleContact.h; sourceTree = "<group>"; };
-		175A1B8D733B2D4803F64AC1 /* b2Distance.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = b2Distance.cpp; sourceTree = "<group>"; };
-		17C730CB1DA01B8F0A11217C /* except.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = except.h; sourceTree = "<group>"; };
-		17E9544103AE376210ED5BAA /* select.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = select.h; sourceTree = "<group>"; };
-		182A781C7A2D3D2B6B8904A8 /* Data.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Data.h; sourceTree = "<group>"; };
-		1839744763625B5D64EC70AC /* Audio.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = Audio.cpp; sourceTree = "<group>"; };
-		18E0492204644DE929B96486 /* wrap_DistanceJoint.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = wrap_DistanceJoint.h; sourceTree = "<group>"; };
-		1916112F57AF56A173727464 /* Audio.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Audio.h; sourceTree = "<group>"; };
-		198A44BD71BB61EE517C2A39 /* Mouse.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Mouse.h; sourceTree = "<group>"; };
-		19ED419874B46EC16F927524 /* love.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = love.cpp; sourceTree = "<group>"; };
-		19F40DF6507028212FEB1D77 /* wrap_Keyboard.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = wrap_Keyboard.cpp; sourceTree = "<group>"; };
-		1A2A61843B753E3F5B330703 /* Vector.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = Vector.cpp; sourceTree = "<group>"; };
-		1A304E384AF2119905C01504 /* Source.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = Source.cpp; sourceTree = "<group>"; };
-		1A311FC16B9C0F8D7A41580E /* wrap_Body.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = wrap_Body.h; sourceTree = "<group>"; };
-		1A95437F513E662113AC154A /* b2Rope.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = b2Rope.h; sourceTree = "<group>"; };
-		1A9810F758AC1D1E4B6431FD /* wrap_Graphics.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = wrap_Graphics.cpp; sourceTree = "<group>"; };
-		1AA213FC158815FA77C40330 /* ChainShape.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ChainShape.h; sourceTree = "<group>"; };
-		1AA7781A230065F346E2313A /* DevilHandler.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = DevilHandler.cpp; sourceTree = "<group>"; };
-		1B036C7C5A8832AE53BB1C06 /* b2CollideEdge.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = b2CollideEdge.cpp; sourceTree = "<group>"; };
-		1B1C4E4D288A1D2F29E57B1B /* Rasterizer.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = Rasterizer.cpp; sourceTree = "<group>"; };
-		1B4E22F1388E2B2E76E3377B /* wrap_GlyphData.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = wrap_GlyphData.cpp; sourceTree = "<group>"; };
-		1BCD6EE50EB8791E5A870135 /* utf8.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = utf8.h; sourceTree = "<group>"; };
-		1C5B57F87B315E39005B119F /* b2TimeOfImpact.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = b2TimeOfImpact.h; sourceTree = "<group>"; };
-		1CAA69E00D0808BA2108238B /* wrap_ChainShape.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = wrap_ChainShape.cpp; sourceTree = "<group>"; };
-		1CD02D1975803957282F28AB /* auxiliar.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = auxiliar.c; sourceTree = "<group>"; };
-		1CE84F1F19BC2AA412C638B1 /* timeout.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = timeout.h; sourceTree = "<group>"; };
-		1DA41DFF0869489411A71AFC /* Texture.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Texture.h; sourceTree = "<group>"; };
-		1E22646A710E5EFC27FE3932 /* FrictionJoint.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = FrictionJoint.cpp; sourceTree = "<group>"; };
-		1E27263847302FCA1F843B47 /* b2PrismaticJoint.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = b2PrismaticJoint.cpp; sourceTree = "<group>"; };
-		1E827AE8548C52493ED95629 /* wrap_Filesystem.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = wrap_Filesystem.cpp; sourceTree = "<group>"; };
-		1E840AF84AB61C6410E26634 /* wrap_PulleyJoint.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = wrap_PulleyJoint.cpp; sourceTree = "<group>"; };
-		1E9E4F657DEC2772493B79CC /* b2ContactSolver.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = b2ContactSolver.cpp; sourceTree = "<group>"; };
-		1F0D375C38A245E403E53DB5 /* b2TimeOfImpact.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = b2TimeOfImpact.cpp; sourceTree = "<group>"; };
-		1F3A277A44141DBF7BCF146A /* wrap_RevoluteJoint.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = wrap_RevoluteJoint.cpp; sourceTree = "<group>"; };
-		1F4E747212DE41716BC245C9 /* b2PolygonContact.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = b2PolygonContact.cpp; sourceTree = "<group>"; };
-		1F6F652A57F8098E5CCA6F9A /* auxiliar.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = auxiliar.h; sourceTree = "<group>"; };
-		1F875B224C4E1B9E35854766 /* Mpg123Decoder.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = Mpg123Decoder.cpp; sourceTree = "<group>"; };
-		202650DE4F267CD3082A1B30 /* wrap_Font.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = wrap_Font.h; sourceTree = "<group>"; };
-		208275724C9421035EA145A4 /* MouseJoint.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MouseJoint.h; sourceTree = "<group>"; };
-		21124F915912499179A42115 /* b2CircleContact.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = b2CircleContact.h; sourceTree = "<group>"; };
-		219636CF6780074F7871463D /* Filesystem.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Filesystem.h; sourceTree = "<group>"; };
-		21B25A7E333315172B754D4F /* buffer.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = buffer.c; sourceTree = "<group>"; };
-		21E975B81E8D701F2147658C /* wrap_Contact.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = wrap_Contact.h; sourceTree = "<group>"; };
-		22256CC12B7C7D0D1B430D46 /* tcp.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = tcp.c; sourceTree = "<group>"; };
-		22EF17981EBD442773FE41B6 /* wrap_Mouse.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = wrap_Mouse.cpp; sourceTree = "<group>"; };
-		232D67C67BEE54B776420682 /* wrap_Font.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = wrap_Font.cpp; sourceTree = "<group>"; };
-		23573F2F4F7D56312E663E24 /* Canvas.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Canvas.h; sourceTree = "<group>"; };
-		239054AE7475433E39747DA9 /* b2Timer.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = b2Timer.cpp; sourceTree = "<group>"; };
-		23985AB32E7B463A2CB87E2C /* Sound.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Sound.h; sourceTree = "<group>"; };
-		23A266CD4FC729355E23606E /* b2WheelJoint.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = b2WheelJoint.h; sourceTree = "<group>"; };
-		24265680279E30A40DF81946 /* Event.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = Event.cpp; sourceTree = "<group>"; };
-		243E18977E2A37CC6FDD55A5 /* b2EdgeAndPolygonContact.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = b2EdgeAndPolygonContact.cpp; sourceTree = "<group>"; };
-		249015D170563D85709D7B6D /* options.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = options.h; sourceTree = "<group>"; };
-		24D758D262EA18DC15187A12 /* delay.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = delay.h; sourceTree = "<group>"; };
-		24EE059E03D8155F4BFF64D6 /* Audio.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Audio.h; sourceTree = "<group>"; };
-		25C325DC2128769F6C6A54C3 /* Image.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Image.h; sourceTree = "<group>"; };
-		25CE236F66F70EB3444A7CC8 /* GearJoint.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = GearJoint.h; sourceTree = "<group>"; };
-		276C3474657D0A246F64221C /* wrap_EdgeShape.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = wrap_EdgeShape.h; sourceTree = "<group>"; };
-		27F777AB188D674F30BC1829 /* wrap_World.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = wrap_World.h; sourceTree = "<group>"; };
-		28016C9B51FE1A893DC35B66 /* Variant.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Variant.h; sourceTree = "<group>"; };
-		28024635525B077E08A73D9B /* Source.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = Source.cpp; sourceTree = "<group>"; };
-		283342E174613897621A43F1 /* DevilHandler.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = DevilHandler.h; sourceTree = "<group>"; };
-		286660042F9654F61AB90D7A /* Body.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Body.h; sourceTree = "<group>"; };
-		2912092853050AF9785F39BE /* wrap_RevoluteJoint.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = wrap_RevoluteJoint.h; sourceTree = "<group>"; };
-		295C665B1E0B6B2D03CC4937 /* wrap_Event.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = wrap_Event.h; sourceTree = "<group>"; };
-		2A5F7DCB40652F9B7D61073A /* Sound.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = Sound.cpp; sourceTree = "<group>"; };
-		2A6150F7479D21346EC54B68 /* b2ContactManager.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = b2ContactManager.cpp; sourceTree = "<group>"; };
-		2B8C245A21A515E86636725A /* wrap_PrismaticJoint.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = wrap_PrismaticJoint.h; sourceTree = "<group>"; };
-		2BE75A693BE206B22DAE1B2E /* wrap_SpriteBatch.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = wrap_SpriteBatch.h; sourceTree = "<group>"; };
-		2C78323D7D5C628A53EC6931 /* b2Math.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = b2Math.cpp; sourceTree = "<group>"; };
-		2C87695707B046B536F347D8 /* OpenGL.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = OpenGL.h; sourceTree = "<group>"; };
-		2C970EA7229F20934C72581D /* b2RopeJoint.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = b2RopeJoint.h; sourceTree = "<group>"; };
-		2CAE75B079B828FE6892684A /* udp.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = udp.h; sourceTree = "<group>"; };
-		2CEC5ED5211174C7583849AD /* Reference.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Reference.h; sourceTree = "<group>"; };
-		2D290E902C451D6849051FEF /* b2WeldJoint.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = b2WeldJoint.h; sourceTree = "<group>"; };
-		2D7B7DEC4FC87878332E41B3 /* wrap_JoystickModule.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = wrap_JoystickModule.h; sourceTree = "<group>"; };
-		2D8E6FAE2A100B5866E96BFF /* runtime.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = runtime.h; sourceTree = "<group>"; };
-		2D9475890CDA3D3776435622 /* Timer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Timer.h; sourceTree = "<group>"; };
-		2DC90F3C6160198256795C75 /* luasocket.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = luasocket.cpp; sourceTree = "<group>"; };
-		2DCE45C868A0091B762C7377 /* Body.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = Body.cpp; sourceTree = "<group>"; };
-		2E2675AF3DAA24CE0728042C /* udp.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = udp.c; sourceTree = "<group>"; };
-		2E406F8328543EC63EB922C6 /* OpenGL.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; lineEnding = 0; path = OpenGL.cpp; sourceTree = "<group>"; xcLanguageSpecificationIdentifier = xcode.lang.cpp; };
-		2E5C2A2F05417B294ED655E8 /* Audio.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Audio.h; sourceTree = "<group>"; };
-		2E9B5D9926034F9172215D5E /* Font.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Font.h; sourceTree = "<group>"; };
-		2FB732687B1669402408356D /* Source.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = Source.cpp; sourceTree = "<group>"; };
-		2FD366F113387BC95125133D /* b2Shape.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = b2Shape.h; sourceTree = "<group>"; };
-		2FF26CC52C28773750B812D9 /* PolygonShape.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = PolygonShape.h; sourceTree = "<group>"; };
-		30E466F441EE727658716873 /* Module.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = Module.cpp; sourceTree = "<group>"; };
-		30ED4BB03C5F11254AF12E98 /* Sound.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = Sound.cpp; sourceTree = "<group>"; };
-		31871B8B7E1A697A73576040 /* b2PolygonAndCircleContact.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = b2PolygonAndCircleContact.cpp; sourceTree = "<group>"; };
-		31A444CF0B4E6DA450120730 /* File.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = File.h; sourceTree = "<group>"; };
-		31B85B507F466FE158A3718E /* wrap_ImageData.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = wrap_ImageData.h; sourceTree = "<group>"; };
-		31C84D0129AE5F6044A94AC2 /* ModPlugDecoder.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ModPlugDecoder.h; sourceTree = "<group>"; };
-		31E0110E5797041465FF5F95 /* Mouse.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = Mouse.cpp; sourceTree = "<group>"; };
-		325E60A57F2624766A524423 /* b2World.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = b2World.h; sourceTree = "<group>"; };
-		329915E84B0B6D025DDC34A9 /* luasocket.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = luasocket.h; sourceTree = "<group>"; };
-		32CC11481CD9164455455D72 /* b2Collision.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = b2Collision.cpp; sourceTree = "<group>"; };
-		32FD3FEE52FD1911405B3C59 /* b2BroadPhase.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = b2BroadPhase.h; sourceTree = "<group>"; };
-		330F59B11A5B5D1B44DC07BF /* wrap_Source.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = wrap_Source.h; sourceTree = "<group>"; };
-		33627AE97E66147E76804EF9 /* b2DistanceJoint.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = b2DistanceJoint.cpp; sourceTree = "<group>"; };
-		33FD508B0754314530A35EF3 /* StringMap.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = StringMap.h; sourceTree = "<group>"; };
-		340345481F165F8945C716AE /* wrap_FrictionJoint.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = wrap_FrictionJoint.cpp; sourceTree = "<group>"; };
-		343E66751EBA75264C3400FA /* b2Draw.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = b2Draw.h; sourceTree = "<group>"; };
-		34A36BB617BC5CCA5B870EA6 /* DistanceJoint.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = DistanceJoint.cpp; sourceTree = "<group>"; };
-		350C47C774835EA552130431 /* Object.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Object.h; sourceTree = "<group>"; };
-		3512460642B046876D687B22 /* wrap_FileData.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = wrap_FileData.h; sourceTree = "<group>"; };
-		351B09E51FDC338622F44624 /* Window.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = Window.cpp; sourceTree = "<group>"; };
-		3547706F2E7D43212CB40D04 /* wrap_GlyphData.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = wrap_GlyphData.h; sourceTree = "<group>"; };
-		35B31EBC4DDB6F994BCA46B6 /* Reference.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = Reference.cpp; sourceTree = "<group>"; };
-		36324E12371E518E6E9C61B5 /* wrap_World.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = wrap_World.cpp; sourceTree = "<group>"; };
-		36437CE95936736320710513 /* delay.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = delay.cpp; sourceTree = "<group>"; };
-		36465ABA28FB06F4333C3F07 /* ImageRasterizer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ImageRasterizer.h; sourceTree = "<group>"; };
-		36DD053F754B2D29719B1F80 /* RevoluteJoint.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = RevoluteJoint.cpp; sourceTree = "<group>"; };
-		370D76DC224F2EB300CB4E2F /* Physics.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = Physics.cpp; sourceTree = "<group>"; };
-		37224F6B30CA5D800B1F41F1 /* wrap_Rasterizer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = wrap_Rasterizer.h; sourceTree = "<group>"; };
-		3746164716797CF80D6B0CEE /* Exception.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = Exception.cpp; sourceTree = "<group>"; };
-		385902BD584E7D73154E4EBB /* wrap_Sound.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = wrap_Sound.cpp; sourceTree = "<group>"; };
-		386430B43A081E2A617B05F1 /* EnumMap.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = EnumMap.h; sourceTree = "<group>"; };
-		389E3CEC356050A27784290E /* Graphics.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Graphics.h; sourceTree = "<group>"; };
-		38AF72D4790619BB022E2AEF /* b2RopeJoint.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = b2RopeJoint.cpp; sourceTree = "<group>"; };
-		3960064616E26C0213E323E2 /* wrap_Sound.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = wrap_Sound.h; sourceTree = "<group>"; };
-		3A430C846C642DBC14975C7C /* utf8.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = utf8.h; sourceTree = "<group>"; };
-		3AC7627D7E1458AA0D8E0522 /* b2GrowableStack.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = b2GrowableStack.h; sourceTree = "<group>"; };
-		3AD03C7A77C546ED07BE4C06 /* wrap_PolygonShape.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = wrap_PolygonShape.cpp; sourceTree = "<group>"; };
-		3AFB3A18384A2D22352262B1 /* wrap_Canvas.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = wrap_Canvas.h; sourceTree = "<group>"; };
-		3BA712260D725FEB72EB3CDE /* Event.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = Event.cpp; sourceTree = "<group>"; };
-		3BB22A142670197B0DBD0BED /* wrap_Contact.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = wrap_Contact.cpp; sourceTree = "<group>"; };
-		3C0B06AF6B5326C840477B18 /* MouseJoint.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = MouseJoint.cpp; sourceTree = "<group>"; };
-		3C4D70E82FC12A9A15EC39BA /* checked.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = checked.h; sourceTree = "<group>"; };
-		3C56375F752B7A9779DD37EC /* Variant.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = Variant.cpp; sourceTree = "<group>"; };
-		3C9253C8152355E1274814B7 /* FLACDecoder.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = FLACDecoder.h; sourceTree = "<group>"; };
-		3C965422252F672D3FF6598C /* CircleShape.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = CircleShape.h; sourceTree = "<group>"; };
-		3CDA3E9B364F17A902384AAC /* wrap_Font.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = wrap_Font.h; sourceTree = "<group>"; };
-		3CFE5C4A12D5675E7C9C7BF9 /* Image.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Image.h; sourceTree = "<group>"; };
-		3D8460B2486A372825213933 /* Vector.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Vector.h; sourceTree = "<group>"; };
-		3DFF31EE26405E554C610C8F /* wrap_WeldJoint.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = wrap_WeldJoint.cpp; sourceTree = "<group>"; };
-		3EA80A4E0CE0014052076037 /* Joint.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = Joint.cpp; sourceTree = "<group>"; };
-		407422E8589417B6683D1042 /* ModPlugDecoder.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = ModPlugDecoder.cpp; sourceTree = "<group>"; };
-		40A0593B616A223A4CEF07C9 /* Memoizer.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = Memoizer.cpp; sourceTree = "<group>"; };
-		40BC14C607396F8B1B084012 /* int.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = int.h; sourceTree = "<group>"; };
-		40F412FF29F65F5A3D511B98 /* wrap_EdgeShape.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = wrap_EdgeShape.cpp; sourceTree = "<group>"; };
-		411B061C49172C971C622125 /* Object.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = Object.cpp; sourceTree = "<group>"; };
-		415E1438178736BE0EA908D5 /* select.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = select.c; sourceTree = "<group>"; };
-		426B1C4475DC54505B824B7F /* VertexBuffer.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = VertexBuffer.cpp; sourceTree = "<group>"; };
-		427B4B2517C0516844370E3D /* b2CollidePolygon.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = b2CollidePolygon.cpp; sourceTree = "<group>"; };
-		439E46D768A266780E894800 /* JoystickModule.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = JoystickModule.h; sourceTree = "<group>"; };
-		43A258C229C75C15238E520C /* Decoder.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Decoder.h; sourceTree = "<group>"; };
-		43BC2B1C505E5EFF650C31E3 /* Keyboard.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = Keyboard.cpp; sourceTree = "<group>"; };
-		448C492C7AEB7840504F1C9D /* b2EdgeShape.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = b2EdgeShape.h; sourceTree = "<group>"; };
-		44DE79C879CC0074510A2403 /* WheelJoint.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = WheelJoint.cpp; sourceTree = "<group>"; };
-		44E85D982F01082F5E1346B6 /* b2ChainAndPolygonContact.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = b2ChainAndPolygonContact.h; sourceTree = "<group>"; };
-		457674E43FF71E974D990C00 /* DistanceJoint.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = DistanceJoint.h; sourceTree = "<group>"; };
-		459946CA7F4406B026E80501 /* inet.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = inet.h; sourceTree = "<group>"; };
-		45DC20A760FC42341E5762F7 /* FrictionJoint.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = FrictionJoint.h; sourceTree = "<group>"; };
-		45E761A0072E0EF92BD66EA9 /* runtime.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = runtime.cpp; sourceTree = "<group>"; };
-		465D0438379342C4589E2B1C /* WeldJoint.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = WeldJoint.h; sourceTree = "<group>"; };
-		468F7A0A484820DE79CE76D2 /* b2ChainAndCircleContact.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = b2ChainAndCircleContact.cpp; sourceTree = "<group>"; };
-		46CA2B6B17C32BBE55772268 /* Source.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Source.h; sourceTree = "<group>"; };
-		473D2247745F4901155A75DB /* config.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = config.h; sourceTree = "<group>"; };
-		47C77F6032FA77E046AA6810 /* Fixture.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = Fixture.cpp; sourceTree = "<group>"; };
-		47D46915001F342A3CD23E86 /* File.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = File.h; sourceTree = "<group>"; };
-		4832527C02C105776536438A /* b2Rope.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = b2Rope.cpp; sourceTree = "<group>"; };
-		485645C663D372A96DFD33F7 /* mime.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = mime.h; sourceTree = "<group>"; };
-		48A206C9004150640C432100 /* ParticleSystem.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = ParticleSystem.cpp; sourceTree = "<group>"; };
-		4941079838020ECA049B5C21 /* Color.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Color.h; sourceTree = "<group>"; };
-		49496EAF3305281B19223C22 /* except.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = except.c; sourceTree = "<group>"; };
-		4A1D6DAE45E627BD12903B52 /* b2PolygonAndCircleContact.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = b2PolygonAndCircleContact.h; sourceTree = "<group>"; };
-		4A47384208BE218F688C4EFA /* b2MouseJoint.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = b2MouseJoint.cpp; sourceTree = "<group>"; };
-		4A774BC26B7235E410D40C8E /* FLACDecoder.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = FLACDecoder.cpp; sourceTree = "<group>"; };
-		4A80315175C5625804AA4A56 /* VorbisDecoder.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = VorbisDecoder.h; sourceTree = "<group>"; };
-		4ABD4A7B5CB6678E39490982 /* io.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = io.h; sourceTree = "<group>"; };
-		4AD52074367950B735707CE1 /* Canvas.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; lineEnding = 0; path = Canvas.cpp; sourceTree = "<group>"; xcLanguageSpecificationIdentifier = xcode.lang.cpp; };
-		4B002CBD52493ED9347C6EBA /* url.lua.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = url.lua.h; sourceTree = "<group>"; };
-		4B41232F7AF7793540F46C58 /* timeout.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = timeout.c; sourceTree = "<group>"; };
-		4B5F4DF8110020A96B5D3EAB /* b2BroadPhase.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = b2BroadPhase.cpp; sourceTree = "<group>"; };
-		4B731754147B27AF73AC5358 /* Volatile.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = Volatile.cpp; sourceTree = "<group>"; };
-		4C606AEC342457600C3F0741 /* JoystickModule.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = JoystickModule.h; sourceTree = "<group>"; };
-		4D700D182EAA46273D1E2CC4 /* SpriteBatch.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = SpriteBatch.cpp; sourceTree = "<group>"; };
-		4D81102E7ABD1C282BE42CE3 /* wrap_MouseJoint.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = wrap_MouseJoint.cpp; sourceTree = "<group>"; };
-		4DAB28A9235E2CBE75F56848 /* CircleShape.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = CircleShape.cpp; sourceTree = "<group>"; };
-		4DC3617831763D2760335D87 /* wrap_SoundData.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = wrap_SoundData.cpp; sourceTree = "<group>"; };
-		4E0F565B03D05C3722496F27 /* File.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = File.cpp; sourceTree = "<group>"; };
-		4E15567759041CC379292BE6 /* Decoder.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = Decoder.cpp; sourceTree = "<group>"; };
-		4E3251027026699A1D4D310D /* wrap_Canvas.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = wrap_Canvas.cpp; sourceTree = "<group>"; };
-		4E6705C154C34FBD143F465E /* b2ChainShape.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = b2ChainShape.cpp; sourceTree = "<group>"; };
-		4E972C114A6C25A63B5B6EF2 /* wrap_Mouse.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = wrap_Mouse.h; sourceTree = "<group>"; };
-		4F1862D324C9429157A27A2E /* Event.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Event.h; sourceTree = "<group>"; };
-		4F34010A575C02E66D400CE2 /* RopeJoint.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = RopeJoint.h; sourceTree = "<group>"; };
-		4F3E12BD4A646D0366792FC9 /* b2WorldCallbacks.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = b2WorldCallbacks.h; sourceTree = "<group>"; };
-		503971A86B7167A91B670FBA /* boot.lua.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = boot.lua.h; sourceTree = "<group>"; };
-		505F23A73BFE250833D650E4 /* Image.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = Image.cpp; sourceTree = "<group>"; };
-		50B67F2D0CC511706810302E /* wrap_GearJoint.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = wrap_GearJoint.cpp; sourceTree = "<group>"; };
-		50EC67CE3ED71F5D13304FD4 /* b2Contact.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = b2Contact.h; sourceTree = "<group>"; };
-		50F0575E16561864699E41F5 /* b2Fixture.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = b2Fixture.h; sourceTree = "<group>"; };
-		5100177E5D8A14366C5B0BC5 /* b2Island.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = b2Island.h; sourceTree = "<group>"; };
-		524741891BB93848039F4174 /* Keyboard.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = Keyboard.cpp; sourceTree = "<group>"; };
-		525A4D633D9B0D8B225936D4 /* b2Timer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = b2Timer.h; sourceTree = "<group>"; };
-		52D130DF3DC82D9D4C867B61 /* math.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = math.h; sourceTree = "<group>"; };
-		52E15B702C40593D3BF431DF /* wrap_File.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = wrap_File.h; sourceTree = "<group>"; };
-		53C4064801456193163E4631 /* RopeJoint.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = RopeJoint.cpp; sourceTree = "<group>"; };
-		53C6151E07FB1E3471590CB9 /* ltn12.lua.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ltn12.lua.h; sourceTree = "<group>"; };
-		53EE57FF4DBD52BB22701160 /* ParticleSystem.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ParticleSystem.h; sourceTree = "<group>"; };
-		54A13C2209F945671BC27974 /* FileData.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = FileData.h; sourceTree = "<group>"; };
-		54E653E84E8873D467C750FC /* mime.lua.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = mime.lua.h; sourceTree = "<group>"; };
-		54E85987318206E93DC8189F /* PolygonShape.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = PolygonShape.cpp; sourceTree = "<group>"; };
-		55A759CE711E157339930E58 /* b2BlockAllocator.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = b2BlockAllocator.cpp; sourceTree = "<group>"; };
-		55AE226405CC1A55462E1D89 /* threads.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = threads.h; sourceTree = "<group>"; };
-		55B425307C0C1C4B3EFC3A5F /* JoystickModule.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = JoystickModule.cpp; sourceTree = "<group>"; };
-		561D4A4722E36BAA16D17CC8 /* EdgeShape.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = EdgeShape.h; sourceTree = "<group>"; };
-		567C0A0C58931DE54733011B /* b2StackAllocator.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = b2StackAllocator.h; sourceTree = "<group>"; };
-		56D6030A0B8F7397715062B9 /* Image.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; lineEnding = 0; path = Image.cpp; sourceTree = "<group>"; xcLanguageSpecificationIdentifier = xcode.lang.cpp; };
-		577B66502A5360AE60733B10 /* VertexBuffer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = VertexBuffer.h; sourceTree = "<group>"; };
-		57E6429235C547BE26B73C6C /* version.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = version.h; sourceTree = "<group>"; };
-		583037E9238A6EF00DD20B1A /* Font.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = Font.cpp; sourceTree = "<group>"; };
-		584E16AE09E12536206C46FE /* Mouse.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = Mouse.cpp; sourceTree = "<group>"; };
-		58792BC1126C2917432D706B /* b2CircleContact.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = b2CircleContact.cpp; sourceTree = "<group>"; };
-		58CC50E70A375FDF53EF01B6 /* Texture.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = Texture.cpp; sourceTree = "<group>"; };
-		58CD093F254501E37CA47CA8 /* types.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = types.h; sourceTree = "<group>"; };
-		597478A255B82B56488B4717 /* wrap_FileData.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = wrap_FileData.cpp; sourceTree = "<group>"; };
-		59BE634A2ACE722F14B86F89 /* b2Island.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = b2Island.cpp; sourceTree = "<group>"; };
-		59D27EA33E8E62E15C185948 /* b2DynamicTree.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = b2DynamicTree.cpp; sourceTree = "<group>"; };
-		5A1C77401B1B32CE326332A1 /* b2ContactSolver.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = b2ContactSolver.h; sourceTree = "<group>"; };
-		5B3306B5587A708557EE4D4F /* Source.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Source.h; sourceTree = "<group>"; };
-		5B5A0BEC36BE007E6E491396 /* wrap_SoundData.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = wrap_SoundData.h; sourceTree = "<group>"; };
-		5BCC49F529F726385CD41FA6 /* b2WeldJoint.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = b2WeldJoint.cpp; sourceTree = "<group>"; };
-		5CB720BA493D7D995E0E20DD /* PulleyJoint.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = PulleyJoint.cpp; sourceTree = "<group>"; };
-		5CE0167703887B376F2368FD /* RevoluteJoint.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = RevoluteJoint.h; sourceTree = "<group>"; };
-		5CE370672B1234B10F9532FA /* Physics.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Physics.h; sourceTree = "<group>"; };
-		5CF629B94C7802D446D61C45 /* wrap_Decoder.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = wrap_Decoder.cpp; sourceTree = "<group>"; };
-		5D016F4C27EF506C13FE3058 /* ImageRasterizer.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = ImageRasterizer.cpp; sourceTree = "<group>"; };
-		5D383DA1468545C30E7B5805 /* b64.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = b64.cpp; sourceTree = "<group>"; };
-		5D590ACE5E237B7D5B556AD0 /* Contact.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Contact.h; sourceTree = "<group>"; };
-		5D93601669875EE06721689E /* Drawable.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Drawable.h; sourceTree = "<group>"; };
-		5DA322AC59AD7E43183577CB /* b2EdgeAndPolygonContact.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = b2EdgeAndPolygonContact.h; sourceTree = "<group>"; };
-		5DC271240F0119AE16FA1B8E /* wrap_Filesystem.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = wrap_Filesystem.h; sourceTree = "<group>"; };
-		5ED732200E1B2E5F79831DDA /* wrap_Data.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = wrap_Data.cpp; sourceTree = "<group>"; };
-		5F1F169C7FC633EF292E26DF /* wrap_Fixture.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = wrap_Fixture.h; sourceTree = "<group>"; };
-		5F42052D7C8271A1105541DE /* wrap_ParticleSystem.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = wrap_ParticleSystem.cpp; sourceTree = "<group>"; };
-		5F846B49240D52C10F6F76E5 /* options.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = options.c; sourceTree = "<group>"; };
-		5FAE2A9679C97F2C2792182D /* luasocket.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = luasocket.c; sourceTree = "<group>"; };
-		5FF97D522B8872947DED611C /* wrap_Audio.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = wrap_Audio.h; sourceTree = "<group>"; };
-		601E6A56345412E87E1D396B /* Pool.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = Pool.cpp; sourceTree = "<group>"; };
-		60840050412A459D5D21518F /* Fixture.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Fixture.h; sourceTree = "<group>"; };
-		60C95C7F507A381D0A483B3F /* b2ChainAndPolygonContact.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = b2ChainAndPolygonContact.cpp; sourceTree = "<group>"; };
-		610B475400DE0F7213352BC3 /* inet.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = inet.c; sourceTree = "<group>"; };
-		615E0F450F2B7BA25EE679A6 /* Font.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Font.h; sourceTree = "<group>"; };
-		61E64F07028039774F502D69 /* Shape.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = Shape.cpp; sourceTree = "<group>"; };
-		62370A494F9D6E2D570065EB /* FileData.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = FileData.cpp; sourceTree = "<group>"; };
-		62E121F35BEB622029324F25 /* Pool.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Pool.h; sourceTree = "<group>"; };
-		63024AF52EE3658260BE116B /* Module.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Module.h; sourceTree = "<group>"; };
-		633E37194CB535AE41A00092 /* b2EdgeShape.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = b2EdgeShape.cpp; sourceTree = "<group>"; };
-		63936FF81D4E14F6534A43BB /* usocket.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = usocket.h; sourceTree = "<group>"; };
-		63A63DFB339266AC401B545A /* Mouse.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Mouse.h; sourceTree = "<group>"; };
-		64491E98483728D601110EF0 /* b2PrismaticJoint.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = b2PrismaticJoint.h; sourceTree = "<group>"; };
-		644D0C953C3439FC57C03FC6 /* World.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = World.cpp; sourceTree = "<group>"; };
-		64694F91593478085859666F /* wrap_Body.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = wrap_Body.cpp; sourceTree = "<group>"; };
-		64AC15B600F2473651823D40 /* GmeDecoder.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = GmeDecoder.h; sourceTree = "<group>"; };
-		64BA1CE328FF17144B475111 /* wrap_MouseJoint.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = wrap_MouseJoint.h; sourceTree = "<group>"; };
-		6590063A6E4B3AEF4550443C /* b2GearJoint.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = b2GearJoint.h; sourceTree = "<group>"; };
-		66EC3C0463A703A97445193B /* b2PulleyJoint.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = b2PulleyJoint.cpp; sourceTree = "<group>"; };
-		66F8479E6D2D587A592F2024 /* socket.lua.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = socket.lua.h; sourceTree = "<group>"; };
-		678E42771C9B415628A3234D /* wrap_ParticleSystem.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = wrap_ParticleSystem.h; sourceTree = "<group>"; };
-		68616BD516DB124312B47EB3 /* Image.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Image.h; sourceTree = "<group>"; };
-		691C5C5828550E2F60754EF2 /* wrap_Event.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = wrap_Event.cpp; sourceTree = "<group>"; };
-		695E4ED13AA0689E64280573 /* wrap_Timer.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = wrap_Timer.cpp; sourceTree = "<group>"; };
-		69967D2323404E1F0ED21F11 /* wrap_DistanceJoint.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = wrap_DistanceJoint.cpp; sourceTree = "<group>"; };
-		69A01D71103275D451F965B2 /* b2GearJoint.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = b2GearJoint.cpp; sourceTree = "<group>"; };
-		69DB4423147C7E3362941E75 /* Joint.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = Joint.cpp; sourceTree = "<group>"; };
-		6AA03CE31B942DC660045FE9 /* WheelJoint.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = WheelJoint.h; sourceTree = "<group>"; };
-		6B255FFC4A2C404E50512CB5 /* Mpg123Decoder.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Mpg123Decoder.h; sourceTree = "<group>"; };
-		6B2E52E6185E6980660F1374 /* luasocket.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = luasocket.h; sourceTree = "<group>"; };
-		6B3565203A1778431F8A5409 /* threads.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = threads.cpp; sourceTree = "<group>"; };
-		6BEE6511475F641A70A0591E /* Timer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Timer.h; sourceTree = "<group>"; };
-		6C367AE309C453C412D91363 /* wrap_File.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = wrap_File.cpp; sourceTree = "<group>"; };
-		6C7E6C3F1CCA1CF6164123F6 /* b2ChainShape.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = b2ChainShape.h; sourceTree = "<group>"; };
-		6C981DA13E3D42DA06891046 /* Keyboard.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Keyboard.h; sourceTree = "<group>"; };
-		6CB1193233FA78EE646A17A1 /* Audio.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = Audio.cpp; sourceTree = "<group>"; };
-		6CDD4F3320303D222C180CD0 /* Window.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = Window.cpp; sourceTree = "<group>"; };
-		6CEB48E969FC42C53F9432B1 /* wrap_Physics.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = wrap_Physics.cpp; sourceTree = "<group>"; };
-		6D822D830EF049417D184372 /* b2TimeStep.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = b2TimeStep.h; sourceTree = "<group>"; };
-		6DE3129F3A0B2D9C178118F3 /* Filesystem.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = Filesystem.cpp; sourceTree = "<group>"; };
-		6E682862758051BF7C0A10AA /* tp.lua.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = tp.lua.h; sourceTree = "<group>"; };
-		6E6D5AB27B71488D405526C3 /* Body.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Body.h; sourceTree = "<group>"; };
-		6EF321185C2B1F1E1AF54F64 /* wrap_CircleShape.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = wrap_CircleShape.cpp; sourceTree = "<group>"; };
-		6F1B61350B6B36AF216C57D7 /* b2Joint.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = b2Joint.cpp; sourceTree = "<group>"; };
-		6F4D478A52A0408765095920 /* GearJoint.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = GearJoint.cpp; sourceTree = "<group>"; };
-		6FF15DF4423F6426224024C9 /* b2Settings.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = b2Settings.cpp; sourceTree = "<group>"; };
-		70564CC32DEC209F2A615F44 /* wrap_ChainShape.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = wrap_ChainShape.h; sourceTree = "<group>"; };
-		70F425B5336E1CD652827FD0 /* Shape.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = Shape.cpp; sourceTree = "<group>"; };
-		714251EE742346DC17103357 /* Font.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = Font.cpp; sourceTree = "<group>"; };
-		71810207414B52F8340D7797 /* wrap_Joint.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = wrap_Joint.cpp; sourceTree = "<group>"; };
-		71C579A557640A3E2A696518 /* wrap_Physics.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = wrap_Physics.h; sourceTree = "<group>"; };
-		71F878E2440A021B68D93ABC /* b2Contact.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = b2Contact.cpp; sourceTree = "<group>"; };
-		727648E06CD863A2582F798F /* VorbisDecoder.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = VorbisDecoder.cpp; sourceTree = "<group>"; };
-		727D23FA1CC755B902471A45 /* SpriteBatch.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SpriteBatch.h; sourceTree = "<group>"; };
-		733758E8028B20BB799A7BE6 /* Decoder.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Decoder.h; sourceTree = "<group>"; };
-		73473B3C698B538002540A5D /* wrap_WheelJoint.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = wrap_WheelJoint.cpp; sourceTree = "<group>"; };
-		734947AA28AF36E436D242FD /* unix.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = unix.c; sourceTree = "<group>"; };
-		74003CB27FA762A021183AD5 /* GlyphData.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = GlyphData.cpp; sourceTree = "<group>"; };
-		74215662418726B35C581E55 /* Thread.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Thread.h; sourceTree = "<group>"; };
-		7423362764CF57574BB16CDA /* Window.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Window.h; sourceTree = "<group>"; };
-		74EE403977734BA53DDF16F0 /* core.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = core.h; sourceTree = "<group>"; };
-		753F0B42534106D6545926C8 /* Memoizer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Memoizer.h; sourceTree = "<group>"; };
-		755C2B980C106EA7423E7E5E /* EdgeShape.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = EdgeShape.cpp; sourceTree = "<group>"; };
-		75C0197971FE16926CDA624A /* wrap_RopeJoint.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = wrap_RopeJoint.h; sourceTree = "<group>"; };
-		762E57DE65A626FA1F6D4305 /* wrap_PulleyJoint.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = wrap_PulleyJoint.h; sourceTree = "<group>"; };
-		77234CEE2EFE633537975850 /* Sound.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Sound.h; sourceTree = "<group>"; };
-		774434E1581A23EC1B0F1E6F /* b2RevoluteJoint.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = b2RevoluteJoint.h; sourceTree = "<group>"; };
-		777352284E262F48543E6E7F /* Graphics.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Graphics.h; sourceTree = "<group>"; };
-		78073FEB0F54031B1A3A56FD /* wrap_PolygonShape.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = wrap_PolygonShape.h; sourceTree = "<group>"; };
-		780D5B6358096BEB1F1336EE /* b2StackAllocator.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = b2StackAllocator.cpp; sourceTree = "<group>"; };
-		78115E763B723C0C40AD47CF /* ImageData.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = ImageData.cpp; sourceTree = "<group>"; };
-		782A153A1E6314CB583250E0 /* wrap_Decoder.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = wrap_Decoder.h; sourceTree = "<group>"; };
-		785D31764A1D6CDE21BC6404 /* SoundData.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SoundData.h; sourceTree = "<group>"; };
-		78A2127828793F7A778D7932 /* wrap_Image.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = wrap_Image.h; sourceTree = "<group>"; };
-		78C0420E2548523B241E3D61 /* b2FrictionJoint.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = b2FrictionJoint.h; sourceTree = "<group>"; };
-		78E50525407567F863476E27 /* WeldJoint.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = WeldJoint.cpp; sourceTree = "<group>"; };
-		79A9038A15A324B450010E8B /* unix.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = unix.h; sourceTree = "<group>"; };
-		7A0A2BB707F44CAD12694679 /* buffer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = buffer.h; sourceTree = "<group>"; };
-		7A3B52AF1FBE73FC36AD50C8 /* wrap_Font.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = wrap_Font.cpp; sourceTree = "<group>"; };
-		7A5C32955F016AB85EB55519 /* Exception.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Exception.h; sourceTree = "<group>"; };
-		7A707F7A60B47A091107144B /* World.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = World.h; sourceTree = "<group>"; };
-		7A840CB020803B7C6C097CD1 /* b2PulleyJoint.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = b2PulleyJoint.h; sourceTree = "<group>"; };
-		7B7A47F267D77A570D995658 /* Box2D.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Box2D.h; sourceTree = "<group>"; };
-		7BAB25936D207169591A666A /* wrap_GearJoint.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = wrap_GearJoint.h; sourceTree = "<group>"; };
-		7CA02BF51EBA65C263E15250 /* unchecked.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = unchecked.h; sourceTree = "<group>"; };
-		7CC5707C79175FA6427B3D62 /* Audio.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = Audio.cpp; sourceTree = "<group>"; };
-		7D48236B78EA06D346A86E3F /* smtp.lua.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = smtp.lua.h; sourceTree = "<group>"; };
-		7D9B03C2438B748D0DE93DD5 /* utf8.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = utf8.cpp; sourceTree = "<group>"; };
-		7E4B280637927B532B456D5E /* Event.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Event.h; sourceTree = "<group>"; };
-		7E7A068041FD553876712F05 /* b2CollideCircle.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = b2CollideCircle.cpp; sourceTree = "<group>"; };
-		7EC570BC74C369747ED0183A /* Window.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Window.h; sourceTree = "<group>"; };
-		7EFA04373ADC5CC24DCB5824 /* Font.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Font.h; sourceTree = "<group>"; };
-		7F4B2A3860273D89294A44F4 /* b2ContactManager.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = b2ContactManager.h; sourceTree = "<group>"; };
-		7F575BE9573C654B5ED44CC1 /* wrap_Timer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = wrap_Timer.h; sourceTree = "<group>"; };
-		7F796B7A3362196075C62E61 /* wrap_Fixture.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = wrap_Fixture.cpp; sourceTree = "<group>"; };
-		7F911CF2107B22F44C5B2542 /* b2Collision.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = b2Collision.h; sourceTree = "<group>"; };
-		FA01BE1C1878E35B00640047 /* wrap_Texture.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = wrap_Texture.cpp; sourceTree = "<group>"; };
-		FA01BE1D1878E35B00640047 /* wrap_Texture.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = wrap_Texture.h; sourceTree = "<group>"; };
-		FA03546A1731F3A700284828 /* simplexnoise1234.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = simplexnoise1234.cpp; sourceTree = "<group>"; };
-		FA03546B1731F3A700284828 /* simplexnoise1234.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = simplexnoise1234.h; sourceTree = "<group>"; };
-		FA08F5AE16C7525600F007B5 /* Info-Framework.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = "Info-Framework.plist"; sourceTree = "<group>"; };
-		FA0A4BEE182E0C2800E1E4D2 /* b2MotorJoint.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = b2MotorJoint.cpp; sourceTree = "<group>"; };
-		FA0A4BEF182E0C2800E1E4D2 /* b2MotorJoint.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = b2MotorJoint.h; sourceTree = "<group>"; };
-		FA0A4BF2182E1AD600E1E4D2 /* MotorJoint.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = MotorJoint.cpp; sourceTree = "<group>"; };
-		FA0A4BF3182E1AD600E1E4D2 /* MotorJoint.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MotorJoint.h; sourceTree = "<group>"; };
-		FA0A4BF6182E260200E1E4D2 /* wrap_MotorJoint.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = wrap_MotorJoint.cpp; sourceTree = "<group>"; };
-		FA0A4BF7182E260200E1E4D2 /* wrap_MotorJoint.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = wrap_MotorJoint.h; sourceTree = "<group>"; };
-		FA0CDE3B1710F9A50056E8D7 /* FormatHandler.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FormatHandler.h; sourceTree = "<group>"; };
-		FA34E7CB174B513F00E04D3F /* System.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = System.cpp; sourceTree = "<group>"; };
-		FA34E7CC174B513F00E04D3F /* System.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = System.h; sourceTree = "<group>"; };
-		FA34E7D0174B515D00E04D3F /* System.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = System.cpp; sourceTree = "<group>"; };
-		FA34E7D1174B515D00E04D3F /* System.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = System.h; sourceTree = "<group>"; };
-		FA34E7D4174B55AF00E04D3F /* wrap_System.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = wrap_System.cpp; sourceTree = "<group>"; };
-		FA34E7D5174B55AF00E04D3F /* wrap_System.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = wrap_System.h; sourceTree = "<group>"; };
-		FA3D9E0B16E68DE600CA6630 /* Cursor.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = Cursor.cpp; sourceTree = "<group>"; };
-		FA3D9E0C16E68DE600CA6630 /* Cursor.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Cursor.h; sourceTree = "<group>"; };
-		FA3D9E0F16E68EAE00CA6630 /* Cursor.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = Cursor.cpp; sourceTree = "<group>"; };
-		FA3D9E1016E68EAE00CA6630 /* Cursor.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Cursor.h; sourceTree = "<group>"; };
-		FA3D9E1316E6D41000CA6630 /* wrap_Cursor.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = wrap_Cursor.cpp; sourceTree = "<group>"; };
-		FA3D9E1416E6D41000CA6630 /* wrap_Cursor.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = wrap_Cursor.h; sourceTree = "<group>"; };
-		FA435EA117B36E9C004C3F22 /* Polyline.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = Polyline.cpp; sourceTree = "<group>"; };
-		FA435EA217B36E9C004C3F22 /* Polyline.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Polyline.h; sourceTree = "<group>"; };
-		FA45F770187A0F3600D99ED8 /* Touch.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = Touch.cpp; sourceTree = "<group>"; };
-		FA45F771187A0F3600D99ED8 /* Touch.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Touch.h; sourceTree = "<group>"; };
-		FA45F772187A0F3600D99ED8 /* Touch.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Touch.h; sourceTree = "<group>"; };
-		FA45F773187A0F3600D99ED8 /* wrap_Touch.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = wrap_Touch.cpp; sourceTree = "<group>"; };
-		FA45F774187A0F3600D99ED8 /* wrap_Touch.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = wrap_Touch.h; sourceTree = "<group>"; };
-		FA4DAE651941410D009F0A3E /* PNGHandler.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = PNGHandler.cpp; sourceTree = "<group>"; };
-		FA4DAE661941410D009F0A3E /* PNGHandler.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PNGHandler.h; sourceTree = "<group>"; };
-		FA4DAE671941410D009F0A3E /* STBHandler.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = STBHandler.cpp; sourceTree = "<group>"; };
-		FA4DAE681941410D009F0A3E /* STBHandler.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = STBHandler.h; sourceTree = "<group>"; };
-		FA4DAE6E1941411D009F0A3E /* lodepng.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = lodepng.cpp; sourceTree = "<group>"; };
-		FA4DAE6F1941411D009F0A3E /* lodepng.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = lodepng.h; sourceTree = "<group>"; };
-		FA4DAE721941411D009F0A3E /* stb_image.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = stb_image.h; sourceTree = "<group>"; };
-		FA4DAE771941419A009F0A3E /* JPEGHandler.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JPEGHandler.cpp; sourceTree = "<group>"; };
-		FA4DAE781941419A009F0A3E /* JPEGHandler.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JPEGHandler.h; sourceTree = "<group>"; };
-		FA4DAE7B19414281009F0A3E /* libz.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libz.dylib; path = usr/lib/libz.dylib; sourceTree = SDKROOT; };
-		FA52E444192AAADE0064D2FF /* PKMHandler.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = PKMHandler.cpp; sourceTree = "<group>"; };
-		FA52E445192AAADE0064D2FF /* PKMHandler.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PKMHandler.h; sourceTree = "<group>"; };
-		FA5454C016F1310000D30303 /* MathModule.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = MathModule.cpp; sourceTree = "<group>"; };
-		FA5454C116F1310000D30303 /* MathModule.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MathModule.h; sourceTree = "<group>"; };
-		FA577A6716C719D900860150 /* FreeType.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = FreeType.framework; path = /Library/Frameworks/FreeType.framework; sourceTree = "<absolute>"; };
-		FA577A6916C719DE00860150 /* IL.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = IL.framework; path = /Library/Frameworks/IL.framework; sourceTree = "<absolute>"; };
-		FA577A6D16C719EA00860150 /* Lua.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Lua.framework; path = /Library/Frameworks/Lua.framework; sourceTree = "<absolute>"; };
-		FA577A6F16C719F000860150 /* mpg123.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = mpg123.framework; path = /Library/Frameworks/mpg123.framework; sourceTree = "<absolute>"; };
-		FA577A7116C719F400860150 /* Ogg.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Ogg.framework; path = /Library/Frameworks/Ogg.framework; sourceTree = "<absolute>"; };
-		FA577A7316C719F900860150 /* physfs.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = physfs.framework; path = /Library/Frameworks/physfs.framework; sourceTree = "<absolute>"; };
-		FA577A7716C71A0800860150 /* Vorbis.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Vorbis.framework; path = /Library/Frameworks/Vorbis.framework; sourceTree = "<absolute>"; };
-		FA577A7916C71A1700860150 /* Cocoa.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Cocoa.framework; path = /System/Library/Frameworks/Cocoa.framework; sourceTree = "<absolute>"; };
-		FA577A7C16C71A2600860150 /* OpenGL.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = OpenGL.framework; path = /System/Library/Frameworks/OpenGL.framework; sourceTree = "<absolute>"; };
-		FA577A8216C71A5300860150 /* libmodplug.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = libmodplug.framework; path = /Library/Frameworks/libmodplug.framework; sourceTree = "<absolute>"; };
-		FA577A8516C71CF000860150 /* Shader.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = Shader.cpp; sourceTree = "<group>"; };
-		FA577A8616C71CF000860150 /* Shader.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Shader.h; sourceTree = "<group>"; };
-		FA577A8716C71CF000860150 /* wrap_Shader.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = wrap_Shader.cpp; sourceTree = "<group>"; };
-		FA577A8816C71CF000860150 /* wrap_Shader.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = wrap_Shader.h; sourceTree = "<group>"; };
-		FA577A8C16C71D3600860150 /* auto.lua */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = auto.lua; sourceTree = "<group>"; };
-		FA577A8D16C71D3600860150 /* boot.lua */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = boot.lua; sourceTree = "<group>"; };
-		FA577A8E16C71D3600860150 /* graphics.lua */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = graphics.lua; sourceTree = "<group>"; };
-		FA577AAF16C7507900860150 /* love.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = love.framework; sourceTree = BUILT_PRODUCTS_DIR; };
-		FA5FDC5F1788D548002F0ED2 /* enet.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = enet.cpp; sourceTree = "<group>"; };
-		FA5FDC611788D548002F0ED2 /* callbacks.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = callbacks.c; sourceTree = "<group>"; };
-		FA5FDC631788D548002F0ED2 /* compress.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = compress.c; sourceTree = "<group>"; };
-		FA5FDC641788D548002F0ED2 /* host.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = host.c; sourceTree = "<group>"; };
-		FA5FDC671788D548002F0ED2 /* callbacks.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = callbacks.h; sourceTree = "<group>"; };
-		FA5FDC681788D548002F0ED2 /* enet.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = enet.h; sourceTree = "<group>"; };
-		FA5FDC691788D548002F0ED2 /* list.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = list.h; sourceTree = "<group>"; };
-		FA5FDC6A1788D548002F0ED2 /* protocol.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = protocol.h; sourceTree = "<group>"; };
-		FA5FDC6B1788D548002F0ED2 /* time.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = time.h; sourceTree = "<group>"; };
-		FA5FDC6C1788D548002F0ED2 /* types.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = types.h; sourceTree = "<group>"; };
-		FA5FDC6D1788D548002F0ED2 /* unix.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = unix.h; sourceTree = "<group>"; };
-		FA5FDC6E1788D548002F0ED2 /* utility.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = utility.h; sourceTree = "<group>"; };
-		FA5FDC6F1788D548002F0ED2 /* win32.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = win32.h; sourceTree = "<group>"; };
-		FA5FDC711788D548002F0ED2 /* list.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = list.c; sourceTree = "<group>"; };
-		FA5FDC721788D548002F0ED2 /* packet.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = packet.c; sourceTree = "<group>"; };
-		FA5FDC731788D548002F0ED2 /* peer.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = peer.c; sourceTree = "<group>"; };
-		FA5FDC741788D548002F0ED2 /* protocol.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = protocol.c; sourceTree = "<group>"; };
-		FA5FDC761788D548002F0ED2 /* unix.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = unix.c; sourceTree = "<group>"; };
-		FA5FDC771788D548002F0ED2 /* win32.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = win32.c; sourceTree = "<group>"; };
-		FA5FDC781788D548002F0ED2 /* lua-enet.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "lua-enet.h"; sourceTree = "<group>"; };
-		FA61FD5B1926CFCE003AE9FB /* CompressedFormatHandler.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CompressedFormatHandler.h; sourceTree = "<group>"; };
-		FA61FD5C1926CFCE003AE9FB /* PVRHandler.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = PVRHandler.cpp; sourceTree = "<group>"; };
-		FA61FD5D1926CFCE003AE9FB /* PVRHandler.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PVRHandler.h; sourceTree = "<group>"; };
-		FA636D88171B70920065623F /* RandomGenerator.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = RandomGenerator.cpp; sourceTree = "<group>"; };
-		FA636D89171B70920065623F /* RandomGenerator.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RandomGenerator.h; sourceTree = "<group>"; };
-		FA636D8C171B72A70065623F /* wrap_RandomGenerator.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = wrap_RandomGenerator.cpp; sourceTree = "<group>"; };
-		FA636D8D171B72A70065623F /* wrap_RandomGenerator.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = wrap_RandomGenerator.h; sourceTree = "<group>"; };
-		FA7175A9178E8418001FE7FE /* lua.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = lua.h; sourceTree = "<group>"; };
-		FA7AA59017F6AC1F00704BE2 /* wrap_Mesh.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = wrap_Mesh.cpp; sourceTree = "<group>"; };
-		FA7AA59117F6AC1F00704BE2 /* wrap_Mesh.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = wrap_Mesh.h; sourceTree = "<group>"; };
-		FA7C937516DCC6C2006F2BEE /* wrap_Math.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = wrap_Math.cpp; sourceTree = "<group>"; };
-		FA7C937616DCC6C2006F2BEE /* wrap_Math.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = wrap_Math.h; sourceTree = "<group>"; };
-		FA9A1009182A0D5200106F9F /* glad.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = glad.cpp; sourceTree = "<group>"; };
-		FA9A100A182A0D5200106F9F /* glad.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; path = glad.hpp; sourceTree = "<group>"; };
-		FA9A100B182A0D5200106F9F /* gladfuncs.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; path = gladfuncs.hpp; sourceTree = "<group>"; };
-		FA9B49281875EFB900201DA9 /* Texture.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Texture.h; sourceTree = "<group>"; };
-		FA9B4A0716E1578300074F42 /* SDL2.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = SDL2.framework; path = /Library/Frameworks/SDL2.framework; sourceTree = "<absolute>"; };
-		FA9FC0AE173D6E3E005027FF /* wrap_Window.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = wrap_Window.cpp; sourceTree = "<group>"; };
-		FA9FC0AF173D6E3E005027FF /* wrap_Window.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = wrap_Window.h; sourceTree = "<group>"; };
-		FAA627CD18E7E1560080752D /* CoreServices.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreServices.framework; path = System/Library/Frameworks/CoreServices.framework; sourceTree = SDKROOT; };
-		FAAC6B00170A373A008A61C5 /* CompressedData.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CompressedData.cpp; sourceTree = "<group>"; };
-		FAAC6B01170A373A008A61C5 /* CompressedData.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CompressedData.h; sourceTree = "<group>"; };
-		FAAFF04316CB11C700CCDE45 /* OpenAL-Soft.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "OpenAL-Soft.framework"; path = "/Library/Frameworks/OpenAL-Soft.framework"; sourceTree = "<absolute>"; };
-		FAB0078D1740C12D00A9664D /* Joystick.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = Joystick.cpp; sourceTree = "<group>"; };
-		FAB0078E1740C12D00A9664D /* Joystick.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Joystick.h; sourceTree = "<group>"; };
-		FAB007911740C28900A9664D /* Joystick.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = Joystick.cpp; sourceTree = "<group>"; };
-		FAB007921740C28900A9664D /* Joystick.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Joystick.h; sourceTree = "<group>"; };
-		FAB007951740C87D00A9664D /* wrap_Joystick.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = wrap_Joystick.cpp; sourceTree = "<group>"; };
-		FAB007961740C87D00A9664D /* wrap_Joystick.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = wrap_Joystick.h; sourceTree = "<group>"; };
-		FAC570FC17402D1100D147E4 /* BezierCurve.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = BezierCurve.cpp; sourceTree = "<group>"; };
-		FAC570FD17402D1100D147E4 /* BezierCurve.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = BezierCurve.h; sourceTree = "<group>"; };
-		FAC570FE17402D1100D147E4 /* wrap_BezierCurve.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = wrap_BezierCurve.cpp; sourceTree = "<group>"; };
-		FAC570FF17402D1100D147E4 /* wrap_BezierCurve.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = wrap_BezierCurve.h; sourceTree = "<group>"; };
-		FAC86E611724552C00EED715 /* wrap_Quad.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = wrap_Quad.cpp; sourceTree = "<group>"; };
-		FAC86E621724552C00EED715 /* wrap_Quad.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = wrap_Quad.h; sourceTree = "<group>"; };
-		FAC86E671724555D00EED715 /* Quad.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = Quad.cpp; sourceTree = "<group>"; };
-		FAC86E681724555D00EED715 /* Quad.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Quad.h; sourceTree = "<group>"; };
-		FADD58DC18C30367005FC3BF /* FormatHandler.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = FormatHandler.cpp; sourceTree = "<group>"; };
-		FAE010D8170DDE99006F29D0 /* ddsinfo.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ddsinfo.h; sourceTree = "<group>"; };
-		FAE010D9170DDE99006F29D0 /* ddsparse.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ddsparse.cpp; sourceTree = "<group>"; };
-		FAE010DA170DDE99006F29D0 /* ddsparse.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ddsparse.h; sourceTree = "<group>"; };
-		FAE010DE170DE25E006F29D0 /* ddsHandler.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ddsHandler.cpp; sourceTree = "<group>"; };
-		FAE010DF170DE25E006F29D0 /* ddsHandler.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ddsHandler.h; sourceTree = "<group>"; };
-		FAE010E2170DF75B006F29D0 /* wrap_CompressedData.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = wrap_CompressedData.cpp; sourceTree = "<group>"; };
-		FAE010E3170DF75C006F29D0 /* wrap_CompressedData.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = wrap_CompressedData.h; sourceTree = "<group>"; };
-		FAE4043E1927F22C00814481 /* KTXHandler.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = KTXHandler.cpp; sourceTree = "<group>"; };
-		FAE4043F1927F22C00814481 /* KTXHandler.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = KTXHandler.h; sourceTree = "<group>"; };
-		FAEC80881710FEA60057279A /* ImageData.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ImageData.cpp; sourceTree = "<group>"; };
-		FAEC80891710FEA60057279A /* ImageData.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ImageData.h; sourceTree = "<group>"; };
-		FAEC808C1711E76C0057279A /* CompressedData.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CompressedData.cpp; sourceTree = "<group>"; };
-		FAEC808D1711E76C0057279A /* CompressedData.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CompressedData.h; sourceTree = "<group>"; };
-		FAF2729816E3D44400CC193A /* Channel.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = Channel.cpp; sourceTree = "<group>"; };
-		FAF2729916E3D44400CC193A /* Channel.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Channel.h; sourceTree = "<group>"; };
-		FAF2729A16E3D44400CC193A /* LuaThread.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = LuaThread.cpp; sourceTree = "<group>"; };
-		FAF2729B16E3D44400CC193A /* LuaThread.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LuaThread.h; sourceTree = "<group>"; };
-		FAF2729C16E3D44400CC193A /* ThreadModule.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ThreadModule.cpp; sourceTree = "<group>"; };
-		FAF2729D16E3D44400CC193A /* ThreadModule.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ThreadModule.h; sourceTree = "<group>"; };
-		FAF2729E16E3D44400CC193A /* wrap_Channel.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = wrap_Channel.cpp; sourceTree = "<group>"; };
-		FAF2729F16E3D44400CC193A /* wrap_Channel.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = wrap_Channel.h; sourceTree = "<group>"; };
-		FAF272A016E3D44400CC193A /* wrap_LuaThread.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = wrap_LuaThread.cpp; sourceTree = "<group>"; };
-		FAF272A116E3D44400CC193A /* wrap_LuaThread.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = wrap_LuaThread.h; sourceTree = "<group>"; };
-		FAF272A216E3D44400CC193A /* wrap_ThreadModule.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = wrap_ThreadModule.cpp; sourceTree = "<group>"; };
-		FAF272A316E3D44400CC193A /* wrap_ThreadModule.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = wrap_ThreadModule.h; sourceTree = "<group>"; };
-		FAF272B116E3D46400CC193A /* Thread.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = Thread.cpp; sourceTree = "<group>"; };
-		FAF272B216E3D46400CC193A /* Thread.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Thread.h; sourceTree = "<group>"; };
-		FAF272B316E3D46400CC193A /* threads.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = threads.cpp; sourceTree = "<group>"; };
-		FAF272B416E3D46400CC193A /* threads.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = threads.h; sourceTree = "<group>"; };
-		FAF4376D17F4AC530074F9E2 /* Mesh.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = Mesh.cpp; sourceTree = "<group>"; };
-		FAF4376E17F4AC530074F9E2 /* Mesh.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Mesh.h; sourceTree = "<group>"; };
-		FAF6704418184FF800DBDEEA /* wuff.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = wuff.c; sourceTree = "<group>"; };
-		FAF6704518184FF800DBDEEA /* wuff.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = wuff.h; sourceTree = "<group>"; };
-		FAF6704618184FF800DBDEEA /* wuff_config.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = wuff_config.h; sourceTree = "<group>"; };
-		FAF6704718184FF800DBDEEA /* wuff_convert.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = wuff_convert.c; sourceTree = "<group>"; };
-		FAF6704818184FF800DBDEEA /* wuff_convert.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = wuff_convert.h; sourceTree = "<group>"; };
-		FAF6704918184FF800DBDEEA /* wuff_internal.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = wuff_internal.c; sourceTree = "<group>"; };
-		FAF6704A18184FF800DBDEEA /* wuff_internal.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = wuff_internal.h; sourceTree = "<group>"; };
-		FAF6704B18184FF800DBDEEA /* wuff_memory.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = wuff_memory.c; sourceTree = "<group>"; };
-		FAF670541818501300DBDEEA /* WaveDecoder.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = WaveDecoder.cpp; sourceTree = "<group>"; };
-		FAF670551818501300DBDEEA /* WaveDecoder.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WaveDecoder.h; sourceTree = "<group>"; };
-/* End PBXFileReference section */
-
-/* Begin PBXFrameworksBuildPhase section */
-		FA577AAB16C7507900860150 /* Frameworks */ = {
-			isa = PBXFrameworksBuildPhase;
-			buildActionMask = 2147483647;
-			files = (
-				FA4DAE7C19414281009F0A3E /* libz.dylib in Frameworks */,
-				FAA627CE18E7E1560080752D /* CoreServices.framework in Frameworks */,
-				FA9B4A0816E1578300074F42 /* SDL2.framework in Frameworks */,
-				FAAFF04416CB11C700CCDE45 /* OpenAL-Soft.framework in Frameworks */,
-				FA577AB016C7507900860150 /* Cocoa.framework in Frameworks */,
-				FA577AC216C7512D00860150 /* FreeType.framework in Frameworks */,
-				FA577AC416C7513200860150 /* IL.framework in Frameworks */,
-				FA577AC516C7513400860150 /* libmodplug.framework in Frameworks */,
-				FA577AC716C7513A00860150 /* mpg123.framework in Frameworks */,
-				FA577AC816C7513C00860150 /* Ogg.framework in Frameworks */,
-				FA577ACA16C7514100860150 /* OpenGL.framework in Frameworks */,
-				FA577ACB16C7514400860150 /* physfs.framework in Frameworks */,
-				FA577ACD16C7514C00860150 /* Vorbis.framework in Frameworks */,
-			);
-			runOnlyForDeploymentPostprocessing = 0;
-		};
-/* End PBXFrameworksBuildPhase section */
-
-/* Begin PBXGroup section */
-		003F4BA82B6046BC133B3F0F /* image */ = {
-			isa = PBXGroup;
-			children = (
-				FAAC6B00170A373A008A61C5 /* CompressedData.cpp */,
-				FAAC6B01170A373A008A61C5 /* CompressedData.h */,
-				25C325DC2128769F6C6A54C3 /* Image.h */,
-				78115E763B723C0C40AD47CF /* ImageData.cpp */,
-				07B301984BE42246402F7D27 /* ImageData.h */,
-				13730AB030E309FF6E2961F1 /* magpie */,
-				FAE010E2170DF75B006F29D0 /* wrap_CompressedData.cpp */,
-				FAE010E3170DF75C006F29D0 /* wrap_CompressedData.h */,
-				0B0728FA73B107B37A956A09 /* wrap_Image.cpp */,
-				006B015320155B4D42B43B61 /* wrap_Image.h */,
-				076840774B0B6E721D0C18D0 /* wrap_ImageData.cpp */,
-				31B85B507F466FE158A3718E /* wrap_ImageData.h */,
-			);
-			path = image;
-			sourceTree = "<group>";
-		};
-		02E0744773D13AD65E7C49DC /* thread */ = {
-			isa = PBXGroup;
-			children = (
-				FAF2729816E3D44400CC193A /* Channel.cpp */,
-				FAF2729916E3D44400CC193A /* Channel.h */,
-				FAF2729A16E3D44400CC193A /* LuaThread.cpp */,
-				FAF2729B16E3D44400CC193A /* LuaThread.h */,
-				FAF272B016E3D46400CC193A /* sdl */,
-				74215662418726B35C581E55 /* Thread.h */,
-				FAF2729C16E3D44400CC193A /* ThreadModule.cpp */,
-				FAF2729D16E3D44400CC193A /* ThreadModule.h */,
-				6B3565203A1778431F8A5409 /* threads.cpp */,
-				55AE226405CC1A55462E1D89 /* threads.h */,
-				FAF2729E16E3D44400CC193A /* wrap_Channel.cpp */,
-				FAF2729F16E3D44400CC193A /* wrap_Channel.h */,
-				FAF272A016E3D44400CC193A /* wrap_LuaThread.cpp */,
-				FAF272A116E3D44400CC193A /* wrap_LuaThread.h */,
-				FAF272A216E3D44400CC193A /* wrap_ThreadModule.cpp */,
-				FAF272A316E3D44400CC193A /* wrap_ThreadModule.h */,
-			);
-			path = thread;
-			sourceTree = "<group>";
-		};
-		07571BBD29A9184E2F465E28 /* common */ = {
-			isa = PBXGroup;
-			children = (
-				5D383DA1468545C30E7B5805 /* b64.cpp */,
-				0BEB72033ACA25550ADA76C4 /* b64.h */,
-				473D2247745F4901155A75DB /* config.h */,
-				182A781C7A2D3D2B6B8904A8 /* Data.h */,
-				36437CE95936736320710513 /* delay.cpp */,
-				24D758D262EA18DC15187A12 /* delay.h */,
-				386430B43A081E2A617B05F1 /* EnumMap.h */,
-				3746164716797CF80D6B0CEE /* Exception.cpp */,
-				7A5C32955F016AB85EB55519 /* Exception.h */,
-				40BC14C607396F8B1B084012 /* int.h */,
-				52D130DF3DC82D9D4C867B61 /* math.h */,
-				0CB6025618505B055A4E75DD /* Matrix.cpp */,
-				085B376E3FBB254F0FD37958 /* Matrix.h */,
-				40A0593B616A223A4CEF07C9 /* Memoizer.cpp */,
-				753F0B42534106D6545926C8 /* Memoizer.h */,
-				30E466F441EE727658716873 /* Module.cpp */,
-				63024AF52EE3658260BE116B /* Module.h */,
-				411B061C49172C971C622125 /* Object.cpp */,
-				350C47C774835EA552130431 /* Object.h */,
-				35B31EBC4DDB6F994BCA46B6 /* Reference.cpp */,
-				2CEC5ED5211174C7583849AD /* Reference.h */,
-				45E761A0072E0EF92BD66EA9 /* runtime.cpp */,
-				2D8E6FAE2A100B5866E96BFF /* runtime.h */,
-				33FD508B0754314530A35EF3 /* StringMap.h */,
-				58CD093F254501E37CA47CA8 /* types.h */,
-				7D9B03C2438B748D0DE93DD5 /* utf8.cpp */,
-				3A430C846C642DBC14975C7C /* utf8.h */,
-				3C56375F752B7A9779DD37EC /* Variant.cpp */,
-				28016C9B51FE1A893DC35B66 /* Variant.h */,
-				1A2A61843B753E3F5B330703 /* Vector.cpp */,
-				3D8460B2486A372825213933 /* Vector.h */,
-				57E6429235C547BE26B73C6C /* version.h */,
-				5ED732200E1B2E5F79831DDA /* wrap_Data.cpp */,
-				001F02BC119E349012652C17 /* wrap_Data.h */,
-			);
-			name = common;
-			path = ../../src/common;
-			sourceTree = "<group>";
-		};
-		09000F404D44660029EF38F0 /* sdl */ = {
-			isa = PBXGroup;
-			children = (
-				3BA712260D725FEB72EB3CDE /* Event.cpp */,
-				7E4B280637927B532B456D5E /* Event.h */,
-				691C5C5828550E2F60754EF2 /* wrap_Event.cpp */,
-				295C665B1E0B6B2D03CC4937 /* wrap_Event.h */,
-			);
-			path = sdl;
-			sourceTree = "<group>";
-		};
-		12BB56F127170B3709670896 /* freetype */ = {
-			isa = PBXGroup;
-			children = (
-				714251EE742346DC17103357 /* Font.cpp */,
-				615E0F450F2B7BA25EE679A6 /* Font.h */,
-				0C30420F7FD3038C721223A5 /* TrueTypeRasterizer.cpp */,
-				0B727D416262392743091BC3 /* TrueTypeRasterizer.h */,
-				232D67C67BEE54B776420682 /* wrap_Font.cpp */,
-				202650DE4F267CD3082A1B30 /* wrap_Font.h */,
-			);
-			path = freetype;
-			sourceTree = "<group>";
-		};
-		130737AF4BD12D0356A65C87 /* mouse */ = {
-			isa = PBXGroup;
-			children = (
-				FA3D9E0B16E68DE600CA6630 /* Cursor.cpp */,
-				FA3D9E0C16E68DE600CA6630 /* Cursor.h */,
-				31E0110E5797041465FF5F95 /* Mouse.cpp */,
-				63A63DFB339266AC401B545A /* Mouse.h */,
-				1E017A8673D531394B5A3B16 /* sdl */,
-				FA3D9E1316E6D41000CA6630 /* wrap_Cursor.cpp */,
-				FA3D9E1416E6D41000CA6630 /* wrap_Cursor.h */,
-				22EF17981EBD442773FE41B6 /* wrap_Mouse.cpp */,
-				4E972C114A6C25A63B5B6EF2 /* wrap_Mouse.h */,
-			);
-			path = mouse;
-			sourceTree = "<group>";
-		};
-		1350109F709C227D4AFD423C /* libluasocket */ = {
-			isa = PBXGroup;
-			children = (
-				FA7175A9178E8418001FE7FE /* lua.h */,
-				1CD02D1975803957282F28AB /* auxiliar.c */,
-				1F6F652A57F8098E5CCA6F9A /* auxiliar.h */,
-				21B25A7E333315172B754D4F /* buffer.c */,
-				7A0A2BB707F44CAD12694679 /* buffer.h */,
-				49496EAF3305281B19223C22 /* except.c */,
-				17C730CB1DA01B8F0A11217C /* except.h */,
-				048C39D14DA05F5843FE08CA /* ftp.lua.h */,
-				16C36B3C59A10CDC7ACE0DD4 /* http.lua.h */,
-				610B475400DE0F7213352BC3 /* inet.c */,
-				459946CA7F4406B026E80501 /* inet.h */,
-				135801A6483528800C676492 /* io.c */,
-				4ABD4A7B5CB6678E39490982 /* io.h */,
-				53C6151E07FB1E3471590CB9 /* ltn12.lua.h */,
-				5FAE2A9679C97F2C2792182D /* luasocket.c */,
-				329915E84B0B6D025DDC34A9 /* luasocket.h */,
-				00393E4930202C2B6E381F68 /* mime.c */,
-				485645C663D372A96DFD33F7 /* mime.h */,
-				54E653E84E8873D467C750FC /* mime.lua.h */,
-				5F846B49240D52C10F6F76E5 /* options.c */,
-				249015D170563D85709D7B6D /* options.h */,
-				415E1438178736BE0EA908D5 /* select.c */,
-				17E9544103AE376210ED5BAA /* select.h */,
-				7D48236B78EA06D346A86E3F /* smtp.lua.h */,
-				09C71F9D7DC45F5765B2462B /* socket.h */,
-				66F8479E6D2D587A592F2024 /* socket.lua.h */,
-				22256CC12B7C7D0D1B430D46 /* tcp.c */,
-				00D329851B1E7F6A3AF9614E /* tcp.h */,
-				4B41232F7AF7793540F46C58 /* timeout.c */,
-				1CE84F1F19BC2AA412C638B1 /* timeout.h */,
-				6E682862758051BF7C0A10AA /* tp.lua.h */,
-				2E2675AF3DAA24CE0728042C /* udp.c */,
-				2CAE75B079B828FE6892684A /* udp.h */,
-				734947AA28AF36E436D242FD /* unix.c */,
-				79A9038A15A324B450010E8B /* unix.h */,
-				4B002CBD52493ED9347C6EBA /* url.lua.h */,
-				041672ED2CF51FC62F532FDB /* usocket.c */,
-				63936FF81D4E14F6534A43BB /* usocket.h */,
-			);
-			path = libluasocket;
-			sourceTree = "<group>";
-		};
-		13730AB030E309FF6E2961F1 /* magpie */ = {
-			isa = PBXGroup;
-			children = (
-				FAEC808C1711E76C0057279A /* CompressedData.cpp */,
-				FAEC808D1711E76C0057279A /* CompressedData.h */,
-				FA61FD5B1926CFCE003AE9FB /* CompressedFormatHandler.h */,
-				FAE010DE170DE25E006F29D0 /* ddsHandler.cpp */,
-				FAE010DF170DE25E006F29D0 /* ddsHandler.h */,
-				1AA7781A230065F346E2313A /* DevilHandler.cpp */,
-				283342E174613897621A43F1 /* DevilHandler.h */,
-				FADD58DC18C30367005FC3BF /* FormatHandler.cpp */,
-				FA0CDE3B1710F9A50056E8D7 /* FormatHandler.h */,
-				505F23A73BFE250833D650E4 /* Image.cpp */,
-				68616BD516DB124312B47EB3 /* Image.h */,
-				FAEC80881710FEA60057279A /* ImageData.cpp */,
-				FAEC80891710FEA60057279A /* ImageData.h */,
-				FA4DAE771941419A009F0A3E /* JPEGHandler.cpp */,
-				FA4DAE781941419A009F0A3E /* JPEGHandler.h */,
-				FAE4043E1927F22C00814481 /* KTXHandler.cpp */,
-				FAE4043F1927F22C00814481 /* KTXHandler.h */,
-				FA52E444192AAADE0064D2FF /* PKMHandler.cpp */,
-				FA52E445192AAADE0064D2FF /* PKMHandler.h */,
-				FA4DAE651941410D009F0A3E /* PNGHandler.cpp */,
-				FA4DAE661941410D009F0A3E /* PNGHandler.h */,
-				FA61FD5C1926CFCE003AE9FB /* PVRHandler.cpp */,
-				FA61FD5D1926CFCE003AE9FB /* PVRHandler.h */,
-				FA4DAE671941410D009F0A3E /* STBHandler.cpp */,
-				FA4DAE681941410D009F0A3E /* STBHandler.h */,
-			);
-			path = magpie;
-			sourceTree = "<group>";
-		};
-		153D76205F7A4ACD12FB4C0E /* window */ = {
-			isa = PBXGroup;
-			children = (
-				63082CBA23A6046C60DA1C6F /* sdl */,
-				351B09E51FDC338622F44624 /* Window.cpp */,
-				7423362764CF57574BB16CDA /* Window.h */,
-				FA9FC0AE173D6E3E005027FF /* wrap_Window.cpp */,
-				FA9FC0AF173D6E3E005027FF /* wrap_Window.h */,
-			);
-			path = window;
-			sourceTree = "<group>";
-		};
-		18AF317B298302545C386404 /* Dynamics */ = {
-			isa = PBXGroup;
-			children = (
-				7DE032B3334E559969264529 /* Contacts */,
-				68027AB25AAF234679615C14 /* Joints */,
-				120B391518206E964493126C /* b2Body.cpp */,
-				079504CB332E415D4B27797B /* b2Body.h */,
-				2A6150F7479D21346EC54B68 /* b2ContactManager.cpp */,
-				7F4B2A3860273D89294A44F4 /* b2ContactManager.h */,
-				059C04C13F3A7C05570F2987 /* b2Fixture.cpp */,
-				50F0575E16561864699E41F5 /* b2Fixture.h */,
-				59BE634A2ACE722F14B86F89 /* b2Island.cpp */,
-				5100177E5D8A14366C5B0BC5 /* b2Island.h */,
-				6D822D830EF049417D184372 /* b2TimeStep.h */,
-				0D6F00D95C4407BB26E71E02 /* b2World.cpp */,
-				325E60A57F2624766A524423 /* b2World.h */,
-				0F8D03F1544476B57CA97B01 /* b2WorldCallbacks.cpp */,
-				4F3E12BD4A646D0366792FC9 /* b2WorldCallbacks.h */,
-			);
-			path = Dynamics;
-			sourceTree = "<group>";
-		};
-		196B6B2E1BC81F47771E6467 /* font */ = {
-			isa = PBXGroup;
-			children = (
-				2E9B5D9926034F9172215D5E /* Font.h */,
-				12BB56F127170B3709670896 /* freetype */,
-				74003CB27FA762A021183AD5 /* GlyphData.cpp */,
-				112814480BBF2ED06EED15BF /* GlyphData.h */,
-				5D016F4C27EF506C13FE3058 /* ImageRasterizer.cpp */,
-				36465ABA28FB06F4333C3F07 /* ImageRasterizer.h */,
-				1B1C4E4D288A1D2F29E57B1B /* Rasterizer.cpp */,
-				08D24B70441A2496160C0849 /* Rasterizer.h */,
-				1B4E22F1388E2B2E76E3377B /* wrap_GlyphData.cpp */,
-				3547706F2E7D43212CB40D04 /* wrap_GlyphData.h */,
-				11745DE315E859F71E881D76 /* wrap_Rasterizer.cpp */,
-				37224F6B30CA5D800B1F41F1 /* wrap_Rasterizer.h */,
-			);
-			path = font;
-			sourceTree = "<group>";
-		};
-		1E017A8673D531394B5A3B16 /* sdl */ = {
-			isa = PBXGroup;
-			children = (
-				FA3D9E0F16E68EAE00CA6630 /* Cursor.cpp */,
-				FA3D9E1016E68EAE00CA6630 /* Cursor.h */,
-				584E16AE09E12536206C46FE /* Mouse.cpp */,
-				198A44BD71BB61EE517C2A39 /* Mouse.h */,
-			);
-			path = sdl;
-			sourceTree = "<group>";
-		};
-		20A8288624E9654322DC388D /* sdl */ = {
-			isa = PBXGroup;
-			children = (
-				43BC2B1C505E5EFF650C31E3 /* Keyboard.cpp */,
-				057A3770539D25AE6C8F20D3 /* Keyboard.h */,
-			);
-			path = sdl;
-			sourceTree = "<group>";
-		};
-		264B1FF46F2C68D26B7B158D /* openal */ = {
-			isa = PBXGroup;
-			children = (
-				6CB1193233FA78EE646A17A1 /* Audio.cpp */,
-				1916112F57AF56A173727464 /* Audio.h */,
-				601E6A56345412E87E1D396B /* Pool.cpp */,
-				62E121F35BEB622029324F25 /* Pool.h */,
-				28024635525B077E08A73D9B /* Source.cpp */,
-				5B3306B5587A708557EE4D4F /* Source.h */,
-			);
-			path = openal;
-			sourceTree = "<group>";
-		};
-		2F654C0235EB60C744A22507 /* Products */ = {
-			isa = PBXGroup;
-			children = (
-				FA577AAF16C7507900860150 /* love.framework */,
-			);
-			name = Products;
-			sourceTree = "<group>";
-		};
-		34067FA94AEA4D7C3E103A64 /* box2d */ = {
-			isa = PBXGroup;
-			children = (
-				089B1AC1248B21D336594457 /* Body.cpp */,
-				6E6D5AB27B71488D405526C3 /* Body.h */,
-				0959542C4B54320B1DDD5911 /* ChainShape.cpp */,
-				1AA213FC158815FA77C40330 /* ChainShape.h */,
-				4DAB28A9235E2CBE75F56848 /* CircleShape.cpp */,
-				3C965422252F672D3FF6598C /* CircleShape.h */,
-				02CD63315FF902E336AB4657 /* Contact.cpp */,
-				5D590ACE5E237B7D5B556AD0 /* Contact.h */,
-				34A36BB617BC5CCA5B870EA6 /* DistanceJoint.cpp */,
-				457674E43FF71E974D990C00 /* DistanceJoint.h */,
-				755C2B980C106EA7423E7E5E /* EdgeShape.cpp */,
-				561D4A4722E36BAA16D17CC8 /* EdgeShape.h */,
-				47C77F6032FA77E046AA6810 /* Fixture.cpp */,
-				60840050412A459D5D21518F /* Fixture.h */,
-				1E22646A710E5EFC27FE3932 /* FrictionJoint.cpp */,
-				45DC20A760FC42341E5762F7 /* FrictionJoint.h */,
-				6F4D478A52A0408765095920 /* GearJoint.cpp */,
-				25CE236F66F70EB3444A7CC8 /* GearJoint.h */,
-				3EA80A4E0CE0014052076037 /* Joint.cpp */,
-				138913BE5126483748FA43D0 /* Joint.h */,
-				FA0A4BF2182E1AD600E1E4D2 /* MotorJoint.cpp */,
-				FA0A4BF3182E1AD600E1E4D2 /* MotorJoint.h */,
-				3C0B06AF6B5326C840477B18 /* MouseJoint.cpp */,
-				208275724C9421035EA145A4 /* MouseJoint.h */,
-				370D76DC224F2EB300CB4E2F /* Physics.cpp */,
-				5CE370672B1234B10F9532FA /* Physics.h */,
-				54E85987318206E93DC8189F /* PolygonShape.cpp */,
-				2FF26CC52C28773750B812D9 /* PolygonShape.h */,
-				0AE5755936E84C247FB56C65 /* PrismaticJoint.cpp */,
-				104D5534669B772556942891 /* PrismaticJoint.h */,
-				5CB720BA493D7D995E0E20DD /* PulleyJoint.cpp */,
-				0A936C83344E2CF84E703059 /* PulleyJoint.h */,
-				36DD053F754B2D29719B1F80 /* RevoluteJoint.cpp */,
-				5CE0167703887B376F2368FD /* RevoluteJoint.h */,
-				53C4064801456193163E4631 /* RopeJoint.cpp */,
-				4F34010A575C02E66D400CE2 /* RopeJoint.h */,
-				61E64F07028039774F502D69 /* Shape.cpp */,
-				0EB870A1180261FD424A41B3 /* Shape.h */,
-				78E50525407567F863476E27 /* WeldJoint.cpp */,
-				465D0438379342C4589E2B1C /* WeldJoint.h */,
-				44DE79C879CC0074510A2403 /* WheelJoint.cpp */,
-				6AA03CE31B942DC660045FE9 /* WheelJoint.h */,
-				644D0C953C3439FC57C03FC6 /* World.cpp */,
-				7A707F7A60B47A091107144B /* World.h */,
-				64694F91593478085859666F /* wrap_Body.cpp */,
-				1A311FC16B9C0F8D7A41580E /* wrap_Body.h */,
-				1CAA69E00D0808BA2108238B /* wrap_ChainShape.cpp */,
-				70564CC32DEC209F2A615F44 /* wrap_ChainShape.h */,
-				6EF321185C2B1F1E1AF54F64 /* wrap_CircleShape.cpp */,
-				15093E1B1A14176374C81299 /* wrap_CircleShape.h */,
-				3BB22A142670197B0DBD0BED /* wrap_Contact.cpp */,
-				21E975B81E8D701F2147658C /* wrap_Contact.h */,
-				69967D2323404E1F0ED21F11 /* wrap_DistanceJoint.cpp */,
-				18E0492204644DE929B96486 /* wrap_DistanceJoint.h */,
-				40F412FF29F65F5A3D511B98 /* wrap_EdgeShape.cpp */,
-				276C3474657D0A246F64221C /* wrap_EdgeShape.h */,
-				7F796B7A3362196075C62E61 /* wrap_Fixture.cpp */,
-				5F1F169C7FC633EF292E26DF /* wrap_Fixture.h */,
-				340345481F165F8945C716AE /* wrap_FrictionJoint.cpp */,
-				0EA87794395D3B287C5949AA /* wrap_FrictionJoint.h */,
-				50B67F2D0CC511706810302E /* wrap_GearJoint.cpp */,
-				7BAB25936D207169591A666A /* wrap_GearJoint.h */,
-				71810207414B52F8340D7797 /* wrap_Joint.cpp */,
-				047815B73C1C5373551442A6 /* wrap_Joint.h */,
-				FA0A4BF6182E260200E1E4D2 /* wrap_MotorJoint.cpp */,
-				FA0A4BF7182E260200E1E4D2 /* wrap_MotorJoint.h */,
-				4D81102E7ABD1C282BE42CE3 /* wrap_MouseJoint.cpp */,
-				64BA1CE328FF17144B475111 /* wrap_MouseJoint.h */,
-				6CEB48E969FC42C53F9432B1 /* wrap_Physics.cpp */,
-				71C579A557640A3E2A696518 /* wrap_Physics.h */,
-				3AD03C7A77C546ED07BE4C06 /* wrap_PolygonShape.cpp */,
-				78073FEB0F54031B1A3A56FD /* wrap_PolygonShape.h */,
-				0B4020CD058D70F569DF6129 /* wrap_PrismaticJoint.cpp */,
-				2B8C245A21A515E86636725A /* wrap_PrismaticJoint.h */,
-				1E840AF84AB61C6410E26634 /* wrap_PulleyJoint.cpp */,
-				762E57DE65A626FA1F6D4305 /* wrap_PulleyJoint.h */,
-				1F3A277A44141DBF7BCF146A /* wrap_RevoluteJoint.cpp */,
-				2912092853050AF9785F39BE /* wrap_RevoluteJoint.h */,
-				0E3E13BC3E3A7C0C7DBE7DF8 /* wrap_RopeJoint.cpp */,
-				75C0197971FE16926CDA624A /* wrap_RopeJoint.h */,
-				124E716E0BCA055534A60AD2 /* wrap_Shape.cpp */,
-				02F064F5202E34F5718352B8 /* wrap_Shape.h */,
-				3DFF31EE26405E554C610C8F /* wrap_WeldJoint.cpp */,
-				131F69C3368C4B8A55EE0DAD /* wrap_WeldJoint.h */,
-				73473B3C698B538002540A5D /* wrap_WheelJoint.cpp */,
-				0AFB7DA45B2D6913110A5AAB /* wrap_WheelJoint.h */,
-				36324E12371E518E6E9C61B5 /* wrap_World.cpp */,
-				27F777AB188D674F30BC1829 /* wrap_World.h */,
-			);
-			path = box2d;
-			sourceTree = "<group>";
-		};
-		352E6C5F6F8A681766EB5299 /* scripts */ = {
-			isa = PBXGroup;
-			children = (
-				FA577A8C16C71D3600860150 /* auto.lua */,
-				FA577A8D16C71D3600860150 /* boot.lua */,
-				503971A86B7167A91B670FBA /* boot.lua.h */,
-				FA577A8E16C71D3600860150 /* graphics.lua */,
-				104144AB73A974BC04A03131 /* graphics.lua.h */,
-			);
-			name = scripts;
-			path = ../../src/scripts;
-			sourceTree = "<group>";
-		};
-		36C14C81334735EC54E33637 /* utf8 */ = {
-			isa = PBXGroup;
-			children = (
-				5CB1063C6DF04E2E409F2DB0 /* utf8 */,
-				1BCD6EE50EB8791E5A870135 /* utf8.h */,
-			);
-			path = utf8;
-			sourceTree = "<group>";
-		};
-		36DA23075AF92B22676D34C9 /* audio */ = {
-			isa = PBXGroup;
-			children = (
-				1839744763625B5D64EC70AC /* Audio.cpp */,
-				24EE059E03D8155F4BFF64D6 /* Audio.h */,
-				7DB6750C1F01062849171B8B /* null */,
-				264B1FF46F2C68D26B7B158D /* openal */,
-				2FB732687B1669402408356D /* Source.cpp */,
-				46CA2B6B17C32BBE55772268 /* Source.h */,
-				02CA1BE908D91B104EB9590F /* wrap_Audio.cpp */,
-				5FF97D522B8872947DED611C /* wrap_Audio.h */,
-				02662CBC29B954295A634A39 /* wrap_Source.cpp */,
-				330F59B11A5B5D1B44DC07BF /* wrap_Source.h */,
-			);
-			path = audio;
-			sourceTree = "<group>";
-		};
-		3AED1DE005A53DDB07902760 /* luasocket */ = {
-			isa = PBXGroup;
-			children = (
-				1350109F709C227D4AFD423C /* libluasocket */,
-				2DC90F3C6160198256795C75 /* luasocket.cpp */,
-				6B2E52E6185E6980660F1374 /* luasocket.h */,
-			);
-			path = luasocket;
-			sourceTree = "<group>";
-		};
-		3D490B3A36B935BD14B05986 /* Collision */ = {
-			isa = PBXGroup;
-			children = (
-				7BC957592F43649453A57B23 /* Shapes */,
-				4B5F4DF8110020A96B5D3EAB /* b2BroadPhase.cpp */,
-				32FD3FEE52FD1911405B3C59 /* b2BroadPhase.h */,
-				7E7A068041FD553876712F05 /* b2CollideCircle.cpp */,
-				1B036C7C5A8832AE53BB1C06 /* b2CollideEdge.cpp */,
-				427B4B2517C0516844370E3D /* b2CollidePolygon.cpp */,
-				32CC11481CD9164455455D72 /* b2Collision.cpp */,
-				7F911CF2107B22F44C5B2542 /* b2Collision.h */,
-				175A1B8D733B2D4803F64AC1 /* b2Distance.cpp */,
-				034144EE6C33421377674516 /* b2Distance.h */,
-				59D27EA33E8E62E15C185948 /* b2DynamicTree.cpp */,
-				11CF30E73CEA2D8D0A1B17D3 /* b2DynamicTree.h */,
-				1F0D375C38A245E403E53DB5 /* b2TimeOfImpact.cpp */,
-				1C5B57F87B315E39005B119F /* b2TimeOfImpact.h */,
-			);
-			path = Collision;
-			sourceTree = "<group>";
-		};
-		47217E6729AC72E74FF651E3 /* lullaby */ = {
-			isa = PBXGroup;
-			children = (
-				4E15567759041CC379292BE6 /* Decoder.cpp */,
-				733758E8028B20BB799A7BE6 /* Decoder.h */,
-				4A774BC26B7235E410D40C8E /* FLACDecoder.cpp */,
-				3C9253C8152355E1274814B7 /* FLACDecoder.h */,
-				02F0197227150E1B28D9425B /* GmeDecoder.cpp */,
-				64AC15B600F2473651823D40 /* GmeDecoder.h */,
-				407422E8589417B6683D1042 /* ModPlugDecoder.cpp */,
-				31C84D0129AE5F6044A94AC2 /* ModPlugDecoder.h */,
-				1F875B224C4E1B9E35854766 /* Mpg123Decoder.cpp */,
-				6B255FFC4A2C404E50512CB5 /* Mpg123Decoder.h */,
-				2A5F7DCB40652F9B7D61073A /* Sound.cpp */,
-				77234CEE2EFE633537975850 /* Sound.h */,
-				727648E06CD863A2582F798F /* VorbisDecoder.cpp */,
-				4A80315175C5625804AA4A56 /* VorbisDecoder.h */,
-				FAF670541818501300DBDEEA /* WaveDecoder.cpp */,
-				FAF670551818501300DBDEEA /* WaveDecoder.h */,
-			);
-			path = lullaby;
-			sourceTree = "<group>";
-		};
-		48DE0A5A52042D0361883E40 /* libraries */ = {
-			isa = PBXGroup;
-			children = (
-				63287ED84D0F2EEB65D249A3 /* Box2D */,
-				FAE010D7170DDE99006F29D0 /* ddsparse */,
-				FA5FDC5E1788D548002F0ED2 /* enet */,
-				FA9A1008182A0D5200106F9F /* glad */,
-				FA4DAE6D1941411D009F0A3E /* lodepng */,
-				3AED1DE005A53DDB07902760 /* luasocket */,
-				FA0354691731F3A700284828 /* noise1234 */,
-				FA4DAE701941411D009F0A3E /* stb */,
-				36C14C81334735EC54E33637 /* utf8 */,
-				FAF6704318184FF800DBDEEA /* Wuff */,
-			);
-			name = libraries;
-			path = ../../src/libraries;
-			sourceTree = "<group>";
-		};
-		4BAB08EE4A6B4A1A01DA50A4 /* sound */ = {
-			isa = PBXGroup;
-			children = (
-				43A258C229C75C15238E520C /* Decoder.h */,
-				47217E6729AC72E74FF651E3 /* lullaby */,
-				30ED4BB03C5F11254AF12E98 /* Sound.cpp */,
-				23985AB32E7B463A2CB87E2C /* Sound.h */,
-				0C5C6C6E47851D1308411DE6 /* SoundData.cpp */,
-				785D31764A1D6CDE21BC6404 /* SoundData.h */,
-				5CF629B94C7802D446D61C45 /* wrap_Decoder.cpp */,
-				782A153A1E6314CB583250E0 /* wrap_Decoder.h */,
-				385902BD584E7D73154E4EBB /* wrap_Sound.cpp */,
-				3960064616E26C0213E323E2 /* wrap_Sound.h */,
-				4DC3617831763D2760335D87 /* wrap_SoundData.cpp */,
-				5B5A0BEC36BE007E6E491396 /* wrap_SoundData.h */,
-			);
-			path = sound;
-			sourceTree = "<group>";
-		};
-		4E2517690E6C64EB07D164F7 /* event */ = {
-			isa = PBXGroup;
-			children = (
-				24265680279E30A40DF81946 /* Event.cpp */,
-				4F1862D324C9429157A27A2E /* Event.h */,
-				09000F404D44660029EF38F0 /* sdl */,
-			);
-			path = event;
-			sourceTree = "<group>";
-		};
-		501126AD67DC2A4B527654EA /* joystick */ = {
-			isa = PBXGroup;
-			children = (
-				FAB0078D1740C12D00A9664D /* Joystick.cpp */,
-				FAB0078E1740C12D00A9664D /* Joystick.h */,
-				4C606AEC342457600C3F0741 /* JoystickModule.h */,
-				687216AD6FA406C838284B91 /* sdl */,
-				FAB007951740C87D00A9664D /* wrap_Joystick.cpp */,
-				FAB007961740C87D00A9664D /* wrap_Joystick.h */,
-				139411436818381E493F00F5 /* wrap_JoystickModule.cpp */,
-				2D7B7DEC4FC87878332E41B3 /* wrap_JoystickModule.h */,
-			);
-			path = joystick;
-			sourceTree = "<group>";
-		};
-		54067CFB7D564E5764FA17DC /* love */ = {
-			isa = PBXGroup;
-			children = (
-				07571BBD29A9184E2F465E28 /* common */,
-				48DE0A5A52042D0361883E40 /* libraries */,
-				548A533617C45319431D3ECF /* modules */,
-				352E6C5F6F8A681766EB5299 /* scripts */,
-				FA577A6616C7199700860150 /* Frameworks */,
-				FA08F5AC16C751BA00F007B5 /* Resources */,
-				2F654C0235EB60C744A22507 /* Products */,
-			);
-			name = love;
-			sourceTree = "<group>";
-			usesTabs = 1;
-		};
-		548A533617C45319431D3ECF /* modules */ = {
-			isa = PBXGroup;
-			children = (
-				36DA23075AF92B22676D34C9 /* audio */,
-				4E2517690E6C64EB07D164F7 /* event */,
-				7B0734182055607468261A5E /* filesystem */,
-				196B6B2E1BC81F47771E6467 /* font */,
-				586900D11BD011D949F45D7D /* graphics */,
-				003F4BA82B6046BC133B3F0F /* image */,
-				501126AD67DC2A4B527654EA /* joystick */,
-				752A4B4672B6166A2CA30E85 /* keyboard */,
-				70C250C41ADF59C0697925C2 /* love */,
-				FA7C937116DCC6C2006F2BEE /* math */,
-				130737AF4BD12D0356A65C87 /* mouse */,
-				67F10C1D58A96C1C53563B5C /* physics */,
-				4BAB08EE4A6B4A1A01DA50A4 /* sound */,
-				FA34E7CA174B512200E04D3F /* system */,
-				02E0744773D13AD65E7C49DC /* thread */,
-				6D590DDD41E72A60262E4A4F /* timer */,
-				FA45F76E187A0F3600D99ED8 /* touch */,
-				153D76205F7A4ACD12FB4C0E /* window */,
-			);
-			name = modules;
-			path = ../../src/modules;
-			sourceTree = "<group>";
-		};
-		586900D11BD011D949F45D7D /* graphics */ = {
-			isa = PBXGroup;
-			children = (
-				4941079838020ECA049B5C21 /* Color.h */,
-				5D93601669875EE06721689E /* Drawable.h */,
-				03F17FF546D637744E263961 /* Graphics.cpp */,
-				777352284E262F48543E6E7F /* Graphics.h */,
-				75093EE94918576801F50993 /* opengl */,
-				FAC86E671724555D00EED715 /* Quad.cpp */,
-				FAC86E681724555D00EED715 /* Quad.h */,
-				58CC50E70A375FDF53EF01B6 /* Texture.cpp */,
-				1DA41DFF0869489411A71AFC /* Texture.h */,
-				4B731754147B27AF73AC5358 /* Volatile.cpp */,
-				0CFF64090F0F4F481BB80CF0 /* Volatile.h */,
-			);
-			path = graphics;
-			sourceTree = "<group>";
-		};
-		59207AEF0DE97A632CE30FE6 /* Rope */ = {
-			isa = PBXGroup;
-			children = (
-				4832527C02C105776536438A /* b2Rope.cpp */,
-				1A95437F513E662113AC154A /* b2Rope.h */,
-			);
-			path = Rope;
-			sourceTree = "<group>";
-		};
-		5CB1063C6DF04E2E409F2DB0 /* utf8 */ = {
-			isa = PBXGroup;
-			children = (
-				3C4D70E82FC12A9A15EC39BA /* checked.h */,
-				74EE403977734BA53DDF16F0 /* core.h */,
-				7CA02BF51EBA65C263E15250 /* unchecked.h */,
-			);
-			path = utf8;
-			sourceTree = "<group>";
-		};
-		5CFF12567FFB5C5166631693 /* sdl */ = {
-			isa = PBXGroup;
-			children = (
-				113269E55FCF208D2D6754BC /* Timer.cpp */,
-				6BEE6511475F641A70A0591E /* Timer.h */,
-			);
-			path = sdl;
-			sourceTree = "<group>";
-		};
-		63082CBA23A6046C60DA1C6F /* sdl */ = {
-			isa = PBXGroup;
-			children = (
-				6CDD4F3320303D222C180CD0 /* Window.cpp */,
-				7EC570BC74C369747ED0183A /* Window.h */,
-			);
-			path = sdl;
-			sourceTree = "<group>";
-		};
-		63287ED84D0F2EEB65D249A3 /* Box2D */ = {
-			isa = PBXGroup;
-			children = (
-				7B7A47F267D77A570D995658 /* Box2D.h */,
-				3D490B3A36B935BD14B05986 /* Collision */,
-				71F67B4A51CC637C6D113715 /* Common */,
-				18AF317B298302545C386404 /* Dynamics */,
-				59207AEF0DE97A632CE30FE6 /* Rope */,
-			);
-			path = Box2D;
-			sourceTree = "<group>";
-		};
-		64DD03B45BF6265723662DAF /* physfs */ = {
-			isa = PBXGroup;
-			children = (
-				4E0F565B03D05C3722496F27 /* File.cpp */,
-				47D46915001F342A3CD23E86 /* File.h */,
-				6DE3129F3A0B2D9C178118F3 /* Filesystem.cpp */,
-				219636CF6780074F7871463D /* Filesystem.h */,
-			);
-			path = physfs;
-			sourceTree = "<group>";
-		};
-		67F10C1D58A96C1C53563B5C /* physics */ = {
-			isa = PBXGroup;
-			children = (
-				2DCE45C868A0091B762C7377 /* Body.cpp */,
-				286660042F9654F61AB90D7A /* Body.h */,
-				69DB4423147C7E3362941E75 /* Joint.cpp */,
-				065364DB7A29396C777213D0 /* Joint.h */,
-				70F425B5336E1CD652827FD0 /* Shape.cpp */,
-				00744BD73BFE3F591537728F /* Shape.h */,
-				34067FA94AEA4D7C3E103A64 /* box2d */,
-			);
-			path = physics;
-			sourceTree = "<group>";
-		};
-		68027AB25AAF234679615C14 /* Joints */ = {
-			isa = PBXGroup;
-			children = (
-				33627AE97E66147E76804EF9 /* b2DistanceJoint.cpp */,
-				086B4A4E025B4B5F606747A2 /* b2DistanceJoint.h */,
-				13093ADC78426C5009DF3B13 /* b2FrictionJoint.cpp */,
-				78C0420E2548523B241E3D61 /* b2FrictionJoint.h */,
-				69A01D71103275D451F965B2 /* b2GearJoint.cpp */,
-				6590063A6E4B3AEF4550443C /* b2GearJoint.h */,
-				6F1B61350B6B36AF216C57D7 /* b2Joint.cpp */,
-				10F83B5848B77A937C250FEB /* b2Joint.h */,
-				FA0A4BEE182E0C2800E1E4D2 /* b2MotorJoint.cpp */,
-				FA0A4BEF182E0C2800E1E4D2 /* b2MotorJoint.h */,
-				4A47384208BE218F688C4EFA /* b2MouseJoint.cpp */,
-				0AA1539E66B2641B66130709 /* b2MouseJoint.h */,
-				1E27263847302FCA1F843B47 /* b2PrismaticJoint.cpp */,
-				64491E98483728D601110EF0 /* b2PrismaticJoint.h */,
-				66EC3C0463A703A97445193B /* b2PulleyJoint.cpp */,
-				7A840CB020803B7C6C097CD1 /* b2PulleyJoint.h */,
-				11D62E873092729B497B447F /* b2RevoluteJoint.cpp */,
-				774434E1581A23EC1B0F1E6F /* b2RevoluteJoint.h */,
-				38AF72D4790619BB022E2AEF /* b2RopeJoint.cpp */,
-				2C970EA7229F20934C72581D /* b2RopeJoint.h */,
-				5BCC49F529F726385CD41FA6 /* b2WeldJoint.cpp */,
-				2D290E902C451D6849051FEF /* b2WeldJoint.h */,
-				0602250B7E4664E43CA113DC /* b2WheelJoint.cpp */,
-				23A266CD4FC729355E23606E /* b2WheelJoint.h */,
-			);
-			path = Joints;
-			sourceTree = "<group>";
-		};
-		687216AD6FA406C838284B91 /* sdl */ = {
-			isa = PBXGroup;
-			children = (
-				FAB007911740C28900A9664D /* Joystick.cpp */,
-				FAB007921740C28900A9664D /* Joystick.h */,
-				55B425307C0C1C4B3EFC3A5F /* JoystickModule.cpp */,
-				439E46D768A266780E894800 /* JoystickModule.h */,
-			);
-			path = sdl;
-			sourceTree = "<group>";
-		};
-		6D590DDD41E72A60262E4A4F /* timer */ = {
-			isa = PBXGroup;
-			children = (
-				5CFF12567FFB5C5166631693 /* sdl */,
-				2D9475890CDA3D3776435622 /* Timer.h */,
-				695E4ED13AA0689E64280573 /* wrap_Timer.cpp */,
-				7F575BE9573C654B5ED44CC1 /* wrap_Timer.h */,
-			);
-			path = timer;
-			sourceTree = "<group>";
-		};
-		70C250C41ADF59C0697925C2 /* love */ = {
-			isa = PBXGroup;
-			children = (
-				19ED419874B46EC16F927524 /* love.cpp */,
-				10A608C96F067F972C962EFB /* love.h */,
-			);
-			path = love;
-			sourceTree = "<group>";
-		};
-		71F67B4A51CC637C6D113715 /* Common */ = {
-			isa = PBXGroup;
-			children = (
-				55A759CE711E157339930E58 /* b2BlockAllocator.cpp */,
-				0F0E666B7C790BB870477994 /* b2BlockAllocator.h */,
-				12390CBC115B00D06EF951DD /* b2Draw.cpp */,
-				343E66751EBA75264C3400FA /* b2Draw.h */,
-				3AC7627D7E1458AA0D8E0522 /* b2GrowableStack.h */,
-				2C78323D7D5C628A53EC6931 /* b2Math.cpp */,
-				0A0A2DA4094130187F655E52 /* b2Math.h */,
-				6FF15DF4423F6426224024C9 /* b2Settings.cpp */,
-				090F537B70DA06EA0B29593F /* b2Settings.h */,
-				780D5B6358096BEB1F1336EE /* b2StackAllocator.cpp */,
-				567C0A0C58931DE54733011B /* b2StackAllocator.h */,
-				239054AE7475433E39747DA9 /* b2Timer.cpp */,
-				525A4D633D9B0D8B225936D4 /* b2Timer.h */,
-			);
-			path = Common;
-			sourceTree = "<group>";
-		};
-		75093EE94918576801F50993 /* opengl */ = {
-			isa = PBXGroup;
-			children = (
-				4AD52074367950B735707CE1 /* Canvas.cpp */,
-				23573F2F4F7D56312E663E24 /* Canvas.h */,
-				583037E9238A6EF00DD20B1A /* Font.cpp */,
-				7EFA04373ADC5CC24DCB5824 /* Font.h */,
-				11773415762F3A38421C6DB3 /* Graphics.cpp */,
-				389E3CEC356050A27784290E /* Graphics.h */,
-				56D6030A0B8F7397715062B9 /* Image.cpp */,
-				3CFE5C4A12D5675E7C9C7BF9 /* Image.h */,
-				FAF4376D17F4AC530074F9E2 /* Mesh.cpp */,
-				FAF4376E17F4AC530074F9E2 /* Mesh.h */,
-				2E406F8328543EC63EB922C6 /* OpenGL.cpp */,
-				2C87695707B046B536F347D8 /* OpenGL.h */,
-				48A206C9004150640C432100 /* ParticleSystem.cpp */,
-				53EE57FF4DBD52BB22701160 /* ParticleSystem.h */,
-				FA435EA117B36E9C004C3F22 /* Polyline.cpp */,
-				FA435EA217B36E9C004C3F22 /* Polyline.h */,
-				FA577A8516C71CF000860150 /* Shader.cpp */,
-				FA577A8616C71CF000860150 /* Shader.h */,
-				4D700D182EAA46273D1E2CC4 /* SpriteBatch.cpp */,
-				727D23FA1CC755B902471A45 /* SpriteBatch.h */,
-				FA9B49281875EFB900201DA9 /* Texture.h */,
-				426B1C4475DC54505B824B7F /* VertexBuffer.cpp */,
-				577B66502A5360AE60733B10 /* VertexBuffer.h */,
-				4E3251027026699A1D4D310D /* wrap_Canvas.cpp */,
-				3AFB3A18384A2D22352262B1 /* wrap_Canvas.h */,
-				7A3B52AF1FBE73FC36AD50C8 /* wrap_Font.cpp */,
-				3CDA3E9B364F17A902384AAC /* wrap_Font.h */,
-				1A9810F758AC1D1E4B6431FD /* wrap_Graphics.cpp */,
-				05DF237B657042515F3B4E52 /* wrap_Graphics.h */,
-				14AE68E14C2C74526A612FA0 /* wrap_Image.cpp */,
-				78A2127828793F7A778D7932 /* wrap_Image.h */,
-				FA7AA59017F6AC1F00704BE2 /* wrap_Mesh.cpp */,
-				FA7AA59117F6AC1F00704BE2 /* wrap_Mesh.h */,
-				5F42052D7C8271A1105541DE /* wrap_ParticleSystem.cpp */,
-				678E42771C9B415628A3234D /* wrap_ParticleSystem.h */,
-				FAC86E611724552C00EED715 /* wrap_Quad.cpp */,
-				FAC86E621724552C00EED715 /* wrap_Quad.h */,
-				FA577A8716C71CF000860150 /* wrap_Shader.cpp */,
-				FA577A8816C71CF000860150 /* wrap_Shader.h */,
-				02C16FDB537A702F4D42534E /* wrap_SpriteBatch.cpp */,
-				2BE75A693BE206B22DAE1B2E /* wrap_SpriteBatch.h */,
-				FA01BE1C1878E35B00640047 /* wrap_Texture.cpp */,
-				FA01BE1D1878E35B00640047 /* wrap_Texture.h */,
-			);
-			path = opengl;
-			sourceTree = "<group>";
-		};
-		752A4B4672B6166A2CA30E85 /* keyboard */ = {
-			isa = PBXGroup;
-			children = (
-				524741891BB93848039F4174 /* Keyboard.cpp */,
-				6C981DA13E3D42DA06891046 /* Keyboard.h */,
-				20A8288624E9654322DC388D /* sdl */,
-				19F40DF6507028212FEB1D77 /* wrap_Keyboard.cpp */,
-				003142374F3D40A518716024 /* wrap_Keyboard.h */,
-			);
-			path = keyboard;
-			sourceTree = "<group>";
-		};
-		7B0734182055607468261A5E /* filesystem */ = {
-			isa = PBXGroup;
-			children = (
-				11D141087979064B441B787D /* File.cpp */,
-				31A444CF0B4E6DA450120730 /* File.h */,
-				62370A494F9D6E2D570065EB /* FileData.cpp */,
-				54A13C2209F945671BC27974 /* FileData.h */,
-				64DD03B45BF6265723662DAF /* physfs */,
-				6C367AE309C453C412D91363 /* wrap_File.cpp */,
-				52E15B702C40593D3BF431DF /* wrap_File.h */,
-				597478A255B82B56488B4717 /* wrap_FileData.cpp */,
-				3512460642B046876D687B22 /* wrap_FileData.h */,
-				1E827AE8548C52493ED95629 /* wrap_Filesystem.cpp */,
-				5DC271240F0119AE16FA1B8E /* wrap_Filesystem.h */,
-			);
-			path = filesystem;
-			sourceTree = "<group>";
-		};
-		7BC957592F43649453A57B23 /* Shapes */ = {
-			isa = PBXGroup;
-			children = (
-				4E6705C154C34FBD143F465E /* b2ChainShape.cpp */,
-				6C7E6C3F1CCA1CF6164123F6 /* b2ChainShape.h */,
-				08AA5965073A1C520A7A6833 /* b2CircleShape.cpp */,
-				153957EB332E1269671E7F4A /* b2CircleShape.h */,
-				633E37194CB535AE41A00092 /* b2EdgeShape.cpp */,
-				448C492C7AEB7840504F1C9D /* b2EdgeShape.h */,
-				08983C025D0655270DF81A5B /* b2PolygonShape.cpp */,
-				0E755DCF691828CE11444877 /* b2PolygonShape.h */,
-				2FD366F113387BC95125133D /* b2Shape.h */,
-			);
-			path = Shapes;
-			sourceTree = "<group>";
-		};
-		7DB6750C1F01062849171B8B /* null */ = {
-			isa = PBXGroup;
-			children = (
-				7CC5707C79175FA6427B3D62 /* Audio.cpp */,
-				2E5C2A2F05417B294ED655E8 /* Audio.h */,
-				1A304E384AF2119905C01504 /* Source.cpp */,
-				104D567660003ADE696D341A /* Source.h */,
-			);
-			path = null;
-			sourceTree = "<group>";
-		};
-		7DE032B3334E559969264529 /* Contacts */ = {
-			isa = PBXGroup;
-			children = (
-				468F7A0A484820DE79CE76D2 /* b2ChainAndCircleContact.cpp */,
-				174D472C1AFE594D77A0322B /* b2ChainAndCircleContact.h */,
-				60C95C7F507A381D0A483B3F /* b2ChainAndPolygonContact.cpp */,
-				44E85D982F01082F5E1346B6 /* b2ChainAndPolygonContact.h */,
-				58792BC1126C2917432D706B /* b2CircleContact.cpp */,
-				21124F915912499179A42115 /* b2CircleContact.h */,
-				71F878E2440A021B68D93ABC /* b2Contact.cpp */,
-				50EC67CE3ED71F5D13304FD4 /* b2Contact.h */,
-				1E9E4F657DEC2772493B79CC /* b2ContactSolver.cpp */,
-				5A1C77401B1B32CE326332A1 /* b2ContactSolver.h */,
-				1108594E361A22D90D6022E8 /* b2EdgeAndCircleContact.cpp */,
-				0A420541704C1C2D718A4D20 /* b2EdgeAndCircleContact.h */,
-				243E18977E2A37CC6FDD55A5 /* b2EdgeAndPolygonContact.cpp */,
-				5DA322AC59AD7E43183577CB /* b2EdgeAndPolygonContact.h */,
-				31871B8B7E1A697A73576040 /* b2PolygonAndCircleContact.cpp */,
-				4A1D6DAE45E627BD12903B52 /* b2PolygonAndCircleContact.h */,
-				1F4E747212DE41716BC245C9 /* b2PolygonContact.cpp */,
-				0A063D006D52330E67FF4B3A /* b2PolygonContact.h */,
-			);
-			path = Contacts;
-			sourceTree = "<group>";
-		};
-		FA0354691731F3A700284828 /* noise1234 */ = {
-			isa = PBXGroup;
-			children = (
-				FA03546A1731F3A700284828 /* simplexnoise1234.cpp */,
-				FA03546B1731F3A700284828 /* simplexnoise1234.h */,
-			);
-			path = noise1234;
-			sourceTree = "<group>";
-		};
-		FA08F5AC16C751BA00F007B5 /* Resources */ = {
-			isa = PBXGroup;
-			children = (
-				FA08F5AE16C7525600F007B5 /* Info-Framework.plist */,
-			);
-			name = Resources;
-			sourceTree = "<group>";
-		};
-		FA34E7CA174B512200E04D3F /* system */ = {
-			isa = PBXGroup;
-			children = (
-				FA34E7CF174B514F00E04D3F /* sdl */,
-				FA34E7CB174B513F00E04D3F /* System.cpp */,
-				FA34E7CC174B513F00E04D3F /* System.h */,
-				FA34E7D4174B55AF00E04D3F /* wrap_System.cpp */,
-				FA34E7D5174B55AF00E04D3F /* wrap_System.h */,
-			);
-			path = system;
-			sourceTree = "<group>";
-		};
-		FA34E7CF174B514F00E04D3F /* sdl */ = {
-			isa = PBXGroup;
-			children = (
-				FA34E7D0174B515D00E04D3F /* System.cpp */,
-				FA34E7D1174B515D00E04D3F /* System.h */,
-			);
-			path = sdl;
-			sourceTree = "<group>";
-		};
-		FA45F76E187A0F3600D99ED8 /* touch */ = {
-			isa = PBXGroup;
-			children = (
-				FA45F76F187A0F3600D99ED8 /* sdl */,
-				FA45F772187A0F3600D99ED8 /* Touch.h */,
-				FA45F773187A0F3600D99ED8 /* wrap_Touch.cpp */,
-				FA45F774187A0F3600D99ED8 /* wrap_Touch.h */,
-			);
-			path = touch;
-			sourceTree = "<group>";
-		};
-		FA45F76F187A0F3600D99ED8 /* sdl */ = {
-			isa = PBXGroup;
-			children = (
-				FA45F770187A0F3600D99ED8 /* Touch.cpp */,
-				FA45F771187A0F3600D99ED8 /* Touch.h */,
-			);
-			path = sdl;
-			sourceTree = "<group>";
-		};
-		FA4DAE6D1941411D009F0A3E /* lodepng */ = {
-			isa = PBXGroup;
-			children = (
-				FA4DAE6E1941411D009F0A3E /* lodepng.cpp */,
-				FA4DAE6F1941411D009F0A3E /* lodepng.h */,
-			);
-			path = lodepng;
-			sourceTree = "<group>";
-		};
-		FA4DAE701941411D009F0A3E /* stb */ = {
-			isa = PBXGroup;
-			children = (
-				FA4DAE721941411D009F0A3E /* stb_image.h */,
-			);
-			path = stb;
-			sourceTree = "<group>";
-		};
-		FA577A6616C7199700860150 /* Frameworks */ = {
-			isa = PBXGroup;
-			children = (
-				FA4DAE7B19414281009F0A3E /* libz.dylib */,
-				FA577A7916C71A1700860150 /* Cocoa.framework */,
-				FAA627CD18E7E1560080752D /* CoreServices.framework */,
-				FA577A6716C719D900860150 /* FreeType.framework */,
-				FA577A6916C719DE00860150 /* IL.framework */,
-				FA577A8216C71A5300860150 /* libmodplug.framework */,
-				FA577A6D16C719EA00860150 /* Lua.framework */,
-				FA577A6F16C719F000860150 /* mpg123.framework */,
-				FA577A7116C719F400860150 /* Ogg.framework */,
-				FAAFF04316CB11C700CCDE45 /* OpenAL-Soft.framework */,
-				FA577A7C16C71A2600860150 /* OpenGL.framework */,
-				FA577A7316C719F900860150 /* physfs.framework */,
-				FA9B4A0716E1578300074F42 /* SDL2.framework */,
-				FA577A7716C71A0800860150 /* Vorbis.framework */,
-			);
-			name = Frameworks;
-			sourceTree = "<group>";
-		};
-		FA5FDC5E1788D548002F0ED2 /* enet */ = {
-			isa = PBXGroup;
-			children = (
-				FA5FDC5F1788D548002F0ED2 /* enet.cpp */,
-				FA5FDC601788D548002F0ED2 /* libenet */,
-				FA5FDC781788D548002F0ED2 /* lua-enet.h */,
-			);
-			path = enet;
-			sourceTree = "<group>";
-		};
-		FA5FDC601788D548002F0ED2 /* libenet */ = {
-			isa = PBXGroup;
-			children = (
-				FA5FDC611788D548002F0ED2 /* callbacks.c */,
-				FA5FDC631788D548002F0ED2 /* compress.c */,
-				FA5FDC641788D548002F0ED2 /* host.c */,
-				FA5FDC651788D548002F0ED2 /* include */,
-				FA5FDC711788D548002F0ED2 /* list.c */,
-				FA5FDC721788D548002F0ED2 /* packet.c */,
-				FA5FDC731788D548002F0ED2 /* peer.c */,
-				FA5FDC741788D548002F0ED2 /* protocol.c */,
-				FA5FDC761788D548002F0ED2 /* unix.c */,
-				FA5FDC771788D548002F0ED2 /* win32.c */,
-			);
-			path = libenet;
-			sourceTree = "<group>";
-		};
-		FA5FDC651788D548002F0ED2 /* include */ = {
-			isa = PBXGroup;
-			children = (
-				FA5FDC661788D548002F0ED2 /* enet */,
-			);
-			path = include;
-			sourceTree = "<group>";
-		};
-		FA5FDC661788D548002F0ED2 /* enet */ = {
-			isa = PBXGroup;
-			children = (
-				FA5FDC671788D548002F0ED2 /* callbacks.h */,
-				FA5FDC681788D548002F0ED2 /* enet.h */,
-				FA5FDC691788D548002F0ED2 /* list.h */,
-				FA5FDC6A1788D548002F0ED2 /* protocol.h */,
-				FA5FDC6B1788D548002F0ED2 /* time.h */,
-				FA5FDC6C1788D548002F0ED2 /* types.h */,
-				FA5FDC6D1788D548002F0ED2 /* unix.h */,
-				FA5FDC6E1788D548002F0ED2 /* utility.h */,
-				FA5FDC6F1788D548002F0ED2 /* win32.h */,
-			);
-			path = enet;
-			sourceTree = "<group>";
-		};
-		FA7C937116DCC6C2006F2BEE /* math */ = {
-			isa = PBXGroup;
-			children = (
-				FAC570FC17402D1100D147E4 /* BezierCurve.cpp */,
-				FAC570FD17402D1100D147E4 /* BezierCurve.h */,
-				FA5454C016F1310000D30303 /* MathModule.cpp */,
-				FA5454C116F1310000D30303 /* MathModule.h */,
-				FA636D88171B70920065623F /* RandomGenerator.cpp */,
-				FA636D89171B70920065623F /* RandomGenerator.h */,
-				FAC570FE17402D1100D147E4 /* wrap_BezierCurve.cpp */,
-				FAC570FF17402D1100D147E4 /* wrap_BezierCurve.h */,
-				FA7C937516DCC6C2006F2BEE /* wrap_Math.cpp */,
-				FA7C937616DCC6C2006F2BEE /* wrap_Math.h */,
-				FA636D8C171B72A70065623F /* wrap_RandomGenerator.cpp */,
-				FA636D8D171B72A70065623F /* wrap_RandomGenerator.h */,
-			);
-			path = math;
-			sourceTree = "<group>";
-		};
-		FA9A1008182A0D5200106F9F /* glad */ = {
-			isa = PBXGroup;
-			children = (
-				FA9A1009182A0D5200106F9F /* glad.cpp */,
-				FA9A100A182A0D5200106F9F /* glad.hpp */,
-				FA9A100B182A0D5200106F9F /* gladfuncs.hpp */,
-			);
-			path = glad;
-			sourceTree = "<group>";
-		};
-		FAE010D7170DDE99006F29D0 /* ddsparse */ = {
-			isa = PBXGroup;
-			children = (
-				FAE010D8170DDE99006F29D0 /* ddsinfo.h */,
-				FAE010D9170DDE99006F29D0 /* ddsparse.cpp */,
-				FAE010DA170DDE99006F29D0 /* ddsparse.h */,
-			);
-			path = ddsparse;
-			sourceTree = "<group>";
-		};
-		FAF272B016E3D46400CC193A /* sdl */ = {
-			isa = PBXGroup;
-			children = (
-				FAF272B116E3D46400CC193A /* Thread.cpp */,
-				FAF272B216E3D46400CC193A /* Thread.h */,
-				FAF272B316E3D46400CC193A /* threads.cpp */,
-				FAF272B416E3D46400CC193A /* threads.h */,
-			);
-			path = sdl;
-			sourceTree = "<group>";
-		};
-		FAF6704318184FF800DBDEEA /* Wuff */ = {
-			isa = PBXGroup;
-			children = (
-				FAF6704418184FF800DBDEEA /* wuff.c */,
-				FAF6704518184FF800DBDEEA /* wuff.h */,
-				FAF6704618184FF800DBDEEA /* wuff_config.h */,
-				FAF6704718184FF800DBDEEA /* wuff_convert.c */,
-				FAF6704818184FF800DBDEEA /* wuff_convert.h */,
-				FAF6704918184FF800DBDEEA /* wuff_internal.c */,
-				FAF6704A18184FF800DBDEEA /* wuff_internal.h */,
-				FAF6704B18184FF800DBDEEA /* wuff_memory.c */,
-			);
-			path = Wuff;
-			sourceTree = "<group>";
-		};
-/* End PBXGroup section */
-
-/* Begin PBXHeadersBuildPhase section */
-		FA577AAC16C7507900860150 /* Headers */ = {
-			isa = PBXHeadersBuildPhase;
-			buildActionMask = 2147483647;
-			files = (
-				FA7C937B16DCC6C2006F2BEE /* wrap_Math.h in Headers */,
-				FAF272A516E3D44400CC193A /* Channel.h in Headers */,
-				FAF272A716E3D44400CC193A /* LuaThread.h in Headers */,
-				FAF4377017F4AC530074F9E2 /* Mesh.h in Headers */,
-				FAF272A916E3D44400CC193A /* ThreadModule.h in Headers */,
-				FA4DAE6C1941410D009F0A3E /* STBHandler.h in Headers */,
-				FAF6705018184FF800DBDEEA /* wuff_convert.h in Headers */,
-				FA9A100D182A0D5200106F9F /* glad.hpp in Headers */,
-				FAF272AB16E3D44400CC193A /* wrap_Channel.h in Headers */,
-				FA0A4BF9182E260200E1E4D2 /* wrap_MotorJoint.h in Headers */,
-				FAF272AD16E3D44400CC193A /* wrap_LuaThread.h in Headers */,
-				FAF272AF16E3D44400CC193A /* wrap_ThreadModule.h in Headers */,
-				FAF272B616E3D46400CC193A /* Thread.h in Headers */,
-				FAF272B816E3D46400CC193A /* threads.h in Headers */,
-				FA5454C316F1310000D30303 /* MathModule.h in Headers */,
-				FA4DAE7A1941419A009F0A3E /* JPEGHandler.h in Headers */,
-				FAAC6B03170A373B008A61C5 /* CompressedData.h in Headers */,
-				FAE010DB170DDE99006F29D0 /* ddsinfo.h in Headers */,
-				FAE010DD170DDE99006F29D0 /* ddsparse.h in Headers */,
-				FAE010E1170DE25E006F29D0 /* ddsHandler.h in Headers */,
-				FAE010E5170DF75C006F29D0 /* wrap_CompressedData.h in Headers */,
-				FA4DAE761941411D009F0A3E /* stb_image.h in Headers */,
-				FAF6704E18184FF800DBDEEA /* wuff_config.h in Headers */,
-				FA0CDE3D1710F9A50056E8D7 /* FormatHandler.h in Headers */,
-				FA7AA59317F6AC1F00704BE2 /* wrap_Mesh.h in Headers */,
-				FA45F777187A0F3600D99ED8 /* Touch.h in Headers */,
-				FA45F779187A0F3600D99ED8 /* wrap_Touch.h in Headers */,
-				FA01BE1F1878E35B00640047 /* wrap_Texture.h in Headers */,
-				FAE404411927F22C00814481 /* KTXHandler.h in Headers */,
-				FAEC808B1710FEA60057279A /* ImageData.h in Headers */,
-				FAEC808F1711E76C0057279A /* CompressedData.h in Headers */,
-				FA636D8B171B70920065623F /* RandomGenerator.h in Headers */,
-				FA636D8F171B72A70065623F /* wrap_RandomGenerator.h in Headers */,
-				FAC86E641724552C00EED715 /* wrap_Quad.h in Headers */,
-				FAC86E6C1724555D00EED715 /* Quad.h in Headers */,
-				FA03546D1731F3A700284828 /* simplexnoise1234.h in Headers */,
-				FA3D9E0E16E68DE600CA6630 /* Cursor.h in Headers */,
-				FA3D9E1216E68EAE00CA6630 /* Cursor.h in Headers */,
-				FA3D9E1616E6D41100CA6630 /* wrap_Cursor.h in Headers */,
-				FA9A100E182A0D5200106F9F /* gladfuncs.hpp in Headers */,
-				FA9FC0B1173D6E3E005027FF /* wrap_Window.h in Headers */,
-				FA61FD5E1926CFCE003AE9FB /* CompressedFormatHandler.h in Headers */,
-				FAB007901740C12D00A9664D /* Joystick.h in Headers */,
-				FAF6705218184FF800DBDEEA /* wuff_internal.h in Headers */,
-				FAB007941740C28900A9664D /* Joystick.h in Headers */,
-				FA45F776187A0F3600D99ED8 /* Touch.h in Headers */,
-				FAB007981740C87D00A9664D /* wrap_Joystick.h in Headers */,
-				FA52E447192AAADE0064D2FF /* PKMHandler.h in Headers */,
-				FA9B492A1875EFB900201DA9 /* Texture.h in Headers */,
-				FAC5710117402D1100D147E4 /* BezierCurve.h in Headers */,
-				FAC5710317402D1100D147E4 /* wrap_BezierCurve.h in Headers */,
-				FA5FDC7E1788D548002F0ED2 /* callbacks.h in Headers */,
-				FA5FDC7F1788D548002F0ED2 /* enet.h in Headers */,
-				FA5FDC801788D548002F0ED2 /* list.h in Headers */,
-				FA5FDC811788D548002F0ED2 /* protocol.h in Headers */,
-				FA5FDC821788D548002F0ED2 /* time.h in Headers */,
-				FA5FDC831788D548002F0ED2 /* types.h in Headers */,
-				FA0A4BF5182E1AD600E1E4D2 /* MotorJoint.h in Headers */,
-				FA5FDC841788D548002F0ED2 /* unix.h in Headers */,
-				FA0A4BF1182E0C2800E1E4D2 /* b2MotorJoint.h in Headers */,
-				FA5FDC851788D548002F0ED2 /* utility.h in Headers */,
-				FAF6704D18184FF800DBDEEA /* wuff.h in Headers */,
-				FA4DAE6A1941410D009F0A3E /* PNGHandler.h in Headers */,
-				FA5FDC861788D548002F0ED2 /* win32.h in Headers */,
-				FA5FDC8F1788D548002F0ED2 /* lua-enet.h in Headers */,
-				FA4DAE741941411D009F0A3E /* lodepng.h in Headers */,
-				FA7175AA178E8418001FE7FE /* lua.h in Headers */,
-				FA34E7CE174B513F00E04D3F /* System.h in Headers */,
-				FA34E7D3174B515D00E04D3F /* System.h in Headers */,
-				FAF670571818501300DBDEEA /* WaveDecoder.h in Headers */,
-				FA1EF7C51799FEB200FF380C /* wrap_System.h in Headers */,
-				FA61FD601926CFCE003AE9FB /* PVRHandler.h in Headers */,
-				FA435EA417B36E9C004C3F22 /* Polyline.h in Headers */,
-			);
-			runOnlyForDeploymentPostprocessing = 0;
-		};
-/* End PBXHeadersBuildPhase section */
-
-/* Begin PBXNativeTarget section */
-		FA577AAE16C7507900860150 /* Framework */ = {
-			isa = PBXNativeTarget;
-			buildConfigurationList = FA577ABF16C7507900860150 /* Build configuration list for PBXNativeTarget "Framework" */;
-			buildPhases = (
-				FA577AAA16C7507900860150 /* Sources */,
-				FA577AAB16C7507900860150 /* Frameworks */,
-				FA577AAC16C7507900860150 /* Headers */,
-				FA577AAD16C7507900860150 /* Resources */,
-			);
-			buildRules = (
-			);
-			dependencies = (
-			);
-			name = Framework;
-			productName = love;
-			productReference = FA577AAF16C7507900860150 /* love.framework */;
-			productType = "com.apple.product-type.framework";
-		};
-/* End PBXNativeTarget section */
-
-/* Begin PBXProject section */
-		08FB7793FE84155DC02AAC07 /* Project object */ = {
-			isa = PBXProject;
-			attributes = {
-				LastUpgradeCheck = 0510;
-			};
-			buildConfigurationList = 1DEB928908733DD80010E9CD /* Build configuration list for PBXProject "love-framework" */;
-			compatibilityVersion = "Xcode 3.2";
-			developmentRegion = English;
-			hasScannedForEncodings = 1;
-			knownRegions = (
-				en,
-			);
-			mainGroup = 54067CFB7D564E5764FA17DC /* love */;
-			projectDirPath = "";
-			projectRoot = "";
-			targets = (
-				FA577AAE16C7507900860150 /* Framework */,
-			);
-		};
-/* End PBXProject section */
-
-/* Begin PBXResourcesBuildPhase section */
-		FA577AAD16C7507900860150 /* Resources */ = {
-			isa = PBXResourcesBuildPhase;
-			buildActionMask = 2147483647;
-			files = (
-			);
-			runOnlyForDeploymentPostprocessing = 0;
-		};
-/* End PBXResourcesBuildPhase section */
-
-/* Begin PBXSourcesBuildPhase section */
-		FA577AAA16C7507900860150 /* Sources */ = {
-			isa = PBXSourcesBuildPhase;
-			buildActionMask = 2147483647;
-			files = (
-				FA08F5B016C752F900F007B5 /* Source.cpp in Sources */,
-				FA08F5B116C752F900F007B5 /* wrap_Audio.cpp in Sources */,
-				FA08F5B216C752F900F007B5 /* wrap_Source.cpp in Sources */,
-				FA08F5B316C752FC00F007B5 /* Audio.cpp in Sources */,
-				FA08F5B416C7530100F007B5 /* Audio.cpp in Sources */,
-				FA08F5B516C7530100F007B5 /* Source.cpp in Sources */,
-				FAF6705118184FF800DBDEEA /* wuff_internal.c in Sources */,
-				FA08F5B616C7530A00F007B5 /* Audio.cpp in Sources */,
-				FA4DAE791941419A009F0A3E /* JPEGHandler.cpp in Sources */,
-				FA08F5B716C7530A00F007B5 /* Pool.cpp in Sources */,
-				FA08F5B816C7530A00F007B5 /* Source.cpp in Sources */,
-				FA08F5B916C7532A00F007B5 /* b64.cpp in Sources */,
-				FA08F5BA16C7532A00F007B5 /* delay.cpp in Sources */,
-				FA08F5BB16C7532A00F007B5 /* Exception.cpp in Sources */,
-				FA08F5BD16C7532A00F007B5 /* Matrix.cpp in Sources */,
-				FA08F5BE16C7532A00F007B5 /* Memoizer.cpp in Sources */,
-				FA08F5BF16C7532A00F007B5 /* Module.cpp in Sources */,
-				FA08F5C016C7532A00F007B5 /* Object.cpp in Sources */,
-				FAF670561818501300DBDEEA /* WaveDecoder.cpp in Sources */,
-				FA08F5C116C7532A00F007B5 /* Reference.cpp in Sources */,
-				FA08F5C216C7532A00F007B5 /* runtime.cpp in Sources */,
-				FA08F5C316C7532A00F007B5 /* utf8.cpp in Sources */,
-				FA08F5C416C7532A00F007B5 /* Variant.cpp in Sources */,
-				FA08F5C516C7532A00F007B5 /* Vector.cpp in Sources */,
-				FA08F5C616C7532A00F007B5 /* wrap_Data.cpp in Sources */,
-				FA08F5C716C7533C00F007B5 /* b2BroadPhase.cpp in Sources */,
-				FA08F5C816C7533C00F007B5 /* b2CollideCircle.cpp in Sources */,
-				FA08F5C916C7533C00F007B5 /* b2CollideEdge.cpp in Sources */,
-				FA08F5CA16C7533C00F007B5 /* b2CollidePolygon.cpp in Sources */,
-				FA08F5CB16C7533C00F007B5 /* b2Collision.cpp in Sources */,
-				FA08F5CC16C7533C00F007B5 /* b2Distance.cpp in Sources */,
-				FA08F5CD16C7533C00F007B5 /* b2DynamicTree.cpp in Sources */,
-				FA08F5CE16C7533C00F007B5 /* b2TimeOfImpact.cpp in Sources */,
-				FA61FD5F1926CFCE003AE9FB /* PVRHandler.cpp in Sources */,
-				FA08F5CF16C7534400F007B5 /* b2ChainShape.cpp in Sources */,
-				FA08F5D016C7534400F007B5 /* b2CircleShape.cpp in Sources */,
-				FA08F5D116C7534400F007B5 /* b2EdgeShape.cpp in Sources */,
-				FA08F5D216C7534400F007B5 /* b2PolygonShape.cpp in Sources */,
-				FA08F5D316C7535000F007B5 /* b2BlockAllocator.cpp in Sources */,
-				FA08F5D416C7535000F007B5 /* b2Draw.cpp in Sources */,
-				FA0A4BF4182E1AD600E1E4D2 /* MotorJoint.cpp in Sources */,
-				FA08F5D516C7535000F007B5 /* b2Math.cpp in Sources */,
-				FA08F5D616C7535000F007B5 /* b2Settings.cpp in Sources */,
-				FA08F5D716C7535000F007B5 /* b2StackAllocator.cpp in Sources */,
-				FA08F5D816C7535000F007B5 /* b2Timer.cpp in Sources */,
-				FA08F5D916C7536C00F007B5 /* b2Body.cpp in Sources */,
-				FA08F5DA16C7536C00F007B5 /* b2ContactManager.cpp in Sources */,
-				FA08F5DB16C7536C00F007B5 /* b2Fixture.cpp in Sources */,
-				FA08F5DC16C7536C00F007B5 /* b2Island.cpp in Sources */,
-				FA08F5DD16C7536C00F007B5 /* b2World.cpp in Sources */,
-				FA08F5DE16C7536C00F007B5 /* b2WorldCallbacks.cpp in Sources */,
-				FA08F5DF16C7537B00F007B5 /* b2ChainAndCircleContact.cpp in Sources */,
-				FA08F5E016C7537B00F007B5 /* b2ChainAndPolygonContact.cpp in Sources */,
-				FA08F5E116C7537B00F007B5 /* b2CircleContact.cpp in Sources */,
-				FA08F5E216C7537B00F007B5 /* b2Contact.cpp in Sources */,
-				FA08F5E316C7537B00F007B5 /* b2ContactSolver.cpp in Sources */,
-				FA08F5E416C7537B00F007B5 /* b2EdgeAndCircleContact.cpp in Sources */,
-				FA08F5E516C7537B00F007B5 /* b2EdgeAndPolygonContact.cpp in Sources */,
-				FA08F5E616C7537B00F007B5 /* b2PolygonAndCircleContact.cpp in Sources */,
-				FA08F5E716C7537B00F007B5 /* b2PolygonContact.cpp in Sources */,
-				FA08F5E816C7538F00F007B5 /* b2DistanceJoint.cpp in Sources */,
-				FA08F5E916C7538F00F007B5 /* b2FrictionJoint.cpp in Sources */,
-				FA08F5EA16C7538F00F007B5 /* b2GearJoint.cpp in Sources */,
-				FA08F5EB16C7538F00F007B5 /* b2Joint.cpp in Sources */,
-				FA08F5EC16C7538F00F007B5 /* b2MouseJoint.cpp in Sources */,
-				FA08F5ED16C7538F00F007B5 /* b2PrismaticJoint.cpp in Sources */,
-				FAF6705318184FF800DBDEEA /* wuff_memory.c in Sources */,
-				FA08F5EE16C7538F00F007B5 /* b2PulleyJoint.cpp in Sources */,
-				FA08F5EF16C7538F00F007B5 /* b2RevoluteJoint.cpp in Sources */,
-				FA08F5F016C7538F00F007B5 /* b2RopeJoint.cpp in Sources */,
-				FA08F5F116C7538F00F007B5 /* b2WeldJoint.cpp in Sources */,
-				FA45F775187A0F3600D99ED8 /* Touch.cpp in Sources */,
-				FA08F5F216C7538F00F007B5 /* b2WheelJoint.cpp in Sources */,
-				FA08F5F316C7539B00F007B5 /* b2Rope.cpp in Sources */,
-				FA08F5F416C753A400F007B5 /* luasocket.cpp in Sources */,
-				FA08F5F516C753B800F007B5 /* auxiliar.c in Sources */,
-				FA08F5F616C753B800F007B5 /* buffer.c in Sources */,
-				FAF6704F18184FF800DBDEEA /* wuff_convert.c in Sources */,
-				FA08F5F716C753B800F007B5 /* except.c in Sources */,
-				FA08F5F816C753B800F007B5 /* inet.c in Sources */,
-				FA08F5F916C753B800F007B5 /* io.c in Sources */,
-				FA08F5FA16C753B800F007B5 /* luasocket.c in Sources */,
-				FA08F5FB16C753B800F007B5 /* mime.c in Sources */,
-				FA08F5FC16C753B800F007B5 /* options.c in Sources */,
-				FA08F5FD16C753B800F007B5 /* select.c in Sources */,
-				FA08F5FE16C753B800F007B5 /* tcp.c in Sources */,
-				FA08F5FF16C753B800F007B5 /* timeout.c in Sources */,
-				FA08F60016C753B800F007B5 /* udp.c in Sources */,
-				FA08F60116C753B800F007B5 /* unix.c in Sources */,
-				FA08F60216C753B800F007B5 /* usocket.c in Sources */,
-				FA08F60316C753CE00F007B5 /* Event.cpp in Sources */,
-				FA08F60416C753CE00F007B5 /* Event.cpp in Sources */,
-				FA08F60516C753CE00F007B5 /* wrap_Event.cpp in Sources */,
-				FA08F60616C753DB00F007B5 /* File.cpp in Sources */,
-				FA08F60716C753DB00F007B5 /* FileData.cpp in Sources */,
-				FA08F60816C753DB00F007B5 /* File.cpp in Sources */,
-				FA08F60916C753DB00F007B5 /* Filesystem.cpp in Sources */,
-				FA08F60A16C753DB00F007B5 /* wrap_File.cpp in Sources */,
-				FA08F60B16C753DB00F007B5 /* wrap_FileData.cpp in Sources */,
-				FA08F60C16C753DB00F007B5 /* wrap_Filesystem.cpp in Sources */,
-				FA08F60D16C753E700F007B5 /* Font.cpp in Sources */,
-				FA08F60E16C753E700F007B5 /* TrueTypeRasterizer.cpp in Sources */,
-				FA08F60F16C753E700F007B5 /* wrap_Font.cpp in Sources */,
-				FA08F61016C753E700F007B5 /* GlyphData.cpp in Sources */,
-				FA08F61116C753E700F007B5 /* ImageRasterizer.cpp in Sources */,
-				FA08F61216C753E700F007B5 /* Rasterizer.cpp in Sources */,
-				FA08F61316C753E700F007B5 /* wrap_GlyphData.cpp in Sources */,
-				FA08F61416C753E700F007B5 /* wrap_Rasterizer.cpp in Sources */,
-				FA08F61716C753F600F007B5 /* Graphics.cpp in Sources */,
-				FA45F778187A0F3600D99ED8 /* wrap_Touch.cpp in Sources */,
-				FA08F61816C753F600F007B5 /* Texture.cpp in Sources */,
-				FA08F61A16C753F600F007B5 /* Volatile.cpp in Sources */,
-				FA08F61B16C7541400F007B5 /* Canvas.cpp in Sources */,
-				FA08F61C16C7541400F007B5 /* Font.cpp in Sources */,
-				FA08F61E16C7541400F007B5 /* Graphics.cpp in Sources */,
-				FAF4376F17F4AC530074F9E2 /* Mesh.cpp in Sources */,
-				FA08F61F16C7541400F007B5 /* Image.cpp in Sources */,
-				FA08F62016C7541400F007B5 /* OpenGL.cpp in Sources */,
-				FA08F62116C7541400F007B5 /* ParticleSystem.cpp in Sources */,
-				FA08F62316C7541400F007B5 /* Shader.cpp in Sources */,
-				FA08F62416C7541400F007B5 /* SpriteBatch.cpp in Sources */,
-				FA08F62516C7541400F007B5 /* VertexBuffer.cpp in Sources */,
-				FA08F62616C7541400F007B5 /* wrap_Canvas.cpp in Sources */,
-				FAE404401927F22C00814481 /* KTXHandler.cpp in Sources */,
-				FA08F62716C7541400F007B5 /* wrap_Font.cpp in Sources */,
-				FA08F62816C7541400F007B5 /* wrap_Graphics.cpp in Sources */,
-				FA08F62916C7541400F007B5 /* wrap_Image.cpp in Sources */,
-				FA08F62A16C7541400F007B5 /* wrap_ParticleSystem.cpp in Sources */,
-				FA08F62C16C7541400F007B5 /* wrap_Shader.cpp in Sources */,
-				FA0A4BFA182E26F500E1E4D2 /* wrap_MotorJoint.cpp in Sources */,
-				FA08F62D16C7541400F007B5 /* wrap_SpriteBatch.cpp in Sources */,
-				FA08F62E16C7542600F007B5 /* ImageData.cpp in Sources */,
-				FA08F62F16C7542600F007B5 /* Image.cpp in Sources */,
-				FA08F63016C7542600F007B5 /* DevilHandler.cpp in Sources */,
-				FA08F63116C7542600F007B5 /* wrap_Image.cpp in Sources */,
-				FA08F63216C7542600F007B5 /* wrap_ImageData.cpp in Sources */,
-				FA08F63416C7542D00F007B5 /* JoystickModule.cpp in Sources */,
-				FA7AA59217F6AC1F00704BE2 /* wrap_Mesh.cpp in Sources */,
-				FA08F63516C7542D00F007B5 /* wrap_JoystickModule.cpp in Sources */,
-				FA08F63616C7543400F007B5 /* Keyboard.cpp in Sources */,
-				FA08F63716C7543400F007B5 /* Keyboard.cpp in Sources */,
-				FA08F63816C7543400F007B5 /* wrap_Keyboard.cpp in Sources */,
-				FA08F63916C7543A00F007B5 /* love.cpp in Sources */,
-				FA08F63A16C7544300F007B5 /* Mouse.cpp in Sources */,
-				FA08F63B16C7544300F007B5 /* Mouse.cpp in Sources */,
-				FA08F63C16C7544300F007B5 /* wrap_Mouse.cpp in Sources */,
-				FA08F63D16C7544B00F007B5 /* Body.cpp in Sources */,
-				FA08F63E16C7544B00F007B5 /* Joint.cpp in Sources */,
-				FA08F63F16C7544B00F007B5 /* Shape.cpp in Sources */,
-				FA08F64016C7546400F007B5 /* Body.cpp in Sources */,
-				FA08F64116C7546400F007B5 /* ChainShape.cpp in Sources */,
-				FA08F64216C7546400F007B5 /* CircleShape.cpp in Sources */,
-				FA08F64316C7546400F007B5 /* Contact.cpp in Sources */,
-				FA08F64416C7546400F007B5 /* DistanceJoint.cpp in Sources */,
-				FA08F64516C7546400F007B5 /* EdgeShape.cpp in Sources */,
-				FA08F64616C7546400F007B5 /* Fixture.cpp in Sources */,
-				FA08F64716C7546400F007B5 /* FrictionJoint.cpp in Sources */,
-				FA08F64816C7546400F007B5 /* GearJoint.cpp in Sources */,
-				FA08F64916C7546400F007B5 /* Joint.cpp in Sources */,
-				FA08F64A16C7546400F007B5 /* MouseJoint.cpp in Sources */,
-				FA08F64B16C7546400F007B5 /* Physics.cpp in Sources */,
-				FA08F64C16C7546400F007B5 /* PolygonShape.cpp in Sources */,
-				FA08F64D16C7546400F007B5 /* PrismaticJoint.cpp in Sources */,
-				FA08F64E16C7546400F007B5 /* PulleyJoint.cpp in Sources */,
-				FA08F64F16C7546400F007B5 /* RevoluteJoint.cpp in Sources */,
-				FA08F65016C7546400F007B5 /* RopeJoint.cpp in Sources */,
-				FA08F65116C7546400F007B5 /* Shape.cpp in Sources */,
-				FA08F65216C7547300F007B5 /* WeldJoint.cpp in Sources */,
-				FAF6704C18184FF800DBDEEA /* wuff.c in Sources */,
-				FA08F65316C7547300F007B5 /* WheelJoint.cpp in Sources */,
-				FA08F65416C7547300F007B5 /* World.cpp in Sources */,
-				FA08F65516C7547300F007B5 /* wrap_Body.cpp in Sources */,
-				FA08F65616C7547300F007B5 /* wrap_ChainShape.cpp in Sources */,
-				FA08F65716C7547300F007B5 /* wrap_CircleShape.cpp in Sources */,
-				FA08F65816C7547300F007B5 /* wrap_Contact.cpp in Sources */,
-				FA08F65916C7547300F007B5 /* wrap_DistanceJoint.cpp in Sources */,
-				FA08F65A16C7547300F007B5 /* wrap_EdgeShape.cpp in Sources */,
-				FA08F65B16C7547300F007B5 /* wrap_Fixture.cpp in Sources */,
-				FA08F65C16C7547300F007B5 /* wrap_FrictionJoint.cpp in Sources */,
-				FA08F65D16C7548200F007B5 /* wrap_GearJoint.cpp in Sources */,
-				FA08F65E16C7548200F007B5 /* wrap_Joint.cpp in Sources */,
-				FA08F65F16C7548200F007B5 /* wrap_MouseJoint.cpp in Sources */,
-				FA08F66016C7548200F007B5 /* wrap_Physics.cpp in Sources */,
-				FA08F66116C7548200F007B5 /* wrap_PolygonShape.cpp in Sources */,
-				FA08F66216C7548200F007B5 /* wrap_PrismaticJoint.cpp in Sources */,
-				FA08F66316C7548200F007B5 /* wrap_PulleyJoint.cpp in Sources */,
-				FA08F66416C7548200F007B5 /* wrap_RevoluteJoint.cpp in Sources */,
-				FA08F66516C7548200F007B5 /* wrap_RopeJoint.cpp in Sources */,
-				FA08F66616C7548200F007B5 /* wrap_Shape.cpp in Sources */,
-				FA08F66716C7548200F007B5 /* wrap_WeldJoint.cpp in Sources */,
-				FA08F66816C7548200F007B5 /* wrap_WheelJoint.cpp in Sources */,
-				FA08F66916C7548200F007B5 /* wrap_World.cpp in Sources */,
-				FA08F66A16C7549200F007B5 /* Sound.cpp in Sources */,
-				FADD58DD18C30367005FC3BF /* FormatHandler.cpp in Sources */,
-				FA08F66B16C7549200F007B5 /* SoundData.cpp in Sources */,
-				FA08F66C16C7549200F007B5 /* wrap_Decoder.cpp in Sources */,
-				FA08F66D16C7549200F007B5 /* wrap_Sound.cpp in Sources */,
-				FA08F66E16C7549200F007B5 /* wrap_SoundData.cpp in Sources */,
-				FA08F66F16C754A100F007B5 /* Decoder.cpp in Sources */,
-				FA08F67016C754A100F007B5 /* FLACDecoder.cpp in Sources */,
-				FA08F67116C754A100F007B5 /* GmeDecoder.cpp in Sources */,
-				FA08F67216C754A100F007B5 /* ModPlugDecoder.cpp in Sources */,
-				FA08F67316C754A100F007B5 /* Mpg123Decoder.cpp in Sources */,
-				FA08F67416C754A100F007B5 /* Sound.cpp in Sources */,
-				FA08F67516C754A100F007B5 /* VorbisDecoder.cpp in Sources */,
-				FA4DAE691941410D009F0A3E /* PNGHandler.cpp in Sources */,
-				FA08F67716C754A900F007B5 /* threads.cpp in Sources */,
-				FA08F67916C754B100F007B5 /* Timer.cpp in Sources */,
-				FA08F67A16C754B100F007B5 /* wrap_Timer.cpp in Sources */,
-				FA08F67B16C754BA00F007B5 /* Window.cpp in Sources */,
-				FA08F67C16C754BA00F007B5 /* Window.cpp in Sources */,
-				FA7C937A16DCC6C2006F2BEE /* wrap_Math.cpp in Sources */,
-				FAF272A416E3D44400CC193A /* Channel.cpp in Sources */,
-				FAF272A616E3D44400CC193A /* LuaThread.cpp in Sources */,
-				FA0A4BF0182E0C2800E1E4D2 /* b2MotorJoint.cpp in Sources */,
-				FA4DAE6B1941410D009F0A3E /* STBHandler.cpp in Sources */,
-				FAF272A816E3D44400CC193A /* ThreadModule.cpp in Sources */,
-				FA52E446192AAADE0064D2FF /* PKMHandler.cpp in Sources */,
-				FA4DAE731941411D009F0A3E /* lodepng.cpp in Sources */,
-				FA01BE1E1878E35B00640047 /* wrap_Texture.cpp in Sources */,
-				FAF272AA16E3D44400CC193A /* wrap_Channel.cpp in Sources */,
-				FAF272AC16E3D44400CC193A /* wrap_LuaThread.cpp in Sources */,
-				FAF272AE16E3D44400CC193A /* wrap_ThreadModule.cpp in Sources */,
-				FAF272B516E3D46400CC193A /* Thread.cpp in Sources */,
-				FAF272B716E3D46400CC193A /* threads.cpp in Sources */,
-				FA5454C216F1310000D30303 /* MathModule.cpp in Sources */,
-				FAAC6B02170A373B008A61C5 /* CompressedData.cpp in Sources */,
-				FAE010DC170DDE99006F29D0 /* ddsparse.cpp in Sources */,
-				FAE010E0170DE25E006F29D0 /* ddsHandler.cpp in Sources */,
-				FAE010E4170DF75C006F29D0 /* wrap_CompressedData.cpp in Sources */,
-				FAEC808A1710FEA60057279A /* ImageData.cpp in Sources */,
-				FAEC808E1711E76C0057279A /* CompressedData.cpp in Sources */,
-				FA636D8A171B70920065623F /* RandomGenerator.cpp in Sources */,
-				FA636D8E171B72A70065623F /* wrap_RandomGenerator.cpp in Sources */,
-				FAC86E631724552C00EED715 /* wrap_Quad.cpp in Sources */,
-				FAC86E6B1724555D00EED715 /* Quad.cpp in Sources */,
-				FA03546C1731F3A700284828 /* simplexnoise1234.cpp in Sources */,
-				FA3D9E0D16E68DE600CA6630 /* Cursor.cpp in Sources */,
-				FA3D9E1116E68EAE00CA6630 /* Cursor.cpp in Sources */,
-				FA3D9E1516E6D41100CA6630 /* wrap_Cursor.cpp in Sources */,
-				FA9FC0B0173D6E3E005027FF /* wrap_Window.cpp in Sources */,
-				FAB0078F1740C12D00A9664D /* Joystick.cpp in Sources */,
-				FAB007931740C28900A9664D /* Joystick.cpp in Sources */,
-				FAB007971740C87D00A9664D /* wrap_Joystick.cpp in Sources */,
-				FAC5710017402D1100D147E4 /* BezierCurve.cpp in Sources */,
-				FAC5710217402D1100D147E4 /* wrap_BezierCurve.cpp in Sources */,
-				FA5FDC791788D548002F0ED2 /* enet.cpp in Sources */,
-				FA5FDC7A1788D548002F0ED2 /* callbacks.c in Sources */,
-				FA5FDC7C1788D548002F0ED2 /* compress.c in Sources */,
-				FA5FDC7D1788D548002F0ED2 /* host.c in Sources */,
-				FA5FDC881788D548002F0ED2 /* list.c in Sources */,
-				FA5FDC891788D548002F0ED2 /* packet.c in Sources */,
-				FA5FDC8A1788D548002F0ED2 /* peer.c in Sources */,
-				FA5FDC8B1788D548002F0ED2 /* protocol.c in Sources */,
-				FA5FDC8D1788D548002F0ED2 /* unix.c in Sources */,
-				FA5FDC8E1788D548002F0ED2 /* win32.c in Sources */,
-				FA34E7CD174B513F00E04D3F /* System.cpp in Sources */,
-				FA34E7D2174B515D00E04D3F /* System.cpp in Sources */,
-				FA1EF7C41799FEAC00FF380C /* wrap_System.cpp in Sources */,
-				FA435EA317B36E9C004C3F22 /* Polyline.cpp in Sources */,
-				FA9A100C182A0D5200106F9F /* glad.cpp in Sources */,
-			);
-			runOnlyForDeploymentPostprocessing = 0;
-		};
-/* End PBXSourcesBuildPhase section */
-
-/* Begin XCBuildConfiguration section */
-		10D5479E63C26BB35EB5482E /* Release */ = {
-			isa = XCBuildConfiguration;
-			buildSettings = {
-				ARCHS = "$(ARCHS_STANDARD_64_BIT)";
-				CLANG_CXX_LANGUAGE_STANDARD = "c++0x";
-				CLANG_ENABLE_MODULES = YES;
-				CLANG_WARN_BOOL_CONVERSION = YES;
-				CLANG_WARN_CONSTANT_CONVERSION = YES;
-				CLANG_WARN_ENUM_CONVERSION = YES;
-				CLANG_WARN_INT_CONVERSION = YES;
-				DEAD_CODE_STRIPPING = YES;
-				FRAMEWORK_SEARCH_PATHS = /Library/Frameworks;
-				GCC_OPTIMIZATION_LEVEL = 3;
-				GCC_PREPROCESSOR_DEFINITIONS = LOVE_MACOSX_USE_FRAMEWORKS;
-				GCC_WARN_ABOUT_MISSING_FIELD_INITIALIZERS = YES;
-				GCC_WARN_ABOUT_MISSING_NEWLINE = YES;
-				GCC_WARN_ABOUT_RETURN_TYPE = YES;
-				GCC_WARN_INITIALIZER_NOT_FULLY_BRACKETED = YES;
-				GCC_WARN_NON_VIRTUAL_DESTRUCTOR = YES;
-				GCC_WARN_SIGN_COMPARE = YES;
-				GCC_WARN_UNINITIALIZED_AUTOS = YES;
-				GCC_WARN_UNUSED_PARAMETER = YES;
-				GCC_WARN_UNUSED_VARIABLE = YES;
-				HEADER_SEARCH_PATHS = (
-					"\"$(SRCROOT)/../../src\"",
-					"\"$(SRCROOT)/../../src/libraries\"",
-					"\"$(SRCROOT)/../../src/modules\"",
-					"\"$(SRCROOT)/../../src/libraries/enet/libenet/include\"",
-					/Library/Frameworks/FreeType.framework/Headers,
-					/Library/Frameworks/Lua.framework/Headers,
-					/Library/Frameworks/SDL2.framework/Headers,
-				);
-				LD_RUNPATH_SEARCH_PATHS = "@rpath";
-				LIBRARY_SEARCH_PATHS = "";
-				MACOSX_DEPLOYMENT_TARGET = 10.6;
-				ONLY_ACTIVE_ARCH = NO;
-				USE_HEADERMAP = NO;
-				WARNING_CFLAGS = "-Wall";
-			};
-			name = Release;
-		};
-		64274E785071353E1A1D0D4B /* Debug */ = {
-			isa = XCBuildConfiguration;
-			buildSettings = {
-				ARCHS = "$(ARCHS_STANDARD_64_BIT)";
-				CLANG_CXX_LANGUAGE_STANDARD = "c++0x";
-				CLANG_ENABLE_MODULES = YES;
-				CLANG_WARN_BOOL_CONVERSION = YES;
-				CLANG_WARN_CONSTANT_CONVERSION = YES;
-				CLANG_WARN_ENUM_CONVERSION = YES;
-				CLANG_WARN_INT_CONVERSION = YES;
-				COPY_PHASE_STRIP = NO;
-				FRAMEWORK_SEARCH_PATHS = /Library/Frameworks;
-				GCC_OPTIMIZATION_LEVEL = 0;
-				GCC_PREPROCESSOR_DEFINITIONS = LOVE_MACOSX_USE_FRAMEWORKS;
-				GCC_WARN_ABOUT_MISSING_FIELD_INITIALIZERS = YES;
-				GCC_WARN_ABOUT_MISSING_NEWLINE = YES;
-				GCC_WARN_ABOUT_RETURN_TYPE = YES;
-				GCC_WARN_INITIALIZER_NOT_FULLY_BRACKETED = YES;
-				GCC_WARN_NON_VIRTUAL_DESTRUCTOR = YES;
-				GCC_WARN_SIGN_COMPARE = YES;
-				GCC_WARN_UNINITIALIZED_AUTOS = YES;
-				GCC_WARN_UNUSED_PARAMETER = YES;
-				GCC_WARN_UNUSED_VARIABLE = YES;
-				HEADER_SEARCH_PATHS = (
-					"\"$(SRCROOT)/../../src\"",
-					"\"$(SRCROOT)/../../src/libraries\"",
-					"\"$(SRCROOT)/../../src/modules\"",
-					"\"$(SRCROOT)/../../src/libraries/enet/libenet/include\"",
-					/Library/Frameworks/FreeType.framework/Headers,
-					/Library/Frameworks/Lua.framework/Headers,
-					/Library/Frameworks/SDL2.framework/Headers,
-				);
-				LD_RUNPATH_SEARCH_PATHS = "@rpath";
-				LIBRARY_SEARCH_PATHS = "";
-				MACOSX_DEPLOYMENT_TARGET = 10.6;
-				ONLY_ACTIVE_ARCH = YES;
-				USE_HEADERMAP = NO;
-				WARNING_CFLAGS = "-Wall";
-			};
-			name = Debug;
-		};
-		FA5326C4189719C700F7BBF4 /* Distribution */ = {
-			isa = XCBuildConfiguration;
-			buildSettings = {
-				ARCHS = "$(ARCHS_STANDARD_64_BIT)";
-				CLANG_CXX_LANGUAGE_STANDARD = "c++0x";
-				CLANG_ENABLE_MODULES = YES;
-				CLANG_WARN_BOOL_CONVERSION = YES;
-				CLANG_WARN_CONSTANT_CONVERSION = YES;
-				CLANG_WARN_ENUM_CONVERSION = YES;
-				CLANG_WARN_INT_CONVERSION = YES;
-				DEAD_CODE_STRIPPING = YES;
-				FRAMEWORK_SEARCH_PATHS = /Library/Frameworks;
-				GCC_OPTIMIZATION_LEVEL = 3;
-				GCC_PREPROCESSOR_DEFINITIONS = LOVE_MACOSX_USE_FRAMEWORKS;
-				GCC_WARN_ABOUT_MISSING_FIELD_INITIALIZERS = YES;
-				GCC_WARN_ABOUT_MISSING_NEWLINE = YES;
-				GCC_WARN_ABOUT_RETURN_TYPE = YES;
-				GCC_WARN_INITIALIZER_NOT_FULLY_BRACKETED = YES;
-				GCC_WARN_NON_VIRTUAL_DESTRUCTOR = YES;
-				GCC_WARN_SIGN_COMPARE = YES;
-				GCC_WARN_UNINITIALIZED_AUTOS = YES;
-				GCC_WARN_UNUSED_PARAMETER = YES;
-				GCC_WARN_UNUSED_VARIABLE = YES;
-				HEADER_SEARCH_PATHS = (
-					"\"$(SRCROOT)/../../src\"",
-					"\"$(SRCROOT)/../../src/libraries\"",
-					"\"$(SRCROOT)/../../src/modules\"",
-					"\"$(SRCROOT)/../../src/libraries/enet/libenet/include\"",
-					/Library/Frameworks/FreeType.framework/Headers,
-					/Library/Frameworks/Lua.framework/Headers,
-					/Library/Frameworks/SDL2.framework/Headers,
-				);
-				LD_RUNPATH_SEARCH_PATHS = "@rpath";
-				LIBRARY_SEARCH_PATHS = "";
-				LLVM_LTO = YES;
-				MACOSX_DEPLOYMENT_TARGET = 10.6;
-				ONLY_ACTIVE_ARCH = NO;
-				USE_HEADERMAP = NO;
-				WARNING_CFLAGS = "-Wall";
-			};
-			name = Distribution;
-		};
-		FA5326C5189719C700F7BBF4 /* Distribution */ = {
-			isa = XCBuildConfiguration;
-			buildSettings = {
-				ALWAYS_SEARCH_USER_PATHS = NO;
-				CLANG_ENABLE_MODULES = NO;
-				COMBINE_HIDPI_IMAGES = YES;
-				DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
-				DYLIB_COMPATIBILITY_VERSION = 9.0;
-				DYLIB_CURRENT_VERSION = 9.0;
-				FRAMEWORK_VERSION = A;
-				GCC_ENABLE_OBJC_EXCEPTIONS = YES;
-				INFOPLIST_FILE = "Info-Framework.plist";
-				LD_DYLIB_INSTALL_NAME = "@rpath/$(EXECUTABLE_PATH)";
-				OTHER_LDFLAGS = (
-					"-undefined",
-					dynamic_lookup,
-				);
-				PRODUCT_NAME = love;
-				SKIP_INSTALL = YES;
-				WRAPPER_EXTENSION = framework;
-			};
-			name = Distribution;
-		};
-		FA577AC016C7507900860150 /* Debug */ = {
-			isa = XCBuildConfiguration;
-			buildSettings = {
-				ALWAYS_SEARCH_USER_PATHS = NO;
-				CLANG_ENABLE_MODULES = NO;
-				COMBINE_HIDPI_IMAGES = YES;
-				DYLIB_COMPATIBILITY_VERSION = 9.0;
-				DYLIB_CURRENT_VERSION = 9.0;
-				FRAMEWORK_VERSION = A;
-				GCC_ENABLE_OBJC_EXCEPTIONS = YES;
-				GCC_PREPROCESSOR_DEFINITIONS = (
-					"DEBUG=1",
-					"$(inherited)",
-				);
-				INFOPLIST_FILE = "Info-Framework.plist";
-				LD_DYLIB_INSTALL_NAME = "@rpath/$(EXECUTABLE_PATH)";
-				OTHER_LDFLAGS = (
-					"-undefined",
-					dynamic_lookup,
-				);
-				PRODUCT_NAME = love;
-				SKIP_INSTALL = YES;
-				WRAPPER_EXTENSION = framework;
-			};
-			name = Debug;
-		};
-		FA577AC116C7507900860150 /* Release */ = {
-			isa = XCBuildConfiguration;
-			buildSettings = {
-				ALWAYS_SEARCH_USER_PATHS = NO;
-				CLANG_ENABLE_MODULES = NO;
-				COMBINE_HIDPI_IMAGES = YES;
-				DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
-				DYLIB_COMPATIBILITY_VERSION = 9.0;
-				DYLIB_CURRENT_VERSION = 9.0;
-				FRAMEWORK_VERSION = A;
-				GCC_ENABLE_OBJC_EXCEPTIONS = YES;
-				INFOPLIST_FILE = "Info-Framework.plist";
-				LD_DYLIB_INSTALL_NAME = "@rpath/$(EXECUTABLE_PATH)";
-				OTHER_LDFLAGS = (
-					"-undefined",
-					dynamic_lookup,
-				);
-				PRODUCT_NAME = love;
-				SKIP_INSTALL = YES;
-				WRAPPER_EXTENSION = framework;
-			};
-			name = Release;
-		};
-/* End XCBuildConfiguration section */
-
-/* Begin XCConfigurationList section */
-		1DEB928908733DD80010E9CD /* Build configuration list for PBXProject "love-framework" */ = {
-			isa = XCConfigurationList;
-			buildConfigurations = (
-				64274E785071353E1A1D0D4B /* Debug */,
-				10D5479E63C26BB35EB5482E /* Release */,
-				FA5326C4189719C700F7BBF4 /* Distribution */,
-			);
-			defaultConfigurationIsVisible = 0;
-			defaultConfigurationName = Debug;
-		};
-		FA577ABF16C7507900860150 /* Build configuration list for PBXNativeTarget "Framework" */ = {
-			isa = XCConfigurationList;
-			buildConfigurations = (
-				FA577AC016C7507900860150 /* Debug */,
-				FA577AC116C7507900860150 /* Release */,
-				FA5326C5189719C700F7BBF4 /* Distribution */,
-			);
-			defaultConfigurationIsVisible = 0;
-			defaultConfigurationName = Debug;
-		};
-/* End XCConfigurationList section */
-	};
-	rootObject = 08FB7793FE84155DC02AAC07 /* Project object */;
-}

BIN
love/src/jni/love/platform/macosx/love.xcodeproj/TemplateIcon.icns


+ 0 - 1052
love/src/jni/love/platform/macosx/love.xcodeproj/default.pbxuser

@@ -1,1052 +0,0 @@
-// !$*UTF8*$!
-{
-	29B97313FDCFA39411CA2CEA /* Project object */ = {
-		activeArchitecturePreference = ppc;
-		activeBuildConfigurationName = Release;
-		activeExecutable = A93E69C010420A88007D418B /* love */;
-		activeSDKPreference = macosx10.5;
-		activeTarget = 8D1107260486CEB800E47090 /* love */;
-		addToTargets = (
-			8D1107260486CEB800E47090 /* love */,
-		);
-		breakpoints = (
-		);
-		codeSenseManager = A93E69C410420AA6007D418B /* Code sense */;
-		executables = (
-			A93E69C010420A88007D418B /* love */,
-		);
-		perUserDictionary = {
-			PBXConfiguration.PBXFileTableDataSource3.PBXBookmarksDataSource = {
-				PBXFileTableDataSourceColumnSortingDirectionKey = "-1";
-				PBXFileTableDataSourceColumnSortingKey = PBXBookmarksDataSource_NameID;
-				PBXFileTableDataSourceColumnWidthsKey = (
-					200,
-					200,
-					150.58349609375,
-				);
-				PBXFileTableDataSourceColumnsKey = (
-					PBXBookmarksDataSource_LocationID,
-					PBXBookmarksDataSource_NameID,
-					PBXBookmarksDataSource_CommentsID,
-				);
-			};
-			PBXConfiguration.PBXFileTableDataSource3.PBXErrorsWarningsDataSource = {
-				PBXFileTableDataSourceColumnSortingDirectionKey = "-1";
-				PBXFileTableDataSourceColumnSortingKey = PBXErrorsWarningsDataSource_LocationID;
-				PBXFileTableDataSourceColumnWidthsKey = (
-					20,
-					300,
-					193.20849609375,
-				);
-				PBXFileTableDataSourceColumnsKey = (
-					PBXErrorsWarningsDataSource_TypeID,
-					PBXErrorsWarningsDataSource_MessageID,
-					PBXErrorsWarningsDataSource_LocationID,
-				);
-			};
-			PBXConfiguration.PBXFileTableDataSource3.PBXExecutablesDataSource = {
-				PBXFileTableDataSourceColumnSortingDirectionKey = "-1";
-				PBXFileTableDataSourceColumnSortingKey = PBXExecutablesDataSource_NameID;
-				PBXFileTableDataSourceColumnWidthsKey = (
-					22,
-					300,
-					191,
-				);
-				PBXFileTableDataSourceColumnsKey = (
-					PBXExecutablesDataSource_ActiveFlagID,
-					PBXExecutablesDataSource_NameID,
-					PBXExecutablesDataSource_CommentsID,
-				);
-			};
-			PBXConfiguration.PBXFileTableDataSource3.PBXFileTableDataSource = {
-				PBXFileTableDataSourceColumnSortingDirectionKey = "-1";
-				PBXFileTableDataSourceColumnSortingKey = PBXFileDataSource_FiletypeID;
-				PBXFileTableDataSourceColumnWidthsKey = (
-					20,
-					341,
-					20,
-					48,
-					43,
-					43,
-					20,
-				);
-				PBXFileTableDataSourceColumnsKey = (
-					PBXFileDataSource_FiletypeID,
-					PBXFileDataSource_Filename_ColumnID,
-					PBXFileDataSource_Built_ColumnID,
-					PBXFileDataSource_ObjectSize_ColumnID,
-					PBXFileDataSource_Errors_ColumnID,
-					PBXFileDataSource_Warnings_ColumnID,
-					PBXFileDataSource_Target_ColumnID,
-				);
-			};
-			PBXConfiguration.PBXTargetDataSource.PBXTargetDataSource = {
-				PBXFileTableDataSourceColumnSortingDirectionKey = "-1";
-				PBXFileTableDataSourceColumnSortingKey = PBXFileDataSource_Filename_ColumnID;
-				PBXFileTableDataSourceColumnWidthsKey = (
-					20,
-					301,
-					60,
-					20,
-					48,
-					43,
-					43,
-				);
-				PBXFileTableDataSourceColumnsKey = (
-					PBXFileDataSource_FiletypeID,
-					PBXFileDataSource_Filename_ColumnID,
-					PBXTargetDataSource_PrimaryAttribute,
-					PBXFileDataSource_Built_ColumnID,
-					PBXFileDataSource_ObjectSize_ColumnID,
-					PBXFileDataSource_Errors_ColumnID,
-					PBXFileDataSource_Warnings_ColumnID,
-				);
-			};
-			PBXPerProjectTemplateStateSaveDate = 272885036;
-			PBXWorkspaceStateSaveDate = 272885036;
-		};
-		perUserProjectItems = {
-			A9D8FBD21043E5320063561F /* PBXTextBookmark */ = A9D8FBD21043E5320063561F /* PBXTextBookmark */;
-			A9D8FBE01043E5AE0063561F /* PBXTextBookmark */ = A9D8FBE01043E5AE0063561F /* PBXTextBookmark */;
-			A9D8FBE21043E5AE0063561F /* PBXTextBookmark */ = A9D8FBE21043E5AE0063561F /* PBXTextBookmark */;
-			A9D8FBE71043E5C10063561F /* PBXTextBookmark */ = A9D8FBE71043E5C10063561F /* PBXTextBookmark */;
-			A9D8FBE81043E5C10063561F /* PBXTextBookmark */ = A9D8FBE81043E5C10063561F /* PBXTextBookmark */;
-			A9D8FBE91043E5C10063561F /* PBXTextBookmark */ = A9D8FBE91043E5C10063561F /* PBXTextBookmark */;
-			A9D8FBEA1043E5C10063561F /* PBXTextBookmark */ = A9D8FBEA1043E5C10063561F /* PBXTextBookmark */;
-			A9D8FBEB1043E5C10063561F /* PBXTextBookmark */ = A9D8FBEB1043E5C10063561F /* PBXTextBookmark */;
-			A9D8FBEC1043E5C10063561F /* PBXTextBookmark */ = A9D8FBEC1043E5C10063561F /* PBXTextBookmark */;
-			A9D8FBED1043E5C10063561F /* PBXTextBookmark */ = A9D8FBED1043E5C10063561F /* PBXTextBookmark */;
-			A9D8FBFC1043E7C20063561F /* PBXTextBookmark */ = A9D8FBFC1043E7C20063561F /* PBXTextBookmark */;
-			A9D8FC011043E8770063561F /* PBXTextBookmark */ = A9D8FC011043E8770063561F /* PBXTextBookmark */;
-			A9D8FC031043E94F0063561F /* PBXTextBookmark */ = A9D8FC031043E94F0063561F /* PBXTextBookmark */;
-			A9D8FC041043E94F0063561F /* PBXTextBookmark */ = A9D8FC041043E94F0063561F /* PBXTextBookmark */;
-			A9D8FC051043E94F0063561F /* PBXTextBookmark */ = A9D8FC051043E94F0063561F /* PBXTextBookmark */;
-			A9D8FC061043E94F0063561F /* PBXTextBookmark */ = A9D8FC061043E94F0063561F /* PBXTextBookmark */;
-			A9D8FC0D1043EBD30063561F /* PBXTextBookmark */ = A9D8FC0D1043EBD30063561F /* PBXTextBookmark */;
-			A9D8FC131043EC200063561F /* PBXTextBookmark */ = A9D8FC131043EC200063561F /* PBXTextBookmark */;
-			A9D8FC1E1043EFA00063561F /* PBXTextBookmark */ = A9D8FC1E1043EFA00063561F /* PBXTextBookmark */;
-			A9D8FC2010441C030063561F /* PBXTextBookmark */ = A9D8FC2010441C030063561F /* PBXTextBookmark */;
-			A9D8FC2110441C0F0063561F /* PBXTextBookmark */ = A9D8FC2110441C0F0063561F /* PBXTextBookmark */;
-			A9D8FC2410441DF10063561F /* PBXTextBookmark */ = A9D8FC2410441DF10063561F /* PBXTextBookmark */;
-			A9D8FC2510441E590063561F /* PBXTextBookmark */ = A9D8FC2510441E590063561F /* PBXTextBookmark */;
-			A9D8FC2610441E700063561F /* PBXTextBookmark */ = A9D8FC2610441E700063561F /* PBXTextBookmark */;
-			A9D8FC2710441E890063561F /* PBXTextBookmark */ = A9D8FC2710441E890063561F /* PBXTextBookmark */;
-			A9D8FC2910441E9B0063561F /* PBXTextBookmark */ = A9D8FC2910441E9B0063561F /* PBXTextBookmark */;
-			A9D8FC2F104423D80063561F /* PBXTextBookmark */ = A9D8FC2F104423D80063561F /* PBXTextBookmark */;
-			A9D8FC30104423D80063561F /* PBXTextBookmark */ = A9D8FC30104423D80063561F /* PBXTextBookmark */;
-			A9D8FC31104423D80063561F /* PBXTextBookmark */ = A9D8FC31104423D80063561F /* PBXTextBookmark */;
-			A9D8FC32104423D80063561F /* PBXTextBookmark */ = A9D8FC32104423D80063561F /* PBXTextBookmark */;
-			A9D8FC36104423F90063561F /* PBXTextBookmark */ = A9D8FC36104423F90063561F /* PBXTextBookmark */;
-			A9D8FC3D104427770063561F /* PBXTextBookmark */ = A9D8FC3D104427770063561F /* PBXTextBookmark */;
-			A9D8FC3F104427A10063561F /* PBXTextBookmark */ = A9D8FC3F104427A10063561F /* PBXTextBookmark */;
-			A9D8FC40104427AE0063561F /* PBXTextBookmark */ = A9D8FC40104427AE0063561F /* PBXTextBookmark */;
-			A9D8FC421044283D0063561F /* PBXTextBookmark */ = A9D8FC421044283D0063561F /* PBXTextBookmark */;
-			A9DE83571043CE2800567BA4 = A9DE83571043CE2800567BA4 /* PBXTextBookmark */;
-			A9DE835A1043CE2800567BA4 = A9DE835A1043CE2800567BA4 /* PBXTextBookmark */;
-			A9DE83781043CFEF00567BA4 = A9DE83781043CFEF00567BA4 /* PBXTextBookmark */;
-			A9DE83791043CFEF00567BA4 = A9DE83791043CFEF00567BA4 /* PBXTextBookmark */;
-			A9DE837A1043CFEF00567BA4 = A9DE837A1043CFEF00567BA4 /* PBXBookmark */;
-			A9DE837B1043CFEF00567BA4 = A9DE837B1043CFEF00567BA4 /* PBXTextBookmark */;
-			A9DE837C1043CFEF00567BA4 = A9DE837C1043CFEF00567BA4 /* PBXTextBookmark */;
-			A9DE85AA1043E49900567BA4 = A9DE85AA1043E49900567BA4 /* PBXTextBookmark */;
-		};
-		sourceControlManager = A93E69C310420AA6007D418B /* Source Control */;
-		userBuildSettings = {
-		};
-	};
-	8D1107260486CEB800E47090 /* love */ = {
-		activeExec = 0;
-		executables = (
-			A93E69C010420A88007D418B /* love */,
-		);
-	};
-	A9255DEA1043188D00BA1496 /* SDLMain.m */ = {
-		uiCtxt = {
-			sepNavIntBoundsRect = "{{0, 0}, {762, 5586}}";
-			sepNavSelRange = "{0, 0}";
-			sepNavVisRange = "{561, 596}";
-		};
-	};
-	A93E69C010420A88007D418B /* love */ = {
-		isa = PBXExecutable;
-		activeArgIndices = (
-		);
-		argumentStrings = (
-		);
-		autoAttachOnCrash = 1;
-		breakpointsEnabled = 0;
-		configStateDict = {
-		};
-		customDataFormattersEnabled = 1;
-		debuggerPlugin = GDBDebugging;
-		disassemblyDisplayState = 0;
-		dylibVariantSuffix = "";
-		enableDebugStr = 1;
-		environmentEntries = (
-		);
-		executableSystemSymbolLevel = 0;
-		executableUserSymbolLevel = 0;
-		libgmallocEnabled = 0;
-		name = love;
-		sourceDirectories = (
-		);
-	};
-	A93E69C310420AA6007D418B /* Source Control */ = {
-		isa = PBXSourceControlManager;
-		fallbackIsa = XCSourceControlManager;
-		isSCMEnabled = 0;
-		scmConfiguration = {
-		};
-	};
-	A93E69C410420AA6007D418B /* Code sense */ = {
-		isa = PBXCodeSenseManager;
-		indexTemplatePath = "";
-	};
-	A93E69DE10420ABF007D418B /* config.h */ = {
-		uiCtxt = {
-			sepNavIntBoundsRect = "{{0, 0}, {481, 812}}";
-			sepNavSelRange = "{0, 0}";
-			sepNavVisRange = "{922, 334}";
-		};
-	};
-	A93E69E110420ABF007D418B /* Exception.h */ = {
-		uiCtxt = {
-			sepNavIntBoundsRect = "{{0, 0}, {481, 770}}";
-			sepNavSelRange = "{0, 0}";
-			sepNavVisRange = "{0, 844}";
-		};
-	};
-	A93E69E610420ABF007D418B /* MemoryData.h */ = {
-		uiCtxt = {
-			sepNavIntBoundsRect = "{{0, 0}, {481, 910}}";
-			sepNavSelRange = "{0, 0}";
-			sepNavVisRange = "{987, 353}";
-		};
-	};
-	A93E69E710420ABF007D418B /* Module.h */ = {
-		uiCtxt = {
-			sepNavIntBoundsRect = "{{0, 0}, {481, 798}}";
-			sepNavSelRange = "{0, 0}";
-			sepNavVisRange = "{1168, 298}";
-		};
-	};
-	A93E69EA10420ABF007D418B /* Reference.cpp */ = {
-		uiCtxt = {
-			sepNavIntBoundsRect = "{{0, 0}, {519, 742}}";
-			sepNavSelRange = "{0, 0}";
-			sepNavVisRange = "{0, 927}";
-		};
-	};
-	A93E69ED10420ABF007D418B /* runtime.h */ = {
-		uiCtxt = {
-			sepNavIntBoundsRect = "{{0, 0}, {798, 3990}}";
-			sepNavSelRange = "{1030, 18}";
-			sepNavVisRange = "{9125, 493}";
-		};
-	};
-	A93E69F110420ABF007D418B /* version.h */ = {
-		uiCtxt = {
-			sepNavIntBoundsRect = "{{0, 0}, {481, 532}}";
-			sepNavSelRange = "{0, 0}";
-			sepNavVisRange = "{0, 844}";
-		};
-	};
-	A93E69F710420ABF007D418B /* keeper.lch */ = {
-		uiCtxt = {
-			sepNavIntBoundsRect = "{{0, 0}, {519, 3094}}";
-			sepNavSelRange = "{0, 0}";
-			sepNavVisRange = "{0, 1141}";
-		};
-	};
-	A93E6A0410420ABF007D418B /* auxiliar.c */ = {
-		uiCtxt = {
-			sepNavIntBoundsRect = "{{0, 0}, {519, 2156}}";
-			sepNavSelRange = "{0, 0}";
-			sepNavVisRange = "{0, 765}";
-		};
-	};
-	A93E6A2C10420AC0007D418B /* unix.c */ = {
-		uiCtxt = {
-			sepNavIntBoundsRect = "{{0, 0}, {519, 5054}}";
-			sepNavSelRange = "{0, 0}";
-			sepNavVisRange = "{0, 534}";
-		};
-	};
-	A93E6A3010420AC0007D418B /* usocket.c */ = {
-		uiCtxt = {
-			sepNavIntBoundsRect = "{{0, 0}, {519, 5250}}";
-			sepNavSelRange = "{0, 0}";
-			sepNavVisRange = "{0, 728}";
-		};
-	};
-	A93E6A3110420AC0007D418B /* usocket.h */ = {
-		uiCtxt = {
-			sepNavIntBoundsRect = "{{0, 0}, {1206, 641}}";
-			sepNavSelRange = "{601, 0}";
-			sepNavVisRange = "{0, 1146}";
-			sepNavWindowFrame = "{{15, 4}, {1265, 769}}";
-		};
-	};
-	A93E6A3410420AC0007D418B /* love.cpp */ = {
-		uiCtxt = {
-			sepNavIntBoundsRect = "{{0, 0}, {606, 2576}}";
-			sepNavSelRange = "{4804, 0}";
-			sepNavVisRange = "{3953, 397}";
-		};
-	};
-	A93E6A4410420AC0007D418B /* Audio.cpp */ = {
-		uiCtxt = {
-			sepNavIntBoundsRect = "{{0, 0}, {468, 2590}}";
-			sepNavSelRange = "{0, 0}";
-			sepNavVisRange = "{0, 674}";
-		};
-	};
-	A93E6A4510420AC0007D418B /* Audio.h */ = {
-		uiCtxt = {
-			sepNavIntBoundsRect = "{{0, 0}, {481, 1624}}";
-			sepNavSelRange = "{1170, 127}";
-			sepNavVisRange = "{1062, 295}";
-		};
-	};
-	A93E6A4710420AC0007D418B /* Music.h */ = {
-		uiCtxt = {
-			sepNavIntBoundsRect = "{{0, 0}, {481, 1064}}";
-			sepNavSelRange = "{1084, 127}";
-			sepNavVisRange = "{1065, 229}";
-		};
-	};
-	A93E6A4910420AC0007D418B /* Pool.h */ = {
-		uiCtxt = {
-			sepNavIntBoundsRect = "{{0, 0}, {481, 1806}}";
-			sepNavSelRange = "{1297, 0}";
-			sepNavVisRange = "{1139, 229}";
-		};
-	};
-	A93E6A4A10420AC0007D418B /* Sound.cpp */ = {
-		uiCtxt = {
-			sepNavIntBoundsRect = "{{0, 0}, {519, 1008}}";
-			sepNavSelRange = "{0, 0}";
-			sepNavVisRange = "{0, 926}";
-		};
-	};
-	A93E6A4B10420AC0007D418B /* Sound.h */ = {
-		uiCtxt = {
-			sepNavIntBoundsRect = "{{0, 0}, {481, 980}}";
-			sepNavSelRange = "{1242, 0}";
-			sepNavVisRange = "{1066, 274}";
-		};
-	};
-	A93E6A4D10420AC0007D418B /* Source.h */ = {
-		uiCtxt = {
-			sepNavIntBoundsRect = "{{0, 0}, {481, 1190}}";
-			sepNavSelRange = "{1243, 0}";
-			sepNavVisRange = "{1095, 229}";
-		};
-	};
-	A93E6A5210420AC0007D418B /* wrap_Audio.h */ = {
-		uiCtxt = {
-			sepNavIntBoundsRect = "{{0, 0}, {519, 798}}";
-			sepNavSelRange = "{1721, 64}";
-			sepNavVisRange = "{1247, 565}";
-		};
-	};
-	A93E6A5E10420AC1007D418B /* wrap_Event.cpp */ = {
-		uiCtxt = {
-			sepNavIntBoundsRect = "{{0, 0}, {519, 1260}}";
-			sepNavSelRange = "{0, 0}";
-			sepNavVisRange = "{0, 927}";
-		};
-	};
-	A93E6A6B10420AC1007D418B /* wrap_FileData.cpp */ = {
-		uiCtxt = {
-			sepNavIntBoundsRect = "{{0, 0}, {519, 798}}";
-			sepNavSelRange = "{0, 0}";
-			sepNavVisRange = "{0, 908}";
-		};
-	};
-	A93E6A7510420AC2007D418B /* wrap_Font.cpp */ = {
-		uiCtxt = {
-			sepNavIntBoundsRect = "{{0, 0}, {519, 1064}}";
-			sepNavSelRange = "{0, 0}";
-			sepNavVisRange = "{0, 927}";
-		};
-	};
-	A93E6A8910420AC2007D418B /* GLee.c */ = {
-		uiCtxt = {
-			sepNavIntBoundsRect = "{{0, 0}, {519, 182112}}";
-			sepNavSelRange = "{0, 0}";
-			sepNavVisRange = "{0, 847}";
-		};
-	};
-	A93E6A8D10420AC2007D418B /* Graphics.cpp */ = {
-		uiCtxt = {
-			sepNavIntBoundsRect = "{{0, 0}, {696, 17220}}";
-			sepNavSelRange = "{2543, 0}";
-			sepNavVisRange = "{2152, 690}";
-		};
-	};
-	A93E6A8E10420AC2007D418B /* Graphics.h */ = {
-		uiCtxt = {
-			sepNavIntBoundsRect = "{{0, 0}, {481, 7588}}";
-			sepNavSelRange = "{2168, 0}";
-			sepNavVisRange = "{1975, 342}";
-		};
-	};
-	A93E6A9010420AC2007D418B /* Image.h */ = {
-		uiCtxt = {
-			sepNavIntBoundsRect = "{{0, 0}, {519, 2002}}";
-			sepNavSelRange = "{0, 0}";
-			sepNavVisRange = "{1597, 394}";
-		};
-	};
-	A93E6AB210420AC3007D418B /* wrap_ImageData.cpp */ = {
-		uiCtxt = {
-			sepNavIntBoundsRect = "{{0, 0}, {519, 1932}}";
-			sepNavSelRange = "{0, 0}";
-			sepNavVisRange = "{0, 927}";
-		};
-	};
-	A93E6AB710420AC3007D418B /* Joystick.cpp */ = {
-		uiCtxt = {
-			sepNavIntBoundsRect = "{{0, 0}, {519, 2968}}";
-			sepNavSelRange = "{0, 0}";
-			sepNavVisRange = "{0, 926}";
-		};
-	};
-	A93E6AB910420AC3007D418B /* wrap_Joystick.cpp */ = {
-		uiCtxt = {
-			sepNavIntBoundsRect = "{{0, 0}, {519, 2366}}";
-			sepNavSelRange = "{0, 0}";
-			sepNavVisRange = "{0, 927}";
-		};
-	};
-	A93E6ABE10420AC3007D418B /* Keyboard.cpp */ = {
-		uiCtxt = {
-			sepNavIntBoundsRect = "{{0, 0}, {519, 812}}";
-			sepNavSelRange = "{0, 0}";
-			sepNavVisRange = "{0, 926}";
-		};
-	};
-	A93E6AC510420AC3007D418B /* Mouse.cpp */ = {
-		uiCtxt = {
-			sepNavIntBoundsRect = "{{0, 0}, {519, 980}}";
-			sepNavSelRange = "{0, 0}";
-			sepNavVisRange = "{0, 926}";
-		};
-	};
-	A93E6AC710420AC3007D418B /* wrap_Mouse.cpp */ = {
-		uiCtxt = {
-			sepNavIntBoundsRect = "{{0, 0}, {519, 1694}}";
-			sepNavSelRange = "{0, 0}";
-			sepNavVisRange = "{0, 927}";
-		};
-	};
-	A93E6ACB10420AC3007D418B /* api.c */ = {
-		uiCtxt = {
-			sepNavIntBoundsRect = "{{0, 0}, {481, 1680}}";
-			sepNavSelRange = "{0, 0}";
-			sepNavVisRange = "{1254, 265}";
-		};
-	};
-	A93E6AD710420AC5007D418B /* libtcc.c */ = {
-		uiCtxt = {
-			sepNavIntBoundsRect = "{{0, 0}, {444, 31906}}";
-			sepNavSelRange = "{39418, 40}";
-			sepNavVisRange = "{39238, 339}";
-			sepNavWindowFrame = "{{15, 4}, {1265, 769}}";
-		};
-	};
-	A93E6AD810420AC5007D418B /* libtcc.h */ = {
-		uiCtxt = {
-			sepNavIntBoundsRect = "{{0, 0}, {519, 1526}}";
-			sepNavSelRange = "{0, 0}";
-			sepNavVisRange = "{0, 299}";
-		};
-	};
-	A93E6AD910420AC5007D418B /* stab.def */ = {
-		uiCtxt = {
-			sepNavIntBoundsRect = "{{0, 0}, {519, 3332}}";
-			sepNavSelRange = "{8422, 0}";
-			sepNavVisRange = "{8041, 701}";
-		};
-	};
-	A93E6ADB10420AC5007D418B /* tcc.c */ = {
-		uiCtxt = {
-			sepNavIntBoundsRect = "{{0, 0}, {498, 7854}}";
-			sepNavSelRange = "{0, 0}";
-			sepNavVisRange = "{16939, 512}";
-			sepNavWindowFrame = "{{15, 4}, {1265, 769}}";
-		};
-	};
-	A93E6ADC10420AC5007D418B /* tcc.h */ = {
-		uiCtxt = {
-			sepNavIntBoundsRect = "{{0, 0}, {481, 10990}}";
-			sepNavSelRange = "{0, 0}";
-			sepNavVisRange = "{2051, 632}";
-			sepNavWindowFrame = "{{15, 4}, {1265, 769}}";
-		};
-	};
-	A93E6ADF10420AC6007D418B /* tccelf.c */ = {
-		uiCtxt = {
-			sepNavIntBoundsRect = "{{0, 0}, {519, 38388}}";
-			sepNavSelRange = "{0, 0}";
-			sepNavVisRange = "{0, 822}";
-		};
-	};
-	A93E6AE210420AC7007D418B /* tccpp.c */ = {
-		uiCtxt = {
-			sepNavIntBoundsRect = "{{0, 0}, {481, 40502}}";
-			sepNavSelRange = "{5078, 31}";
-			sepNavVisRange = "{4906, 460}";
-		};
-	};
-	A93E6AE510420AC7007D418B /* Native.cpp */ = {
-		uiCtxt = {
-			sepNavIntBoundsRect = "{{0, 0}, {519, 2282}}";
-			sepNavSelRange = "{0, 0}";
-			sepNavVisRange = "{598, 493}";
-		};
-	};
-	A93E6AE610420AC7007D418B /* Native.h */ = {
-		uiCtxt = {
-			sepNavIntBoundsRect = "{{0, 0}, {519, 1162}}";
-			sepNavSelRange = "{0, 0}";
-			sepNavVisRange = "{844, 283}";
-		};
-	};
-	A93E6AE710420AC7007D418B /* wrap_Native.cpp */ = {
-		uiCtxt = {
-			sepNavIntBoundsRect = "{{0, 0}, {519, 1792}}";
-			sepNavSelRange = "{0, 0}";
-			sepNavVisRange = "{0, 927}";
-		};
-	};
-	A93E6AF010420AC7007D418B /* Contact.h */ = {
-		uiCtxt = {
-			sepNavIntBoundsRect = "{{0, 0}, {468, 1526}}";
-			sepNavSelRange = "{1359, 0}";
-			sepNavVisRange = "{1199, 238}";
-		};
-	};
-	A93E6B0810420AC8007D418B /* Shape.cpp */ = {
-		uiCtxt = {
-			sepNavIntBoundsRect = "{{0, 0}, {519, 2660}}";
-			sepNavSelRange = "{0, 0}";
-			sepNavVisRange = "{0, 927}";
-		};
-	};
-	A93E6B1710420AC8007D418B /* b2CircleShape.cpp */ = {
-		uiCtxt = {
-			sepNavIntBoundsRect = "{{0, 0}, {519, 1568}}";
-			sepNavSelRange = "{0, 0}";
-			sepNavVisRange = "{0, 947}";
-		};
-	};
-	A93E6B5810420ACA007D418B /* wrap_GearJoint.cpp */ = {
-		uiCtxt = {
-			sepNavIntBoundsRect = "{{0, 0}, {519, 854}}";
-			sepNavSelRange = "{0, 0}";
-			sepNavVisRange = "{0, 927}";
-		};
-	};
-	A93E6B7010420ACB007D418B /* Signal.cpp */ = {
-		uiCtxt = {
-			sepNavIntBoundsRect = "{{0, 0}, {519, 896}}";
-			sepNavSelRange = "{0, 0}";
-			sepNavVisRange = "{0, 908}";
-		};
-	};
-	A93E6B7110420ACB007D418B /* Signal.h */ = {
-		uiCtxt = {
-			sepNavIntBoundsRect = "{{0, 0}, {519, 812}}";
-			sepNavSelRange = "{1377, 23}";
-			sepNavVisRange = "{4, 905}";
-		};
-	};
-	A93E6B7210420ACB007D418B /* wrap_Signal.cpp */ = {
-		uiCtxt = {
-			sepNavIntBoundsRect = "{{0, 0}, {519, 1106}}";
-			sepNavSelRange = "{0, 0}";
-			sepNavVisRange = "{0, 908}";
-		};
-	};
-	A93E6B7910420ACB007D418B /* FLACDecoder.cpp */ = {
-		uiCtxt = {
-			sepNavIntBoundsRect = "{{0, 0}, {519, 2296}}";
-			sepNavSelRange = "{0, 0}";
-			sepNavVisRange = "{0, 908}";
-		};
-	};
-	A93E6B7F10420ACB007D418B /* Sound.cpp */ = {
-		uiCtxt = {
-			sepNavIntBoundsRect = "{{0, 0}, {618, 1050}}";
-			sepNavSelRange = "{1940, 0}";
-			sepNavVisRange = "{0, 926}";
-		};
-	};
-	A93E6B9710420ACC007D418B /* boot.lua */ = {
-		uiCtxt = {
-			sepNavIntBoundsRect = "{{0, 0}, {481, 9702}}";
-			sepNavSelRange = "{0, 0}";
-			sepNavVisRange = "{0, 391}";
-		};
-	};
-	A93E6B9810420ACC007D418B /* boot.lua.h */ = {
-		uiCtxt = {
-			sepNavIntBoundsRect = "{{0, 0}, {519, 9926}}";
-			sepNavSelRange = "{0, 0}";
-			sepNavVisRange = "{0, 1228}";
-		};
-	};
-	A9D8FBD21043E5320063561F /* PBXTextBookmark */ = {
-		isa = PBXTextBookmark;
-		fRef = A93E6A8910420AC2007D418B /* GLee.c */;
-		name = "GLee.c: 1";
-		rLen = 0;
-		rLoc = 0;
-		rType = 0;
-		vrLen = 847;
-		vrLoc = 0;
-	};
-	A9D8FBE01043E5AE0063561F /* PBXTextBookmark */ = {
-		isa = PBXTextBookmark;
-		comments = "warning: 'OV_CALLBACKS_DEFAULT' defined but not used";
-		fRef = A9D8FBE11043E5AE0063561F /* vorbisfile.h */;
-		rLen = 1;
-		rLoc = 55;
-		rType = 1;
-	};
-	A9D8FBE11043E5AE0063561F /* vorbisfile.h */ = {
-		isa = PBXFileReference;
-		lastKnownFileType = sourcecode.c.h;
-		name = vorbisfile.h;
-		path = /opt/local/include/vorbis/vorbisfile.h;
-		sourceTree = "<absolute>";
-		uiCtxt = {
-			sepNavIntBoundsRect = "{{0, 0}, {519, 2464}}";
-			sepNavSelRange = "{2279, 45}";
-			sepNavVisRange = "{1931, 733}";
-		};
-	};
-	A9D8FBE21043E5AE0063561F /* PBXTextBookmark */ = {
-		isa = PBXTextBookmark;
-		fRef = A9D8FBE31043E5AE0063561F /* vorbisfile.h */;
-		name = "vorbisfile.h: 56";
-		rLen = 45;
-		rLoc = 2279;
-		rType = 0;
-		vrLen = 629;
-		vrLoc = 1931;
-	};
-	A9D8FBE31043E5AE0063561F /* vorbisfile.h */ = {
-		isa = PBXFileReference;
-		lastKnownFileType = sourcecode.c.h;
-		name = vorbisfile.h;
-		path = /opt/local/include/vorbis/vorbisfile.h;
-		sourceTree = "<absolute>";
-		uiCtxt = {
-			sepNavIntBoundsRect = "{{0, 0}, {492, 2618}}";
-			sepNavSelRange = "{2279, 45}";
-			sepNavVisRange = "{1931, 629}";
-		};
-	};
-	A9D8FBE71043E5C10063561F /* PBXTextBookmark */ = {
-		isa = PBXTextBookmark;
-		fRef = A93E6A8910420AC2007D418B /* GLee.c */;
-		name = "GLee.c: 1";
-		rLen = 0;
-		rLoc = 0;
-		rType = 0;
-		vrLen = 847;
-		vrLoc = 0;
-	};
-	A9D8FBE81043E5C10063561F /* PBXTextBookmark */ = {
-		isa = PBXTextBookmark;
-		fRef = A93E6B7910420ACB007D418B /* FLACDecoder.cpp */;
-		name = "FLACDecoder.cpp: 1";
-		rLen = 0;
-		rLoc = 0;
-		rType = 0;
-		vrLen = 908;
-		vrLoc = 0;
-	};
-	A9D8FBE91043E5C10063561F /* PBXTextBookmark */ = {
-		isa = PBXTextBookmark;
-		fRef = A93E6B7F10420ACB007D418B /* Sound.cpp */;
-		name = "Sound.cpp: 63";
-		rLen = 0;
-		rLoc = 1940;
-		rType = 0;
-		vrLen = 926;
-		vrLoc = 0;
-	};
-	A9D8FBEA1043E5C10063561F /* PBXTextBookmark */ = {
-		isa = PBXTextBookmark;
-		fRef = A93E6A8910420AC2007D418B /* GLee.c */;
-		name = "GLee.c: 1";
-		rLen = 0;
-		rLoc = 0;
-		rType = 0;
-		vrLen = 847;
-		vrLoc = 0;
-	};
-	A9D8FBEB1043E5C10063561F /* PBXTextBookmark */ = {
-		isa = PBXTextBookmark;
-		fRef = A93E6B7910420ACB007D418B /* FLACDecoder.cpp */;
-		name = "FLACDecoder.cpp: 1";
-		rLen = 0;
-		rLoc = 0;
-		rType = 0;
-		vrLen = 908;
-		vrLoc = 0;
-	};
-	A9D8FBEC1043E5C10063561F /* PBXTextBookmark */ = {
-		isa = PBXTextBookmark;
-		fRef = A93E6B7F10420ACB007D418B /* Sound.cpp */;
-		name = "Sound.cpp: 63";
-		rLen = 0;
-		rLoc = 1940;
-		rType = 0;
-		vrLen = 926;
-		vrLoc = 0;
-	};
-	A9D8FBED1043E5C10063561F /* PBXTextBookmark */ = {
-		isa = PBXTextBookmark;
-		fRef = A9D8FBE11043E5AE0063561F /* vorbisfile.h */;
-		name = "vorbisfile.h: 56";
-		rLen = 45;
-		rLoc = 2279;
-		rType = 0;
-		vrLen = 733;
-		vrLoc = 1931;
-	};
-	A9D8FBFC1043E7C20063561F /* PBXTextBookmark */ = {
-		isa = PBXTextBookmark;
-		fRef = A9D8FBE11043E5AE0063561F /* vorbisfile.h */;
-		name = "vorbisfile.h: 56";
-		rLen = 45;
-		rLoc = 2279;
-		rType = 0;
-		vrLen = 733;
-		vrLoc = 1931;
-	};
-	A9D8FC011043E8770063561F /* PBXTextBookmark */ = {
-		isa = PBXTextBookmark;
-		fRef = A9D8FBE11043E5AE0063561F /* vorbisfile.h */;
-		name = "vorbisfile.h: 56";
-		rLen = 45;
-		rLoc = 2279;
-		rType = 0;
-		vrLen = 733;
-		vrLoc = 1931;
-	};
-	A9D8FC031043E94F0063561F /* PBXTextBookmark */ = {
-		isa = PBXTextBookmark;
-		fRef = A9D8FBE11043E5AE0063561F /* vorbisfile.h */;
-		name = "vorbisfile.h: 56";
-		rLen = 45;
-		rLoc = 2279;
-		rType = 0;
-		vrLen = 733;
-		vrLoc = 1931;
-	};
-	A9D8FC041043E94F0063561F /* PBXTextBookmark */ = {
-		isa = PBXTextBookmark;
-		fRef = A9255DEA1043188D00BA1496 /* SDLMain.m */;
-		name = "SDLMain.m: 1";
-		rLen = 0;
-		rLoc = 0;
-		rType = 0;
-		vrLen = 604;
-		vrLoc = 0;
-	};
-	A9D8FC051043E94F0063561F /* PBXTextBookmark */ = {
-		isa = PBXTextBookmark;
-		fRef = A9D8FBE11043E5AE0063561F /* vorbisfile.h */;
-		name = "vorbisfile.h: 56";
-		rLen = 45;
-		rLoc = 2279;
-		rType = 0;
-		vrLen = 733;
-		vrLoc = 1931;
-	};
-	A9D8FC061043E94F0063561F /* PBXTextBookmark */ = {
-		isa = PBXTextBookmark;
-		fRef = A9255DEA1043188D00BA1496 /* SDLMain.m */;
-		name = "SDLMain.m: 1";
-		rLen = 0;
-		rLoc = 0;
-		rType = 0;
-		vrLen = 549;
-		vrLoc = 347;
-	};
-	A9D8FC0D1043EBD30063561F /* PBXTextBookmark */ = {
-		isa = PBXTextBookmark;
-		fRef = A9255DEA1043188D00BA1496 /* SDLMain.m */;
-		name = "SDLMain.m: 1";
-		rLen = 0;
-		rLoc = 0;
-		rType = 0;
-		vrLen = 596;
-		vrLoc = 561;
-	};
-	A9D8FC131043EC200063561F /* PBXTextBookmark */ = {
-		isa = PBXTextBookmark;
-		fRef = A9255DEA1043188D00BA1496 /* SDLMain.m */;
-		name = "SDLMain.m: 1";
-		rLen = 0;
-		rLoc = 0;
-		rType = 0;
-		vrLen = 596;
-		vrLoc = 561;
-	};
-	A9D8FC1E1043EFA00063561F /* PBXTextBookmark */ = {
-		isa = PBXTextBookmark;
-		fRef = A9255DEA1043188D00BA1496 /* SDLMain.m */;
-		name = "SDLMain.m: 1";
-		rLen = 0;
-		rLoc = 0;
-		rType = 0;
-		vrLen = 596;
-		vrLoc = 561;
-	};
-	A9D8FC2010441C030063561F /* PBXTextBookmark */ = {
-		isa = PBXTextBookmark;
-		fRef = A9255DEA1043188D00BA1496 /* SDLMain.m */;
-		name = "SDLMain.m: 1";
-		rLen = 0;
-		rLoc = 0;
-		rType = 0;
-		vrLen = 596;
-		vrLoc = 561;
-	};
-	A9D8FC2110441C0F0063561F /* PBXTextBookmark */ = {
-		isa = PBXTextBookmark;
-		fRef = A9255DEA1043188D00BA1496 /* SDLMain.m */;
-		name = "SDLMain.m: 1";
-		rLen = 0;
-		rLoc = 0;
-		rType = 0;
-		vrLen = 596;
-		vrLoc = 561;
-	};
-	A9D8FC2410441DF10063561F /* PBXTextBookmark */ = {
-		isa = PBXTextBookmark;
-		fRef = A9255DEA1043188D00BA1496 /* SDLMain.m */;
-		name = "SDLMain.m: 1";
-		rLen = 0;
-		rLoc = 0;
-		rType = 0;
-		vrLen = 596;
-		vrLoc = 561;
-	};
-	A9D8FC2510441E590063561F /* PBXTextBookmark */ = {
-		isa = PBXTextBookmark;
-		fRef = A9255DEA1043188D00BA1496 /* SDLMain.m */;
-		name = "SDLMain.m: 1";
-		rLen = 0;
-		rLoc = 0;
-		rType = 0;
-		vrLen = 596;
-		vrLoc = 561;
-	};
-	A9D8FC2610441E700063561F /* PBXTextBookmark */ = {
-		isa = PBXTextBookmark;
-		fRef = A9255DEA1043188D00BA1496 /* SDLMain.m */;
-		name = "SDLMain.m: 1";
-		rLen = 0;
-		rLoc = 0;
-		rType = 0;
-		vrLen = 596;
-		vrLoc = 561;
-	};
-	A9D8FC2710441E890063561F /* PBXTextBookmark */ = {
-		isa = PBXTextBookmark;
-		fRef = A9255DEA1043188D00BA1496 /* SDLMain.m */;
-		name = "SDLMain.m: 1";
-		rLen = 0;
-		rLoc = 0;
-		rType = 0;
-		vrLen = 596;
-		vrLoc = 561;
-	};
-	A9D8FC2910441E9B0063561F /* PBXTextBookmark */ = {
-		isa = PBXTextBookmark;
-		fRef = A9255DEA1043188D00BA1496 /* SDLMain.m */;
-		name = "SDLMain.m: 1";
-		rLen = 0;
-		rLoc = 0;
-		rType = 0;
-		vrLen = 596;
-		vrLoc = 561;
-	};
-	A9D8FC2F104423D80063561F /* PBXTextBookmark */ = {
-		isa = PBXTextBookmark;
-		fRef = A9D8FBE31043E5AE0063561F /* vorbisfile.h */;
-		name = "vorbisfile.h: 56";
-		rLen = 45;
-		rLoc = 2279;
-		rType = 0;
-		vrLen = 629;
-		vrLoc = 1931;
-	};
-	A9D8FC30104423D80063561F /* PBXTextBookmark */ = {
-		isa = PBXTextBookmark;
-		comments = "error: 'struct mcontext' has no member named '__ss'";
-		fRef = A93E6AD710420AC5007D418B /* libtcc.c */;
-		rLen = 1;
-		rLoc = 1480;
-		rType = 1;
-	};
-	A9D8FC31104423D80063561F /* PBXTextBookmark */ = {
-		isa = PBXTextBookmark;
-		fRef = A9D8FBE31043E5AE0063561F /* vorbisfile.h */;
-		name = "vorbisfile.h: 56";
-		rLen = 45;
-		rLoc = 2279;
-		rType = 0;
-		vrLen = 629;
-		vrLoc = 1931;
-	};
-	A9D8FC32104423D80063561F /* PBXTextBookmark */ = {
-		isa = PBXTextBookmark;
-		fRef = A93E6AD710420AC5007D418B /* libtcc.c */;
-		name = "libtcc.c: 1481";
-		rLen = 40;
-		rLoc = 39418;
-		rType = 0;
-		vrLen = 300;
-		vrLoc = 39238;
-	};
-	A9D8FC36104423F90063561F /* PBXTextBookmark */ = {
-		isa = PBXTextBookmark;
-		fRef = A9255DEA1043188D00BA1496 /* SDLMain.m */;
-		name = "SDLMain.m: 1";
-		rLen = 0;
-		rLoc = 0;
-		rType = 0;
-		vrLen = 596;
-		vrLoc = 561;
-	};
-	A9D8FC3D104427770063561F /* PBXTextBookmark */ = {
-		isa = PBXTextBookmark;
-		fRef = A9255DEA1043188D00BA1496 /* SDLMain.m */;
-		name = "SDLMain.m: 1";
-		rLen = 0;
-		rLoc = 0;
-		rType = 0;
-		vrLen = 596;
-		vrLoc = 561;
-	};
-	A9D8FC3F104427A10063561F /* PBXTextBookmark */ = {
-		isa = PBXTextBookmark;
-		fRef = A9255DEA1043188D00BA1496 /* SDLMain.m */;
-		name = "SDLMain.m: 1";
-		rLen = 0;
-		rLoc = 0;
-		rType = 0;
-		vrLen = 596;
-		vrLoc = 561;
-	};
-	A9D8FC40104427AE0063561F /* PBXTextBookmark */ = {
-		isa = PBXTextBookmark;
-		fRef = A9255DEA1043188D00BA1496 /* SDLMain.m */;
-		name = "SDLMain.m: 1";
-		rLen = 0;
-		rLoc = 0;
-		rType = 0;
-		vrLen = 596;
-		vrLoc = 561;
-	};
-	A9D8FC421044283D0063561F /* PBXTextBookmark */ = {
-		isa = PBXTextBookmark;
-		fRef = A9255DEA1043188D00BA1496 /* SDLMain.m */;
-		name = "SDLMain.m: 1";
-		rLen = 0;
-		rLoc = 0;
-		rType = 0;
-		vrLen = 596;
-		vrLoc = 561;
-	};
-	A9DE83571043CE2800567BA4 /* PBXTextBookmark */ = {
-		isa = PBXTextBookmark;
-		fRef = A93E6B7110420ACB007D418B /* Signal.h */;
-		name = "Signal.h: 52";
-		rLen = 23;
-		rLoc = 1377;
-		rType = 0;
-		vrLen = 905;
-		vrLoc = 4;
-	};
-	A9DE83591043CE2800567BA4 /* Makefile */ = {
-		isa = PBXFileReference;
-		lastKnownFileType = sourcecode.make;
-		name = Makefile;
-		path = "/Users/bill/Downloads/flac-1.2.1/src/libFLAC++/Makefile";
-		sourceTree = "<absolute>";
-	};
-	A9DE835A1043CE2800567BA4 /* PBXTextBookmark */ = {
-		isa = PBXTextBookmark;
-		fRef = A93E6B7110420ACB007D418B /* Signal.h */;
-		name = "Signal.h: 52";
-		rLen = 23;
-		rLoc = 1377;
-		rType = 0;
-		vrLen = 905;
-		vrLoc = 4;
-	};
-	A9DE83781043CFEF00567BA4 /* PBXTextBookmark */ = {
-		isa = PBXTextBookmark;
-		fRef = A9DE83591043CE2800567BA4 /* Makefile */;
-		name = "Makefile: 608";
-		rLen = 0;
-		rLoc = 18653;
-		rType = 0;
-		vrLen = 753;
-		vrLoc = 233;
-	};
-	A9DE83791043CFEF00567BA4 /* PBXTextBookmark */ = {
-		isa = PBXTextBookmark;
-		fRef = A93E6ADF10420AC6007D418B /* tccelf.c */;
-		name = "tccelf.c: 1";
-		rLen = 0;
-		rLoc = 0;
-		rType = 0;
-		vrLen = 822;
-		vrLoc = 0;
-	};
-	A9DE837A1043CFEF00567BA4 /* PBXBookmark */ = {
-		isa = PBXBookmark;
-		fRef = A93E6A8910420AC2007D418B /* GLee.c */;
-	};
-	A9DE837B1043CFEF00567BA4 /* PBXTextBookmark */ = {
-		isa = PBXTextBookmark;
-		fRef = A9DE83591043CE2800567BA4 /* Makefile */;
-		name = "Makefile: 608";
-		rLen = 0;
-		rLoc = 18653;
-		rType = 0;
-		vrLen = 753;
-		vrLoc = 233;
-	};
-	A9DE837C1043CFEF00567BA4 /* PBXTextBookmark */ = {
-		isa = PBXTextBookmark;
-		fRef = A93E6ADF10420AC6007D418B /* tccelf.c */;
-		name = "tccelf.c: 1";
-		rLen = 0;
-		rLoc = 0;
-		rType = 0;
-		vrLen = 822;
-		vrLoc = 0;
-	};
-	A9DE85AA1043E49900567BA4 /* PBXTextBookmark */ = {
-		isa = PBXTextBookmark;
-		fRef = A93E6A8910420AC2007D418B /* GLee.c */;
-		name = "GLee.c: 1";
-		rLen = 0;
-		rLoc = 0;
-		rType = 0;
-		vrLen = 847;
-		vrLoc = 0;
-	};
-}

+ 0 - 508
love/src/jni/love/platform/macosx/love.xcodeproj/project.pbxproj

@@ -1,508 +0,0 @@
-// !$*UTF8*$!
-{
-	archiveVersion = 1;
-	classes = {
-	};
-	objectVersion = 46;
-	objects = {
-
-/* Begin PBXBuildFile section */
-		8D11072F0486CEB800E47090 /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1058C7A1FEA54F0111CA2CBB /* Cocoa.framework */; };
-		A9255DD11043183600BA1496 /* FreeType.framework in Copy Frameworks */ = {isa = PBXBuildFile; fileRef = A93E6E4810420B4A007D418B /* FreeType.framework */; };
-		A9255DD31043183600BA1496 /* Lua.framework in Copy Frameworks */ = {isa = PBXBuildFile; fileRef = A93E6E5310420B57007D418B /* Lua.framework */; };
-		A9255E031043195A00BA1496 /* Vorbis.framework in Copy Frameworks */ = {isa = PBXBuildFile; fileRef = A9255E021043195A00BA1496 /* Vorbis.framework */; };
-		A9255F431043240F00BA1496 /* IL.framework in Copy Frameworks */ = {isa = PBXBuildFile; fileRef = A9255F421043240F00BA1496 /* IL.framework */; };
-		A9255F58104324E100BA1496 /* Ogg.framework in Copy Frameworks */ = {isa = PBXBuildFile; fileRef = A9255F51104324D700BA1496 /* Ogg.framework */; };
-		A93E6E5510420B57007D418B /* Lua.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = A93E6E5310420B57007D418B /* Lua.framework */; };
-		A93E6EED10420BA8007D418B /* love.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A93E6A3410420AC0007D418B /* love.cpp */; };
-		A9D307F2106635D3004FEDF8 /* physfs.framework in Copy Frameworks */ = {isa = PBXBuildFile; fileRef = A9D307E9106635C3004FEDF8 /* physfs.framework */; };
-		A9DEC1C11046EFA70049C70C /* Love.icns in Resources */ = {isa = PBXBuildFile; fileRef = A9DEC1BF1046EFA60049C70C /* Love.icns */; };
-		A9DEC1C21046EFA70049C70C /* LoveDocument.icns in Resources */ = {isa = PBXBuildFile; fileRef = A9DEC1C01046EFA70049C70C /* LoveDocument.icns */; };
-		A9F169AC109E825000FC83D1 /* mpg123.framework in Copy Frameworks */ = {isa = PBXBuildFile; fileRef = A9F169A6109E824900FC83D1 /* mpg123.framework */; };
-		A9F169AD109E825000FC83D1 /* libmodplug.framework in Copy Frameworks */ = {isa = PBXBuildFile; fileRef = A9F16926109E7BAD00FC83D1 /* libmodplug.framework */; };
-		FA08F69616C766E000F007B5 /* love.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FA08F69116C765A200F007B5 /* love.framework */; };
-		FA08F69716C766E700F007B5 /* love.framework in Copy Frameworks */ = {isa = PBXBuildFile; fileRef = FA08F69116C765A200F007B5 /* love.framework */; };
-		FA9B4A0A16E1579F00074F42 /* SDL2.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FA9B4A0916E1579F00074F42 /* SDL2.framework */; };
-		FA9B4A0B16E157B500074F42 /* SDL2.framework in Copy Frameworks */ = {isa = PBXBuildFile; fileRef = FA9B4A0916E1579F00074F42 /* SDL2.framework */; };
-		FAAFF04716CB120000CCDE45 /* OpenAL-Soft.framework in Copy Frameworks */ = {isa = PBXBuildFile; fileRef = FAAFF04616CB120000CCDE45 /* OpenAL-Soft.framework */; };
-		FAC1A449196F5DC600125284 /* license.txt in Resources */ = {isa = PBXBuildFile; fileRef = FAC1A448196F5DC600125284 /* license.txt */; };
-		FAC8E8D416F3C468004DADF3 /* OSX.mm in Sources */ = {isa = PBXBuildFile; fileRef = FAC8E8D316F3C468004DADF3 /* OSX.mm */; };
-/* End PBXBuildFile section */
-
-/* Begin PBXContainerItemProxy section */
-		FA08F6A616C77A4300F007B5 /* PBXContainerItemProxy */ = {
-			isa = PBXContainerItemProxy;
-			containerPortal = FA577A9316C7217800860150 /* love-framework.xcodeproj */;
-			proxyType = 2;
-			remoteGlobalIDString = FA577AAF16C7507900860150;
-			remoteInfo = "love framework";
-		};
-/* End PBXContainerItemProxy section */
-
-/* Begin PBXCopyFilesBuildPhase section */
-		A9255DDE1043185300BA1496 /* Copy Frameworks */ = {
-			isa = PBXCopyFilesBuildPhase;
-			buildActionMask = 2147483647;
-			dstPath = "";
-			dstSubfolderSpec = 10;
-			files = (
-				FA08F69716C766E700F007B5 /* love.framework in Copy Frameworks */,
-				FA9B4A0B16E157B500074F42 /* SDL2.framework in Copy Frameworks */,
-				FAAFF04716CB120000CCDE45 /* OpenAL-Soft.framework in Copy Frameworks */,
-				A9F169AC109E825000FC83D1 /* mpg123.framework in Copy Frameworks */,
-				A9F169AD109E825000FC83D1 /* libmodplug.framework in Copy Frameworks */,
-				A9D307F2106635D3004FEDF8 /* physfs.framework in Copy Frameworks */,
-				A9255F58104324E100BA1496 /* Ogg.framework in Copy Frameworks */,
-				A9255F431043240F00BA1496 /* IL.framework in Copy Frameworks */,
-				A9255E031043195A00BA1496 /* Vorbis.framework in Copy Frameworks */,
-				A9255DD11043183600BA1496 /* FreeType.framework in Copy Frameworks */,
-				A9255DD31043183600BA1496 /* Lua.framework in Copy Frameworks */,
-			);
-			name = "Copy Frameworks";
-			runOnlyForDeploymentPostprocessing = 0;
-		};
-/* End PBXCopyFilesBuildPhase section */
-
-/* Begin PBXFileReference section */
-		1058C7A1FEA54F0111CA2CBB /* Cocoa.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Cocoa.framework; path = /System/Library/Frameworks/Cocoa.framework; sourceTree = "<absolute>"; };
-		8D1107320486CEB800E47090 /* love.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = love.app; sourceTree = BUILT_PRODUCTS_DIR; };
-		A9255E021043195A00BA1496 /* Vorbis.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Vorbis.framework; path = /Library/Frameworks/Vorbis.framework; sourceTree = "<absolute>"; };
-		A9255F421043240F00BA1496 /* IL.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = IL.framework; path = /Library/Frameworks/IL.framework; sourceTree = "<absolute>"; };
-		A9255F51104324D700BA1496 /* Ogg.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Ogg.framework; path = /Library/Frameworks/Ogg.framework; sourceTree = "<absolute>"; };
-		A93E6A3410420AC0007D418B /* love.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = love.cpp; path = ../../src/love.cpp; sourceTree = "<group>"; };
-		A93E6E4710420B4A007D418B /* OpenGL.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = OpenGL.framework; path = /System/Library/Frameworks/OpenGL.framework; sourceTree = "<absolute>"; };
-		A93E6E4810420B4A007D418B /* FreeType.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = FreeType.framework; path = /Library/Frameworks/FreeType.framework; sourceTree = "<absolute>"; };
-		A93E6E5310420B57007D418B /* Lua.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Lua.framework; path = /Library/Frameworks/Lua.framework; sourceTree = "<absolute>"; };
-		A97E3842132A9EDE00198A2F /* love-Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = "love-Info.plist"; sourceTree = "<group>"; };
-		A9D307E9106635C3004FEDF8 /* physfs.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = physfs.framework; path = /Library/Frameworks/physfs.framework; sourceTree = "<absolute>"; };
-		A9DEC1BF1046EFA60049C70C /* Love.icns */ = {isa = PBXFileReference; lastKnownFileType = image.icns; name = Love.icns; path = icons/Love.icns; sourceTree = "<group>"; };
-		A9DEC1C01046EFA70049C70C /* LoveDocument.icns */ = {isa = PBXFileReference; lastKnownFileType = image.icns; name = LoveDocument.icns; path = icons/LoveDocument.icns; sourceTree = "<group>"; };
-		A9F16926109E7BAD00FC83D1 /* libmodplug.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = libmodplug.framework; path = /Library/Frameworks/libmodplug.framework; sourceTree = "<absolute>"; };
-		A9F169A6109E824900FC83D1 /* mpg123.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = mpg123.framework; path = /Library/Frameworks/mpg123.framework; sourceTree = "<absolute>"; };
-		FA08F69116C765A200F007B5 /* love.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; path = love.framework; sourceTree = BUILT_PRODUCTS_DIR; };
-		FA577A9316C7217800860150 /* love-framework.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; path = "love-framework.xcodeproj"; sourceTree = "<group>"; };
-		FA9B4A0916E1579F00074F42 /* SDL2.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = SDL2.framework; path = /Library/Frameworks/SDL2.framework; sourceTree = "<absolute>"; };
-		FAAFF04616CB120000CCDE45 /* OpenAL-Soft.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "OpenAL-Soft.framework"; path = "/Library/Frameworks/OpenAL-Soft.framework"; sourceTree = "<absolute>"; };
-		FAC1A448196F5DC600125284 /* license.txt */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = license.txt; path = ../../license.txt; sourceTree = "<group>"; };
-		FAC8E8D316F3C468004DADF3 /* OSX.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = OSX.mm; sourceTree = "<group>"; };
-		FAC8E8D616F3C46E004DADF3 /* OSX.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = OSX.h; sourceTree = "<group>"; };
-/* End PBXFileReference section */
-
-/* Begin PBXFrameworksBuildPhase section */
-		8D11072E0486CEB800E47090 /* Frameworks */ = {
-			isa = PBXFrameworksBuildPhase;
-			buildActionMask = 2147483647;
-			files = (
-				FA08F69616C766E000F007B5 /* love.framework in Frameworks */,
-				8D11072F0486CEB800E47090 /* Cocoa.framework in Frameworks */,
-				A93E6E5510420B57007D418B /* Lua.framework in Frameworks */,
-				FA9B4A0A16E1579F00074F42 /* SDL2.framework in Frameworks */,
-			);
-			runOnlyForDeploymentPostprocessing = 0;
-		};
-/* End PBXFrameworksBuildPhase section */
-
-/* Begin PBXGroup section */
-		1058C7A0FEA54F0111CA2CBB /* Frameworks */ = {
-			isa = PBXGroup;
-			children = (
-				FA9B4A0916E1579F00074F42 /* SDL2.framework */,
-				1058C7A1FEA54F0111CA2CBB /* Cocoa.framework */,
-				A93E6E4810420B4A007D418B /* FreeType.framework */,
-				A9255F421043240F00BA1496 /* IL.framework */,
-				A9F16926109E7BAD00FC83D1 /* libmodplug.framework */,
-				FA08F69116C765A200F007B5 /* love.framework */,
-				A93E6E5310420B57007D418B /* Lua.framework */,
-				A9F169A6109E824900FC83D1 /* mpg123.framework */,
-				A9255F51104324D700BA1496 /* Ogg.framework */,
-				FAAFF04616CB120000CCDE45 /* OpenAL-Soft.framework */,
-				A93E6E4710420B4A007D418B /* OpenGL.framework */,
-				A9D307E9106635C3004FEDF8 /* physfs.framework */,
-				A9255E021043195A00BA1496 /* Vorbis.framework */,
-			);
-			name = Frameworks;
-			sourceTree = "<group>";
-		};
-		19C28FACFE9D520D11CA2CBB /* Products */ = {
-			isa = PBXGroup;
-			children = (
-				8D1107320486CEB800E47090 /* love.app */,
-			);
-			name = Products;
-			sourceTree = "<group>";
-		};
-		29B97314FDCFA39411CA2CEA /* love */ = {
-			isa = PBXGroup;
-			children = (
-				FA577A9D16C7262E00860150 /* Source */,
-				1058C7A0FEA54F0111CA2CBB /* Frameworks */,
-				29B97317FDCFA39411CA2CEA /* Resources */,
-				19C28FACFE9D520D11CA2CBB /* Products */,
-				FA577A9316C7217800860150 /* love-framework.xcodeproj */,
-			);
-			name = love;
-			sourceTree = "<group>";
-			usesTabs = 1;
-		};
-		29B97317FDCFA39411CA2CEA /* Resources */ = {
-			isa = PBXGroup;
-			children = (
-				FAC1A448196F5DC600125284 /* license.txt */,
-				A97E3842132A9EDE00198A2F /* love-Info.plist */,
-				A9DEC1BF1046EFA60049C70C /* Love.icns */,
-				A9DEC1C01046EFA70049C70C /* LoveDocument.icns */,
-			);
-			name = Resources;
-			sourceTree = "<group>";
-		};
-		FA08F6A316C77A4300F007B5 /* Products */ = {
-			isa = PBXGroup;
-			children = (
-				FA08F6A716C77A4300F007B5 /* love.framework */,
-			);
-			name = Products;
-			sourceTree = "<group>";
-		};
-		FA577A9D16C7262E00860150 /* Source */ = {
-			isa = PBXGroup;
-			children = (
-				A93E6A3410420AC0007D418B /* love.cpp */,
-				FAC8E8D616F3C46E004DADF3 /* OSX.h */,
-				FAC8E8D316F3C468004DADF3 /* OSX.mm */,
-			);
-			name = Source;
-			sourceTree = "<group>";
-		};
-/* End PBXGroup section */
-
-/* Begin PBXNativeTarget section */
-		8D1107260486CEB800E47090 /* love */ = {
-			isa = PBXNativeTarget;
-			buildConfigurationList = C01FCF4A08A954540054247B /* Build configuration list for PBXNativeTarget "love" */;
-			buildPhases = (
-				8D1107290486CEB800E47090 /* Resources */,
-				8D11072C0486CEB800E47090 /* Sources */,
-				A9255DDE1043185300BA1496 /* Copy Frameworks */,
-				8D11072E0486CEB800E47090 /* Frameworks */,
-			);
-			buildRules = (
-			);
-			dependencies = (
-			);
-			name = love;
-			productInstallPath = "$(HOME)/Applications";
-			productName = love;
-			productReference = 8D1107320486CEB800E47090 /* love.app */;
-			productType = "com.apple.product-type.application";
-		};
-/* End PBXNativeTarget section */
-
-/* Begin PBXProject section */
-		29B97313FDCFA39411CA2CEA /* Project object */ = {
-			isa = PBXProject;
-			attributes = {
-				LastUpgradeCheck = 0510;
-			};
-			buildConfigurationList = C01FCF4E08A954540054247B /* Build configuration list for PBXProject "love" */;
-			compatibilityVersion = "Xcode 3.2";
-			developmentRegion = English;
-			hasScannedForEncodings = 1;
-			knownRegions = (
-				English,
-				Japanese,
-				French,
-				German,
-			);
-			mainGroup = 29B97314FDCFA39411CA2CEA /* love */;
-			projectDirPath = "";
-			projectReferences = (
-				{
-					ProductGroup = FA08F6A316C77A4300F007B5 /* Products */;
-					ProjectRef = FA577A9316C7217800860150 /* love-framework.xcodeproj */;
-				},
-			);
-			projectRoot = "";
-			targets = (
-				8D1107260486CEB800E47090 /* love */,
-			);
-		};
-/* End PBXProject section */
-
-/* Begin PBXReferenceProxy section */
-		FA08F6A716C77A4300F007B5 /* love.framework */ = {
-			isa = PBXReferenceProxy;
-			fileType = wrapper.framework;
-			path = love.framework;
-			remoteRef = FA08F6A616C77A4300F007B5 /* PBXContainerItemProxy */;
-			sourceTree = BUILT_PRODUCTS_DIR;
-		};
-/* End PBXReferenceProxy section */
-
-/* Begin PBXResourcesBuildPhase section */
-		8D1107290486CEB800E47090 /* Resources */ = {
-			isa = PBXResourcesBuildPhase;
-			buildActionMask = 2147483647;
-			files = (
-				FAC1A449196F5DC600125284 /* license.txt in Resources */,
-				A9DEC1C11046EFA70049C70C /* Love.icns in Resources */,
-				A9DEC1C21046EFA70049C70C /* LoveDocument.icns in Resources */,
-			);
-			runOnlyForDeploymentPostprocessing = 0;
-		};
-/* End PBXResourcesBuildPhase section */
-
-/* Begin PBXSourcesBuildPhase section */
-		8D11072C0486CEB800E47090 /* Sources */ = {
-			isa = PBXSourcesBuildPhase;
-			buildActionMask = 2147483647;
-			files = (
-				A93E6EED10420BA8007D418B /* love.cpp in Sources */,
-				FAC8E8D416F3C468004DADF3 /* OSX.mm in Sources */,
-			);
-			runOnlyForDeploymentPostprocessing = 0;
-		};
-/* End PBXSourcesBuildPhase section */
-
-/* Begin XCBuildConfiguration section */
-		C01FCF4B08A954540054247B /* Debug */ = {
-			isa = XCBuildConfiguration;
-			buildSettings = {
-				COMBINE_HIDPI_IMAGES = YES;
-				FRAMEWORK_SEARCH_PATHS = (
-					"$(inherited)",
-					"\"$(SRCROOT)/build/Release\"",
-					"\"$(SRCROOT)/build/Debug\"",
-				);
-				GCC_DYNAMIC_NO_PIC = NO;
-				GCC_OPTIMIZATION_LEVEL = 0;
-				INSTALL_PATH = /Applications;
-				PRODUCT_NAME = love;
-			};
-			name = Debug;
-		};
-		C01FCF4C08A954540054247B /* Release */ = {
-			isa = XCBuildConfiguration;
-			buildSettings = {
-				COMBINE_HIDPI_IMAGES = YES;
-				DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
-				FRAMEWORK_SEARCH_PATHS = (
-					"$(inherited)",
-					"\"$(SRCROOT)/build/Release\"",
-					"\"$(SRCROOT)/build/Debug\"",
-				);
-				INSTALL_PATH = /Applications;
-				PRODUCT_NAME = love;
-			};
-			name = Release;
-		};
-		C01FCF4F08A954540054247B /* Debug */ = {
-			isa = XCBuildConfiguration;
-			buildSettings = {
-				ALWAYS_SEARCH_USER_PATHS = NO;
-				ARCHS = "$(ARCHS_STANDARD_64_BIT)";
-				CLANG_CXX_LANGUAGE_STANDARD = "c++0x";
-				CLANG_ENABLE_MODULES = YES;
-				FRAMEWORK_SEARCH_PATHS = /Library/Frameworks;
-				GCC_INCREASE_PRECOMPILED_HEADER_SHARING = YES;
-				GCC_OPTIMIZATION_LEVEL = 0;
-				GCC_PREPROCESSOR_DEFINITIONS = LOVE_MACOSX_USE_FRAMEWORKS;
-				GCC_TREAT_IMPLICIT_FUNCTION_DECLARATIONS_AS_ERRORS = NO;
-				GCC_WARN_ABOUT_MISSING_NEWLINE = NO;
-				GCC_WARN_ABOUT_MISSING_PROTOTYPES = NO;
-				GCC_WARN_ABOUT_POINTER_SIGNEDNESS = YES;
-				GCC_WARN_ABOUT_RETURN_TYPE = NO;
-				GCC_WARN_CHECK_SWITCH_STATEMENTS = YES;
-				GCC_WARN_FOUR_CHARACTER_CONSTANTS = NO;
-				GCC_WARN_HIDDEN_VIRTUAL_FUNCTIONS = NO;
-				GCC_WARN_INITIALIZER_NOT_FULLY_BRACKETED = NO;
-				GCC_WARN_MISSING_PARENTHESES = NO;
-				GCC_WARN_NON_VIRTUAL_DESTRUCTOR = NO;
-				GCC_WARN_PEDANTIC = NO;
-				GCC_WARN_SHADOW = NO;
-				GCC_WARN_SIGN_COMPARE = YES;
-				GCC_WARN_TYPECHECK_CALLS_TO_PRINTF = NO;
-				GCC_WARN_UNUSED_VARIABLE = YES;
-				HEADER_SEARCH_PATHS = (
-					"\"$(SRCROOT)/../../src\"",
-					"\"$(SRCROOT)/../../src/libraries\"",
-					"\"$(SRCROOT)/../../src/modules\"",
-					/Library/Frameworks/Lua.framework/Headers,
-					/Library/Frameworks/SDL2.framework/Headers,
-				);
-				INFOPLIST_FILE = "love-Info.plist";
-				LD_RUNPATH_SEARCH_PATHS = "@loader_path/../Frameworks";
-				MACOSX_DEPLOYMENT_TARGET = 10.6;
-				ONLY_ACTIVE_ARCH = YES;
-				OTHER_LDFLAGS = "";
-				"OTHER_LDFLAGS[arch=x86_64]" = (
-					"-pagezero_size",
-					10000,
-					"-image_base",
-					100000000,
-				);
-				PRODUCT_NAME = love;
-				WARNING_CFLAGS = (
-					"-Wall",
-					"-W",
-				);
-			};
-			name = Debug;
-		};
-		C01FCF5008A954540054247B /* Release */ = {
-			isa = XCBuildConfiguration;
-			buildSettings = {
-				ALWAYS_SEARCH_USER_PATHS = NO;
-				ARCHS = "$(ARCHS_STANDARD_64_BIT)";
-				CLANG_CXX_LANGUAGE_STANDARD = "c++0x";
-				CLANG_ENABLE_MODULES = YES;
-				DEPLOYMENT_POSTPROCESSING = NO;
-				FRAMEWORK_SEARCH_PATHS = /Library/Frameworks;
-				GCC_INPUT_FILETYPE = automatic;
-				GCC_OPTIMIZATION_LEVEL = 3;
-				GCC_PREPROCESSOR_DEFINITIONS = LOVE_MACOSX_USE_FRAMEWORKS;
-				GCC_TREAT_IMPLICIT_FUNCTION_DECLARATIONS_AS_ERRORS = NO;
-				GCC_WARN_ABOUT_MISSING_NEWLINE = NO;
-				GCC_WARN_ABOUT_MISSING_PROTOTYPES = NO;
-				GCC_WARN_ABOUT_POINTER_SIGNEDNESS = YES;
-				GCC_WARN_ABOUT_RETURN_TYPE = NO;
-				GCC_WARN_CHECK_SWITCH_STATEMENTS = YES;
-				GCC_WARN_FOUR_CHARACTER_CONSTANTS = NO;
-				GCC_WARN_HIDDEN_VIRTUAL_FUNCTIONS = NO;
-				GCC_WARN_INITIALIZER_NOT_FULLY_BRACKETED = NO;
-				GCC_WARN_MISSING_PARENTHESES = NO;
-				GCC_WARN_NON_VIRTUAL_DESTRUCTOR = NO;
-				GCC_WARN_PEDANTIC = NO;
-				GCC_WARN_SHADOW = NO;
-				GCC_WARN_SIGN_COMPARE = YES;
-				GCC_WARN_TYPECHECK_CALLS_TO_PRINTF = NO;
-				GCC_WARN_UNUSED_PARAMETER = NO;
-				GCC_WARN_UNUSED_VALUE = NO;
-				GCC_WARN_UNUSED_VARIABLE = YES;
-				HEADER_SEARCH_PATHS = (
-					"\"$(SRCROOT)/../../src\"",
-					"\"$(SRCROOT)/../../src/libraries\"",
-					"\"$(SRCROOT)/../../src/modules\"",
-					/Library/Frameworks/Lua.framework/Headers,
-					/Library/Frameworks/SDL2.framework/Headers,
-				);
-				INFOPLIST_FILE = "love-Info.plist";
-				LD_RUNPATH_SEARCH_PATHS = "@loader_path/../Frameworks";
-				LLVM_LTO = YES;
-				MACOSX_DEPLOYMENT_TARGET = 10.6;
-				ONLY_ACTIVE_ARCH = NO;
-				OTHER_LDFLAGS = "";
-				"OTHER_LDFLAGS[arch=x86_64]" = (
-					"-pagezero_size",
-					10000,
-					"-image_base",
-					100000000,
-				);
-				PRODUCT_NAME = love;
-				SCAN_ALL_SOURCE_FILES_FOR_INCLUDES = YES;
-				WARNING_CFLAGS = (
-					"-Wall",
-					"-W",
-				);
-			};
-			name = Release;
-		};
-		FA5326C618971A0900F7BBF4 /* Distribution */ = {
-			isa = XCBuildConfiguration;
-			buildSettings = {
-				ALWAYS_SEARCH_USER_PATHS = NO;
-				ARCHS = "$(ARCHS_STANDARD_64_BIT)";
-				CLANG_CXX_LANGUAGE_STANDARD = "c++0x";
-				CLANG_ENABLE_MODULES = YES;
-				DEPLOYMENT_POSTPROCESSING = NO;
-				FRAMEWORK_SEARCH_PATHS = /Library/Frameworks;
-				GCC_INPUT_FILETYPE = automatic;
-				GCC_OPTIMIZATION_LEVEL = 3;
-				GCC_PREPROCESSOR_DEFINITIONS = LOVE_MACOSX_USE_FRAMEWORKS;
-				GCC_TREAT_IMPLICIT_FUNCTION_DECLARATIONS_AS_ERRORS = NO;
-				GCC_WARN_ABOUT_MISSING_NEWLINE = NO;
-				GCC_WARN_ABOUT_MISSING_PROTOTYPES = NO;
-				GCC_WARN_ABOUT_POINTER_SIGNEDNESS = YES;
-				GCC_WARN_ABOUT_RETURN_TYPE = NO;
-				GCC_WARN_CHECK_SWITCH_STATEMENTS = YES;
-				GCC_WARN_FOUR_CHARACTER_CONSTANTS = NO;
-				GCC_WARN_HIDDEN_VIRTUAL_FUNCTIONS = NO;
-				GCC_WARN_INITIALIZER_NOT_FULLY_BRACKETED = NO;
-				GCC_WARN_MISSING_PARENTHESES = NO;
-				GCC_WARN_NON_VIRTUAL_DESTRUCTOR = NO;
-				GCC_WARN_PEDANTIC = NO;
-				GCC_WARN_SHADOW = NO;
-				GCC_WARN_SIGN_COMPARE = YES;
-				GCC_WARN_TYPECHECK_CALLS_TO_PRINTF = NO;
-				GCC_WARN_UNUSED_PARAMETER = NO;
-				GCC_WARN_UNUSED_VALUE = NO;
-				GCC_WARN_UNUSED_VARIABLE = YES;
-				HEADER_SEARCH_PATHS = (
-					"\"$(SRCROOT)/../../src\"",
-					"\"$(SRCROOT)/../../src/libraries\"",
-					"\"$(SRCROOT)/../../src/modules\"",
-					/Library/Frameworks/Lua.framework/Headers,
-					/Library/Frameworks/SDL2.framework/Headers,
-				);
-				INFOPLIST_FILE = "love-Info.plist";
-				LD_RUNPATH_SEARCH_PATHS = "@loader_path/../Frameworks";
-				LLVM_LTO = YES;
-				MACOSX_DEPLOYMENT_TARGET = 10.6;
-				ONLY_ACTIVE_ARCH = NO;
-				OTHER_LDFLAGS = "";
-				"OTHER_LDFLAGS[arch=x86_64]" = (
-					"-pagezero_size",
-					10000,
-					"-image_base",
-					100000000,
-				);
-				PRODUCT_NAME = love;
-				SCAN_ALL_SOURCE_FILES_FOR_INCLUDES = YES;
-				WARNING_CFLAGS = (
-					"-Wall",
-					"-W",
-				);
-			};
-			name = Distribution;
-		};
-		FA5326C718971A0900F7BBF4 /* Distribution */ = {
-			isa = XCBuildConfiguration;
-			buildSettings = {
-				COMBINE_HIDPI_IMAGES = YES;
-				DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
-				FRAMEWORK_SEARCH_PATHS = (
-					"$(inherited)",
-					"\"$(SRCROOT)/build/Release\"",
-					"\"$(SRCROOT)/build/Debug\"",
-				);
-				INSTALL_PATH = /Applications;
-				PRODUCT_NAME = love;
-			};
-			name = Distribution;
-		};
-/* End XCBuildConfiguration section */
-
-/* Begin XCConfigurationList section */
-		C01FCF4A08A954540054247B /* Build configuration list for PBXNativeTarget "love" */ = {
-			isa = XCConfigurationList;
-			buildConfigurations = (
-				C01FCF4B08A954540054247B /* Debug */,
-				C01FCF4C08A954540054247B /* Release */,
-				FA5326C718971A0900F7BBF4 /* Distribution */,
-			);
-			defaultConfigurationIsVisible = 0;
-			defaultConfigurationName = Release;
-		};
-		C01FCF4E08A954540054247B /* Build configuration list for PBXProject "love" */ = {
-			isa = XCConfigurationList;
-			buildConfigurations = (
-				C01FCF4F08A954540054247B /* Debug */,
-				C01FCF5008A954540054247B /* Release */,
-				FA5326C618971A0900F7BBF4 /* Distribution */,
-			);
-			defaultConfigurationIsVisible = 0;
-			defaultConfigurationName = Release;
-		};
-/* End XCConfigurationList section */
-	};
-	rootObject = 29B97313FDCFA39411CA2CEA /* Project object */;
-}

+ 0 - 847
love/src/jni/love/platform/msvc2010/liblove.vcxproj

@@ -1,847 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <ItemGroup Label="ProjectConfigurations">
-    <ProjectConfiguration Include="Debug Dynamic|Win32">
-      <Configuration>Debug Dynamic</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Debug Dynamic|x64">
-      <Configuration>Debug Dynamic</Configuration>
-      <Platform>x64</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Release Dynamic|Win32">
-      <Configuration>Release Dynamic</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Release Dynamic|x64">
-      <Configuration>Release Dynamic</Configuration>
-      <Platform>x64</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Release Static|Win32">
-      <Configuration>Release Static</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Release Static|x64">
-      <Configuration>Release Static</Configuration>
-      <Platform>x64</Platform>
-    </ProjectConfiguration>
-  </ItemGroup>
-  <PropertyGroup Label="Globals">
-    <ProjectGuid>{A3FCC735-3E18-4D6B-9DA9-01D9E910B7F8}</ProjectGuid>
-    <RootNamespace>liblove</RootNamespace>
-  </PropertyGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug Dynamic|Win32'" Label="Configuration">
-    <ConfigurationType>DynamicLibrary</ConfigurationType>
-    <UseDebugLibraries>true</UseDebugLibraries>
-    <CharacterSet>Unicode</CharacterSet>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug Dynamic|x64'" Label="Configuration">
-    <ConfigurationType>DynamicLibrary</ConfigurationType>
-    <UseDebugLibraries>true</UseDebugLibraries>
-    <CharacterSet>Unicode</CharacterSet>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release Static|Win32'" Label="Configuration">
-    <ConfigurationType>StaticLibrary</ConfigurationType>
-    <UseDebugLibraries>false</UseDebugLibraries>
-    <WholeProgramOptimization>true</WholeProgramOptimization>
-    <CharacterSet>Unicode</CharacterSet>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release Static|x64'" Label="Configuration">
-    <ConfigurationType>StaticLibrary</ConfigurationType>
-    <UseDebugLibraries>false</UseDebugLibraries>
-    <WholeProgramOptimization>true</WholeProgramOptimization>
-    <CharacterSet>Unicode</CharacterSet>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release Dynamic|Win32'" Label="Configuration">
-    <ConfigurationType>DynamicLibrary</ConfigurationType>
-    <UseDebugLibraries>false</UseDebugLibraries>
-    <WholeProgramOptimization>true</WholeProgramOptimization>
-    <CharacterSet>Unicode</CharacterSet>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release Dynamic|x64'" Label="Configuration">
-    <ConfigurationType>DynamicLibrary</ConfigurationType>
-    <UseDebugLibraries>false</UseDebugLibraries>
-    <WholeProgramOptimization>true</WholeProgramOptimization>
-    <CharacterSet>Unicode</CharacterSet>
-    <PlatformToolset>Windows7.1SDK</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Label="Configuration" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
-    <ConfigurationType>StaticLibrary</ConfigurationType>
-    <CharacterSet>Unicode</CharacterSet>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
-    <ConfigurationType>StaticLibrary</ConfigurationType>
-    <CharacterSet>Unicode</CharacterSet>
-  </PropertyGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
-  <ImportGroup Label="ExtensionSettings">
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug Dynamic|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug Dynamic|x64'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-  </ImportGroup>
-  <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release Static|Win32'">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release Static|x64'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release Dynamic|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release Dynamic|x64'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-  </ImportGroup>
-  <PropertyGroup Label="UserMacros" />
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
-    <OutDir>$(SolutionDir)\$(PlatformShortName)\$(Configuration)</OutDir>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
-    <OutDir>$(SolutionDir)\$(PlatformShortName)\$(Configuration)</OutDir>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
-    <IntDir>$(ProjectName)\$(Configuration)\</IntDir>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
-    <IntDir>$(ProjectName)\$(Configuration)\</IntDir>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug Dynamic|Win32'">
-    <OutDir>$(SolutionDir)\bin\$(PlatformShortName)\Debug\MD\</OutDir>
-    <IntDir>$(ProjectName)\$(PlatformShortName)\Debug\</IntDir>
-    <GenerateManifest>false</GenerateManifest>
-    <TargetName>love</TargetName>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug Dynamic|x64'">
-    <OutDir>$(SolutionDir)\bin\$(PlatformShortName)\Debug\MD\</OutDir>
-    <IntDir>$(ProjectName)\$(PlatformShortName)\Debug\</IntDir>
-    <GenerateManifest>false</GenerateManifest>
-    <TargetName>love</TargetName>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release Static|Win32'">
-    <OutDir>$(SolutionDir)\bin\$(PlatformShortName)\Release\MT\</OutDir>
-    <IntDir>$(ProjectName)\$(PlatformShortName)\Release\</IntDir>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release Static|x64'">
-    <OutDir>$(SolutionDir)\bin\$(PlatformShortName)\Release\MT\</OutDir>
-    <IntDir>$(ProjectName)\$(PlatformShortName)\Release\</IntDir>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release Dynamic|Win32'">
-    <OutDir>$(SolutionDir)\bin\$(PlatformShortName)\Release\MD\</OutDir>
-    <IntDir>$(ProjectName)\$(PlatformShortName)\Release\</IntDir>
-    <GenerateManifest>false</GenerateManifest>
-    <TargetName>love</TargetName>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release Dynamic|x64'">
-    <OutDir>$(SolutionDir)\bin\$(PlatformShortName)\Release\MD\</OutDir>
-    <IntDir>$(ProjectName)\$(PlatformShortName)\Release\</IntDir>
-    <GenerateManifest>false</GenerateManifest>
-    <TargetName>love</TargetName>
-  </PropertyGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug Dynamic|Win32'">
-    <ClCompile>
-      <WarningLevel>Level3</WarningLevel>
-      <Optimization>Disabled</Optimization>
-      <AdditionalIncludeDirectories>include;include\SDL;include\AL;..\..\src;..\..\src\libraries;..\..\src\modules;..\..\src\libraries\enet\libenet\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <MultiProcessorCompilation>true</MultiProcessorCompilation>
-      <PreprocessorDefinitions>_DEBUG;DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <MinimalRebuild>false</MinimalRebuild>
-      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
-      <ObjectFileName>$(IntDir)obj\obj\obj\%(RelativeDir)</ObjectFileName>
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
-    </ClCompile>
-    <Link>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-      <AdditionalDependencies>msvcrtd.lib;msvcprtd.lib;kernel32.lib;user32.lib;shell32.lib;uuid.lib;advapi32.lib;ws2_32.lib;winmm.lib;opengl32.lib;oldnames.lib;DevIL.lib;freetype.lib;libmodplug.lib;libogg.lib;libvorbis.lib;libvorbisfile.lib;lua51.lib;mpg123.lib;physfs.lib;OpenAL.lib;zlib.lib;SDL2.lib;%(AdditionalDependencies)</AdditionalDependencies>
-      <IgnoreAllDefaultLibraries>true</IgnoreAllDefaultLibraries>
-      <AdditionalLibraryDirectories>lib\$(PlatformShortName)\Debug\MD\</AdditionalLibraryDirectories>
-      <ProgramDatabaseFile>$(TargetDir)lib$(TargetName).pdb</ProgramDatabaseFile>
-      <ProfileGuidedDatabase>$(TargetDir)lib$(TargetName).pgd</ProfileGuidedDatabase>
-    </Link>
-    <ResourceCompile>
-      <PreprocessorDefinitions>LOVE_LIB;_UNICODE;UNICODE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-    </ResourceCompile>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug Dynamic|x64'">
-    <ClCompile>
-      <WarningLevel>Level3</WarningLevel>
-      <Optimization>Disabled</Optimization>
-      <AdditionalIncludeDirectories>include;include\SDL;include\AL;..\..\src;..\..\src\libraries;..\..\src\modules;..\..\src\libraries\enet\libenet\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <MultiProcessorCompilation>true</MultiProcessorCompilation>
-      <PreprocessorDefinitions>_DEBUG;DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <MinimalRebuild>false</MinimalRebuild>
-      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
-      <ObjectFileName>$(IntDir)obj\obj\obj\%(RelativeDir)</ObjectFileName>
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
-    </ClCompile>
-    <Link>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-      <AdditionalDependencies>msvcrtd.lib;msvcprtd.lib;kernel32.lib;user32.lib;shell32.lib;uuid.lib;advapi32.lib;ws2_32.lib;winmm.lib;opengl32.lib;oldnames.lib;DevIL.lib;freetype.lib;libmodplug.lib;libogg.lib;libvorbis.lib;libvorbisfile.lib;lua51.lib;mpg123.lib;physfs.lib;OpenAL.lib;zlib.lib;SDL2.lib;%(AdditionalDependencies)</AdditionalDependencies>
-      <IgnoreAllDefaultLibraries>true</IgnoreAllDefaultLibraries>
-      <AdditionalLibraryDirectories>lib\$(PlatformShortName)\Debug\MD\</AdditionalLibraryDirectories>
-      <ProgramDatabaseFile>$(TargetDir)lib$(TargetName).pdb</ProgramDatabaseFile>
-      <ProfileGuidedDatabase>$(TargetDir)lib$(TargetName).pgd</ProfileGuidedDatabase>
-    </Link>
-    <ResourceCompile>
-      <PreprocessorDefinitions>LOVE_LIB;_UNICODE;UNICODE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-    </ResourceCompile>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release Static|Win32'">
-    <ClCompile>
-      <WarningLevel>Level3</WarningLevel>
-      <Optimization>MaxSpeed</Optimization>
-      <FunctionLevelLinking>true</FunctionLevelLinking>
-      <IntrinsicFunctions>true</IntrinsicFunctions>
-      <AdditionalIncludeDirectories>include;include\SDL;include\AL;..\..\src;..\..\src\libraries;..\..\src\modules;..\..\src\libraries\enet\libenet\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <MultiProcessorCompilation>true</MultiProcessorCompilation>
-      <OmitFramePointers>true</OmitFramePointers>
-      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
-      <BufferSecurityCheck>false</BufferSecurityCheck>
-      <ObjectFileName>$(IntDir)obj\obj\obj\%(RelativeDir)</ObjectFileName>
-      <StringPooling>true</StringPooling>
-    </ClCompile>
-    <Link>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-      <EnableCOMDATFolding>true</EnableCOMDATFolding>
-      <OptimizeReferences>true</OptimizeReferences>
-    </Link>
-    <ResourceCompile>
-      <PreprocessorDefinitions>LOVE_LIB;_UNICODE;UNICODE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-    </ResourceCompile>
-    <Lib>
-      <TargetMachine>MachineX86</TargetMachine>
-      <AdditionalDependencies>
-      </AdditionalDependencies>
-      <AdditionalLibraryDirectories>
-      </AdditionalLibraryDirectories>
-      <IgnoreAllDefaultLibraries>true</IgnoreAllDefaultLibraries>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-    </Lib>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release Static|x64'">
-    <ClCompile>
-      <WarningLevel>Level3</WarningLevel>
-      <Optimization>MaxSpeed</Optimization>
-      <FunctionLevelLinking>true</FunctionLevelLinking>
-      <IntrinsicFunctions>true</IntrinsicFunctions>
-      <AdditionalIncludeDirectories>include;include\SDL;include\AL;..\..\src;..\..\src\libraries;..\..\src\modules;..\..\src\libraries\enet\libenet\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <MultiProcessorCompilation>true</MultiProcessorCompilation>
-      <OmitFramePointers>true</OmitFramePointers>
-      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
-      <BufferSecurityCheck>false</BufferSecurityCheck>
-      <ObjectFileName>$(IntDir)obj\obj\obj\%(RelativeDir)</ObjectFileName>
-      <StringPooling>true</StringPooling>
-    </ClCompile>
-    <Link>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-      <EnableCOMDATFolding>true</EnableCOMDATFolding>
-      <OptimizeReferences>true</OptimizeReferences>
-    </Link>
-    <ResourceCompile>
-      <PreprocessorDefinitions>LOVE_LIB;_UNICODE;UNICODE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-    </ResourceCompile>
-    <Lib>
-      <TargetMachine>MachineX64</TargetMachine>
-      <AdditionalDependencies>
-      </AdditionalDependencies>
-      <AdditionalLibraryDirectories>
-      </AdditionalLibraryDirectories>
-      <IgnoreAllDefaultLibraries>true</IgnoreAllDefaultLibraries>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-    </Lib>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release Dynamic|Win32'">
-    <ClCompile>
-      <WarningLevel>Level3</WarningLevel>
-      <Optimization>MaxSpeed</Optimization>
-      <FunctionLevelLinking>true</FunctionLevelLinking>
-      <IntrinsicFunctions>true</IntrinsicFunctions>
-      <AdditionalIncludeDirectories>include;include\SDL;include\AL;..\..\src;..\..\src\libraries;..\..\src\modules;..\..\src\libraries\enet\libenet\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <MultiProcessorCompilation>true</MultiProcessorCompilation>
-      <OmitFramePointers>true</OmitFramePointers>
-      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
-      <BufferSecurityCheck>false</BufferSecurityCheck>
-      <ObjectFileName>$(IntDir)obj\obj\obj\%(RelativeDir)</ObjectFileName>
-      <StringPooling>true</StringPooling>
-    </ClCompile>
-    <Link>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-      <EnableCOMDATFolding>true</EnableCOMDATFolding>
-      <OptimizeReferences>true</OptimizeReferences>
-      <AdditionalDependencies>msvcrt.lib;msvcprt.lib;kernel32.lib;user32.lib;shell32.lib;uuid.lib;advapi32.lib;ws2_32.lib;winmm.lib;opengl32.lib;oldnames.lib;DevIL.lib;freetype.lib;libmodplug.lib;libogg.lib;libvorbis.lib;libvorbisfile.lib;lua51.lib;mpg123.lib;physfs.lib;OpenAL.lib;zlib.lib;SDL2.lib;%(AdditionalDependencies)</AdditionalDependencies>
-      <IgnoreAllDefaultLibraries>true</IgnoreAllDefaultLibraries>
-      <AdditionalLibraryDirectories>lib\$(PlatformShortName)\Release\MD\</AdditionalLibraryDirectories>
-      <ProgramDatabaseFile>$(TargetDir)lib$(TargetName).pdb</ProgramDatabaseFile>
-      <ProfileGuidedDatabase>$(TargetDir)lib$(TargetName).pgd</ProfileGuidedDatabase>
-    </Link>
-    <ResourceCompile>
-      <PreprocessorDefinitions>LOVE_LIB;_UNICODE;UNICODE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-    </ResourceCompile>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release Dynamic|x64'">
-    <ClCompile>
-      <WarningLevel>Level3</WarningLevel>
-      <Optimization>MaxSpeed</Optimization>
-      <FunctionLevelLinking>true</FunctionLevelLinking>
-      <IntrinsicFunctions>true</IntrinsicFunctions>
-      <AdditionalIncludeDirectories>include;include\SDL;include\AL;..\..\src;..\..\src\libraries;..\..\src\modules;..\..\src\libraries\enet\libenet\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <MultiProcessorCompilation>true</MultiProcessorCompilation>
-      <OmitFramePointers>true</OmitFramePointers>
-      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
-      <BufferSecurityCheck>false</BufferSecurityCheck>
-      <ObjectFileName>$(IntDir)obj\obj\obj\%(RelativeDir)</ObjectFileName>
-      <StringPooling>true</StringPooling>
-    </ClCompile>
-    <Link>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-      <EnableCOMDATFolding>true</EnableCOMDATFolding>
-      <OptimizeReferences>true</OptimizeReferences>
-      <AdditionalDependencies>msvcrt.lib;msvcprt.lib;kernel32.lib;user32.lib;shell32.lib;uuid.lib;advapi32.lib;ws2_32.lib;winmm.lib;opengl32.lib;oldnames.lib;DevIL.lib;freetype.lib;libmodplug.lib;libogg.lib;libvorbis.lib;libvorbisfile.lib;lua51.lib;mpg123.lib;physfs.lib;OpenAL.lib;zlib.lib;SDL2.lib;%(AdditionalDependencies)</AdditionalDependencies>
-      <IgnoreAllDefaultLibraries>true</IgnoreAllDefaultLibraries>
-      <AdditionalLibraryDirectories>lib\$(PlatformShortName)\Release\MD\</AdditionalLibraryDirectories>
-      <ProgramDatabaseFile>$(TargetDir)lib$(TargetName).pdb</ProgramDatabaseFile>
-      <ProfileGuidedDatabase>$(TargetDir)lib$(TargetName).pgd</ProfileGuidedDatabase>
-    </Link>
-    <ResourceCompile>
-      <PreprocessorDefinitions>LOVE_LIB;_UNICODE;UNICODE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-    </ResourceCompile>
-  </ItemDefinitionGroup>
-  <ItemGroup>
-    <ClCompile Include="..\..\src\common\b64.cpp" />
-    <ClCompile Include="..\..\src\common\delay.cpp" />
-    <ClCompile Include="..\..\src\common\Exception.cpp" />
-    <ClCompile Include="..\..\src\common\Matrix.cpp" />
-    <ClCompile Include="..\..\src\common\Memoizer.cpp" />
-    <ClCompile Include="..\..\src\common\Module.cpp" />
-    <ClCompile Include="..\..\src\common\Object.cpp" />
-    <ClCompile Include="..\..\src\common\Reference.cpp" />
-    <ClCompile Include="..\..\src\common\runtime.cpp" />
-    <ClCompile Include="..\..\src\common\utf8.cpp" />
-    <ClCompile Include="..\..\src\common\Variant.cpp" />
-    <ClCompile Include="..\..\src\common\Vector.cpp" />
-    <ClCompile Include="..\..\src\common\wrap_Data.cpp" />
-    <ClCompile Include="..\..\src\libraries\Box2D\Collision\b2BroadPhase.cpp" />
-    <ClCompile Include="..\..\src\libraries\Box2D\Collision\b2CollideCircle.cpp" />
-    <ClCompile Include="..\..\src\libraries\Box2D\Collision\b2CollideEdge.cpp" />
-    <ClCompile Include="..\..\src\libraries\Box2D\Collision\b2CollidePolygon.cpp" />
-    <ClCompile Include="..\..\src\libraries\Box2D\Collision\b2Collision.cpp" />
-    <ClCompile Include="..\..\src\libraries\Box2D\Collision\b2Distance.cpp" />
-    <ClCompile Include="..\..\src\libraries\Box2D\Collision\b2DynamicTree.cpp" />
-    <ClCompile Include="..\..\src\libraries\Box2D\Collision\b2TimeOfImpact.cpp" />
-    <ClCompile Include="..\..\src\libraries\Box2D\Collision\Shapes\b2ChainShape.cpp" />
-    <ClCompile Include="..\..\src\libraries\Box2D\Collision\Shapes\b2CircleShape.cpp" />
-    <ClCompile Include="..\..\src\libraries\Box2D\Collision\Shapes\b2EdgeShape.cpp" />
-    <ClCompile Include="..\..\src\libraries\Box2D\Collision\Shapes\b2PolygonShape.cpp" />
-    <ClCompile Include="..\..\src\libraries\Box2D\Common\b2BlockAllocator.cpp" />
-    <ClCompile Include="..\..\src\libraries\Box2D\Common\b2Draw.cpp" />
-    <ClCompile Include="..\..\src\libraries\Box2D\Common\b2Math.cpp" />
-    <ClCompile Include="..\..\src\libraries\Box2D\Common\b2Settings.cpp" />
-    <ClCompile Include="..\..\src\libraries\Box2D\Common\b2StackAllocator.cpp" />
-    <ClCompile Include="..\..\src\libraries\Box2D\Common\b2Timer.cpp" />
-    <ClCompile Include="..\..\src\libraries\Box2D\Dynamics\b2Body.cpp" />
-    <ClCompile Include="..\..\src\libraries\Box2D\Dynamics\b2ContactManager.cpp" />
-    <ClCompile Include="..\..\src\libraries\Box2D\Dynamics\b2Fixture.cpp" />
-    <ClCompile Include="..\..\src\libraries\Box2D\Dynamics\b2Island.cpp" />
-    <ClCompile Include="..\..\src\libraries\Box2D\Dynamics\b2World.cpp" />
-    <ClCompile Include="..\..\src\libraries\Box2D\Dynamics\b2WorldCallbacks.cpp" />
-    <ClCompile Include="..\..\src\libraries\Box2D\Dynamics\Contacts\b2ChainAndCircleContact.cpp" />
-    <ClCompile Include="..\..\src\libraries\Box2D\Dynamics\Contacts\b2ChainAndPolygonContact.cpp" />
-    <ClCompile Include="..\..\src\libraries\Box2D\Dynamics\Contacts\b2CircleContact.cpp" />
-    <ClCompile Include="..\..\src\libraries\Box2D\Dynamics\Contacts\b2Contact.cpp" />
-    <ClCompile Include="..\..\src\libraries\Box2D\Dynamics\Contacts\b2ContactSolver.cpp" />
-    <ClCompile Include="..\..\src\libraries\Box2D\Dynamics\Contacts\b2EdgeAndCircleContact.cpp" />
-    <ClCompile Include="..\..\src\libraries\Box2D\Dynamics\Contacts\b2EdgeAndPolygonContact.cpp" />
-    <ClCompile Include="..\..\src\libraries\Box2D\Dynamics\Contacts\b2PolygonAndCircleContact.cpp" />
-    <ClCompile Include="..\..\src\libraries\Box2D\Dynamics\Contacts\b2PolygonContact.cpp" />
-    <ClCompile Include="..\..\src\libraries\Box2D\Dynamics\Joints\b2DistanceJoint.cpp" />
-    <ClCompile Include="..\..\src\libraries\Box2D\Dynamics\Joints\b2FrictionJoint.cpp" />
-    <ClCompile Include="..\..\src\libraries\Box2D\Dynamics\Joints\b2GearJoint.cpp" />
-    <ClCompile Include="..\..\src\libraries\Box2D\Dynamics\Joints\b2Joint.cpp" />
-    <ClCompile Include="..\..\src\libraries\Box2D\Dynamics\Joints\b2MouseJoint.cpp" />
-    <ClCompile Include="..\..\src\libraries\Box2D\Dynamics\Joints\b2PrismaticJoint.cpp" />
-    <ClCompile Include="..\..\src\libraries\Box2D\Dynamics\Joints\b2PulleyJoint.cpp" />
-    <ClCompile Include="..\..\src\libraries\Box2D\Dynamics\Joints\b2RevoluteJoint.cpp" />
-    <ClCompile Include="..\..\src\libraries\Box2D\Dynamics\Joints\b2RopeJoint.cpp" />
-    <ClCompile Include="..\..\src\libraries\Box2D\Dynamics\Joints\b2WeldJoint.cpp" />
-    <ClCompile Include="..\..\src\libraries\Box2D\Dynamics\Joints\b2WheelJoint.cpp" />
-    <ClCompile Include="..\..\src\libraries\Box2D\Rope\b2Rope.cpp" />
-    <ClCompile Include="..\..\src\libraries\ddsparse\ddsparse.cpp" />
-    <ClCompile Include="..\..\src\libraries\enet\enet.cpp" />
-    <ClCompile Include="..\..\src\libraries\enet\libenet\callbacks.c" />
-    <ClCompile Include="..\..\src\libraries\enet\libenet\compress.c" />
-    <ClCompile Include="..\..\src\libraries\enet\libenet\host.c" />
-    <ClCompile Include="..\..\src\libraries\enet\libenet\list.c" />
-    <ClCompile Include="..\..\src\libraries\enet\libenet\packet.c" />
-    <ClCompile Include="..\..\src\libraries\enet\libenet\peer.c" />
-    <ClCompile Include="..\..\src\libraries\enet\libenet\protocol.c" />
-    <ClCompile Include="..\..\src\libraries\enet\libenet\win32.c" />
-    <ClCompile Include="..\..\src\libraries\luasocket\libluasocket\auxiliar.c" />
-    <ClCompile Include="..\..\src\libraries\luasocket\libluasocket\buffer.c" />
-    <ClCompile Include="..\..\src\libraries\luasocket\libluasocket\except.c" />
-    <ClCompile Include="..\..\src\libraries\luasocket\libluasocket\inet.c" />
-    <ClCompile Include="..\..\src\libraries\luasocket\libluasocket\io.c" />
-    <ClCompile Include="..\..\src\libraries\luasocket\libluasocket\luasocket.c" />
-    <ClCompile Include="..\..\src\libraries\luasocket\libluasocket\mime.c" />
-    <ClCompile Include="..\..\src\libraries\luasocket\libluasocket\options.c" />
-    <ClCompile Include="..\..\src\libraries\luasocket\libluasocket\select.c" />
-    <ClCompile Include="..\..\src\libraries\luasocket\libluasocket\tcp.c" />
-    <ClCompile Include="..\..\src\libraries\luasocket\libluasocket\timeout.c" />
-    <ClCompile Include="..\..\src\libraries\luasocket\libluasocket\udp.c" />
-    <ClCompile Include="..\..\src\libraries\luasocket\libluasocket\wsocket.c" />
-    <ClCompile Include="..\..\src\libraries\luasocket\luasocket.cpp" />
-    <ClCompile Include="..\..\src\libraries\noise1234\simplexnoise1234.cpp" />
-    <ClCompile Include="..\..\src\libraries\Wuff\wuff.c" />
-    <ClCompile Include="..\..\src\libraries\Wuff\wuff_convert.c" />
-    <ClCompile Include="..\..\src\libraries\Wuff\wuff_internal.c" />
-    <ClCompile Include="..\..\src\libraries\Wuff\wuff_memory.c" />
-    <ClCompile Include="..\..\src\modules\audio\Audio.cpp" />
-    <ClCompile Include="..\..\src\modules\audio\null\Audio.cpp" />
-    <ClCompile Include="..\..\src\modules\audio\null\Source.cpp" />
-    <ClCompile Include="..\..\src\modules\audio\openal\Audio.cpp" />
-    <ClCompile Include="..\..\src\modules\audio\openal\Pool.cpp" />
-    <ClCompile Include="..\..\src\modules\audio\openal\Source.cpp" />
-    <ClCompile Include="..\..\src\modules\audio\Source.cpp" />
-    <ClCompile Include="..\..\src\modules\audio\wrap_Audio.cpp" />
-    <ClCompile Include="..\..\src\modules\audio\wrap_Source.cpp" />
-    <ClCompile Include="..\..\src\modules\event\Event.cpp" />
-    <ClCompile Include="..\..\src\modules\event\sdl\Event.cpp" />
-    <ClCompile Include="..\..\src\modules\event\sdl\wrap_Event.cpp" />
-    <ClCompile Include="..\..\src\modules\filesystem\File.cpp" />
-    <ClCompile Include="..\..\src\modules\filesystem\FileData.cpp" />
-    <ClCompile Include="..\..\src\modules\filesystem\physfs\File.cpp" />
-    <ClCompile Include="..\..\src\modules\filesystem\physfs\Filesystem.cpp" />
-    <ClCompile Include="..\..\src\modules\filesystem\physfs\wrap_File.cpp" />
-    <ClCompile Include="..\..\src\modules\filesystem\physfs\wrap_FileData.cpp" />
-    <ClCompile Include="..\..\src\modules\filesystem\physfs\wrap_Filesystem.cpp" />
-    <ClCompile Include="..\..\src\modules\font\freetype\Font.cpp" />
-    <ClCompile Include="..\..\src\modules\font\freetype\TrueTypeRasterizer.cpp" />
-    <ClCompile Include="..\..\src\modules\font\freetype\wrap_Font.cpp" />
-    <ClCompile Include="..\..\src\modules\font\GlyphData.cpp" />
-    <ClCompile Include="..\..\src\modules\font\ImageRasterizer.cpp" />
-    <ClCompile Include="..\..\src\modules\font\Rasterizer.cpp" />
-    <ClCompile Include="..\..\src\modules\font\wrap_GlyphData.cpp" />
-    <ClCompile Include="..\..\src\modules\font\wrap_Rasterizer.cpp" />
-    <ClCompile Include="..\..\src\modules\graphics\Drawable.cpp" />
-    <ClCompile Include="..\..\src\modules\graphics\Graphics.cpp" />
-    <ClCompile Include="..\..\src\modules\graphics\Image.cpp" />
-    <ClCompile Include="..\..\src\modules\graphics\opengl\Canvas.cpp" />
-    <ClCompile Include="..\..\src\modules\graphics\opengl\Font.cpp" />
-    <ClCompile Include="..\..\src\modules\graphics\opengl\GLee.c" />
-    <ClCompile Include="..\..\src\modules\graphics\opengl\Graphics.cpp" />
-    <ClCompile Include="..\..\src\modules\graphics\opengl\Image.cpp" />
-    <ClCompile Include="..\..\src\modules\graphics\opengl\Mesh.cpp" />
-    <ClCompile Include="..\..\src\modules\graphics\opengl\OpenGL.cpp" />
-    <ClCompile Include="..\..\src\modules\graphics\opengl\ParticleSystem.cpp" />
-    <ClCompile Include="..\..\src\modules\graphics\opengl\Polyline.cpp" />
-    <ClCompile Include="..\..\src\modules\graphics\opengl\Shader.cpp" />
-    <ClCompile Include="..\..\src\modules\graphics\opengl\SpriteBatch.cpp" />
-    <ClCompile Include="..\..\src\modules\graphics\opengl\VertexBuffer.cpp" />
-    <ClCompile Include="..\..\src\modules\graphics\opengl\wrap_Canvas.cpp" />
-    <ClCompile Include="..\..\src\modules\graphics\opengl\wrap_Font.cpp" />
-    <ClCompile Include="..\..\src\modules\graphics\opengl\wrap_Graphics.cpp" />
-    <ClCompile Include="..\..\src\modules\graphics\opengl\wrap_Image.cpp" />
-    <ClCompile Include="..\..\src\modules\graphics\opengl\wrap_Mesh.cpp" />
-    <ClCompile Include="..\..\src\modules\graphics\opengl\wrap_ParticleSystem.cpp" />
-    <ClCompile Include="..\..\src\modules\graphics\opengl\wrap_Quad.cpp" />
-    <ClCompile Include="..\..\src\modules\graphics\opengl\wrap_Shader.cpp" />
-    <ClCompile Include="..\..\src\modules\graphics\opengl\wrap_SpriteBatch.cpp" />
-    <ClCompile Include="..\..\src\modules\graphics\Quad.cpp" />
-    <ClCompile Include="..\..\src\modules\graphics\Volatile.cpp" />
-    <ClCompile Include="..\..\src\modules\image\CompressedData.cpp" />
-    <ClCompile Include="..\..\src\modules\image\ImageData.cpp" />
-    <ClCompile Include="..\..\src\modules\image\magpie\CompressedData.cpp" />
-    <ClCompile Include="..\..\src\modules\image\magpie\ddsHandler.cpp" />
-    <ClCompile Include="..\..\src\modules\image\magpie\DevilHandler.cpp" />
-    <ClCompile Include="..\..\src\modules\image\magpie\Image.cpp" />
-    <ClCompile Include="..\..\src\modules\image\magpie\ImageData.cpp" />
-    <ClCompile Include="..\..\src\modules\image\wrap_CompressedData.cpp" />
-    <ClCompile Include="..\..\src\modules\image\wrap_Image.cpp" />
-    <ClCompile Include="..\..\src\modules\image\wrap_ImageData.cpp" />
-    <ClCompile Include="..\..\src\modules\joystick\Joystick.cpp" />
-    <ClCompile Include="..\..\src\modules\joystick\sdl\Joystick.cpp" />
-    <ClCompile Include="..\..\src\modules\joystick\sdl\JoystickModule.cpp" />
-    <ClCompile Include="..\..\src\modules\joystick\sdl\wrap_Joystick.cpp" />
-    <ClCompile Include="..\..\src\modules\joystick\sdl\wrap_JoystickModule.cpp" />
-    <ClCompile Include="..\..\src\modules\keyboard\Keyboard.cpp" />
-    <ClCompile Include="..\..\src\modules\keyboard\sdl\Keyboard.cpp" />
-    <ClCompile Include="..\..\src\modules\keyboard\wrap_Keyboard.cpp" />
-    <ClCompile Include="..\..\src\modules\love\love.cpp" />
-    <ClCompile Include="..\..\src\modules\math\BezierCurve.cpp" />
-    <ClCompile Include="..\..\src\modules\math\MathModule.cpp" />
-    <ClCompile Include="..\..\src\modules\math\RandomGenerator.cpp" />
-    <ClCompile Include="..\..\src\modules\math\wrap_BezierCurve.cpp" />
-    <ClCompile Include="..\..\src\modules\math\wrap_Math.cpp" />
-    <ClCompile Include="..\..\src\modules\math\wrap_RandomGenerator.cpp" />
-    <ClCompile Include="..\..\src\modules\mouse\Cursor.cpp" />
-    <ClCompile Include="..\..\src\modules\mouse\Mouse.cpp" />
-    <ClCompile Include="..\..\src\modules\mouse\sdl\Cursor.cpp" />
-    <ClCompile Include="..\..\src\modules\mouse\sdl\Mouse.cpp" />
-    <ClCompile Include="..\..\src\modules\mouse\wrap_Cursor.cpp" />
-    <ClCompile Include="..\..\src\modules\mouse\wrap_Mouse.cpp" />
-    <ClCompile Include="..\..\src\modules\physics\Body.cpp" />
-    <ClCompile Include="..\..\src\modules\physics\box2d\Body.cpp" />
-    <ClCompile Include="..\..\src\modules\physics\box2d\ChainShape.cpp" />
-    <ClCompile Include="..\..\src\modules\physics\box2d\CircleShape.cpp" />
-    <ClCompile Include="..\..\src\modules\physics\box2d\Contact.cpp" />
-    <ClCompile Include="..\..\src\modules\physics\box2d\DistanceJoint.cpp" />
-    <ClCompile Include="..\..\src\modules\physics\box2d\EdgeShape.cpp" />
-    <ClCompile Include="..\..\src\modules\physics\box2d\Fixture.cpp" />
-    <ClCompile Include="..\..\src\modules\physics\box2d\FrictionJoint.cpp" />
-    <ClCompile Include="..\..\src\modules\physics\box2d\GearJoint.cpp" />
-    <ClCompile Include="..\..\src\modules\physics\box2d\Joint.cpp" />
-    <ClCompile Include="..\..\src\modules\physics\box2d\MouseJoint.cpp" />
-    <ClCompile Include="..\..\src\modules\physics\box2d\Physics.cpp" />
-    <ClCompile Include="..\..\src\modules\physics\box2d\PolygonShape.cpp" />
-    <ClCompile Include="..\..\src\modules\physics\box2d\PrismaticJoint.cpp" />
-    <ClCompile Include="..\..\src\modules\physics\box2d\PulleyJoint.cpp" />
-    <ClCompile Include="..\..\src\modules\physics\box2d\RevoluteJoint.cpp" />
-    <ClCompile Include="..\..\src\modules\physics\box2d\RopeJoint.cpp" />
-    <ClCompile Include="..\..\src\modules\physics\box2d\Shape.cpp" />
-    <ClCompile Include="..\..\src\modules\physics\box2d\WeldJoint.cpp" />
-    <ClCompile Include="..\..\src\modules\physics\box2d\WheelJoint.cpp" />
-    <ClCompile Include="..\..\src\modules\physics\box2d\World.cpp" />
-    <ClCompile Include="..\..\src\modules\physics\box2d\wrap_Body.cpp" />
-    <ClCompile Include="..\..\src\modules\physics\box2d\wrap_ChainShape.cpp" />
-    <ClCompile Include="..\..\src\modules\physics\box2d\wrap_CircleShape.cpp" />
-    <ClCompile Include="..\..\src\modules\physics\box2d\wrap_Contact.cpp" />
-    <ClCompile Include="..\..\src\modules\physics\box2d\wrap_DistanceJoint.cpp" />
-    <ClCompile Include="..\..\src\modules\physics\box2d\wrap_EdgeShape.cpp" />
-    <ClCompile Include="..\..\src\modules\physics\box2d\wrap_Fixture.cpp" />
-    <ClCompile Include="..\..\src\modules\physics\box2d\wrap_FrictionJoint.cpp" />
-    <ClCompile Include="..\..\src\modules\physics\box2d\wrap_GearJoint.cpp" />
-    <ClCompile Include="..\..\src\modules\physics\box2d\wrap_Joint.cpp" />
-    <ClCompile Include="..\..\src\modules\physics\box2d\wrap_MouseJoint.cpp" />
-    <ClCompile Include="..\..\src\modules\physics\box2d\wrap_Physics.cpp" />
-    <ClCompile Include="..\..\src\modules\physics\box2d\wrap_PolygonShape.cpp" />
-    <ClCompile Include="..\..\src\modules\physics\box2d\wrap_PrismaticJoint.cpp" />
-    <ClCompile Include="..\..\src\modules\physics\box2d\wrap_PulleyJoint.cpp" />
-    <ClCompile Include="..\..\src\modules\physics\box2d\wrap_RevoluteJoint.cpp" />
-    <ClCompile Include="..\..\src\modules\physics\box2d\wrap_RopeJoint.cpp" />
-    <ClCompile Include="..\..\src\modules\physics\box2d\wrap_Shape.cpp" />
-    <ClCompile Include="..\..\src\modules\physics\box2d\wrap_WeldJoint.cpp" />
-    <ClCompile Include="..\..\src\modules\physics\box2d\wrap_WheelJoint.cpp" />
-    <ClCompile Include="..\..\src\modules\physics\box2d\wrap_World.cpp" />
-    <ClCompile Include="..\..\src\modules\physics\Joint.cpp" />
-    <ClCompile Include="..\..\src\modules\physics\Shape.cpp" />
-    <ClCompile Include="..\..\src\modules\sound\lullaby\Decoder.cpp" />
-    <ClCompile Include="..\..\src\modules\sound\lullaby\FLACDecoder.cpp" />
-    <ClCompile Include="..\..\src\modules\sound\lullaby\ModPlugDecoder.cpp" />
-    <ClCompile Include="..\..\src\modules\sound\lullaby\Mpg123Decoder.cpp" />
-    <ClCompile Include="..\..\src\modules\sound\lullaby\Sound.cpp" />
-    <ClCompile Include="..\..\src\modules\sound\lullaby\VorbisDecoder.cpp" />
-    <ClCompile Include="..\..\src\modules\sound\lullaby\WaveDecoder.cpp" />
-    <ClCompile Include="..\..\src\modules\sound\Sound.cpp" />
-    <ClCompile Include="..\..\src\modules\sound\SoundData.cpp" />
-    <ClCompile Include="..\..\src\modules\sound\wrap_Decoder.cpp" />
-    <ClCompile Include="..\..\src\modules\sound\wrap_Sound.cpp" />
-    <ClCompile Include="..\..\src\modules\sound\wrap_SoundData.cpp" />
-    <ClCompile Include="..\..\src\modules\system\sdl\System.cpp" />
-    <ClCompile Include="..\..\src\modules\system\System.cpp" />
-    <ClCompile Include="..\..\src\modules\system\wrap_System.cpp" />
-    <ClCompile Include="..\..\src\modules\thread\Channel.cpp" />
-    <ClCompile Include="..\..\src\modules\thread\LuaThread.cpp" />
-    <ClCompile Include="..\..\src\modules\thread\sdl\Thread.cpp" />
-    <ClCompile Include="..\..\src\modules\thread\sdl\threads.cpp" />
-    <ClCompile Include="..\..\src\modules\thread\ThreadModule.cpp" />
-    <ClCompile Include="..\..\src\modules\thread\threads.cpp" />
-    <ClCompile Include="..\..\src\modules\thread\wrap_Channel.cpp" />
-    <ClCompile Include="..\..\src\modules\thread\wrap_LuaThread.cpp" />
-    <ClCompile Include="..\..\src\modules\thread\wrap_ThreadModule.cpp" />
-    <ClCompile Include="..\..\src\modules\timer\sdl\Timer.cpp" />
-    <ClCompile Include="..\..\src\modules\timer\wrap_Timer.cpp" />
-    <ClCompile Include="..\..\src\modules\window\sdl\Window.cpp" />
-    <ClCompile Include="..\..\src\modules\window\Window.cpp" />
-    <ClCompile Include="..\..\src\modules\window\wrap_Window.cpp" />
-  </ItemGroup>
-  <ItemGroup>
-    <None Include="..\..\src\scripts\auto.lua" />
-    <None Include="..\..\src\scripts\boot.lua" />
-    <None Include="..\..\src\scripts\graphics.lua" />
-  </ItemGroup>
-  <ItemGroup>
-    <ClInclude Include="..\..\src\common\b64.h" />
-    <ClInclude Include="..\..\src\common\config.h" />
-    <ClInclude Include="..\..\src\common\Data.h" />
-    <ClInclude Include="..\..\src\common\delay.h" />
-    <ClInclude Include="..\..\src\common\EnumMap.h" />
-    <ClInclude Include="..\..\src\common\Exception.h" />
-    <ClInclude Include="..\..\src\common\int.h" />
-    <ClInclude Include="..\..\src\common\math.h" />
-    <ClInclude Include="..\..\src\common\Matrix.h" />
-    <ClInclude Include="..\..\src\common\Memoizer.h" />
-    <ClInclude Include="..\..\src\common\Module.h" />
-    <ClInclude Include="..\..\src\common\Object.h" />
-    <ClInclude Include="..\..\src\common\Reference.h" />
-    <ClInclude Include="..\..\src\common\runtime.h" />
-    <ClInclude Include="..\..\src\common\StringMap.h" />
-    <ClInclude Include="..\..\src\common\types.h" />
-    <ClInclude Include="..\..\src\common\utf8.h" />
-    <ClInclude Include="..\..\src\common\Variant.h" />
-    <ClInclude Include="..\..\src\common\Vector.h" />
-    <ClInclude Include="..\..\src\common\version.h" />
-    <ClInclude Include="..\..\src\common\wrap_Data.h" />
-    <ClInclude Include="..\..\src\libraries\Box2D\Box2D.h" />
-    <ClInclude Include="..\..\src\libraries\Box2D\Collision\b2BroadPhase.h" />
-    <ClInclude Include="..\..\src\libraries\Box2D\Collision\b2Collision.h" />
-    <ClInclude Include="..\..\src\libraries\Box2D\Collision\b2Distance.h" />
-    <ClInclude Include="..\..\src\libraries\Box2D\Collision\b2DynamicTree.h" />
-    <ClInclude Include="..\..\src\libraries\Box2D\Collision\b2TimeOfImpact.h" />
-    <ClInclude Include="..\..\src\libraries\Box2D\Collision\Shapes\b2ChainShape.h" />
-    <ClInclude Include="..\..\src\libraries\Box2D\Collision\Shapes\b2CircleShape.h" />
-    <ClInclude Include="..\..\src\libraries\Box2D\Collision\Shapes\b2EdgeShape.h" />
-    <ClInclude Include="..\..\src\libraries\Box2D\Collision\Shapes\b2PolygonShape.h" />
-    <ClInclude Include="..\..\src\libraries\Box2D\Collision\Shapes\b2Shape.h" />
-    <ClInclude Include="..\..\src\libraries\Box2D\Common\b2BlockAllocator.h" />
-    <ClInclude Include="..\..\src\libraries\Box2D\Common\b2Draw.h" />
-    <ClInclude Include="..\..\src\libraries\Box2D\Common\b2GrowableStack.h" />
-    <ClInclude Include="..\..\src\libraries\Box2D\Common\b2Math.h" />
-    <ClInclude Include="..\..\src\libraries\Box2D\Common\b2Settings.h" />
-    <ClInclude Include="..\..\src\libraries\Box2D\Common\b2StackAllocator.h" />
-    <ClInclude Include="..\..\src\libraries\Box2D\Common\b2Timer.h" />
-    <ClInclude Include="..\..\src\libraries\Box2D\Dynamics\b2Body.h" />
-    <ClInclude Include="..\..\src\libraries\Box2D\Dynamics\b2ContactManager.h" />
-    <ClInclude Include="..\..\src\libraries\Box2D\Dynamics\b2Fixture.h" />
-    <ClInclude Include="..\..\src\libraries\Box2D\Dynamics\b2Island.h" />
-    <ClInclude Include="..\..\src\libraries\Box2D\Dynamics\b2TimeStep.h" />
-    <ClInclude Include="..\..\src\libraries\Box2D\Dynamics\b2World.h" />
-    <ClInclude Include="..\..\src\libraries\Box2D\Dynamics\b2WorldCallbacks.h" />
-    <ClInclude Include="..\..\src\libraries\Box2D\Dynamics\Contacts\b2ChainAndCircleContact.h" />
-    <ClInclude Include="..\..\src\libraries\Box2D\Dynamics\Contacts\b2ChainAndPolygonContact.h" />
-    <ClInclude Include="..\..\src\libraries\Box2D\Dynamics\Contacts\b2CircleContact.h" />
-    <ClInclude Include="..\..\src\libraries\Box2D\Dynamics\Contacts\b2Contact.h" />
-    <ClInclude Include="..\..\src\libraries\Box2D\Dynamics\Contacts\b2ContactSolver.h" />
-    <ClInclude Include="..\..\src\libraries\Box2D\Dynamics\Contacts\b2EdgeAndCircleContact.h" />
-    <ClInclude Include="..\..\src\libraries\Box2D\Dynamics\Contacts\b2EdgeAndPolygonContact.h" />
-    <ClInclude Include="..\..\src\libraries\Box2D\Dynamics\Contacts\b2PolygonAndCircleContact.h" />
-    <ClInclude Include="..\..\src\libraries\Box2D\Dynamics\Contacts\b2PolygonContact.h" />
-    <ClInclude Include="..\..\src\libraries\Box2D\Dynamics\Joints\b2DistanceJoint.h" />
-    <ClInclude Include="..\..\src\libraries\Box2D\Dynamics\Joints\b2FrictionJoint.h" />
-    <ClInclude Include="..\..\src\libraries\Box2D\Dynamics\Joints\b2GearJoint.h" />
-    <ClInclude Include="..\..\src\libraries\Box2D\Dynamics\Joints\b2Joint.h" />
-    <ClInclude Include="..\..\src\libraries\Box2D\Dynamics\Joints\b2MouseJoint.h" />
-    <ClInclude Include="..\..\src\libraries\Box2D\Dynamics\Joints\b2PrismaticJoint.h" />
-    <ClInclude Include="..\..\src\libraries\Box2D\Dynamics\Joints\b2PulleyJoint.h" />
-    <ClInclude Include="..\..\src\libraries\Box2D\Dynamics\Joints\b2RevoluteJoint.h" />
-    <ClInclude Include="..\..\src\libraries\Box2D\Dynamics\Joints\b2RopeJoint.h" />
-    <ClInclude Include="..\..\src\libraries\Box2D\Dynamics\Joints\b2WeldJoint.h" />
-    <ClInclude Include="..\..\src\libraries\Box2D\Dynamics\Joints\b2WheelJoint.h" />
-    <ClInclude Include="..\..\src\libraries\Box2D\Rope\b2Rope.h" />
-    <ClInclude Include="..\..\src\libraries\ddsparse\ddsinfo.h" />
-    <ClInclude Include="..\..\src\libraries\ddsparse\ddsparse.h" />
-    <ClInclude Include="..\..\src\libraries\enet\libenet\include\enet\callbacks.h" />
-    <ClInclude Include="..\..\src\libraries\enet\libenet\include\enet\enet.h" />
-    <ClInclude Include="..\..\src\libraries\enet\libenet\include\enet\list.h" />
-    <ClInclude Include="..\..\src\libraries\enet\libenet\include\enet\protocol.h" />
-    <ClInclude Include="..\..\src\libraries\enet\libenet\include\enet\time.h" />
-    <ClInclude Include="..\..\src\libraries\enet\libenet\include\enet\types.h" />
-    <ClInclude Include="..\..\src\libraries\enet\libenet\include\enet\unix.h" />
-    <ClInclude Include="..\..\src\libraries\enet\libenet\include\enet\utility.h" />
-    <ClInclude Include="..\..\src\libraries\enet\libenet\include\enet\win32.h" />
-    <ClInclude Include="..\..\src\libraries\enet\lua-enet.h" />
-    <ClInclude Include="..\..\src\libraries\luasocket\libluasocket\auxiliar.h" />
-    <ClInclude Include="..\..\src\libraries\luasocket\libluasocket\buffer.h" />
-    <ClInclude Include="..\..\src\libraries\luasocket\libluasocket\except.h" />
-    <ClInclude Include="..\..\src\libraries\luasocket\libluasocket\inet.h" />
-    <ClInclude Include="..\..\src\libraries\luasocket\libluasocket\io.h" />
-    <ClInclude Include="..\..\src\libraries\luasocket\libluasocket\luasocket.h" />
-    <ClInclude Include="..\..\src\libraries\luasocket\libluasocket\mime.h" />
-    <ClInclude Include="..\..\src\libraries\luasocket\libluasocket\options.h" />
-    <ClInclude Include="..\..\src\libraries\luasocket\libluasocket\select.h" />
-    <ClInclude Include="..\..\src\libraries\luasocket\libluasocket\socket.h" />
-    <ClInclude Include="..\..\src\libraries\luasocket\libluasocket\tcp.h" />
-    <ClInclude Include="..\..\src\libraries\luasocket\libluasocket\timeout.h" />
-    <ClInclude Include="..\..\src\libraries\luasocket\libluasocket\tp.lua.h" />
-    <ClInclude Include="..\..\src\libraries\luasocket\libluasocket\udp.h" />
-    <ClInclude Include="..\..\src\libraries\luasocket\libluasocket\url.lua.h" />
-    <ClInclude Include="..\..\src\libraries\luasocket\libluasocket\wsocket.h" />
-    <ClInclude Include="..\..\src\libraries\luasocket\luasocket.h" />
-    <ClInclude Include="..\..\src\libraries\noise1234\simplexnoise1234.h" />
-    <ClInclude Include="..\..\src\libraries\utf8\utf8.h" />
-    <ClInclude Include="..\..\src\libraries\utf8\utf8\checked.h" />
-    <ClInclude Include="..\..\src\libraries\utf8\utf8\core.h" />
-    <ClInclude Include="..\..\src\libraries\utf8\utf8\unchecked.h" />
-    <ClInclude Include="..\..\src\libraries\Wuff\wuff.h" />
-    <ClInclude Include="..\..\src\libraries\Wuff\wuff_config.h" />
-    <ClInclude Include="..\..\src\libraries\Wuff\wuff_convert.h" />
-    <ClInclude Include="..\..\src\libraries\Wuff\wuff_internal.h" />
-    <ClInclude Include="..\..\src\modules\audio\Audio.h" />
-    <ClInclude Include="..\..\src\modules\audio\null\Audio.h" />
-    <ClInclude Include="..\..\src\modules\audio\null\Source.h" />
-    <ClInclude Include="..\..\src\modules\audio\openal\Audio.h" />
-    <ClInclude Include="..\..\src\modules\audio\openal\Pool.h" />
-    <ClInclude Include="..\..\src\modules\audio\openal\Source.h" />
-    <ClInclude Include="..\..\src\modules\audio\Source.h" />
-    <ClInclude Include="..\..\src\modules\audio\wrap_Audio.h" />
-    <ClInclude Include="..\..\src\modules\audio\wrap_Source.h" />
-    <ClInclude Include="..\..\src\modules\event\Event.h" />
-    <ClInclude Include="..\..\src\modules\event\sdl\Event.h" />
-    <ClInclude Include="..\..\src\modules\event\sdl\wrap_Event.h" />
-    <ClInclude Include="..\..\src\modules\filesystem\File.h" />
-    <ClInclude Include="..\..\src\modules\filesystem\FileData.h" />
-    <ClInclude Include="..\..\src\modules\filesystem\physfs\File.h" />
-    <ClInclude Include="..\..\src\modules\filesystem\physfs\Filesystem.h" />
-    <ClInclude Include="..\..\src\modules\filesystem\physfs\wrap_File.h" />
-    <ClInclude Include="..\..\src\modules\filesystem\physfs\wrap_FileData.h" />
-    <ClInclude Include="..\..\src\modules\filesystem\physfs\wrap_Filesystem.h" />
-    <ClInclude Include="..\..\src\modules\font\Font.h" />
-    <ClInclude Include="..\..\src\modules\font\freetype\Font.h" />
-    <ClInclude Include="..\..\src\modules\font\freetype\TrueTypeRasterizer.h" />
-    <ClInclude Include="..\..\src\modules\font\freetype\wrap_Font.h" />
-    <ClInclude Include="..\..\src\modules\font\GlyphData.h" />
-    <ClInclude Include="..\..\src\modules\font\ImageRasterizer.h" />
-    <ClInclude Include="..\..\src\modules\font\Rasterizer.h" />
-    <ClInclude Include="..\..\src\modules\font\wrap_GlyphData.h" />
-    <ClInclude Include="..\..\src\modules\font\wrap_Rasterizer.h" />
-    <ClInclude Include="..\..\src\modules\graphics\Color.h" />
-    <ClInclude Include="..\..\src\modules\graphics\Drawable.h" />
-    <ClInclude Include="..\..\src\modules\graphics\DrawQable.h" />
-    <ClInclude Include="..\..\src\modules\graphics\Graphics.h" />
-    <ClInclude Include="..\..\src\modules\graphics\Image.h" />
-    <ClInclude Include="..\..\src\modules\graphics\opengl\Canvas.h" />
-    <ClInclude Include="..\..\src\modules\graphics\opengl\Font.h" />
-    <ClInclude Include="..\..\src\modules\graphics\opengl\GLee.h" />
-    <ClInclude Include="..\..\src\modules\graphics\opengl\Graphics.h" />
-    <ClInclude Include="..\..\src\modules\graphics\opengl\Image.h" />
-    <ClInclude Include="..\..\src\modules\graphics\opengl\Mesh.h" />
-    <ClInclude Include="..\..\src\modules\graphics\opengl\OpenGL.h" />
-    <ClInclude Include="..\..\src\modules\graphics\opengl\ParticleSystem.h" />
-    <ClInclude Include="..\..\src\modules\graphics\opengl\Polyline.h" />
-    <ClInclude Include="..\..\src\modules\graphics\opengl\Shader.h" />
-    <ClInclude Include="..\..\src\modules\graphics\opengl\SpriteBatch.h" />
-    <ClInclude Include="..\..\src\modules\graphics\opengl\VertexBuffer.h" />
-    <ClInclude Include="..\..\src\modules\graphics\opengl\wrap_Canvas.h" />
-    <ClInclude Include="..\..\src\modules\graphics\opengl\wrap_Font.h" />
-    <ClInclude Include="..\..\src\modules\graphics\opengl\wrap_Graphics.h" />
-    <ClInclude Include="..\..\src\modules\graphics\opengl\wrap_Image.h" />
-    <ClInclude Include="..\..\src\modules\graphics\opengl\wrap_Mesh.h" />
-    <ClInclude Include="..\..\src\modules\graphics\opengl\wrap_ParticleSystem.h" />
-    <ClInclude Include="..\..\src\modules\graphics\opengl\wrap_Quad.h" />
-    <ClInclude Include="..\..\src\modules\graphics\opengl\wrap_Shader.h" />
-    <ClInclude Include="..\..\src\modules\graphics\opengl\wrap_SpriteBatch.h" />
-    <ClInclude Include="..\..\src\modules\graphics\Quad.h" />
-    <ClInclude Include="..\..\src\modules\graphics\Volatile.h" />
-    <ClInclude Include="..\..\src\modules\image\CompressedData.h" />
-    <ClInclude Include="..\..\src\modules\image\Image.h" />
-    <ClInclude Include="..\..\src\modules\image\ImageData.h" />
-    <ClInclude Include="..\..\src\modules\image\magpie\CompressedData.h" />
-    <ClInclude Include="..\..\src\modules\image\magpie\ddsHandler.h" />
-    <ClInclude Include="..\..\src\modules\image\magpie\DevilHandler.h" />
-    <ClInclude Include="..\..\src\modules\image\magpie\FormatHandler.h" />
-    <ClInclude Include="..\..\src\modules\image\magpie\Image.h" />
-    <ClInclude Include="..\..\src\modules\image\magpie\ImageData.h" />
-    <ClInclude Include="..\..\src\modules\image\wrap_CompressedData.h" />
-    <ClInclude Include="..\..\src\modules\image\wrap_Image.h" />
-    <ClInclude Include="..\..\src\modules\image\wrap_ImageData.h" />
-    <ClInclude Include="..\..\src\modules\joystick\Joystick.h" />
-    <ClInclude Include="..\..\src\modules\joystick\JoystickModule.h" />
-    <ClInclude Include="..\..\src\modules\joystick\sdl\Joystick.h" />
-    <ClInclude Include="..\..\src\modules\joystick\sdl\JoystickModule.h" />
-    <ClInclude Include="..\..\src\modules\joystick\sdl\wrap_Joystick.h" />
-    <ClInclude Include="..\..\src\modules\joystick\sdl\wrap_JoystickModule.h" />
-    <ClInclude Include="..\..\src\modules\keyboard\Keyboard.h" />
-    <ClInclude Include="..\..\src\modules\keyboard\sdl\Keyboard.h" />
-    <ClInclude Include="..\..\src\modules\keyboard\wrap_Keyboard.h" />
-    <ClInclude Include="..\..\src\modules\love\love.h" />
-    <ClInclude Include="..\..\src\modules\math\BezierCurve.h" />
-    <ClInclude Include="..\..\src\modules\math\MathModule.h" />
-    <ClInclude Include="..\..\src\modules\math\RandomGenerator.h" />
-    <ClInclude Include="..\..\src\modules\math\wrap_BezierCurve.h" />
-    <ClInclude Include="..\..\src\modules\math\wrap_Math.h" />
-    <ClInclude Include="..\..\src\modules\math\wrap_RandomGenerator.h" />
-    <ClInclude Include="..\..\src\modules\mouse\Cursor.h" />
-    <ClInclude Include="..\..\src\modules\mouse\Mouse.h" />
-    <ClInclude Include="..\..\src\modules\mouse\sdl\Cursor.h" />
-    <ClInclude Include="..\..\src\modules\mouse\sdl\Mouse.h" />
-    <ClInclude Include="..\..\src\modules\mouse\wrap_Cursor.h" />
-    <ClInclude Include="..\..\src\modules\mouse\wrap_Mouse.h" />
-    <ClInclude Include="..\..\src\modules\physics\Body.h" />
-    <ClInclude Include="..\..\src\modules\physics\box2d\Body.h" />
-    <ClInclude Include="..\..\src\modules\physics\box2d\ChainShape.h" />
-    <ClInclude Include="..\..\src\modules\physics\box2d\CircleShape.h" />
-    <ClInclude Include="..\..\src\modules\physics\box2d\Contact.h" />
-    <ClInclude Include="..\..\src\modules\physics\box2d\DistanceJoint.h" />
-    <ClInclude Include="..\..\src\modules\physics\box2d\EdgeShape.h" />
-    <ClInclude Include="..\..\src\modules\physics\box2d\Fixture.h" />
-    <ClInclude Include="..\..\src\modules\physics\box2d\FrictionJoint.h" />
-    <ClInclude Include="..\..\src\modules\physics\box2d\GearJoint.h" />
-    <ClInclude Include="..\..\src\modules\physics\box2d\Joint.h" />
-    <ClInclude Include="..\..\src\modules\physics\box2d\MouseJoint.h" />
-    <ClInclude Include="..\..\src\modules\physics\box2d\Physics.h" />
-    <ClInclude Include="..\..\src\modules\physics\box2d\PolygonShape.h" />
-    <ClInclude Include="..\..\src\modules\physics\box2d\PrismaticJoint.h" />
-    <ClInclude Include="..\..\src\modules\physics\box2d\PulleyJoint.h" />
-    <ClInclude Include="..\..\src\modules\physics\box2d\RevoluteJoint.h" />
-    <ClInclude Include="..\..\src\modules\physics\box2d\RopeJoint.h" />
-    <ClInclude Include="..\..\src\modules\physics\box2d\Shape.h" />
-    <ClInclude Include="..\..\src\modules\physics\box2d\WeldJoint.h" />
-    <ClInclude Include="..\..\src\modules\physics\box2d\WheelJoint.h" />
-    <ClInclude Include="..\..\src\modules\physics\box2d\World.h" />
-    <ClInclude Include="..\..\src\modules\physics\box2d\wrap_Body.h" />
-    <ClInclude Include="..\..\src\modules\physics\box2d\wrap_ChainShape.h" />
-    <ClInclude Include="..\..\src\modules\physics\box2d\wrap_CircleShape.h" />
-    <ClInclude Include="..\..\src\modules\physics\box2d\wrap_Contact.h" />
-    <ClInclude Include="..\..\src\modules\physics\box2d\wrap_DistanceJoint.h" />
-    <ClInclude Include="..\..\src\modules\physics\box2d\wrap_EdgeShape.h" />
-    <ClInclude Include="..\..\src\modules\physics\box2d\wrap_Fixture.h" />
-    <ClInclude Include="..\..\src\modules\physics\box2d\wrap_FrictionJoint.h" />
-    <ClInclude Include="..\..\src\modules\physics\box2d\wrap_GearJoint.h" />
-    <ClInclude Include="..\..\src\modules\physics\box2d\wrap_Joint.h" />
-    <ClInclude Include="..\..\src\modules\physics\box2d\wrap_MouseJoint.h" />
-    <ClInclude Include="..\..\src\modules\physics\box2d\wrap_Physics.h" />
-    <ClInclude Include="..\..\src\modules\physics\box2d\wrap_PolygonShape.h" />
-    <ClInclude Include="..\..\src\modules\physics\box2d\wrap_PrismaticJoint.h" />
-    <ClInclude Include="..\..\src\modules\physics\box2d\wrap_PulleyJoint.h" />
-    <ClInclude Include="..\..\src\modules\physics\box2d\wrap_RevoluteJoint.h" />
-    <ClInclude Include="..\..\src\modules\physics\box2d\wrap_RopeJoint.h" />
-    <ClInclude Include="..\..\src\modules\physics\box2d\wrap_Shape.h" />
-    <ClInclude Include="..\..\src\modules\physics\box2d\wrap_WeldJoint.h" />
-    <ClInclude Include="..\..\src\modules\physics\box2d\wrap_WheelJoint.h" />
-    <ClInclude Include="..\..\src\modules\physics\box2d\wrap_World.h" />
-    <ClInclude Include="..\..\src\modules\physics\Joint.h" />
-    <ClInclude Include="..\..\src\modules\physics\Shape.h" />
-    <ClInclude Include="..\..\src\modules\sound\Decoder.h" />
-    <ClInclude Include="..\..\src\modules\sound\lullaby\Decoder.h" />
-    <ClInclude Include="..\..\src\modules\sound\lullaby\FLACDecoder.h" />
-    <ClInclude Include="..\..\src\modules\sound\lullaby\ModPlugDecoder.h" />
-    <ClInclude Include="..\..\src\modules\sound\lullaby\Mpg123Decoder.h" />
-    <ClInclude Include="..\..\src\modules\sound\lullaby\Sound.h" />
-    <ClInclude Include="..\..\src\modules\sound\lullaby\VorbisDecoder.h" />
-    <ClInclude Include="..\..\src\modules\sound\lullaby\WaveDecoder.h" />
-    <ClInclude Include="..\..\src\modules\sound\Sound.h" />
-    <ClInclude Include="..\..\src\modules\sound\SoundData.h" />
-    <ClInclude Include="..\..\src\modules\sound\wrap_Decoder.h" />
-    <ClInclude Include="..\..\src\modules\sound\wrap_Sound.h" />
-    <ClInclude Include="..\..\src\modules\sound\wrap_SoundData.h" />
-    <ClInclude Include="..\..\src\modules\system\sdl\System.h" />
-    <ClInclude Include="..\..\src\modules\system\System.h" />
-    <ClInclude Include="..\..\src\modules\system\wrap_System.h" />
-    <ClInclude Include="..\..\src\modules\thread\Channel.h" />
-    <ClInclude Include="..\..\src\modules\thread\LuaThread.h" />
-    <ClInclude Include="..\..\src\modules\thread\sdl\Thread.h" />
-    <ClInclude Include="..\..\src\modules\thread\sdl\threads.h" />
-    <ClInclude Include="..\..\src\modules\thread\Thread.h" />
-    <ClInclude Include="..\..\src\modules\thread\ThreadModule.h" />
-    <ClInclude Include="..\..\src\modules\thread\threads.h" />
-    <ClInclude Include="..\..\src\modules\thread\wrap_Channel.h" />
-    <ClInclude Include="..\..\src\modules\thread\wrap_LuaThread.h" />
-    <ClInclude Include="..\..\src\modules\thread\wrap_ThreadModule.h" />
-    <ClInclude Include="..\..\src\modules\timer\sdl\Timer.h" />
-    <ClInclude Include="..\..\src\modules\timer\Timer.h" />
-    <ClInclude Include="..\..\src\modules\timer\wrap_Timer.h" />
-    <ClInclude Include="..\..\src\modules\window\sdl\Window.h" />
-    <ClInclude Include="..\..\src\modules\window\Window.h" />
-    <ClInclude Include="..\..\src\modules\window\wrap_Window.h" />
-  </ItemGroup>
-  <ItemGroup>
-    <ResourceCompile Include="love.rc" />
-  </ItemGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
-  <ImportGroup Label="ExtensionTargets">
-  </ImportGroup>
-</Project>

+ 0 - 1796
love/src/jni/love/platform/msvc2010/liblove.vcxproj.filters

@@ -1,1796 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <ItemGroup>
-    <Filter Include="libraries">
-      <UniqueIdentifier>{9204b296-06f7-44d4-a739-c7bd2f1b6a10}</UniqueIdentifier>
-    </Filter>
-    <Filter Include="common">
-      <UniqueIdentifier>{8db39aa0-6dd9-454e-83e3-337a250a26a7}</UniqueIdentifier>
-    </Filter>
-    <Filter Include="modules">
-      <UniqueIdentifier>{c33f8514-328c-435a-83cf-592b907efdf6}</UniqueIdentifier>
-    </Filter>
-    <Filter Include="scripts">
-      <UniqueIdentifier>{15622628-c450-48d5-af6d-11a81d9b3453}</UniqueIdentifier>
-    </Filter>
-    <Filter Include="libraries\Box2D">
-      <UniqueIdentifier>{648d76dd-df9d-458d-beb3-de53e780d07e}</UniqueIdentifier>
-    </Filter>
-    <Filter Include="libraries\luasocket">
-      <UniqueIdentifier>{67d48dd8-574e-4bdd-bdb1-71af5801e234}</UniqueIdentifier>
-    </Filter>
-    <Filter Include="libraries\utf8">
-      <UniqueIdentifier>{b00f9fc5-a6a6-44e7-a52d-84c134de265d}</UniqueIdentifier>
-    </Filter>
-    <Filter Include="libraries\Box2D\Collision">
-      <UniqueIdentifier>{4ed69d3b-2b3e-4bb1-b756-620816c86916}</UniqueIdentifier>
-    </Filter>
-    <Filter Include="libraries\Box2D\Common">
-      <UniqueIdentifier>{3c66e3d3-c2fd-409b-88d9-fd6d67df2edd}</UniqueIdentifier>
-    </Filter>
-    <Filter Include="libraries\Box2D\Dynamcis">
-      <UniqueIdentifier>{7eb57e83-24c3-4b47-a9bb-f73adac7c4c2}</UniqueIdentifier>
-    </Filter>
-    <Filter Include="libraries\Box2D\Rope">
-      <UniqueIdentifier>{90878f00-844f-453d-a521-76366e3031b2}</UniqueIdentifier>
-    </Filter>
-    <Filter Include="libraries\Box2D\Collision\Shapes">
-      <UniqueIdentifier>{7ae21d0a-2dbd-4d89-8ed3-74a0af8e1901}</UniqueIdentifier>
-    </Filter>
-    <Filter Include="libraries\Box2D\Dynamcis\Joints">
-      <UniqueIdentifier>{809e6999-08d1-41b5-9536-bcfe7cc09588}</UniqueIdentifier>
-    </Filter>
-    <Filter Include="libraries\Box2D\Dynamcis\Contacts">
-      <UniqueIdentifier>{9c1b1395-34b7-4158-b778-56b622c81e37}</UniqueIdentifier>
-    </Filter>
-    <Filter Include="libraries\luasocket\luasocket">
-      <UniqueIdentifier>{5dcd8aac-7614-4d4e-b507-7df82969cb68}</UniqueIdentifier>
-    </Filter>
-    <Filter Include="modules\audio">
-      <UniqueIdentifier>{6f277a7f-c3b8-4eff-bffe-1635d2819c01}</UniqueIdentifier>
-    </Filter>
-    <Filter Include="modules\event">
-      <UniqueIdentifier>{0ceac368-959f-47da-8881-66e22383e2c3}</UniqueIdentifier>
-    </Filter>
-    <Filter Include="modules\filesystem">
-      <UniqueIdentifier>{822de099-663f-46e9-8c22-e2563903b2d1}</UniqueIdentifier>
-    </Filter>
-    <Filter Include="modules\font">
-      <UniqueIdentifier>{374bede6-77d8-4dd9-922c-65ebc1094df4}</UniqueIdentifier>
-    </Filter>
-    <Filter Include="modules\graphics">
-      <UniqueIdentifier>{83e8ce99-8a0f-4e64-b5be-3c184026aa52}</UniqueIdentifier>
-    </Filter>
-    <Filter Include="modules\image">
-      <UniqueIdentifier>{d9e2d64e-5fd3-4f49-be70-50d5ae85ee26}</UniqueIdentifier>
-    </Filter>
-    <Filter Include="modules\joystick">
-      <UniqueIdentifier>{679a49ca-08fc-400a-b0ae-30ac2a072b6b}</UniqueIdentifier>
-    </Filter>
-    <Filter Include="modules\keyboard">
-      <UniqueIdentifier>{cc6c06ce-6fa1-46fe-9308-f0844d198123}</UniqueIdentifier>
-    </Filter>
-    <Filter Include="modules\mouse">
-      <UniqueIdentifier>{e4a78077-53fd-4f65-bc7b-9357fca59d37}</UniqueIdentifier>
-    </Filter>
-    <Filter Include="modules\physics">
-      <UniqueIdentifier>{44378345-7eb7-45d5-8f32-fe7e3375ca7b}</UniqueIdentifier>
-    </Filter>
-    <Filter Include="modules\sound">
-      <UniqueIdentifier>{03c38556-a58d-4a16-bd8a-26da917b73aa}</UniqueIdentifier>
-    </Filter>
-    <Filter Include="modules\thread">
-      <UniqueIdentifier>{a9c040aa-4e09-4a43-b7d4-62ab7e9cde4b}</UniqueIdentifier>
-    </Filter>
-    <Filter Include="modules\timer">
-      <UniqueIdentifier>{8ca0aa01-6595-4e00-9257-6668218bfaad}</UniqueIdentifier>
-    </Filter>
-    <Filter Include="modules\window">
-      <UniqueIdentifier>{d0e97654-3e56-4ce0-aa0a-a5b660ade090}</UniqueIdentifier>
-    </Filter>
-    <Filter Include="modules\audio\openal">
-      <UniqueIdentifier>{018b53e4-51ff-41ef-8752-530f7ca83f5f}</UniqueIdentifier>
-    </Filter>
-    <Filter Include="modules\audio\null">
-      <UniqueIdentifier>{e3bb8877-dc46-45db-999d-97a3b3482227}</UniqueIdentifier>
-    </Filter>
-    <Filter Include="modules\event\sdl">
-      <UniqueIdentifier>{9a56922c-6ee8-4e4a-af76-c310a3052de6}</UniqueIdentifier>
-    </Filter>
-    <Filter Include="modules\filesystem\physfs">
-      <UniqueIdentifier>{6c504e35-8799-4ce8-89e7-b4904095efe5}</UniqueIdentifier>
-    </Filter>
-    <Filter Include="modules\font\freetype">
-      <UniqueIdentifier>{d78871c7-7ca9-4dff-9163-f2a6a97462d7}</UniqueIdentifier>
-    </Filter>
-    <Filter Include="modules\graphics\opengl">
-      <UniqueIdentifier>{72f85e75-dd35-4a93-9c39-258c8aee813b}</UniqueIdentifier>
-    </Filter>
-    <Filter Include="modules\joystick\sdl">
-      <UniqueIdentifier>{806ac1d0-ed5c-47d5-8cdc-60e3fdbfe412}</UniqueIdentifier>
-    </Filter>
-    <Filter Include="modules\keyboard\sdl">
-      <UniqueIdentifier>{1266e902-11b4-4f0d-afb5-66df65b0429c}</UniqueIdentifier>
-    </Filter>
-    <Filter Include="modules\mouse\sdl">
-      <UniqueIdentifier>{7715d905-5dc6-41ce-9aa1-6f94c707ced5}</UniqueIdentifier>
-    </Filter>
-    <Filter Include="modules\physics\box2d">
-      <UniqueIdentifier>{ad88c2dc-e31c-4362-bd7a-4d76c79d5783}</UniqueIdentifier>
-    </Filter>
-    <Filter Include="modules\sound\lullaby">
-      <UniqueIdentifier>{fe7cb272-ea46-4f31-873a-a8a42e4efd3a}</UniqueIdentifier>
-    </Filter>
-    <Filter Include="modules\timer\sdl">
-      <UniqueIdentifier>{ea198321-c3fb-4444-bd1e-608461f7af20}</UniqueIdentifier>
-    </Filter>
-    <Filter Include="modules\window\sdl">
-      <UniqueIdentifier>{d46cbbf1-a76f-4401-83d4-1f20492f9889}</UniqueIdentifier>
-    </Filter>
-    <Filter Include="modules\love">
-      <UniqueIdentifier>{5fb201c1-9b39-48ca-8334-6862da260b43}</UniqueIdentifier>
-    </Filter>
-    <Filter Include="modules\math">
-      <UniqueIdentifier>{5d2c2149-93bf-42a6-b8b5-6ddbac9485a3}</UniqueIdentifier>
-    </Filter>
-    <Filter Include="modules\thread\sdl">
-      <UniqueIdentifier>{5673936a-786e-40ee-96d2-1830e89c1532}</UniqueIdentifier>
-    </Filter>
-    <Filter Include="libraries\ddsparse">
-      <UniqueIdentifier>{dd0ef317-7117-4ddc-b8ef-aaf58130c7bd}</UniqueIdentifier>
-    </Filter>
-    <Filter Include="modules\image\magpie">
-      <UniqueIdentifier>{d39bd4fd-3bea-428a-813f-4b1c55aedac8}</UniqueIdentifier>
-    </Filter>
-    <Filter Include="libraries\noise1234">
-      <UniqueIdentifier>{d5e565d0-da66-4412-9144-dff8c7d82b2e}</UniqueIdentifier>
-    </Filter>
-    <Filter Include="libraries\enet">
-      <UniqueIdentifier>{4bf8a9b0-db1a-4a6e-a157-a9eab128f5ca}</UniqueIdentifier>
-    </Filter>
-    <Filter Include="libraries\enet\libenet">
-      <UniqueIdentifier>{ab75aa3d-8e32-45e0-b91b-ed3cb31f472e}</UniqueIdentifier>
-    </Filter>
-    <Filter Include="libraries\enet\libenet\include">
-      <UniqueIdentifier>{86f5346b-8859-4c03-8c1f-3bd8d200b658}</UniqueIdentifier>
-    </Filter>
-    <Filter Include="libraries\enet\libenet\include\enet">
-      <UniqueIdentifier>{a9a12c5a-ff54-43c1-b0c6-ba1597af7b03}</UniqueIdentifier>
-    </Filter>
-    <Filter Include="modules\system">
-      <UniqueIdentifier>{731671fa-d695-42c3-9d1c-9e227d9ebab4}</UniqueIdentifier>
-    </Filter>
-    <Filter Include="modules\system\sdl">
-      <UniqueIdentifier>{2241f4ca-a51c-4d8d-be82-2b7dfd267b7b}</UniqueIdentifier>
-    </Filter>
-    <Filter Include="modules\system">
-      <UniqueIdentifier>{731671fa-d695-42c3-9d1c-9e227d9ebab4}</UniqueIdentifier>
-    </Filter>
-    <Filter Include="modules\system\sdl">
-      <UniqueIdentifier>{2241f4ca-a51c-4d8d-be82-2b7dfd267b7b}</UniqueIdentifier>
-    </Filter>
-    <Filter Include="libraries\Wuff">
-      <UniqueIdentifier>{4127f9be-b9c3-45bf-968f-888df9d5bc35}</UniqueIdentifier>
-    </Filter>
-  </ItemGroup>
-  <ItemGroup>
-    <ClCompile Include="..\..\src\common\Matrix.cpp">
-      <Filter>common</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\common\Memoizer.cpp">
-      <Filter>common</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\common\Object.cpp">
-      <Filter>common</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\common\Reference.cpp">
-      <Filter>common</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\common\runtime.cpp">
-      <Filter>common</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\common\utf8.cpp">
-      <Filter>common</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\common\Variant.cpp">
-      <Filter>common</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\common\Vector.cpp">
-      <Filter>common</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\common\wrap_Data.cpp">
-      <Filter>common</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\common\b64.cpp">
-      <Filter>common</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\common\delay.cpp">
-      <Filter>common</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\common\Exception.cpp">
-      <Filter>common</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\libraries\Box2D\Collision\b2BroadPhase.cpp">
-      <Filter>libraries\Box2D\Collision</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\libraries\Box2D\Collision\b2CollideCircle.cpp">
-      <Filter>libraries\Box2D\Collision</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\libraries\Box2D\Collision\b2CollideEdge.cpp">
-      <Filter>libraries\Box2D\Collision</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\libraries\Box2D\Collision\b2CollidePolygon.cpp">
-      <Filter>libraries\Box2D\Collision</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\libraries\Box2D\Collision\b2Collision.cpp">
-      <Filter>libraries\Box2D\Collision</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\libraries\Box2D\Collision\b2Distance.cpp">
-      <Filter>libraries\Box2D\Collision</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\libraries\Box2D\Collision\b2DynamicTree.cpp">
-      <Filter>libraries\Box2D\Collision</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\libraries\Box2D\Collision\b2TimeOfImpact.cpp">
-      <Filter>libraries\Box2D\Collision</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\libraries\Box2D\Collision\Shapes\b2CircleShape.cpp">
-      <Filter>libraries\Box2D\Collision\Shapes</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\libraries\Box2D\Collision\Shapes\b2EdgeShape.cpp">
-      <Filter>libraries\Box2D\Collision\Shapes</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\libraries\Box2D\Collision\Shapes\b2PolygonShape.cpp">
-      <Filter>libraries\Box2D\Collision\Shapes</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\libraries\Box2D\Collision\Shapes\b2ChainShape.cpp">
-      <Filter>libraries\Box2D\Collision\Shapes</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\libraries\Box2D\Common\b2Draw.cpp">
-      <Filter>libraries\Box2D\Common</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\libraries\Box2D\Common\b2Math.cpp">
-      <Filter>libraries\Box2D\Common</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\libraries\Box2D\Common\b2Settings.cpp">
-      <Filter>libraries\Box2D\Common</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\libraries\Box2D\Common\b2StackAllocator.cpp">
-      <Filter>libraries\Box2D\Common</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\libraries\Box2D\Common\b2Timer.cpp">
-      <Filter>libraries\Box2D\Common</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\libraries\Box2D\Common\b2BlockAllocator.cpp">
-      <Filter>libraries\Box2D\Common</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\libraries\Box2D\Dynamics\b2Body.cpp">
-      <Filter>libraries\Box2D\Dynamcis</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\libraries\Box2D\Dynamics\b2ContactManager.cpp">
-      <Filter>libraries\Box2D\Dynamcis</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\libraries\Box2D\Dynamics\b2Fixture.cpp">
-      <Filter>libraries\Box2D\Dynamcis</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\libraries\Box2D\Dynamics\b2Island.cpp">
-      <Filter>libraries\Box2D\Dynamcis</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\libraries\Box2D\Dynamics\b2World.cpp">
-      <Filter>libraries\Box2D\Dynamcis</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\libraries\Box2D\Dynamics\b2WorldCallbacks.cpp">
-      <Filter>libraries\Box2D\Dynamcis</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\libraries\Box2D\Dynamics\Contacts\b2CircleContact.cpp">
-      <Filter>libraries\Box2D\Dynamcis\Contacts</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\libraries\Box2D\Dynamics\Contacts\b2Contact.cpp">
-      <Filter>libraries\Box2D\Dynamcis\Contacts</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\libraries\Box2D\Dynamics\Contacts\b2ContactSolver.cpp">
-      <Filter>libraries\Box2D\Dynamcis\Contacts</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\libraries\Box2D\Dynamics\Contacts\b2EdgeAndCircleContact.cpp">
-      <Filter>libraries\Box2D\Dynamcis\Contacts</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\libraries\Box2D\Dynamics\Contacts\b2EdgeAndPolygonContact.cpp">
-      <Filter>libraries\Box2D\Dynamcis\Contacts</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\libraries\Box2D\Dynamics\Contacts\b2PolygonAndCircleContact.cpp">
-      <Filter>libraries\Box2D\Dynamcis\Contacts</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\libraries\Box2D\Dynamics\Contacts\b2PolygonContact.cpp">
-      <Filter>libraries\Box2D\Dynamcis\Contacts</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\libraries\Box2D\Dynamics\Contacts\b2ChainAndCircleContact.cpp">
-      <Filter>libraries\Box2D\Dynamcis\Contacts</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\libraries\Box2D\Dynamics\Contacts\b2ChainAndPolygonContact.cpp">
-      <Filter>libraries\Box2D\Dynamcis\Contacts</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\libraries\Box2D\Dynamics\Joints\b2MouseJoint.cpp">
-      <Filter>libraries\Box2D\Dynamcis\Joints</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\libraries\Box2D\Dynamics\Joints\b2PrismaticJoint.cpp">
-      <Filter>libraries\Box2D\Dynamcis\Joints</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\libraries\Box2D\Dynamics\Joints\b2PulleyJoint.cpp">
-      <Filter>libraries\Box2D\Dynamcis\Joints</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\libraries\Box2D\Dynamics\Joints\b2RevoluteJoint.cpp">
-      <Filter>libraries\Box2D\Dynamcis\Joints</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\libraries\Box2D\Dynamics\Joints\b2RopeJoint.cpp">
-      <Filter>libraries\Box2D\Dynamcis\Joints</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\libraries\Box2D\Dynamics\Joints\b2WeldJoint.cpp">
-      <Filter>libraries\Box2D\Dynamcis\Joints</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\libraries\Box2D\Dynamics\Joints\b2WheelJoint.cpp">
-      <Filter>libraries\Box2D\Dynamcis\Joints</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\libraries\Box2D\Dynamics\Joints\b2DistanceJoint.cpp">
-      <Filter>libraries\Box2D\Dynamcis\Joints</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\libraries\Box2D\Dynamics\Joints\b2FrictionJoint.cpp">
-      <Filter>libraries\Box2D\Dynamcis\Joints</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\libraries\Box2D\Dynamics\Joints\b2GearJoint.cpp">
-      <Filter>libraries\Box2D\Dynamcis\Joints</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\libraries\Box2D\Dynamics\Joints\b2Joint.cpp">
-      <Filter>libraries\Box2D\Dynamcis\Joints</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\libraries\Box2D\Rope\b2Rope.cpp">
-      <Filter>libraries\Box2D\Rope</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\libraries\luasocket\luasocket.cpp">
-      <Filter>libraries\luasocket</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\libraries\luasocket\libluasocket\mime.c">
-      <Filter>libraries\luasocket\luasocket</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\libraries\luasocket\libluasocket\options.c">
-      <Filter>libraries\luasocket\luasocket</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\libraries\luasocket\libluasocket\select.c">
-      <Filter>libraries\luasocket\luasocket</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\libraries\luasocket\libluasocket\tcp.c">
-      <Filter>libraries\luasocket\luasocket</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\libraries\luasocket\libluasocket\timeout.c">
-      <Filter>libraries\luasocket\luasocket</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\libraries\luasocket\libluasocket\udp.c">
-      <Filter>libraries\luasocket\luasocket</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\libraries\luasocket\libluasocket\wsocket.c">
-      <Filter>libraries\luasocket\luasocket</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\libraries\luasocket\libluasocket\auxiliar.c">
-      <Filter>libraries\luasocket\luasocket</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\libraries\luasocket\libluasocket\buffer.c">
-      <Filter>libraries\luasocket\luasocket</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\libraries\luasocket\libluasocket\except.c">
-      <Filter>libraries\luasocket\luasocket</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\libraries\luasocket\libluasocket\inet.c">
-      <Filter>libraries\luasocket\luasocket</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\libraries\luasocket\libluasocket\io.c">
-      <Filter>libraries\luasocket\luasocket</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\libraries\luasocket\libluasocket\luasocket.c">
-      <Filter>libraries\luasocket\luasocket</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\modules\audio\Audio.cpp">
-      <Filter>modules\audio</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\modules\audio\Source.cpp">
-      <Filter>modules\audio</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\modules\audio\wrap_Audio.cpp">
-      <Filter>modules\audio</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\modules\audio\wrap_Source.cpp">
-      <Filter>modules\audio</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\modules\audio\null\Audio.cpp">
-      <Filter>modules\audio\null</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\modules\audio\null\Source.cpp">
-      <Filter>modules\audio\null</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\modules\audio\openal\Pool.cpp">
-      <Filter>modules\audio\openal</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\modules\audio\openal\Source.cpp">
-      <Filter>modules\audio\openal</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\modules\audio\openal\Audio.cpp">
-      <Filter>modules\audio\openal</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\modules\event\Event.cpp">
-      <Filter>modules\event</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\modules\event\sdl\wrap_Event.cpp">
-      <Filter>modules\event\sdl</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\modules\event\sdl\Event.cpp">
-      <Filter>modules\event\sdl</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\modules\filesystem\File.cpp">
-      <Filter>modules\filesystem</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\modules\filesystem\FileData.cpp">
-      <Filter>modules\filesystem</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\modules\filesystem\physfs\Filesystem.cpp">
-      <Filter>modules\filesystem\physfs</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\modules\filesystem\physfs\wrap_File.cpp">
-      <Filter>modules\filesystem\physfs</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\modules\filesystem\physfs\wrap_FileData.cpp">
-      <Filter>modules\filesystem\physfs</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\modules\filesystem\physfs\wrap_Filesystem.cpp">
-      <Filter>modules\filesystem\physfs</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\modules\filesystem\physfs\File.cpp">
-      <Filter>modules\filesystem\physfs</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\modules\font\GlyphData.cpp">
-      <Filter>modules\font</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\modules\font\ImageRasterizer.cpp">
-      <Filter>modules\font</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\modules\font\Rasterizer.cpp">
-      <Filter>modules\font</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\modules\font\wrap_GlyphData.cpp">
-      <Filter>modules\font</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\modules\font\wrap_Rasterizer.cpp">
-      <Filter>modules\font</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\modules\font\freetype\TrueTypeRasterizer.cpp">
-      <Filter>modules\font\freetype</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\modules\font\freetype\wrap_Font.cpp">
-      <Filter>modules\font\freetype</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\modules\font\freetype\Font.cpp">
-      <Filter>modules\font\freetype</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\modules\graphics\Drawable.cpp">
-      <Filter>modules\graphics</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\modules\graphics\Graphics.cpp">
-      <Filter>modules\graphics</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\modules\graphics\Image.cpp">
-      <Filter>modules\graphics</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\modules\graphics\Volatile.cpp">
-      <Filter>modules\graphics</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\modules\graphics\opengl\Shader.cpp">
-      <Filter>modules\graphics\opengl</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\modules\graphics\opengl\SpriteBatch.cpp">
-      <Filter>modules\graphics\opengl</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\modules\graphics\opengl\VertexBuffer.cpp">
-      <Filter>modules\graphics\opengl</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\modules\graphics\opengl\wrap_Canvas.cpp">
-      <Filter>modules\graphics\opengl</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\modules\graphics\opengl\wrap_Font.cpp">
-      <Filter>modules\graphics\opengl</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\modules\graphics\opengl\wrap_Graphics.cpp">
-      <Filter>modules\graphics\opengl</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\modules\graphics\opengl\wrap_Image.cpp">
-      <Filter>modules\graphics\opengl</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\modules\graphics\opengl\wrap_ParticleSystem.cpp">
-      <Filter>modules\graphics\opengl</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\modules\graphics\opengl\wrap_Shader.cpp">
-      <Filter>modules\graphics\opengl</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\modules\graphics\opengl\wrap_SpriteBatch.cpp">
-      <Filter>modules\graphics\opengl</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\modules\graphics\opengl\Canvas.cpp">
-      <Filter>modules\graphics\opengl</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\modules\graphics\opengl\Font.cpp">
-      <Filter>modules\graphics\opengl</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\modules\graphics\opengl\GLee.c">
-      <Filter>modules\graphics\opengl</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\modules\graphics\opengl\Graphics.cpp">
-      <Filter>modules\graphics\opengl</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\modules\graphics\opengl\Image.cpp">
-      <Filter>modules\graphics\opengl</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\modules\graphics\opengl\OpenGL.cpp">
-      <Filter>modules\graphics\opengl</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\modules\graphics\opengl\ParticleSystem.cpp">
-      <Filter>modules\graphics\opengl</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\modules\image\ImageData.cpp">
-      <Filter>modules\image</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\modules\image\wrap_Image.cpp">
-      <Filter>modules\image</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\modules\image\wrap_ImageData.cpp">
-      <Filter>modules\image</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\modules\joystick\Joystick.cpp">
-      <Filter>modules\joystick</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\modules\joystick\sdl\wrap_Joystick.cpp">
-      <Filter>modules\joystick\sdl</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\modules\joystick\sdl\Joystick.cpp">
-      <Filter>modules\joystick\sdl</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\modules\keyboard\Keyboard.cpp">
-      <Filter>modules\keyboard</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\modules\keyboard\wrap_Keyboard.cpp">
-      <Filter>modules\keyboard</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\modules\keyboard\sdl\Keyboard.cpp">
-      <Filter>modules\keyboard\sdl</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\modules\mouse\Mouse.cpp">
-      <Filter>modules\mouse</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\modules\mouse\wrap_Mouse.cpp">
-      <Filter>modules\mouse</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\modules\mouse\sdl\Mouse.cpp">
-      <Filter>modules\mouse\sdl</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\modules\physics\Body.cpp">
-      <Filter>modules\physics</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\modules\physics\Joint.cpp">
-      <Filter>modules\physics</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\modules\physics\Shape.cpp">
-      <Filter>modules\physics</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\modules\physics\box2d\CircleShape.cpp">
-      <Filter>modules\physics\box2d</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\modules\physics\box2d\Contact.cpp">
-      <Filter>modules\physics\box2d</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\modules\physics\box2d\DistanceJoint.cpp">
-      <Filter>modules\physics\box2d</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\modules\physics\box2d\EdgeShape.cpp">
-      <Filter>modules\physics\box2d</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\modules\physics\box2d\Fixture.cpp">
-      <Filter>modules\physics\box2d</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\modules\physics\box2d\FrictionJoint.cpp">
-      <Filter>modules\physics\box2d</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\modules\physics\box2d\GearJoint.cpp">
-      <Filter>modules\physics\box2d</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\modules\physics\box2d\Joint.cpp">
-      <Filter>modules\physics\box2d</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\modules\physics\box2d\MouseJoint.cpp">
-      <Filter>modules\physics\box2d</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\modules\physics\box2d\Physics.cpp">
-      <Filter>modules\physics\box2d</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\modules\physics\box2d\PolygonShape.cpp">
-      <Filter>modules\physics\box2d</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\modules\physics\box2d\PrismaticJoint.cpp">
-      <Filter>modules\physics\box2d</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\modules\physics\box2d\PulleyJoint.cpp">
-      <Filter>modules\physics\box2d</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\modules\physics\box2d\RevoluteJoint.cpp">
-      <Filter>modules\physics\box2d</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\modules\physics\box2d\RopeJoint.cpp">
-      <Filter>modules\physics\box2d</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\modules\physics\box2d\Shape.cpp">
-      <Filter>modules\physics\box2d</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\modules\physics\box2d\WeldJoint.cpp">
-      <Filter>modules\physics\box2d</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\modules\physics\box2d\WheelJoint.cpp">
-      <Filter>modules\physics\box2d</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\modules\physics\box2d\World.cpp">
-      <Filter>modules\physics\box2d</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\modules\physics\box2d\wrap_Body.cpp">
-      <Filter>modules\physics\box2d</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\modules\physics\box2d\wrap_ChainShape.cpp">
-      <Filter>modules\physics\box2d</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\modules\physics\box2d\wrap_CircleShape.cpp">
-      <Filter>modules\physics\box2d</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\modules\physics\box2d\wrap_Contact.cpp">
-      <Filter>modules\physics\box2d</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\modules\physics\box2d\wrap_DistanceJoint.cpp">
-      <Filter>modules\physics\box2d</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\modules\physics\box2d\wrap_EdgeShape.cpp">
-      <Filter>modules\physics\box2d</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\modules\physics\box2d\wrap_Fixture.cpp">
-      <Filter>modules\physics\box2d</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\modules\physics\box2d\wrap_FrictionJoint.cpp">
-      <Filter>modules\physics\box2d</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\modules\physics\box2d\wrap_GearJoint.cpp">
-      <Filter>modules\physics\box2d</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\modules\physics\box2d\wrap_Joint.cpp">
-      <Filter>modules\physics\box2d</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\modules\physics\box2d\wrap_MouseJoint.cpp">
-      <Filter>modules\physics\box2d</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\modules\physics\box2d\wrap_Physics.cpp">
-      <Filter>modules\physics\box2d</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\modules\physics\box2d\wrap_PolygonShape.cpp">
-      <Filter>modules\physics\box2d</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\modules\physics\box2d\wrap_PrismaticJoint.cpp">
-      <Filter>modules\physics\box2d</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\modules\physics\box2d\wrap_PulleyJoint.cpp">
-      <Filter>modules\physics\box2d</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\modules\physics\box2d\wrap_RevoluteJoint.cpp">
-      <Filter>modules\physics\box2d</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\modules\physics\box2d\wrap_RopeJoint.cpp">
-      <Filter>modules\physics\box2d</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\modules\physics\box2d\wrap_Shape.cpp">
-      <Filter>modules\physics\box2d</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\modules\physics\box2d\wrap_WeldJoint.cpp">
-      <Filter>modules\physics\box2d</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\modules\physics\box2d\wrap_WheelJoint.cpp">
-      <Filter>modules\physics\box2d</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\modules\physics\box2d\wrap_World.cpp">
-      <Filter>modules\physics\box2d</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\modules\physics\box2d\Body.cpp">
-      <Filter>modules\physics\box2d</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\modules\physics\box2d\ChainShape.cpp">
-      <Filter>modules\physics\box2d</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\modules\sound\Sound.cpp">
-      <Filter>modules\sound</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\modules\sound\SoundData.cpp">
-      <Filter>modules\sound</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\modules\sound\wrap_Decoder.cpp">
-      <Filter>modules\sound</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\modules\sound\wrap_Sound.cpp">
-      <Filter>modules\sound</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\modules\sound\wrap_SoundData.cpp">
-      <Filter>modules\sound</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\modules\sound\lullaby\ModPlugDecoder.cpp">
-      <Filter>modules\sound\lullaby</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\modules\sound\lullaby\Mpg123Decoder.cpp">
-      <Filter>modules\sound\lullaby</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\modules\sound\lullaby\Sound.cpp">
-      <Filter>modules\sound\lullaby</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\modules\sound\lullaby\VorbisDecoder.cpp">
-      <Filter>modules\sound\lullaby</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\modules\sound\lullaby\Decoder.cpp">
-      <Filter>modules\sound\lullaby</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\modules\sound\lullaby\FLACDecoder.cpp">
-      <Filter>modules\sound\lullaby</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\modules\timer\wrap_Timer.cpp">
-      <Filter>modules\timer</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\modules\timer\sdl\Timer.cpp">
-      <Filter>modules\timer\sdl</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\modules\window\Window.cpp">
-      <Filter>modules\window</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\modules\window\sdl\Window.cpp">
-      <Filter>modules\window\sdl</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\modules\love\love.cpp">
-      <Filter>modules\love</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\common\Module.cpp">
-      <Filter>common</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\modules\math\wrap_Math.cpp">
-      <Filter>modules\math</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\modules\thread\Channel.cpp">
-      <Filter>modules\thread</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\modules\thread\LuaThread.cpp">
-      <Filter>modules\thread</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\modules\thread\ThreadModule.cpp">
-      <Filter>modules\thread</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\modules\thread\threads.cpp">
-      <Filter>modules\thread</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\modules\thread\wrap_Channel.cpp">
-      <Filter>modules\thread</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\modules\thread\wrap_LuaThread.cpp">
-      <Filter>modules\thread</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\modules\thread\wrap_ThreadModule.cpp">
-      <Filter>modules\thread</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\modules\thread\sdl\threads.cpp">
-      <Filter>modules\thread\sdl</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\modules\thread\sdl\Thread.cpp">
-      <Filter>modules\thread\sdl</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\modules\math\MathModule.cpp">
-      <Filter>modules\math</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\libraries\ddsparse\ddsparse.cpp">
-      <Filter>libraries\ddsparse</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\modules\image\magpie\DevilHandler.cpp">
-      <Filter>modules\image\magpie</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\modules\image\magpie\Image.cpp">
-      <Filter>modules\image\magpie</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\modules\image\magpie\ImageData.cpp">
-      <Filter>modules\image\magpie</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\modules\image\magpie\CompressedData.cpp">
-      <Filter>modules\image\magpie</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\modules\image\magpie\ddsHandler.cpp">
-      <Filter>modules\image\magpie</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\modules\image\CompressedData.cpp">
-      <Filter>modules\image</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\modules\image\wrap_CompressedData.cpp">
-      <Filter>modules\image</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\modules\math\RandomGenerator.cpp">
-      <Filter>modules\math</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\modules\math\wrap_RandomGenerator.cpp">
-      <Filter>modules\math</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\libraries\noise1234\simplexnoise1234.cpp">
-      <Filter>libraries\noise1234</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\modules\math\wrap_BezierCurve.cpp">
-      <Filter>modules\math</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\modules\math\BezierCurve.cpp">
-      <Filter>modules\math</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\modules\window\wrap_Window.cpp">
-      <Filter>modules\window</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\libraries\enet\libenet\callbacks.c">
-      <Filter>libraries\enet\libenet</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\libraries\enet\libenet\compress.c">
-      <Filter>libraries\enet\libenet</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\libraries\enet\libenet\host.c">
-      <Filter>libraries\enet\libenet</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\libraries\enet\libenet\list.c">
-      <Filter>libraries\enet\libenet</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\libraries\enet\libenet\packet.c">
-      <Filter>libraries\enet\libenet</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\libraries\enet\libenet\peer.c">
-      <Filter>libraries\enet\libenet</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\libraries\enet\libenet\protocol.c">
-      <Filter>libraries\enet\libenet</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\libraries\enet\libenet\win32.c">
-      <Filter>libraries\enet\libenet</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\libraries\enet\enet.cpp">
-      <Filter>libraries\enet</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\modules\graphics\opengl\Polyline.cpp">
-      <Filter>modules\graphics\opengl</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\modules\joystick\sdl\JoystickModule.cpp">
-      <Filter>modules\joystick\sdl</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\modules\joystick\sdl\wrap_JoystickModule.cpp">
-      <Filter>modules\joystick\sdl</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\modules\mouse\Cursor.cpp">
-      <Filter>modules\mouse</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\modules\mouse\wrap_Cursor.cpp">
-      <Filter>modules\mouse</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\modules\mouse\sdl\Cursor.cpp">
-      <Filter>modules\mouse\sdl</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\modules\system\System.cpp">
-      <Filter>modules\system</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\modules\system\wrap_System.cpp">
-      <Filter>modules\system</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\modules\system\sdl\System.cpp">
-      <Filter>modules\system\sdl</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\modules\joystick\sdl\JoystickModule.cpp">
-      <Filter>modules\joystick\sdl</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\modules\joystick\sdl\wrap_JoystickModule.cpp">
-      <Filter>modules\joystick\sdl</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\modules\mouse\Cursor.cpp">
-      <Filter>modules\mouse</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\modules\mouse\wrap_Cursor.cpp">
-      <Filter>modules\mouse</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\modules\mouse\sdl\Cursor.cpp">
-      <Filter>modules\mouse\sdl</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\modules\system\System.cpp">
-      <Filter>modules\system</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\modules\system\wrap_System.cpp">
-      <Filter>modules\system</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\modules\system\sdl\System.cpp">
-      <Filter>modules\system\sdl</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\modules\graphics\Quad.cpp">
-      <Filter>modules\graphics</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\modules\graphics\opengl\wrap_Quad.cpp">
-      <Filter>modules\graphics\opengl</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\modules\graphics\opengl\wrap_Mesh.cpp">
-      <Filter>modules\graphics\opengl</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\modules\graphics\opengl\Mesh.cpp">
-      <Filter>modules\graphics\opengl</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\libraries\Wuff\wuff_convert.c">
-      <Filter>libraries\Wuff</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\libraries\Wuff\wuff_internal.c">
-      <Filter>libraries\Wuff</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\libraries\Wuff\wuff_memory.c">
-      <Filter>libraries\Wuff</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\libraries\Wuff\wuff.c">
-      <Filter>libraries\Wuff</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\modules\sound\lullaby\WaveDecoder.cpp">
-      <Filter>modules\sound\lullaby</Filter>
-    </ClCompile>
-  </ItemGroup>
-  <ItemGroup>
-    <None Include="..\..\src\scripts\boot.lua">
-      <Filter>scripts</Filter>
-    </None>
-    <None Include="..\..\src\scripts\graphics.lua">
-      <Filter>scripts</Filter>
-    </None>
-    <None Include="..\..\src\scripts\auto.lua">
-      <Filter>scripts</Filter>
-    </None>
-  </ItemGroup>
-  <ItemGroup>
-    <ClInclude Include="..\..\src\common\Matrix.h">
-      <Filter>common</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\common\Memoizer.h">
-      <Filter>common</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\common\Module.h">
-      <Filter>common</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\common\Object.h">
-      <Filter>common</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\common\Reference.h">
-      <Filter>common</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\common\runtime.h">
-      <Filter>common</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\common\StringMap.h">
-      <Filter>common</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\common\types.h">
-      <Filter>common</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\common\utf8.h">
-      <Filter>common</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\common\Variant.h">
-      <Filter>common</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\common\Vector.h">
-      <Filter>common</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\common\version.h">
-      <Filter>common</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\common\wrap_Data.h">
-      <Filter>common</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\common\b64.h">
-      <Filter>common</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\common\config.h">
-      <Filter>common</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\common\Data.h">
-      <Filter>common</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\common\delay.h">
-      <Filter>common</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\common\EnumMap.h">
-      <Filter>common</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\common\Exception.h">
-      <Filter>common</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\common\int.h">
-      <Filter>common</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\common\math.h">
-      <Filter>common</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\libraries\Box2D\Box2D.h">
-      <Filter>libraries\Box2D</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\libraries\Box2D\Collision\b2BroadPhase.h">
-      <Filter>libraries\Box2D\Collision</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\libraries\Box2D\Collision\b2Collision.h">
-      <Filter>libraries\Box2D\Collision</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\libraries\Box2D\Collision\b2Distance.h">
-      <Filter>libraries\Box2D\Collision</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\libraries\Box2D\Collision\b2DynamicTree.h">
-      <Filter>libraries\Box2D\Collision</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\libraries\Box2D\Collision\b2TimeOfImpact.h">
-      <Filter>libraries\Box2D\Collision</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\libraries\Box2D\Collision\Shapes\b2CircleShape.h">
-      <Filter>libraries\Box2D\Collision\Shapes</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\libraries\Box2D\Collision\Shapes\b2EdgeShape.h">
-      <Filter>libraries\Box2D\Collision\Shapes</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\libraries\Box2D\Collision\Shapes\b2PolygonShape.h">
-      <Filter>libraries\Box2D\Collision\Shapes</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\libraries\Box2D\Collision\Shapes\b2Shape.h">
-      <Filter>libraries\Box2D\Collision\Shapes</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\libraries\Box2D\Collision\Shapes\b2ChainShape.h">
-      <Filter>libraries\Box2D\Collision\Shapes</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\libraries\Box2D\Common\b2Draw.h">
-      <Filter>libraries\Box2D\Common</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\libraries\Box2D\Common\b2GrowableStack.h">
-      <Filter>libraries\Box2D\Common</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\libraries\Box2D\Common\b2Math.h">
-      <Filter>libraries\Box2D\Common</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\libraries\Box2D\Common\b2Settings.h">
-      <Filter>libraries\Box2D\Common</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\libraries\Box2D\Common\b2StackAllocator.h">
-      <Filter>libraries\Box2D\Common</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\libraries\Box2D\Common\b2Timer.h">
-      <Filter>libraries\Box2D\Common</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\libraries\Box2D\Common\b2BlockAllocator.h">
-      <Filter>libraries\Box2D\Common</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\libraries\Box2D\Dynamics\b2Body.h">
-      <Filter>libraries\Box2D\Dynamcis</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\libraries\Box2D\Dynamics\b2ContactManager.h">
-      <Filter>libraries\Box2D\Dynamcis</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\libraries\Box2D\Dynamics\b2Fixture.h">
-      <Filter>libraries\Box2D\Dynamcis</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\libraries\Box2D\Dynamics\b2Island.h">
-      <Filter>libraries\Box2D\Dynamcis</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\libraries\Box2D\Dynamics\b2TimeStep.h">
-      <Filter>libraries\Box2D\Dynamcis</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\libraries\Box2D\Dynamics\b2World.h">
-      <Filter>libraries\Box2D\Dynamcis</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\libraries\Box2D\Dynamics\b2WorldCallbacks.h">
-      <Filter>libraries\Box2D\Dynamcis</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\libraries\Box2D\Dynamics\Contacts\b2CircleContact.h">
-      <Filter>libraries\Box2D\Dynamcis\Contacts</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\libraries\Box2D\Dynamics\Contacts\b2Contact.h">
-      <Filter>libraries\Box2D\Dynamcis\Contacts</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\libraries\Box2D\Dynamics\Contacts\b2ContactSolver.h">
-      <Filter>libraries\Box2D\Dynamcis\Contacts</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\libraries\Box2D\Dynamics\Contacts\b2EdgeAndCircleContact.h">
-      <Filter>libraries\Box2D\Dynamcis\Contacts</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\libraries\Box2D\Dynamics\Contacts\b2EdgeAndPolygonContact.h">
-      <Filter>libraries\Box2D\Dynamcis\Contacts</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\libraries\Box2D\Dynamics\Contacts\b2PolygonAndCircleContact.h">
-      <Filter>libraries\Box2D\Dynamcis\Contacts</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\libraries\Box2D\Dynamics\Contacts\b2PolygonContact.h">
-      <Filter>libraries\Box2D\Dynamcis\Contacts</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\libraries\Box2D\Dynamics\Contacts\b2ChainAndCircleContact.h">
-      <Filter>libraries\Box2D\Dynamcis\Contacts</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\libraries\Box2D\Dynamics\Contacts\b2ChainAndPolygonContact.h">
-      <Filter>libraries\Box2D\Dynamcis\Contacts</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\libraries\Box2D\Dynamics\Joints\b2MouseJoint.h">
-      <Filter>libraries\Box2D\Dynamcis\Joints</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\libraries\Box2D\Dynamics\Joints\b2PrismaticJoint.h">
-      <Filter>libraries\Box2D\Dynamcis\Joints</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\libraries\Box2D\Dynamics\Joints\b2PulleyJoint.h">
-      <Filter>libraries\Box2D\Dynamcis\Joints</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\libraries\Box2D\Dynamics\Joints\b2RevoluteJoint.h">
-      <Filter>libraries\Box2D\Dynamcis\Joints</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\libraries\Box2D\Dynamics\Joints\b2RopeJoint.h">
-      <Filter>libraries\Box2D\Dynamcis\Joints</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\libraries\Box2D\Dynamics\Joints\b2WeldJoint.h">
-      <Filter>libraries\Box2D\Dynamcis\Joints</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\libraries\Box2D\Dynamics\Joints\b2WheelJoint.h">
-      <Filter>libraries\Box2D\Dynamcis\Joints</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\libraries\Box2D\Dynamics\Joints\b2DistanceJoint.h">
-      <Filter>libraries\Box2D\Dynamcis\Joints</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\libraries\Box2D\Dynamics\Joints\b2FrictionJoint.h">
-      <Filter>libraries\Box2D\Dynamcis\Joints</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\libraries\Box2D\Dynamics\Joints\b2GearJoint.h">
-      <Filter>libraries\Box2D\Dynamcis\Joints</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\libraries\Box2D\Dynamics\Joints\b2Joint.h">
-      <Filter>libraries\Box2D\Dynamcis\Joints</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\libraries\Box2D\Rope\b2Rope.h">
-      <Filter>libraries\Box2D\Rope</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\libraries\luasocket\luasocket.h">
-      <Filter>libraries\luasocket</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\libraries\luasocket\libluasocket\auxiliar.h">
-      <Filter>libraries\luasocket\luasocket</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\libraries\luasocket\libluasocket\buffer.h">
-      <Filter>libraries\luasocket\luasocket</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\libraries\luasocket\libluasocket\except.h">
-      <Filter>libraries\luasocket\luasocket</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\libraries\luasocket\libluasocket\inet.h">
-      <Filter>libraries\luasocket\luasocket</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\libraries\luasocket\libluasocket\io.h">
-      <Filter>libraries\luasocket\luasocket</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\libraries\luasocket\libluasocket\luasocket.h">
-      <Filter>libraries\luasocket\luasocket</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\libraries\luasocket\libluasocket\mime.h">
-      <Filter>libraries\luasocket\luasocket</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\libraries\luasocket\libluasocket\options.h">
-      <Filter>libraries\luasocket\luasocket</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\libraries\luasocket\libluasocket\select.h">
-      <Filter>libraries\luasocket\luasocket</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\libraries\luasocket\libluasocket\socket.h">
-      <Filter>libraries\luasocket\luasocket</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\libraries\luasocket\libluasocket\tcp.h">
-      <Filter>libraries\luasocket\luasocket</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\libraries\luasocket\libluasocket\timeout.h">
-      <Filter>libraries\luasocket\luasocket</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\libraries\luasocket\libluasocket\tp.lua.h">
-      <Filter>libraries\luasocket\luasocket</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\libraries\luasocket\libluasocket\udp.h">
-      <Filter>libraries\luasocket\luasocket</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\libraries\luasocket\libluasocket\url.lua.h">
-      <Filter>libraries\luasocket\luasocket</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\libraries\luasocket\libluasocket\wsocket.h">
-      <Filter>libraries\luasocket\luasocket</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\libraries\utf8\utf8.h">
-      <Filter>libraries\utf8</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\libraries\utf8\utf8\core.h">
-      <Filter>libraries\utf8</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\libraries\utf8\utf8\unchecked.h">
-      <Filter>libraries\utf8</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\libraries\utf8\utf8\checked.h">
-      <Filter>libraries\utf8</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\modules\audio\Audio.h">
-      <Filter>modules\audio</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\modules\audio\Source.h">
-      <Filter>modules\audio</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\modules\audio\wrap_Audio.h">
-      <Filter>modules\audio</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\modules\audio\wrap_Source.h">
-      <Filter>modules\audio</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\modules\audio\null\Audio.h">
-      <Filter>modules\audio\null</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\modules\audio\null\Source.h">
-      <Filter>modules\audio\null</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\modules\audio\openal\Pool.h">
-      <Filter>modules\audio\openal</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\modules\audio\openal\Source.h">
-      <Filter>modules\audio\openal</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\modules\audio\openal\Audio.h">
-      <Filter>modules\audio\openal</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\modules\event\Event.h">
-      <Filter>modules\event</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\modules\event\sdl\Event.h">
-      <Filter>modules\event\sdl</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\modules\event\sdl\wrap_Event.h">
-      <Filter>modules\event\sdl</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\modules\filesystem\File.h">
-      <Filter>modules\filesystem</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\modules\filesystem\FileData.h">
-      <Filter>modules\filesystem</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\modules\filesystem\physfs\Filesystem.h">
-      <Filter>modules\filesystem\physfs</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\modules\filesystem\physfs\wrap_File.h">
-      <Filter>modules\filesystem\physfs</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\modules\filesystem\physfs\wrap_FileData.h">
-      <Filter>modules\filesystem\physfs</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\modules\filesystem\physfs\wrap_Filesystem.h">
-      <Filter>modules\filesystem\physfs</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\modules\filesystem\physfs\File.h">
-      <Filter>modules\filesystem\physfs</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\modules\font\GlyphData.h">
-      <Filter>modules\font</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\modules\font\ImageRasterizer.h">
-      <Filter>modules\font</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\modules\font\Rasterizer.h">
-      <Filter>modules\font</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\modules\font\wrap_GlyphData.h">
-      <Filter>modules\font</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\modules\font\wrap_Rasterizer.h">
-      <Filter>modules\font</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\modules\font\Font.h">
-      <Filter>modules\font</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\modules\font\freetype\TrueTypeRasterizer.h">
-      <Filter>modules\font\freetype</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\modules\font\freetype\wrap_Font.h">
-      <Filter>modules\font\freetype</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\modules\font\freetype\Font.h">
-      <Filter>modules\font\freetype</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\modules\graphics\Drawable.h">
-      <Filter>modules\graphics</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\modules\graphics\Graphics.h">
-      <Filter>modules\graphics</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\modules\graphics\Image.h">
-      <Filter>modules\graphics</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\modules\graphics\Volatile.h">
-      <Filter>modules\graphics</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\modules\graphics\Color.h">
-      <Filter>modules\graphics</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\modules\graphics\opengl\ParticleSystem.h">
-      <Filter>modules\graphics\opengl</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\modules\graphics\opengl\Shader.h">
-      <Filter>modules\graphics\opengl</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\modules\graphics\opengl\SpriteBatch.h">
-      <Filter>modules\graphics\opengl</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\modules\graphics\opengl\VertexBuffer.h">
-      <Filter>modules\graphics\opengl</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\modules\graphics\opengl\wrap_Canvas.h">
-      <Filter>modules\graphics\opengl</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\modules\graphics\opengl\wrap_Font.h">
-      <Filter>modules\graphics\opengl</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\modules\graphics\opengl\wrap_Graphics.h">
-      <Filter>modules\graphics\opengl</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\modules\graphics\opengl\wrap_Image.h">
-      <Filter>modules\graphics\opengl</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\modules\graphics\opengl\wrap_ParticleSystem.h">
-      <Filter>modules\graphics\opengl</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\modules\graphics\opengl\wrap_Shader.h">
-      <Filter>modules\graphics\opengl</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\modules\graphics\opengl\wrap_SpriteBatch.h">
-      <Filter>modules\graphics\opengl</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\modules\graphics\opengl\Canvas.h">
-      <Filter>modules\graphics\opengl</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\modules\graphics\opengl\Font.h">
-      <Filter>modules\graphics\opengl</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\modules\graphics\opengl\GLee.h">
-      <Filter>modules\graphics\opengl</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\modules\graphics\opengl\Graphics.h">
-      <Filter>modules\graphics\opengl</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\modules\graphics\opengl\Image.h">
-      <Filter>modules\graphics\opengl</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\modules\graphics\opengl\OpenGL.h">
-      <Filter>modules\graphics\opengl</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\modules\image\Image.h">
-      <Filter>modules\image</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\modules\image\ImageData.h">
-      <Filter>modules\image</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\modules\image\wrap_Image.h">
-      <Filter>modules\image</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\modules\image\wrap_ImageData.h">
-      <Filter>modules\image</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\modules\joystick\Joystick.h">
-      <Filter>modules\joystick</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\modules\joystick\sdl\wrap_Joystick.h">
-      <Filter>modules\joystick\sdl</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\modules\joystick\sdl\Joystick.h">
-      <Filter>modules\joystick\sdl</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\modules\keyboard\Keyboard.h">
-      <Filter>modules\keyboard</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\modules\keyboard\wrap_Keyboard.h">
-      <Filter>modules\keyboard</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\modules\keyboard\sdl\Keyboard.h">
-      <Filter>modules\keyboard\sdl</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\modules\mouse\Mouse.h">
-      <Filter>modules\mouse</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\modules\mouse\wrap_Mouse.h">
-      <Filter>modules\mouse</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\modules\mouse\sdl\Mouse.h">
-      <Filter>modules\mouse\sdl</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\modules\physics\Body.h">
-      <Filter>modules\physics</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\modules\physics\Joint.h">
-      <Filter>modules\physics</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\modules\physics\Shape.h">
-      <Filter>modules\physics</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\modules\physics\box2d\ChainShape.h">
-      <Filter>modules\physics\box2d</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\modules\physics\box2d\CircleShape.h">
-      <Filter>modules\physics\box2d</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\modules\physics\box2d\Contact.h">
-      <Filter>modules\physics\box2d</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\modules\physics\box2d\DistanceJoint.h">
-      <Filter>modules\physics\box2d</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\modules\physics\box2d\EdgeShape.h">
-      <Filter>modules\physics\box2d</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\modules\physics\box2d\Fixture.h">
-      <Filter>modules\physics\box2d</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\modules\physics\box2d\FrictionJoint.h">
-      <Filter>modules\physics\box2d</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\modules\physics\box2d\GearJoint.h">
-      <Filter>modules\physics\box2d</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\modules\physics\box2d\Joint.h">
-      <Filter>modules\physics\box2d</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\modules\physics\box2d\MouseJoint.h">
-      <Filter>modules\physics\box2d</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\modules\physics\box2d\Physics.h">
-      <Filter>modules\physics\box2d</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\modules\physics\box2d\PolygonShape.h">
-      <Filter>modules\physics\box2d</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\modules\physics\box2d\PrismaticJoint.h">
-      <Filter>modules\physics\box2d</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\modules\physics\box2d\PulleyJoint.h">
-      <Filter>modules\physics\box2d</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\modules\physics\box2d\RevoluteJoint.h">
-      <Filter>modules\physics\box2d</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\modules\physics\box2d\RopeJoint.h">
-      <Filter>modules\physics\box2d</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\modules\physics\box2d\Shape.h">
-      <Filter>modules\physics\box2d</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\modules\physics\box2d\WeldJoint.h">
-      <Filter>modules\physics\box2d</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\modules\physics\box2d\WheelJoint.h">
-      <Filter>modules\physics\box2d</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\modules\physics\box2d\World.h">
-      <Filter>modules\physics\box2d</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\modules\physics\box2d\wrap_Body.h">
-      <Filter>modules\physics\box2d</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\modules\physics\box2d\wrap_ChainShape.h">
-      <Filter>modules\physics\box2d</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\modules\physics\box2d\wrap_CircleShape.h">
-      <Filter>modules\physics\box2d</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\modules\physics\box2d\wrap_Contact.h">
-      <Filter>modules\physics\box2d</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\modules\physics\box2d\wrap_DistanceJoint.h">
-      <Filter>modules\physics\box2d</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\modules\physics\box2d\wrap_EdgeShape.h">
-      <Filter>modules\physics\box2d</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\modules\physics\box2d\wrap_Fixture.h">
-      <Filter>modules\physics\box2d</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\modules\physics\box2d\wrap_FrictionJoint.h">
-      <Filter>modules\physics\box2d</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\modules\physics\box2d\wrap_GearJoint.h">
-      <Filter>modules\physics\box2d</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\modules\physics\box2d\wrap_Joint.h">
-      <Filter>modules\physics\box2d</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\modules\physics\box2d\wrap_MouseJoint.h">
-      <Filter>modules\physics\box2d</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\modules\physics\box2d\wrap_Physics.h">
-      <Filter>modules\physics\box2d</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\modules\physics\box2d\wrap_PolygonShape.h">
-      <Filter>modules\physics\box2d</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\modules\physics\box2d\wrap_PrismaticJoint.h">
-      <Filter>modules\physics\box2d</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\modules\physics\box2d\wrap_PulleyJoint.h">
-      <Filter>modules\physics\box2d</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\modules\physics\box2d\wrap_RevoluteJoint.h">
-      <Filter>modules\physics\box2d</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\modules\physics\box2d\wrap_RopeJoint.h">
-      <Filter>modules\physics\box2d</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\modules\physics\box2d\wrap_Shape.h">
-      <Filter>modules\physics\box2d</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\modules\physics\box2d\wrap_WeldJoint.h">
-      <Filter>modules\physics\box2d</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\modules\physics\box2d\wrap_WheelJoint.h">
-      <Filter>modules\physics\box2d</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\modules\physics\box2d\wrap_World.h">
-      <Filter>modules\physics\box2d</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\modules\physics\box2d\Body.h">
-      <Filter>modules\physics\box2d</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\modules\sound\Decoder.h">
-      <Filter>modules\sound</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\modules\sound\Sound.h">
-      <Filter>modules\sound</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\modules\sound\SoundData.h">
-      <Filter>modules\sound</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\modules\sound\wrap_Decoder.h">
-      <Filter>modules\sound</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\modules\sound\wrap_Sound.h">
-      <Filter>modules\sound</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\modules\sound\wrap_SoundData.h">
-      <Filter>modules\sound</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\modules\sound\lullaby\ModPlugDecoder.h">
-      <Filter>modules\sound\lullaby</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\modules\sound\lullaby\Mpg123Decoder.h">
-      <Filter>modules\sound\lullaby</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\modules\sound\lullaby\Sound.h">
-      <Filter>modules\sound\lullaby</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\modules\sound\lullaby\VorbisDecoder.h">
-      <Filter>modules\sound\lullaby</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\modules\sound\lullaby\Decoder.h">
-      <Filter>modules\sound\lullaby</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\modules\sound\lullaby\FLACDecoder.h">
-      <Filter>modules\sound\lullaby</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\modules\timer\Timer.h">
-      <Filter>modules\timer</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\modules\timer\wrap_Timer.h">
-      <Filter>modules\timer</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\modules\timer\sdl\Timer.h">
-      <Filter>modules\timer\sdl</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\modules\window\Window.h">
-      <Filter>modules\window</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\modules\window\sdl\Window.h">
-      <Filter>modules\window\sdl</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\modules\love\love.h">
-      <Filter>modules\love</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\modules\math\wrap_Math.h">
-      <Filter>modules\math</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\modules\thread\Channel.h">
-      <Filter>modules\thread</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\modules\thread\LuaThread.h">
-      <Filter>modules\thread</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\modules\thread\Thread.h">
-      <Filter>modules\thread</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\modules\thread\ThreadModule.h">
-      <Filter>modules\thread</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\modules\thread\threads.h">
-      <Filter>modules\thread</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\modules\thread\wrap_Channel.h">
-      <Filter>modules\thread</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\modules\thread\wrap_LuaThread.h">
-      <Filter>modules\thread</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\modules\thread\wrap_ThreadModule.h">
-      <Filter>modules\thread</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\modules\thread\sdl\Thread.h">
-      <Filter>modules\thread\sdl</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\modules\thread\sdl\threads.h">
-      <Filter>modules\thread\sdl</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\modules\math\MathModule.h">
-      <Filter>modules\math</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\libraries\ddsparse\ddsparse.h">
-      <Filter>libraries\ddsparse</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\libraries\ddsparse\ddsinfo.h">
-      <Filter>libraries\ddsparse</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\modules\image\magpie\ddsHandler.h">
-      <Filter>modules\image\magpie</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\modules\image\magpie\DevilHandler.h">
-      <Filter>modules\image\magpie</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\modules\image\magpie\FormatHandler.h">
-      <Filter>modules\image\magpie</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\modules\image\magpie\Image.h">
-      <Filter>modules\image\magpie</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\modules\image\magpie\ImageData.h">
-      <Filter>modules\image\magpie</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\modules\image\magpie\CompressedData.h">
-      <Filter>modules\image\magpie</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\modules\image\CompressedData.h">
-      <Filter>modules\image</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\modules\image\wrap_CompressedData.h">
-      <Filter>modules\image</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\modules\math\RandomGenerator.h">
-      <Filter>modules\math</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\modules\math\wrap_RandomGenerator.h">
-      <Filter>modules\math</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\libraries\noise1234\simplexnoise1234.h">
-      <Filter>libraries\noise1234</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\modules\math\wrap_BezierCurve.h">
-      <Filter>modules\math</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\modules\math\BezierCurve.h">
-      <Filter>modules\math</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\modules\window\wrap_Window.h">
-      <Filter>modules\window</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\libraries\enet\lua-enet.h">
-      <Filter>libraries\enet</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\libraries\enet\libenet\include\enet\callbacks.h">
-      <Filter>libraries\enet\libenet\include\enet</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\libraries\enet\libenet\include\enet\enet.h">
-      <Filter>libraries\enet\libenet\include\enet</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\libraries\enet\libenet\include\enet\list.h">
-      <Filter>libraries\enet\libenet\include\enet</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\libraries\enet\libenet\include\enet\protocol.h">
-      <Filter>libraries\enet\libenet\include\enet</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\libraries\enet\libenet\include\enet\time.h">
-      <Filter>libraries\enet\libenet\include\enet</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\libraries\enet\libenet\include\enet\types.h">
-      <Filter>libraries\enet\libenet\include\enet</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\libraries\enet\libenet\include\enet\unix.h">
-      <Filter>libraries\enet\libenet\include\enet</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\libraries\enet\libenet\include\enet\utility.h">
-      <Filter>libraries\enet\libenet\include\enet</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\libraries\enet\libenet\include\enet\win32.h">
-      <Filter>libraries\enet\libenet\include\enet</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\modules\graphics\opengl\Polyline.h">
-      <Filter>modules\graphics\opengl</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\modules\joystick\JoystickModule.h">
-      <Filter>modules\joystick</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\modules\joystick\sdl\JoystickModule.h">
-      <Filter>modules\joystick\sdl</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\modules\joystick\sdl\wrap_JoystickModule.h">
-      <Filter>modules\joystick\sdl</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\modules\mouse\Cursor.h">
-      <Filter>modules\mouse</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\modules\mouse\wrap_Cursor.h">
-      <Filter>modules\mouse</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\modules\mouse\sdl\Cursor.h">
-      <Filter>modules\mouse\sdl</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\modules\system\System.h">
-      <Filter>modules\system</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\modules\system\wrap_System.h">
-      <Filter>modules\system</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\modules\system\sdl\System.h">
-      <Filter>modules\system\sdl</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\modules\joystick\JoystickModule.h">
-      <Filter>modules\joystick</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\modules\joystick\sdl\JoystickModule.h">
-      <Filter>modules\joystick\sdl</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\modules\joystick\sdl\wrap_JoystickModule.h">
-      <Filter>modules\joystick\sdl</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\modules\mouse\Cursor.h">
-      <Filter>modules\mouse</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\modules\mouse\wrap_Cursor.h">
-      <Filter>modules\mouse</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\modules\mouse\sdl\Cursor.h">
-      <Filter>modules\mouse\sdl</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\modules\system\System.h">
-      <Filter>modules\system</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\modules\system\wrap_System.h">
-      <Filter>modules\system</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\modules\system\sdl\System.h">
-      <Filter>modules\system\sdl</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\modules\graphics\DrawQable.h">
-      <Filter>modules\graphics</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\modules\graphics\Quad.h">
-      <Filter>modules\graphics</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\modules\graphics\opengl\wrap_Quad.h">
-      <Filter>modules\graphics\opengl</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\modules\graphics\opengl\wrap_Mesh.h">
-      <Filter>modules\graphics\opengl</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\modules\graphics\opengl\Mesh.h">
-      <Filter>modules\graphics\opengl</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\libraries\Wuff\wuff.h">
-      <Filter>libraries\Wuff</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\libraries\Wuff\wuff_config.h">
-      <Filter>libraries\Wuff</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\libraries\Wuff\wuff_convert.h">
-      <Filter>libraries\Wuff</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\libraries\Wuff\wuff_internal.h">
-      <Filter>libraries\Wuff</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\modules\sound\lullaby\WaveDecoder.h">
-      <Filter>modules\sound\lullaby</Filter>
-    </ClInclude>
-  </ItemGroup>
-  <ItemGroup>
-    <ResourceCompile Include="love.rc" />
-  </ItemGroup>
-</Project>

BIN
love/src/jni/love/platform/msvc2010/love.ico


BIN
love/src/jni/love/platform/msvc2010/love.rc


+ 0 - 47
love/src/jni/love/platform/msvc2010/love.sln

@@ -1,47 +0,0 @@
-
-Microsoft Visual Studio Solution File, Format Version 11.00
-# Visual C++ Express 2010
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "love", "love.vcxproj", "{B496CCF6-9B6D-0794-8F41-67A6EC86B4AA}"
-	ProjectSection(ProjectDependencies) = postProject
-		{A3FCC735-3E18-4D6B-9DA9-01D9E910B7F8} = {A3FCC735-3E18-4D6B-9DA9-01D9E910B7F8}
-	EndProjectSection
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "liblove", "liblove.vcxproj", "{A3FCC735-3E18-4D6B-9DA9-01D9E910B7F8}"
-EndProject
-Global
-	GlobalSection(SolutionConfigurationPlatforms) = preSolution
-		Debug MD|Win32 = Debug MD|Win32
-		Debug MD|x64 = Debug MD|x64
-		Release MD|Win32 = Release MD|Win32
-		Release MD|x64 = Release MD|x64
-		Release MT|Win32 = Release MT|Win32
-		Release MT|x64 = Release MT|x64
-	EndGlobalSection
-	GlobalSection(ProjectConfigurationPlatforms) = postSolution
-		{B496CCF6-9B6D-0794-8F41-67A6EC86B4AA}.Debug MD|Win32.ActiveCfg = Debug Dynamic|Win32
-		{B496CCF6-9B6D-0794-8F41-67A6EC86B4AA}.Debug MD|Win32.Build.0 = Debug Dynamic|Win32
-		{B496CCF6-9B6D-0794-8F41-67A6EC86B4AA}.Debug MD|x64.ActiveCfg = Debug Dynamic|x64
-		{B496CCF6-9B6D-0794-8F41-67A6EC86B4AA}.Release MD|Win32.ActiveCfg = Release Dynamic|Win32
-		{B496CCF6-9B6D-0794-8F41-67A6EC86B4AA}.Release MD|Win32.Build.0 = Release Dynamic|Win32
-		{B496CCF6-9B6D-0794-8F41-67A6EC86B4AA}.Release MD|x64.ActiveCfg = Release Dynamic|x64
-		{B496CCF6-9B6D-0794-8F41-67A6EC86B4AA}.Release MD|x64.Build.0 = Release Dynamic|x64
-		{B496CCF6-9B6D-0794-8F41-67A6EC86B4AA}.Release MT|Win32.ActiveCfg = Release Static|Win32
-		{B496CCF6-9B6D-0794-8F41-67A6EC86B4AA}.Release MT|Win32.Build.0 = Release Static|Win32
-		{B496CCF6-9B6D-0794-8F41-67A6EC86B4AA}.Release MT|x64.ActiveCfg = Release Static|x64
-		{B496CCF6-9B6D-0794-8F41-67A6EC86B4AA}.Release MT|x64.Build.0 = Release Static|x64
-		{A3FCC735-3E18-4D6B-9DA9-01D9E910B7F8}.Debug MD|Win32.ActiveCfg = Debug Dynamic|Win32
-		{A3FCC735-3E18-4D6B-9DA9-01D9E910B7F8}.Debug MD|Win32.Build.0 = Debug Dynamic|Win32
-		{A3FCC735-3E18-4D6B-9DA9-01D9E910B7F8}.Debug MD|x64.ActiveCfg = Debug Dynamic|x64
-		{A3FCC735-3E18-4D6B-9DA9-01D9E910B7F8}.Release MD|Win32.ActiveCfg = Release Dynamic|Win32
-		{A3FCC735-3E18-4D6B-9DA9-01D9E910B7F8}.Release MD|Win32.Build.0 = Release Dynamic|Win32
-		{A3FCC735-3E18-4D6B-9DA9-01D9E910B7F8}.Release MD|x64.ActiveCfg = Release Dynamic|x64
-		{A3FCC735-3E18-4D6B-9DA9-01D9E910B7F8}.Release MD|x64.Build.0 = Release Dynamic|x64
-		{A3FCC735-3E18-4D6B-9DA9-01D9E910B7F8}.Release MT|Win32.ActiveCfg = Release Static|Win32
-		{A3FCC735-3E18-4D6B-9DA9-01D9E910B7F8}.Release MT|Win32.Build.0 = Release Static|Win32
-		{A3FCC735-3E18-4D6B-9DA9-01D9E910B7F8}.Release MT|x64.ActiveCfg = Release Static|x64
-		{A3FCC735-3E18-4D6B-9DA9-01D9E910B7F8}.Release MT|x64.Build.0 = Release Static|x64
-	EndGlobalSection
-	GlobalSection(SolutionProperties) = preSolution
-		HideSolutionNode = FALSE
-	EndGlobalSection
-EndGlobal

+ 0 - 273
love/src/jni/love/platform/msvc2010/love.vcxproj

@@ -1,273 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <ItemGroup Label="ProjectConfigurations">
-    <ProjectConfiguration Include="Debug Dynamic|Win32">
-      <Configuration>Debug Dynamic</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Debug Dynamic|x64">
-      <Configuration>Debug Dynamic</Configuration>
-      <Platform>x64</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Release Dynamic|Win32">
-      <Configuration>Release Dynamic</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Release Dynamic|x64">
-      <Configuration>Release Dynamic</Configuration>
-      <Platform>x64</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Release Static|Win32">
-      <Configuration>Release Static</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Release Static|x64">
-      <Configuration>Release Static</Configuration>
-      <Platform>x64</Platform>
-    </ProjectConfiguration>
-  </ItemGroup>
-  <PropertyGroup Label="Globals">
-    <Keyword>Win32Proj</Keyword>
-  </PropertyGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug Dynamic|Win32'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-    <UseDebugLibraries>true</UseDebugLibraries>
-    <CharacterSet>Unicode</CharacterSet>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug Dynamic|x64'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-    <UseDebugLibraries>true</UseDebugLibraries>
-    <CharacterSet>Unicode</CharacterSet>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release Dynamic|Win32'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-    <UseDebugLibraries>false</UseDebugLibraries>
-    <CharacterSet>Unicode</CharacterSet>
-    <WholeProgramOptimization>true</WholeProgramOptimization>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release Dynamic|x64'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-    <UseDebugLibraries>false</UseDebugLibraries>
-    <CharacterSet>Unicode</CharacterSet>
-    <WholeProgramOptimization>true</WholeProgramOptimization>
-    <PlatformToolset>Windows7.1SDK</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Label="Configuration" Condition="'$(Configuration)|$(Platform)'=='Release Static|Win32'">
-    <CharacterSet>Unicode</CharacterSet>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release Static|x64'" Label="Configuration">
-    <CharacterSet>Unicode</CharacterSet>
-  </PropertyGroup>
-  <PropertyGroup Label="Configuration" Condition="'$(Configuration)|$(Platform)'=='Release Static|Win32'">
-    <WholeProgramOptimization>true</WholeProgramOptimization>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release Static|x64'" Label="Configuration">
-    <WholeProgramOptimization>true</WholeProgramOptimization>
-    <PlatformToolset>Windows7.1SDK</PlatformToolset>
-  </PropertyGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
-  <ImportGroup Label="ExtensionSettings">
-  </ImportGroup>
-  <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug Dynamic|Win32'">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug Dynamic|x64'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-  </ImportGroup>
-  <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release Dynamic|Win32'">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release Dynamic|x64'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-  </ImportGroup>
-  <PropertyGroup Label="UserMacros" />
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug Dynamic|Win32'">
-    <LinkIncremental>false</LinkIncremental>
-    <GenerateManifest>false</GenerateManifest>
-    <OutDir>$(SolutionDir)\bin\$(PlatformShortName)\Debug\MD\</OutDir>
-    <IntDir>$(ProjectName)\$(PlatformShortName)\Debug\</IntDir>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug Dynamic|x64'">
-    <LinkIncremental>false</LinkIncremental>
-    <GenerateManifest>false</GenerateManifest>
-    <OutDir>$(SolutionDir)\bin\$(PlatformShortName)\Debug\MD\</OutDir>
-    <IntDir>$(ProjectName)\$(PlatformShortName)\Debug\</IntDir>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release Dynamic|Win32'">
-    <LinkIncremental>false</LinkIncremental>
-    <OutDir>$(SolutionDir)\bin\$(PlatformShortName)\Release\MD\</OutDir>
-    <IntDir>$(ProjectName)\$(PlatformShortName)\Release\</IntDir>
-    <GenerateManifest>false</GenerateManifest>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release Dynamic|x64'">
-    <LinkIncremental>false</LinkIncremental>
-    <OutDir>$(SolutionDir)\bin\$(PlatformShortName)\Release\MD\</OutDir>
-    <IntDir>$(ProjectName)\$(PlatformShortName)\Release\</IntDir>
-    <GenerateManifest>false</GenerateManifest>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release Static|Win32'">
-    <OutDir>$(SolutionDir)\bin\$(PlatformShortName)\Release\MT\</OutDir>
-    <IntDir>$(ProjectName)\$(PlatformShortName)\Release\</IntDir>
-    <GenerateManifest>false</GenerateManifest>
-    <LinkIncremental>false</LinkIncremental>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release Static|x64'">
-    <OutDir>$(SolutionDir)\bin\$(PlatformShortName)\Release\MT\</OutDir>
-    <IntDir>$(ProjectName)\$(PlatformShortName)\Release\</IntDir>
-    <GenerateManifest>false</GenerateManifest>
-    <LinkIncremental>false</LinkIncremental>
-  </PropertyGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug Dynamic|Win32'">
-    <ClCompile>
-      <PreprocessorDefinitions>DEBUG;_DEBUG%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
-      <WarningLevel>Level3</WarningLevel>
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
-      <Optimization>Disabled</Optimization>
-      <AdditionalIncludeDirectories>include;include\SDL;..\..\src;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <MultiProcessorCompilation>
-      </MultiProcessorCompilation>
-      <MinimalRebuild>false</MinimalRebuild>
-    </ClCompile>
-    <Link>
-      <TargetMachine>MachineX86</TargetMachine>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-      <SubSystem>Windows</SubSystem>
-      <AdditionalLibraryDirectories>lib\$(PlatformShortName)\Debug\MD\</AdditionalLibraryDirectories>
-      <AdditionalDependencies>msvcrtd.lib;msvcprtd.lib;kernel32.lib;lua51.lib;SDL2main.lib;SDL2.lib;%(AdditionalDependencies)</AdditionalDependencies>
-      <IgnoreAllDefaultLibraries>true</IgnoreAllDefaultLibraries>
-      <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>
-      <ProfileGuidedDatabase>$(TargetDir)$(TargetName).pgd</ProfileGuidedDatabase>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug Dynamic|x64'">
-    <ClCompile>
-      <PreprocessorDefinitions>DEBUG;_DEBUG%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
-      <WarningLevel>Level3</WarningLevel>
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
-      <Optimization>Disabled</Optimization>
-      <AdditionalIncludeDirectories>include;include\SDL;..\..\src;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <MultiProcessorCompilation>
-      </MultiProcessorCompilation>
-      <MinimalRebuild>false</MinimalRebuild>
-      <OmitFramePointers>false</OmitFramePointers>
-    </ClCompile>
-    <Link>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-      <SubSystem>Windows</SubSystem>
-      <AdditionalLibraryDirectories>lib\$(PlatformShortName)\Debug\MD\</AdditionalLibraryDirectories>
-      <AdditionalDependencies>msvcrtd.lib;msvcprtd.lib;kernel32.lib;lua51.lib;SDL2main.lib;SDL2.lib;%(AdditionalDependencies)</AdditionalDependencies>
-      <IgnoreAllDefaultLibraries>true</IgnoreAllDefaultLibraries>
-      <ProfileGuidedDatabase>$(TargetDir)$(TargetName).pgd</ProfileGuidedDatabase>
-      <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release Dynamic|Win32'">
-    <ClCompile>
-      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
-      <WarningLevel>Level1</WarningLevel>
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
-      <AdditionalIncludeDirectories>include;include\SDL;..\..\src;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <OmitFramePointers>true</OmitFramePointers>
-      <StringPooling>true</StringPooling>
-      <BufferSecurityCheck>false</BufferSecurityCheck>
-      <FunctionLevelLinking>true</FunctionLevelLinking>
-    </ClCompile>
-    <Link>
-      <TargetMachine>MachineX86</TargetMachine>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-      <SubSystem>Windows</SubSystem>
-      <EnableCOMDATFolding>true</EnableCOMDATFolding>
-      <OptimizeReferences>true</OptimizeReferences>
-      <AdditionalLibraryDirectories>lib\$(PlatformShortName)\Release\MD\</AdditionalLibraryDirectories>
-      <AdditionalDependencies>msvcrt.lib;msvcprt.lib;kernel32.lib;lua51.lib;SDL2main.lib;SDL2.lib;%(AdditionalDependencies)</AdditionalDependencies>
-      <IgnoreAllDefaultLibraries>true</IgnoreAllDefaultLibraries>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release Dynamic|x64'">
-    <ClCompile>
-      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
-      <WarningLevel>Level1</WarningLevel>
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
-      <AdditionalIncludeDirectories>include;include\SDL;..\..\src;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <OmitFramePointers>true</OmitFramePointers>
-      <StringPooling>true</StringPooling>
-      <BufferSecurityCheck>false</BufferSecurityCheck>
-      <FunctionLevelLinking>true</FunctionLevelLinking>
-    </ClCompile>
-    <Link>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-      <SubSystem>Windows</SubSystem>
-      <EnableCOMDATFolding>true</EnableCOMDATFolding>
-      <OptimizeReferences>true</OptimizeReferences>
-      <AdditionalLibraryDirectories>lib\$(PlatformShortName)\Release\MD\</AdditionalLibraryDirectories>
-      <AdditionalDependencies>msvcrt.lib;msvcprt.lib;kernel32.lib;lua51.lib;SDL2main.lib;SDL2.lib;%(AdditionalDependencies)</AdditionalDependencies>
-      <IgnoreAllDefaultLibraries>true</IgnoreAllDefaultLibraries>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release Static|Win32'">
-    <ClCompile>
-      <AdditionalIncludeDirectories>include;include\SDL;..\..\src;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <OmitFramePointers>true</OmitFramePointers>
-      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <StringPooling>true</StringPooling>
-      <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
-      <BufferSecurityCheck>false</BufferSecurityCheck>
-      <FunctionLevelLinking>true</FunctionLevelLinking>
-    </ClCompile>
-    <Link>
-      <SubSystem>Windows</SubSystem>
-      <OptimizeReferences>true</OptimizeReferences>
-      <EnableCOMDATFolding>true</EnableCOMDATFolding>
-      <AdditionalDependencies>libcmt.lib;libcpmt.lib;kernel32.lib;user32.lib;shell32.lib;uuid.lib;advapi32.lib;ws2_32.lib;winmm.lib;opengl32.lib;oldnames.lib;DevIL.lib;freetype.lib;libmodplug.lib;libogg.lib;libvorbis.lib;libvorbisfile.lib;lua51.lib;mpg123.lib;physfs.lib;OpenAL.lib;zlib.lib;SDL2main.lib;SDL2.lib;%(AdditionalDependencies)</AdditionalDependencies>
-      <AdditionalLibraryDirectories>lib\$(PlatformShortName)\Release\MT\</AdditionalLibraryDirectories>
-      <IgnoreAllDefaultLibraries>true</IgnoreAllDefaultLibraries>
-      <ShowProgress>NotSet</ShowProgress>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release Static|x64'">
-    <ClCompile>
-      <AdditionalIncludeDirectories>include;include\SDL;..\..\src;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <OmitFramePointers>true</OmitFramePointers>
-      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <StringPooling>true</StringPooling>
-      <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
-      <BufferSecurityCheck>false</BufferSecurityCheck>
-      <FunctionLevelLinking>true</FunctionLevelLinking>
-    </ClCompile>
-    <Link>
-      <SubSystem>Windows</SubSystem>
-      <OptimizeReferences>true</OptimizeReferences>
-      <EnableCOMDATFolding>true</EnableCOMDATFolding>
-      <AdditionalDependencies>libcmt.lib;libcpmt.lib;kernel32.lib;user32.lib;shell32.lib;uuid.lib;advapi32.lib;ws2_32.lib;winmm.lib;opengl32.lib;oldnames.lib;DevIL.lib;freetype.lib;libmodplug.lib;libogg.lib;libvorbis.lib;libvorbisfile.lib;lua51.lib;mpg123.lib;physfs.lib;OpenAL.lib;zlib.lib;SDL2main.lib;SDL2.lib;%(AdditionalDependencies)</AdditionalDependencies>
-      <AdditionalLibraryDirectories>lib\$(PlatformShortName)\Release\MT\</AdditionalLibraryDirectories>
-      <IgnoreAllDefaultLibraries>true</IgnoreAllDefaultLibraries>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemGroup>
-    <ResourceCompile Include="love.rc" />
-  </ItemGroup>
-  <ItemGroup>
-    <ProjectReference Include="liblove.vcxproj">
-      <Project>{a3fcc735-3e18-4d6b-9da9-01d9e910b7f8}</Project>
-      <Private>false</Private>
-      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
-      <CopyLocalSatelliteAssemblies>false</CopyLocalSatelliteAssemblies>
-      <LinkLibraryDependencies>true</LinkLibraryDependencies>
-      <UseLibraryDependencyInputs>false</UseLibraryDependencyInputs>
-    </ProjectReference>
-  </ItemGroup>
-  <ItemGroup>
-    <ClCompile Include="..\..\src\love.cpp" />
-  </ItemGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
-  <ImportGroup Label="ExtensionTargets">
-  </ImportGroup>
-</Project>

+ 0 - 9
love/src/jni/love/platform/msvc2010/love.vcxproj.filters

@@ -1,9 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <ItemGroup>
-    <ResourceCompile Include="love.rc" />
-  </ItemGroup>
-  <ItemGroup>
-    <ClCompile Include="..\..\src\love.cpp" />
-  </ItemGroup>
-</Project>

+ 22 - 20
love/src/jni/love/platform/unix/automagic

@@ -26,42 +26,44 @@ AUTOMAKE=${AUTOMAKE:-$(which automake)}
 [[ -x ${ACLOCAL} ]]    || die "Could not find aclocal. Install automake."
 [[ -x ${ACLOCAL} ]]    || die "Could not find aclocal. Install automake."
 [[ -x ${AUTOMAKE} ]]   || die "Could not find automake."
 [[ -x ${AUTOMAKE} ]]   || die "Could not find automake."
 
 
+print_errors() {
+	local output
+	output="$("$@" 2>&1)" && return 0
+	printf "%s\n" "$output"
+	return 1
+}
+
 automagic() {
 automagic() {
-	log "Copying files..." >&2
+	log "Copying files..."
 	cp platform/unix/configure.ac .
 	cp platform/unix/configure.ac .
 	cp platform/unix/Makefile.am .
 	cp platform/unix/Makefile.am .
 
 
-	log "Running genmodules..." >&2
-	if ! bash platform/unix/genmodules "$1"; then
+	log "Running genmodules..."
+	if ! print_errors bash platform/unix/genmodules "$1"; then
 		echo "You should be doing this from the root directory of the project."
 		echo "You should be doing this from the root directory of the project."
 		exit 1
 		exit 1
 	fi
 	fi
 
 
-	log "Running autoheader..." >&2
-	${AUTOHEADER} 2>&1 || return 1 # Gimmie config.h.in
+	log "Running autoheader..."
+	print_errors ${AUTOHEADER} || return 1 # Gimmie config.h.in
 
 
-	log "Running libtoolize..." >&2
-	${LIBTOOLIZE} --force 2>&1 || return 1
+	log "Running libtoolize..."
+	print_errors ${LIBTOOLIZE} --force || return 1
 
 
-	log "Running aclocal..." >&2
-	${ACLOCAL} 2>&1 || return 1
+	log "Running aclocal..."
+	print_errors ${ACLOCAL} || return 1
 
 
-	log "Running autoconf..." >&2
-	${AUTOCONF} 2>&1 || return 1
+	log "Running autoconf..."
+	print_errors ${AUTOCONF} || return 1
 
 
-	log "Running automake..." >&2
-	${AUTOMAKE} -a 2>&1 || return 1
+	log "Running automake..."
+	print_errors ${AUTOMAKE} -a || return 1
 }
 }
 
 
-if [[ $1 == "-d" ]]; then
-	shift 1
-	automagic "$@" 2>&1
-else
-	(automagic "$@" > /dev/null) 2>&1
-fi
+automagic "$@"
+
 if [[ $? -eq 1 ]]; then
 if [[ $? -eq 1 ]]; then
 	log "Failed, sadface."
 	log "Failed, sadface."
-	log "You can make this script more verbose running it in debug mode (-d)"
 	log "This is generally a configuration error (I'm looking at you aclocal)"
 	log "This is generally a configuration error (I'm looking at you aclocal)"
 	exit 1
 	exit 1
 else
 else

+ 56 - 59
love/src/jni/love/platform/unix/configure.ac

@@ -1,4 +1,4 @@
-AC_INIT([love], [HEAD])
+AC_INIT([love], [0.11.0])
 AC_CONFIG_HEADERS([config.h])
 AC_CONFIG_HEADERS([config.h])
 AC_CONFIG_AUX_DIR([platform/unix])
 AC_CONFIG_AUX_DIR([platform/unix])
 AC_CONFIG_MACRO_DIR([platform/unix/m4])
 AC_CONFIG_MACRO_DIR([platform/unix/m4])
@@ -19,6 +19,7 @@ AC_LANG([C++])
 
 
 dnl Workaround for old aclocal versions
 dnl Workaround for old aclocal versions
 m4_include([platform/unix/cpp11.m4])
 m4_include([platform/unix/cpp11.m4])
+m4_include([platform/unix/deps.m4])
 
 
 includes=
 includes=
 
 
@@ -44,70 +45,68 @@ AS_VAR_IF([enable_stbi_sse2_override], [no], [], #else
 
 
 # --with-lua and --with-luaversion
 # --with-lua and --with-luaversion
 AC_ARG_WITH([lua], [AS_HELP_STRING([--with-lua], [Select the lua implementation])],
 AC_ARG_WITH([lua], [AS_HELP_STRING([--with-lua], [Select the lua implementation])],
-			[], [with_lua=luajit])
+	[], [with_lua=luajit])
 AC_ARG_WITH([luaversion], [AS_HELP_STRING([--with-luaversion], [Select the lua version])],
 AC_ARG_WITH([luaversion], [AS_HELP_STRING([--with-luaversion], [Select the lua version])],
-			[], [with_luaversion=5.1])
+	[], [with_luaversion=5.1])
 
 
-# pkg-config libraries
-AM_PATH_SDL2([], [], [LOVE_MSG_ERROR([SDL 2])])
 with_clean_luaversion=`printf ${with_luaversion} | sed 's/\.//g'`
 with_clean_luaversion=`printf ${with_luaversion} | sed 's/\.//g'`
-PKG_CHECK_MODULES([lua], [${with_lua}${with_luaversion}], [lua_found=yes],
-	[PKG_CHECK_MODULES([lua], [${with_lua}${with_clean_luaversion}], [lua_found=yes],
-	[PKG_CHECK_MODULES([lua], [${with_lua}], [lua_found=yes], [lua_found=no])])])
-PKG_CHECK_MODULES([freetype2], [freetype2], [], [LOVE_MSG_ERROR([FreeType2])])
-PKG_CHECK_MODULES([openal], [openal], [], [LOVE_MSG_ERROR([OpenAL])])
-PKG_CHECK_MODULES([libmodplug], [libmodplug], [], [LOVE_MSG_ERROR([libmodplug])])
-PKG_CHECK_MODULES([vorbisfile], [vorbisfile], [], [LOVE_MSG_ERROR([libvorbis and libvorbisfile])])
-PKG_CHECK_MODULES([zlib], [zlib], [], [LOVE_MSG_ERROR([zlib])])
-PKG_CHECK_MODULES([theora], [theoradec], [], [LOVE_MSG_ERROR([libtheora])])
-
-# Other libraries
-AC_SEARCH_LIBS([sqrt], [m], [], [LOVE_MSG_ERROR([the C math library])])
-AC_SEARCH_LIBS([PHYSFS_init], [physfs], [], [LOVE_MSG_ERROR([PhysicsFS])])
-
-# Lua, treated seperately because of --with-lua
-AS_VAR_IF([lua_found], [yes],
-		  #if
-		  [
-		   luaheaders_found=yes
-		   AC_MSG_CHECKING([for library containing lua_call])
-		   AC_MSG_RESULT([${lua_LIBS}])],
-		  #else
-		  [
-		   AC_MSG_WARN([Could not find pkg-config definition for ${with_lua}${with_luaversion} or ${with_lua}${with_clean_luaversion}${with_lua}, falling back to manual detection])
-		   AC_SEARCH_LIBS([lua_call], ["${with_lua}${with_luaversion}" "${with_lua}"], [],
-						  [LOVE_MSG_ERROR([$with_lua])])
-		   luaheaders_found=no
-		   AC_CHECK_HEADER(["${with_lua}${with_luaversion}/lua.h"], [luaheaders_found=yes includes="$includes -I/usr/include/${with_lua}${with_luaversion}"], [])
-		   AC_CHECK_HEADER(["${with_lua}/lua.h"], [luaheaders_found=yes includes="$includes -I/usr/include/${with_lua}"], [])])
-AS_VAR_IF([luaheaders_found], [yes], [], #else
-		  [
-		   AC_MSG_WARN([Could not locate lua headers for ${with_lua}${with_luaversion} or ${with_lua}, you probably need to specify them with CPPFLAGS])])
-
-# mpg123, treated seperately because it can be disabled (default on)
-# also not pkg-config because of the FILE_OFFSET_BITS.. bit
+
+# Generated sources for enabling/disabling modules
+m4_include([configure-modules-pre.ac])
+
+# Other features that can be enabled/disabled
 AC_ARG_ENABLE([mpg123], AC_HELP_STRING([--disable-mpg123], [Disable mp3 support, for patent-free builds]), [], [enable_mpg123=yes])
 AC_ARG_ENABLE([mpg123], AC_HELP_STRING([--disable-mpg123], [Disable mp3 support, for patent-free builds]), [], [enable_mpg123=yes])
+AC_ARG_ENABLE([gme], AC_HELP_STRING([--enable-gme], [Enable GME support, for more chiptuney goodness]), [], [enable_gme=no])
+
+# Dependencies we always use
+ACLOVE_DEP_LUA
+ACLOVE_DEP_SDL2
+ACLOVE_DEP_LIBM
+ACLOVE_DEP_ZLIB
+
+# Conditional dependencies
+AS_VAR_IF([enable_module_audio], [yes], [ACLOVE_DEP_OPENAL], [])
+AS_VAR_IF([enable_module_font], [yes], [ACLOVE_DEP_FREETYPE2], [])
+AS_VAR_IF([enable_module_sound], [yes], [
+	ACLOVE_DEP_LIBMODPLUG
+	ACLOVE_DEP_VORBISFILE
+], [enable_mpg123=no])
+AS_VAR_IF([enable_module_video], [yes], [ACLOVE_DEP_THEORA], [])
+AS_VAR_IF([enable_gme], [yes], [ACLOVE_DEP_GME], [])
 AS_VAR_IF([enable_mpg123], [no],
 AS_VAR_IF([enable_mpg123], [no],
 	  AC_DEFINE([LOVE_NOMPG123], [], [Build without mpg123]),
 	  AC_DEFINE([LOVE_NOMPG123], [], [Build without mpg123]),
-	  # else
-	  AC_SEARCH_LIBS([mpg123_open_feed], [mpg123], [],
-					 [LOVE_MSG_ERROR([libmpg123])])
-	  AC_SEARCH_LIBS([mpg123_seek_64], [mpg123],
-					 AC_SUBST([FILE_OFFSET],[-D_FILE_OFFSET_BITS=64]),
-					 AC_SUBST([FILE_OFFSET],[])))
-
-# GME, treated seperately because it can be enabled (default off)
-AC_ARG_ENABLE([gme], AC_HELP_STRING([--enable-gme], [Enable GME support, for more chiptuney goodness]), [], [enable_gme=no])
-AS_VAR_IF([enable_gme], [yes],
-	  AC_SEARCH_LIBS([gme_open_data], [gme], [], [LOVE_MSG_ERROR([gme])])
-	  AC_DEFINE([LOVE_SUPPORT_GME], [], [Enable gme])
-	  AC_CHECK_HEADER([gme/gme.h], [includes="$includes -I/usr/include/gme"], []))
+	  [ACLOVE_DEP_MPG123])
+
+# Add flags for optional libraries
+AC_ARG_ENABLE([library-enet], [  --disable-library-enet    Turn off library enet], [], [enable_library_enet=yes])
+AC_ARG_ENABLE([library-luasocket], [  --disable-library-luasocket    Turn off library luasocket], [], [enable_library_luasocket=yes])
+AC_ARG_ENABLE([library-lua53], [  --disable-library-lua53    Turn off library lua53 (lua 5.3 backports, required by love.data)], [], [enable_library_lua53=yes])
+
+# Select the libraries we need to build, based on the selected modules
+AS_VAR_IF([enable_module_filesystem], [yes], [enable_library_physfs=yes], [enable_library_physfs=no])
+AS_VAR_IF([enable_module_physics], [yes], [enable_library_Box2D=yes], [enable_library_Box2D=no])
+AS_VAR_IF([enable_module_image], [yes], [enable_library_ddsparse=yes], [enable_library_ddsparse=no])
+AS_VAR_IF([enable_module_graphics], [yes], [enable_library_glad=yes], [enable_library_glad=no])
+AS_VAR_IF([enable_module_graphics], [yes], [enable_library_glslang=yes], [enable_library_glslang=no])
+AS_VAR_IF([enable_module_image], [yes], [enable_library_lodepng=yes], [enable_library_lodepng=no])
+AS_VAR_IF([enable_module_data], [yes], [enable_library_lua53=yes], [])
+AS_VAR_IF([enable_module_math], [yes], [enable_library_lz4=yes], [enable_library_lz4=no])
+AS_VAR_IF([enable_module_math], [yes], [enable_library_noise1234=yes], [enable_library_noise1234=no])
+AS_VAR_IF([enable_module_image], [yes], [enable_library_stb=yes], [enable_library_stb=no])
+AS_VAR_IF([enable_module_image], [yes], [enable_library_tinyexr=yes], [enable_library_tinyexr=no])
+AS_VAR_IF([enable_module_sound], [yes], [enable_library_Wuff=yes], [enable_library_Wuff=no])
+AS_VAR_IF([enable_module_graphics], [yes], [enable_library_xxHash=yes], [enable_library_xxHash=no])
+
+# Utf8 is required by both graphics and font, so enable if either is enabled
+enable_library_utf8=no
+AS_VAR_IF([enable_module_graphics], [yes], [enable_library_utf8=yes], [])
+AS_VAR_IF([enable_module_font], [yes], [enable_library_utf8=yes], [])
 
 
 # libenet check for socklen_t
 # libenet check for socklen_t
-AC_CHECK_TYPE([socklen_t], [AC_DEFINE([HAS_SOCKLEN_T], [1], [Define if socklen_t exists.] )], , 
-              #include <sys/types.h>
-              #include <sys/socket.h>
-)
+ACLOVE_SOCKLEN_T
+
+# Generated sources for enabling/disabling modules
+m4_include([configure-modules-post.ac])
 
 
 # Optionally build the executable (default on)
 # Optionally build the executable (default on)
 AC_ARG_ENABLE([exe],
 AC_ARG_ENABLE([exe],
@@ -128,8 +127,6 @@ AS_VAR_IF([LUA_EXECUTABLE], [:],
 # Set our includes as automake variable
 # Set our includes as automake variable
 AC_SUBST([LOVE_INCLUDES], ["$includes"])
 AC_SUBST([LOVE_INCLUDES], ["$includes"])
 
 
-m4_include([configure-modules.ac])
-
 AC_CONFIG_FILES([
 AC_CONFIG_FILES([
 	Makefile
 	Makefile
 	src/Makefile
 	src/Makefile

+ 0 - 5
love/src/jni/love/platform/unix/debian/changelog

@@ -1,5 +0,0 @@
-love (0.9.0~ppatest5) precise; urgency=medium
-
-  * Upstream testing release
-
- -- Bart van Strien <[email protected]>  Sat, 2 Nov 2013 16:23:40 +0100

+ 0 - 58
love/src/jni/love/platform/unix/debian/control

@@ -1,58 +0,0 @@
-Source: love
-Section: games
-Priority: extra
-Maintainer: Bart van Strien <[email protected]>
-Build-Depends: debhelper (>= 9),
-               autotools-dev,
-               libdevil-dev,
-               libfreetype6-dev,
-               libluajit-5.1-dev,
-               libphysfs-dev,
-               libsdl2-dev (>= 2.0.1),
-               libopenal-dev,
-               libogg-dev,
-               libvorbis-dev,
-               libflac-dev,
-               libflac++-dev,
-               libmodplug-dev,
-               libmpg123-dev,
-               libmng-dev
-Standards-Version: 3.9.3
-Homepage: http://love2d.org
-
-Package: liblove
-Architecture: any
-Multi-Arch: same
-Pre-Depends: ${misc:Pre-Depends}
-Depends: ${misc:Depends},
-         ${shlibs:Depends},
-         libdevil1c2,
-         libmng1,
-         libfreetype6,
-         libgl1-mesa-glx,
-         libluajit-5.1-2,
-         libphysfs-1.0-0,
-         libsdl2 (>= 2.0.1),
-         libopenal1,
-         libogg0,
-         libvorbis0a,
-         libvorbisfile3,
-         libmodplug1,
-         libmpg123-0
-Description: LOVE is a free 2D game engine which enables easy game creation in Lua.
-
-Package: love
-Architecture: any
-Multi-Arch: same
-Depends: ${misc:Depends},
-         liblove (= ${binary:Version})
-Description: LOVE is a free 2D game engine which enables easy game creation in Lua.
-
-Package: love-dbg
-Priority: extra
-Section: debug
-Architecture: any
-Multi-Arch: same
-Depends: ${misc:Depends},
-         love (= ${binary:Version}),
-Description: LOVE is a free 2D game engine which enables easy game creation in Lua.

+ 1 - 1
love/src/jni/love/platform/unix/debian/copyright

@@ -4,7 +4,7 @@ Upstream-Contact: Bart van Strien <[email protected]>
 Source: http://www.love2d.org/
 Source: http://www.love2d.org/
 
 
 Files: *
 Files: *
-Copyright: 2006-2015 LOVE Development Team
+Copyright: 2006-2018 LOVE Development Team
 License: zlib
 License: zlib
  This software is provided 'as-is', without any express or implied
  This software is provided 'as-is', without any express or implied
  warranty. In no event will the authors be held liable for any damages
  warranty. In no event will the authors be held liable for any damages

+ 0 - 16
love/src/jni/love/platform/unix/debian/rules

@@ -1,16 +0,0 @@
-#!/usr/bin/make -f
-
-DEB_HOST_ARCH_CPU ?= $(shell dpkg-architecture -qDEB_HOST_ARCH_CPU)
-DEB_HOST_MULTIARCH ?= $(shell dpkg-architecture -qDEB_HOST_MULTIARCH)
-
-override_dh_auto_configure:
-	dh_auto_configure -- CPPFLAGS=-I/usr/include/luajit-2.0 --with-lua=luajit-5.1
-
-override_dh_link:
-	dh_link -plove-dev usr/lib/$(DEB_HOST_MULTIARCH)/liblove.so.0.0.0 usr/lib/$(DEB_HOST_MULTIARCH)/liblove.so
-
-override_dh_strip:
-	dh_strip --dbg-package=love-dbg
-
-%:
-	dh  $@ --parallel

+ 74 - 0
love/src/jni/love/platform/unix/deps.m4

@@ -0,0 +1,74 @@
+AC_DEFUN([ACLOVE_DEP_FREETYPE2], [
+	PKG_CHECK_MODULES([freetype2], [freetype2], [], [LOVE_MSG_ERROR([FreeType2])])])
+
+AC_DEFUN([ACLOVE_DEP_OPENAL], [
+	PKG_CHECK_MODULES([openal], [openal], [], [LOVE_MSG_ERROR([OpenAL])])])
+
+AC_DEFUN([ACLOVE_DEP_LIBMODPLUG], [
+	PKG_CHECK_MODULES([libmodplug], [libmodplug], [], [LOVE_MSG_ERROR([libmodplug])])])
+
+AC_DEFUN([ACLOVE_DEP_VORBISFILE], [
+	PKG_CHECK_MODULES([vorbisfile], [vorbisfile], [], [LOVE_MSG_ERROR([libvorbis and libvorbisfile])])])
+
+AC_DEFUN([ACLOVE_DEP_ZLIB], [
+	PKG_CHECK_MODULES([zlib], [zlib], [], [LOVE_MSG_ERROR([zlib])])])
+
+AC_DEFUN([ACLOVE_DEP_THEORA], [
+	PKG_CHECK_MODULES([theora], [theoradec], [], [LOVE_MSG_ERROR([libtheora])])])
+
+AC_DEFUN([ACLOVE_DEP_LIBM], [
+	AC_SEARCH_LIBS([sqrt], [m], [], [LOVE_MSG_ERROR([the C math library])])])
+
+AC_DEFUN([ACLOVE_DEP_SDL2], [
+	AM_PATH_SDL2([], [], [LOVE_MSG_ERROR([SDL 2])])])
+
+# does not use pkg-config because of the FILE_OFFSET_BITS.. bit
+AC_DEFUN([ACLOVE_DEP_MPG123], [
+	AC_SEARCH_LIBS([mpg123_open_feed], [mpg123], [],
+		[LOVE_MSG_ERROR([libmpg123])])
+	AC_SEARCH_LIBS([mpg123_seek_64], [mpg123],
+		AC_SUBST([FILE_OFFSET],[-D_FILE_OFFSET_BITS=64]),
+		AC_SUBST([FILE_OFFSET],[]))])
+
+AC_DEFUN([ACLOVE_DEP_GME], [
+	AC_SEARCH_LIBS([gme_open_data], [gme], [], [LOVE_MSG_ERROR([gme])])
+	AC_DEFINE([LOVE_SUPPORT_GME], [], [Enable gme])
+	AC_CHECK_HEADER([gme/gme.h], [includes="$includes -I/usr/include/gme"], [])])
+
+# For enet
+AC_DEFUN([ACLOVE_SOCKLEN_T], [
+	AC_CHECK_TYPE([socklen_t], [AC_DEFINE([HAS_SOCKLEN_T], [1], [Define if socklen_t exists.] )], ,
+		#include <sys/types.h>
+		#include <sys/socket.h>
+	)])
+
+# The lua detection is quite annoying because of distro differences and our version selection code
+AC_DEFUN([ACLOVE_DEP_LUA_PKGCONFIG], [
+	PKG_CHECK_MODULES([lua], [${with_lua}${with_luaversion}], [aclove_lua_found=yes],
+		[PKG_CHECK_MODULES([lua], [${with_lua}${with_clean_luaversion}], [aclove_lua_found=yes],
+			[PKG_CHECK_MODULES([lua], [${with_lua}], [aclove_lua_found=yes], [])])])
+
+	AS_VAR_IF([aclove_lua_found], [yes],
+		[
+			aclove_luaheaders_found=yes
+			AC_MSG_CHECKING([for library containing lua_call])
+			AC_MSG_RESULT([${lua_LIBS}])
+		], [])])
+
+AC_DEFUN([ACLOVE_DEP_LUA_FALLBACK], [
+	AC_MSG_WARN([Could not find pkg-config definition for ${with_lua}${with_luaversion} or ${with_lua}${with_clean_luaversion}${with_lua}, falling back to manual detection])
+	AC_SEARCH_LIBS([lua_call], ["${with_lua}${with_luaversion}" "${with_lua}"], [aclove_lua_found=yes],
+		[LOVE_MSG_ERROR([$with_lua])])
+
+	AC_CHECK_HEADER(["${with_lua}${with_luaversion}/lua.h"], [aclove_luaheaders_found=yes includes="$includes -I/usr/include/${with_lua}${with_luaversion}"], [])
+	AC_CHECK_HEADER(["${with_lua}/lua.h"], [aclove_luaheaders_found=yes includes="$includes -I/usr/include/${with_lua}"], [])])
+
+# First, try pkg-config, then fall back to manual detection if not available.
+AC_DEFUN([ACLOVE_DEP_LUA], [ dnl Requires with-lua and with-luaversion
+	aclove_lua_found=no
+	aclove_luaheaders_found=no
+
+	ACLOVE_DEP_LUA_PKGCONFIG
+	AS_VAR_IF([aclove_lua_found], [no], [ACLOVE_DEP_LUA_FALLBACK], [])
+	AS_VAR_IF([aclove_luaheaders_found], [no],
+		[AC_MSG_WARN([Could not locate lua headers for ${with_lua}${with_luaversion} or ${with_lua}, you probably need to specify them with CPPFLAGS])], [])])

+ 3 - 2
love/src/jni/love/platform/unix/exclude

@@ -1,5 +1,6 @@
-\./libraries/luasocket/libluasocket/wsocket\.*
-\./modules/sound/lullaby/FLACDecoder\.*
+\./libraries/luasocket/libluasocket/wsocket.*
+\./modules/sound/lullaby/FLACDecoder\..*
 \./love\.cpp
 \./love\.cpp
 \./modules/sound/lullaby/Mpg123Decoder\.cpp
 \./modules/sound/lullaby/Mpg123Decoder\.cpp
 \./modules/sound/lullaby/Mpg123Decoder\.h
 \./modules/sound/lullaby/Mpg123Decoder\.h
+\./libraries/glslang/glslang/OSDependent/Windows

+ 0 - 38
love/src/jni/love/platform/unix/gen-makefile

@@ -1,38 +0,0 @@
-#!/bin/bash
-echo Generating src/Makefile.am ...
-inc_current='$(srcdir)'
-inc_modules="$inc_current/modules"
-inc_libraries="$inc_current/libraries"
-
-cat > src/Makefile.am << EOF
-AM_CPPFLAGS = -I$inc_current -I$inc_modules -I$inc_libraries -I$inc_libraries/enet/libenet/include \$(LOVE_INCLUDES) \$(FILE_OFFSET)
-AM_CXXFLAGS = \$(SDL_CFLAGS)
-AUTOMAKE_OPTIONS = subdir-objects
-SUBDIRS =
-
-if LOVE_BUILD_EXE
-# LÖVE executable
-bin_PROGRAMS = love
-#love_LDFLAGS =
-love_LDADD = liblove.la
-love_SOURCES = love.cpp
-endif
-
-# Compile scripts
-#scripts/%.lua.h: scripts/%.lua
-#	cd scripts; \
-#	lua auto.lua \$*
-#TODO: Figure out how to only do this on gnu make, and detect which lua
-#      executable to run
-
-# libLÖVE
-lib_LTLIBRARIES = liblove.la
-liblove_la_LDFLAGS = -module -export-dynamic \$(LDFLAGS) \$(SDL_LIBS)
-EOF
-
-platform/unix/genmodules >> src/Makefile.am
-
-printf "\n" >> src/Makefile.am
-
-cd ..
-echo "src/Makefile.am is updated! ^.^"

+ 60 - 64
love/src/jni/love/platform/unix/genmodules

@@ -3,20 +3,15 @@
 love_suffix="$1"
 love_suffix="$1"
 love_amsuffix="$(echo "$love_suffix" | sed 's/\-/_/g' | sed 's/\./_/g')"
 love_amsuffix="$(echo "$love_suffix" | sed 's/\-/_/g' | sed 's/\./_/g')"
 
 
-flags=""
+flags=()
 upper()
 upper()
 {
 {
 	echo "$@" | tr '[:lower:]' '[:upper:]'
 	echo "$@" | tr '[:lower:]' '[:upper:]'
 }
 }
 
 
-implfind()
-{
-	find "$1" -maxdepth 1 -type d -exec basename '{}' \; | grep -v "^\." | tail -n +2
-}
-
 sourcefind()
 sourcefind()
 {
 {
-	find "$1" $2 -type f \( -iname "*.c" -o -iname "*.cpp" -o -iname "*.h" -o -iname "*.hpp" -o -iname "*.lch" \) | awk "{print \"./$prefix\"\$0\" \\\\\"}" | grep -v -f"$LOVEROOT/platform/unix/exclude"
+	find "$1" $2 -type f \( -iname "*.c" -o -iname "*.cpp" -o -iname "*.h" -o -iname "*.hpp" -o -iname "*.lch" -o -iname "*.lua" \) | awk "{print \"./$prefix\"\$0\" \\\\\"}" | grep -v -f"$LOVEROOT/platform/unix/exclude" | sort
 }
 }
 
 
 handlemodule()
 handlemodule()
@@ -26,82 +21,90 @@ handlemodule()
 	printf "$DEFINENAME"
 	printf "$DEFINENAME"
 }
 }
 
 
-handleimpl()
-{
-	module="$1"
-	implementation="$2"
-	name="$3"
-
-	printf "if $name\n"
-	FILES="$(sourcefind "$module/$implementation" | sed "s/^/    /")"
-	if [[ "x$FILES" != "x" ]]; then
-		printf "liblove${love_amsuffix}_la_SOURCES += \\\\\n"
-		printf "${FILES:0:${#FILES}-2}\n"
-	fi
-	printf "endif\n\n"
-}
-
 genmodules()
 genmodules()
 {
 {
 	LOVEROOT="$(pwd)"
 	LOVEROOT="$(pwd)"
-	cd src
+	cd ./src
 
 
 	printf "liblove${love_amsuffix}_la_SOURCES = \\\\\n"
 	printf "liblove${love_amsuffix}_la_SOURCES = \\\\\n"
 	sourcefind "common" | sed "s/^/    /"
 	sourcefind "common" | sed "s/^/    /"
 	FILES="$(sourcefind "scripts" | sed "s/^/    /")"
 	FILES="$(sourcefind "scripts" | sed "s/^/    /")"
 	printf "${FILES:0:${#FILES}-2}\n\n"
 	printf "${FILES:0:${#FILES}-2}\n\n"
 
 
-	cd modules
+	local -a modulelist=()
+	local -a liblist=()
+
+	cd ./modules
 	prefix="modules/"
 	prefix="modules/"
 	for module in *; do
 	for module in *; do
-		NAME=$(handlemodule "$module")
-		flags="$flags module-$module"
+		flags+=("module-$module")
 
 
-		printf "if $NAME\n"
-
-		for implementation in $(implfind "$module"); do
-			flags="$flags implementation-$module-$implementation"
-			handleimpl "$module" "$implementation" "LOVE_IMPLEMENTATION_$(upper "$module")_$(upper "$implementation")"
-		done
-
-		FILES="$(sourcefind "$module" "-maxdepth 1" | sed "s/^/    /")"
+		FILES="$(sourcefind "$module" | sed "s/^/    /")"
 		if [[ "x$FILES" != "x" ]]; then
 		if [[ "x$FILES" != "x" ]]; then
-			printf "liblove${love_amsuffix}_la_SOURCES += \\\\\n"
-			printf "${FILES:0:${#FILES}-2}\n"
+			printf "liblove_module_$module = \\\\\n"
+			printf "${FILES:0:${#FILES}-2}\n\n"
+			modulelist+=("$module")
 		fi
 		fi
 
 
-		printf "endif\n\n"
+		if [[ "$module" = "sound" ]]; then
+			printf "if !LOVE_NOMPG123\n"
+			printf "liblove_module_$module += \\\\\n"
+			printf "\t./modules/sound/lullaby/Mpg123Decoder.cpp \\\\\n"
+			printf "\t./modules/sound/lullaby/Mpg123Decoder.h\n"
+			printf "endif\n\n"
+		fi
 	done
 	done
 
 
 	cd ../libraries
 	cd ../libraries
 	prefix="libraries/"
 	prefix="libraries/"
 	for library in *; do
 	for library in *; do
-		NAME="LOVE_LIBRARY_$(upper "$library")"
-		flags="$flags library-$library"
+		flags+=("library-$library")
 		FILES="$(sourcefind "$library" | sed "s/^/    /")"
 		FILES="$(sourcefind "$library" | sed "s/^/    /")"
 
 
 		if [[ ${#FILES} -gt 2 ]]; then
 		if [[ ${#FILES} -gt 2 ]]; then
-			printf "if $NAME\n"
-			printf "liblove${love_amsuffix}_la_SOURCES += \\\\\n"
-			printf "${FILES:0:${#FILES}-2}\nendif\n\n"
+			printf "liblove_library_$library = \\\\\n"
+			printf "${FILES:0:${#FILES}-2}\n\n"
+			liblist+=("$library")
 		fi
 		fi
 	done
 	done
+
+	for module in "${modulelist[@]}"; do
+		NAME=$(handlemodule "$module")
+		printf "if $NAME\n"
+		printf "liblove${love_amsuffix}_la_SOURCES += \$(liblove_module_$module)\n"
+		printf "endif\n\n"
+	done
+
+	for library in "${liblist[@]}"; do
+		NAME="LOVE_LIBRARY_$(upper "$library")"
+		printf "if $NAME\n"
+		printf "liblove${love_amsuffix}_la_SOURCES += \$(liblove_library_$library)\n"
+		printf "endif\n\n"
+	done
+
 	cd ../..
 	cd ../..
 }
 }
 
 
 genflags()
 genflags()
 {
 {
-	for flag in $flags; do
-		prettyflag="$(echo "$flag" | sed 's/-/ love./' | sed 's/-/./g')"
-		varflag="enable_$(echo "$flag" | sed 's/^[^-]*-//' | sed 's/[^a-zA-Z0-9]/_/')"
-		defineflag="LOVE_ENABLE_$(upper $(echo $flag | sed 's/^[^-]*-//' | sed 's/-/_/g'))"
+	printf > configure-modules-pre.ac
+	printf > configure-modules-post.ac
+	for flag in "${flags[@]}"; do
+		prettyflag="$(echo "$flag" | sed -e 's/-/ love./' -e 's/-/./g')"
+		varflag="enable_$(echo "$flag" | sed -e 's/[^a-zA-Z0-9]/_/')"
+		defineflag="LOVE_ENABLE_$(upper $(echo $flag | sed -e 's/^[^-]*-//' -e 's/-/_/g'))"
 		amflag="$(upper $(echo love-$flag | sed 's/-/_/g'))"
 		amflag="$(upper $(echo love-$flag | sed 's/-/_/g'))"
-		printf "AC_ARG_ENABLE([$flag], [  --disable-$flag    Turn off $prettyflag], [], [$varflag=true])\n"
-		printf "AH_TEMPLATE([$defineflag], [])\n"
-		printf "if test x\"\$$varflag\" = xtrue; then\n"
-		printf "    AC_DEFINE([$defineflag], [])\n"
-		printf "fi\n"
-		printf "AM_CONDITIONAL([$amflag], [test x\$$varflag = xtrue])\n\n"
+
+		# Don't generate an --enable rule for libraries
+		if [[ "$(echo $flag | sed -e '/^library-/d')" != "" ]]; then
+			printf "AC_ARG_ENABLE([$flag], [  --disable-$flag    Turn off $prettyflag], [], [$varflag=yes])\n" >> configure-modules-pre.ac
+		fi
+
+		printf "AH_TEMPLATE([$defineflag], [])\n" >> configure-modules-post.ac
+		printf "if test x\"\$$varflag\" = xyes; then\n" >> configure-modules-post.ac
+		printf "    AC_DEFINE([$defineflag], [])\n" >> configure-modules-post.ac
+		printf "fi\n" >> configure-modules-post.ac
+		printf "AM_CONDITIONAL([$amflag], [test x\$$varflag = xyes])\n\n" >> configure-modules-post.ac
 	done
 	done
 }
 }
 
 
@@ -137,33 +140,26 @@ endif
 
 
 # Compile scripts
 # Compile scripts
 .lua.lua.h:
 .lua.lua.h:
-	cd scripts; \
+	cd ./scripts; \
 	\$(LUA_EXECUTABLE) auto.lua \$<
 	\$(LUA_EXECUTABLE) auto.lua \$<
 
 
 # libLÖVE
 # libLÖVE
 lib_LTLIBRARIES = liblove${love_suffix}.la
 lib_LTLIBRARIES = liblove${love_suffix}.la
-liblove${love_amsuffix}_la_LDFLAGS = -module -export-dynamic \$(LDFLAGS)
+liblove${love_amsuffix}_la_LDFLAGS = -module -export-dynamic \$(LDFLAGS) -release \$(PACKAGE_VERSION)
 liblove${love_amsuffix}_la_LIBADD = \
 liblove${love_amsuffix}_la_LIBADD = \
 	\$(SDL_LIBS) \$(freetype2_LIBS) \$(lua_LIBS)\
 	\$(SDL_LIBS) \$(freetype2_LIBS) \$(lua_LIBS)\
 	\$(openal_LIBS) \$(zlib_LIBS) \$(libmodplug_LIBS)\
 	\$(openal_LIBS) \$(zlib_LIBS) \$(libmodplug_LIBS)\
 	\$(vorbisfile_LIBS) \$(theora_LIBS)
 	\$(vorbisfile_LIBS) \$(theora_LIBS)
+
 EOF
 EOF
 
 
 genmodules >> src/Makefile.am
 genmodules >> src/Makefile.am
 
 
-cat >> src/Makefile.am << EOF
-if !LOVE_NOMPG123
-liblove${love_amsuffix}_la_SOURCES += \\
-    ./modules/sound/lullaby/Mpg123Decoder.cpp \\
-    ./modules/sound/lullaby/Mpg123Decoder.h
-endif
-EOF
-
 echo "src/Makefile.am is updated! ^.^"
 echo "src/Makefile.am is updated! ^.^"
 
 
 echo "Generating configure-modules.ac"
 echo "Generating configure-modules.ac"
-genflags > configure-modules.ac
-cat >> configure-modules.ac << EOF
+genflags
+cat >> configure-modules-post.ac << EOF
 AC_SUBST([LOVE_SUFFIX], [${love_suffix}])
 AC_SUBST([LOVE_SUFFIX], [${love_suffix}])
 EOF
 EOF
 echo "configure-modules.ac is updated! ^.^"
 echo "configure-modules.ac is updated! ^.^"

+ 0 - 36
love/src/jni/love/platform/unix/love.1

@@ -1,36 +0,0 @@
-.\" (c) 2008-2011 Miriam Ruiz <[email protected]>
-.\" (c) 2013 Bart van Strien <[email protected]>
-.\"
-.\" This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damagesarising from the use of this software.
-.\"
-.\" Permission is granted to anyone to use this software for any purpose, including commercial applications, and to alter it and redistribute it freely, subject to the following restrictions:
-.\"
-.\" 1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.
-.\"
-.\" 2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.
-.\"
-.\" 3. This notice may not be removed or altered from any source distribution.
-.\"
-.\" Modifications:
-.\" - Update version to 0.9 and remove reference to doc dir
-.\" - Add fused and version flags
-
-.TH "LÖVE" "1" "0.9" "" ""
-.SH "NAME"
-love \- 2D game development framework
-
-.SH "SYNOPSIS"
-.B love
-[--fused] <\fIgame.love\fR>
-.PP
-.B love
---version
-.PP
-
-.SH "DESCRIPTION"
-LÖVE was created to be a user\-friendly engine in which simple (or complicated) games could be made without having extensive knowledge of system or graphics functions and without having to dedicate time towards developing the same engine features time and time again.
-.P
-Developed with cross\-platform implementation in mind, it utilizes the latest open source libraries to deliver a similar game experience, independent of operating system. By relying on the Lua scripting language for game\-specific programming, it allows even the novice game creator to quickly and efficiently develop an idea into a fully working game.
-
-.SH "SEE ALSO"
-You can find more information at \fIhttp://love2d.org/\fR

+ 0 - 5
love/src/jni/love/platform/unix/postinst

@@ -1,5 +0,0 @@
-#!/bin/sh
-
-update-mime-database /usr/share/mime
-gtk-update-icon-cache --force /usr/share/icons/gnome
-xdg-mime default love.desktop application/x-love-game

+ 0 - 4
love/src/jni/love/platform/unix/postrm

@@ -1,4 +0,0 @@
-#!/bin/sh
-
-update-mime-database /usr/share/mime
-gtk-update-icon-cache --force /usr/share/icons/gnome

+ 26 - 1
love/src/jni/love/platform/xcode/Images.xcassets/iOS AppIcon.appiconset/Contents.json

@@ -1,5 +1,15 @@
 {
 {
   "images" : [
   "images" : [
+    {
+      "idiom" : "iphone",
+      "size" : "20x20",
+      "scale" : "2x"
+    },
+    {
+      "idiom" : "iphone",
+      "size" : "20x20",
+      "scale" : "3x"
+    },
     {
     {
       "size" : "29x29",
       "size" : "29x29",
       "idiom" : "iphone",
       "idiom" : "iphone",
@@ -54,6 +64,16 @@
       "filename" : "[email protected]",
       "filename" : "[email protected]",
       "scale" : "3x"
       "scale" : "3x"
     },
     },
+    {
+      "idiom" : "ipad",
+      "size" : "20x20",
+      "scale" : "1x"
+    },
+    {
+      "idiom" : "ipad",
+      "size" : "20x20",
+      "scale" : "2x"
+    },
     {
     {
       "size" : "29x29",
       "size" : "29x29",
       "idiom" : "ipad",
       "idiom" : "ipad",
@@ -119,10 +139,15 @@
       "idiom" : "ipad",
       "idiom" : "ipad",
       "filename" : "[email protected]",
       "filename" : "[email protected]",
       "scale" : "2x"
       "scale" : "2x"
+    },
+    {
+      "idiom" : "ios-marketing",
+      "size" : "1024x1024",
+      "scale" : "1x"
     }
     }
   ],
   ],
   "info" : {
   "info" : {
     "version" : 1,
     "version" : 1,
     "author" : "xcode"
     "author" : "xcode"
   }
   }
-}
+}

+ 1 - 1
love/src/jni/love/platform/xcode/ios/love-ios.plist

@@ -40,7 +40,7 @@
 	<key>CFBundlePackageType</key>
 	<key>CFBundlePackageType</key>
 	<string>APPL</string>
 	<string>APPL</string>
 	<key>CFBundleShortVersionString</key>
 	<key>CFBundleShortVersionString</key>
-	<string>0.10.2</string>
+	<string>0.11.0</string>
 	<key>CFBundleSignature</key>
 	<key>CFBundleSignature</key>
 	<string>????</string>
 	<string>????</string>
 	<key>CFBundleVersion</key>
 	<key>CFBundleVersion</key>

File diff suppressed because it is too large
+ 527 - 247
love/src/jni/love/platform/xcode/liblove.xcodeproj/project.pbxproj


+ 102 - 19
love/src/jni/love/platform/xcode/love.xcodeproj/project.pbxproj

@@ -8,20 +8,21 @@
 
 
 /* Begin PBXBuildFile section */
 /* Begin PBXBuildFile section */
 		8D11072F0486CEB800E47090 /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1058C7A1FEA54F0111CA2CBB /* Cocoa.framework */; };
 		8D11072F0486CEB800E47090 /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1058C7A1FEA54F0111CA2CBB /* Cocoa.framework */; };
-		A9255DD11043183600BA1496 /* FreeType.framework in Copy Frameworks */ = {isa = PBXBuildFile; fileRef = A93E6E4810420B4A007D418B /* FreeType.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, ); }; };
 		A9255DD31043183600BA1496 /* Lua.framework in Copy Frameworks */ = {isa = PBXBuildFile; fileRef = A93E6E5310420B57007D418B /* Lua.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, ); }; };
 		A9255DD31043183600BA1496 /* Lua.framework in Copy Frameworks */ = {isa = PBXBuildFile; fileRef = A93E6E5310420B57007D418B /* Lua.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, ); }; };
-		A9255E031043195A00BA1496 /* Vorbis.framework in Copy Frameworks */ = {isa = PBXBuildFile; fileRef = A9255E021043195A00BA1496 /* Vorbis.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, ); }; };
-		A9255F58104324E100BA1496 /* Ogg.framework in Copy Frameworks */ = {isa = PBXBuildFile; fileRef = A9255F51104324D700BA1496 /* Ogg.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, ); }; };
+		A9255E031043195A00BA1496 /* vorbis.framework in Copy Frameworks */ = {isa = PBXBuildFile; fileRef = A9255E021043195A00BA1496 /* vorbis.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, ); }; };
+		A9255F58104324E100BA1496 /* ogg.framework in Copy Frameworks */ = {isa = PBXBuildFile; fileRef = A9255F51104324D700BA1496 /* ogg.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, ); }; };
 		A93E6E5510420B57007D418B /* Lua.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = A93E6E5310420B57007D418B /* Lua.framework */; };
 		A93E6E5510420B57007D418B /* Lua.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = A93E6E5310420B57007D418B /* Lua.framework */; };
 		A93E6EED10420BA8007D418B /* love.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A93E6A3410420AC0007D418B /* love.cpp */; };
 		A93E6EED10420BA8007D418B /* love.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A93E6A3410420AC0007D418B /* love.cpp */; };
 		A9D307F2106635D3004FEDF8 /* physfs.framework in Copy Frameworks */ = {isa = PBXBuildFile; fileRef = A9D307E9106635C3004FEDF8 /* physfs.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, ); }; };
 		A9D307F2106635D3004FEDF8 /* physfs.framework in Copy Frameworks */ = {isa = PBXBuildFile; fileRef = A9D307E9106635C3004FEDF8 /* physfs.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, ); }; };
 		A9F169AC109E825000FC83D1 /* mpg123.framework in Copy Frameworks */ = {isa = PBXBuildFile; fileRef = A9F169A6109E824900FC83D1 /* mpg123.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, ); }; };
 		A9F169AC109E825000FC83D1 /* mpg123.framework in Copy Frameworks */ = {isa = PBXBuildFile; fileRef = A9F169A6109E824900FC83D1 /* mpg123.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, ); }; };
 		A9F169AD109E825000FC83D1 /* libmodplug.framework in Copy Frameworks */ = {isa = PBXBuildFile; fileRef = A9F16926109E7BAD00FC83D1 /* libmodplug.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, ); }; };
 		A9F169AD109E825000FC83D1 /* libmodplug.framework in Copy Frameworks */ = {isa = PBXBuildFile; fileRef = A9F16926109E7BAD00FC83D1 /* libmodplug.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, ); }; };
+		CE73F8001EEB64150052DAB3 /* AVFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = CE73F7FF1EEB64150052DAB3 /* AVFoundation.framework */; };
 		FA0797991BF480A200034B7C /* GameController.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FA0797981BF480A200034B7C /* GameController.framework */; settings = {ATTRIBUTES = (Weak, ); }; };
 		FA0797991BF480A200034B7C /* GameController.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FA0797981BF480A200034B7C /* GameController.framework */; settings = {ATTRIBUTES = (Weak, ); }; };
 		FA08F69616C766E000F007B5 /* love.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FA08F69116C765A200F007B5 /* love.framework */; };
 		FA08F69616C766E000F007B5 /* love.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FA08F69116C765A200F007B5 /* love.framework */; };
 		FA08F69716C766E700F007B5 /* love.framework in Copy Frameworks */ = {isa = PBXBuildFile; fileRef = FA08F69116C765A200F007B5 /* love.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, ); }; };
 		FA08F69716C766E700F007B5 /* love.framework in Copy Frameworks */ = {isa = PBXBuildFile; fileRef = FA08F69116C765A200F007B5 /* love.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, ); }; };
 		FA0B7F301A95AC7D000E1D17 /* love.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A93E6A3410420AC0007D418B /* love.cpp */; };
 		FA0B7F301A95AC7D000E1D17 /* love.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A93E6A3410420AC0007D418B /* love.cpp */; };
-		FA27B3CB1B498696008A9DCE /* Theora.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FA27B3CA1B498696008A9DCE /* Theora.framework */; };
+		FA15DFB41F9B8D9E0042AB22 /* libbz2.tbd in Frameworks */ = {isa = PBXBuildFile; fileRef = FA15DFB31F9B8D9E0042AB22 /* libbz2.tbd */; };
+		FA27B3CB1B498696008A9DCE /* theora.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FA27B3CA1B498696008A9DCE /* theora.framework */; };
 		FA5933751C6D625B000EC779 /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = FA5D249A1A96CF4300C6FC8F /* Images.xcassets */; };
 		FA5933751C6D625B000EC779 /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = FA5D249A1A96CF4300C6FC8F /* Images.xcassets */; };
 		FA5D24821A96CA1800C6FC8F /* OpenAL.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FA5D24811A96CA1800C6FC8F /* OpenAL.framework */; };
 		FA5D24821A96CA1800C6FC8F /* OpenAL.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FA5D24811A96CA1800C6FC8F /* OpenAL.framework */; };
 		FA5D24841A96CA2700C6FC8F /* OpenGLES.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FA5D24831A96CA2700C6FC8F /* OpenGLES.framework */; };
 		FA5D24841A96CA2700C6FC8F /* OpenGLES.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FA5D24831A96CA2700C6FC8F /* OpenGLES.framework */; };
@@ -39,7 +40,8 @@
 		FA9B4A0B16E157B500074F42 /* SDL2.framework in Copy Frameworks */ = {isa = PBXBuildFile; fileRef = FA9B4A0916E1579F00074F42 /* SDL2.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, ); }; };
 		FA9B4A0B16E157B500074F42 /* SDL2.framework in Copy Frameworks */ = {isa = PBXBuildFile; fileRef = FA9B4A0916E1579F00074F42 /* SDL2.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, ); }; };
 		FAAFF04716CB120000CCDE45 /* OpenAL-Soft.framework in Copy Frameworks */ = {isa = PBXBuildFile; fileRef = FAAFF04616CB120000CCDE45 /* OpenAL-Soft.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, ); }; };
 		FAAFF04716CB120000CCDE45 /* OpenAL-Soft.framework in Copy Frameworks */ = {isa = PBXBuildFile; fileRef = FAAFF04616CB120000CCDE45 /* OpenAL-Soft.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, ); }; };
 		FAC1A449196F5DC600125284 /* license.txt in Resources */ = {isa = PBXBuildFile; fileRef = FAC1A448196F5DC600125284 /* license.txt */; };
 		FAC1A449196F5DC600125284 /* license.txt in Resources */ = {isa = PBXBuildFile; fileRef = FAC1A448196F5DC600125284 /* license.txt */; };
-		FAD4B1731C1F50A3004CF150 /* Theora.framework in Copy Frameworks */ = {isa = PBXBuildFile; fileRef = FA27B3CA1B498696008A9DCE /* Theora.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, ); }; };
+		FAD43ED01FF3136500831BB8 /* freetype.framework in Copy Frameworks */ = {isa = PBXBuildFile; fileRef = FAD43ECF1FF3133700831BB8 /* freetype.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
+		FAD4B1731C1F50A3004CF150 /* theora.framework in Copy Frameworks */ = {isa = PBXBuildFile; fileRef = FA27B3CA1B498696008A9DCE /* theora.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, ); }; };
 /* End PBXBuildFile section */
 /* End PBXBuildFile section */
 
 
 /* Begin PBXContainerItemProxy section */
 /* Begin PBXContainerItemProxy section */
@@ -82,14 +84,14 @@
 			files = (
 			files = (
 				FA08F69716C766E700F007B5 /* love.framework in Copy Frameworks */,
 				FA08F69716C766E700F007B5 /* love.framework in Copy Frameworks */,
 				FA9B4A0B16E157B500074F42 /* SDL2.framework in Copy Frameworks */,
 				FA9B4A0B16E157B500074F42 /* SDL2.framework in Copy Frameworks */,
-				FAD4B1731C1F50A3004CF150 /* Theora.framework in Copy Frameworks */,
+				FAD4B1731C1F50A3004CF150 /* theora.framework in Copy Frameworks */,
 				FAAFF04716CB120000CCDE45 /* OpenAL-Soft.framework in Copy Frameworks */,
 				FAAFF04716CB120000CCDE45 /* OpenAL-Soft.framework in Copy Frameworks */,
+				FAD43ED01FF3136500831BB8 /* freetype.framework in Copy Frameworks */,
 				A9F169AC109E825000FC83D1 /* mpg123.framework in Copy Frameworks */,
 				A9F169AC109E825000FC83D1 /* mpg123.framework in Copy Frameworks */,
 				A9F169AD109E825000FC83D1 /* libmodplug.framework in Copy Frameworks */,
 				A9F169AD109E825000FC83D1 /* libmodplug.framework in Copy Frameworks */,
 				A9D307F2106635D3004FEDF8 /* physfs.framework in Copy Frameworks */,
 				A9D307F2106635D3004FEDF8 /* physfs.framework in Copy Frameworks */,
-				A9255F58104324E100BA1496 /* Ogg.framework in Copy Frameworks */,
-				A9255E031043195A00BA1496 /* Vorbis.framework in Copy Frameworks */,
-				A9255DD11043183600BA1496 /* FreeType.framework in Copy Frameworks */,
+				A9255F58104324E100BA1496 /* ogg.framework in Copy Frameworks */,
+				A9255E031043195A00BA1496 /* vorbis.framework in Copy Frameworks */,
 				A9255DD31043183600BA1496 /* Lua.framework in Copy Frameworks */,
 				A9255DD31043183600BA1496 /* Lua.framework in Copy Frameworks */,
 			);
 			);
 			name = "Copy Frameworks";
 			name = "Copy Frameworks";
@@ -100,20 +102,21 @@
 /* Begin PBXFileReference section */
 /* Begin PBXFileReference section */
 		1058C7A1FEA54F0111CA2CBB /* Cocoa.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Cocoa.framework; path = /System/Library/Frameworks/Cocoa.framework; sourceTree = "<absolute>"; };
 		1058C7A1FEA54F0111CA2CBB /* Cocoa.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Cocoa.framework; path = /System/Library/Frameworks/Cocoa.framework; sourceTree = "<absolute>"; };
 		8D1107320486CEB800E47090 /* love.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = love.app; sourceTree = BUILT_PRODUCTS_DIR; };
 		8D1107320486CEB800E47090 /* love.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = love.app; sourceTree = BUILT_PRODUCTS_DIR; };
-		A9255E021043195A00BA1496 /* Vorbis.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Vorbis.framework; path = /Library/Frameworks/Vorbis.framework; sourceTree = "<absolute>"; };
-		A9255F51104324D700BA1496 /* Ogg.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Ogg.framework; path = /Library/Frameworks/Ogg.framework; sourceTree = "<absolute>"; };
+		A9255E021043195A00BA1496 /* vorbis.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = vorbis.framework; path = /Library/Frameworks/vorbis.framework; sourceTree = "<absolute>"; };
+		A9255F51104324D700BA1496 /* ogg.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = ogg.framework; path = /Library/Frameworks/ogg.framework; sourceTree = "<absolute>"; };
 		A93E6A3410420AC0007D418B /* love.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = love.cpp; path = ../../src/love.cpp; sourceTree = "<group>"; };
 		A93E6A3410420AC0007D418B /* love.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = love.cpp; path = ../../src/love.cpp; sourceTree = "<group>"; };
 		A93E6E4710420B4A007D418B /* OpenGL.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = OpenGL.framework; path = /System/Library/Frameworks/OpenGL.framework; sourceTree = "<absolute>"; };
 		A93E6E4710420B4A007D418B /* OpenGL.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = OpenGL.framework; path = /System/Library/Frameworks/OpenGL.framework; sourceTree = "<absolute>"; };
-		A93E6E4810420B4A007D418B /* FreeType.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = FreeType.framework; path = /Library/Frameworks/FreeType.framework; sourceTree = "<absolute>"; };
 		A93E6E5310420B57007D418B /* Lua.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Lua.framework; path = /Library/Frameworks/Lua.framework; sourceTree = "<absolute>"; };
 		A93E6E5310420B57007D418B /* Lua.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Lua.framework; path = /Library/Frameworks/Lua.framework; sourceTree = "<absolute>"; };
 		A97E3842132A9EDE00198A2F /* love-macosx.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = "love-macosx.plist"; path = "macosx/love-macosx.plist"; sourceTree = "<group>"; };
 		A97E3842132A9EDE00198A2F /* love-macosx.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = "love-macosx.plist"; path = "macosx/love-macosx.plist"; sourceTree = "<group>"; };
 		A9D307E9106635C3004FEDF8 /* physfs.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = physfs.framework; path = /Library/Frameworks/physfs.framework; sourceTree = "<absolute>"; };
 		A9D307E9106635C3004FEDF8 /* physfs.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = physfs.framework; path = /Library/Frameworks/physfs.framework; sourceTree = "<absolute>"; };
 		A9F16926109E7BAD00FC83D1 /* libmodplug.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = libmodplug.framework; path = /Library/Frameworks/libmodplug.framework; sourceTree = "<absolute>"; };
 		A9F16926109E7BAD00FC83D1 /* libmodplug.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = libmodplug.framework; path = /Library/Frameworks/libmodplug.framework; sourceTree = "<absolute>"; };
 		A9F169A6109E824900FC83D1 /* mpg123.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = mpg123.framework; path = /Library/Frameworks/mpg123.framework; sourceTree = "<absolute>"; };
 		A9F169A6109E824900FC83D1 /* mpg123.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = mpg123.framework; path = /Library/Frameworks/mpg123.framework; sourceTree = "<absolute>"; };
+		CE73F7FF1EEB64150052DAB3 /* AVFoundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AVFoundation.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS10.3.sdk/System/Library/Frameworks/AVFoundation.framework; sourceTree = DEVELOPER_DIR; };
 		FA0797981BF480A200034B7C /* GameController.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = GameController.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS9.1.sdk/System/Library/Frameworks/GameController.framework; sourceTree = DEVELOPER_DIR; };
 		FA0797981BF480A200034B7C /* GameController.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = GameController.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS9.1.sdk/System/Library/Frameworks/GameController.framework; sourceTree = DEVELOPER_DIR; };
 		FA08F69116C765A200F007B5 /* love.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; path = love.framework; sourceTree = BUILT_PRODUCTS_DIR; };
 		FA08F69116C765A200F007B5 /* love.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; path = love.framework; sourceTree = BUILT_PRODUCTS_DIR; };
 		FA0B7F061A95AAF3000E1D17 /* love.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = love.app; sourceTree = BUILT_PRODUCTS_DIR; };
 		FA0B7F061A95AAF3000E1D17 /* love.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = love.app; sourceTree = BUILT_PRODUCTS_DIR; };
-		FA27B3CA1B498696008A9DCE /* Theora.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Theora.framework; path = /Library/Frameworks/Theora.framework; sourceTree = "<absolute>"; };
+		FA15DFB31F9B8D9E0042AB22 /* libbz2.tbd */ = {isa = PBXFileReference; lastKnownFileType = "sourcecode.text-based-dylib-definition"; name = libbz2.tbd; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS11.0.sdk/usr/lib/libbz2.tbd; sourceTree = DEVELOPER_DIR; };
+		FA27B3CA1B498696008A9DCE /* theora.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = theora.framework; path = /Library/Frameworks/theora.framework; sourceTree = "<absolute>"; };
 		FA577A9316C7217800860150 /* liblove.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; path = liblove.xcodeproj; sourceTree = "<group>"; };
 		FA577A9316C7217800860150 /* liblove.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; path = liblove.xcodeproj; sourceTree = "<group>"; };
 		FA5D24811A96CA1800C6FC8F /* OpenAL.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = OpenAL.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS8.1.sdk/System/Library/Frameworks/OpenAL.framework; sourceTree = DEVELOPER_DIR; };
 		FA5D24811A96CA1800C6FC8F /* OpenAL.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = OpenAL.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS8.1.sdk/System/Library/Frameworks/OpenAL.framework; sourceTree = DEVELOPER_DIR; };
 		FA5D24831A96CA2700C6FC8F /* OpenGLES.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = OpenGLES.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS8.1.sdk/System/Library/Frameworks/OpenGLES.framework; sourceTree = DEVELOPER_DIR; };
 		FA5D24831A96CA2700C6FC8F /* OpenGLES.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = OpenGLES.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS8.1.sdk/System/Library/Frameworks/OpenGLES.framework; sourceTree = DEVELOPER_DIR; };
@@ -130,6 +133,7 @@
 		FA9B4A0916E1579F00074F42 /* SDL2.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = SDL2.framework; path = /Library/Frameworks/SDL2.framework; sourceTree = "<absolute>"; };
 		FA9B4A0916E1579F00074F42 /* SDL2.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = SDL2.framework; path = /Library/Frameworks/SDL2.framework; sourceTree = "<absolute>"; };
 		FAAFF04616CB120000CCDE45 /* OpenAL-Soft.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "OpenAL-Soft.framework"; path = "/Library/Frameworks/OpenAL-Soft.framework"; sourceTree = "<absolute>"; };
 		FAAFF04616CB120000CCDE45 /* OpenAL-Soft.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "OpenAL-Soft.framework"; path = "/Library/Frameworks/OpenAL-Soft.framework"; sourceTree = "<absolute>"; };
 		FAC1A448196F5DC600125284 /* license.txt */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = license.txt; path = ../../license.txt; sourceTree = "<group>"; };
 		FAC1A448196F5DC600125284 /* license.txt */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = license.txt; path = ../../license.txt; sourceTree = "<group>"; };
+		FAD43ECF1FF3133700831BB8 /* freetype.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = freetype.framework; path = /Library/Frameworks/freetype.framework; sourceTree = "<absolute>"; };
 /* End PBXFileReference section */
 /* End PBXFileReference section */
 
 
 /* Begin PBXFrameworksBuildPhase section */
 /* Begin PBXFrameworksBuildPhase section */
@@ -140,7 +144,7 @@
 				FA08F69616C766E000F007B5 /* love.framework in Frameworks */,
 				FA08F69616C766E000F007B5 /* love.framework in Frameworks */,
 				8D11072F0486CEB800E47090 /* Cocoa.framework in Frameworks */,
 				8D11072F0486CEB800E47090 /* Cocoa.framework in Frameworks */,
 				A93E6E5510420B57007D418B /* Lua.framework in Frameworks */,
 				A93E6E5510420B57007D418B /* Lua.framework in Frameworks */,
-				FA27B3CB1B498696008A9DCE /* Theora.framework in Frameworks */,
+				FA27B3CB1B498696008A9DCE /* theora.framework in Frameworks */,
 				FA9B4A0A16E1579F00074F42 /* SDL2.framework in Frameworks */,
 				FA9B4A0A16E1579F00074F42 /* SDL2.framework in Frameworks */,
 			);
 			);
 			runOnlyForDeploymentPostprocessing = 0;
 			runOnlyForDeploymentPostprocessing = 0;
@@ -149,6 +153,8 @@
 			isa = PBXFrameworksBuildPhase;
 			isa = PBXFrameworksBuildPhase;
 			buildActionMask = 2147483647;
 			buildActionMask = 2147483647;
 			files = (
 			files = (
+				FA15DFB41F9B8D9E0042AB22 /* libbz2.tbd in Frameworks */,
+				CE73F8001EEB64150052DAB3 /* AVFoundation.framework in Frameworks */,
 				FA5D24D11A96E73300C6FC8F /* liblove.a in Frameworks */,
 				FA5D24D11A96E73300C6FC8F /* liblove.a in Frameworks */,
 				FA5D24C21A96D78000C6FC8F /* Foundation.framework in Frameworks */,
 				FA5D24C21A96D78000C6FC8F /* Foundation.framework in Frameworks */,
 				FA5D24961A96CAC200C6FC8F /* CoreMotion.framework in Frameworks */,
 				FA5D24961A96CAC200C6FC8F /* CoreMotion.framework in Frameworks */,
@@ -169,6 +175,8 @@
 		1058C7A0FEA54F0111CA2CBB /* Frameworks */ = {
 		1058C7A0FEA54F0111CA2CBB /* Frameworks */ = {
 			isa = PBXGroup;
 			isa = PBXGroup;
 			children = (
 			children = (
+				FA15DFB31F9B8D9E0042AB22 /* libbz2.tbd */,
+				CE73F7FF1EEB64150052DAB3 /* AVFoundation.framework */,
 				FA5D24801A96C97900C6FC8F /* ios */,
 				FA5D24801A96C97900C6FC8F /* ios */,
 				FA0B7EEC1A959249000E1D17 /* macosx */,
 				FA0B7EEC1A959249000E1D17 /* macosx */,
 			);
 			);
@@ -219,19 +227,19 @@
 		FA0B7EEC1A959249000E1D17 /* macosx */ = {
 		FA0B7EEC1A959249000E1D17 /* macosx */ = {
 			isa = PBXGroup;
 			isa = PBXGroup;
 			children = (
 			children = (
-				FA27B3CA1B498696008A9DCE /* Theora.framework */,
 				1058C7A1FEA54F0111CA2CBB /* Cocoa.framework */,
 				1058C7A1FEA54F0111CA2CBB /* Cocoa.framework */,
-				A93E6E4810420B4A007D418B /* FreeType.framework */,
+				FAD43ECF1FF3133700831BB8 /* freetype.framework */,
 				A9F16926109E7BAD00FC83D1 /* libmodplug.framework */,
 				A9F16926109E7BAD00FC83D1 /* libmodplug.framework */,
 				FA08F69116C765A200F007B5 /* love.framework */,
 				FA08F69116C765A200F007B5 /* love.framework */,
 				A93E6E5310420B57007D418B /* Lua.framework */,
 				A93E6E5310420B57007D418B /* Lua.framework */,
 				A9F169A6109E824900FC83D1 /* mpg123.framework */,
 				A9F169A6109E824900FC83D1 /* mpg123.framework */,
-				A9255F51104324D700BA1496 /* Ogg.framework */,
+				A9255F51104324D700BA1496 /* ogg.framework */,
 				FAAFF04616CB120000CCDE45 /* OpenAL-Soft.framework */,
 				FAAFF04616CB120000CCDE45 /* OpenAL-Soft.framework */,
 				A93E6E4710420B4A007D418B /* OpenGL.framework */,
 				A93E6E4710420B4A007D418B /* OpenGL.framework */,
 				A9D307E9106635C3004FEDF8 /* physfs.framework */,
 				A9D307E9106635C3004FEDF8 /* physfs.framework */,
 				FA9B4A0916E1579F00074F42 /* SDL2.framework */,
 				FA9B4A0916E1579F00074F42 /* SDL2.framework */,
-				A9255E021043195A00BA1496 /* Vorbis.framework */,
+				FA27B3CA1B498696008A9DCE /* theora.framework */,
+				A9255E021043195A00BA1496 /* vorbis.framework */,
 			);
 			);
 			name = macosx;
 			name = macosx;
 			sourceTree = "<group>";
 			sourceTree = "<group>";
@@ -318,7 +326,7 @@
 		29B97313FDCFA39411CA2CEA /* Project object */ = {
 		29B97313FDCFA39411CA2CEA /* Project object */ = {
 			isa = PBXProject;
 			isa = PBXProject;
 			attributes = {
 			attributes = {
-				LastUpgradeCheck = 0700;
+				LastUpgradeCheck = 0920;
 				TargetAttributes = {
 				TargetAttributes = {
 					FA0B7F051A95AAF3000E1D17 = {
 					FA0B7F051A95AAF3000E1D17 = {
 						CreatedOnToolsVersion = 6.1.1;
 						CreatedOnToolsVersion = 6.1.1;
@@ -430,6 +438,7 @@
 				COMBINE_HIDPI_IMAGES = YES;
 				COMBINE_HIDPI_IMAGES = YES;
 				FRAMEWORK_SEARCH_PATHS = (
 				FRAMEWORK_SEARCH_PATHS = (
 					"$(inherited)",
 					"$(inherited)",
+					"$(PROJECT_DIR)/macosx/Frameworks",
 					/Library/Frameworks,
 					/Library/Frameworks,
 					"\"$(SRCROOT)/build/Release\"",
 					"\"$(SRCROOT)/build/Release\"",
 					"\"$(SRCROOT)/build/Debug\"",
 					"\"$(SRCROOT)/build/Debug\"",
@@ -439,6 +448,8 @@
 				GCC_OPTIMIZATION_LEVEL = 0;
 				GCC_OPTIMIZATION_LEVEL = 0;
 				HEADER_SEARCH_PATHS = (
 				HEADER_SEARCH_PATHS = (
 					"$(inherited)",
 					"$(inherited)",
+					"$(PROJECT_DIR)/macosx/Frameworks/Lua.framework/Headers",
+					"$(PROJECT_DIR)/macosx/Frameworks/SDL2.framework/Headers",
 					/Library/Frameworks/Lua.framework/Headers,
 					/Library/Frameworks/Lua.framework/Headers,
 					/Library/Frameworks/SDL2.framework/Headers,
 					/Library/Frameworks/SDL2.framework/Headers,
 				);
 				);
@@ -458,6 +469,7 @@
 				DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
 				DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
 				FRAMEWORK_SEARCH_PATHS = (
 				FRAMEWORK_SEARCH_PATHS = (
 					"$(inherited)",
 					"$(inherited)",
+					"$(PROJECT_DIR)/macosx/Frameworks",
 					/Library/Frameworks,
 					/Library/Frameworks,
 					"\"$(SRCROOT)/build/Release\"",
 					"\"$(SRCROOT)/build/Release\"",
 					"\"$(SRCROOT)/build/Debug\"",
 					"\"$(SRCROOT)/build/Debug\"",
@@ -465,6 +477,8 @@
 				);
 				);
 				HEADER_SEARCH_PATHS = (
 				HEADER_SEARCH_PATHS = (
 					"$(inherited)",
 					"$(inherited)",
+					"$(PROJECT_DIR)/macosx/Frameworks/Lua.framework/Headers",
+					"$(PROJECT_DIR)/macosx/Frameworks/SDL2.framework/Headers",
 					/Library/Frameworks/Lua.framework/Headers,
 					/Library/Frameworks/Lua.framework/Headers,
 					/Library/Frameworks/SDL2.framework/Headers,
 					/Library/Frameworks/SDL2.framework/Headers,
 				);
 				);
@@ -480,16 +494,35 @@
 			isa = XCBuildConfiguration;
 			isa = XCBuildConfiguration;
 			buildSettings = {
 			buildSettings = {
 				ALWAYS_SEARCH_USER_PATHS = NO;
 				ALWAYS_SEARCH_USER_PATHS = NO;
+				CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES;
 				CLANG_CXX_LANGUAGE_STANDARD = "c++0x";
 				CLANG_CXX_LANGUAGE_STANDARD = "c++0x";
 				CLANG_CXX_LIBRARY = "libc++";
 				CLANG_CXX_LIBRARY = "libc++";
 				CLANG_ENABLE_MODULES = YES;
 				CLANG_ENABLE_MODULES = YES;
 				CLANG_ENABLE_OBJC_ARC = YES;
 				CLANG_ENABLE_OBJC_ARC = YES;
+				CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
+				CLANG_WARN_BOOL_CONVERSION = YES;
+				CLANG_WARN_COMMA = YES;
+				CLANG_WARN_CONSTANT_CONVERSION = YES;
+				CLANG_WARN_EMPTY_BODY = YES;
+				CLANG_WARN_ENUM_CONVERSION = YES;
+				CLANG_WARN_INFINITE_RECURSION = YES;
+				CLANG_WARN_INT_CONVERSION = YES;
+				CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
+				CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
+				CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
+				CLANG_WARN_STRICT_PROTOTYPES = YES;
+				CLANG_WARN_SUSPICIOUS_MOVE = YES;
+				CLANG_WARN_UNREACHABLE_CODE = YES;
+				CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
+				ENABLE_STRICT_OBJC_MSGSEND = YES;
 				ENABLE_TESTABILITY = YES;
 				ENABLE_TESTABILITY = YES;
 				FRAMEWORK_SEARCH_PATHS = "";
 				FRAMEWORK_SEARCH_PATHS = "";
 				GCC_INCREASE_PRECOMPILED_HEADER_SHARING = YES;
 				GCC_INCREASE_PRECOMPILED_HEADER_SHARING = YES;
+				GCC_NO_COMMON_BLOCKS = YES;
 				GCC_OPTIMIZATION_LEVEL = 0;
 				GCC_OPTIMIZATION_LEVEL = 0;
 				GCC_PREPROCESSOR_DEFINITIONS = LOVE_APPLE_USE_FRAMEWORKS;
 				GCC_PREPROCESSOR_DEFINITIONS = LOVE_APPLE_USE_FRAMEWORKS;
 				GCC_TREAT_IMPLICIT_FUNCTION_DECLARATIONS_AS_ERRORS = NO;
 				GCC_TREAT_IMPLICIT_FUNCTION_DECLARATIONS_AS_ERRORS = NO;
+				GCC_WARN_64_TO_32_BIT_CONVERSION = NO;
 				GCC_WARN_ABOUT_MISSING_NEWLINE = NO;
 				GCC_WARN_ABOUT_MISSING_NEWLINE = NO;
 				GCC_WARN_ABOUT_MISSING_PROTOTYPES = NO;
 				GCC_WARN_ABOUT_MISSING_PROTOTYPES = NO;
 				GCC_WARN_ABOUT_POINTER_SIGNEDNESS = YES;
 				GCC_WARN_ABOUT_POINTER_SIGNEDNESS = YES;
@@ -504,6 +537,9 @@
 				GCC_WARN_SHADOW = NO;
 				GCC_WARN_SHADOW = NO;
 				GCC_WARN_SIGN_COMPARE = YES;
 				GCC_WARN_SIGN_COMPARE = YES;
 				GCC_WARN_TYPECHECK_CALLS_TO_PRINTF = NO;
 				GCC_WARN_TYPECHECK_CALLS_TO_PRINTF = NO;
+				GCC_WARN_UNDECLARED_SELECTOR = YES;
+				GCC_WARN_UNINITIALIZED_AUTOS = YES;
+				GCC_WARN_UNUSED_FUNCTION = YES;
 				GCC_WARN_UNUSED_VARIABLE = YES;
 				GCC_WARN_UNUSED_VARIABLE = YES;
 				HEADER_SEARCH_PATHS = (
 				HEADER_SEARCH_PATHS = (
 					"\"$(SRCROOT)/../../src\"",
 					"\"$(SRCROOT)/../../src\"",
@@ -535,16 +571,35 @@
 			isa = XCBuildConfiguration;
 			isa = XCBuildConfiguration;
 			buildSettings = {
 			buildSettings = {
 				ALWAYS_SEARCH_USER_PATHS = NO;
 				ALWAYS_SEARCH_USER_PATHS = NO;
+				CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES;
 				CLANG_CXX_LANGUAGE_STANDARD = "c++0x";
 				CLANG_CXX_LANGUAGE_STANDARD = "c++0x";
 				CLANG_CXX_LIBRARY = "libc++";
 				CLANG_CXX_LIBRARY = "libc++";
 				CLANG_ENABLE_MODULES = YES;
 				CLANG_ENABLE_MODULES = YES;
 				CLANG_ENABLE_OBJC_ARC = YES;
 				CLANG_ENABLE_OBJC_ARC = YES;
+				CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
+				CLANG_WARN_BOOL_CONVERSION = YES;
+				CLANG_WARN_COMMA = YES;
+				CLANG_WARN_CONSTANT_CONVERSION = YES;
+				CLANG_WARN_EMPTY_BODY = YES;
+				CLANG_WARN_ENUM_CONVERSION = YES;
+				CLANG_WARN_INFINITE_RECURSION = YES;
+				CLANG_WARN_INT_CONVERSION = YES;
+				CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
+				CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
+				CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
+				CLANG_WARN_STRICT_PROTOTYPES = YES;
+				CLANG_WARN_SUSPICIOUS_MOVE = YES;
+				CLANG_WARN_UNREACHABLE_CODE = YES;
+				CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
 				DEPLOYMENT_POSTPROCESSING = NO;
 				DEPLOYMENT_POSTPROCESSING = NO;
+				ENABLE_STRICT_OBJC_MSGSEND = YES;
 				FRAMEWORK_SEARCH_PATHS = "";
 				FRAMEWORK_SEARCH_PATHS = "";
 				GCC_INPUT_FILETYPE = automatic;
 				GCC_INPUT_FILETYPE = automatic;
+				GCC_NO_COMMON_BLOCKS = YES;
 				GCC_OPTIMIZATION_LEVEL = 3;
 				GCC_OPTIMIZATION_LEVEL = 3;
 				GCC_PREPROCESSOR_DEFINITIONS = LOVE_APPLE_USE_FRAMEWORKS;
 				GCC_PREPROCESSOR_DEFINITIONS = LOVE_APPLE_USE_FRAMEWORKS;
 				GCC_TREAT_IMPLICIT_FUNCTION_DECLARATIONS_AS_ERRORS = NO;
 				GCC_TREAT_IMPLICIT_FUNCTION_DECLARATIONS_AS_ERRORS = NO;
+				GCC_WARN_64_TO_32_BIT_CONVERSION = NO;
 				GCC_WARN_ABOUT_MISSING_NEWLINE = NO;
 				GCC_WARN_ABOUT_MISSING_NEWLINE = NO;
 				GCC_WARN_ABOUT_MISSING_PROTOTYPES = NO;
 				GCC_WARN_ABOUT_MISSING_PROTOTYPES = NO;
 				GCC_WARN_ABOUT_POINTER_SIGNEDNESS = YES;
 				GCC_WARN_ABOUT_POINTER_SIGNEDNESS = YES;
@@ -559,6 +614,9 @@
 				GCC_WARN_SHADOW = NO;
 				GCC_WARN_SHADOW = NO;
 				GCC_WARN_SIGN_COMPARE = YES;
 				GCC_WARN_SIGN_COMPARE = YES;
 				GCC_WARN_TYPECHECK_CALLS_TO_PRINTF = NO;
 				GCC_WARN_TYPECHECK_CALLS_TO_PRINTF = NO;
+				GCC_WARN_UNDECLARED_SELECTOR = YES;
+				GCC_WARN_UNINITIALIZED_AUTOS = YES;
+				GCC_WARN_UNUSED_FUNCTION = YES;
 				GCC_WARN_UNUSED_PARAMETER = NO;
 				GCC_WARN_UNUSED_PARAMETER = NO;
 				GCC_WARN_UNUSED_VALUE = NO;
 				GCC_WARN_UNUSED_VALUE = NO;
 				GCC_WARN_UNUSED_VARIABLE = YES;
 				GCC_WARN_UNUSED_VARIABLE = YES;
@@ -730,16 +788,35 @@
 			isa = XCBuildConfiguration;
 			isa = XCBuildConfiguration;
 			buildSettings = {
 			buildSettings = {
 				ALWAYS_SEARCH_USER_PATHS = NO;
 				ALWAYS_SEARCH_USER_PATHS = NO;
+				CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES;
 				CLANG_CXX_LANGUAGE_STANDARD = "c++0x";
 				CLANG_CXX_LANGUAGE_STANDARD = "c++0x";
 				CLANG_CXX_LIBRARY = "libc++";
 				CLANG_CXX_LIBRARY = "libc++";
 				CLANG_ENABLE_MODULES = YES;
 				CLANG_ENABLE_MODULES = YES;
 				CLANG_ENABLE_OBJC_ARC = YES;
 				CLANG_ENABLE_OBJC_ARC = YES;
+				CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
+				CLANG_WARN_BOOL_CONVERSION = YES;
+				CLANG_WARN_COMMA = YES;
+				CLANG_WARN_CONSTANT_CONVERSION = YES;
+				CLANG_WARN_EMPTY_BODY = YES;
+				CLANG_WARN_ENUM_CONVERSION = YES;
+				CLANG_WARN_INFINITE_RECURSION = YES;
+				CLANG_WARN_INT_CONVERSION = YES;
+				CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
+				CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
+				CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
+				CLANG_WARN_STRICT_PROTOTYPES = YES;
+				CLANG_WARN_SUSPICIOUS_MOVE = YES;
+				CLANG_WARN_UNREACHABLE_CODE = YES;
+				CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
 				DEPLOYMENT_POSTPROCESSING = NO;
 				DEPLOYMENT_POSTPROCESSING = NO;
+				ENABLE_STRICT_OBJC_MSGSEND = YES;
 				FRAMEWORK_SEARCH_PATHS = "";
 				FRAMEWORK_SEARCH_PATHS = "";
 				GCC_INPUT_FILETYPE = automatic;
 				GCC_INPUT_FILETYPE = automatic;
+				GCC_NO_COMMON_BLOCKS = YES;
 				GCC_OPTIMIZATION_LEVEL = 3;
 				GCC_OPTIMIZATION_LEVEL = 3;
 				GCC_PREPROCESSOR_DEFINITIONS = LOVE_APPLE_USE_FRAMEWORKS;
 				GCC_PREPROCESSOR_DEFINITIONS = LOVE_APPLE_USE_FRAMEWORKS;
 				GCC_TREAT_IMPLICIT_FUNCTION_DECLARATIONS_AS_ERRORS = NO;
 				GCC_TREAT_IMPLICIT_FUNCTION_DECLARATIONS_AS_ERRORS = NO;
+				GCC_WARN_64_TO_32_BIT_CONVERSION = NO;
 				GCC_WARN_ABOUT_MISSING_NEWLINE = NO;
 				GCC_WARN_ABOUT_MISSING_NEWLINE = NO;
 				GCC_WARN_ABOUT_MISSING_PROTOTYPES = NO;
 				GCC_WARN_ABOUT_MISSING_PROTOTYPES = NO;
 				GCC_WARN_ABOUT_POINTER_SIGNEDNESS = YES;
 				GCC_WARN_ABOUT_POINTER_SIGNEDNESS = YES;
@@ -754,6 +831,9 @@
 				GCC_WARN_SHADOW = NO;
 				GCC_WARN_SHADOW = NO;
 				GCC_WARN_SIGN_COMPARE = YES;
 				GCC_WARN_SIGN_COMPARE = YES;
 				GCC_WARN_TYPECHECK_CALLS_TO_PRINTF = NO;
 				GCC_WARN_TYPECHECK_CALLS_TO_PRINTF = NO;
+				GCC_WARN_UNDECLARED_SELECTOR = YES;
+				GCC_WARN_UNINITIALIZED_AUTOS = YES;
+				GCC_WARN_UNUSED_FUNCTION = YES;
 				GCC_WARN_UNUSED_PARAMETER = NO;
 				GCC_WARN_UNUSED_PARAMETER = NO;
 				GCC_WARN_UNUSED_VALUE = NO;
 				GCC_WARN_UNUSED_VALUE = NO;
 				GCC_WARN_UNUSED_VARIABLE = YES;
 				GCC_WARN_UNUSED_VARIABLE = YES;
@@ -793,6 +873,7 @@
 				DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
 				DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
 				FRAMEWORK_SEARCH_PATHS = (
 				FRAMEWORK_SEARCH_PATHS = (
 					"$(inherited)",
 					"$(inherited)",
+					"$(PROJECT_DIR)/macosx/Frameworks",
 					/Library/Frameworks,
 					/Library/Frameworks,
 					"\"$(SRCROOT)/build/Release\"",
 					"\"$(SRCROOT)/build/Release\"",
 					"\"$(SRCROOT)/build/Debug\"",
 					"\"$(SRCROOT)/build/Debug\"",
@@ -800,6 +881,8 @@
 				);
 				);
 				HEADER_SEARCH_PATHS = (
 				HEADER_SEARCH_PATHS = (
 					"$(inherited)",
 					"$(inherited)",
+					"$(PROJECT_DIR)/macosx/Frameworks/Lua.framework/Headers",
+					"$(PROJECT_DIR)/macosx/Frameworks/SDL2.framework/Headers",
 					/Library/Frameworks/Lua.framework/Headers,
 					/Library/Frameworks/Lua.framework/Headers,
 					/Library/Frameworks/SDL2.framework/Headers,
 					/Library/Frameworks/SDL2.framework/Headers,
 				);
 				);

+ 5 - 0
love/src/jni/love/platform/xcode/love.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings

@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict/>
+</plist>

+ 1 - 1
love/src/jni/love/platform/xcode/macosx/liblove-macosx.plist

@@ -17,7 +17,7 @@
 	<key>CFBundlePackageType</key>
 	<key>CFBundlePackageType</key>
 	<string>FMWK</string>
 	<string>FMWK</string>
 	<key>CFBundleShortVersionString</key>
 	<key>CFBundleShortVersionString</key>
-	<string>0.10.1</string>
+	<string>0.11.0</string>
 	<key>CFBundleSignature</key>
 	<key>CFBundleSignature</key>
 	<string>LoVe</string>
 	<string>LoVe</string>
 	<key>NSPrincipalClass</key>
 	<key>NSPrincipalClass</key>

+ 4 - 2
love/src/jni/love/platform/xcode/macosx/love-macosx.plist

@@ -62,7 +62,7 @@
 	<key>CFBundlePackageType</key>
 	<key>CFBundlePackageType</key>
 	<string>APPL</string>
 	<string>APPL</string>
 	<key>CFBundleShortVersionString</key>
 	<key>CFBundleShortVersionString</key>
-	<string>0.10.2</string>
+	<string>0.11.0</string>
 	<key>CFBundleSignature</key>
 	<key>CFBundleSignature</key>
 	<string>LoVe</string>
 	<string>LoVe</string>
 	<key>LSApplicationCategoryType</key>
 	<key>LSApplicationCategoryType</key>
@@ -70,9 +70,11 @@
 	<key>NSHighResolutionCapable</key>
 	<key>NSHighResolutionCapable</key>
 	<true/>
 	<true/>
 	<key>NSHumanReadableCopyright</key>
 	<key>NSHumanReadableCopyright</key>
-	<string>© 2006-2016 LÖVE Development Team</string>
+	<string>© 2006-2018 LÖVE Development Team</string>
 	<key>NSPrincipalClass</key>
 	<key>NSPrincipalClass</key>
 	<string>NSApplication</string>
 	<string>NSApplication</string>
+	<key>NSSupportsAutomaticGraphicsSwitching</key>
+	<false/>
 	<key>UTExportedTypeDeclarations</key>
 	<key>UTExportedTypeDeclarations</key>
 	<array>
 	<array>
 		<dict>
 		<dict>

+ 39 - 7
love/src/jni/love/src/modules/graphics/Color.h → love/src/jni/love/src/common/Color.h

@@ -1,5 +1,5 @@
 /**
 /**
- * Copyright (c) 2006-2011 LOVE Development Team
+ * Copyright (c) 2006-2018 LOVE Development Team
  *
  *
  * This software is provided 'as-is', without any express or implied
  * This software is provided 'as-is', without any express or implied
  * warranty.  In no event will the authors be held liable for any damages
  * warranty.  In no event will the authors be held liable for any damages
@@ -18,13 +18,11 @@
  * 3. This notice may not be removed or altered from any source distribution.
  * 3. This notice may not be removed or altered from any source distribution.
  **/
  **/
 
 
-#ifndef LOVE_GRAPHICS_COLOR_H
-#define LOVE_GRAPHICS_COLOR_H
+#ifndef LOVE_COLOR_H
+#define LOVE_COLOR_H
 
 
 namespace love
 namespace love
 {
 {
-namespace graphics
-{
 
 
 template <typename T>
 template <typename T>
 struct ColorT
 struct ColorT
@@ -48,6 +46,7 @@ struct ColorT
 	bool operator!=(const ColorT<T> &other) const;
 	bool operator!=(const ColorT<T> &other) const;
 
 
 	ColorT<T> operator+=(const ColorT<T> &other);
 	ColorT<T> operator+=(const ColorT<T> &other);
+	ColorT<T> operator*=(const ColorT<T> &other);
 	ColorT<T> operator*=(T s);
 	ColorT<T> operator*=(T s);
 	ColorT<T> operator/=(T s);
 	ColorT<T> operator/=(T s);
 };
 };
@@ -74,6 +73,16 @@ ColorT<T> ColorT<T>::operator+=(const ColorT<T> &other)
 	return *this;
 	return *this;
 }
 }
 
 
+template <typename T>
+ColorT<T> ColorT<T>::operator*=(const ColorT<T> &other)
+{
+	r *= other.r;
+	g *= other.g;
+	b *= other.b;
+	a *= other.a;
+	return *this;
+}
+
 template <typename T>
 template <typename T>
 ColorT<T> ColorT<T>::operator*=(T s)
 ColorT<T> ColorT<T>::operator*=(T s)
 {
 {
@@ -101,6 +110,17 @@ ColorT<T> operator+(const ColorT<T> &a, const ColorT<T> &b)
 	return tmp += b;
 	return tmp += b;
 }
 }
 
 
+template <typename T>
+ColorT<T> operator*(const ColorT<T> &a, const ColorT<T> &b)
+{
+	ColorT<T> res;
+	res.r = a.r * b.r;
+	res.g = a.g * b.g;
+	res.b = a.b * b.b;
+	res.a = a.a * b.a;
+	return res;
+}
+
 template <typename T>
 template <typename T>
 ColorT<T> operator*(const ColorT<T> &a, T s)
 ColorT<T> operator*(const ColorT<T> &a, T s)
 {
 {
@@ -118,7 +138,19 @@ ColorT<T> operator/(const ColorT<T> &a, T s)
 typedef ColorT<unsigned char> Color;
 typedef ColorT<unsigned char> Color;
 typedef ColorT<float> Colorf;
 typedef ColorT<float> Colorf;
 
 
-} // graphics
+inline Color toColor(Colorf cf)
+{
+	return Color((unsigned char) (cf.r * 255.0f),
+	             (unsigned char) (cf.g * 255.0f),
+	             (unsigned char) (cf.b * 255.0f),
+	             (unsigned char) (cf.a * 255.0f));
+}
+
+inline Colorf toColorf(Color c)
+{
+	return Colorf(c.r / 255.0f, c.g / 255.0f, c.b / 255.0f, c.a / 255.0f);
+}
+
 } // love
 } // love
 
 
-#endif // LOVE_GRAPHICS_COLOR_H
+#endif // LOVE_COLOR_H

+ 29 - 0
love/src/jni/love/src/common/Data.cpp

@@ -0,0 +1,29 @@
+/**
+ * Copyright (c) 2006-2018 LOVE Development Team
+ *
+ * This software is provided 'as-is', without any express or implied
+ * warranty.  In no event will the authors be held liable for any damages
+ * arising from the use of this software.
+ *
+ * Permission is granted to anyone to use this software for any purpose,
+ * including commercial applications, and to alter it and redistribute it
+ * freely, subject to the following restrictions:
+ *
+ * 1. The origin of this software must not be misrepresented; you must not
+ *    claim that you wrote the original software. If you use this software
+ *    in a product, an acknowledgment in the product documentation would be
+ *    appreciated but is not required.
+ * 2. Altered source versions must be plainly marked as such, and must not be
+ *    misrepresented as being the original software.
+ * 3. This notice may not be removed or altered from any source distribution.
+ **/
+
+// LOVE
+#include "Data.h"
+
+namespace love
+{
+
+love::Type Data::type("Data", &Object::type);
+
+} // love

+ 7 - 1
love/src/jni/love/src/common/Data.h

@@ -1,5 +1,5 @@
 /**
 /**
- * Copyright (c) 2006-2016 LOVE Development Team
+ * Copyright (c) 2006-2018 LOVE Development Team
  *
  *
  * This software is provided 'as-is', without any express or implied
  * This software is provided 'as-is', without any express or implied
  * warranty.  In no event will the authors be held liable for any damages
  * warranty.  In no event will the authors be held liable for any damages
@@ -38,11 +38,17 @@ class Data : public Object
 {
 {
 public:
 public:
 
 
+	static love::Type type;
+
 	/**
 	/**
 	 * Destructor.
 	 * Destructor.
 	 **/
 	 **/
 	virtual ~Data() {}
 	virtual ~Data() {}
 
 
+	/**
+	 * Creates a duplicate of Data derived class instance.
+	 **/
+	virtual Data *clone() const = 0;
 	/**
 	/**
 	 * Gets a pointer to the data. This pointer will obviously not
 	 * Gets a pointer to the data. This pointer will obviously not
 	 * be valid if the Data object is destroyed.
 	 * be valid if the Data object is destroyed.

+ 1 - 1
love/src/jni/love/src/common/EnumMap.h

@@ -1,5 +1,5 @@
 /**
 /**
- * Copyright (c) 2006-2016 LOVE Development Team
+ * Copyright (c) 2006-2018 LOVE Development Team
  *
  *
  * This software is provided 'as-is', without any express or implied
  * This software is provided 'as-is', without any express or implied
  * warranty.  In no event will the authors be held liable for any damages
  * warranty.  In no event will the authors be held liable for any damages

+ 1 - 1
love/src/jni/love/src/common/Exception.cpp

@@ -1,5 +1,5 @@
 /**
 /**
- * Copyright (c) 2006-2016 LOVE Development Team
+ * Copyright (c) 2006-2018 LOVE Development Team
  *
  *
  * This software is provided 'as-is', without any express or implied
  * This software is provided 'as-is', without any express or implied
  * warranty.  In no event will the authors be held liable for any damages
  * warranty.  In no event will the authors be held liable for any damages

+ 1 - 1
love/src/jni/love/src/common/Exception.h

@@ -1,5 +1,5 @@
 /**
 /**
- * Copyright (c) 2006-2016 LOVE Development Team
+ * Copyright (c) 2006-2018 LOVE Development Team
  *
  *
  * This software is provided 'as-is', without any express or implied
  * This software is provided 'as-is', without any express or implied
  * warranty.  In no event will the authors be held liable for any damages
  * warranty.  In no event will the authors be held liable for any damages

+ 230 - 41
love/src/jni/love/src/common/Matrix.cpp

@@ -1,5 +1,5 @@
 /**
 /**
- * Copyright (c) 2006-2016 LOVE Development Team
+ * Copyright (c) 2006-2018 LOVE Development Team
  *
  *
  * This software is provided 'as-is', without any express or implied
  * This software is provided 'as-is', without any express or implied
  * warranty.  In no event will the authors be held liable for any damages
  * warranty.  In no event will the authors be held liable for any damages
@@ -19,14 +19,87 @@
  **/
  **/
 
 
 #include "Matrix.h"
 #include "Matrix.h"
+#include "common/config.h"
 
 
 // STD
 // STD
 #include <cstring> // memcpy
 #include <cstring> // memcpy
 #include <cmath>
 #include <cmath>
 
 
+#if defined(LOVE_SIMD_SSE)
+#include <xmmintrin.h>
+#endif
+
 namespace love
 namespace love
 {
 {
 
 
+//                 | e0 e4 e8  e12 |
+//                 | e1 e5 e9  e13 |
+//                 | e2 e6 e10 e14 |
+//                 | e3 e7 e11 e15 |
+// | e0 e4 e8  e12 |
+// | e1 e5 e9  e13 |
+// | e2 e6 e10 e14 |
+// | e3 e7 e11 e15 |
+
+void Matrix4::multiply(const Matrix4 &a, const Matrix4 &b, float t[16])
+{
+	// NOTE: in my testing with ARM NEON instructions (on an iPhone 6 with arm64)
+	// it performed slightly worse than the regular add/multiply code. Further
+	// investigation would be useful.
+#if defined(LOVE_SIMD_SSE)
+
+	// We can't guarantee 16-bit alignment (e.g. for heap-allocated Matrix4
+	// objects) so we use unaligned loads and stores.
+	__m128 col1 = _mm_loadu_ps(&a.e[0]);
+	__m128 col2 = _mm_loadu_ps(&a.e[4]);
+	__m128 col3 = _mm_loadu_ps(&a.e[8]);
+	__m128 col4 = _mm_loadu_ps(&a.e[12]);
+
+	for (int i = 0; i < 4; i++)
+	{
+		__m128 brod1 = _mm_set1_ps(b.e[4*i + 0]);
+		__m128 brod2 = _mm_set1_ps(b.e[4*i + 1]);
+		__m128 brod3 = _mm_set1_ps(b.e[4*i + 2]);
+		__m128 brod4 = _mm_set1_ps(b.e[4*i + 3]);
+
+		__m128 col = _mm_add_ps(
+			_mm_add_ps(_mm_mul_ps(brod1, col1), _mm_mul_ps(brod2, col2)),
+			_mm_add_ps(_mm_mul_ps(brod3, col3), _mm_mul_ps(brod4, col4))
+		);
+
+		_mm_storeu_ps(&t[4*i], col);
+	}
+
+#else
+
+	t[0]  = (a.e[0]*b.e[0])  + (a.e[4]*b.e[1])  + (a.e[8]*b.e[2])  + (a.e[12]*b.e[3]);
+	t[4]  = (a.e[0]*b.e[4])  + (a.e[4]*b.e[5])  + (a.e[8]*b.e[6])  + (a.e[12]*b.e[7]);
+	t[8]  = (a.e[0]*b.e[8])  + (a.e[4]*b.e[9])  + (a.e[8]*b.e[10]) + (a.e[12]*b.e[11]);
+	t[12] = (a.e[0]*b.e[12]) + (a.e[4]*b.e[13]) + (a.e[8]*b.e[14]) + (a.e[12]*b.e[15]);
+
+	t[1]  = (a.e[1]*b.e[0])  + (a.e[5]*b.e[1])  + (a.e[9]*b.e[2])  + (a.e[13]*b.e[3]);
+	t[5]  = (a.e[1]*b.e[4])  + (a.e[5]*b.e[5])  + (a.e[9]*b.e[6])  + (a.e[13]*b.e[7]);
+	t[9]  = (a.e[1]*b.e[8])  + (a.e[5]*b.e[9])  + (a.e[9]*b.e[10]) + (a.e[13]*b.e[11]);
+	t[13] = (a.e[1]*b.e[12]) + (a.e[5]*b.e[13]) + (a.e[9]*b.e[14]) + (a.e[13]*b.e[15]);
+
+	t[2]  = (a.e[2]*b.e[0])  + (a.e[6]*b.e[1])  + (a.e[10]*b.e[2])  + (a.e[14]*b.e[3]);
+	t[6]  = (a.e[2]*b.e[4])  + (a.e[6]*b.e[5])  + (a.e[10]*b.e[6])  + (a.e[14]*b.e[7]);
+	t[10] = (a.e[2]*b.e[8])  + (a.e[6]*b.e[9])  + (a.e[10]*b.e[10]) + (a.e[14]*b.e[11]);
+	t[14] = (a.e[2]*b.e[12]) + (a.e[6]*b.e[13]) + (a.e[10]*b.e[14]) + (a.e[14]*b.e[15]);
+
+	t[3]  = (a.e[3]*b.e[0])  + (a.e[7]*b.e[1])  + (a.e[11]*b.e[2])  + (a.e[15]*b.e[3]);
+	t[7]  = (a.e[3]*b.e[4])  + (a.e[7]*b.e[5])  + (a.e[11]*b.e[6])  + (a.e[15]*b.e[7]);
+	t[11] = (a.e[3]*b.e[8])  + (a.e[7]*b.e[9])  + (a.e[11]*b.e[10]) + (a.e[15]*b.e[11]);
+	t[15] = (a.e[3]*b.e[12]) + (a.e[7]*b.e[13]) + (a.e[11]*b.e[14]) + (a.e[15]*b.e[15]);
+
+#endif
+}
+
+void Matrix4::multiply(const Matrix4 &a, const Matrix4 &b, Matrix4 &t)
+{
+	multiply(a, b, t.e);
+}
+
 // | e0 e4 e8  e12 |
 // | e0 e4 e8  e12 |
 // | e1 e5 e9  e13 |
 // | e1 e5 e9  e13 |
 // | e2 e6 e10 e14 |
 // | e2 e6 e10 e14 |
@@ -36,61 +109,38 @@ Matrix4::Matrix4()
 {
 {
 	setIdentity();
 	setIdentity();
 }
 }
+
+
+Matrix4::Matrix4(const float elements[16])
+{
+	memcpy(e, elements, sizeof(float) * 16);
+}
 	
 	
 Matrix4::Matrix4(float t00, float t10, float t01, float t11, float x, float y)
 Matrix4::Matrix4(float t00, float t10, float t01, float t11, float x, float y)
 {
 {
 	setRawTransformation(t00, t10, t01, t11, x, y);
 	setRawTransformation(t00, t10, t01, t11, x, y);
 }
 }
 
 
-Matrix4::Matrix4(float x, float y, float angle, float sx, float sy, float ox, float oy, float kx, float ky)
+Matrix4::Matrix4(const Matrix4 &a, const Matrix4 &b)
 {
 {
-	setTransformation(x, y, angle, sx, sy, ox, oy, kx, ky);
+	multiply(a, b, e);
 }
 }
 
 
-Matrix4::~Matrix4()
+Matrix4::Matrix4(float x, float y, float angle, float sx, float sy, float ox, float oy, float kx, float ky)
 {
 {
+	setTransformation(x, y, angle, sx, sy, ox, oy, kx, ky);
 }
 }
 
 
-//                 | e0 e4 e8  e12 |
-//                 | e1 e5 e9  e13 |
-//                 | e2 e6 e10 e14 |
-//                 | e3 e7 e11 e15 |
-// | e0 e4 e8  e12 |
-// | e1 e5 e9  e13 |
-// | e2 e6 e10 e14 |
-// | e3 e7 e11 e15 |
-
 Matrix4 Matrix4::operator * (const Matrix4 &m) const
 Matrix4 Matrix4::operator * (const Matrix4 &m) const
 {
 {
-	Matrix4 t;
-
-	t.e[0] = (e[0]*m.e[0]) + (e[4]*m.e[1]) + (e[8]*m.e[2]) + (e[12]*m.e[3]);
-	t.e[4] = (e[0]*m.e[4]) + (e[4]*m.e[5]) + (e[8]*m.e[6]) + (e[12]*m.e[7]);
-	t.e[8] = (e[0]*m.e[8]) + (e[4]*m.e[9]) + (e[8]*m.e[10]) + (e[12]*m.e[11]);
-	t.e[12] = (e[0]*m.e[12]) + (e[4]*m.e[13]) + (e[8]*m.e[14]) + (e[12]*m.e[15]);
-
-	t.e[1] = (e[1]*m.e[0]) + (e[5]*m.e[1]) + (e[9]*m.e[2]) + (e[13]*m.e[3]);
-	t.e[5] = (e[1]*m.e[4]) + (e[5]*m.e[5]) + (e[9]*m.e[6]) + (e[13]*m.e[7]);
-	t.e[9] = (e[1]*m.e[8]) + (e[5]*m.e[9]) + (e[9]*m.e[10]) + (e[13]*m.e[11]);
-	t.e[13] = (e[1]*m.e[12]) + (e[5]*m.e[13]) + (e[9]*m.e[14]) + (e[13]*m.e[15]);
-
-	t.e[2] = (e[2]*m.e[0]) + (e[6]*m.e[1]) + (e[10]*m.e[2]) + (e[14]*m.e[3]);
-	t.e[6] = (e[2]*m.e[4]) + (e[6]*m.e[5]) + (e[10]*m.e[6]) + (e[14]*m.e[7]);
-	t.e[10] = (e[2]*m.e[8]) + (e[6]*m.e[9]) + (e[10]*m.e[10]) + (e[14]*m.e[11]);
-	t.e[14] = (e[2]*m.e[12]) + (e[6]*m.e[13]) + (e[10]*m.e[14]) + (e[14]*m.e[15]);
-
-	t.e[3] = (e[3]*m.e[0]) + (e[7]*m.e[1]) + (e[11]*m.e[2]) + (e[15]*m.e[3]);
-	t.e[7] = (e[3]*m.e[4]) + (e[7]*m.e[5]) + (e[11]*m.e[6]) + (e[15]*m.e[7]);
-	t.e[11] = (e[3]*m.e[8]) + (e[7]*m.e[9]) + (e[11]*m.e[10]) + (e[15]*m.e[11]);
-	t.e[15] = (e[3]*m.e[12]) + (e[7]*m.e[13]) + (e[11]*m.e[14]) + (e[15]*m.e[15]);
-
-	return t;
+	return Matrix4(*this, m);
 }
 }
 
 
 void Matrix4::operator *= (const Matrix4 &m)
 void Matrix4::operator *= (const Matrix4 &m)
 {
 {
-	Matrix4 t = (*this) * m;
-	memcpy(this->e, t.e, sizeof(float)*16);
+	float t[16];
+	multiply(*this, m, t);
+	memcpy(this->e, t, sizeof(float)*16);
 }
 }
 
 
 const float *Matrix4::getElements() const
 const float *Matrix4::getElements() const
@@ -101,7 +151,7 @@ const float *Matrix4::getElements() const
 void Matrix4::setIdentity()
 void Matrix4::setIdentity()
 {
 {
 	memset(e, 0, sizeof(float)*16);
 	memset(e, 0, sizeof(float)*16);
-	e[0] = e[5] = e[10] = e[15] = 1;
+	e[15] = e[10] = e[5] = e[0] = 1;
 }
 }
 
 
 void Matrix4::setTranslation(float x, float y)
 void Matrix4::setTranslation(float x, float y)
@@ -134,6 +184,12 @@ void Matrix4::setShear(float kx, float ky)
 	e[1] = ky;
 	e[1] = ky;
 	e[4] = kx;
 	e[4] = kx;
 }
 }
+
+void Matrix4::getApproximateScale(float &sx, float &sy) const
+{
+	sx = sqrtf(e[0] * e[0] + e[4] * e[4]);
+	sy = sqrtf(e[1] * e[1] + e[5] * e[5]);
+}
 	
 	
 void Matrix4::setRawTransformation(float t00, float t10, float t01, float t11, float x, float y)
 void Matrix4::setRawTransformation(float t00, float t10, float t01, float t11, float x, float y)
 {
 {
@@ -194,16 +250,149 @@ void Matrix4::shear(float kx, float ky)
 	this->operator *=(t);
 	this->operator *=(t);
 }
 }
 
 
-Matrix4 Matrix4::ortho(float left, float right, float bottom, float top)
+bool Matrix4::isAffine2DTransform() const
+{
+	return fabsf(e[2] + e[3] + e[6] + e[7] + e[8] + e[9] + e[11] + e[14]) < 0.00001f
+		&& fabsf(e[10] + e[15] - 2.0f) < 0.00001f;
+}
+
+Matrix4 Matrix4::inverse() const
+{
+	Matrix4 inv;
+
+	inv.e[0] = e[5]  * e[10] * e[15] -
+	           e[5]  * e[11] * e[14] -
+	           e[9]  * e[6]  * e[15] +
+	           e[9]  * e[7]  * e[14] +
+	           e[13] * e[6]  * e[11] -
+	           e[13] * e[7]  * e[10];
+
+	inv.e[4] = -e[4]  * e[10] * e[15] +
+	            e[4]  * e[11] * e[14] +
+	            e[8]  * e[6]  * e[15] -
+	            e[8]  * e[7]  * e[14] -
+	            e[12] * e[6]  * e[11] +
+	            e[12] * e[7]  * e[10];
+
+	inv.e[8] = e[4]  * e[9]  * e[15] -
+	           e[4]  * e[11] * e[13] -
+	           e[8]  * e[5]  * e[15] +
+	           e[8]  * e[7]  * e[13] +
+	           e[12] * e[5]  * e[11] -
+	           e[12] * e[7]  * e[9];
+
+	inv.e[12] = -e[4]  * e[9]  * e[14] +
+	             e[4]  * e[10] * e[13] +
+	             e[8]  * e[5]  * e[14] -
+	             e[8]  * e[6]  * e[13] -
+	             e[12] * e[5]  * e[10] +
+	             e[12] * e[6]  * e[9];
+
+	inv.e[1] = -e[1]  * e[10] * e[15] +
+	            e[1]  * e[11] * e[14] +
+	            e[9]  * e[2]  * e[15] -
+	            e[9]  * e[3]  * e[14] -
+	            e[13] * e[2]  * e[11] +
+	            e[13] * e[3]  * e[10];
+
+	inv.e[5] = e[0]  * e[10] * e[15] -
+	           e[0]  * e[11] * e[14] -
+	           e[8]  * e[2]  * e[15] +
+	           e[8]  * e[3]  * e[14] +
+	           e[12] * e[2]  * e[11] -
+	           e[12] * e[3]  * e[10];
+
+	inv.e[9] = -e[0]  * e[9]  * e[15] +
+	            e[0]  * e[11] * e[13] +
+	            e[8]  * e[1]  * e[15] -
+	            e[8]  * e[3]  * e[13] -
+	            e[12] * e[1]  * e[11] +
+	            e[12] * e[3]  * e[9];
+
+	inv.e[13] = e[0]  * e[9]  * e[14] -
+	            e[0]  * e[10] * e[13] -
+	            e[8]  * e[1]  * e[14] +
+	            e[8]  * e[2]  * e[13] +
+	            e[12] * e[1]  * e[10] -
+	            e[12] * e[2]  * e[9];
+
+	inv.e[2] = e[1]  * e[6] * e[15] -
+	           e[1]  * e[7] * e[14] -
+	           e[5]  * e[2] * e[15] +
+	           e[5]  * e[3] * e[14] +
+	           e[13] * e[2] * e[7] -
+	           e[13] * e[3] * e[6];
+
+	inv.e[6] = -e[0]  * e[6] * e[15] +
+	            e[0]  * e[7] * e[14] +
+	            e[4]  * e[2] * e[15] -
+	            e[4]  * e[3] * e[14] -
+	            e[12] * e[2] * e[7] +
+	            e[12] * e[3] * e[6];
+
+	inv.e[10] = e[0]  * e[5] * e[15] -
+	            e[0]  * e[7] * e[13] -
+	            e[4]  * e[1] * e[15] +
+	            e[4]  * e[3] * e[13] +
+	            e[12] * e[1] * e[7] -
+	            e[12] * e[3] * e[5];
+
+	inv.e[14] = -e[0]  * e[5] * e[14] +
+	             e[0]  * e[6] * e[13] +
+	             e[4]  * e[1] * e[14] -
+	             e[4]  * e[2] * e[13] -
+	             e[12] * e[1] * e[6] +
+	             e[12] * e[2] * e[5];
+
+	inv.e[3] = -e[1] * e[6] * e[11] +
+	            e[1] * e[7] * e[10] +
+	            e[5] * e[2] * e[11] -
+	            e[5] * e[3] * e[10] -
+	            e[9] * e[2] * e[7] +
+	            e[9] * e[3] * e[6];
+
+	inv.e[7] = e[0] * e[6] * e[11] -
+	           e[0] * e[7] * e[10] -
+	           e[4] * e[2] * e[11] +
+	           e[4] * e[3] * e[10] +
+	           e[8] * e[2] * e[7] -
+	           e[8] * e[3] * e[6];
+
+	inv.e[11] = -e[0] * e[5] * e[11] +
+	             e[0] * e[7] * e[9] +
+	             e[4] * e[1] * e[11] -
+	             e[4] * e[3] * e[9] -
+	             e[8] * e[1] * e[7] +
+	             e[8] * e[3] * e[5];
+
+	inv.e[15] = e[0] * e[5] * e[10] -
+	            e[0] * e[6] * e[9] -
+	            e[4] * e[1] * e[10] +
+	            e[4] * e[2] * e[9] +
+	            e[8] * e[1] * e[6] -
+	            e[8] * e[2] * e[5];
+
+	float det = e[0] * inv.e[0] + e[1] * inv.e[4] + e[2] * inv.e[8] + e[3] * inv.e[12];
+
+	float invdet = 1.0f / det;
+
+	for (int i = 0; i < 16; i++)
+		inv.e[i] *= invdet;
+
+	return inv;
+}
+
+Matrix4 Matrix4::ortho(float left, float right, float bottom, float top, float near, float far)
 {
 {
 	Matrix4 m;
 	Matrix4 m;
 
 
 	m.e[0] = 2.0f / (right - left);
 	m.e[0] = 2.0f / (right - left);
 	m.e[5] = 2.0f / (top - bottom);
 	m.e[5] = 2.0f / (top - bottom);
-	m.e[10] = -1.0;
+	m.e[10] = -2.0f / (far - near);
 
 
 	m.e[12] = -(right + left) / (right - left);
 	m.e[12] = -(right + left) / (right - left);
 	m.e[13] = -(top + bottom) / (top - bottom);
 	m.e[13] = -(top + bottom) / (top - bottom);
+	m.e[14] = -(far + near) / (far - near);
 
 
 	return m;
 	return m;
 }
 }

+ 103 - 22
love/src/jni/love/src/common/Matrix.h

@@ -1,5 +1,5 @@
 /**
 /**
- * Copyright (c) 2006-2016 LOVE Development Team
+ * Copyright (c) 2006-2018 LOVE Development Team
  *
  *
  * This software is provided 'as-is', without any express or implied
  * This software is provided 'as-is', without any express or implied
  * warranty.  In no event will the authors be held liable for any damages
  * warranty.  In no event will the authors be held liable for any damages
@@ -34,8 +34,14 @@ namespace love
  **/
  **/
 class Matrix4
 class Matrix4
 {
 {
+private:
+
+	static void multiply(const Matrix4 &a, const Matrix4 &b, float t[16]);
+
 public:
 public:
 
 
+	static void multiply(const Matrix4 &a, const Matrix4 &b, Matrix4 &result);
+
 	/**
 	/**
 	 * Creates a new identity matrix.
 	 * Creates a new identity matrix.
 	 **/
 	 **/
@@ -47,14 +53,21 @@ public:
 	Matrix4(float t00, float t10, float t01, float t11, float x, float y);
 	Matrix4(float t00, float t10, float t01, float t11, float x, float y);
 
 
 	/**
 	/**
-	 * Creates a new matrix set to a transformation.
+	 * Creates a new matrix from the specified elements. Be sure to pass
+	 * exactly 16 elements in!
 	 **/
 	 **/
-	Matrix4(float x, float y, float angle, float sx, float sy, float ox, float oy, float kx, float ky);
+	Matrix4(const float elements[16]);
 
 
 	/**
 	/**
-	 * Destructor.
+	 * Creates a new matrix from the result of multiplying the two specified
+	 * matrices.
 	 **/
 	 **/
-	~Matrix4();
+	Matrix4(const Matrix4 &a, const Matrix4 &b);
+
+	/**
+	 * Creates a new matrix set to a transformation.
+	 **/
+	Matrix4(float x, float y, float angle, float sx, float sy, float ox, float oy, float kx, float ky);
 
 
 	/**
 	/**
 	 * Multiplies this Matrix with another Matrix, changing neither.
 	 * Multiplies this Matrix with another Matrix, changing neither.
@@ -106,6 +119,12 @@ public:
 	 * @param ky Shear along y-axis.
 	 * @param ky Shear along y-axis.
 	 **/
 	 **/
 	void setShear(float kx, float ky);
 	void setShear(float kx, float ky);
+
+	/**
+	 * Calculates the scale factors for a 2D affine transform. The output values
+	 * are absolute (not signed).
+	 **/
+	void getApproximateScale(float &sx, float &sy) const;
 	
 	
 	/**
 	/**
 	 * Sets a transformation's values directly. Useful if you want to modify them inplace,
 	 * Sets a transformation's values directly. Useful if you want to modify them inplace,
@@ -166,21 +185,42 @@ public:
 	void shear(float kx, float ky);
 	void shear(float kx, float ky);
 
 
 	/**
 	/**
-	 * Transforms an array of vertices by this Matrix. The sources and
-	 * destination arrays may be the same.
-	 *
-	 * @param dst Storage for the transformed vertices.
-	 * @param src The source vertices.
-	 * @param size The number of vertices.
+	 * Transforms an array of 2-component vertices by this Matrix. The source
+	 * and destination arrays may be the same.
 	 **/
 	 **/
-	template <typename V>
-	void transform(V *dst, const V *src, int size) const;
+	template <typename Vdst, typename Vsrc>
+	void transformXY(Vdst *dst, const Vsrc *src, int size) const;
 
 
 	/**
 	/**
-	 * Creates a new orthographic projection matrix with depth in the range of
-	 * [-1, 1].
+	 * Transforms an array of 2-component vertices by this Matrix, and stores
+	 * them in an array of 3-component vertices.
 	 **/
 	 **/
-	static Matrix4 ortho(float left, float right, float bottom, float top);
+	template <typename Vdst, typename Vsrc>
+	void transformXY0(Vdst *dst, const Vsrc *src, int size) const;
+
+	/**
+	 * Transforms an array of 3-component vertices by this Matrix. The source
+	 * and destination arrays may be the same.
+	 **/
+	template <typename Vdst, typename Vsrc>
+	void transformXYZ(Vdst *dst, const Vsrc *src, int size) const;
+
+	/**
+	 * Gets whether this matrix is an affine 2D transform (if the only non-
+	 * identity elements are the upper-left 2x2 and 2 translation values in the
+	 * 4th column).
+	 **/
+	bool isAffine2DTransform() const;
+
+	/**
+	 * Computes and returns the inverse of the matrix.
+	 **/
+	Matrix4 inverse() const;
+
+	/**
+	 * Creates a new orthographic projection matrix.
+	 **/
+	static Matrix4 ortho(float left, float right, float bottom, float top, float near, float far);
 
 
 private:
 private:
 
 
@@ -249,8 +289,8 @@ public:
 	/**
 	/**
 	 * Transforms an array of vertices by this matrix.
 	 * Transforms an array of vertices by this matrix.
 	 **/
 	 **/
-	template <typename V>
-	void transform(V *dst, const V *src, int size) const;
+	template <typename Vdst, typename Vsrc>
+	void transformXY(Vdst *dst, const Vsrc *src, int size) const;
 
 
 private:
 private:
 
 
@@ -272,8 +312,8 @@ private:
 // | e2 e6 e10 e14 |
 // | e2 e6 e10 e14 |
 // | e3 e7 e11 e15 |
 // | e3 e7 e11 e15 |
 
 
-template <typename V>
-void Matrix4::transform(V *dst, const V *src, int size) const
+template <typename Vdst, typename Vsrc>
+void Matrix4::transformXY(Vdst *dst, const Vsrc *src, int size) const
 {
 {
 	for (int i = 0; i < size; i++)
 	for (int i = 0; i < size; i++)
 	{
 	{
@@ -286,14 +326,55 @@ void Matrix4::transform(V *dst, const V *src, int size) const
 	}
 	}
 }
 }
 
 
+template <typename Vdst, typename Vsrc>
+void Matrix4::transformXY0(Vdst *dst, const Vsrc *src, int size) const
+{
+	for (int i = 0; i < size; i++)
+	{
+		// Store in temp variables in case src = dst
+		float x = (e[0]*src[i].x) + (e[4]*src[i].y) + (0) + (e[12]);
+		float y = (e[1]*src[i].x) + (e[5]*src[i].y) + (0) + (e[13]);
+		float z = (e[2]*src[i].x) + (e[6]*src[i].y) + (0) + (e[14]);
+
+		dst[i].x = x;
+		dst[i].y = y;
+		dst[i].z = z;
+	}
+}
+
+//                 | x |
+//                 | y |
+//                 | z |
+//                 | 1 |
+// | e0 e4 e8  e12 |
+// | e1 e5 e9  e13 |
+// | e2 e6 e10 e14 |
+// | e3 e7 e11 e15 |
+
+template <typename Vdst, typename Vsrc>
+void Matrix4::transformXYZ(Vdst *dst, const Vsrc *src, int size) const
+{
+	for (int i = 0; i < size; i++)
+	{
+		// Store in temp variables in case src = dst
+		float x = (e[0]*src[i].x) + (e[4]*src[i].y) + (e[ 8]*src[i].z) + (e[12]);
+		float y = (e[1]*src[i].x) + (e[5]*src[i].y) + (e[ 9]*src[i].z) + (e[13]);
+		float z = (e[2]*src[i].x) + (e[6]*src[i].y) + (e[10]*src[i].z) + (e[14]);
+
+		dst[i].x = x;
+		dst[i].y = y;
+		dst[i].z = z;
+	}
+}
+
 //            | x |
 //            | x |
 //            | y |
 //            | y |
 //            | 1 |
 //            | 1 |
 // | e0 e3 e6 |
 // | e0 e3 e6 |
 // | e1 e4 e7 |
 // | e1 e4 e7 |
 // | e2 e5 e8 |
 // | e2 e5 e8 |
-template <typename V>
-void Matrix3::transform(V *dst, const V *src, int size) const
+template <typename Vdst, typename Vsrc>
+void Matrix3::transformXY(Vdst *dst, const Vsrc *src, int size) const
 {
 {
 	for (int i = 0; i < size; i++)
 	for (int i = 0; i < size; i++)
 	{
 	{

+ 1 - 1
love/src/jni/love/src/common/Memoizer.cpp

@@ -1,5 +1,5 @@
 /**
 /**
- * Copyright (c) 2006-2016 LOVE Development Team
+ * Copyright (c) 2006-2018 LOVE Development Team
  *
  *
  * This software is provided 'as-is', without any express or implied
  * This software is provided 'as-is', without any express or implied
  * warranty.  In no event will the authors be held liable for any damages
  * warranty.  In no event will the authors be held liable for any damages

+ 1 - 1
love/src/jni/love/src/common/Memoizer.h

@@ -1,5 +1,5 @@
 /**
 /**
- * Copyright (c) 2006-2016 LOVE Development Team
+ * Copyright (c) 2006-2018 LOVE Development Team
  *
  *
  * This software is provided 'as-is', without any express or implied
  * This software is provided 'as-is', without any express or implied
  * warranty.  In no event will the authors be held liable for any damages
  * warranty.  In no event will the authors be held liable for any damages

+ 10 - 1
love/src/jni/love/src/common/Module.cpp

@@ -1,5 +1,5 @@
 /**
 /**
- * Copyright (c) 2006-2016 LOVE Development Team
+ * Copyright (c) 2006-2018 LOVE Development Team
  *
  *
  * This software is provided 'as-is', without any express or implied
  * This software is provided 'as-is', without any express or implied
  * warranty.  In no event will the authors be held liable for any damages
  * warranty.  In no event will the authors be held liable for any damages
@@ -21,6 +21,7 @@
 // LOVE
 // LOVE
 #include "Module.h"
 #include "Module.h"
 #include "Exception.h"
 #include "Exception.h"
+#include "deprecation.h"
 
 
 // std
 // std
 #include <map>
 #include <map>
@@ -58,8 +59,14 @@ namespace
 namespace love
 namespace love
 {
 {
 
 
+love::Type Module::type("Module", &Object::type);
 Module *Module::instances[] = {};
 Module *Module::instances[] = {};
 
 
+Module::Module()
+{
+	initDeprecation();
+}
+
 Module::~Module()
 Module::~Module()
 {
 {
 	ModuleRegistry &registry = registryInstance();
 	ModuleRegistry &registry = registryInstance();
@@ -82,6 +89,8 @@ Module::~Module()
 	}
 	}
 
 
 	freeEmptyRegistry();
 	freeEmptyRegistry();
+
+	deinitDeprecation();
 }
 }
 
 
 void Module::registerInstance(Module *instance)
 void Module::registerInstance(Module *instance)

+ 6 - 2
love/src/jni/love/src/common/Module.h

@@ -1,5 +1,5 @@
 /**
 /**
- * Copyright (c) 2006-2016 LOVE Development Team
+ * Copyright (c) 2006-2018 LOVE Development Team
  *
  *
  * This software is provided 'as-is', without any express or implied
  * This software is provided 'as-is', without any express or implied
  * warranty.  In no event will the authors be held liable for any damages
  * warranty.  In no event will the authors be held liable for any damages
@@ -34,9 +34,12 @@ class Module : public Object
 {
 {
 public:
 public:
 
 
+	static love::Type type;
+
 	enum ModuleType
 	enum ModuleType
 	{
 	{
 		M_AUDIO,
 		M_AUDIO,
+		M_DATA,
 		M_EVENT,
 		M_EVENT,
 		M_FILESYSTEM,
 		M_FILESYSTEM,
 		M_FONT,
 		M_FONT,
@@ -52,11 +55,12 @@ public:
 		M_THREAD,
 		M_THREAD,
 		M_TIMER,
 		M_TIMER,
 		M_TOUCH,
 		M_TOUCH,
-		M_WINDOW,
 		M_VIDEO,
 		M_VIDEO,
+		M_WINDOW,
 		M_MAX_ENUM
 		M_MAX_ENUM
 	};
 	};
 
 
+	Module();
 	virtual ~Module();
 	virtual ~Module();
 
 
     /**
     /**

+ 3 - 1
love/src/jni/love/src/common/Object.cpp

@@ -1,5 +1,5 @@
 /**
 /**
- * Copyright (c) 2006-2016 LOVE Development Team
+ * Copyright (c) 2006-2018 LOVE Development Team
  *
  *
  * This software is provided 'as-is', without any express or implied
  * This software is provided 'as-is', without any express or implied
  * warranty.  In no event will the authors be held liable for any damages
  * warranty.  In no event will the authors be held liable for any damages
@@ -24,6 +24,8 @@
 namespace love
 namespace love
 {
 {
 
 
+love::Type Object::type("Object", nullptr);
+
 Object::Object()
 Object::Object()
 	: count(1)
 	: count(1)
 {
 {

+ 4 - 1
love/src/jni/love/src/common/Object.h

@@ -1,5 +1,5 @@
 /**
 /**
- * Copyright (c) 2006-2016 LOVE Development Team
+ * Copyright (c) 2006-2018 LOVE Development Team
  *
  *
  * This software is provided 'as-is', without any express or implied
  * This software is provided 'as-is', without any express or implied
  * warranty.  In no event will the authors be held liable for any damages
  * warranty.  In no event will the authors be held liable for any damages
@@ -22,6 +22,7 @@
 #define LOVE_OBJECT_H
 #define LOVE_OBJECT_H
 
 
 #include <atomic>
 #include <atomic>
+#include "types.h"
 
 
 namespace love
 namespace love
 {
 {
@@ -38,6 +39,8 @@ class Object
 {
 {
 public:
 public:
 
 
+	static love::Type type;
+
 	/**
 	/**
 	 * Constructor. Sets reference count to one.
 	 * Constructor. Sets reference count to one.
 	 **/
 	 **/

+ 55 - 0
love/src/jni/love/src/common/Optional.h

@@ -0,0 +1,55 @@
+/**
+ * Copyright (c) 2006-2018 LOVE Development Team
+ *
+ * This software is provided 'as-is', without any express or implied
+ * warranty.  In no event will the authors be held liable for any damages
+ * arising from the use of this software.
+ *
+ * Permission is granted to anyone to use this software for any purpose,
+ * including commercial applications, and to alter it and redistribute it
+ * freely, subject to the following restrictions:
+ *
+ * 1. The origin of this software must not be misrepresented; you must not
+ *    claim that you wrote the original software. If you use this software
+ *    in a product, an acknowledgment in the product documentation would be
+ *    appreciated but is not required.
+ * 2. Altered source versions must be plainly marked as such, and must not be
+ *    misrepresented as being the original software.
+ * 3. This notice may not be removed or altered from any source distribution.
+ **/
+
+#pragma once
+
+namespace love
+{
+
+// Currently only meant for simple and small types.
+template <typename T>
+struct Optional
+{
+	bool hasValue;
+	T value;
+
+	Optional()
+		: hasValue(false)
+		, value(T())
+	{}
+
+	Optional(T val)
+		: hasValue(true)
+		, value(val)
+	{}
+
+	void set(T val)
+	{
+		hasValue = true;
+		value = val;
+	}
+};
+
+typedef Optional<bool> OptionalBool;
+typedef Optional<float> OptionalFloat;
+typedef Optional<double> OptionalDouble;
+typedef Optional<int> OptionalInt;
+
+} // love

+ 2 - 2
love/src/jni/love/src/common/Reference.cpp

@@ -1,5 +1,5 @@
 /**
 /**
- * Copyright (c) 2006-2016 LOVE Development Team
+ * Copyright (c) 2006-2018 LOVE Development Team
  *
  *
  * This software is provided 'as-is', without any express or implied
  * This software is provided 'as-is', without any express or implied
  * warranty.  In no event will the authors be held liable for any damages
  * warranty.  In no event will the authors be held liable for any damages
@@ -45,7 +45,7 @@ Reference::~Reference()
 
 
 void Reference::ref(lua_State *L)
 void Reference::ref(lua_State *L)
 {
 {
-	unref(); // Just to be safe.
+	unref(); // Previously created reference needs to be cleared
 	pinnedL = luax_getpinnedthread(L);
 	pinnedL = luax_getpinnedthread(L);
 	luax_insist(L, LUA_REGISTRYINDEX, REFERENCE_TABLE_NAME);
 	luax_insist(L, LUA_REGISTRYINDEX, REFERENCE_TABLE_NAME);
 	lua_insert(L, -2); // Move reference table behind value.
 	lua_insert(L, -2); // Move reference table behind value.

+ 1 - 1
love/src/jni/love/src/common/Reference.h

@@ -1,5 +1,5 @@
 /**
 /**
- * Copyright (c) 2006-2016 LOVE Development Team
+ * Copyright (c) 2006-2018 LOVE Development Team
  *
  *
  * This software is provided 'as-is', without any express or implied
  * This software is provided 'as-is', without any express or implied
  * warranty.  In no event will the authors be held liable for any damages
  * warranty.  In no event will the authors be held liable for any damages

+ 29 - 0
love/src/jni/love/src/common/Stream.cpp

@@ -0,0 +1,29 @@
+/**
+ * Copyright (c) 2006-2015 LOVE Development Team
+ *
+ * This software is provided 'as-is', without any express or implied
+ * warranty.  In no event will the authors be held liable for any damages
+ * arising from the use of this software.
+ *
+ * Permission is granted to anyone to use this software for any purpose,
+ * including commercial applications, and to alter it and redistribute it
+ * freely, subject to the following restrictions:
+ *
+ * 1. The origin of this software must not be misrepresented; you must not
+ *    claim that you wrote the original software. If you use this software
+ *    in a product, an acknowledgment in the product documentation would be
+ *    appreciated but is not required.
+ * 2. Altered source versions must be plainly marked as such, and must not be
+ *    misrepresented as being the original software.
+ * 3. This notice may not be removed or altered from any source distribution.
+ **/
+
+// LOVE
+#include "Stream.h"
+
+namespace love
+{
+
+love::Type Stream::type("Stream", &Object::type);
+
+} // love

+ 2 - 0
love/src/jni/love/src/common/Stream.h

@@ -31,6 +31,8 @@ namespace love
 class Stream : public Object
 class Stream : public Object
 {
 {
 public:
 public:
+	static love::Type type;
+
 	virtual ~Stream() {}
 	virtual ~Stream() {}
 
 
 	// getData and getSize are assumed to talk about
 	// getData and getSize are assumed to talk about

+ 25 - 0
love/src/jni/love/src/common/StringMap.cpp

@@ -0,0 +1,25 @@
+/**
+ * Copyright (c) 2006-2018 LOVE Development Team
+ *
+ * This software is provided 'as-is', without any express or implied
+ * warranty.  In no event will the authors be held liable for any damages
+ * arising from the use of this software.
+ *
+ * Permission is granted to anyone to use this software for any purpose,
+ * including commercial applications, and to alter it and redistribute it
+ * freely, subject to the following restrictions:
+ *
+ * 1. The origin of this software must not be misrepresented; you must not
+ *    claim that you wrote the original software. If you use this software
+ *    in a product, an acknowledgment in the product documentation would be
+ *    appreciated but is not required.
+ * 2. Altered source versions must be plainly marked as such, and must not be
+ *    misrepresented as being the original software.
+ * 3. This notice may not be removed or altered from any source distribution.
+ **/
+
+#include "StringMap.h"
+
+// See the header
+template class std::vector<std::string>;
+template decltype(std::vector<std::string>().emplace_back("")) std::vector<std::string>::emplace_back<const char *const&>(const char *const&);

+ 22 - 1
love/src/jni/love/src/common/StringMap.h

@@ -1,5 +1,5 @@
 /**
 /**
- * Copyright (c) 2006-2016 LOVE Development Team
+ * Copyright (c) 2006-2018 LOVE Development Team
  *
  *
  * This software is provided 'as-is', without any express or implied
  * This software is provided 'as-is', without any express or implied
  * warranty.  In no event will the authors be held liable for any damages
  * warranty.  In no event will the authors be held liable for any damages
@@ -23,6 +23,15 @@
 
 
 #include "Exception.h"
 #include "Exception.h"
 
 
+#include <string>
+#include <vector>
+
+// As StringMap instantiates std::vector<std::string> for instances that use
+// getNames(), we end up with multiple copies in the object files. This
+// declaration means we only emit it once (in StringMap.cpp).
+extern template class std::vector<std::string>;
+extern template decltype(std::vector<std::string>().emplace_back("")) std::vector<std::string>::emplace_back<const char *const&>(const char *const&);
+
 namespace love
 namespace love
 {
 {
 
 
@@ -145,6 +154,18 @@ public:
 		return hash;
 		return hash;
 	}
 	}
 
 
+	std::vector<std::string> getNames() const
+	{
+		std::vector<std::string> names;
+		names.reserve(SIZE);
+
+		for (unsigned int i = 0; i < SIZE; ++i)
+			if (reverse[i] != nullptr)
+				names.emplace_back(reverse[i]);
+
+		return names;
+	}
+
 private:
 private:
 
 
 	struct Record
 	struct Record

+ 56 - 52
love/src/jni/love/src/common/Variant.cpp

@@ -1,5 +1,5 @@
 /**
 /**
- * Copyright (c) 2006-2016 LOVE Development Team
+ * Copyright (c) 2006-2018 LOVE Development Team
  *
  *
  * This software is provided 'as-is', without any express or implied
  * This software is provided 'as-is', without any express or implied
  * warranty.  In no event will the authors be held liable for any damages
  * warranty.  In no event will the authors be held liable for any damages
@@ -18,25 +18,27 @@
  * 3. This notice may not be removed or altered from any source distribution.
  * 3. This notice may not be removed or altered from any source distribution.
  **/
  **/
 
 
+#include <memory>
+
 #include "Variant.h"
 #include "Variant.h"
 #include "common/StringMap.h"
 #include "common/StringMap.h"
 
 
 namespace love
 namespace love
 {
 {
 
 
-static love::Type extractudatatype(lua_State *L, int idx)
+static Proxy *tryextractproxy(lua_State *L, int idx)
 {
 {
 	Proxy *u = (Proxy *)lua_touserdata(L, idx);
 	Proxy *u = (Proxy *)lua_touserdata(L, idx);
 
 
-	if (u == nullptr || u->type <= INVALID_ID || u->type >= TYPE_MAX_ENUM)
-		return INVALID_ID;
+	if (u == nullptr || u->type == nullptr)
+		return nullptr;
 
 
 	// We could get rid of the dynamic_cast for more performance, but it would
 	// We could get rid of the dynamic_cast for more performance, but it would
 	// be less safe...
 	// be less safe...
 	if (dynamic_cast<Object *>(u->object) != nullptr)
 	if (dynamic_cast<Object *>(u->object) != nullptr)
-		return u->type;
+		return u;
 
 
-	return INVALID_ID;
+	return nullptr;
 }
 }
 
 
 Variant::Variant()
 Variant::Variant()
@@ -71,24 +73,20 @@ Variant::Variant(const char *string, size_t len)
 	}
 	}
 }
 }
 
 
-Variant::Variant(void *userdata)
+Variant::Variant(void *lightuserdata)
 	: type(LUSERDATA)
 	: type(LUSERDATA)
 {
 {
-	data.userdata = userdata;
+	data.userdata = lightuserdata;
 }
 }
 
 
-Variant::Variant(love::Type udatatype, void *userdata)
-	: type(FUSERDATA)
-	, udatatype(udatatype)
+Variant::Variant(love::Type *lovetype, love::Object *object)
+	: type(LOVEOBJECT)
 {
 {
-	if (udatatype != INVALID_ID)
-	{
-		Proxy *p = (Proxy *) userdata;
-		data.userdata = p->object;
-		p->object->retain();
-	}
-	else
-		data.userdata = userdata;
+	data.objectproxy.type = lovetype;
+	data.objectproxy.object = object;
+
+	if (data.objectproxy.object != nullptr)
+		data.objectproxy.object->retain();
 }
 }
 
 
 // Variant gets ownership of the vector.
 // Variant gets ownership of the vector.
@@ -100,20 +98,18 @@ Variant::Variant(std::vector<std::pair<Variant, Variant>> *table)
 
 
 Variant::Variant(const Variant &v)
 Variant::Variant(const Variant &v)
 	: type(v.type)
 	: type(v.type)
-	, udatatype(v.udatatype)
 	, data(v.data)
 	, data(v.data)
 {
 {
 	if (type == STRING)
 	if (type == STRING)
 		data.string->retain();
 		data.string->retain();
-	else if (type == FUSERDATA)
-		((love::Object *) data.userdata)->retain();
+	else if (type == LOVEOBJECT && data.objectproxy.object != nullptr)
+		data.objectproxy.object->retain();
 	else if (type == TABLE)
 	else if (type == TABLE)
 		data.table->retain();
 		data.table->retain();
 }
 }
 
 
 Variant::Variant(Variant &&v)
 Variant::Variant(Variant &&v)
 	: type(std::move(v.type))
 	: type(std::move(v.type))
-	, udatatype(std::move(v.udatatype))
 	, data(std::move(v.data))
 	, data(std::move(v.data))
 {
 {
 	v.type = NIL;
 	v.type = NIL;
@@ -121,49 +117,41 @@ Variant::Variant(Variant &&v)
 
 
 Variant::~Variant()
 Variant::~Variant()
 {
 {
-	switch (type)
-	{
-	case STRING:
+	if (type == STRING)
 		data.string->release();
 		data.string->release();
-		break;
-	case FUSERDATA:
-		((love::Object *) data.userdata)->release();
-		break;
-	case TABLE:
+	else if (type == LOVEOBJECT && data.objectproxy.object != nullptr)
+		data.objectproxy.object->release();
+	else if (type == TABLE)
 		data.table->release();
 		data.table->release();
-		break;
-	default:
-		break;
-	}
 }
 }
 
 
 Variant &Variant::operator = (const Variant &v)
 Variant &Variant::operator = (const Variant &v)
 {
 {
 	if (v.type == STRING)
 	if (v.type == STRING)
 		v.data.string->retain();
 		v.data.string->retain();
-	else if (v.type == FUSERDATA)
-		((love::Object *) v.data.userdata)->retain();
+	else if (v.type == LOVEOBJECT && v.data.objectproxy.object != nullptr)
+		v.data.objectproxy.object->retain();
 	else if (v.type == TABLE)
 	else if (v.type == TABLE)
 		v.data.table->retain();
 		v.data.table->retain();
 
 
 	if (type == STRING)
 	if (type == STRING)
 		data.string->release();
 		data.string->release();
-	else if (type == FUSERDATA)
-		((love::Object *) v.data.userdata)->release();
+	else if (type == LOVEOBJECT && data.objectproxy.object != nullptr)
+		data.objectproxy.object->release();
 	else if (type == TABLE)
 	else if (type == TABLE)
 		data.table->release();
 		data.table->release();
 
 
 	type = v.type;
 	type = v.type;
 	data = v.data;
 	data = v.data;
-	udatatype = v.udatatype;
 
 
 	return *this;
 	return *this;
 }
 }
 
 
-Variant Variant::fromLua(lua_State *L, int n, bool allowTables)
+Variant Variant::fromLua(lua_State *L, int n, std::set<const void*> *tableSet)
 {
 {
 	size_t len;
 	size_t len;
 	const char *str;
 	const char *str;
+	Proxy *p = nullptr;
 
 
 	if (n < 0) // Fix the stack position, we might modify it later
 	if (n < 0) // Fix the stack position, we might modify it later
 		n += lua_gettop(L) + 1;
 		n += lua_gettop(L) + 1;
@@ -180,15 +168,34 @@ Variant Variant::fromLua(lua_State *L, int n, bool allowTables)
 	case LUA_TLIGHTUSERDATA:
 	case LUA_TLIGHTUSERDATA:
 		return Variant(lua_touserdata(L, n));
 		return Variant(lua_touserdata(L, n));
 	case LUA_TUSERDATA:
 	case LUA_TUSERDATA:
-		return Variant(extractudatatype(L, n), lua_touserdata(L, n));
+		p = tryextractproxy(L, n);
+		if (p != nullptr)
+			return Variant(p->type, p->object);
+		else
+		{
+			luax_typerror(L, n, "love type");
+			return Variant();
+		}
 	case LUA_TNIL:
 	case LUA_TNIL:
 		return Variant();
 		return Variant();
 	case LUA_TTABLE:
 	case LUA_TTABLE:
-		if (allowTables)
 		{
 		{
 			bool success = true;
 			bool success = true;
+			std::unique_ptr<std::set<const void*>> tableSetPtr;
 			std::vector<std::pair<Variant, Variant>> *table = new std::vector<std::pair<Variant, Variant>>();
 			std::vector<std::pair<Variant, Variant>> *table = new std::vector<std::pair<Variant, Variant>>();
 
 
+			// If we had no tables argument, allocate one now, and store it in our unique_ptr
+			if (tableSet == nullptr)
+				tableSetPtr.reset(tableSet = new std::set<const void*>);
+
+			// Now make sure this table wasn't already serialised
+			const void *tablePointer = lua_topointer(L, n);
+			{
+				auto result = tableSet->insert(tablePointer);
+				if (!result.second) // insertion failed
+					throw love::Exception("Cycle detected in table");
+			}
+
 			size_t len = luax_objlen(L, -1);
 			size_t len = luax_objlen(L, -1);
 			if (len > 0)
 			if (len > 0)
 				table->reserve(len);
 				table->reserve(len);
@@ -197,7 +204,7 @@ Variant Variant::fromLua(lua_State *L, int n, bool allowTables)
 
 
 			while (lua_next(L, n))
 			while (lua_next(L, n))
 			{
 			{
-				table->emplace_back(fromLua(L, -2), fromLua(L, -1));
+				table->emplace_back(fromLua(L, -2, tableSet), fromLua(L, -1, tableSet));
 				lua_pop(L, 1);
 				lua_pop(L, 1);
 
 
 				const auto &p = table->back();
 				const auto &p = table->back();
@@ -208,6 +215,9 @@ Variant Variant::fromLua(lua_State *L, int n, bool allowTables)
 				}
 				}
 			}
 			}
 
 
+			// And remove the table from the set again
+			tableSet->erase(tablePointer);
+
 			if (success)
 			if (success)
 				return Variant(table);
 				return Variant(table);
 			else
 			else
@@ -240,14 +250,8 @@ void Variant::toLua(lua_State *L) const
 	case LUSERDATA:
 	case LUSERDATA:
 		lua_pushlightuserdata(L, data.userdata);
 		lua_pushlightuserdata(L, data.userdata);
 		break;
 		break;
-	case FUSERDATA:
-		if (udatatype != INVALID_ID)
-			luax_pushtype(L, udatatype, (love::Object *) data.userdata);
-		else
-			lua_pushlightuserdata(L, data.userdata);
-		// I know this is not the same
-		// sadly, however, it's the most
-		// I can do (at the moment).
+	case LOVEOBJECT:
+		luax_pushtype(L, *data.objectproxy.type, data.objectproxy.object);
 		break;
 		break;
 	case TABLE:
 	case TABLE:
 	{
 	{

+ 7 - 6
love/src/jni/love/src/common/Variant.h

@@ -1,5 +1,5 @@
 /**
 /**
- * Copyright (c) 2006-2016 LOVE Development Team
+ * Copyright (c) 2006-2018 LOVE Development Team
  *
  *
  * This software is provided 'as-is', without any express or implied
  * This software is provided 'as-is', without any express or implied
  * warranty.  In no event will the authors be held liable for any damages
  * warranty.  In no event will the authors be held liable for any damages
@@ -27,6 +27,7 @@
 
 
 #include <cstring>
 #include <cstring>
 #include <vector>
 #include <vector>
+#include <set>
 
 
 namespace love
 namespace love
 {
 {
@@ -43,7 +44,7 @@ public:
 		STRING,
 		STRING,
 		SMALLSTRING,
 		SMALLSTRING,
 		LUSERDATA,
 		LUSERDATA,
-		FUSERDATA,
+		LOVEOBJECT,
 		NIL,
 		NIL,
 		TABLE
 		TABLE
 	};
 	};
@@ -52,8 +53,8 @@ public:
 	Variant(bool boolean);
 	Variant(bool boolean);
 	Variant(double number);
 	Variant(double number);
 	Variant(const char *string, size_t len);
 	Variant(const char *string, size_t len);
-	Variant(void *userdata);
-	Variant(love::Type udatatype, void *userdata);
+	Variant(void *lightuserdata);
+	Variant(love::Type *type, love::Object *object);
 	Variant(std::vector<std::pair<Variant, Variant>> *table);
 	Variant(std::vector<std::pair<Variant, Variant>> *table);
 	Variant(const Variant &v);
 	Variant(const Variant &v);
 	Variant(Variant &&v);
 	Variant(Variant &&v);
@@ -63,7 +64,7 @@ public:
 
 
 	Type getType() const { return type; }
 	Type getType() const { return type; }
 
 
-	static Variant fromLua(lua_State *L, int n, bool allowTables = true);
+	static Variant fromLua(lua_State *L, int n, std::set<const void*> *tableSet = nullptr);
 	void toLua(lua_State *L) const;
 	void toLua(lua_State *L) const;
 
 
 private:
 private:
@@ -101,7 +102,6 @@ private:
 	static const int MAX_SMALL_STRING_LENGTH = 15;
 	static const int MAX_SMALL_STRING_LENGTH = 15;
 
 
 	Type type;
 	Type type;
-	love::Type udatatype;
 
 
 	union Data
 	union Data
 	{
 	{
@@ -109,6 +109,7 @@ private:
 		double number;
 		double number;
 		SharedString *string;
 		SharedString *string;
 		void *userdata;
 		void *userdata;
+		Proxy objectproxy;
 		SharedTable *table;
 		SharedTable *table;
 		struct
 		struct
 		{
 		{

+ 1 - 1
love/src/jni/love/src/common/Vector.cpp

@@ -1,5 +1,5 @@
 /**
 /**
- * Copyright (c) 2006-2016 LOVE Development Team
+ * Copyright (c) 2006-2018 LOVE Development Team
  *
  *
  * This software is provided 'as-is', without any express or implied
  * This software is provided 'as-is', without any express or implied
  * warranty.  In no event will the authors be held liable for any damages
  * warranty.  In no event will the authors be held liable for any damages

+ 216 - 131
love/src/jni/love/src/common/Vector.h

@@ -1,5 +1,5 @@
 /**
 /**
- * Copyright (c) 2006-2016 LOVE Development Team
+ * Copyright (c) 2006-2018 LOVE Development Team
  *
  *
  * This software is provided 'as-is', without any express or implied
  * This software is provided 'as-is', without any express or implied
  * warranty.  In no event will the authors be held liable for any damages
  * warranty.  In no event will the authors be held liable for any damages
@@ -24,45 +24,30 @@
 // STD
 // STD
 #include <cmath>
 #include <cmath>
 
 
-// LOVE
-#include "Matrix.h"
-
 namespace love
 namespace love
 {
 {
 
 
-/**
- * 2D Vector class.
- *
- * @author Anders Ruud
- * @date 2006-05-13
- **/
-class Vector
+struct Vector2
 {
 {
-public:
-
-	// The components.
 	float x, y;
 	float x, y;
 
 
-	/**
-	 * Creates a new (1,1) Vector.
-	 **/
-	Vector();
+	Vector2()
+		: x(0.0f), y(0.0f)
+	{}
 
 
-	/**
-	 * Creates a new Vector.
-	 * @param x The x position/dimension.
-	 * @param y The y position/dimension.
-	 **/
-	Vector(float x, float y);
+	Vector2(float x, float y)
+		: x(x), y(y)
+	{}
+
+	Vector2(const Vector2 &v)
+		: x(v.x), y(v.y)
+	{}
 
 
 	/**
 	/**
 	 * Gets the length of the Vector.
 	 * Gets the length of the Vector.
-	 * @return The length of the Vector.
-	 *
-	 * This method requires sqrtf() and should be used
-	 * carefully.
 	 **/
 	 **/
 	float getLength() const;
 	float getLength() const;
+	float getLengthSquare() const;
 
 
 	/**
 	/**
 	 * Normalizes the Vector.
 	 * Normalizes the Vector.
@@ -76,7 +61,7 @@ public:
 	 * To get the true (normalized) normal, use v.getNormal(1.0f / v.getLength())
 	 * To get the true (normalized) normal, use v.getNormal(1.0f / v.getLength())
 	 * @return A normal to the Vector.
 	 * @return A normal to the Vector.
 	 **/
 	 **/
-	Vector getNormal() const;
+	Vector2 getNormal() const;
 
 
 	/**
 	/**
 	 * Gets a vector perpendicular to the Vector.
 	 * Gets a vector perpendicular to the Vector.
@@ -84,125 +69,177 @@ public:
 	 * @param scale factor to apply.
 	 * @param scale factor to apply.
 	 * @return A normal to the Vector.
 	 * @return A normal to the Vector.
 	 **/
 	 **/
-	Vector getNormal(float scale) const;
+	Vector2 getNormal(float scale) const;
+
+	static inline float dot(const Vector2 &a, const Vector2 &b);
+	static inline float cross(const Vector2 &a, const Vector2 &b);
 
 
 	/**
 	/**
 	 * Adds a Vector to this Vector.
 	 * Adds a Vector to this Vector.
-	 * @param v The Vector we want to add to this Vector.
-	 * @return The resulting Vector.
 	 **/
 	 **/
-	Vector operator + (const Vector &v) const;
+	Vector2 operator + (const Vector2 &v) const;
 
 
 	/**
 	/**
-	 * Substracts a Vector to this Vector.
-	 * @param v The Vector we want to subtract to this Vector.
-	 * @return The resulting Vector.
+	 * Substracts a Vector from this Vector.
 	 **/
 	 **/
-	Vector operator - (const Vector &v) const;
+	Vector2 operator - (const Vector2 &v) const;
 
 
 	/**
 	/**
-	 * Resizes a Vector by a scalar.
-	 * @param s The scalar with which to resize the Vector.
-	 * @return The resulting Vector.
+	 * Component-wise multiplies the Vector by a scalar.
 	 **/
 	 **/
-	Vector operator * (float s) const;
+	Vector2 operator * (float s) const;
 
 
 	/**
 	/**
-	 * Resizes a Vector by a scalar.
-	 * @param s The scalar with which to resize the Vector.
-	 * @return The resulting Vector.
+	 * Component-wise divides the Vector by a scalar.
 	 **/
 	 **/
-	Vector operator / (float s) const;
+	Vector2 operator / (float s) const;
 
 
 	/**
 	/**
-	 * Reverses the Vector.
-	 * @return The reversed Vector.
+	 * Component-wise negates the Vector.
 	 **/
 	 **/
-	Vector operator - () const;
+	Vector2 operator - () const;
 
 
 	/**
 	/**
 	 * Adds a Vector to this Vector, and also saves changes in the first Vector.
 	 * Adds a Vector to this Vector, and also saves changes in the first Vector.
-	 * @param v The Vector we want to add to this Vector.
 	 **/
 	 **/
-	void operator += (const Vector &v);
+	void operator += (const Vector2 &v);
 
 
 	/**
 	/**
 	 * Subtracts a Vector to this Vector, and also saves changes in the first Vector.
 	 * Subtracts a Vector to this Vector, and also saves changes in the first Vector.
-	 * @param v The Vector we want to subtract to this Vector.
 	 **/
 	 **/
-	void operator -= (const Vector &v);
+	void operator -= (const Vector2 &v);
 
 
 	/**
 	/**
 	 * Resizes the Vector, and also saves changes in the first Vector.
 	 * Resizes the Vector, and also saves changes in the first Vector.
-	 * @param s The scalar by which we want to resize the Vector.
 	 **/
 	 **/
 	void operator *= (float s);
 	void operator *= (float s);
 
 
 	/**
 	/**
 	 * Resizes the Vector, and also saves changes in the first Vector.
 	 * Resizes the Vector, and also saves changes in the first Vector.
-	 * @param s The scalar by which we want to resize the Vector.
 	 **/
 	 **/
 	void operator /= (float s);
 	void operator /= (float s);
 
 
+	bool operator == (const Vector2 &v) const;
+	bool operator != (const Vector2 &v) const;
+
+}; // Vector2
+
+
+struct Vector3
+{
+	float x, y, z;
+
+	Vector3()
+		: x(0.0f), y(0.0f), z(0.0f)
+	{}
+
+	Vector3(float x, float y, float z)
+		: x(x), y(y), z(z)
+	{}
+
+	Vector3(const Vector2 &v)
+		: x(v.x), y(v.y), z(0.0f)
+	{}
+
+	/**
+	 * Gets the length of the Vector.
+	 **/
+	float getLength() const;
+	float getLengthSquare() const;
+
 	/**
 	/**
-	 * Calculates the dot product of two Vectors.
-	 * @return The dot product of the two Vectors.
+	 * Normalizes the Vector.
+	 * @param length Desired length of the vector.
+	 * @return The old length of the Vector.
+	 **/
+	float normalize(float length = 1.0);
+
+	static inline float dot(const Vector3 &a, const Vector3 &b);
+	static inline Vector3 cross(const Vector3 &a, const Vector3 &b);
+
+	/**
+	 * Adds a Vector to this Vector.
+	 **/
+	Vector3 operator + (const Vector3 &v) const;
+
+	/**
+	 * Substracts a Vector from this Vector.
 	 **/
 	 **/
-	float operator * (const Vector &v) const;
+	Vector3 operator - (const Vector3 &v) const;
 
 
 	/**
 	/**
-	 * Calculates the cross product of two Vectors.
-	 * @return The cross product of the two Vectors.
+	 * Component-wise multiplies the Vector by a scalar.
 	 **/
 	 **/
-	float operator ^ (const Vector &v) const;
+	Vector3 operator * (float s) const;
 
 
-	bool operator == (const Vector &v) const;
+	/**
+	 * Component-wise divides the Vector by a scalar.
+	 **/
+	Vector3 operator / (float s) const;
+
+	/**
+	 * Component-wise negates the Vector.
+	 **/
+	Vector3 operator - () const;
 
 
-	bool operator < (const Vector &v) const;
 	/**
 	/**
-	 * Gets the x value of the Vector.
-	 * @return The x value of the Vector.
+	 * Adds a Vector to this Vector, and also saves changes in the first Vector.
 	 **/
 	 **/
-	float getX() const;
+	void operator += (const Vector3 &v);
 
 
 	/**
 	/**
-	 * Gets the x value of the Vector.
-	 * @return The x value of the Vector.
+	 * Subtracts a Vector to this Vector, and also saves changes in the first Vector.
 	 **/
 	 **/
-	float getY() const;
+	void operator -= (const Vector3 &v);
 
 
 	/**
 	/**
-	 * Sets the x value of the Vector.
-	 * @param x The x value of the Vector.
+	 * Resizes the Vector, and also saves changes in the first Vector.
 	 **/
 	 **/
-	void setX(float x);
+	void operator *= (float s);
 
 
 	/**
 	/**
-	 * Sets the x value of the Vector.
-	 * @param y The x value of the Vector.
+	 * Resizes the Vector, and also saves changes in the first Vector.
 	 **/
 	 **/
-	void setY(float y);
+	void operator /= (float s);
+
+	bool operator == (const Vector3 &v) const;
+	bool operator != (const Vector3 &v) const;
 
 
-};
+}; // Vector3
 
 
-inline float Vector::getLength() const
+
+inline float Vector2::getLength() const
 {
 {
 	return sqrtf(x*x + y*y);
 	return sqrtf(x*x + y*y);
 }
 }
 
 
-inline Vector Vector::getNormal() const
+inline float Vector2::getLengthSquare() const
+{
+	return x*x + y*y;
+}
+
+inline Vector2 Vector2::getNormal() const
+{
+	return Vector2(-y, x);
+}
+
+inline Vector2 Vector2::getNormal(float scale) const
 {
 {
-	return Vector(-y, x);
+	return Vector2(-y * scale, x * scale);
 }
 }
 
 
-inline Vector Vector::getNormal(float scale) const
+inline float Vector2::dot(const Vector2 &a, const Vector2 &b)
 {
 {
-	return Vector(-y * scale, x * scale);
+	return a.x * b.x + a.y * b.y;
 }
 }
 
 
-inline float Vector::normalize(float length)
+inline float Vector2::cross(const Vector2 &a, const Vector2 &b)
 {
 {
+	return a.x * b.y - a.y * b.x;
+}
 
 
+inline float Vector2::normalize(float length)
+{
 	float length_current = getLength();
 	float length_current = getLength();
 
 
 	if (length_current > 0)
 	if (length_current > 0)
@@ -211,113 +248,161 @@ inline float Vector::normalize(float length)
 	return length_current;
 	return length_current;
 }
 }
 
 
-/**
- * Inline methods must have body in header.
- **/
+inline Vector2 Vector2::operator + (const Vector2 &v) const
+{
+	return Vector2(x + v.x, y + v.y);
+}
 
 
-inline Vector::Vector()
-	: x(0.0f)
-	, y(0.0f)
+inline Vector2 Vector2::operator - (const Vector2 &v) const
 {
 {
+	return Vector2(x - v.x, y - v.y);
 }
 }
 
 
-inline Vector::Vector(float x, float y)
-	: x(x)
-	, y(y)
+inline Vector2 Vector2::operator * (float s) const
 {
 {
+	return Vector2(x*s, y*s);
 }
 }
 
 
-inline Vector Vector::operator + (const Vector &v) const
+inline Vector2 Vector2::operator / (float s) const
 {
 {
-	return Vector(x + v.x, y + v.y);
+	float invs = 1.0f / s;
+	return Vector2(x*invs, y*invs);
 }
 }
 
 
-inline Vector Vector::operator - (const Vector &v) const
+inline Vector2 Vector2::operator - () const
 {
 {
-	return Vector(x - v.getX(), y - v.getY());
+	return Vector2(-x, -y);
 }
 }
 
 
-inline Vector Vector::operator * (float s) const
+inline void Vector2::operator += (const Vector2 &v)
 {
 {
-	return Vector(x*s, y*s);
+	x += v.x;
+	y += v.y;
 }
 }
 
 
-inline Vector Vector::operator / (float s) const
+inline void Vector2::operator -= (const Vector2 &v)
 {
 {
-	return Vector(x/s, y/s);
+	x -= v.x;
+	y -= v.y;
 }
 }
 
 
-inline Vector Vector::operator - () const
+inline void Vector2::operator *= (float s)
 {
 {
-	return Vector(-x, -y);
+	x *= s;
+	y *= s;
 }
 }
 
 
-inline void Vector::operator += (const Vector &v)
+inline void Vector2::operator /= (float s)
 {
 {
-	x += v.getX();
-	y += v.getY();
+	float invs = 1.0f / s;
+	x *= invs;
+	y *= invs;
 }
 }
 
 
-inline void Vector::operator -= (const Vector &v)
+inline bool Vector2::operator == (const Vector2 &v) const
 {
 {
-	x -= v.getX();
-	y -= v.getY();
+	return x == v.x && y == v.y;
 }
 }
 
 
-inline void Vector::operator *= (float s)
+inline bool Vector2::operator != (const Vector2 &v) const
 {
 {
-	x *= s;
-	y *= s;
+	return x != v.x || y != v.y;
+}
+
+
+inline float Vector3::getLength() const
+{
+	return sqrtf(x*x + y*y + z*z);
+}
+
+inline float Vector3::getLengthSquare() const
+{
+	return x*x + y*y + z*z;
 }
 }
 
 
-inline void Vector::operator /= (float s)
+inline float Vector3::dot(const Vector3 &a, const Vector3 &b)
 {
 {
-	x /= s;
-	y /= s;
+	return a.x * b.x + a.y * b.y + a.z * b.z;
 }
 }
 
 
-inline float Vector::operator * (const Vector &v) const
+inline Vector3 Vector3::cross(const Vector3 &a, const Vector3 &b)
 {
 {
-	return x * v.getX() + y * v.getY();
+	return Vector3(a.y*b.z - a.z*b.y, a.z*b.x - a.x*b.z, a.x*b.y - a.y*b.x);
 }
 }
 
 
-inline float Vector::operator ^ (const Vector &v) const
+inline float Vector3::normalize(float length)
 {
 {
-	return x * v.getY() - y * v.getX();
+	float length_current = getLength();
+
+	if (length_current > 0)
+		(*this) *= length / length_current;
+
+	return length_current;
 }
 }
 
 
-inline bool Vector::operator == (const Vector &v) const
+inline Vector3 Vector3::operator + (const Vector3 &v) const
 {
 {
-	return getLength() == v.getLength();
+	return Vector3(x + v.x, y + v.y, z + v.z);
 }
 }
 
 
-inline bool Vector::operator < (const Vector &v) const
+inline Vector3 Vector3::operator - (const Vector3 &v) const
 {
 {
-	return getLength() < v.getLength();
+	return Vector3(x - v.x, y - v.y, z - v.z);
 }
 }
 
 
-/**
- * Accessor methods
- **/
+inline Vector3 Vector3::operator * (float s) const
+{
+	return Vector3(x*s, y*s, z*s);
+}
+
+inline Vector3 Vector3::operator / (float s) const
+{
+	float invs = 1.0f / s;
+	return Vector3(x*invs, y*invs, z*invs);
+}
+
+inline Vector3 Vector3::operator - () const
+{
+	return Vector3(-x, -y, -z);
+}
+
+inline void Vector3::operator += (const Vector3 &v)
+{
+	x += v.x;
+	y += v.y;
+	z += v.z;
+}
+
+inline void Vector3::operator -= (const Vector3 &v)
+{
+	x -= v.x;
+	y -= v.y;
+	z -= v.z;
+}
 
 
-inline float Vector::getX() const
+inline void Vector3::operator *= (float s)
 {
 {
-	return x;
+	x *= s;
+	y *= s;
+	z *= s;
 }
 }
 
 
-inline float Vector::getY() const
+inline void Vector3::operator /= (float s)
 {
 {
-	return y;
+	float invs = 1.0f / s;
+	x *= invs;
+	y *= invs;
+	z *= invs;
 }
 }
 
 
-inline void Vector::setX(float x)
+inline bool Vector3::operator == (const Vector3 &v) const
 {
 {
-	this->x = x;
+	return x == v.x && y == v.y && z == v.z;
 }
 }
 
 
-inline void Vector::setY(float y)
+inline bool Vector3::operator != (const Vector3 &v) const
 {
 {
-	this->y = y;
+	return x != v.x || y != v.y || z != v.z;
 }
 }
 
 
 } //love
 } //love

+ 17 - 1
love/src/jni/love/src/common/android.cpp

@@ -1,5 +1,5 @@
 /**
 /**
- * Copyright (c) 2006-2016 LOVE Development Team
+ * Copyright (c) 2006-2018 LOVE Development Team
  *
  *
  * This software is provided 'as-is', without any express or implied
  * This software is provided 'as-is', without any express or implied
  * warranty.  In no event will the authors be held liable for any damages
  * warranty.  In no event will the authors be held liable for any damages
@@ -225,6 +225,22 @@ bool createStorageDirectories()
 	return true;
 	return true;
 }
 }
 
 
+bool hasBackgroundMusic()
+{
+	JNIEnv *env = (JNIEnv*) SDL_AndroidGetJNIEnv();
+	jobject activity = (jobject) SDL_AndroidGetActivity();
+
+	jclass clazz(env->GetObjectClass(activity));
+	jmethodID method_id = env->GetMethodID(clazz, "hasBackgroundMusic", "()Z");
+
+	jboolean result = env->CallBooleanMethod(activity, method_id);
+
+	env->DeleteLocalRef(activity);
+	env->DeleteLocalRef(clazz);
+
+	return result;
+}
+
 } // android
 } // android
 } // love
 } // love
 
 

+ 3 - 1
love/src/jni/love/src/common/android.h

@@ -1,5 +1,5 @@
 /**
 /**
- * Copyright (c) 2006-2016 LOVE Development Team
+ * Copyright (c) 2006-2018 LOVE Development Team
  *
  *
  * This software is provided 'as-is', without any express or implied
  * This software is provided 'as-is', without any express or implied
  * warranty.  In no event will the authors be held liable for any damages
  * warranty.  In no event will the authors be held liable for any damages
@@ -66,6 +66,8 @@ bool mkdir(const char *path);
 
 
 bool createStorageDirectories();
 bool createStorageDirectories();
 
 
+bool hasBackgroundMusic();
+
 } // android
 } // android
 } // love
 } // love
 
 

+ 112 - 19
love/src/jni/love/src/common/b64.cpp

@@ -1,5 +1,5 @@
 /**
 /**
- * Copyright (c) 2006-2016 LOVE Development Team
+ * Copyright (c) 2006-2018 LOVE Development Team
  *
  *
  * This software is provided 'as-is', without any express or implied
  * This software is provided 'as-is', without any express or implied
  * warranty.  In no event will the authors be held liable for any damages
  * warranty.  In no event will the authors be held liable for any damages
@@ -19,12 +19,98 @@
  **/
  **/
 
 
 #include "b64.h"
 #include "b64.h"
+#include "Exception.h"
+
+#include <limits>
+#include <stdio.h>
 
 
 namespace love
 namespace love
 {
 {
 
 
+// Translation table as described in RFC1113
+static const char cb64[]="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
+
+// Translation table to decode (created by Bob Trower)
 static const char cd64[]="|$$$}rstuvwxyz{$$$$$$$>?@ABCDEFGHIJKLMNOPQRSTUVW$$$$$$XYZ[\\]^_`abcdefghijklmnopq";
 static const char cd64[]="|$$$}rstuvwxyz{$$$$$$$>?@ABCDEFGHIJKLMNOPQRSTUVW$$$$$$XYZ[\\]^_`abcdefghijklmnopq";
 
 
+/**
+ * encode 3 8-bit binary bytes as 4 '6-bit' characters
+ **/
+static void b64_encode_block(char in[3], char out[4], int len)
+{
+	out[0] = (char) cb64[(int)(in[0] >> 2)];
+	out[1] = (char) cb64[(int)(((in[0] & 0x03) << 4) | ((in[1] & 0xf0) >> 4))];
+	out[2] = (char) (len > 1 ? cb64[(int)(((in[1] & 0x0f) << 2) | ((in[2] & 0xc0) >> 6))] : '=');
+	out[3] = (char) (len > 2 ? cb64[(int)(in[2] & 0x3f)] : '=');
+}
+
+char *b64_encode(const char *src, size_t srclen, size_t linelen, size_t &dstlen)
+{
+	if (linelen == 0)
+		linelen = std::numeric_limits<size_t>::max();
+
+	size_t blocksout = 0;
+	size_t srcpos = 0;
+
+	size_t adjustment = (srclen % 3) ? (3 - (srclen % 3)) : 0;
+	size_t paddedlen = ((srclen + adjustment) / 3) * 4;
+
+	dstlen = paddedlen + paddedlen / linelen;
+
+	if (dstlen == 0)
+		return nullptr;
+
+	char *dst = nullptr;
+	try
+	{
+		dst = new char[dstlen + 1];
+	}
+	catch (std::exception &)
+	{
+		throw love::Exception("Out of memory.");
+	}
+
+	size_t dstpos = 0;
+
+	while (srcpos < srclen)
+	{
+		char in[3]  = {0};
+		char out[4] = {0};
+
+		int len = 0;
+
+		for (int i = 0; i < 3; i++)
+		{
+			if (srcpos >= srclen)
+				break;
+
+			in[i] = src[srcpos++];
+			len++;
+		}
+
+		if (len > 0)
+		{
+			b64_encode_block(in, out, len);
+
+			for (int i = 0; i < 4 && dstpos < dstlen; i++, dstpos++)
+				dst[dstpos] = out[i];
+
+			blocksout++;
+		}
+
+		if (blocksout >= linelen / 4 || srcpos >= srclen)
+		{
+			if (blocksout > 0 && dstpos < dstlen)
+				dst[dstpos++] = '\n';
+
+			blocksout = 0;
+		}
+	}
+
+	dst[dstpos] = '\0';
+	return dst;
+}
+
 static void b64_decode_block(char in[4], char out[3])
 static void b64_decode_block(char in[4], char out[3])
 {
 {
 	out[0] = (char)(in[0] << 2 | in[1] >> 4);
 	out[0] = (char)(in[0] << 2 | in[1] >> 4);
@@ -32,36 +118,44 @@ static void b64_decode_block(char in[4], char out[3])
 	out[2] = (char)(((in[2] << 6) & 0xc0) | in[3]);
 	out[2] = (char)(((in[2] << 6) & 0xc0) | in[3]);
 }
 }
 
 
-char *b64_decode(const char *src, int slen, int &size)
+char *b64_decode(const char *src, size_t srclen, size_t &size)
 {
 {
-	// Actual output may be smaller due to padding and/or whitespace in the
-	// base64-encoded string.
-	int max_size = (slen / 4) * 3;
+	size_t paddedsize = (srclen / 4) * 3;
+
+	char *dst = nullptr;
+	try
+	{
+		dst = new char[paddedsize];
+	}
+	catch (std::exception &)
+	{
+		throw love::Exception("Out of memory.");
+	}
 
 
-	char *dst = new char[max_size];
 	char *d = dst;
 	char *d = dst;
 
 
-	char in[4] = {0}, out[3], v;
-	int i, len, pos = 0;
+	char in[4]  = {0};
+	char out[3] = {0};
+	size_t i, len, srcpos = 0;
 
 
-	while (pos <= slen)
+	while (srcpos <= srclen)
 	{
 	{
-		for (len = 0, i = 0; i < 4 && pos <= slen; i++)
+		for (len = 0, i = 0; i < 4 && srcpos <= srclen; i++)
 		{
 		{
-			v = 0;
+			char v = 0;
 
 
-			while (pos <= slen && v == 0)
+			while (srcpos <= srclen && v == 0)
 			{
 			{
-				v = src[pos++];
+				v = src[srcpos++];
 				v = (char)((v < 43 || v > 122) ? 0 : cd64[v - 43]);
 				v = (char)((v < 43 || v > 122) ? 0 : cd64[v - 43]);
-				if (v)
+				if (v != 0)
 					v = (char)((v == '$') ? 0 : v - 61);
 					v = (char)((v == '$') ? 0 : v - 61);
 			}
 			}
 
 
-			if (pos <= slen)
+			if (srcpos <= srclen)
 			{
 			{
 				len++;
 				len++;
-				if (v)
+				if (v != 0)
 					in[i] = (char)(v - 1);
 					in[i] = (char)(v - 1);
 			}
 			}
 			else
 			else
@@ -72,12 +166,11 @@ char *b64_decode(const char *src, int slen, int &size)
 		{
 		{
 			b64_decode_block(in, out);
 			b64_decode_block(in, out);
 			for (i = 0; i < len - 1; i++)
 			for (i = 0; i < len - 1; i++)
-				*(d++) = out[i];
+				 *(d++) = out[i];
 		}
 		}
 	}
 	}
 
 
-	size = int(d - dst);
-
+	size = (size_t)(ptrdiff_t) (d - dst);
 	return dst;
 	return dst;
 }
 }
 
 

+ 18 - 4
love/src/jni/love/src/common/b64.h

@@ -1,5 +1,5 @@
 /**
 /**
- * Copyright (c) 2006-2016 LOVE Development Team
+ * Copyright (c) 2006-2018 LOVE Development Team
  *
  *
  * This software is provided 'as-is', without any express or implied
  * This software is provided 'as-is', without any express or implied
  * warranty.  In no event will the authors be held liable for any damages
  * warranty.  In no event will the authors be held liable for any damages
@@ -20,21 +20,35 @@
 
 
 #include "config.h"
 #include "config.h"
 
 
+#include <stddef.h>
+
 #ifndef LOVE_B64_H
 #ifndef LOVE_B64_H
 #define LOVE_B64_H
 #define LOVE_B64_H
 
 
 namespace love
 namespace love
 {
 {
 
 
+/**
+ * Base64-encode data.
+ *
+ * @param src The data to encode.
+ * @param srclen The size in bytes of the data.
+ * @param linelen The maximum length of each line in the encoded string.
+ *        0 indicates no maximum length.
+ * @param dstlen The length of the encoded string is stored here.
+ * @return A string containing the base64-encoded data (allocated with new[]).
+ */
+char *b64_encode(const char *src, size_t srclen, size_t linelen, size_t &dstlen);
+
 /**
 /**
  * Decode base64 encoded data.
  * Decode base64 encoded data.
  *
  *
  * @param src The string containing the base64 data.
  * @param src The string containing the base64 data.
- * @param slen The length of the string.
- * @param size The size of the binary data is stored here.
+ * @param srclen The length of the string.
+ * @param dstlen The size of the binary data is stored here.
  * @return A chunk of memory containing the binary data (allocated with new[]).
  * @return A chunk of memory containing the binary data (allocated with new[]).
  */
  */
-char *b64_decode(const char *src, int slen, int &size);
+char *b64_decode(const char *src, size_t srclen, size_t &dstlen);
 
 
 } // love
 } // love
 
 

+ 34 - 29
love/src/jni/love/src/common/config.h

@@ -1,5 +1,5 @@
 /**
 /**
- * Copyright (c) 2006-2016 LOVE Development Team
+ * Copyright (c) 2006-2018 LOVE Development Team
  *
  *
  * This software is provided 'as-is', without any express or implied
  * This software is provided 'as-is', without any express or implied
  * warranty.  In no event will the authors be held liable for any damages
  * warranty.  In no event will the authors be held liable for any damages
@@ -26,7 +26,7 @@
 #	define LOVE_WINDOWS 1
 #	define LOVE_WINDOWS 1
 	// If _USING_V110_SDK71_ is defined it means we are using the xp toolset.
 	// If _USING_V110_SDK71_ is defined it means we are using the xp toolset.
 #	if defined(_MSC_VER) && (_MSC_VER >= 1700) && !_USING_V110_SDK71_
 #	if defined(_MSC_VER) && (_MSC_VER >= 1700) && !_USING_V110_SDK71_
-#	include <winapifamily.h>
+#		include <winapifamily.h>
 #		if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP) && !WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)
 #		if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP) && !WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)
 #			define LOVE_WINDOWS_UWP 1
 #			define LOVE_WINDOWS_UWP 1
 #			define LOVE_NO_MODPLUG 1
 #			define LOVE_NO_MODPLUG 1
@@ -60,6 +60,22 @@
 #	define LOVE_LITTLE_ENDIAN 1
 #	define LOVE_LITTLE_ENDIAN 1
 #endif
 #endif
 
 
+// SSE instructions.
+#if defined(__SSE__)
+#	define LOVE_SIMD_SSE
+#elif defined(_MSC_VER)
+#	if defined(_M_AMD64) || defined(_M_X64)
+#		define LOVE_SIMD_SSE
+#	elif _M_IX86_FP
+#		define LOVE_SIMD_SSE
+#	endif
+#endif
+
+// NEON instructions.
+#if defined(__ARM_NEON)
+#	define LOVE_SIMD_NEON
+#endif
+
 // Warnings.
 // Warnings.
 #ifndef _CRT_SECURE_NO_WARNINGS
 #ifndef _CRT_SECURE_NO_WARNINGS
 #	define _CRT_SECURE_NO_WARNINGS
 #	define _CRT_SECURE_NO_WARNINGS
@@ -70,6 +86,16 @@
 #	define LOVE_UNUSED(x) (void)sizeof(x)
 #	define LOVE_UNUSED(x) (void)sizeof(x)
 #endif
 #endif
 
 
+
+// Warn on unused return values
+#ifdef __GNUC__
+#	define LOVE_WARN_UNUSED __attribute__((warn_unused_result))
+#elif _MSC_VER
+#	define LOVE_WARN_UNUSED _Check_return_
+#else
+#	define LOVE_WARN_UNUSED
+#endif
+
 #ifndef LOVE_BUILD
 #ifndef LOVE_BUILD
 #	define LOVE_BUILD
 #	define LOVE_BUILD
 #	define LOVE_BUILD_STANDALONE
 #	define LOVE_BUILD_STANDALONE
@@ -111,51 +137,30 @@
 #		define LOVE_LITTLE_ENDIAN 1
 #		define LOVE_LITTLE_ENDIAN 1
 #	endif
 #	endif
 #else
 #else
+#	define LOVE_ENABLE_LOVE
 #	define LOVE_ENABLE_AUDIO
 #	define LOVE_ENABLE_AUDIO
-#	define LOVE_ENABLE_AUDIO_NULL
-#	define LOVE_ENABLE_AUDIO_OPENAL
-#	define LOVE_ENABLE_BOX2D
-#	define LOVE_ENABLE_DDSPARSE
-#	define LOVE_ENABLE_ENET
+#	define LOVE_ENABLE_DATA
 #	define LOVE_ENABLE_EVENT
 #	define LOVE_ENABLE_EVENT
-#	define LOVE_ENABLE_EVENT_SDL
 #	define LOVE_ENABLE_FILESYSTEM
 #	define LOVE_ENABLE_FILESYSTEM
-#	define LOVE_ENABLE_FILESYSTEM_PHYSFS
 #	define LOVE_ENABLE_FONT
 #	define LOVE_ENABLE_FONT
-#	define LOVE_ENABLE_FONT_FREETYPE
 #	define LOVE_ENABLE_GRAPHICS
 #	define LOVE_ENABLE_GRAPHICS
-#	define LOVE_ENABLE_GRAPHICS_OPENGL
 #	define LOVE_ENABLE_IMAGE
 #	define LOVE_ENABLE_IMAGE
-#	define LOVE_ENABLE_IMAGE_MAGPIE
 #	define LOVE_ENABLE_JOYSTICK
 #	define LOVE_ENABLE_JOYSTICK
-#	define LOVE_ENABLE_JOYSTICK_SDL
 #	define LOVE_ENABLE_KEYBOARD
 #	define LOVE_ENABLE_KEYBOARD
-#	define LOVE_ENABLE_KEYBOARD_SDL
-#	define LOVE_ENABLE_LOVE
-#	define LOVE_ENABLE_LUASOCKET
-#	define LOVE_ENABLE_LUAUTF8
 #	define LOVE_ENABLE_MATH
 #	define LOVE_ENABLE_MATH
 #	define LOVE_ENABLE_MOUSE
 #	define LOVE_ENABLE_MOUSE
-#	define LOVE_ENABLE_MOUSE_SDL
-#	define LOVE_ENABLE_NOISE1234
 #	define LOVE_ENABLE_PHYSICS
 #	define LOVE_ENABLE_PHYSICS
-#	define LOVE_ENABLE_PHYSICS_BOX2D
 #	define LOVE_ENABLE_SOUND
 #	define LOVE_ENABLE_SOUND
-#	define LOVE_ENABLE_SOUND_LULLABY
 #	define LOVE_ENABLE_SYSTEM
 #	define LOVE_ENABLE_SYSTEM
-#	define LOVE_ENABLE_SYSTEM_SDL
 #	define LOVE_ENABLE_THREAD
 #	define LOVE_ENABLE_THREAD
-#	define LOVE_ENABLE_THREAD_SDL
 #	define LOVE_ENABLE_TIMER
 #	define LOVE_ENABLE_TIMER
-#	define LOVE_ENABLE_TIMER_SDL
 #	define LOVE_ENABLE_TOUCH
 #	define LOVE_ENABLE_TOUCH
-#	define LOVE_ENABLE_TOUCH_SDL
-#	define LOVE_ENABLE_UTF8
 #	define LOVE_ENABLE_VIDEO
 #	define LOVE_ENABLE_VIDEO
-#	define LOVE_ENABLE_VIDEO_THEORA
 #	define LOVE_ENABLE_WINDOW
 #	define LOVE_ENABLE_WINDOW
-#	define LOVE_ENABLE_WINDOW_SDL
-#	define LOVE_ENABLE_WUFF
+
+#	define LOVE_ENABLE_ENET
+#	define LOVE_ENABLE_LUASOCKET
+#	define LOVE_ENABLE_LUA53
 #endif
 #endif
 
 
 // Check we have a sane configuration
 // Check we have a sane configuration

+ 3 - 1
love/src/jni/love/src/common/delay.cpp

@@ -1,5 +1,5 @@
 /**
 /**
- * Copyright (c) 2006-2016 LOVE Development Team
+ * Copyright (c) 2006-2018 LOVE Development Team
  *
  *
  * This software is provided 'as-is', without any express or implied
  * This software is provided 'as-is', without any express or implied
  * warranty.  In no event will the authors be held liable for any damages
  * warranty.  In no event will the authors be held liable for any damages
@@ -27,6 +27,8 @@ namespace love
 
 
 void sleep(unsigned int ms)
 void sleep(unsigned int ms)
 {
 {
+	// We don't need to initialize the SDL timer subsystem for SDL_Delay to
+	// function - and doing so causes SDL to create a worker thread.
 	SDL_Delay(ms);
 	SDL_Delay(ms);
 }
 }
 
 

+ 1 - 1
love/src/jni/love/src/common/delay.h

@@ -1,5 +1,5 @@
 /**
 /**
- * Copyright (c) 2006-2016 LOVE Development Team
+ * Copyright (c) 2006-2018 LOVE Development Team
  *
  *
  * This software is provided 'as-is', without any express or implied
  * This software is provided 'as-is', without any express or implied
  * warranty.  In no event will the authors be held liable for any damages
  * warranty.  In no event will the authors be held liable for any damages

+ 187 - 0
love/src/jni/love/src/common/deprecation.cpp

@@ -0,0 +1,187 @@
+/**
+ * Copyright (c) 2006-2018 LOVE Development Team
+ *
+ * This software is provided 'as-is', without any express or implied
+ * warranty.  In no event will the authors be held liable for any damages
+ * arising from the use of this software.
+ *
+ * Permission is granted to anyone to use this software for any purpose,
+ * including commercial applications, and to alter it and redistribute it
+ * freely, subject to the following restrictions:
+ *
+ * 1. The origin of this software must not be misrepresented; you must not
+ *    claim that you wrote the original software. If you use this software
+ *    in a product, an acknowledgment in the product documentation would be
+ *    appreciated but is not required.
+ * 2. Altered source versions must be plainly marked as such, and must not be
+ *    misrepresented as being the original software.
+ * 3. This notice may not be removed or altered from any source distribution.
+ **/
+
+#include "common/config.h"
+#include "deprecation.h"
+#include "thread/threads.h"
+
+#include <atomic>
+#include <map>
+
+namespace love
+{
+
+static std::map<std::string, DeprecationInfo> *deprecated = nullptr;
+static std::vector<const DeprecationInfo *> *deprecatedList = nullptr;
+
+static std::atomic<int> initCount;
+
+static thread::Mutex *mutex = nullptr;
+static bool outputEnabled = false;
+
+void initDeprecation()
+{
+	if (initCount.fetch_add(1) == 0)
+	{
+		mutex = thread::newMutex();
+
+		// These are heap-allocated because we want to clear them on deinit,
+		// and deinit may be called when the program is shutting down in the
+		// middle of static variable cleanup (eg in the Math module destructor).
+		// Calling std::map::clear() in that case was causing segfaults.
+		deprecated = new std::map<std::string, DeprecationInfo>();
+		deprecatedList = new std::vector<const DeprecationInfo *>();
+	}
+}
+
+void deinitDeprecation()
+{
+	if (initCount.fetch_sub(1) == 1)
+	{
+		delete deprecated;
+		delete deprecatedList;
+		delete mutex;
+
+		deprecated = nullptr;
+		deprecatedList = nullptr;
+		mutex = nullptr;
+	}
+}
+
+static void printDeprecationNotice(const DeprecationInfo &info)
+{
+	std::string notice = getDeprecationNotice(info, true);
+	printf("LOVE - Warning: %s\n", notice.c_str());
+}
+
+void setDeprecationOutputEnabled(bool enable)
+{
+	if (enable == outputEnabled)
+		return;
+
+	outputEnabled = enable;
+
+	if (enable)
+	{
+		GetDeprecated deprecated;
+
+		for (const DeprecationInfo *info : deprecated.all)
+		{
+			if (info->uses == 1)
+				printDeprecationNotice(*info);
+		}
+	}
+}
+
+bool isDeprecationOutputEnabled()
+{
+	return outputEnabled;
+}
+
+std::string getDeprecationNotice(const DeprecationInfo &info, bool usewhere)
+{
+	std::string notice;
+
+	if (usewhere)
+		notice += info.where;
+
+	notice += "Using deprecated ";
+
+	if (info.apiType == API_FUNCTION)
+		notice += "function ";
+	else if (info.apiType == API_METHOD)
+		notice += "method ";
+	else if (info.apiType == API_FIELD)
+		notice += "field ";
+	else if (info.apiType == API_CONSTANT)
+		notice += "constant ";
+	else
+		notice += "API ";
+
+	notice += info.name;
+
+	if (info.type == DEPRECATED_REPLACED && !info.replacement.empty())
+		notice += " (replaced by " + info.replacement + ")";
+	else if (info.type == DEPRECATED_RENAMED && !info.replacement.empty())
+		notice += " (renamed to " + info.replacement + ")";
+
+	return notice;
+}
+
+GetDeprecated::GetDeprecated()
+	: all(*deprecatedList)
+{
+	if (mutex != nullptr)
+		mutex->lock();
+}
+
+GetDeprecated::~GetDeprecated()
+{
+	if (mutex != nullptr)
+		mutex->unlock();
+}
+
+MarkDeprecated::MarkDeprecated(const char *name, APIType api)
+	: MarkDeprecated(name, api, DEPRECATED_NO_REPLACEMENT, nullptr)
+{
+}
+
+MarkDeprecated::MarkDeprecated(const char *name, APIType api, DeprecationType type, const char *replacement)
+	: info(nullptr)
+{
+	if (mutex != nullptr)
+		mutex->lock();
+
+	auto it = deprecated->find(name);
+
+	if (it != deprecated->end())
+	{
+		it->second.uses++;
+		info = &it->second;
+	}
+	else
+	{
+		DeprecationInfo newinfo = {};
+
+		newinfo.type = type;
+		newinfo.apiType = api;
+		newinfo.uses = 1;
+		newinfo.name = name;
+
+		if (replacement != nullptr)
+			newinfo.replacement = replacement;
+
+		auto inserted = deprecated->insert(std::make_pair(newinfo.name, newinfo));
+
+		info = &inserted.first->second;
+		deprecatedList->push_back(info);
+	}
+}
+
+MarkDeprecated::~MarkDeprecated()
+{
+	if (outputEnabled && info != nullptr && info->uses == 1)
+		printDeprecationNotice(*info);
+
+	if (mutex != nullptr)
+		mutex->unlock();
+}
+
+} // love

+ 81 - 0
love/src/jni/love/src/common/deprecation.h

@@ -0,0 +1,81 @@
+/**
+ * Copyright (c) 2006-2018 LOVE Development Team
+ *
+ * This software is provided 'as-is', without any express or implied
+ * warranty.  In no event will the authors be held liable for any damages
+ * arising from the use of this software.
+ *
+ * Permission is granted to anyone to use this software for any purpose,
+ * including commercial applications, and to alter it and redistribute it
+ * freely, subject to the following restrictions:
+ *
+ * 1. The origin of this software must not be misrepresented; you must not
+ *    claim that you wrote the original software. If you use this software
+ *    in a product, an acknowledgment in the product documentation would be
+ *    appreciated but is not required.
+ * 2. Altered source versions must be plainly marked as such, and must not be
+ *    misrepresented as being the original software.
+ * 3. This notice may not be removed or altered from any source distribution.
+ **/
+
+#pragma once
+
+#include "int.h"
+
+#include <string>
+#include <vector>
+
+namespace love
+{
+
+enum APIType
+{
+	API_FUNCTION,
+	API_METHOD,
+	API_FIELD,
+	API_CONSTANT,
+};
+
+enum DeprecationType
+{
+	DEPRECATED_NO_REPLACEMENT,
+	DEPRECATED_REPLACED,
+	DEPRECATED_RENAMED,
+};
+
+struct DeprecationInfo
+{
+	DeprecationType type;
+	APIType apiType;
+	int64 uses;
+	std::string name;
+	std::string replacement;
+	std::string where;
+};
+
+void initDeprecation();
+void deinitDeprecation();
+
+void setDeprecationOutputEnabled(bool enable);
+bool isDeprecationOutputEnabled();
+
+std::string getDeprecationNotice(const DeprecationInfo &info, bool usewhere);
+
+struct GetDeprecated
+{
+	GetDeprecated();
+	~GetDeprecated();
+
+	const std::vector<const DeprecationInfo *> &all;
+};
+
+struct MarkDeprecated
+{
+	MarkDeprecated(const char *name, APIType api);
+	MarkDeprecated(const char *name, APIType api, DeprecationType type, const char *replacement);
+	~MarkDeprecated();
+
+	DeprecationInfo *info;
+};
+
+} // love

+ 156 - 0
love/src/jni/love/src/common/halffloat.cpp

@@ -0,0 +1,156 @@
+/**
+ * Copyright (c) 2006-2018 LOVE Development Team
+ *
+ * This software is provided 'as-is', without any express or implied
+ * warranty.  In no event will the authors be held liable for any damages
+ * arising from the use of this software.
+ *
+ * Permission is granted to anyone to use this software for any purpose,
+ * including commercial applications, and to alter it and redistribute it
+ * freely, subject to the following restrictions:
+ *
+ * 1. The origin of this software must not be misrepresented; you must not
+ *    claim that you wrote the original software. If you use this software
+ *    in a product, an acknowledgment in the product documentation would be
+ *    appreciated but is not required.
+ * 2. Altered source versions must be plainly marked as such, and must not be
+ *    misrepresented as being the original software.
+ * 3. This notice may not be removed or altered from any source distribution.
+ **/
+
+#include "halffloat.h"
+
+namespace love
+{
+
+// Code from ftp://www.fox-toolkit.org/pub/fasthalffloatconversion.pdf
+
+static bool initialized = false;
+
+// tables for half -> float conversions
+static uint32 mantissatable[2048];
+static uint16 offsettable[64];
+static uint32 exponenttable[64];
+
+// tables for float -> half conversions
+static uint16 basetable[512];
+static uint8 shifttable[512];
+
+
+static uint32 convertMantissa(uint32 i)
+{
+	uint32 m = i << 13; // Zero pad mantissa bits
+	uint32 e = 0; // Zero exponent
+
+	while (!(m & 0x00800000)) // While not normalized
+	{
+		e -= 0x00800000; // Decrement exponent (1<<23)
+		m <<= 1; // Shift mantissa
+	}
+
+	m &= ~(0x00800000); // Clear leading 1 bit
+	e += 0x38800000; // Adjust bias ((127-14)<<23)
+
+	return m | e; // Return combined number
+}
+
+void halfInit()
+{
+	if (initialized)
+		return;
+
+	initialized = true;
+
+
+	// tables for half -> float conversions.
+
+	mantissatable[0] = 0;
+
+	for (uint32 i = 1; i < 1024; i++)
+		mantissatable[i] = convertMantissa(i);
+
+	for (uint32 i = 1024; i < 2048; i++)
+		mantissatable[i] = 0x38000000 + ((i - 1024) << 13);
+
+	exponenttable[0] = 0;
+	exponenttable[32] = 0x80000000;
+
+	for (uint32 i = 0; i < 31; i++)
+		exponenttable[i] = i << 23;
+
+	for (uint32 i = 33; i < 63; i++)
+		exponenttable[i] = 0x80000000 + ((i - 32) << 23);
+
+	exponenttable[31] = 0x47800000;
+	exponenttable[63] = 0xC7800000;
+
+	for (int i = 0; i < 64; i++)
+	{
+		if (i == 0 || i == 32)
+			offsettable[i] = 0;
+		else
+			offsettable[i] = 1024;
+	}
+
+
+	// tables for float -> half conversions.
+
+	for (uint32 i = 0; i < 256; i++)
+	{
+		int e = (int) i - 127;
+
+		if (e < -24) // Very small numbers map to zero
+		{
+			basetable[i | 0x000] = 0x0000;
+			basetable[i | 0x100] = 0x8000;
+			shifttable[i | 0x000] = 24;
+			shifttable[i | 0x100] = 24;
+		}
+		else if (e < -14) // Small numbers map to denorms
+		{
+			basetable[i | 0x000] = (0x0400 >> (-e - 14));
+			basetable[i | 0x100] = (0x0400 >> (-e - 14)) | 0x8000;
+			shifttable[i | 0x000] = -e - 1;
+			shifttable[i | 0x100] = -e - 1;
+		}
+		else if (e <= 15) // Normal numbers just lose precision
+		{
+			basetable[i | 0x000] = ((e + 15) << 10);
+			basetable[i | 0x100] = ((e + 15) << 10) | 0x8000;
+			shifttable[i | 0x000] = 13;
+			shifttable[i | 0x100] = 13;
+		}
+		else if (e < 128) // Large numbers map to Infinity
+		{
+			basetable[i | 0x000] = 0x7C00;
+			basetable[i | 0x100] = 0xFC00;
+			shifttable[i | 0x000] = 24;
+			shifttable[i | 0x100] = 24;
+		}
+		else // Infinity and NaN's stay Infinity and NaN's
+		{
+			basetable[i | 0x000] = 0x7C00;
+			basetable[i | 0x100] = 0xFC00;
+			shifttable[i | 0x000] = 13;
+			shifttable[i | 0x100] = 13;
+		}
+	}
+}
+
+float halfToFloat(half h)
+{
+	union { float f; uint32 i; } conv;
+
+	conv.i = mantissatable[offsettable[h >> 10] + (h & 0x3FF)] + exponenttable[h >> 10];
+	return conv.f;
+}
+
+half floatToHalf(float f)
+{
+	union { float f; uint32 i; } conv;
+	conv.f = f;
+
+	return basetable[(conv.i >> 23) & 0x1FF] + ((conv.i & 0x007FFFFF) >> shifttable[(conv.i >> 23) & 0x1FF]);
+}
+
+} // love

+ 38 - 0
love/src/jni/love/src/common/halffloat.h

@@ -0,0 +1,38 @@
+/**
+ * Copyright (c) 2006-2018 LOVE Development Team
+ *
+ * This software is provided 'as-is', without any express or implied
+ * warranty.  In no event will the authors be held liable for any damages
+ * arising from the use of this software.
+ *
+ * Permission is granted to anyone to use this software for any purpose,
+ * including commercial applications, and to alter it and redistribute it
+ * freely, subject to the following restrictions:
+ *
+ * 1. The origin of this software must not be misrepresented; you must not
+ *    claim that you wrote the original software. If you use this software
+ *    in a product, an acknowledgment in the product documentation would be
+ *    appreciated but is not required.
+ * 2. Altered source versions must be plainly marked as such, and must not be
+ *    misrepresented as being the original software.
+ * 3. This notice may not be removed or altered from any source distribution.
+ **/
+
+#ifndef LOVE_HALF_FLOAT_H
+#define LOVE_HALF_FLOAT_H
+
+#include "int.h"
+
+namespace love
+{
+
+typedef uint16 half;
+
+void halfInit();
+
+float halfToFloat(half h);
+half floatToHalf(float f);
+
+} // love
+
+#endif // LOVE_HALF_FLOAT_H

+ 1 - 1
love/src/jni/love/src/common/int.h

@@ -1,5 +1,5 @@
 /**
 /**
- * Copyright (c) 2006-2016 LOVE Development Team
+ * Copyright (c) 2006-2018 LOVE Development Team
  *
  *
  * This software is provided 'as-is', without any express or implied
  * This software is provided 'as-is', without any express or implied
  * warranty.  In no event will the authors be held liable for any damages
  * warranty.  In no event will the authors be held liable for any damages

+ 11 - 1
love/src/jni/love/src/common/ios.h

@@ -1,5 +1,5 @@
 /**
 /**
- * Copyright (c) 2006-2016 LOVE Development Team
+ * Copyright (c) 2006-2018 LOVE Development Team
  *
  *
  * This software is provided 'as-is', without any express or implied
  * This software is provided 'as-is', without any express or implied
  * warranty.  In no event will the authors be held liable for any damages
  * warranty.  In no event will the authors be held liable for any damages
@@ -64,6 +64,16 @@ std::string getExecutablePath();
  **/
  **/
 void vibrate();
 void vibrate();
 
 
+/**
+ * Enable mix mode (e.g. with background music apps) and playback with a muted device.
+ **/
+void setAudioMixWithOthers(bool mixEnabled);
+
+/**
+ * Returns whether another application is playing audio.
+ **/
+bool hasBackgroundMusic();
+
 } // ios
 } // ios
 } // love
 } // love
 
 

+ 24 - 1
love/src/jni/love/src/common/ios.mm

@@ -1,5 +1,5 @@
 /**
 /**
- * Copyright (c) 2006-2016 LOVE Development Team
+ * Copyright (c) 2006-2018 LOVE Development Team
  *
  *
  * This software is provided 'as-is', without any express or implied
  * This software is provided 'as-is', without any express or implied
  * warranty.  In no event will the authors be held liable for any damages
  * warranty.  In no event will the authors be held liable for any damages
@@ -26,6 +26,7 @@
 #import <UIKit/UIKit.h>
 #import <UIKit/UIKit.h>
 
 
 #import <AudioToolbox/AudioServices.h>
 #import <AudioToolbox/AudioServices.h>
+#import <AVFoundation/AVFoundation.h>
 
 
 #include <vector>
 #include <vector>
 
 
@@ -344,6 +345,28 @@ void vibrate()
 	}
 	}
 }
 }
 
 
+void setAudioMixWithOthers(bool mixEnabled)
+{
+	@autoreleasepool
+	{
+		NSString *category = AVAudioSessionCategorySoloAmbient;
+		NSError *err;
+
+		if (mixEnabled)
+			category = AVAudioSessionCategoryAmbient;
+
+		if (![[AVAudioSession sharedInstance] setCategory:category error:&err])
+			NSLog(@"Error in AVAudioSession setCategory: %@", [err localizedDescription]);
+	}
+}
+
+bool hasBackgroundMusic()
+{
+	if ([[AVAudioSession sharedInstance] respondsToSelector:@selector(secondaryAudioShouldBeSilencedHint)])
+		return [[AVAudioSession sharedInstance] secondaryAudioShouldBeSilencedHint];
+	return false;
+}
+
 } // ios
 } // ios
 } // love
 } // love
 
 

+ 1 - 1
love/src/jni/love/src/common/macosx.h

@@ -1,5 +1,5 @@
 /**
 /**
- * Copyright (c) 2006-2016 LOVE Development Team
+ * Copyright (c) 2006-2018 LOVE Development Team
  *
  *
  * This software is provided 'as-is', without any express or implied
  * This software is provided 'as-is', without any express or implied
  * warranty.  In no event will the authors be held liable for any damages
  * warranty.  In no event will the authors be held liable for any damages

+ 1 - 1
love/src/jni/love/src/common/macosx.mm

@@ -1,5 +1,5 @@
 /**
 /**
- * Copyright (c) 2006-2016 LOVE Development Team
+ * Copyright (c) 2006-2018 LOVE Development Team
  *
  *
  * This software is provided 'as-is', without any express or implied
  * This software is provided 'as-is', without any express or implied
  * warranty.  In no event will the authors be held liable for any damages
  * warranty.  In no event will the authors be held liable for any damages

+ 9 - 5
love/src/jni/love/src/common/math.h

@@ -1,5 +1,5 @@
 /**
 /**
- * Copyright (c) 2006-2016 LOVE Development Team
+ * Copyright (c) 2006-2018 LOVE Development Team
  *
  *
  * This software is provided 'as-is', without any express or implied
  * This software is provided 'as-is', without any express or implied
  * warranty.  In no event will the authors be held liable for any damages
  * warranty.  In no event will the authors be held liable for any damages
@@ -61,11 +61,15 @@
 namespace love
 namespace love
 {
 {
 
 
-struct Vertex
+struct Rect
 {
 {
-	float x, y;
-	float s, t;
-	unsigned char r, g, b, a;
+	int x, y;
+	int w, h;
+
+	bool operator == (const Rect &rhs) const
+	{
+		return x == rhs.x && y == rhs.y && w == rhs.w && h == rhs.h;
+	}
 };
 };
 
 
 inline int nextP2(int x)
 inline int nextP2(int x)

+ 70 - 0
love/src/jni/love/src/common/memory.cpp

@@ -0,0 +1,70 @@
+/**
+ * Copyright (c) 2006-2018 LOVE Development Team
+ *
+ * This software is provided 'as-is', without any express or implied
+ * warranty.  In no event will the authors be held liable for any damages
+ * arising from the use of this software.
+ *
+ * Permission is granted to anyone to use this software for any purpose,
+ * including commercial applications, and to alter it and redistribute it
+ * freely, subject to the following restrictions:
+ *
+ * 1. The origin of this software must not be misrepresented; you must not
+ *    claim that you wrote the original software. If you use this software
+ *    in a product, an acknowledgment in the product documentation would be
+ *    appreciated but is not required.
+ * 2. Altered source versions must be plainly marked as such, and must not be
+ *    misrepresented as being the original software.
+ * 3. This notice may not be removed or altered from any source distribution.
+ **/
+
+#include "config.h"
+#include "memory.h"
+
+#include <stdlib.h>
+
+#ifdef LOVE_WINDOWS
+#include <malloc.h>
+#else
+#include <unistd.h> // Assume POSIX support.
+#endif
+
+namespace love
+{
+
+bool alignedMalloc(void **mem, size_t size, size_t alignment)
+{
+#ifdef LOVE_WINDOWS
+	*mem = _aligned_malloc(size, alignment);
+	return *mem != nullptr;
+#else
+	return posix_memalign(mem, alignment, size) == 0;
+#endif
+}
+
+void alignedFree(void *mem)
+{
+#ifdef LOVE_WINDOWS
+	_aligned_free(mem);
+#else
+	free(mem);
+#endif
+}
+
+size_t getPageSize()
+{
+#ifdef LOVE_WINDOWS
+	// TODO: Do an actual query.
+	return 4096;
+#else
+	static const long size = sysconf(_SC_PAGESIZE);
+	return size > 0 ? (size_t) size : 4096;
+#endif
+}
+
+size_t alignUp(size_t size, size_t alignment)
+{
+	return (size + alignment - 1) & (~(alignment - 1));
+}
+
+} // love

+ 9 - 18
love/src/jni/love/platform/macosx/OSX.h → love/src/jni/love/src/common/memory.h

@@ -1,5 +1,5 @@
 /**
 /**
- * Copyright (c) 2006-2014 LOVE Development Team
+ * Copyright (c) 2006-2018 LOVE Development Team
  *
  *
  * This software is provided 'as-is', without any express or implied
  * This software is provided 'as-is', without any express or implied
  * warranty.  In no event will the authors be held liable for any damages
  * warranty.  In no event will the authors be held liable for any damages
@@ -18,30 +18,21 @@
  * 3. This notice may not be removed or altered from any source distribution.
  * 3. This notice may not be removed or altered from any source distribution.
  **/
  **/
 
 
-#ifndef LOVE_OSX_H
-#define LOVE_OSX_H
+#pragma once
 
 
-#include <string>
+#include <stddef.h>
 
 
 namespace love
 namespace love
 {
 {
-namespace osx
-{
 
 
-/**
- * Returns the filepath of the first detected love file in the Resources folder
- * in love.app.
- * Returns an empty string if no love file is found.
- **/
-std::string getLoveInResources();
+bool alignedMalloc(void **mem, size_t size, size_t alignment);
+void alignedFree(void *mem);
+
+size_t getPageSize();
 
 
 /**
 /**
- * Checks for drop-file events. Returns the filepath if an event occurred, or
- * an empty string otherwise.
+ * 'alignment' must be a power of two.
  **/
  **/
-std::string checkDropEvents();
+size_t alignUp(size_t size, size_t alignment);
 
 
-} // osx
 } // love
 } // love
-
-#endif // LOVE_OSX_H

+ 179 - 0
love/src/jni/love/src/common/pixelformat.cpp

@@ -0,0 +1,179 @@
+/**
+ * Copyright (c) 2006-2018 LOVE Development Team
+ *
+ * This software is provided 'as-is', without any express or implied
+ * warranty.  In no event will the authors be held liable for any damages
+ * arising from the use of this software.
+ *
+ * Permission is granted to anyone to use this software for any purpose,
+ * including commercial applications, and to alter it and redistribute it
+ * freely, subject to the following restrictions:
+ *
+ * 1. The origin of this software must not be misrepresented; you must not
+ *    claim that you wrote the original software. If you use this software
+ *    in a product, an acknowledgment in the product documentation would be
+ *    appreciated but is not required.
+ * 2. Altered source versions must be plainly marked as such, and must not be
+ *    misrepresented as being the original software.
+ * 3. This notice may not be removed or altered from any source distribution.
+ **/
+
+#include "pixelformat.h"
+#include "StringMap.h"
+
+namespace love
+{
+
+static StringMap<PixelFormat, PIXELFORMAT_MAX_ENUM>::Entry formatEntries[] =
+{
+    { "unknown", PIXELFORMAT_UNKNOWN },
+
+	{ "normal",  PIXELFORMAT_NORMAL  },
+	{ "hdr",     PIXELFORMAT_HDR     },
+
+	{ "r8",      PIXELFORMAT_R8      },
+	{ "rg8",     PIXELFORMAT_RG8     },
+	{ "rgba8",   PIXELFORMAT_RGBA8   },
+	{ "srgba8",  PIXELFORMAT_sRGBA8  },
+	{ "r16",     PIXELFORMAT_R16     },
+	{ "rg16",    PIXELFORMAT_RG16    },
+	{ "rgba16",  PIXELFORMAT_RGBA16  },
+	{ "r16f",    PIXELFORMAT_R16F    },
+	{ "rg16f",   PIXELFORMAT_RG16F   },
+	{ "rgba16f", PIXELFORMAT_RGBA16F },
+	{ "r32f",    PIXELFORMAT_R32F    },
+	{ "rg32f",   PIXELFORMAT_RG32F   },
+	{ "rgba32f", PIXELFORMAT_RGBA32F },
+
+	{ "la8",     PIXELFORMAT_LA8     },
+
+	{ "rgba4",    PIXELFORMAT_RGBA4    },
+	{ "rgb5a1",   PIXELFORMAT_RGB5A1   },
+	{ "rgb565",   PIXELFORMAT_RGB565   },
+	{ "rgb10a2",  PIXELFORMAT_RGB10A2  },
+	{ "rg11b10f", PIXELFORMAT_RG11B10F },
+
+	{ "stencil8",         PIXELFORMAT_STENCIL8          },
+	{ "depth16",          PIXELFORMAT_DEPTH16           },
+	{ "depth24",          PIXELFORMAT_DEPTH24           },
+	{ "depth32f",         PIXELFORMAT_DEPTH32F          },
+	{ "depth24stencil8",  PIXELFORMAT_DEPTH24_STENCIL8  },
+	{ "depth32fstencil8", PIXELFORMAT_DEPTH32F_STENCIL8 },
+	
+	{ "DXT1",      PIXELFORMAT_DXT1       },
+	{ "DXT3",      PIXELFORMAT_DXT3       },
+	{ "DXT5",      PIXELFORMAT_DXT5       },
+	{ "BC4",       PIXELFORMAT_BC4        },
+	{ "BC4s",      PIXELFORMAT_BC4s       },
+	{ "BC5",       PIXELFORMAT_BC5        },
+	{ "BC5s",      PIXELFORMAT_BC5s       },
+	{ "BC6h",      PIXELFORMAT_BC6H       },
+	{ "BC6hs",     PIXELFORMAT_BC6Hs      },
+	{ "BC7",       PIXELFORMAT_BC7        },
+	{ "PVR1rgb2",  PIXELFORMAT_PVR1_RGB2  },
+	{ "PVR1rgb4",  PIXELFORMAT_PVR1_RGB4  },
+	{ "PVR1rgba2", PIXELFORMAT_PVR1_RGBA2 },
+	{ "PVR1rgba4", PIXELFORMAT_PVR1_RGBA4 },
+	{ "ETC1",      PIXELFORMAT_ETC1       },
+	{ "ETC2rgb",   PIXELFORMAT_ETC2_RGB   },
+	{ "ETC2rgba",  PIXELFORMAT_ETC2_RGBA  },
+	{ "ETC2rgba1", PIXELFORMAT_ETC2_RGBA1 },
+	{ "EACr",      PIXELFORMAT_EAC_R      },
+	{ "EACrs",     PIXELFORMAT_EAC_Rs     },
+	{ "EACrg",     PIXELFORMAT_EAC_RG     },
+	{ "EACrgs",    PIXELFORMAT_EAC_RGs    },
+	{ "ASTC4x4",   PIXELFORMAT_ASTC_4x4   },
+	{ "ASTC5x4",   PIXELFORMAT_ASTC_5x4   },
+	{ "ASTC5x5",   PIXELFORMAT_ASTC_5x5   },
+	{ "ASTC6x5",   PIXELFORMAT_ASTC_6x5   },
+	{ "ASTC6x6",   PIXELFORMAT_ASTC_6x6   },
+	{ "ASTC8x5",   PIXELFORMAT_ASTC_8x5   },
+	{ "ASTC8x6",   PIXELFORMAT_ASTC_8x6   },
+	{ "ASTC8x8",   PIXELFORMAT_ASTC_8x8   },
+	{ "ASTC10x5",  PIXELFORMAT_ASTC_10x5  },
+	{ "ASTC10x6",  PIXELFORMAT_ASTC_10x6  },
+	{ "ASTC10x8",  PIXELFORMAT_ASTC_10x8  },
+	{ "ASTC10x10", PIXELFORMAT_ASTC_10x10 },
+	{ "ASTC12x10", PIXELFORMAT_ASTC_12x10 },
+	{ "ASTC12x12", PIXELFORMAT_ASTC_12x12 },
+};
+
+static_assert(sizeof(formatEntries) / sizeof(formatEntries[0]) == (size_t) PIXELFORMAT_MAX_ENUM, "pixel format string map is missing entries!");
+
+static StringMap<PixelFormat, PIXELFORMAT_MAX_ENUM> formats(formatEntries, sizeof(formatEntries));
+
+bool getConstant(const char *in, PixelFormat &out)
+{
+	return formats.find(in, out);
+}
+
+bool getConstant(PixelFormat in, const char *&out)
+{
+	return formats.find(in, out);
+}
+
+bool isPixelFormatCompressed(PixelFormat format)
+{
+	// I'm lazy
+	int iformat = (int) format;
+	return iformat >= (int) PIXELFORMAT_DXT1 && iformat < (int) PIXELFORMAT_MAX_ENUM;
+}
+
+bool isPixelFormatDepthStencil(PixelFormat format)
+{
+	int iformat = (int) format;
+	return iformat >= (int) PIXELFORMAT_STENCIL8 && iformat <= (int) PIXELFORMAT_DEPTH32F_STENCIL8;
+}
+
+bool isPixelFormatDepth(PixelFormat format)
+{
+	int iformat = (int) format;
+	return iformat >= (int) PIXELFORMAT_DEPTH16 && iformat <= (int) PIXELFORMAT_DEPTH32F_STENCIL8;
+}
+
+bool isPixelFormatStencil(PixelFormat format)
+{
+	return format == PIXELFORMAT_STENCIL8 || format == PIXELFORMAT_DEPTH24_STENCIL8 || format == PIXELFORMAT_DEPTH32F_STENCIL8;
+}
+
+size_t getPixelFormatSize(PixelFormat format)
+{
+	switch (format)
+	{
+	case PIXELFORMAT_R8:
+	case PIXELFORMAT_STENCIL8:
+		return 1;
+	case PIXELFORMAT_RG8:
+	case PIXELFORMAT_R16:
+	case PIXELFORMAT_R16F:
+	case PIXELFORMAT_LA8:
+	case PIXELFORMAT_RGBA4:
+	case PIXELFORMAT_RGB5A1:
+	case PIXELFORMAT_RGB565:
+	case PIXELFORMAT_DEPTH16:
+		return 2;
+	case PIXELFORMAT_RGBA8:
+	case PIXELFORMAT_sRGBA8:
+	case PIXELFORMAT_RG16:
+	case PIXELFORMAT_RG16F:
+	case PIXELFORMAT_R32F:
+	case PIXELFORMAT_RGB10A2:
+	case PIXELFORMAT_RG11B10F:
+	case PIXELFORMAT_DEPTH24:
+	case PIXELFORMAT_DEPTH32F:
+	case PIXELFORMAT_DEPTH24_STENCIL8:
+		return 4;
+	case PIXELFORMAT_RGBA16:
+	case PIXELFORMAT_RGBA16F:
+	case PIXELFORMAT_RG32F:
+	case PIXELFORMAT_DEPTH32F_STENCIL8:
+		return 8;
+	case PIXELFORMAT_RGBA32F:
+		return 16;
+	default:
+		// TODO: compressed formats
+		return 0;
+	}
+}
+
+} // love

+ 138 - 0
love/src/jni/love/src/common/pixelformat.h

@@ -0,0 +1,138 @@
+/**
+ * Copyright (c) 2006-2018 LOVE Development Team
+ *
+ * This software is provided 'as-is', without any express or implied
+ * warranty.  In no event will the authors be held liable for any damages
+ * arising from the use of this software.
+ *
+ * Permission is granted to anyone to use this software for any purpose,
+ * including commercial applications, and to alter it and redistribute it
+ * freely, subject to the following restrictions:
+ *
+ * 1. The origin of this software must not be misrepresented; you must not
+ *    claim that you wrote the original software. If you use this software
+ *    in a product, an acknowledgment in the product documentation would be
+ *    appreciated but is not required.
+ * 2. Altered source versions must be plainly marked as such, and must not be
+ *    misrepresented as being the original software.
+ * 3. This notice may not be removed or altered from any source distribution.
+ **/
+
+#pragma once
+
+#include "stddef.h"
+
+namespace love
+{
+
+enum PixelFormat
+{
+    PIXELFORMAT_UNKNOWN,
+
+	// these are converted to an actual format by love
+	PIXELFORMAT_NORMAL,
+	PIXELFORMAT_HDR,
+
+	// "regular" formats
+	PIXELFORMAT_R8,
+	PIXELFORMAT_RG8,
+	PIXELFORMAT_RGBA8,
+	PIXELFORMAT_sRGBA8,
+	PIXELFORMAT_R16,
+	PIXELFORMAT_RG16,
+	PIXELFORMAT_RGBA16,
+	PIXELFORMAT_R16F,
+	PIXELFORMAT_RG16F,
+	PIXELFORMAT_RGBA16F,
+	PIXELFORMAT_R32F,
+	PIXELFORMAT_RG32F,
+	PIXELFORMAT_RGBA32F,
+
+	PIXELFORMAT_LA8, // Same as RG8, but accessed as (L, L, L, A)
+
+	// packed formats
+	PIXELFORMAT_RGBA4,
+	PIXELFORMAT_RGB5A1,
+	PIXELFORMAT_RGB565,
+	PIXELFORMAT_RGB10A2,
+	PIXELFORMAT_RG11B10F,
+
+	// depth/stencil formats
+	PIXELFORMAT_STENCIL8,
+	PIXELFORMAT_DEPTH16,
+	PIXELFORMAT_DEPTH24,
+	PIXELFORMAT_DEPTH32F,
+	PIXELFORMAT_DEPTH24_STENCIL8,
+	PIXELFORMAT_DEPTH32F_STENCIL8,
+
+	// compressed formats
+	PIXELFORMAT_DXT1,
+	PIXELFORMAT_DXT3,
+	PIXELFORMAT_DXT5,
+	PIXELFORMAT_BC4,
+	PIXELFORMAT_BC4s,
+	PIXELFORMAT_BC5,
+	PIXELFORMAT_BC5s,
+	PIXELFORMAT_BC6H,
+	PIXELFORMAT_BC6Hs,
+	PIXELFORMAT_BC7,
+	PIXELFORMAT_PVR1_RGB2,
+	PIXELFORMAT_PVR1_RGB4,
+	PIXELFORMAT_PVR1_RGBA2,
+	PIXELFORMAT_PVR1_RGBA4,
+	PIXELFORMAT_ETC1,
+	PIXELFORMAT_ETC2_RGB,
+	PIXELFORMAT_ETC2_RGBA,
+	PIXELFORMAT_ETC2_RGBA1,
+	PIXELFORMAT_EAC_R,
+	PIXELFORMAT_EAC_Rs,
+	PIXELFORMAT_EAC_RG,
+	PIXELFORMAT_EAC_RGs,
+	PIXELFORMAT_ASTC_4x4,
+	PIXELFORMAT_ASTC_5x4,
+	PIXELFORMAT_ASTC_5x5,
+	PIXELFORMAT_ASTC_6x5,
+	PIXELFORMAT_ASTC_6x6,
+	PIXELFORMAT_ASTC_8x5,
+	PIXELFORMAT_ASTC_8x6,
+	PIXELFORMAT_ASTC_8x8,
+	PIXELFORMAT_ASTC_10x5,
+	PIXELFORMAT_ASTC_10x6,
+	PIXELFORMAT_ASTC_10x8,
+	PIXELFORMAT_ASTC_10x10,
+	PIXELFORMAT_ASTC_12x10,
+	PIXELFORMAT_ASTC_12x12,
+
+	PIXELFORMAT_MAX_ENUM
+};
+
+bool getConstant(PixelFormat in, const char *&out);
+bool getConstant(const char *in, PixelFormat &out);
+
+/**
+ * Gets whether the specified pixel format is a compressed type.
+ **/
+bool isPixelFormatCompressed(PixelFormat format);
+
+/**
+ * Gets whether the specified pixel format is a depth or stencil type.
+ **/
+bool isPixelFormatDepthStencil(PixelFormat format);
+
+/**
+ * Gets whether the specified pixel format is a depth type.
+ **/
+bool isPixelFormatDepth(PixelFormat format);
+
+/**
+ * Gets whether the specified pixel format is a stencil type.
+ **/
+bool isPixelFormatStencil(PixelFormat format);
+
+/**
+ * Gets the size in bytes of the specified pixel format.
+ * NOTE: Currently returns 0 for compressed formats.
+ **/
+size_t getPixelFormatSize(PixelFormat format);
+
+} // love

+ 193 - 37
love/src/jni/love/src/common/runtime.cpp

@@ -1,5 +1,5 @@
 /**
 /**
- * Copyright (c) 2006-2016 LOVE Development Team
+ * Copyright (c) 2006-2018 LOVE Development Team
  *
  *
  * This software is provided 'as-is', without any express or implied
  * This software is provided 'as-is', without any express or implied
  * warranty.  In no event will the authors be held liable for any damages
  * warranty.  In no event will the authors be held liable for any damages
@@ -31,6 +31,7 @@
 #include <algorithm>
 #include <algorithm>
 #include <iostream>
 #include <iostream>
 #include <cstdio>
 #include <cstdio>
+#include <sstream>
 
 
 namespace love
 namespace love
 {
 {
@@ -42,7 +43,11 @@ namespace love
 static int w__gc(lua_State *L)
 static int w__gc(lua_State *L)
 {
 {
 	Proxy *p = (Proxy *) lua_touserdata(L, 1);
 	Proxy *p = (Proxy *) lua_touserdata(L, 1);
-	p->object->release();
+	if (p->object != nullptr)
+	{
+		p->object->release();
+		p->object = nullptr;
+	}
 	return 0;
 	return 0;
 }
 }
 
 
@@ -63,8 +68,11 @@ static int w__type(lua_State *L)
 static int w__typeOf(lua_State *L)
 static int w__typeOf(lua_State *L)
 {
 {
 	Proxy *p = (Proxy *)lua_touserdata(L, 1);
 	Proxy *p = (Proxy *)lua_touserdata(L, 1);
-	Type t = luax_type(L, 2);
-	luax_pushboolean(L, typeFlags[p->type][t]);
+	Type *t = luax_type(L, 2);
+	if (!t)
+		luax_pushboolean(L, false);
+	else
+		luax_pushboolean(L, p->type->isa(*t));
 	return 1;
 	return 1;
 }
 }
 
 
@@ -72,7 +80,35 @@ static int w__eq(lua_State *L)
 {
 {
 	Proxy *p1 = (Proxy *)lua_touserdata(L, 1);
 	Proxy *p1 = (Proxy *)lua_touserdata(L, 1);
 	Proxy *p2 = (Proxy *)lua_touserdata(L, 2);
 	Proxy *p2 = (Proxy *)lua_touserdata(L, 2);
-	luax_pushboolean(L, p1->object == p2->object);
+	luax_pushboolean(L, p1->object == p2->object && p1->object != nullptr);
+	return 1;
+}
+
+static int w__release(lua_State *L)
+{
+	Proxy *p = (Proxy *) lua_touserdata(L, 1);
+	Object *object = p->object;
+
+	if (object != nullptr)
+	{
+		p->object = nullptr;
+		object->release();
+
+		// Fetch the registry table of instantiated objects.
+		luax_getregistry(L, REGISTRY_OBJECTS);
+
+		if (lua_istable(L, -1))
+		{
+			// loveobjects[object] = nil
+			lua_pushlightuserdata(L, object);
+			lua_pushnil(L);
+			lua_settable(L, -3);
+		}
+
+		lua_pop(L, 1);
+	}
+
+	luax_pushboolean(L, object != nullptr);
 	return 1;
 	return 1;
 }
 }
 
 
@@ -83,7 +119,7 @@ Reference *luax_refif(lua_State *L, int type)
 	// Create a reference only if the test succeeds.
 	// Create a reference only if the test succeeds.
 	if (lua_type(L, -1) == type)
 	if (lua_type(L, -1) == type)
 		r = new Reference(L);
 		r = new Reference(L);
-	else // Pop the value even if it fails (but also if it succeeds).
+	else // Pop the value manually if it fails (done by Reference if it succeeds).
 		lua_pop(L, 1);
 		lua_pop(L, 1);
 
 
 	return r;
 	return r;
@@ -95,11 +131,53 @@ void luax_printstack(lua_State *L)
 		std::cout << i << " - " << luaL_typename(L, i) << std::endl;
 		std::cout << i << " - " << luaL_typename(L, i) << std::endl;
 }
 }
 
 
+int luax_traceback(lua_State *L)
+{
+	if (!lua_isstring(L, 1))  // 'message' not a string?
+		return 1; // keep it intact
+
+	lua_getglobal(L, "debug");
+	if (!lua_istable(L, -1))
+	{
+		lua_pop(L, 1);
+		return 1;
+	}
+
+	lua_getfield(L, -1, "traceback");
+	if (!lua_isfunction(L, -1))
+	{
+		lua_pop(L, 2);
+		return 1;
+	}
+
+	lua_pushvalue(L, 1); // pass error message
+	lua_pushinteger(L, 2); // skip this function and traceback
+	lua_call(L, 2, 1); // call debug.traceback
+	return 1;
+}
+
+bool luax_isarrayoftables(lua_State *L, int idx)
+{
+	if (!lua_istable(L, idx))
+		return false;
+
+	lua_rawgeti(L, idx, 1);
+	bool tableoftables = lua_istable(L, -1);
+	lua_pop(L, 1);
+	return tableoftables;
+}
+
 bool luax_toboolean(lua_State *L, int idx)
 bool luax_toboolean(lua_State *L, int idx)
 {
 {
 	return (lua_toboolean(L, idx) != 0);
 	return (lua_toboolean(L, idx) != 0);
 }
 }
 
 
+bool luax_checkboolean(lua_State *L, int idx)
+{
+	luaL_checktype(L, idx, LUA_TBOOLEAN);
+	return luax_toboolean(L, idx);
+}
+
 void luax_pushboolean(lua_State *L, bool b)
 void luax_pushboolean(lua_State *L, bool b)
 {
 {
 	lua_pushboolean(L, b ? 1 : 0);
 	lua_pushboolean(L, b ? 1 : 0);
@@ -159,6 +237,37 @@ int luax_intflag(lua_State *L, int table_index, const char *key, int defaultValu
 	return retval;
 	return retval;
 }
 }
 
 
+double luax_numberflag(lua_State *L, int table_index, const char *key, double defaultValue)
+{
+	lua_getfield(L, table_index, key);
+
+	int retval;
+	if (!lua_isnumber(L, -1))
+		retval = defaultValue;
+	else
+		retval = lua_tonumber(L, -1);
+
+	lua_pop(L, 1);
+	return retval;
+}
+
+int luax_checkintflag(lua_State *L, int table_index, const char *key)
+{
+	lua_getfield(L, table_index, key);
+
+	int retval;
+	if (!lua_isnumber(L, -1))
+	{
+		std::string err = "expected integer field " + std::string(key) + " in table";
+		return luaL_argerror(L, table_index, err.c_str());
+	}
+	else
+		retval = (int) luaL_checkinteger(L, -1);
+	lua_pop(L, 1);
+
+	return retval;
+}
+
 int luax_assert_argc(lua_State *L, int min)
 int luax_assert_argc(lua_State *L, int min)
 {
 {
 	int argc = lua_gettop(L);
 	int argc = lua_gettop(L);
@@ -216,7 +325,7 @@ int luax_require(lua_State *L, const char *name)
 
 
 int luax_register_module(lua_State *L, const WrappedModule &m)
 int luax_register_module(lua_State *L, const WrappedModule &m)
 {
 {
-	love::addTypeName(m.type, m.name);
+	m.type->init();
 
 
 	// Put a reference to the C++ module in Lua.
 	// Put a reference to the C++ module in Lua.
 	luax_insistregistry(L, REGISTRY_MODULES);
 	luax_insistregistry(L, REGISTRY_MODULES);
@@ -272,9 +381,9 @@ int luax_preload(lua_State *L, lua_CFunction f, const char *name)
 	return 0;
 	return 0;
 }
 }
 
 
-int luax_register_type(lua_State *L, love::Type type, const char *name, ...)
+int luax_register_type(lua_State *L, love::Type *type, ...)
 {
 {
-	love::addTypeName(type, name);
+	type->init();
 
 
 	// Get the place for storing and re-using instantiated love types.
 	// Get the place for storing and re-using instantiated love types.
 	luax_getregistry(L, REGISTRY_OBJECTS);
 	luax_getregistry(L, REGISTRY_OBJECTS);
@@ -301,7 +410,7 @@ int luax_register_type(lua_State *L, love::Type type, const char *name, ...)
 	else
 	else
 		lua_pop(L, 1);
 		lua_pop(L, 1);
 
 
-	luaL_newmetatable(L, name);
+	luaL_newmetatable(L, type->getName());
 
 
 	// m.__index = m
 	// m.__index = m
 	lua_pushvalue(L, -1);
 	lua_pushvalue(L, -1);
@@ -316,12 +425,12 @@ int luax_register_type(lua_State *L, love::Type type, const char *name, ...)
 	lua_setfield(L, -2, "__eq");
 	lua_setfield(L, -2, "__eq");
 
 
 	// Add tostring function.
 	// Add tostring function.
-	lua_pushstring(L, name);
+	lua_pushstring(L, type->getName());
 	lua_pushcclosure(L, w__tostring, 1);
 	lua_pushcclosure(L, w__tostring, 1);
 	lua_setfield(L, -2, "__tostring");
 	lua_setfield(L, -2, "__tostring");
 
 
 	// Add type
 	// Add type
-	lua_pushstring(L, name);
+	lua_pushstring(L, type->getName());
 	lua_pushcclosure(L, w__type, 1);
 	lua_pushcclosure(L, w__type, 1);
 	lua_setfield(L, -2, "type");
 	lua_setfield(L, -2, "type");
 
 
@@ -329,8 +438,12 @@ int luax_register_type(lua_State *L, love::Type type, const char *name, ...)
 	lua_pushcfunction(L, w__typeOf);
 	lua_pushcfunction(L, w__typeOf);
 	lua_setfield(L, -2, "typeOf");
 	lua_setfield(L, -2, "typeOf");
 
 
+	// Add release
+	lua_pushcfunction(L, w__release);
+	lua_setfield(L, -2, "release");
+
 	va_list fs;
 	va_list fs;
-	va_start(fs, name);
+	va_start(fs, type);
 	for (const luaL_Reg *f = va_arg(fs, const luaL_Reg *); f; f = va_arg(fs, const luaL_Reg *))
 	for (const luaL_Reg *f = va_arg(fs, const luaL_Reg *); f; f = va_arg(fs, const luaL_Reg *))
 		luax_setfuncs(L, f);
 		luax_setfuncs(L, f);
 	va_end(fs);
 	va_end(fs);
@@ -339,13 +452,10 @@ int luax_register_type(lua_State *L, love::Type type, const char *name, ...)
 	return 0;
 	return 0;
 }
 }
 
 
-void luax_gettypemetatable(lua_State *L, love::Type type)
+void luax_gettypemetatable(lua_State *L, love::Type &type)
 {
 {
-	const char *name = nullptr;
-	if (getTypeName(type, name))
-		lua_getfield(L, LUA_REGISTRYINDEX, name);
-	else
-		lua_pushnil(L);
+	const char *name = type.getName();
+	lua_getfield(L, LUA_REGISTRYINDEX, name);
 }
 }
 
 
 int luax_table_insert(lua_State *L, int tindex, int vindex, int pos)
 int luax_table_insert(lua_State *L, int tindex, int vindex, int pos)
@@ -401,23 +511,34 @@ int luax_register_searcher(lua_State *L, lua_CFunction f, int pos)
 	return 0;
 	return 0;
 }
 }
 
 
-void luax_rawnewtype(lua_State *L, love::Type type, love::Object *object)
+void luax_rawnewtype(lua_State *L, love::Type &type, love::Object *object)
 {
 {
 	Proxy *u = (Proxy *)lua_newuserdata(L, sizeof(Proxy));
 	Proxy *u = (Proxy *)lua_newuserdata(L, sizeof(Proxy));
 
 
 	object->retain();
 	object->retain();
 
 
 	u->object = object;
 	u->object = object;
-	u->type = type;
-
-	const char *name = "Invalid";
-	getTypeName(type, name);
+	u->type = &type;
 
 
+	const char *name = type.getName();
 	luaL_newmetatable(L, name);
 	luaL_newmetatable(L, name);
+
+	lua_getfield(L, -1, "__gc");
+	bool has_gc = !lua_isnoneornil(L, -1);
+	lua_pop(L, 1);
+
+	// Make sure mt.__gc exists, so Lua states which don't have the object's
+	// module loaded will still clean the object up when it's collected.
+	if (!has_gc)
+	{
+		lua_pushcfunction(L, w__gc);
+		lua_setfield(L, -2, "__gc");
+	}
+
 	lua_setmetatable(L, -2);
 	lua_setmetatable(L, -2);
 }
 }
 
 
-void luax_pushtype(lua_State *L, love::Type type, love::Object *object)
+void luax_pushtype(lua_State *L, love::Type &type, love::Object *object)
 {
 {
 	if (object == nullptr)
 	if (object == nullptr)
 	{
 	{
@@ -459,15 +580,15 @@ void luax_pushtype(lua_State *L, love::Type type, love::Object *object)
 	// Keep the Proxy userdata on the stack.
 	// Keep the Proxy userdata on the stack.
 }
 }
 
 
-bool luax_istype(lua_State *L, int idx, love::Type type)
+bool luax_istype(lua_State *L, int idx, love::Type &type)
 {
 {
 	if (lua_type(L, idx) != LUA_TUSERDATA)
 	if (lua_type(L, idx) != LUA_TUSERDATA)
 		return false;
 		return false;
 
 
 	Proxy *p = (Proxy *) lua_touserdata(L, idx);
 	Proxy *p = (Proxy *) lua_touserdata(L, idx);
 
 
-	if (p->type > INVALID_ID && p->type < TYPE_MAX_ENUM)
-		return typeFlags[p->type][type];
+	if (p->type != nullptr)
+		return p->type->isa(type);
 	else
 	else
 		return false;
 		return false;
 }
 }
@@ -666,10 +787,29 @@ lua_State *luax_getpinnedthread(lua_State *L)
 	return thread;
 	return thread;
 }
 }
 
 
+void luax_markdeprecated(lua_State *L, const char *name, APIType api)
+{
+	luax_markdeprecated(L, name, api, DEPRECATED_NO_REPLACEMENT, nullptr);
+}
+
+void luax_markdeprecated(lua_State *L, const char *name, APIType api, DeprecationType type, const char *replacement)
+{
+	MarkDeprecated deprecated(name, api, type, replacement);
+
+	if (deprecated.info != nullptr && deprecated.info->uses == 1)
+	{
+		luaL_where(L, 1);
+		const char *where = lua_tostring(L, -1);
+		if (where != nullptr)
+			deprecated.info->where = where;
+		lua_pop(L, 1);
+	}
+}
+
 extern "C" int luax_typerror(lua_State *L, int narg, const char *tname)
 extern "C" int luax_typerror(lua_State *L, int narg, const char *tname)
 {
 {
 	int argtype = lua_type(L, narg);
 	int argtype = lua_type(L, narg);
-	const char *argtname = 0;
+	const char *argtname = nullptr;
 
 
 	// We want to use the love type name for userdata, if possible.
 	// We want to use the love type name for userdata, if possible.
 	if (argtype == LUA_TUSERDATA && luaL_getmetafield(L, narg, "type") != 0)
 	if (argtype == LUA_TUSERDATA && luaL_getmetafield(L, narg, "type") != 0)
@@ -681,19 +821,37 @@ extern "C" int luax_typerror(lua_State *L, int narg, const char *tname)
 
 
 			// Non-love userdata might have a type metamethod which doesn't
 			// Non-love userdata might have a type metamethod which doesn't
 			// describe its type properly, so we only use it for love types.
 			// describe its type properly, so we only use it for love types.
-			love::Type t;
-			if (!love::getTypeName(argtname, t))
-				argtname = 0;
+			if (!Type::byName(argtname))
+				argtname = nullptr;
 		}
 		}
 	}
 	}
 
 
-	if (argtname == 0)
+	if (argtname == nullptr)
 		argtname = lua_typename(L, argtype);
 		argtname = lua_typename(L, argtype);
 
 
 	const char *msg = lua_pushfstring(L, "%s expected, got %s", tname, argtname);
 	const char *msg = lua_pushfstring(L, "%s expected, got %s", tname, argtname);
 	return luaL_argerror(L, narg, msg);
 	return luaL_argerror(L, narg, msg);
 }
 }
 
 
+int luax_enumerror(lua_State *L, const char *enumName, const char *value)
+{
+	return luaL_error(L, "Invalid %s: %s", enumName, value);
+}
+
+int luax_enumerror(lua_State *L, const char *enumName, const std::vector<std::string> &values, const char *value)
+{
+	std::stringstream valueStream;
+	bool first = true;
+	for (auto value : values)
+	{
+		valueStream << (first ? "'" : ", '") << value << "'";
+		first = false;
+	}
+
+	std::string valueString = valueStream.str();
+	return luaL_error(L, "Invalid %s '%s', expected one of: %s", enumName, value, valueString.c_str());
+}
+
 size_t luax_objlen(lua_State *L, int ndx)
 size_t luax_objlen(lua_State *L, int ndx)
 {
 {
 #if LUA_VERSION_NUM == 501
 #if LUA_VERSION_NUM == 501
@@ -716,11 +874,9 @@ void luax_register(lua_State *L, const char *name, const luaL_Reg *l)
 	}
 	}
 }
 }
 
 
-Type luax_type(lua_State *L, int idx)
+Type *luax_type(lua_State *L, int idx)
 {
 {
-	Type t = INVALID_ID;
-	getTypeName(luaL_checkstring(L, idx), t);
-	return t;
+	return Type::byName(luaL_checkstring(L, idx));
 }
 }
 
 
 } // love
 } // love

+ 135 - 27
love/src/jni/love/src/common/runtime.h

@@ -1,5 +1,5 @@
 /**
 /**
- * Copyright (c) 2006-2016 LOVE Development Team
+ * Copyright (c) 2006-2018 LOVE Development Team
  *
  *
  * This software is provided 'as-is', without any express or implied
  * This software is provided 'as-is', without any express or implied
  * warranty.  In no event will the authors be held liable for any damages
  * warranty.  In no event will the authors be held liable for any damages
@@ -22,7 +22,9 @@
 #define LOVE_RUNTIME_H
 #define LOVE_RUNTIME_H
 
 
 // LOVE
 // LOVE
+#include "config.h"
 #include "types.h"
 #include "types.h"
+#include "deprecation.h"
 
 
 // Lua
 // Lua
 extern "C" {
 extern "C" {
@@ -34,6 +36,7 @@ extern "C" {
 
 
 // C++
 // C++
 #include <exception>
 #include <exception>
+#include <algorithm>
 
 
 namespace love
 namespace love
 {
 {
@@ -43,6 +46,9 @@ class Object;
 class Module;
 class Module;
 class Reference;
 class Reference;
 
 
+template<typename T>
+class StrongRef;
+
 /**
 /**
  * Registries represent special tables which can be accessed with
  * Registries represent special tables which can be accessed with
  * luax_insistregistry and luax_getregistry.
  * luax_insistregistry and luax_getregistry.
@@ -62,7 +68,7 @@ enum Registry
 struct Proxy
 struct Proxy
 {
 {
 	// Holds type information (see types.h).
 	// Holds type information (see types.h).
-	Type type;
+	love::Type *type;
 
 
 	// Pointer to the actual object.
 	// Pointer to the actual object.
 	Object *object;
 	Object *object;
@@ -80,7 +86,7 @@ struct WrappedModule
 	const char *name;
 	const char *name;
 
 
 	// The type of this module.
 	// The type of this module.
-	love::Type type;
+	love::Type *type;
 
 
 	// The functions of the module (last element {0,0}).
 	// The functions of the module (last element {0,0}).
 	const luaL_Reg *functions;
 	const luaL_Reg *functions;
@@ -103,6 +109,16 @@ Reference *luax_refif(lua_State *L, int type);
  **/
  **/
 void luax_printstack(lua_State *L);
 void luax_printstack(lua_State *L);
 
 
+/**
+ * Traceback function for use with lua_pcall. Calls debug.traceback.
+ **/
+int luax_traceback(lua_State *L);
+
+/**
+ * Gets whether the value at idx is an array of tables.
+ **/
+bool luax_isarrayoftables(lua_State *L, int idx);
+
 /**
 /**
  * Converts the value at idx to a bool. It follow the same rules
  * Converts the value at idx to a bool. It follow the same rules
  * as lua_toboolean, but returns a bool instead of an int.
  * as lua_toboolean, but returns a bool instead of an int.
@@ -112,6 +128,12 @@ void luax_printstack(lua_State *L);
  **/
  **/
 bool luax_toboolean(lua_State *L, int idx);
 bool luax_toboolean(lua_State *L, int idx);
 
 
+/**
+ * Returns the boolean value at idx. Causes a Lua error if the value is not
+ * a boolean.
+ **/
+bool luax_checkboolean(lua_State *L, int idx);
+
 /**
 /**
  * Pushes a bool onto the stack. It's the same as lua_pushboolean,
  * Pushes a bool onto the stack. It's the same as lua_pushboolean,
  * but with bool instead of int.
  * but with bool instead of int.
@@ -158,6 +180,9 @@ void luax_pushstring(lua_State *L, const std::string &str);
 
 
 bool luax_boolflag(lua_State *L, int table_index, const char *key, bool defaultValue);
 bool luax_boolflag(lua_State *L, int table_index, const char *key, bool defaultValue);
 int luax_intflag(lua_State *L, int table_index, const char *key, int defaultValue);
 int luax_intflag(lua_State *L, int table_index, const char *key, int defaultValue);
+double luax_numberflag(lua_State *L, int table_index, const char *key, double defaultValue);
+
+int luax_checkintflag(lua_State *L, int table_index, const char *key);
 
 
 /**
 /**
  * Convert the value at the specified index to an Lua number, and then
  * Convert the value at the specified index to an Lua number, and then
@@ -181,6 +206,16 @@ inline float luax_checkfloat(lua_State *L, int idx)
 	return static_cast<float>(luaL_checknumber(L, idx));
 	return static_cast<float>(luaL_checknumber(L, idx));
 }
 }
 
 
+inline lua_Number luax_checknumberclamped01(lua_State *L, int idx)
+{
+	return std::min(std::max(luaL_checknumber(L, idx), 0.0), 1.0);
+}
+
+inline lua_Number luax_optnumberclamped01(lua_State *L, int idx, double def)
+{
+	return std::min(std::max(luaL_optnumber(L, idx, def), 0.0), 1.0);
+}
+
 /**
 /**
  * Require at least 'min' number of items on the stack.
  * Require at least 'min' number of items on the stack.
  * @param L The Lua state.
  * @param L The Lua state.
@@ -246,16 +281,17 @@ int luax_preload(lua_State *L, lua_CFunction f, const char *name);
 
 
 /**
 /**
  * Register a new type.
  * Register a new type.
+ * NOTE: The type is passed by pointer instead of reference because calling va_start
+ * on a reference is undefined behaviour.
  * @param type The type.
  * @param type The type.
- * @param name The type's human-readable name
  * @param ... The list of lists of member functions for the type. (of type luaL_Reg*)
  * @param ... The list of lists of member functions for the type. (of type luaL_Reg*)
  **/
  **/
-int luax_register_type(lua_State *L, love::Type type, const char *name, ...);
+int luax_register_type(lua_State *L, love::Type *type, ...);
 
 
 /**
 /**
  * Pushes the metatable of the specified type onto the stack.
  * Pushes the metatable of the specified type onto the stack.
 **/
 **/
-void luax_gettypemetatable(lua_State *L, love::Type type);
+void luax_gettypemetatable(lua_State *L, love::Type &type);
 
 
 /**
 /**
  * Do a table.insert from C
  * Do a table.insert from C
@@ -283,7 +319,19 @@ int luax_register_searcher(lua_State *L, lua_CFunction f, int pos = -1);
  * @param type The type information of the object.
  * @param type The type information of the object.
  * @param object The pointer to the actual object.
  * @param object The pointer to the actual object.
  **/
  **/
-void luax_pushtype(lua_State *L, const love::Type type, love::Object *object);
+void luax_pushtype(lua_State *L, love::Type &type, love::Object *object);
+
+template <typename T>
+void luax_pushtype(lua_State *L, T *object)
+{
+	luax_pushtype(L, T::type, object);
+}
+
+template <typename T>
+void luax_pushtype(lua_State *L, StrongRef<T> &object)
+{
+	luax_pushtype(L, T::type, object);
+}
 
 
 /**
 /**
  * Creates a new Lua representation of the given object *without* checking if it
  * Creates a new Lua representation of the given object *without* checking if it
@@ -296,7 +344,7 @@ void luax_pushtype(lua_State *L, const love::Type type, love::Object *object);
  * @param type The type information of the object.
  * @param type The type information of the object.
  * @param object The pointer to the actual object.
  * @param object The pointer to the actual object.
  **/
  **/
-void luax_rawnewtype(lua_State *L, love::Type type, love::Object *object);
+void luax_rawnewtype(lua_State *L, love::Type &type, love::Object *object);
 
 
 /**
 /**
  * Checks whether the value at idx is a certain type.
  * Checks whether the value at idx is a certain type.
@@ -305,7 +353,7 @@ void luax_rawnewtype(lua_State *L, love::Type type, love::Object *object);
  * @param type The type to check for.
  * @param type The type to check for.
  * @return True if the value is Proxy of the specified type, false otherwise.
  * @return True if the value is Proxy of the specified type, false otherwise.
  **/
  **/
-bool luax_istype(lua_State *L, int idx, love::Type type);
+bool luax_istype(lua_State *L, int idx, love::Type &type);
 
 
 /**
 /**
  * Gets the function love.module.function and puts it on top of the stack (alone). If the
  * Gets the function love.module.function and puts it on top of the stack (alone). If the
@@ -412,10 +460,42 @@ lua_State *luax_insistpinnedthread(lua_State *L);
  **/
  **/
 lua_State *luax_getpinnedthread(lua_State *L);
 lua_State *luax_getpinnedthread(lua_State *L);
 
 
+/**
+ * Mark a function as deprecated. Should only be called inside wrapper function
+ * code.
+ **/
+void luax_markdeprecated(lua_State *L, const char *name, APIType api);
+void luax_markdeprecated(lua_State *L, const char *name, APIType api, DeprecationType type, const char *replacement);
+
 extern "C" { // Also called from luasocket
 extern "C" { // Also called from luasocket
 	int luax_typerror(lua_State *L, int narg, const char *tname);
 	int luax_typerror(lua_State *L, int narg, const char *tname);
 }
 }
 
 
+int luax_enumerror(lua_State *L, const char *enumName, const char *value);
+int luax_enumerror(lua_State *L, const char *enumName, const std::vector<std::string> &values, const char *value);
+
+template <typename T>
+void luax_checktablefields(lua_State *L, int idx, const char *enumName, bool (*getConstant)(const char *, T &))
+{
+	luaL_checktype(L, idx, LUA_TTABLE);
+
+	// We want to error for invalid / misspelled fields in the table.
+	lua_pushnil(L);
+	while (lua_next(L, idx))
+	{
+		if (lua_type(L, -2) != LUA_TSTRING)
+			luax_typerror(L, -2, "string");
+
+		const char *key = luaL_checkstring(L, -2);
+		T constantvalue;
+
+		if (!getConstant(key, constantvalue))
+			luax_enumerror(L, enumName, key);
+
+		lua_pop(L, 1);
+	}
+}
+
 /**
 /**
  * Calls luax_objlen/lua_rawlen depending on version
  * Calls luax_objlen/lua_rawlen depending on version
  **/
  **/
@@ -434,42 +514,48 @@ extern "C" { // Called by enet and luasocket
  * @param type The type bit.
  * @param type The type bit.
  **/
  **/
 template <typename T>
 template <typename T>
-T *luax_checktype(lua_State *L, int idx, love::Type type)
+T *luax_checktype(lua_State *L, int idx, const love::Type &type)
 {
 {
 	if (lua_type(L, idx) != LUA_TUSERDATA)
 	if (lua_type(L, idx) != LUA_TUSERDATA)
 	{
 	{
-		const char *name = "Invalid";
-		getTypeName(type, name);
+		const char *name = type.getName();
 		luax_typerror(L, idx, name);
 		luax_typerror(L, idx, name);
 	}
 	}
 
 
 	Proxy *u = (Proxy *)lua_touserdata(L, idx);
 	Proxy *u = (Proxy *)lua_touserdata(L, idx);
 
 
-	if (u->type <= INVALID_ID || u->type >= TYPE_MAX_ENUM || !typeFlags[u->type][type])
+	if (u->type == nullptr || !u->type->isa(type))
 	{
 	{
-		const char *name = "Invalid";
-		getTypeName(type, name);
+		const char *name = type.getName();
 		luax_typerror(L, idx, name);
 		luax_typerror(L, idx, name);
 	}
 	}
 
 
+	if (u->object == nullptr)
+		luaL_error(L, "Cannot use object after it has been released.");
+
 	return (T *)u->object;
 	return (T *)u->object;
 }
 }
 
 
 template <typename T>
 template <typename T>
-T *luax_getmodule(lua_State *L, love::Type type)
+T *luax_checktype(lua_State *L, int idx)
+{
+	return luax_checktype<T>(L, idx, T::type);
+}
+
+template <typename T>
+T *luax_getmodule(lua_State *L, const love::Type &type)
 {
 {
-	const char *name = "Invalid";
-	getTypeName(type, name);
+	const char *name = type.getName();
 
 
 	luax_insistregistry(L, REGISTRY_MODULES);
 	luax_insistregistry(L, REGISTRY_MODULES);
 	lua_getfield(L, -1, name);
 	lua_getfield(L, -1, name);
 
 
 	if (!lua_isuserdata(L, -1))
 	if (!lua_isuserdata(L, -1))
-		luaL_error(L, "Tried to get nonexistant module %s.", name);
+		luaL_error(L, "Tried to get nonexistent module %s.", name);
 
 
 	Proxy *u = (Proxy *)lua_touserdata(L, -1);
 	Proxy *u = (Proxy *)lua_touserdata(L, -1);
 
 
-	if (u->type <= INVALID_ID || u->type >= TYPE_MAX_ENUM || !typeFlags[u->type][type])
+	if (u->type == nullptr || !u->type->isa(type))
 		luaL_error(L, "Incorrect module %s", name);
 		luaL_error(L, "Incorrect module %s", name);
 
 
 	lua_pop(L, 2);
 	lua_pop(L, 2);
@@ -478,10 +564,15 @@ T *luax_getmodule(lua_State *L, love::Type type)
 }
 }
 
 
 template <typename T>
 template <typename T>
-T *luax_optmodule(lua_State *L, love::Type type)
+T *luax_getmodule(lua_State *L)
 {
 {
-	const char *name = "Invalid";
-	getTypeName(type, name);
+	return luax_getmodule<T>(L, T::type);
+}
+
+template <typename T>
+T *luax_optmodule(lua_State *L, const love::Type &type)
+{
+	const char *name = type.getName();
 
 
 	luax_insistregistry(L, REGISTRY_MODULES);
 	luax_insistregistry(L, REGISTRY_MODULES);
 	lua_getfield(L, -1, name);
 	lua_getfield(L, -1, name);
@@ -494,7 +585,7 @@ T *luax_optmodule(lua_State *L, love::Type type)
 
 
 	Proxy *u = (Proxy *)lua_touserdata(L, -1);
 	Proxy *u = (Proxy *)lua_touserdata(L, -1);
 
 
-	if (!typeFlags[u->type][type])
+	if (!u->type->isa(type))
 		luaL_error(L, "Incorrect module %s", name);
 		luaL_error(L, "Incorrect module %s", name);
 
 
 	lua_pop(L, 2);
 	lua_pop(L, 2);
@@ -502,6 +593,12 @@ T *luax_optmodule(lua_State *L, love::Type type)
 	return (T *) u->object;
 	return (T *) u->object;
 }
 }
 
 
+template <typename T>
+T *luax_optmodule(lua_State *L)
+{
+	return luax_optmodule<T>(L, T::type);
+}
+
 /**
 /**
  * Converts the value at idx to the specified type without checking that
  * Converts the value at idx to the specified type without checking that
  * this conversion is valid. If the type has been previously verified with
  * this conversion is valid. If the type has been previously verified with
@@ -511,12 +608,23 @@ T *luax_optmodule(lua_State *L, love::Type type)
  * @param type The type of the object.
  * @param type The type of the object.
  **/
  **/
 template <typename T>
 template <typename T>
-T *luax_totype(lua_State *L, int idx, love::Type /*type*/)
+T *luax_totype(lua_State *L, int idx, const love::Type& /*type*/)
+{
+	T *o = (T *)(((Proxy *)lua_touserdata(L, idx))->object);
+
+	if (o == nullptr)
+		luaL_error(L, "Cannot use object after it has been released.");
+
+	return o;
+}
+
+template <typename T>
+T *luax_totype(lua_State *L, int idx)
 {
 {
-	return (T *)(((Proxy *)lua_touserdata(L, idx))->object);
+	return luax_totype<T>(L, idx, T::type);
 }
 }
 
 
-Type luax_type(lua_State *L, int idx);
+Type *luax_type(lua_State *L, int idx);
 
 
 /**
 /**
  * Converts any exceptions thrown by the passed lambda function into a Lua error.
  * Converts any exceptions thrown by the passed lambda function into a Lua error.

+ 42 - 105
love/src/jni/love/src/common/types.cpp

@@ -1,5 +1,5 @@
 /**
 /**
- * Copyright (c) 2006-2016 LOVE Development Team
+ * Copyright (c) 2006-2018 LOVE Development Team
  *
  *
  * This software is provided 'as-is', without any express or implied
  * This software is provided 'as-is', without any express or implied
  * warranty.  In no event will the authors be held liable for any damages
  * warranty.  In no event will the authors be held liable for any damages
@@ -18,126 +18,63 @@
  * 3. This notice may not be removed or altered from any source distribution.
  * 3. This notice may not be removed or altered from any source distribution.
  **/
  **/
 
 
+// STL
+#include <unordered_map>
+
 #include "types.h"
 #include "types.h"
-#include "StringMap.h"
 
 
 namespace love
 namespace love
 {
 {
 
 
-static const TypeBits *createTypeFlags()
-{
-	static TypeBits b[TYPE_MAX_ENUM];
-	TypeBits one = TypeBits(1);
-
-	b[INVALID_ID] = one << INVALID_ID;
-
-	b[OBJECT_ID] = one << OBJECT_ID;
-	b[DATA_ID] = (one << DATA_ID) | b[OBJECT_ID];
-	b[MODULE_ID] = (one << MODULE_ID) | b[OBJECT_ID];
-	b[STREAM_ID] = (one << STREAM_ID) | b[OBJECT_ID];
-
-	// Filesystem.
-	b[FILESYSTEM_FILE_ID] = (one << FILESYSTEM_FILE_ID) | b[OBJECT_ID];
-	b[FILESYSTEM_DROPPED_FILE_ID] = (one << FILESYSTEM_DROPPED_FILE_ID) | b[FILESYSTEM_FILE_ID];
-	b[FILESYSTEM_FILE_DATA_ID] = (one << FILESYSTEM_FILE_DATA_ID) | b[DATA_ID];
-
-	b[FONT_GLYPH_DATA_ID] = (one << FONT_GLYPH_DATA_ID) | b[DATA_ID];
-	b[FONT_RASTERIZER_ID] = (one << FONT_RASTERIZER_ID) | b[OBJECT_ID];
-
-	// Graphics.
-	b[GRAPHICS_DRAWABLE_ID] = (one << GRAPHICS_DRAWABLE_ID) | b[OBJECT_ID];
-	b[GRAPHICS_TEXTURE_ID] = (one << GRAPHICS_TEXTURE_ID) | b[GRAPHICS_DRAWABLE_ID];
-	b[GRAPHICS_IMAGE_ID] = (one << GRAPHICS_IMAGE_ID) | b[GRAPHICS_TEXTURE_ID];
-	b[GRAPHICS_QUAD_ID] = (one << GRAPHICS_QUAD_ID) | b[OBJECT_ID];
-	b[GRAPHICS_FONT_ID] = (one << GRAPHICS_FONT_ID) | b[OBJECT_ID];
-	b[GRAPHICS_PARTICLE_SYSTEM_ID] = (one << GRAPHICS_PARTICLE_SYSTEM_ID) | b[GRAPHICS_DRAWABLE_ID];
-	b[GRAPHICS_SPRITE_BATCH_ID] = (one << GRAPHICS_SPRITE_BATCH_ID) | b[GRAPHICS_DRAWABLE_ID];
-	b[GRAPHICS_CANVAS_ID] = (one << GRAPHICS_CANVAS_ID) | b[GRAPHICS_TEXTURE_ID];
-	b[GRAPHICS_SHADER_ID] = (one << GRAPHICS_SHADER_ID) | b[OBJECT_ID];
-	b[GRAPHICS_MESH_ID] = (one << GRAPHICS_MESH_ID) | b[GRAPHICS_DRAWABLE_ID];
-	b[GRAPHICS_TEXT_ID] = (one << GRAPHICS_TEXT_ID) | b[GRAPHICS_DRAWABLE_ID];
-	b[GRAPHICS_VIDEO_ID] = (one << GRAPHICS_VIDEO_ID) | b[GRAPHICS_DRAWABLE_ID];
-
-	// Image.
-	b[IMAGE_IMAGE_DATA_ID] = (one << IMAGE_IMAGE_DATA_ID) | b[DATA_ID];
-	b[IMAGE_COMPRESSED_IMAGE_DATA_ID] = (one << IMAGE_COMPRESSED_IMAGE_DATA_ID) | b[DATA_ID];
-
-	// Joystick.
-	b[JOYSTICK_JOYSTICK_ID] = (one << JOYSTICK_JOYSTICK_ID) | b[OBJECT_ID];
-
-	// Math.
-	b[MATH_RANDOM_GENERATOR_ID] = (one << MATH_RANDOM_GENERATOR_ID) | b[OBJECT_ID];
-	b[MATH_BEZIER_CURVE_ID] = (one << MATH_BEZIER_CURVE_ID) | b[OBJECT_ID];
-	b[MATH_COMPRESSED_DATA_ID] = (one <<MATH_COMPRESSED_DATA_ID) | b[DATA_ID];
-
-	// Audio.
-	b[AUDIO_SOURCE_ID] = (one << AUDIO_SOURCE_ID) | b[OBJECT_ID];
+static std::unordered_map<std::string, Type*> types;
 
 
-	// Sound.
-	b[SOUND_SOUND_DATA_ID] = (one << SOUND_SOUND_DATA_ID) | b[DATA_ID];
-	b[SOUND_DECODER_ID] = one << SOUND_DECODER_ID;
-
-	// Mouse.
-	b[MOUSE_CURSOR_ID] = (one << MOUSE_CURSOR_ID) | b[OBJECT_ID];
-
-	// Physics.
-	b[PHYSICS_WORLD_ID] = (one << PHYSICS_WORLD_ID) | b[OBJECT_ID];
-	b[PHYSICS_CONTACT_ID] = (one << PHYSICS_CONTACT_ID) | b[OBJECT_ID];
-	b[PHYSICS_BODY_ID] = (one << PHYSICS_BODY_ID) | b[OBJECT_ID];
-	b[PHYSICS_FIXTURE_ID] = (one << PHYSICS_FIXTURE_ID) | b[OBJECT_ID];
-	b[PHYSICS_SHAPE_ID] = (one << PHYSICS_SHAPE_ID) | b[OBJECT_ID];
-	b[PHYSICS_CIRCLE_SHAPE_ID] = (one << PHYSICS_CIRCLE_SHAPE_ID) | b[PHYSICS_SHAPE_ID];
-	b[PHYSICS_POLYGON_SHAPE_ID] = (one << PHYSICS_POLYGON_SHAPE_ID) | b[PHYSICS_SHAPE_ID];
-	b[PHYSICS_EDGE_SHAPE_ID] = (one << PHYSICS_EDGE_SHAPE_ID) | b[PHYSICS_SHAPE_ID];
-	b[PHYSICS_CHAIN_SHAPE_ID] = (one << PHYSICS_CHAIN_SHAPE_ID) | b[PHYSICS_SHAPE_ID];
-	b[PHYSICS_JOINT_ID] = (one << PHYSICS_JOINT_ID) | b[OBJECT_ID];
-	b[PHYSICS_MOUSE_JOINT_ID] = (one << PHYSICS_MOUSE_JOINT_ID) | b[PHYSICS_JOINT_ID];
-	b[PHYSICS_DISTANCE_JOINT_ID] = (one << PHYSICS_DISTANCE_JOINT_ID) | b[PHYSICS_JOINT_ID];
-	b[PHYSICS_PRISMATIC_JOINT_ID] = (one << PHYSICS_PRISMATIC_JOINT_ID) | b[PHYSICS_JOINT_ID];
-	b[PHYSICS_REVOLUTE_JOINT_ID] = (one << PHYSICS_REVOLUTE_JOINT_ID) | b[PHYSICS_JOINT_ID];
-	b[PHYSICS_PULLEY_JOINT_ID] = (one << PHYSICS_PULLEY_JOINT_ID) | b[PHYSICS_JOINT_ID];
-	b[PHYSICS_GEAR_JOINT_ID] = (one << PHYSICS_GEAR_JOINT_ID) | b[PHYSICS_JOINT_ID];
-	b[PHYSICS_FRICTION_JOINT_ID] = (one << PHYSICS_FRICTION_JOINT_ID) | b[PHYSICS_JOINT_ID];
-	b[PHYSICS_WELD_JOINT_ID] = (one << PHYSICS_WELD_JOINT_ID) | b[PHYSICS_JOINT_ID];
-	b[PHYSICS_ROPE_JOINT_ID] = (one << PHYSICS_ROPE_JOINT_ID) | b[PHYSICS_JOINT_ID];
-	b[PHYSICS_WHEEL_JOINT_ID] = (one << PHYSICS_WHEEL_JOINT_ID) | b[PHYSICS_JOINT_ID];
-	b[PHYSICS_MOTOR_JOINT_ID] = (one << PHYSICS_MOTOR_JOINT_ID) | b[PHYSICS_JOINT_ID];
-
-	// Thread.
-	b[THREAD_THREAD_ID] = (one << THREAD_THREAD_ID) | b[OBJECT_ID];
-	b[THREAD_CHANNEL_ID] = (one << THREAD_CHANNEL_ID) | b[OBJECT_ID];
-
-	// Video
-	b[VIDEO_VIDEO_STREAM_ID] = (one << VIDEO_VIDEO_STREAM_ID) | b[STREAM_ID];
-
-	// Modules.
-	b[MODULE_FILESYSTEM_ID] = (one << MODULE_FILESYSTEM_ID) | b[MODULE_ID];
-	b[MODULE_GRAPHICS_ID] = (one << MODULE_GRAPHICS_ID) | b[MODULE_ID];
-	b[MODULE_IMAGE_ID] = (one << MODULE_IMAGE_ID) | b[MODULE_ID];
-	b[MODULE_SOUND_ID] = (one << MODULE_SOUND_ID) | b[MODULE_ID];
-
-	return b;
+Type::Type(const char *name, Type *parent)
+	: name(name)
+	, parent(parent)
+	, id(0)
+	, inited(false)
+{
 }
 }
 
 
-const TypeBits *typeFlags = createTypeFlags();
-
-static StringMap<Type, TYPE_MAX_ENUM> types(nullptr, 0);
+void Type::init()
+{
+	static uint32 nextId = 1;
+
+	// Make sure we don't init twice, that would be bad
+	if (inited)
+		return;
+
+	// Note: we add it here, not in the constructor, because some Types can get initialized before the map!
+	types[name] = this;
+	id = nextId++;
+	bits[id] = true;
+	inited = true;
+
+	if (!parent)
+		return;
+	if (!parent->inited)
+		parent->init();
+	bits |= parent->bits;
+}
 
 
-void addTypeName(Type type, const char *name)
+uint32 Type::getId()
 {
 {
-	const char *n;
-	if (!types.find(type, n))
-		types.add(name, type);
+	if (!inited)
+		init();
+	return id;
 }
 }
 
 
-bool getTypeName(const char *in, love::Type &out)
+const char *Type::getName() const
 {
 {
-	return types.find(in, out);
+	return name;
 }
 }
 
 
-bool getTypeName(love::Type in, const char *&out)
+Type *Type::byName(const char *name)
 {
 {
-	return types.find(in, out);
+	auto pos = types.find(name);
+	if (pos == types.end())
+		return nullptr;
+	return pos->second;
 }
 }
 
 
 } // love
 } // love

+ 40 - 103
love/src/jni/love/src/common/types.h

@@ -1,5 +1,5 @@
 /**
 /**
- * Copyright (c) 2006-2016 LOVE Development Team
+ * Copyright (c) 2006-2018 LOVE Development Team
  *
  *
  * This software is provided 'as-is', without any express or implied
  * This software is provided 'as-is', without any express or implied
  * warranty.  In no event will the authors be held liable for any damages
  * warranty.  In no event will the authors be held liable for any damages
@@ -21,117 +21,54 @@
 #ifndef LOVE_TYPES_H
 #ifndef LOVE_TYPES_H
 #define LOVE_TYPES_H
 #define LOVE_TYPES_H
 
 
+#include "int.h"
+
 // STD
 // STD
 #include <bitset>
 #include <bitset>
+#include <vector>
 
 
 namespace love
 namespace love
 {
 {
 
 
-enum Type
+class Type
 {
 {
-	INVALID_ID = 0,
-	// Cross-module types.
-	OBJECT_ID,
-	DATA_ID,
-	MODULE_ID,
-	STREAM_ID,
-
-	// Filesystem.
-	FILESYSTEM_FILE_ID,
-	FILESYSTEM_DROPPED_FILE_ID,
-	FILESYSTEM_FILE_DATA_ID,
-
-	// Font
-	FONT_GLYPH_DATA_ID,
-	FONT_RASTERIZER_ID,
-
-	// Graphics
-	GRAPHICS_DRAWABLE_ID,
-	GRAPHICS_TEXTURE_ID,
-	GRAPHICS_IMAGE_ID,
-	GRAPHICS_QUAD_ID,
-	GRAPHICS_FONT_ID,
-	GRAPHICS_PARTICLE_SYSTEM_ID,
-	GRAPHICS_SPRITE_BATCH_ID,
-	GRAPHICS_CANVAS_ID,
-	GRAPHICS_SHADER_ID,
-	GRAPHICS_MESH_ID,
-	GRAPHICS_TEXT_ID,
-	GRAPHICS_VIDEO_ID,
-
-	// Image
-	IMAGE_IMAGE_DATA_ID,
-	IMAGE_COMPRESSED_IMAGE_DATA_ID,
-
-	// Joystick
-	JOYSTICK_JOYSTICK_ID,
-
-	// Math
-	MATH_RANDOM_GENERATOR_ID,
-	MATH_BEZIER_CURVE_ID,
-	MATH_COMPRESSED_DATA_ID,
-
-	// Audio
-	AUDIO_SOURCE_ID,
-
-	// Sound
-	SOUND_SOUND_DATA_ID,
-	SOUND_DECODER_ID,
-
-	// Mouse
-	MOUSE_CURSOR_ID,
-
-	// Physics
-	PHYSICS_WORLD_ID,
-	PHYSICS_CONTACT_ID,
-	PHYSICS_BODY_ID,
-	PHYSICS_FIXTURE_ID,
-	PHYSICS_SHAPE_ID,
-	PHYSICS_CIRCLE_SHAPE_ID,
-	PHYSICS_POLYGON_SHAPE_ID,
-	PHYSICS_EDGE_SHAPE_ID,
-	PHYSICS_CHAIN_SHAPE_ID,
-	PHYSICS_JOINT_ID,
-	PHYSICS_MOUSE_JOINT_ID,
-	PHYSICS_DISTANCE_JOINT_ID,
-	PHYSICS_PRISMATIC_JOINT_ID,
-	PHYSICS_REVOLUTE_JOINT_ID,
-	PHYSICS_PULLEY_JOINT_ID,
-	PHYSICS_GEAR_JOINT_ID,
-	PHYSICS_FRICTION_JOINT_ID,
-	PHYSICS_WELD_JOINT_ID,
-	PHYSICS_ROPE_JOINT_ID,
-	PHYSICS_WHEEL_JOINT_ID,
-	PHYSICS_MOTOR_JOINT_ID,
-
-	// Thread
-	THREAD_THREAD_ID,
-	THREAD_CHANNEL_ID,
-
-	// Video
-	VIDEO_VIDEO_STREAM_ID,
-
-	// The modules themselves. Only add abstracted modules here.
-	MODULE_FILESYSTEM_ID,
-	MODULE_GRAPHICS_ID,
-	MODULE_IMAGE_ID,
-	MODULE_SOUND_ID,
-
-	// Count the number of bits needed.
-	TYPE_MAX_ENUM
+public:
+	static const uint32 MAX_TYPES = 128;
+
+	Type(const char *name, Type *parent);
+	Type(const Type&) = delete;
+
+	static Type *byName(const char *name);
+
+	void init();
+	uint32 getId();
+	const char *getName() const;
+
+	bool isa(const uint32 &other)
+	{
+		if (!inited)
+			init();
+		return bits[other];
+	}
+
+	bool isa(const Type &other)
+	{
+		if (!inited)
+			init();
+		// Note that if this type implements the other
+		// calling init above will also have inited
+		// the other.
+		return bits[other.id];
+	}
+
+private:
+	const char * const name;
+	Type * const parent;
+	uint32 id;
+	bool inited;
+	std::bitset<MAX_TYPES> bits;
 };
 };
 
 
-typedef std::bitset<TYPE_MAX_ENUM> TypeBits;
-
-/**
- * Array of length TYPE_MAX_ENUM containing the flags for each love Type.
- **/
-extern const TypeBits *typeFlags;
-
-void addTypeName(Type type, const char *name);
-bool getTypeName(const char *in, Type &out);
-bool getTypeName(Type in, const char *&out);
-
 } // love
 } // love
 
 
 #endif // LOVE_TYPES_H
 #endif // LOVE_TYPES_H

Some files were not shown because too many files changed in this diff