Browse Source

Merge in default, update changelog

--HG--
branch : minor
Bart van Strien 12 years ago
parent
commit
3d0c5761ce
100 changed files with 2585 additions and 2037 deletions
  1. 5 4
      .hgignore
  2. 26 1
      changes.txt
  3. 28 0
      platform/macosx/Info-Framework.plist
  4. 1 1
      platform/macosx/love-Info.plist
  5. 1987 0
      platform/macosx/love-framework.xcodeproj/project.pbxproj
  6. 41 1548
      platform/macosx/love.xcodeproj/project.pbxproj
  7. 12 4
      platform/msvc2010/liblove.vcxproj
  8. 19 4
      platform/msvc2010/liblove.vcxproj.filters
  9. BIN
      platform/msvc2010/love.rc
  10. 1 1
      src/common/Data.h
  11. 1 1
      src/common/EnumMap.h
  12. 1 1
      src/common/Exception.cpp
  13. 1 1
      src/common/Exception.h
  14. 1 1
      src/common/Matrix.cpp
  15. 1 1
      src/common/Matrix.h
  16. 1 1
      src/common/Memoizer.cpp
  17. 1 1
      src/common/Memoizer.h
  18. 1 1
      src/common/Module.cpp
  19. 1 1
      src/common/Module.h
  20. 1 1
      src/common/Object.cpp
  21. 1 1
      src/common/Object.h
  22. 1 1
      src/common/Reference.cpp
  23. 1 1
      src/common/Reference.h
  24. 1 1
      src/common/StringMap.h
  25. 1 1
      src/common/Variant.cpp
  26. 1 1
      src/common/Variant.h
  27. 1 1
      src/common/Vector.cpp
  28. 1 1
      src/common/Vector.h
  29. 1 1
      src/common/b64.cpp
  30. 1 1
      src/common/b64.h
  31. 1 1
      src/common/config.h
  32. 1 1
      src/common/delay.cpp
  33. 1 1
      src/common/delay.h
  34. 1 1
      src/common/int.h
  35. 2 2
      src/common/math.cpp
  36. 1 1
      src/common/math.h
  37. 1 1
      src/common/runtime.cpp
  38. 1 1
      src/common/runtime.h
  39. 3 3
      src/common/types.h
  40. 1 1
      src/common/utf8.cpp
  41. 1 1
      src/common/utf8.h
  42. 1 1
      src/common/version.h
  43. 1 1
      src/common/wrap_Data.cpp
  44. 1 1
      src/common/wrap_Data.h
  45. 18 18
      src/libraries/luasocket/luasocket.cpp
  46. 18 18
      src/libraries/luasocket/luasocket.h
  47. 34 34
      src/libraries/utf8/utf8.h
  48. 56 56
      src/libraries/utf8/utf8/checked.h
  49. 90 119
      src/libraries/utf8/utf8/core.h
  50. 23 23
      src/libraries/utf8/utf8/unchecked.h
  51. 2 2
      src/love.cpp
  52. 1 1
      src/modules/audio/Audio.cpp
  53. 1 1
      src/modules/audio/Audio.h
  54. 1 1
      src/modules/audio/Source.cpp
  55. 1 1
      src/modules/audio/Source.h
  56. 1 1
      src/modules/audio/null/Audio.cpp
  57. 1 1
      src/modules/audio/null/Audio.h
  58. 1 1
      src/modules/audio/null/Source.cpp
  59. 1 1
      src/modules/audio/null/Source.h
  60. 1 1
      src/modules/audio/openal/Audio.cpp
  61. 3 3
      src/modules/audio/openal/Audio.h
  62. 1 1
      src/modules/audio/openal/Pool.cpp
  63. 3 3
      src/modules/audio/openal/Pool.h
  64. 1 1
      src/modules/audio/openal/Source.cpp
  65. 3 3
      src/modules/audio/openal/Source.h
  66. 1 1
      src/modules/audio/wrap_Audio.cpp
  67. 1 1
      src/modules/audio/wrap_Audio.h
  68. 1 1
      src/modules/audio/wrap_Source.cpp
  69. 1 1
      src/modules/audio/wrap_Source.h
  70. 1 1
      src/modules/event/Event.cpp
  71. 1 1
      src/modules/event/Event.h
  72. 1 1
      src/modules/event/sdl/Event.cpp
  73. 1 1
      src/modules/event/sdl/Event.h
  74. 1 1
      src/modules/event/sdl/wrap_Event.cpp
  75. 1 1
      src/modules/event/sdl/wrap_Event.h
  76. 1 1
      src/modules/filesystem/File.cpp
  77. 1 1
      src/modules/filesystem/File.h
  78. 1 1
      src/modules/filesystem/FileData.cpp
  79. 1 1
      src/modules/filesystem/FileData.h
  80. 1 1
      src/modules/filesystem/physfs/File.cpp
  81. 1 1
      src/modules/filesystem/physfs/File.h
  82. 1 1
      src/modules/filesystem/physfs/Filesystem.cpp
  83. 1 1
      src/modules/filesystem/physfs/Filesystem.h
  84. 1 1
      src/modules/filesystem/physfs/wrap_File.cpp
  85. 1 1
      src/modules/filesystem/physfs/wrap_File.h
  86. 1 1
      src/modules/filesystem/physfs/wrap_FileData.cpp
  87. 1 1
      src/modules/filesystem/physfs/wrap_FileData.h
  88. 1 1
      src/modules/filesystem/physfs/wrap_Filesystem.cpp
  89. 1 1
      src/modules/filesystem/physfs/wrap_Filesystem.h
  90. 4 4
      src/modules/font/Font.h
  91. 7 2
      src/modules/font/GlyphData.cpp
  92. 8 3
      src/modules/font/GlyphData.h
  93. 47 55
      src/modules/font/ImageRasterizer.cpp
  94. 27 18
      src/modules/font/ImageRasterizer.h
  95. 1 1
      src/modules/font/Rasterizer.cpp
  96. 2 2
      src/modules/font/Rasterizer.h
  97. 27 11
      src/modules/font/freetype/Font.cpp
  98. 4 4
      src/modules/font/freetype/Font.h
  99. 14 21
      src/modules/font/freetype/TrueTypeRasterizer.cpp
  100. 2 2
      src/modules/font/freetype/TrueTypeRasterizer.h

+ 5 - 4
.hgignore

@@ -22,10 +22,11 @@ glob:*.lib
 glob:*.ncb
 glob:*.ncb
 glob:*.exe
 glob:*.exe
 glob:*.bat
 glob:*.bat
-glob:platform/macosx/build
-glob:platform/macosx/love.xcodeproj/bill*
-glob:platform/macosx/love.xcodeproj/xcuserdata
-glob:platform/macosx/love.xcodeproj/project.xcworkspace
+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:*.DS_Store
 glob:*.dylib
 glob:*.dylib
 glob:*.dmg*
 glob:*.dmg*

+ 26 - 1
changes.txt

@@ -1,4 +1,4 @@
-LOVE 0.8.1 [Rubber Piggy]
+LOVE 0.9.0 []
 --------------
 --------------
 
 
   * Added --fused command line argument, to simulate fusing.
   * Added --fused command line argument, to simulate fusing.
@@ -10,6 +10,20 @@ LOVE 0.8.1 [Rubber Piggy]
   * Added love.mouse.setX/setY.
   * Added love.mouse.setX/setY.
   * Added love.filesystem.getIdentity.
   * Added love.filesystem.getIdentity.
   * Added HDR canvas support.
   * Added HDR canvas support.
+  * Added Source:isPlaying.
+  * Added mipmapping support (has isSupported test).
+  * Added Font:getAscent/getDescent/getBaseline.
+  * Added Canvas:getPixel.
+  * Added vertex shader support.
+  * Added boolean support to Shader:send.
+  * Added support for UTF-8 ImageFonts.
+  * Added SoundData:getDuration.
+  * Added new Channels api for love.thread.
+  * Added flags to setMode.
+  * Added support for resizable and borderless windows.
+  * Added resize event.
+  * Added love.math module.
+  * Added a platform-independent (good) random implementation to love.math.
   * OPTIONAL: Added support for GME.
   * OPTIONAL: Added support for GME.
 
 
   * Fixed crashes with font drawing on some ATI cards.
   * Fixed crashes with font drawing on some ATI cards.
@@ -26,18 +40,29 @@ LOVE 0.8.1 [Rubber Piggy]
   * Fixed multiplicative blend mode.
   * Fixed multiplicative blend mode.
   * Fixed Box2D exception in World:update.
   * Fixed Box2D exception in World:update.
   * Fixed spacing for the last character in an ImageFont.
   * Fixed spacing for the last character in an ImageFont.
+  * Fixed crash when locking SpriteBatches multiple times.
+  * Fixed File:read reading past end of file.
+  * Fixed keyrepeat settings being lost after (indirect) setMode.
 
 
   * Moved love's startup to modules/love.
   * Moved love's startup to modules/love.
 
 
   * Renamed love's boot script to 'love.boot', which can be required.
   * Renamed love's boot script to 'love.boot', which can be required.
+  * Renamed PixelEffect to Shader (but now with vertex shaders).
 
 
   * Removed love.joystick.open and friends.
   * Removed love.joystick.open and friends.
+  * Removed love.graphics.drawTest.
+  * Removed thread names.
+  * Removed old thread messaging api (see Channels).
+  * Removed love.graphics.quad/triangle.
 
 
   * Updated allocation for SoundData, it's more efficient and less wasteful.
   * Updated allocation for SoundData, it's more efficient and less wasteful.
   * Updated Source:set* functions to default z to 0.
   * Updated Source:set* functions to default z to 0.
   * Updated the windows console, it now tries to re-use an active one first.
   * Updated the windows console, it now tries to re-use an active one first.
   * Updated love.image memory handling, improves errors and thread-safety.
   * Updated love.image memory handling, improves errors and thread-safety.
   * Updated order of sleep/present in love.run (now draws, *then* sleeps).
   * Updated order of sleep/present in love.run (now draws, *then* sleeps).
+  * Updated the setFilter and setWrap methods, the second argument is now optional.
+  * Updated font rendering code, now more performant.
+  * Updated error handling, error handlers now get resolved when the error occurs.
 
 
 LOVE 0.8.0 [Rubber Piggy]
 LOVE 0.8.0 [Rubber Piggy]
 -------------------------
 -------------------------

+ 28 - 0
platform/macosx/Info-Framework.plist

@@ -0,0 +1,28 @@
+<?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.8.0</string>
+	<key>CFBundleSignature</key>
+	<string>LoVe</string>
+	<key>CFBundleVersion</key>
+	<string>0.8.0</string>
+	<key>NSPrincipalClass</key>
+	<string></string>
+</dict>
+</plist>

+ 1 - 1
platform/macosx/love-Info.plist

@@ -50,7 +50,7 @@
 	<key>CFBundleSignature</key>
 	<key>CFBundleSignature</key>
 	<string>LoVe</string>
 	<string>LoVe</string>
 	<key>NSHumanReadableCopyright</key>
 	<key>NSHumanReadableCopyright</key>
-	<string>© 2006-2012 LÖVE Development Team</string>
+	<string>© 2006-2013 LÖVE Development Team</string>
 	<key>NSMainNibFile</key>
 	<key>NSMainNibFile</key>
 	<string>SDLMain</string>
 	<string>SDLMain</string>
 	<key>NSPrincipalClass</key>
 	<key>NSPrincipalClass</key>

+ 1987 - 0
platform/macosx/love-framework.xcodeproj/project.pbxproj

@@ -0,0 +1,1987 @@
+// !$*UTF8*$!
+{
+	archiveVersion = 1;
+	classes = {
+	};
+	objectVersion = 46;
+	objects = {
+
+/* Begin PBXBuildFile section */
+		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 */; };
+		FA08F5BC16C7532A00F007B5 /* math.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 168502C6505A6D455C4F69AA /* math.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 */; };
+		FA08F61516C753F600F007B5 /* Drawable.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 58BA2BB460AF3C591B22690E /* Drawable.cpp */; };
+		FA08F61616C753F600F007B5 /* DrawQable.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 346C3C7F62FA35DA2C9C4F69 /* DrawQable.cpp */; };
+		FA08F61716C753F600F007B5 /* Graphics.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 03F17FF546D637744E263961 /* Graphics.cpp */; };
+		FA08F61816C753F600F007B5 /* Image.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 58CC50E70A375FDF53EF01B6 /* Image.cpp */; };
+		FA08F61916C753F600F007B5 /* Quad.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 3D3B224C2F9D2359288028FD /* Quad.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 */; };
+		FA08F61D16C7541400F007B5 /* GLee.c in Sources */ = {isa = PBXBuildFile; fileRef = 5725505310E75ECC5044583A /* GLee.c */; };
+		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 */; };
+		FA08F62216C7541400F007B5 /* Quad.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 74504EB554D871C36DD55F17 /* Quad.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 */; };
+		FA08F62B16C7541400F007B5 /* wrap_Quad.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4162283C11024AC35897618C /* wrap_Quad.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 /* ImageData.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1AA7781A230065F346E2313A /* ImageData.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 */; };
+		FA08F63316C7542D00F007B5 /* Joystick.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 677F545C76EA3B247329358D /* Joystick.cpp */; };
+		FA08F63416C7542D00F007B5 /* Joystick.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 55B425307C0C1C4B3EFC3A5F /* Joystick.cpp */; };
+		FA08F63516C7542D00F007B5 /* wrap_Joystick.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 139411436818381E493F00F5 /* wrap_Joystick.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 */; };
+		FA08F67616C754A900F007B5 /* Thread.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1D9B456C6C554F66660F7650 /* Thread.cpp */; };
+		FA08F67716C754A900F007B5 /* threads.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 6B3565203A1778431F8A5409 /* threads.cpp */; };
+		FA08F67816C754A900F007B5 /* wrap_Thread.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 3348511C3BCE65F003DA68CD /* wrap_Thread.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 */; };
+		FA577AB016C7507900860150 /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FA577A7916C71A1700860150 /* Cocoa.framework */; };
+		FA577AC216C7512D00860150 /* FreeType.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FA577A6716C719D900860150 /* FreeType.framework */; };
+		FA577AC316C7512F00860150 /* Game_Music_Emu.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FA577A6B16C719E400860150 /* Game_Music_Emu.framework */; };
+		FA577AC416C7513200860150 /* IL.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FA577A6916C719DE00860150 /* IL.framework */; };
+		FA577AC516C7513400860150 /* libmodplug.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FA577A8216C71A5300860150 /* libmodplug.framework */; };
+		FA577AC616C7513800860150 /* Lua.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FA577A6D16C719EA00860150 /* Lua.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 */; };
+		FA577ACC16C7514700860150 /* SDL.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FA577A7516C719FF00860150 /* SDL.framework */; };
+		FA577ACD16C7514C00860150 /* Vorbis.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FA577A7716C71A0800860150 /* Vorbis.framework */; };
+		FA7C937816DCC6C2006F2BEE /* ModMath.cpp in Sources */ = {isa = PBXBuildFile; fileRef = FA7C937316DCC6C2006F2BEE /* ModMath.cpp */; };
+		FA7C937916DCC6C2006F2BEE /* ModMath.h in Headers */ = {isa = PBXBuildFile; fileRef = FA7C937416DCC6C2006F2BEE /* ModMath.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 */; };
+		FAAFF04416CB11C700CCDE45 /* OpenAL-Soft.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FAAFF04316CB11C700CCDE45 /* OpenAL-Soft.framework */; };
+/* 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>"; };
+		0B930B8571276AA86AB87D80 /* GLee.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = GLee.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; path = Graphics.cpp; sourceTree = "<group>"; };
+		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_Joystick.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = wrap_Joystick.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>"; };
+		168502C6505A6D455C4F69AA /* math.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = math.cpp; 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 /* ImageData.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = ImageData.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>"; };
+		1D824A63414874DE584B59B2 /* Quad.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Quad.h; sourceTree = "<group>"; };
+		1D9B456C6C554F66660F7650 /* Thread.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = Thread.cpp; sourceTree = "<group>"; };
+		1DA41DFF0869489411A71AFC /* Image.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Image.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 /* ImageData.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ImageData.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_Joystick.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = wrap_Joystick.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; path = OpenGL.cpp; sourceTree = "<group>"; };
+		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>"; };
+		30FC314F4137398F63961338 /* wrap_Quad.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = wrap_Quad.h; 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>"; };
+		3348511C3BCE65F003DA68CD /* wrap_Thread.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = wrap_Thread.cpp; 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>"; };
+		346C3C7F62FA35DA2C9C4F69 /* DrawQable.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = DrawQable.cpp; 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>"; };
+		3D3B224C2F9D2359288028FD /* Quad.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = Quad.cpp; 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>"; };
+		4162283C11024AC35897618C /* wrap_Quad.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = wrap_Quad.cpp; 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 /* Joystick.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Joystick.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; path = Canvas.cpp; sourceTree = "<group>"; };
+		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 /* Joystick.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Joystick.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>"; };
+		54CC34F563B7405046FF1E43 /* audio.lua.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = audio.lua.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 /* Joystick.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = Joystick.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; path = Image.cpp; sourceTree = "<group>"; };
+		5725505310E75ECC5044583A /* GLee.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = GLee.c; sourceTree = "<group>"; };
+		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>"; };
+		58BA2BB460AF3C591B22690E /* Drawable.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = Drawable.cpp; sourceTree = "<group>"; };
+		58CC50E70A375FDF53EF01B6 /* Image.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = Image.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>"; };
+		677F545C76EA3B247329358D /* Joystick.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = Joystick.cpp; sourceTree = "<group>"; };
+		678E42771C9B415628A3234D /* wrap_ParticleSystem.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = wrap_ParticleSystem.h; sourceTree = "<group>"; };
+		68317360363E2C5339396995 /* wrap_Thread.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = wrap_Thread.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>"; };
+		74504EB554D871C36DD55F17 /* Quad.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = Quad.cpp; 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>"; };
+		7D13274605967A612D770598 /* Quad.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Quad.h; 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>"; };
+		7E1316A41EA850403C0C7343 /* DrawQable.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = DrawQable.h; 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>"; };
+		FA08F5AE16C7525600F007B5 /* Info-Framework.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = "Info-Framework.plist"; 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>"; };
+		FA577A6B16C719E400860150 /* Game_Music_Emu.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Game_Music_Emu.framework; path = /Library/Frameworks/Game_Music_Emu.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>"; };
+		FA577A7516C719FF00860150 /* SDL.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = SDL.framework; path = /Library/Frameworks/SDL.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>"; };
+		FA577A8B16C71D3600860150 /* audio.lua */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = audio.lua; 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; };
+		FA7C937316DCC6C2006F2BEE /* ModMath.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ModMath.cpp; sourceTree = "<group>"; };
+		FA7C937416DCC6C2006F2BEE /* ModMath.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ModMath.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>"; };
+		FAAFF04316CB11C700CCDE45 /* OpenAL-Soft.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "OpenAL-Soft.framework"; path = "/Library/Frameworks/OpenAL-Soft.framework"; sourceTree = "<absolute>"; };
+/* End PBXFileReference section */
+
+/* Begin PBXFrameworksBuildPhase section */
+		FA577AAB16C7507900860150 /* Frameworks */ = {
+			isa = PBXFrameworksBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+				FAAFF04416CB11C700CCDE45 /* OpenAL-Soft.framework in Frameworks */,
+				FA577AB016C7507900860150 /* Cocoa.framework in Frameworks */,
+				FA577AC216C7512D00860150 /* FreeType.framework in Frameworks */,
+				FA577AC316C7512F00860150 /* Game_Music_Emu.framework in Frameworks */,
+				FA577AC416C7513200860150 /* IL.framework in Frameworks */,
+				FA577AC516C7513400860150 /* libmodplug.framework in Frameworks */,
+				FA577AC616C7513800860150 /* Lua.framework in Frameworks */,
+				FA577AC716C7513A00860150 /* mpg123.framework in Frameworks */,
+				FA577AC816C7513C00860150 /* Ogg.framework in Frameworks */,
+				FA577ACA16C7514100860150 /* OpenGL.framework in Frameworks */,
+				FA577ACB16C7514400860150 /* physfs.framework in Frameworks */,
+				FA577ACC16C7514700860150 /* SDL.framework in Frameworks */,
+				FA577ACD16C7514C00860150 /* Vorbis.framework in Frameworks */,
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
+/* End PBXFrameworksBuildPhase section */
+
+/* Begin PBXGroup section */
+		003F4BA82B6046BC133B3F0F /* image */ = {
+			isa = PBXGroup;
+			children = (
+				25C325DC2128769F6C6A54C3 /* Image.h */,
+				78115E763B723C0C40AD47CF /* ImageData.cpp */,
+				07B301984BE42246402F7D27 /* ImageData.h */,
+				13730AB030E309FF6E2961F1 /* devil */,
+				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 = (
+				1D9B456C6C554F66660F7650 /* Thread.cpp */,
+				74215662418726B35C581E55 /* Thread.h */,
+				6B3565203A1778431F8A5409 /* threads.cpp */,
+				55AE226405CC1A55462E1D89 /* threads.h */,
+				3348511C3BCE65F003DA68CD /* wrap_Thread.cpp */,
+				68317360363E2C5339396995 /* wrap_Thread.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 */,
+				168502C6505A6D455C4F69AA /* math.cpp */,
+				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 = (
+				31E0110E5797041465FF5F95 /* Mouse.cpp */,
+				63A63DFB339266AC401B545A /* Mouse.h */,
+				1E017A8673D531394B5A3B16 /* sdl */,
+				22EF17981EBD442773FE41B6 /* wrap_Mouse.cpp */,
+				4E972C114A6C25A63B5B6EF2 /* wrap_Mouse.h */,
+			);
+			path = mouse;
+			sourceTree = "<group>";
+		};
+		1350109F709C227D4AFD423C /* libluasocket */ = {
+			isa = PBXGroup;
+			children = (
+				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 /* devil */ = {
+			isa = PBXGroup;
+			children = (
+				505F23A73BFE250833D650E4 /* Image.cpp */,
+				68616BD516DB124312B47EB3 /* Image.h */,
+				1AA7781A230065F346E2313A /* ImageData.cpp */,
+				283342E174613897621A43F1 /* ImageData.h */,
+			);
+			path = devil;
+			sourceTree = "<group>";
+		};
+		153D76205F7A4ACD12FB4C0E /* window */ = {
+			isa = PBXGroup;
+			children = (
+				351B09E51FDC338622F44624 /* Window.cpp */,
+				7423362764CF57574BB16CDA /* Window.h */,
+				63082CBA23A6046C60DA1C6F /* sdl */,
+			);
+			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 = (
+				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 */,
+				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 */,
+				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 = (
+				FA577A8B16C71D3600860150 /* audio.lua */,
+				54CC34F563B7405046FF1E43 /* audio.lua.h */,
+				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 */,
+			);
+			path = lullaby;
+			sourceTree = "<group>";
+		};
+		48DE0A5A52042D0361883E40 /* libraries */ = {
+			isa = PBXGroup;
+			children = (
+				63287ED84D0F2EEB65D249A3 /* Box2D */,
+				3AED1DE005A53DDB07902760 /* luasocket */,
+				36C14C81334735EC54E33637 /* utf8 */,
+			);
+			name = libraries;
+			path = ../../src/libraries;
+			sourceTree = "<group>";
+		};
+		4BAB08EE4A6B4A1A01DA50A4 /* sound */ = {
+			isa = PBXGroup;
+			children = (
+				43A258C229C75C15238E520C /* Decoder.h */,
+				30ED4BB03C5F11254AF12E98 /* Sound.cpp */,
+				23985AB32E7B463A2CB87E2C /* Sound.h */,
+				0C5C6C6E47851D1308411DE6 /* SoundData.cpp */,
+				785D31764A1D6CDE21BC6404 /* SoundData.h */,
+				47217E6729AC72E74FF651E3 /* lullaby */,
+				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 = (
+				677F545C76EA3B247329358D /* Joystick.cpp */,
+				4C606AEC342457600C3F0741 /* Joystick.h */,
+				687216AD6FA406C838284B91 /* sdl */,
+			);
+			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>";
+		};
+		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 */,
+				02E0744773D13AD65E7C49DC /* thread */,
+				6D590DDD41E72A60262E4A4F /* timer */,
+				153D76205F7A4ACD12FB4C0E /* window */,
+			);
+			name = modules;
+			path = ../../src/modules;
+			sourceTree = "<group>";
+		};
+		586900D11BD011D949F45D7D /* graphics */ = {
+			isa = PBXGroup;
+			children = (
+				4941079838020ECA049B5C21 /* Color.h */,
+				58BA2BB460AF3C591B22690E /* Drawable.cpp */,
+				5D93601669875EE06721689E /* Drawable.h */,
+				346C3C7F62FA35DA2C9C4F69 /* DrawQable.cpp */,
+				7E1316A41EA850403C0C7343 /* DrawQable.h */,
+				03F17FF546D637744E263961 /* Graphics.cpp */,
+				777352284E262F48543E6E7F /* Graphics.h */,
+				58CC50E70A375FDF53EF01B6 /* Image.cpp */,
+				1DA41DFF0869489411A71AFC /* Image.h */,
+				75093EE94918576801F50993 /* opengl */,
+				3D3B224C2F9D2359288028FD /* Quad.cpp */,
+				7D13274605967A612D770598 /* Quad.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 */,
+				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 = 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 */,
+				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 = (
+				55B425307C0C1C4B3EFC3A5F /* Joystick.cpp */,
+				439E46D768A266780E894800 /* Joystick.h */,
+				139411436818381E493F00F5 /* wrap_Joystick.cpp */,
+				2D7B7DEC4FC87878332E41B3 /* wrap_Joystick.h */,
+			);
+			path = sdl;
+			sourceTree = "<group>";
+		};
+		6D590DDD41E72A60262E4A4F /* timer */ = {
+			isa = PBXGroup;
+			children = (
+				2D9475890CDA3D3776435622 /* Timer.h */,
+				5CFF12567FFB5C5166631693 /* sdl */,
+				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 */,
+				5725505310E75ECC5044583A /* GLee.c */,
+				0B930B8571276AA86AB87D80 /* GLee.h */,
+				11773415762F3A38421C6DB3 /* Graphics.cpp */,
+				389E3CEC356050A27784290E /* Graphics.h */,
+				56D6030A0B8F7397715062B9 /* Image.cpp */,
+				3CFE5C4A12D5675E7C9C7BF9 /* Image.h */,
+				2E406F8328543EC63EB922C6 /* OpenGL.cpp */,
+				2C87695707B046B536F347D8 /* OpenGL.h */,
+				48A206C9004150640C432100 /* ParticleSystem.cpp */,
+				53EE57FF4DBD52BB22701160 /* ParticleSystem.h */,
+				74504EB554D871C36DD55F17 /* Quad.cpp */,
+				1D824A63414874DE584B59B2 /* Quad.h */,
+				FA577A8516C71CF000860150 /* Shader.cpp */,
+				FA577A8616C71CF000860150 /* Shader.h */,
+				4D700D182EAA46273D1E2CC4 /* SpriteBatch.cpp */,
+				727D23FA1CC755B902471A45 /* SpriteBatch.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 */,
+				5F42052D7C8271A1105541DE /* wrap_ParticleSystem.cpp */,
+				678E42771C9B415628A3234D /* wrap_ParticleSystem.h */,
+				4162283C11024AC35897618C /* wrap_Quad.cpp */,
+				30FC314F4137398F63961338 /* wrap_Quad.h */,
+				FA577A8716C71CF000860150 /* wrap_Shader.cpp */,
+				FA577A8816C71CF000860150 /* wrap_Shader.h */,
+				02C16FDB537A702F4D42534E /* wrap_SpriteBatch.cpp */,
+				2BE75A693BE206B22DAE1B2E /* wrap_SpriteBatch.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 */,
+			);
+			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>";
+		};
+		FA08F5AC16C751BA00F007B5 /* Resources */ = {
+			isa = PBXGroup;
+			children = (
+				FA08F5AE16C7525600F007B5 /* Info-Framework.plist */,
+			);
+			name = Resources;
+			sourceTree = "<group>";
+		};
+		FA577A6616C7199700860150 /* Frameworks */ = {
+			isa = PBXGroup;
+			children = (
+				FA577A7916C71A1700860150 /* Cocoa.framework */,
+				FA577A6716C719D900860150 /* FreeType.framework */,
+				FA577A6B16C719E400860150 /* Game_Music_Emu.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 */,
+				FA577A7516C719FF00860150 /* SDL.framework */,
+				FA577A7716C71A0800860150 /* Vorbis.framework */,
+			);
+			name = Frameworks;
+			sourceTree = "<group>";
+		};
+		FA7C937116DCC6C2006F2BEE /* math */ = {
+			isa = PBXGroup;
+			children = (
+				FA7C937316DCC6C2006F2BEE /* ModMath.cpp */,
+				FA7C937416DCC6C2006F2BEE /* ModMath.h */,
+				FA7C937516DCC6C2006F2BEE /* wrap_Math.cpp */,
+				FA7C937616DCC6C2006F2BEE /* wrap_Math.h */,
+			);
+			path = math;
+			sourceTree = "<group>";
+		};
+/* End PBXGroup section */
+
+/* Begin PBXHeadersBuildPhase section */
+		FA577AAC16C7507900860150 /* Headers */ = {
+			isa = PBXHeadersBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+				FA7C937916DCC6C2006F2BEE /* ModMath.h in Headers */,
+				FA7C937B16DCC6C2006F2BEE /* wrap_Math.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 = 0460;
+			};
+			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 */,
+				FA08F5B616C7530A00F007B5 /* Audio.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 */,
+				FA08F5BC16C7532A00F007B5 /* math.cpp in Sources */,
+				FA08F5BD16C7532A00F007B5 /* Matrix.cpp in Sources */,
+				FA08F5BE16C7532A00F007B5 /* Memoizer.cpp in Sources */,
+				FA08F5BF16C7532A00F007B5 /* Module.cpp in Sources */,
+				FA08F5C016C7532A00F007B5 /* Object.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 */,
+				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 */,
+				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 */,
+				FA08F5EE16C7538F00F007B5 /* b2PulleyJoint.cpp in Sources */,
+				FA08F5EF16C7538F00F007B5 /* b2RevoluteJoint.cpp in Sources */,
+				FA08F5F016C7538F00F007B5 /* b2RopeJoint.cpp in Sources */,
+				FA08F5F116C7538F00F007B5 /* b2WeldJoint.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 */,
+				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 */,
+				FA08F61516C753F600F007B5 /* Drawable.cpp in Sources */,
+				FA08F61616C753F600F007B5 /* DrawQable.cpp in Sources */,
+				FA08F61716C753F600F007B5 /* Graphics.cpp in Sources */,
+				FA08F61816C753F600F007B5 /* Image.cpp in Sources */,
+				FA08F61916C753F600F007B5 /* Quad.cpp in Sources */,
+				FA08F61A16C753F600F007B5 /* Volatile.cpp in Sources */,
+				FA08F61B16C7541400F007B5 /* Canvas.cpp in Sources */,
+				FA08F61C16C7541400F007B5 /* Font.cpp in Sources */,
+				FA08F61D16C7541400F007B5 /* GLee.c in Sources */,
+				FA08F61E16C7541400F007B5 /* Graphics.cpp in Sources */,
+				FA08F61F16C7541400F007B5 /* Image.cpp in Sources */,
+				FA08F62016C7541400F007B5 /* OpenGL.cpp in Sources */,
+				FA08F62116C7541400F007B5 /* ParticleSystem.cpp in Sources */,
+				FA08F62216C7541400F007B5 /* Quad.cpp in Sources */,
+				FA08F62316C7541400F007B5 /* Shader.cpp in Sources */,
+				FA08F62416C7541400F007B5 /* SpriteBatch.cpp in Sources */,
+				FA08F62516C7541400F007B5 /* VertexBuffer.cpp in Sources */,
+				FA08F62616C7541400F007B5 /* wrap_Canvas.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 */,
+				FA08F62B16C7541400F007B5 /* wrap_Quad.cpp in Sources */,
+				FA08F62C16C7541400F007B5 /* wrap_Shader.cpp in Sources */,
+				FA08F62D16C7541400F007B5 /* wrap_SpriteBatch.cpp in Sources */,
+				FA08F62E16C7542600F007B5 /* ImageData.cpp in Sources */,
+				FA08F62F16C7542600F007B5 /* Image.cpp in Sources */,
+				FA08F63016C7542600F007B5 /* ImageData.cpp in Sources */,
+				FA08F63116C7542600F007B5 /* wrap_Image.cpp in Sources */,
+				FA08F63216C7542600F007B5 /* wrap_ImageData.cpp in Sources */,
+				FA08F63316C7542D00F007B5 /* Joystick.cpp in Sources */,
+				FA08F63416C7542D00F007B5 /* Joystick.cpp in Sources */,
+				FA08F63516C7542D00F007B5 /* wrap_Joystick.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 */,
+				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 */,
+				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 */,
+				FA08F67616C754A900F007B5 /* Thread.cpp in Sources */,
+				FA08F67716C754A900F007B5 /* threads.cpp in Sources */,
+				FA08F67816C754A900F007B5 /* wrap_Thread.cpp in Sources */,
+				FA08F67916C754B100F007B5 /* Timer.cpp in Sources */,
+				FA08F67A16C754B100F007B5 /* wrap_Timer.cpp in Sources */,
+				FA08F67B16C754BA00F007B5 /* Window.cpp in Sources */,
+				FA08F67C16C754BA00F007B5 /* Window.cpp in Sources */,
+				FA7C937816DCC6C2006F2BEE /* ModMath.cpp in Sources */,
+				FA7C937A16DCC6C2006F2BEE /* wrap_Math.cpp in Sources */,
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
+/* End PBXSourcesBuildPhase section */
+
+/* Begin XCBuildConfiguration section */
+		10D5479E63C26BB35EB5482E /* Release */ = {
+			isa = XCBuildConfiguration;
+			buildSettings = {
+				ARCHS = "$(ARCHS_STANDARD_32_64_BIT)";
+				DEAD_CODE_STRIPPING = YES;
+				FRAMEWORK_SEARCH_PATHS = /Library/Frameworks;
+				GCC_OPTIMIZATION_LEVEL = s;
+				GCC_SYMBOLS_PRIVATE_EXTERN = NO;
+				GCC_WARN_ABOUT_RETURN_TYPE = YES;
+				GCC_WARN_UNUSED_VARIABLE = YES;
+				HEADER_SEARCH_PATHS = (
+					"\"$(SRCROOT)/../../src\"",
+					"\"$(SRCROOT)/../../src/libraries\"",
+					"\"$(SRCROOT)/../../src/modules\"",
+					/Library/Frameworks/FreeType.framework/Headers,
+					/Library/Frameworks/Lua.framework/Headers,
+					/Library/Frameworks/SDL.framework/Headers,
+				);
+				LIBRARY_SEARCH_PATHS = "";
+				LLVM_LTO = NO;
+				MACOSX_DEPLOYMENT_TARGET = 10.5;
+				ONLY_ACTIVE_ARCH = NO;
+				WARNING_CFLAGS = "-Wall";
+			};
+			name = Release;
+		};
+		64274E785071353E1A1D0D4B /* Debug */ = {
+			isa = XCBuildConfiguration;
+			buildSettings = {
+				ARCHS = "$(ARCHS_STANDARD_32_64_BIT)";
+				COPY_PHASE_STRIP = NO;
+				FRAMEWORK_SEARCH_PATHS = /Library/Frameworks;
+				GCC_OPTIMIZATION_LEVEL = 0;
+				GCC_SYMBOLS_PRIVATE_EXTERN = NO;
+				GCC_WARN_ABOUT_RETURN_TYPE = YES;
+				GCC_WARN_UNUSED_VARIABLE = YES;
+				HEADER_SEARCH_PATHS = (
+					"\"$(SRCROOT)/../../src\"",
+					"\"$(SRCROOT)/../../src/libraries\"",
+					"\"$(SRCROOT)/../../src/modules\"",
+					/Library/Frameworks/FreeType.framework/Headers,
+					/Library/Frameworks/Lua.framework/Headers,
+					/Library/Frameworks/SDL.framework/Headers,
+				);
+				LIBRARY_SEARCH_PATHS = "";
+				MACOSX_DEPLOYMENT_TARGET = 10.5;
+				ONLY_ACTIVE_ARCH = YES;
+				WARNING_CFLAGS = "-Wall";
+			};
+			name = Debug;
+		};
+		FA577AC016C7507900860150 /* Debug */ = {
+			isa = XCBuildConfiguration;
+			buildSettings = {
+				ALWAYS_SEARCH_USER_PATHS = NO;
+				DYLIB_COMPATIBILITY_VERSION = 0.8.0;
+				DYLIB_CURRENT_VERSION = 0.8.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)";
+				LD_RUNPATH_SEARCH_PATHS = "@executable_path/../Frameworks";
+				PRODUCT_NAME = love;
+				SKIP_INSTALL = YES;
+				WRAPPER_EXTENSION = framework;
+			};
+			name = Debug;
+		};
+		FA577AC116C7507900860150 /* Release */ = {
+			isa = XCBuildConfiguration;
+			buildSettings = {
+				ALWAYS_SEARCH_USER_PATHS = NO;
+				DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
+				DYLIB_COMPATIBILITY_VERSION = 0.8.0;
+				DYLIB_CURRENT_VERSION = 0.8.0;
+				FRAMEWORK_VERSION = A;
+				GCC_ENABLE_OBJC_EXCEPTIONS = YES;
+				INFOPLIST_FILE = "Info-Framework.plist";
+				LD_DYLIB_INSTALL_NAME = "@rpath/$(EXECUTABLE_PATH)";
+				LD_RUNPATH_SEARCH_PATHS = "@executable_path/../Frameworks";
+				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 */,
+			);
+			defaultConfigurationIsVisible = 0;
+			defaultConfigurationName = Debug;
+		};
+		FA577ABF16C7507900860150 /* Build configuration list for PBXNativeTarget "Framework" */ = {
+			isa = XCConfigurationList;
+			buildConfigurations = (
+				FA577AC016C7507900860150 /* Debug */,
+				FA577AC116C7507900860150 /* Release */,
+			);
+			defaultConfigurationIsVisible = 0;
+			defaultConfigurationName = Debug;
+		};
+/* End XCConfigurationList section */
+	};
+	rootObject = 08FB7793FE84155DC02AAC07 /* Project object */;
+}

File diff suppressed because it is too large
+ 41 - 1548
platform/macosx/love.xcodeproj/project.pbxproj


+ 12 - 4
platform/msvc2010/liblove.vcxproj

@@ -112,11 +112,13 @@
     <OutDir>$(SolutionDir)\bin\$(PlatformShortName)\Debug\MD\</OutDir>
     <OutDir>$(SolutionDir)\bin\$(PlatformShortName)\Debug\MD\</OutDir>
     <IntDir>$(ProjectName)\$(PlatformShortName)\Debug\</IntDir>
     <IntDir>$(ProjectName)\$(PlatformShortName)\Debug\</IntDir>
     <GenerateManifest>false</GenerateManifest>
     <GenerateManifest>false</GenerateManifest>
+    <TargetName>love</TargetName>
   </PropertyGroup>
   </PropertyGroup>
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug Dynamic|x64'">
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug Dynamic|x64'">
     <OutDir>$(SolutionDir)\bin\$(PlatformShortName)\Debug\MD\</OutDir>
     <OutDir>$(SolutionDir)\bin\$(PlatformShortName)\Debug\MD\</OutDir>
     <IntDir>$(ProjectName)\$(PlatformShortName)\Debug\</IntDir>
     <IntDir>$(ProjectName)\$(PlatformShortName)\Debug\</IntDir>
     <GenerateManifest>false</GenerateManifest>
     <GenerateManifest>false</GenerateManifest>
+    <TargetName>love</TargetName>
   </PropertyGroup>
   </PropertyGroup>
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release Static|Win32'">
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release Static|Win32'">
     <OutDir>$(SolutionDir)\bin\$(PlatformShortName)\Release\MT\</OutDir>
     <OutDir>$(SolutionDir)\bin\$(PlatformShortName)\Release\MT\</OutDir>
@@ -130,11 +132,13 @@
     <OutDir>$(SolutionDir)\bin\$(PlatformShortName)\Release\MD\</OutDir>
     <OutDir>$(SolutionDir)\bin\$(PlatformShortName)\Release\MD\</OutDir>
     <IntDir>$(ProjectName)\$(PlatformShortName)\Release\</IntDir>
     <IntDir>$(ProjectName)\$(PlatformShortName)\Release\</IntDir>
     <GenerateManifest>false</GenerateManifest>
     <GenerateManifest>false</GenerateManifest>
+    <TargetName>love</TargetName>
   </PropertyGroup>
   </PropertyGroup>
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release Dynamic|x64'">
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release Dynamic|x64'">
     <OutDir>$(SolutionDir)\bin\$(PlatformShortName)\Release\MD\</OutDir>
     <OutDir>$(SolutionDir)\bin\$(PlatformShortName)\Release\MD\</OutDir>
     <IntDir>$(ProjectName)\$(PlatformShortName)\Release\</IntDir>
     <IntDir>$(ProjectName)\$(PlatformShortName)\Release\</IntDir>
     <GenerateManifest>false</GenerateManifest>
     <GenerateManifest>false</GenerateManifest>
+    <TargetName>love</TargetName>
   </PropertyGroup>
   </PropertyGroup>
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug Dynamic|Win32'">
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug Dynamic|Win32'">
     <ClCompile>
     <ClCompile>
@@ -404,7 +408,7 @@
     <ClCompile Include="..\..\src\modules\graphics\opengl\Image.cpp" />
     <ClCompile Include="..\..\src\modules\graphics\opengl\Image.cpp" />
     <ClCompile Include="..\..\src\modules\graphics\opengl\OpenGL.cpp" />
     <ClCompile Include="..\..\src\modules\graphics\opengl\OpenGL.cpp" />
     <ClCompile Include="..\..\src\modules\graphics\opengl\ParticleSystem.cpp" />
     <ClCompile Include="..\..\src\modules\graphics\opengl\ParticleSystem.cpp" />
-    <ClCompile Include="..\..\src\modules\graphics\opengl\PixelEffect.cpp" />
+    <ClCompile Include="..\..\src\modules\graphics\opengl\Shader.cpp" />
     <ClCompile Include="..\..\src\modules\graphics\opengl\Quad.cpp" />
     <ClCompile Include="..\..\src\modules\graphics\opengl\Quad.cpp" />
     <ClCompile Include="..\..\src\modules\graphics\opengl\SpriteBatch.cpp" />
     <ClCompile Include="..\..\src\modules\graphics\opengl\SpriteBatch.cpp" />
     <ClCompile Include="..\..\src\modules\graphics\opengl\VertexBuffer.cpp" />
     <ClCompile Include="..\..\src\modules\graphics\opengl\VertexBuffer.cpp" />
@@ -413,7 +417,7 @@
     <ClCompile Include="..\..\src\modules\graphics\opengl\wrap_Graphics.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_Image.cpp" />
     <ClCompile Include="..\..\src\modules\graphics\opengl\wrap_ParticleSystem.cpp" />
     <ClCompile Include="..\..\src\modules\graphics\opengl\wrap_ParticleSystem.cpp" />
-    <ClCompile Include="..\..\src\modules\graphics\opengl\wrap_PixelEffect.cpp" />
+    <ClCompile Include="..\..\src\modules\graphics\opengl\wrap_Shader.cpp" />
     <ClCompile Include="..\..\src\modules\graphics\opengl\wrap_Quad.cpp" />
     <ClCompile Include="..\..\src\modules\graphics\opengl\wrap_Quad.cpp" />
     <ClCompile Include="..\..\src\modules\graphics\opengl\wrap_SpriteBatch.cpp" />
     <ClCompile Include="..\..\src\modules\graphics\opengl\wrap_SpriteBatch.cpp" />
     <ClCompile Include="..\..\src\modules\graphics\Quad.cpp" />
     <ClCompile Include="..\..\src\modules\graphics\Quad.cpp" />
@@ -430,6 +434,8 @@
     <ClCompile Include="..\..\src\modules\keyboard\sdl\Keyboard.cpp" />
     <ClCompile Include="..\..\src\modules\keyboard\sdl\Keyboard.cpp" />
     <ClCompile Include="..\..\src\modules\keyboard\wrap_Keyboard.cpp" />
     <ClCompile Include="..\..\src\modules\keyboard\wrap_Keyboard.cpp" />
     <ClCompile Include="..\..\src\modules\love\love.cpp" />
     <ClCompile Include="..\..\src\modules\love\love.cpp" />
+    <ClCompile Include="..\..\src\modules\math\ModMath.cpp" />
+    <ClCompile Include="..\..\src\modules\math\wrap_Math.cpp" />
     <ClCompile Include="..\..\src\modules\mouse\Mouse.cpp" />
     <ClCompile Include="..\..\src\modules\mouse\Mouse.cpp" />
     <ClCompile Include="..\..\src\modules\mouse\sdl\Mouse.cpp" />
     <ClCompile Include="..\..\src\modules\mouse\sdl\Mouse.cpp" />
     <ClCompile Include="..\..\src\modules\mouse\wrap_Mouse.cpp" />
     <ClCompile Include="..\..\src\modules\mouse\wrap_Mouse.cpp" />
@@ -631,7 +637,7 @@
     <ClInclude Include="..\..\src\modules\graphics\opengl\Image.h" />
     <ClInclude Include="..\..\src\modules\graphics\opengl\Image.h" />
     <ClInclude Include="..\..\src\modules\graphics\opengl\OpenGL.h" />
     <ClInclude Include="..\..\src\modules\graphics\opengl\OpenGL.h" />
     <ClInclude Include="..\..\src\modules\graphics\opengl\ParticleSystem.h" />
     <ClInclude Include="..\..\src\modules\graphics\opengl\ParticleSystem.h" />
-    <ClInclude Include="..\..\src\modules\graphics\opengl\PixelEffect.h" />
+    <ClInclude Include="..\..\src\modules\graphics\opengl\Shader.h" />
     <ClInclude Include="..\..\src\modules\graphics\opengl\Quad.h" />
     <ClInclude Include="..\..\src\modules\graphics\opengl\Quad.h" />
     <ClInclude Include="..\..\src\modules\graphics\opengl\SpriteBatch.h" />
     <ClInclude Include="..\..\src\modules\graphics\opengl\SpriteBatch.h" />
     <ClInclude Include="..\..\src\modules\graphics\opengl\VertexBuffer.h" />
     <ClInclude Include="..\..\src\modules\graphics\opengl\VertexBuffer.h" />
@@ -640,7 +646,7 @@
     <ClInclude Include="..\..\src\modules\graphics\opengl\wrap_Graphics.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_Image.h" />
     <ClInclude Include="..\..\src\modules\graphics\opengl\wrap_ParticleSystem.h" />
     <ClInclude Include="..\..\src\modules\graphics\opengl\wrap_ParticleSystem.h" />
-    <ClInclude Include="..\..\src\modules\graphics\opengl\wrap_PixelEffect.h" />
+    <ClInclude Include="..\..\src\modules\graphics\opengl\wrap_Shader.h" />
     <ClInclude Include="..\..\src\modules\graphics\opengl\wrap_Quad.h" />
     <ClInclude Include="..\..\src\modules\graphics\opengl\wrap_Quad.h" />
     <ClInclude Include="..\..\src\modules\graphics\opengl\wrap_SpriteBatch.h" />
     <ClInclude Include="..\..\src\modules\graphics\opengl\wrap_SpriteBatch.h" />
     <ClInclude Include="..\..\src\modules\graphics\Quad.h" />
     <ClInclude Include="..\..\src\modules\graphics\Quad.h" />
@@ -658,6 +664,8 @@
     <ClInclude Include="..\..\src\modules\keyboard\sdl\Keyboard.h" />
     <ClInclude Include="..\..\src\modules\keyboard\sdl\Keyboard.h" />
     <ClInclude Include="..\..\src\modules\keyboard\wrap_Keyboard.h" />
     <ClInclude Include="..\..\src\modules\keyboard\wrap_Keyboard.h" />
     <ClInclude Include="..\..\src\modules\love\love.h" />
     <ClInclude Include="..\..\src\modules\love\love.h" />
+    <ClInclude Include="..\..\src\modules\math\ModMath.h" />
+    <ClInclude Include="..\..\src\modules\math\wrap_Math.h" />
     <ClInclude Include="..\..\src\modules\mouse\Mouse.h" />
     <ClInclude Include="..\..\src\modules\mouse\Mouse.h" />
     <ClInclude Include="..\..\src\modules\mouse\sdl\Mouse.h" />
     <ClInclude Include="..\..\src\modules\mouse\sdl\Mouse.h" />
     <ClInclude Include="..\..\src\modules\mouse\wrap_Mouse.h" />
     <ClInclude Include="..\..\src\modules\mouse\wrap_Mouse.h" />

+ 19 - 4
platform/msvc2010/liblove.vcxproj.filters

@@ -133,6 +133,9 @@
     <Filter Include="modules\love">
     <Filter Include="modules\love">
       <UniqueIdentifier>{5fb201c1-9b39-48ca-8334-6862da260b43}</UniqueIdentifier>
       <UniqueIdentifier>{5fb201c1-9b39-48ca-8334-6862da260b43}</UniqueIdentifier>
     </Filter>
     </Filter>
+    <Filter Include="modules\math">
+      <UniqueIdentifier>{5d2c2149-93bf-42a6-b8b5-6ddbac9485a3}</UniqueIdentifier>
+    </Filter>
   </ItemGroup>
   </ItemGroup>
   <ItemGroup>
   <ItemGroup>
     <ClCompile Include="..\..\src\common\Matrix.cpp">
     <ClCompile Include="..\..\src\common\Matrix.cpp">
@@ -447,7 +450,7 @@
     <ClCompile Include="..\..\src\modules\graphics\Volatile.cpp">
     <ClCompile Include="..\..\src\modules\graphics\Volatile.cpp">
       <Filter>modules\graphics</Filter>
       <Filter>modules\graphics</Filter>
     </ClCompile>
     </ClCompile>
-    <ClCompile Include="..\..\src\modules\graphics\opengl\PixelEffect.cpp">
+    <ClCompile Include="..\..\src\modules\graphics\opengl\Shader.cpp">
       <Filter>modules\graphics\opengl</Filter>
       <Filter>modules\graphics\opengl</Filter>
     </ClCompile>
     </ClCompile>
     <ClCompile Include="..\..\src\modules\graphics\opengl\Quad.cpp">
     <ClCompile Include="..\..\src\modules\graphics\opengl\Quad.cpp">
@@ -474,7 +477,7 @@
     <ClCompile Include="..\..\src\modules\graphics\opengl\wrap_ParticleSystem.cpp">
     <ClCompile Include="..\..\src\modules\graphics\opengl\wrap_ParticleSystem.cpp">
       <Filter>modules\graphics\opengl</Filter>
       <Filter>modules\graphics\opengl</Filter>
     </ClCompile>
     </ClCompile>
-    <ClCompile Include="..\..\src\modules\graphics\opengl\wrap_PixelEffect.cpp">
+    <ClCompile Include="..\..\src\modules\graphics\opengl\wrap_Shader.cpp">
       <Filter>modules\graphics\opengl</Filter>
       <Filter>modules\graphics\opengl</Filter>
     </ClCompile>
     </ClCompile>
     <ClCompile Include="..\..\src\modules\graphics\opengl\wrap_Quad.cpp">
     <ClCompile Include="..\..\src\modules\graphics\opengl\wrap_Quad.cpp">
@@ -744,6 +747,12 @@
     <ClCompile Include="..\..\src\common\math.cpp">
     <ClCompile Include="..\..\src\common\math.cpp">
       <Filter>common</Filter>
       <Filter>common</Filter>
     </ClCompile>
     </ClCompile>
+    <ClCompile Include="..\..\src\modules\math\ModMath.cpp">
+      <Filter>modules\math</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\src\modules\math\wrap_Math.cpp">
+      <Filter>modules\math</Filter>
+    </ClCompile>
   </ItemGroup>
   </ItemGroup>
   <ItemGroup>
   <ItemGroup>
     <None Include="..\..\src\scripts\boot.lua">
     <None Include="..\..\src\scripts\boot.lua">
@@ -1129,7 +1138,7 @@
     <ClInclude Include="..\..\src\modules\graphics\opengl\ParticleSystem.h">
     <ClInclude Include="..\..\src\modules\graphics\opengl\ParticleSystem.h">
       <Filter>modules\graphics\opengl</Filter>
       <Filter>modules\graphics\opengl</Filter>
     </ClInclude>
     </ClInclude>
-    <ClInclude Include="..\..\src\modules\graphics\opengl\PixelEffect.h">
+    <ClInclude Include="..\..\src\modules\graphics\opengl\Shader.h">
       <Filter>modules\graphics\opengl</Filter>
       <Filter>modules\graphics\opengl</Filter>
     </ClInclude>
     </ClInclude>
     <ClInclude Include="..\..\src\modules\graphics\opengl\Quad.h">
     <ClInclude Include="..\..\src\modules\graphics\opengl\Quad.h">
@@ -1156,7 +1165,7 @@
     <ClInclude Include="..\..\src\modules\graphics\opengl\wrap_ParticleSystem.h">
     <ClInclude Include="..\..\src\modules\graphics\opengl\wrap_ParticleSystem.h">
       <Filter>modules\graphics\opengl</Filter>
       <Filter>modules\graphics\opengl</Filter>
     </ClInclude>
     </ClInclude>
-    <ClInclude Include="..\..\src\modules\graphics\opengl\wrap_PixelEffect.h">
+    <ClInclude Include="..\..\src\modules\graphics\opengl\wrap_Shader.h">
       <Filter>modules\graphics\opengl</Filter>
       <Filter>modules\graphics\opengl</Filter>
     </ClInclude>
     </ClInclude>
     <ClInclude Include="..\..\src\modules\graphics\opengl\wrap_Quad.h">
     <ClInclude Include="..\..\src\modules\graphics\opengl\wrap_Quad.h">
@@ -1426,6 +1435,12 @@
     <ClInclude Include="..\..\src\modules\love\love.h">
     <ClInclude Include="..\..\src\modules\love\love.h">
       <Filter>modules\love</Filter>
       <Filter>modules\love</Filter>
     </ClInclude>
     </ClInclude>
+    <ClInclude Include="..\..\src\modules\math\ModMath.h">
+      <Filter>modules\math</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\src\modules\math\wrap_Math.h">
+      <Filter>modules\math</Filter>
+    </ClInclude>
   </ItemGroup>
   </ItemGroup>
   <ItemGroup>
   <ItemGroup>
     <ResourceCompile Include="love.rc" />
     <ResourceCompile Include="love.rc" />

BIN
platform/msvc2010/love.rc


+ 1 - 1
src/common/Data.h

@@ -1,5 +1,5 @@
 /**
 /**
- * Copyright (c) 2006-2012 LOVE Development Team
+ * Copyright (c) 2006-2013 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
src/common/EnumMap.h

@@ -1,5 +1,5 @@
 /**
 /**
- * Copyright (c) 2006-2012 LOVE Development Team
+ * Copyright (c) 2006-2013 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
src/common/Exception.cpp

@@ -1,5 +1,5 @@
 /**
 /**
- * Copyright (c) 2006-2012 LOVE Development Team
+ * Copyright (c) 2006-2013 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
src/common/Exception.h

@@ -1,5 +1,5 @@
 /**
 /**
- * Copyright (c) 2006-2012 LOVE Development Team
+ * Copyright (c) 2006-2013 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
src/common/Matrix.cpp

@@ -1,5 +1,5 @@
 /**
 /**
- * Copyright (c) 2006-2012 LOVE Development Team
+ * Copyright (c) 2006-2013 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
src/common/Matrix.h

@@ -1,5 +1,5 @@
 /**
 /**
- * Copyright (c) 2006-2012 LOVE Development Team
+ * Copyright (c) 2006-2013 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
src/common/Memoizer.cpp

@@ -1,5 +1,5 @@
 /**
 /**
- * Copyright (c) 2006-2012 LOVE Development Team
+ * Copyright (c) 2006-2013 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
src/common/Memoizer.h

@@ -1,5 +1,5 @@
 /**
 /**
- * Copyright (c) 2006-2012 LOVE Development Team
+ * Copyright (c) 2006-2013 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
src/common/Module.cpp

@@ -1,5 +1,5 @@
 /**
 /**
- * Copyright (c) 2006-2012 LOVE Development Team
+ * Copyright (c) 2006-2013 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
src/common/Module.h

@@ -1,5 +1,5 @@
 /**
 /**
- * Copyright (c) 2006-2012 LOVE Development Team
+ * Copyright (c) 2006-2013 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
src/common/Object.cpp

@@ -1,5 +1,5 @@
 /**
 /**
- * Copyright (c) 2006-2012 LOVE Development Team
+ * Copyright (c) 2006-2013 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
src/common/Object.h

@@ -1,5 +1,5 @@
 /**
 /**
- * Copyright (c) 2006-2012 LOVE Development Team
+ * Copyright (c) 2006-2013 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
src/common/Reference.cpp

@@ -1,5 +1,5 @@
 /**
 /**
- * Copyright (c) 2006-2012 LOVE Development Team
+ * Copyright (c) 2006-2013 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
src/common/Reference.h

@@ -1,5 +1,5 @@
 /**
 /**
- * Copyright (c) 2006-2012 LOVE Development Team
+ * Copyright (c) 2006-2013 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
src/common/StringMap.h

@@ -1,5 +1,5 @@
 /**
 /**
- * Copyright (c) 2006-2012 LOVE Development Team
+ * Copyright (c) 2006-2013 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
src/common/Variant.cpp

@@ -1,5 +1,5 @@
 /**
 /**
- * Copyright (c) 2006-2012 LOVE Development Team
+ * Copyright (c) 2006-2013 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
src/common/Variant.h

@@ -1,5 +1,5 @@
 /**
 /**
- * Copyright (c) 2006-2012 LOVE Development Team
+ * Copyright (c) 2006-2013 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
src/common/Vector.cpp

@@ -1,5 +1,5 @@
 /**
 /**
- * Copyright (c) 2006-2012 LOVE Development Team
+ * Copyright (c) 2006-2013 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
src/common/Vector.h

@@ -1,5 +1,5 @@
 /**
 /**
- * Copyright (c) 2006-2012 LOVE Development Team
+ * Copyright (c) 2006-2013 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
src/common/b64.cpp

@@ -1,5 +1,5 @@
 /**
 /**
- * Copyright (c) 2006-2012 LOVE Development Team
+ * Copyright (c) 2006-2013 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
src/common/b64.h

@@ -1,5 +1,5 @@
 /**
 /**
- * Copyright (c) 2006-2012 LOVE Development Team
+ * Copyright (c) 2006-2013 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
src/common/config.h

@@ -1,5 +1,5 @@
 /**
 /**
- * Copyright (c) 2006-2012 LOVE Development Team
+ * Copyright (c) 2006-2013 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
src/common/delay.cpp

@@ -1,5 +1,5 @@
 /**
 /**
- * Copyright (c) 2006-2012 LOVE Development Team
+ * Copyright (c) 2006-2013 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
src/common/delay.h

@@ -1,5 +1,5 @@
 /**
 /**
- * Copyright (c) 2006-2012 LOVE Development Team
+ * Copyright (c) 2006-2013 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
src/common/int.h

@@ -1,5 +1,5 @@
 /**
 /**
- * Copyright (c) 2006-2012 LOVE Development Team
+ * Copyright (c) 2006-2013 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

+ 2 - 2
src/common/math.cpp

@@ -24,8 +24,8 @@ float random_normal(float o)
 	}
 	}
 
 
 	// else: generate numbers using the Box-Muller transform
 	// else: generate numbers using the Box-Muller transform
-	float a = sqrt(-2.0f * log(random()));
-	float b = float(LOVE_M_PI) * 2.0f * random();
+	float a = sqrt(-2.0f * log(1. - random()));
+	float b = float(LOVE_M_PI) * 2.0f * (1. - random());
 	last_randnormal = a * cos(b);
 	last_randnormal = a * cos(b);
 	return a * sin(b) * o;
 	return a * sin(b) * o;
 }
 }

+ 1 - 1
src/common/math.h

@@ -1,5 +1,5 @@
 /**
 /**
- * Copyright (c) 2006-2012 LOVE Development Team
+ * Copyright (c) 2006-2013 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
src/common/runtime.cpp

@@ -1,5 +1,5 @@
 /**
 /**
- * Copyright (c) 2006-2012 LOVE Development Team
+ * Copyright (c) 2006-2013 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
src/common/runtime.h

@@ -1,5 +1,5 @@
 /**
 /**
- * Copyright (c) 2006-2012 LOVE Development Team
+ * Copyright (c) 2006-2013 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

+ 3 - 3
src/common/types.h

@@ -1,5 +1,5 @@
 /**
 /**
- * Copyright (c) 2006-2012 LOVE Development Team
+ * Copyright (c) 2006-2013 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
@@ -52,7 +52,7 @@ enum Type
 	GRAPHICS_PARTICLE_SYSTEM_ID,
 	GRAPHICS_PARTICLE_SYSTEM_ID,
 	GRAPHICS_SPRITE_BATCH_ID,
 	GRAPHICS_SPRITE_BATCH_ID,
 	GRAPHICS_CANVAS_ID,
 	GRAPHICS_CANVAS_ID,
-	GRAPHICS_PIXELEFFECT_ID,
+	GRAPHICS_SHADER_ID,
 
 
 	// Image
 	// Image
 	IMAGE_IMAGE_DATA_ID,
 	IMAGE_IMAGE_DATA_ID,
@@ -124,7 +124,7 @@ const bits GRAPHICS_FONT_T = (bits(1) << GRAPHICS_FONT_ID) | OBJECT_T;
 const bits GRAPHICS_PARTICLE_SYSTEM_T = (bits(1) << GRAPHICS_PARTICLE_SYSTEM_ID) | GRAPHICS_DRAWABLE_T;
 const bits GRAPHICS_PARTICLE_SYSTEM_T = (bits(1) << GRAPHICS_PARTICLE_SYSTEM_ID) | GRAPHICS_DRAWABLE_T;
 const bits GRAPHICS_SPRITE_BATCH_T = (bits(1) << GRAPHICS_SPRITE_BATCH_ID) | GRAPHICS_DRAWABLE_T;
 const bits GRAPHICS_SPRITE_BATCH_T = (bits(1) << GRAPHICS_SPRITE_BATCH_ID) | GRAPHICS_DRAWABLE_T;
 const bits GRAPHICS_CANVAS_T = (bits(1) << GRAPHICS_CANVAS_ID) | GRAPHICS_DRAWQABLE_T;
 const bits GRAPHICS_CANVAS_T = (bits(1) << GRAPHICS_CANVAS_ID) | GRAPHICS_DRAWQABLE_T;
-const bits GRAPHICS_PIXELEFFECT_T = (bits(1) << GRAPHICS_PIXELEFFECT_ID) | OBJECT_T;
+const bits GRAPHICS_SHADER_T = (bits(1) << GRAPHICS_SHADER_ID) | OBJECT_T;
 
 
 // Image.
 // Image.
 const bits IMAGE_IMAGE_DATA_T = (bits(1) << IMAGE_IMAGE_DATA_ID) | DATA_T;
 const bits IMAGE_IMAGE_DATA_T = (bits(1) << IMAGE_IMAGE_DATA_ID) | DATA_T;

+ 1 - 1
src/common/utf8.cpp

@@ -1,5 +1,5 @@
 /**
 /**
- * Copyright (c) 2006-2012 LOVE Development Team
+ * Copyright (c) 2006-2013 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
src/common/utf8.h

@@ -1,5 +1,5 @@
 /**
 /**
- * Copyright (c) 2006-2012 LOVE Development Team
+ * Copyright (c) 2006-2013 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
src/common/version.h

@@ -1,5 +1,5 @@
 /**
 /**
- * Copyright (c) 2006-2012 LOVE Development Team
+ * Copyright (c) 2006-2013 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
src/common/wrap_Data.cpp

@@ -1,5 +1,5 @@
 /**
 /**
- * Copyright (c) 2006-2012 LOVE Development Team
+ * Copyright (c) 2006-2013 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
src/common/wrap_Data.h

@@ -1,5 +1,5 @@
 /**
 /**
- * Copyright (c) 2006-2012 LOVE Development Team
+ * Copyright (c) 2006-2013 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 - 18
src/libraries/luasocket/luasocket.cpp

@@ -1,22 +1,22 @@
 /**
 /**
-* Copyright (c) 2006-2012 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.
-**/
+ * Copyright (c) 2006-2013 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 "luasocket.h"
 #include "luasocket.h"
 
 

+ 18 - 18
src/libraries/luasocket/luasocket.h

@@ -1,22 +1,22 @@
 /**
 /**
-* Copyright (c) 2006-2012 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.
-**/
+ * Copyright (c) 2006-2013 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_LUASOCKET_LUASOCKET_H
 #ifndef LOVE_LUASOCKET_LUASOCKET_H
 #define LOVE_LUASOCKET_LUASOCKET_H
 #define LOVE_LUASOCKET_LUASOCKET_H

+ 34 - 34
src/libraries/utf8/utf8.h

@@ -1,34 +1,34 @@
-// Copyright 2006 Nemanja Trifunovic
-
-/*
-Permission is hereby granted, free of charge, to any person or organization
-obtaining a copy of the software and accompanying documentation covered by
-this license (the "Software") to use, reproduce, display, distribute,
-execute, and transmit the Software, and to prepare derivative works of the
-Software, and to permit third-parties to whom the Software is furnished to
-do so, all subject to the following:
-
-The copyright notices in the Software and this entire statement, including
-the above license grant, this restriction and the following disclaimer,
-must be included in all copies of the Software, in whole or in part, and
-all derivative works of the Software, unless such copies or derivative
-works are solely in the form of machine-executable object code generated by
-a source language processor.
-
-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, TITLE AND NON-INFRINGEMENT. IN NO EVENT
-SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE
-FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE,
-ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
-DEALINGS IN THE SOFTWARE.
-*/
-
-
-#ifndef UTF8_FOR_CPP_2675DCD0_9480_4c0c_B92A_CC14C027B731
-#define UTF8_FOR_CPP_2675DCD0_9480_4c0c_B92A_CC14C027B731
-
-#include "utf8/checked.h"
-#include "utf8/unchecked.h"
-
-#endif // header guard
+// Copyright 2006 Nemanja Trifunovic
+
+/*
+Permission is hereby granted, free of charge, to any person or organization
+obtaining a copy of the software and accompanying documentation covered by
+this license (the "Software") to use, reproduce, display, distribute,
+execute, and transmit the Software, and to prepare derivative works of the
+Software, and to permit third-parties to whom the Software is furnished to
+do so, all subject to the following:
+
+The copyright notices in the Software and this entire statement, including
+the above license grant, this restriction and the following disclaimer,
+must be included in all copies of the Software, in whole or in part, and
+all derivative works of the Software, unless such copies or derivative
+works are solely in the form of machine-executable object code generated by
+a source language processor.
+
+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, TITLE AND NON-INFRINGEMENT. IN NO EVENT
+SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE
+FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE,
+ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+DEALINGS IN THE SOFTWARE.
+*/
+
+
+#ifndef UTF8_FOR_CPP_2675DCD0_9480_4c0c_B92A_CC14C027B731
+#define UTF8_FOR_CPP_2675DCD0_9480_4c0c_B92A_CC14C027B731
+
+#include "utf8/checked.h"
+#include "utf8/unchecked.h"
+
+#endif // header guard

+ 56 - 56
src/libraries/utf8/utf8/checked.h

@@ -34,7 +34,7 @@ DEALINGS IN THE SOFTWARE.
 namespace utf8
 namespace utf8
 {
 {
     // Base for the exceptions that may be thrown from the library
     // Base for the exceptions that may be thrown from the library
-    class exception : public std::exception {
+    class exception : public ::std::exception {
     };
     };
 
 
     // Exceptions that may be thrown from the library functions.
     // Exceptions that may be thrown from the library functions.
@@ -69,12 +69,38 @@ namespace utf8
 
 
     /// The library API - functions intended to be called by the users
     /// The library API - functions intended to be called by the users
 
 
+    template <typename octet_iterator>
+    octet_iterator append(uint32_t cp, octet_iterator result)
+    {
+        if (!utf8::internal::is_code_point_valid(cp))
+            throw invalid_code_point(cp);
+
+        if (cp < 0x80)                        // one octet
+            *(result++) = static_cast<uint8_t>(cp);
+        else if (cp < 0x800) {                // two octets
+            *(result++) = static_cast<uint8_t>((cp >> 6)            | 0xc0);
+            *(result++) = static_cast<uint8_t>((cp & 0x3f)          | 0x80);
+        }
+        else if (cp < 0x10000) {              // three octets
+            *(result++) = static_cast<uint8_t>((cp >> 12)           | 0xe0);
+            *(result++) = static_cast<uint8_t>(((cp >> 6) & 0x3f)   | 0x80);
+            *(result++) = static_cast<uint8_t>((cp & 0x3f)          | 0x80);
+        }
+        else {                                // four octets
+            *(result++) = static_cast<uint8_t>((cp >> 18)           | 0xf0);
+            *(result++) = static_cast<uint8_t>(((cp >> 12) & 0x3f)  | 0x80);
+            *(result++) = static_cast<uint8_t>(((cp >> 6) & 0x3f)   | 0x80);
+            *(result++) = static_cast<uint8_t>((cp & 0x3f)          | 0x80);
+        }
+        return result;
+    }
+
     template <typename octet_iterator, typename output_iterator>
     template <typename octet_iterator, typename output_iterator>
     output_iterator replace_invalid(octet_iterator start, octet_iterator end, output_iterator out, uint32_t replacement)
     output_iterator replace_invalid(octet_iterator start, octet_iterator end, output_iterator out, uint32_t replacement)
     {
     {
         while (start != end) {
         while (start != end) {
             octet_iterator sequence_start = start;
             octet_iterator sequence_start = start;
-            internal::utf_error err_code = internal::validate_next(start, end);
+            internal::utf_error err_code = utf8::internal::validate_next(start, end);
             switch (err_code) {
             switch (err_code) {
                 case internal::UTF8_OK :
                 case internal::UTF8_OK :
                     for (octet_iterator it = sequence_start; it != start; ++it)
                     for (octet_iterator it = sequence_start; it != start; ++it)
@@ -83,16 +109,16 @@ namespace utf8
                 case internal::NOT_ENOUGH_ROOM:
                 case internal::NOT_ENOUGH_ROOM:
                     throw not_enough_room();
                     throw not_enough_room();
                 case internal::INVALID_LEAD:
                 case internal::INVALID_LEAD:
-                    append (replacement, out);
+                    out = utf8::append (replacement, out);
                     ++start;
                     ++start;
                     break;
                     break;
                 case internal::INCOMPLETE_SEQUENCE:
                 case internal::INCOMPLETE_SEQUENCE:
                 case internal::OVERLONG_SEQUENCE:
                 case internal::OVERLONG_SEQUENCE:
                 case internal::INVALID_CODE_POINT:
                 case internal::INVALID_CODE_POINT:
-                    append (replacement, out);
+                    out = utf8::append (replacement, out);
                     ++start;
                     ++start;
                     // just one replacement mark for the sequence
                     // just one replacement mark for the sequence
-                    while (internal::is_trail(*start) && start != end)
+                    while (start != end && utf8::internal::is_trail(*start))
                         ++start;
                         ++start;
                     break;
                     break;
             }
             }
@@ -103,41 +129,15 @@ namespace utf8
     template <typename octet_iterator, typename output_iterator>
     template <typename octet_iterator, typename output_iterator>
     inline output_iterator replace_invalid(octet_iterator start, octet_iterator end, output_iterator out)
     inline output_iterator replace_invalid(octet_iterator start, octet_iterator end, output_iterator out)
     {
     {
-        static const uint32_t replacement_marker = internal::mask16(0xfffd);
-        return replace_invalid(start, end, out, replacement_marker);
-    }
-
-    template <typename octet_iterator>
-    octet_iterator append(uint32_t cp, octet_iterator result)
-    {
-        if (!internal::is_code_point_valid(cp))
-            throw invalid_code_point(cp);
-
-        if (cp < 0x80)                        // one octet
-            *(result++) = static_cast<uint8_t>(cp);
-        else if (cp < 0x800) {                // two octets
-            *(result++) = static_cast<uint8_t>((cp >> 6)            | 0xc0);
-            *(result++) = static_cast<uint8_t>((cp & 0x3f)          | 0x80);
-        }
-        else if (cp < 0x10000) {              // three octets
-            *(result++) = static_cast<uint8_t>((cp >> 12)           | 0xe0);
-            *(result++) = static_cast<uint8_t>(((cp >> 6) & 0x3f)   | 0x80);
-            *(result++) = static_cast<uint8_t>((cp & 0x3f)          | 0x80);
-        }
-        else {      // four octets
-            *(result++) = static_cast<uint8_t>((cp >> 18)           | 0xf0);
-            *(result++) = static_cast<uint8_t>(((cp >> 12) & 0x3f)  | 0x80);
-            *(result++) = static_cast<uint8_t>(((cp >> 6) & 0x3f)   | 0x80);
-            *(result++) = static_cast<uint8_t>((cp & 0x3f)          | 0x80);
-        }
-        return result;
+        static const uint32_t replacement_marker = utf8::internal::mask16(0xfffd);
+        return utf8::replace_invalid(start, end, out, replacement_marker);
     }
     }
 
 
     template <typename octet_iterator>
     template <typename octet_iterator>
     uint32_t next(octet_iterator& it, octet_iterator end)
     uint32_t next(octet_iterator& it, octet_iterator end)
     {
     {
         uint32_t cp = 0;
         uint32_t cp = 0;
-        internal::utf_error err_code = internal::validate_next(it, end, &cp);
+        internal::utf_error err_code = utf8::internal::validate_next(it, end, cp);
         switch (err_code) {
         switch (err_code) {
             case internal::UTF8_OK :
             case internal::UTF8_OK :
                 break;
                 break;
@@ -156,7 +156,7 @@ namespace utf8
     template <typename octet_iterator>
     template <typename octet_iterator>
     uint32_t peek_next(octet_iterator it, octet_iterator end)
     uint32_t peek_next(octet_iterator it, octet_iterator end)
     {
     {
-        return next(it, end);
+        return utf8::next(it, end);
     }
     }
 
 
     template <typename octet_iterator>
     template <typename octet_iterator>
@@ -168,10 +168,10 @@ namespace utf8
 
 
         octet_iterator end = it;
         octet_iterator end = it;
         // Go back until we hit either a lead octet or start
         // Go back until we hit either a lead octet or start
-        while (internal::is_trail(*(--it)))
+        while (utf8::internal::is_trail(*(--it)))
             if (it == start)
             if (it == start)
                 throw invalid_utf8(*it); // error - no lead byte in the sequence
                 throw invalid_utf8(*it); // error - no lead byte in the sequence
-        return peek_next(it, end);
+        return utf8::peek_next(it, end);
     }
     }
 
 
     /// Deprecated in versions that include "prior"
     /// Deprecated in versions that include "prior"
@@ -179,18 +179,18 @@ namespace utf8
     uint32_t previous(octet_iterator& it, octet_iterator pass_start)
     uint32_t previous(octet_iterator& it, octet_iterator pass_start)
     {
     {
         octet_iterator end = it;
         octet_iterator end = it;
-        while (internal::is_trail(*(--it)))
+        while (utf8::internal::is_trail(*(--it)))
             if (it == pass_start)
             if (it == pass_start)
                 throw invalid_utf8(*it); // error - no lead byte in the sequence
                 throw invalid_utf8(*it); // error - no lead byte in the sequence
         octet_iterator temp = it;
         octet_iterator temp = it;
-        return next(temp, end);
+        return utf8::next(temp, end);
     }
     }
 
 
     template <typename octet_iterator, typename distance_type>
     template <typename octet_iterator, typename distance_type>
     void advance (octet_iterator& it, distance_type n, octet_iterator end)
     void advance (octet_iterator& it, distance_type n, octet_iterator end)
     {
     {
         for (distance_type i = 0; i < n; ++i)
         for (distance_type i = 0; i < n; ++i)
-            next(it, end);
+            utf8::next(it, end);
     }
     }
 
 
     template <typename octet_iterator>
     template <typename octet_iterator>
@@ -199,7 +199,7 @@ namespace utf8
     {
     {
         typename std::iterator_traits<octet_iterator>::difference_type dist;
         typename std::iterator_traits<octet_iterator>::difference_type dist;
         for (dist = 0; first < last; ++dist)
         for (dist = 0; first < last; ++dist)
-            next(first, last);
+            utf8::next(first, last);
         return dist;
         return dist;
     }
     }
 
 
@@ -207,12 +207,12 @@ namespace utf8
     octet_iterator utf16to8 (u16bit_iterator start, u16bit_iterator end, octet_iterator result)
     octet_iterator utf16to8 (u16bit_iterator start, u16bit_iterator end, octet_iterator result)
     {
     {
         while (start != end) {
         while (start != end) {
-            uint32_t cp = internal::mask16(*start++);
+            uint32_t cp = utf8::internal::mask16(*start++);
             // Take care of surrogate pairs first
             // Take care of surrogate pairs first
-            if (internal::is_lead_surrogate(cp)) {
+            if (utf8::internal::is_lead_surrogate(cp)) {
                 if (start != end) {
                 if (start != end) {
-                    uint32_t trail_surrogate = internal::mask16(*start++);
-                    if (internal::is_trail_surrogate(trail_surrogate))
+                    uint32_t trail_surrogate = utf8::internal::mask16(*start++);
+                    if (utf8::internal::is_trail_surrogate(trail_surrogate))
                         cp = (cp << 10) + trail_surrogate + internal::SURROGATE_OFFSET;
                         cp = (cp << 10) + trail_surrogate + internal::SURROGATE_OFFSET;
                     else
                     else
                         throw invalid_utf16(static_cast<uint16_t>(trail_surrogate));
                         throw invalid_utf16(static_cast<uint16_t>(trail_surrogate));
@@ -222,10 +222,10 @@ namespace utf8
 
 
             }
             }
             // Lone trail surrogate
             // Lone trail surrogate
-            else if (internal::is_trail_surrogate(cp))
+            else if (utf8::internal::is_trail_surrogate(cp))
                 throw invalid_utf16(static_cast<uint16_t>(cp));
                 throw invalid_utf16(static_cast<uint16_t>(cp));
 
 
-            result = append(cp, result);
+            result = utf8::append(cp, result);
         }
         }
         return result;
         return result;
     }
     }
@@ -234,7 +234,7 @@ namespace utf8
     u16bit_iterator utf8to16 (octet_iterator start, octet_iterator end, u16bit_iterator result)
     u16bit_iterator utf8to16 (octet_iterator start, octet_iterator end, u16bit_iterator result)
     {
     {
         while (start != end) {
         while (start != end) {
-            uint32_t cp = next(start, end);
+            uint32_t cp = utf8::next(start, end);
             if (cp > 0xffff) { //make a surrogate pair
             if (cp > 0xffff) { //make a surrogate pair
                 *result++ = static_cast<uint16_t>((cp >> 10)   + internal::LEAD_OFFSET);
                 *result++ = static_cast<uint16_t>((cp >> 10)   + internal::LEAD_OFFSET);
                 *result++ = static_cast<uint16_t>((cp & 0x3ff) + internal::TRAIL_SURROGATE_MIN);
                 *result++ = static_cast<uint16_t>((cp & 0x3ff) + internal::TRAIL_SURROGATE_MIN);
@@ -249,7 +249,7 @@ namespace utf8
     octet_iterator utf32to8 (u32bit_iterator start, u32bit_iterator end, octet_iterator result)
     octet_iterator utf32to8 (u32bit_iterator start, u32bit_iterator end, octet_iterator result)
     {
     {
         while (start != end)
         while (start != end)
-            result = append(*(start++), result);
+            result = utf8::append(*(start++), result);
 
 
         return result;
         return result;
     }
     }
@@ -258,7 +258,7 @@ namespace utf8
     u32bit_iterator utf8to32 (octet_iterator start, octet_iterator end, u32bit_iterator result)
     u32bit_iterator utf8to32 (octet_iterator start, octet_iterator end, u32bit_iterator result)
     {
     {
         while (start != end)
         while (start != end)
-            (*result++) = next(start, end);
+            (*result++) = utf8::next(start, end);
 
 
         return result;
         return result;
     }
     }
@@ -270,7 +270,7 @@ namespace utf8
       octet_iterator range_start;
       octet_iterator range_start;
       octet_iterator range_end;
       octet_iterator range_end;
       public:
       public:
-      iterator () {};
+      iterator () {}
       explicit iterator (const octet_iterator& octet_it,
       explicit iterator (const octet_iterator& octet_it,
                          const octet_iterator& range_start,
                          const octet_iterator& range_start,
                          const octet_iterator& range_end) :
                          const octet_iterator& range_end) :
@@ -284,7 +284,7 @@ namespace utf8
       uint32_t operator * () const
       uint32_t operator * () const
       {
       {
           octet_iterator temp = it;
           octet_iterator temp = it;
-          return next(temp, range_end);
+          return utf8::next(temp, range_end);
       }
       }
       bool operator == (const iterator& rhs) const
       bool operator == (const iterator& rhs) const
       {
       {
@@ -298,24 +298,24 @@ namespace utf8
       }
       }
       iterator& operator ++ ()
       iterator& operator ++ ()
       {
       {
-          next(it, range_end);
+          utf8::next(it, range_end);
           return *this;
           return *this;
       }
       }
       iterator operator ++ (int)
       iterator operator ++ (int)
       {
       {
           iterator temp = *this;
           iterator temp = *this;
-          next(it, range_end);
+          utf8::next(it, range_end);
           return temp;
           return temp;
       }
       }
       iterator& operator -- ()
       iterator& operator -- ()
       {
       {
-          prior(it, range_start);
+          utf8::prior(it, range_start);
           return *this;
           return *this;
       }
       }
       iterator operator -- (int)
       iterator operator -- (int)
       {
       {
           iterator temp = *this;
           iterator temp = *this;
-          prior(it, range_start);
+          utf8::prior(it, range_start);
           return temp;
           return temp;
       }
       }
     }; // class iterator
     }; // class iterator

+ 90 - 119
src/libraries/utf8/utf8/core.h

@@ -68,7 +68,7 @@ namespace internal
     template<typename octet_type>
     template<typename octet_type>
     inline bool is_trail(octet_type oc)
     inline bool is_trail(octet_type oc)
     {
     {
-        return ((mask8(oc) >> 6) == 0x2);
+        return ((utf8::internal::mask8(oc) >> 6) == 0x2);
     }
     }
 
 
     template <typename u16>
     template <typename u16>
@@ -92,14 +92,14 @@ namespace internal
     template <typename u32>
     template <typename u32>
     inline bool is_code_point_valid(u32 cp)
     inline bool is_code_point_valid(u32 cp)
     {
     {
-        return (cp <= CODE_POINT_MAX && !is_surrogate(cp));
+        return (cp <= CODE_POINT_MAX && !utf8::internal::is_surrogate(cp));
     }
     }
 
 
     template <typename octet_iterator>
     template <typename octet_iterator>
     inline typename std::iterator_traits<octet_iterator>::difference_type
     inline typename std::iterator_traits<octet_iterator>::difference_type
     sequence_length(octet_iterator lead_it)
     sequence_length(octet_iterator lead_it)
     {
     {
-        uint8_t lead = mask8(*lead_it);
+        uint8_t lead = utf8::internal::mask8(*lead_it);
         if (lead < 0x80)
         if (lead < 0x80)
             return 1;
             return 1;
         else if ((lead >> 5) == 0x6)
         else if ((lead >> 5) == 0x6)
@@ -133,123 +133,94 @@ namespace internal
 
 
     enum utf_error {UTF8_OK, NOT_ENOUGH_ROOM, INVALID_LEAD, INCOMPLETE_SEQUENCE, OVERLONG_SEQUENCE, INVALID_CODE_POINT};
     enum utf_error {UTF8_OK, NOT_ENOUGH_ROOM, INVALID_LEAD, INCOMPLETE_SEQUENCE, OVERLONG_SEQUENCE, INVALID_CODE_POINT};
 
 
-    /// get_sequence_x functions decode utf-8 sequences of the length x
+    /// Helper for get_sequence_x
+    template <typename octet_iterator>
+    utf_error increase_safely(octet_iterator& it, octet_iterator end)
+    {
+        if (++it == end)
+            return NOT_ENOUGH_ROOM;
+
+        if (!utf8::internal::is_trail(*it))
+            return INCOMPLETE_SEQUENCE;
+        
+        return UTF8_OK;
+    }
 
 
+    #define UTF8_CPP_INCREASE_AND_RETURN_ON_ERROR(IT, END) {utf_error ret = increase_safely(IT, END); if (ret != UTF8_OK) return ret;}    
+
+    /// get_sequence_x functions decode utf-8 sequences of the length x
     template <typename octet_iterator>
     template <typename octet_iterator>
-    utf_error get_sequence_1(octet_iterator& it, octet_iterator end, uint32_t* code_point)
+    utf_error get_sequence_1(octet_iterator& it, octet_iterator end, uint32_t& code_point)
     {
     {
-        if (it != end) {
-            if (code_point)
-                *code_point = mask8(*it);
-            return UTF8_OK;
-        }
-        return NOT_ENOUGH_ROOM;
+        if (it == end)
+            return NOT_ENOUGH_ROOM;
+
+        code_point = utf8::internal::mask8(*it);
+
+        return UTF8_OK;
     }
     }
 
 
     template <typename octet_iterator>
     template <typename octet_iterator>
-    utf_error get_sequence_2(octet_iterator& it, octet_iterator end, uint32_t* code_point)
+    utf_error get_sequence_2(octet_iterator& it, octet_iterator end, uint32_t& code_point)
     {
     {
-        utf_error ret_code = NOT_ENOUGH_ROOM;
+        if (it == end) 
+            return NOT_ENOUGH_ROOM;
+        
+        code_point = utf8::internal::mask8(*it);
 
 
-        if (it != end) {
-            uint32_t cp = mask8(*it);
-            if (++it != end) {
-                if (is_trail(*it)) {
-                    cp = ((cp << 6) & 0x7ff) + ((*it) & 0x3f);
+        UTF8_CPP_INCREASE_AND_RETURN_ON_ERROR(it, end)
 
 
-                    if (code_point)
-                        *code_point = cp;
-                    ret_code = UTF8_OK;
-                }
-                else
-                    ret_code = INCOMPLETE_SEQUENCE;
-            }
-            else
-                ret_code = NOT_ENOUGH_ROOM;
-        }
+        code_point = ((code_point << 6) & 0x7ff) + ((*it) & 0x3f);
 
 
-        return ret_code;
+        return UTF8_OK;
     }
     }
 
 
     template <typename octet_iterator>
     template <typename octet_iterator>
-    utf_error get_sequence_3(octet_iterator& it, octet_iterator end, uint32_t* code_point)
+    utf_error get_sequence_3(octet_iterator& it, octet_iterator end, uint32_t& code_point)
     {
     {
-        utf_error ret_code = NOT_ENOUGH_ROOM;
-
-        if (it != end) {
-            uint32_t cp = mask8(*it);
-            if (++it != end) {
-                if (is_trail(*it)) {
-                    cp = ((cp << 12) & 0xffff) + ((mask8(*it) << 6) & 0xfff);
-                    if (++it != end) {
-                        if (is_trail(*it)) {
-                            cp += (*it) & 0x3f;
-
-                            if (code_point)
-                                *code_point = cp;
-                            ret_code = UTF8_OK;
-                        }
-                        else 
-                            ret_code = INCOMPLETE_SEQUENCE;
-                    }
-                    else
-                        ret_code = NOT_ENOUGH_ROOM;
-                }
-                else
-                    ret_code = INCOMPLETE_SEQUENCE;
-            }
-            else
-                ret_code = NOT_ENOUGH_ROOM;
-        }
+        if (it == end)
+            return NOT_ENOUGH_ROOM;
+            
+        code_point = utf8::internal::mask8(*it);
+
+        UTF8_CPP_INCREASE_AND_RETURN_ON_ERROR(it, end)
+
+        code_point = ((code_point << 12) & 0xffff) + ((utf8::internal::mask8(*it) << 6) & 0xfff);
+
+        UTF8_CPP_INCREASE_AND_RETURN_ON_ERROR(it, end)
 
 
-        return ret_code;
+        code_point += (*it) & 0x3f;
+
+        return UTF8_OK;
     }
     }
 
 
     template <typename octet_iterator>
     template <typename octet_iterator>
-    utf_error get_sequence_4(octet_iterator& it, octet_iterator end, uint32_t* code_point)
+    utf_error get_sequence_4(octet_iterator& it, octet_iterator end, uint32_t& code_point)
     {
     {
-        utf_error ret_code = NOT_ENOUGH_ROOM;
-
-        if (it != end) {
-            uint32_t cp = mask8(*it);
-            if (++it != end) {
-                if (is_trail(*it)) {
-                    cp = ((cp << 18) & 0x1fffff) + ((mask8(*it) << 12) & 0x3ffff);
-                    if (++it != end) {
-                        if (is_trail(*it)) {
-                            cp += (mask8(*it) << 6) & 0xfff;
-                            if (++it != end) {
-                                if (is_trail(*it)) {
-                                    cp += (*it) & 0x3f;
-
-                                    if (code_point)
-                                        *code_point = cp;
-                                    ret_code = UTF8_OK;
-                                }
-                                else
-                                    ret_code = INCOMPLETE_SEQUENCE;
-                            }
-                            else
-                                ret_code = NOT_ENOUGH_ROOM;
-                        }
-                        else
-                            ret_code = INCOMPLETE_SEQUENCE;
-                    }
-                    else
-                        ret_code = NOT_ENOUGH_ROOM;
-                }
-                else 
-                    ret_code = INCOMPLETE_SEQUENCE;
-            }
-            else
-                ret_code = NOT_ENOUGH_ROOM;
-        }
+        if (it == end)
+           return NOT_ENOUGH_ROOM;
 
 
-        return ret_code;
+        code_point = utf8::internal::mask8(*it);
+
+        UTF8_CPP_INCREASE_AND_RETURN_ON_ERROR(it, end)
+
+        code_point = ((code_point << 18) & 0x1fffff) + ((utf8::internal::mask8(*it) << 12) & 0x3ffff);
+
+        UTF8_CPP_INCREASE_AND_RETURN_ON_ERROR(it, end)
+
+        code_point += (utf8::internal::mask8(*it) << 6) & 0xfff;
+
+        UTF8_CPP_INCREASE_AND_RETURN_ON_ERROR(it, end)
+
+        code_point += (*it) & 0x3f;
+
+        return UTF8_OK;
     }
     }
 
 
+    #undef UTF8_CPP_INCREASE_AND_RETURN_ON_ERROR
+
     template <typename octet_iterator>
     template <typename octet_iterator>
-    utf_error validate_next(octet_iterator& it, octet_iterator end, uint32_t* code_point)
+    utf_error validate_next(octet_iterator& it, octet_iterator end, uint32_t& code_point)
     {
     {
         // Save the original value of it so we can go back in case of failure
         // Save the original value of it so we can go back in case of failure
         // Of course, it does not make much sense with i.e. stream iterators
         // Of course, it does not make much sense with i.e. stream iterators
@@ -258,34 +229,33 @@ namespace internal
         uint32_t cp = 0;
         uint32_t cp = 0;
         // Determine the sequence length based on the lead octet
         // Determine the sequence length based on the lead octet
         typedef typename std::iterator_traits<octet_iterator>::difference_type octet_difference_type;
         typedef typename std::iterator_traits<octet_iterator>::difference_type octet_difference_type;
-        octet_difference_type length = sequence_length(it);
-        if (length == 0)
-            return INVALID_LEAD;
+        const octet_difference_type length = utf8::internal::sequence_length(it);
 
 
-        // Now that we have a valid sequence length, get trail octets and calculate the code point
+        // Get trail octets and calculate the code point
         utf_error err = UTF8_OK;
         utf_error err = UTF8_OK;
         switch (length) {
         switch (length) {
+            case 0: 
+                return INVALID_LEAD;
             case 1:
             case 1:
-                err = get_sequence_1(it, end, &cp);
+                err = utf8::internal::get_sequence_1(it, end, cp);
                 break;
                 break;
             case 2:
             case 2:
-                err = get_sequence_2(it, end, &cp);
+                err = utf8::internal::get_sequence_2(it, end, cp);
             break;
             break;
             case 3:
             case 3:
-                err = get_sequence_3(it, end, &cp);
+                err = utf8::internal::get_sequence_3(it, end, cp);
             break;
             break;
             case 4:
             case 4:
-                err = get_sequence_4(it, end, &cp);
+                err = utf8::internal::get_sequence_4(it, end, cp);
             break;
             break;
         }
         }
 
 
         if (err == UTF8_OK) {
         if (err == UTF8_OK) {
             // Decoding succeeded. Now, security checks...
             // Decoding succeeded. Now, security checks...
-            if (is_code_point_valid(cp)) {
-                if (!is_overlong_sequence(cp, length)){
+            if (utf8::internal::is_code_point_valid(cp)) {
+                if (!utf8::internal::is_overlong_sequence(cp, length)){
                     // Passed! Return here.
                     // Passed! Return here.
-                    if (code_point)
-                        *code_point = cp;
+                    code_point = cp;
                     ++it;
                     ++it;
                     return UTF8_OK;
                     return UTF8_OK;
                 }
                 }
@@ -303,7 +273,8 @@ namespace internal
 
 
     template <typename octet_iterator>
     template <typename octet_iterator>
     inline utf_error validate_next(octet_iterator& it, octet_iterator end) {
     inline utf_error validate_next(octet_iterator& it, octet_iterator end) {
-        return validate_next(it, end, 0);
+        uint32_t ignored;
+        return utf8::internal::validate_next(it, end, ignored);
     }
     }
 
 
 } // namespace internal
 } // namespace internal
@@ -318,7 +289,7 @@ namespace internal
     {
     {
         octet_iterator result = start;
         octet_iterator result = start;
         while (result != end) {
         while (result != end) {
-            internal::utf_error err_code = internal::validate_next(result, end);
+            utf8::internal::utf_error err_code = utf8::internal::validate_next(result, end);
             if (err_code != internal::UTF8_OK)
             if (err_code != internal::UTF8_OK)
                 return result;
                 return result;
         }
         }
@@ -328,27 +299,27 @@ namespace internal
     template <typename octet_iterator>
     template <typename octet_iterator>
     inline bool is_valid(octet_iterator start, octet_iterator end)
     inline bool is_valid(octet_iterator start, octet_iterator end)
     {
     {
-        return (find_invalid(start, end) == end);
+        return (utf8::find_invalid(start, end) == end);
     }
     }
 
 
     template <typename octet_iterator>
     template <typename octet_iterator>
     inline bool starts_with_bom (octet_iterator it, octet_iterator end)
     inline bool starts_with_bom (octet_iterator it, octet_iterator end)
     {
     {
         return (
         return (
-            ((it != end) && (internal::mask8(*it++)) == bom[0]) &&
-            ((it != end) && (internal::mask8(*it++)) == bom[1]) &&
-            ((it != end) && (internal::mask8(*it))   == bom[2])
+            ((it != end) && (utf8::internal::mask8(*it++)) == bom[0]) &&
+            ((it != end) && (utf8::internal::mask8(*it++)) == bom[1]) &&
+            ((it != end) && (utf8::internal::mask8(*it))   == bom[2])
            );
            );
     }
     }
 	
 	
-	//Deprecated in release 2.3 
+    //Deprecated in release 2.3 
     template <typename octet_iterator>
     template <typename octet_iterator>
     inline bool is_bom (octet_iterator it)
     inline bool is_bom (octet_iterator it)
     {
     {
         return (
         return (
-            (internal::mask8(*it++)) == bom[0] &&
-            (internal::mask8(*it++)) == bom[1] &&
-            (internal::mask8(*it))   == bom[2]
+            (utf8::internal::mask8(*it++)) == bom[0] &&
+            (utf8::internal::mask8(*it++)) == bom[1] &&
+            (utf8::internal::mask8(*it))   == bom[2]
            );
            );
     }
     }
 } // namespace utf8
 } // namespace utf8

+ 23 - 23
src/libraries/utf8/utf8/unchecked.h

@@ -60,7 +60,7 @@ namespace utf8
         template <typename octet_iterator>
         template <typename octet_iterator>
         uint32_t next(octet_iterator& it)
         uint32_t next(octet_iterator& it)
         {
         {
-            uint32_t cp = internal::mask8(*it);
+            uint32_t cp = utf8::internal::mask8(*it);
             typename std::iterator_traits<octet_iterator>::difference_type length = utf8::internal::sequence_length(it);
             typename std::iterator_traits<octet_iterator>::difference_type length = utf8::internal::sequence_length(it);
             switch (length) {
             switch (length) {
                 case 1:
                 case 1:
@@ -71,15 +71,15 @@ namespace utf8
                     break;
                     break;
                 case 3:
                 case 3:
                     ++it; 
                     ++it; 
-                    cp = ((cp << 12) & 0xffff) + ((internal::mask8(*it) << 6) & 0xfff);
+                    cp = ((cp << 12) & 0xffff) + ((utf8::internal::mask8(*it) << 6) & 0xfff);
                     ++it;
                     ++it;
                     cp += (*it) & 0x3f;
                     cp += (*it) & 0x3f;
                     break;
                     break;
                 case 4:
                 case 4:
                     ++it;
                     ++it;
-                    cp = ((cp << 18) & 0x1fffff) + ((internal::mask8(*it) << 12) & 0x3ffff);                
+                    cp = ((cp << 18) & 0x1fffff) + ((utf8::internal::mask8(*it) << 12) & 0x3ffff);                
                     ++it;
                     ++it;
-                    cp += (internal::mask8(*it) << 6) & 0xfff;
+                    cp += (utf8::internal::mask8(*it) << 6) & 0xfff;
                     ++it;
                     ++it;
                     cp += (*it) & 0x3f; 
                     cp += (*it) & 0x3f; 
                     break;
                     break;
@@ -91,29 +91,29 @@ namespace utf8
         template <typename octet_iterator>
         template <typename octet_iterator>
         uint32_t peek_next(octet_iterator it)
         uint32_t peek_next(octet_iterator it)
         {
         {
-            return next(it);    
+            return utf8::unchecked::next(it);    
         }
         }
 
 
         template <typename octet_iterator>
         template <typename octet_iterator>
         uint32_t prior(octet_iterator& it)
         uint32_t prior(octet_iterator& it)
         {
         {
-            while (internal::is_trail(*(--it))) ;
+            while (utf8::internal::is_trail(*(--it))) ;
             octet_iterator temp = it;
             octet_iterator temp = it;
-            return next(temp);
+            return utf8::unchecked::next(temp);
         }
         }
 
 
         // Deprecated in versions that include prior, but only for the sake of consistency (see utf8::previous)
         // Deprecated in versions that include prior, but only for the sake of consistency (see utf8::previous)
         template <typename octet_iterator>
         template <typename octet_iterator>
         inline uint32_t previous(octet_iterator& it)
         inline uint32_t previous(octet_iterator& it)
         {
         {
-            return prior(it);
+            return utf8::unchecked::prior(it);
         }
         }
 
 
         template <typename octet_iterator, typename distance_type>
         template <typename octet_iterator, typename distance_type>
         void advance (octet_iterator& it, distance_type n)
         void advance (octet_iterator& it, distance_type n)
         {
         {
             for (distance_type i = 0; i < n; ++i)
             for (distance_type i = 0; i < n; ++i)
-                next(it);
+                utf8::unchecked::next(it);
         }
         }
 
 
         template <typename octet_iterator>
         template <typename octet_iterator>
@@ -122,7 +122,7 @@ namespace utf8
         {
         {
             typename std::iterator_traits<octet_iterator>::difference_type dist;
             typename std::iterator_traits<octet_iterator>::difference_type dist;
             for (dist = 0; first < last; ++dist) 
             for (dist = 0; first < last; ++dist) 
-                next(first);
+                utf8::unchecked::next(first);
             return dist;
             return dist;
         }
         }
 
 
@@ -130,13 +130,13 @@ namespace utf8
         octet_iterator utf16to8 (u16bit_iterator start, u16bit_iterator end, octet_iterator result)
         octet_iterator utf16to8 (u16bit_iterator start, u16bit_iterator end, octet_iterator result)
         {       
         {       
             while (start != end) {
             while (start != end) {
-                uint32_t cp = internal::mask16(*start++);
+                uint32_t cp = utf8::internal::mask16(*start++);
             // Take care of surrogate pairs first
             // Take care of surrogate pairs first
-                if (internal::is_lead_surrogate(cp)) {
-                    uint32_t trail_surrogate = internal::mask16(*start++);
+                if (utf8::internal::is_lead_surrogate(cp)) {
+                    uint32_t trail_surrogate = utf8::internal::mask16(*start++);
                     cp = (cp << 10) + trail_surrogate + internal::SURROGATE_OFFSET;
                     cp = (cp << 10) + trail_surrogate + internal::SURROGATE_OFFSET;
                 }
                 }
-                result = append(cp, result);
+                result = utf8::unchecked::append(cp, result);
             }
             }
             return result;         
             return result;         
         }
         }
@@ -145,7 +145,7 @@ namespace utf8
         u16bit_iterator utf8to16 (octet_iterator start, octet_iterator end, u16bit_iterator result)
         u16bit_iterator utf8to16 (octet_iterator start, octet_iterator end, u16bit_iterator result)
         {
         {
             while (start < end) {
             while (start < end) {
-                uint32_t cp = next(start);
+                uint32_t cp = utf8::unchecked::next(start);
                 if (cp > 0xffff) { //make a surrogate pair
                 if (cp > 0xffff) { //make a surrogate pair
                     *result++ = static_cast<uint16_t>((cp >> 10)   + internal::LEAD_OFFSET);
                     *result++ = static_cast<uint16_t>((cp >> 10)   + internal::LEAD_OFFSET);
                     *result++ = static_cast<uint16_t>((cp & 0x3ff) + internal::TRAIL_SURROGATE_MIN);
                     *result++ = static_cast<uint16_t>((cp & 0x3ff) + internal::TRAIL_SURROGATE_MIN);
@@ -160,7 +160,7 @@ namespace utf8
         octet_iterator utf32to8 (u32bit_iterator start, u32bit_iterator end, octet_iterator result)
         octet_iterator utf32to8 (u32bit_iterator start, u32bit_iterator end, octet_iterator result)
         {
         {
             while (start != end)
             while (start != end)
-                result = append(*(start++), result);
+                result = utf8::unchecked::append(*(start++), result);
 
 
             return result;
             return result;
         }
         }
@@ -169,7 +169,7 @@ namespace utf8
         u32bit_iterator utf8to32 (octet_iterator start, octet_iterator end, u32bit_iterator result)
         u32bit_iterator utf8to32 (octet_iterator start, octet_iterator end, u32bit_iterator result)
         {
         {
             while (start < end)
             while (start < end)
-                (*result++) = next(start);
+                (*result++) = utf8::unchecked::next(start);
 
 
             return result;
             return result;
         }
         }
@@ -179,14 +179,14 @@ namespace utf8
           class iterator : public std::iterator <std::bidirectional_iterator_tag, uint32_t> { 
           class iterator : public std::iterator <std::bidirectional_iterator_tag, uint32_t> { 
             octet_iterator it;
             octet_iterator it;
             public:
             public:
-            iterator () {};
+            iterator () {}
             explicit iterator (const octet_iterator& octet_it): it(octet_it) {}
             explicit iterator (const octet_iterator& octet_it): it(octet_it) {}
             // the default "big three" are OK
             // the default "big three" are OK
             octet_iterator base () const { return it; }
             octet_iterator base () const { return it; }
             uint32_t operator * () const
             uint32_t operator * () const
             {
             {
                 octet_iterator temp = it;
                 octet_iterator temp = it;
-                return next(temp);
+                return utf8::unchecked::next(temp);
             }
             }
             bool operator == (const iterator& rhs) const 
             bool operator == (const iterator& rhs) const 
             { 
             { 
@@ -198,24 +198,24 @@ namespace utf8
             }
             }
             iterator& operator ++ () 
             iterator& operator ++ () 
             {
             {
-                std::advance(it, internal::sequence_length(it));
+                ::std::advance(it, utf8::internal::sequence_length(it));
                 return *this;
                 return *this;
             }
             }
             iterator operator ++ (int)
             iterator operator ++ (int)
             {
             {
                 iterator temp = *this;
                 iterator temp = *this;
-                std::advance(it, internal::sequence_length(it));
+                ::std::advance(it, utf8::internal::sequence_length(it));
                 return temp;
                 return temp;
             }  
             }  
             iterator& operator -- ()
             iterator& operator -- ()
             {
             {
-                prior(it);
+                utf8::unchecked::prior(it);
                 return *this;
                 return *this;
             }
             }
             iterator operator -- (int)
             iterator operator -- (int)
             {
             {
                 iterator temp = *this;
                 iterator temp = *this;
-                prior(it);
+                utf8::unchecked::prior(it);
                 return temp;
                 return temp;
             }
             }
           }; // class iterator
           }; // class iterator

+ 2 - 2
src/love.cpp

@@ -1,5 +1,5 @@
 /**
 /**
- * Copyright (c) 2006-2012 LOVE Development Team
+ * Copyright (c) 2006-2013 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
@@ -141,7 +141,7 @@ int main(int argc, char **argv)
 	}
 	}
 
 
 	// Create the virtual machine.
 	// Create the virtual machine.
-	lua_State *L = lua_open();
+	lua_State *L = luaL_newstate();
 	luaL_openlibs(L);
 	luaL_openlibs(L);
 
 
 	love_preload(L, luaopen_love, "love");
 	love_preload(L, luaopen_love, "love");

+ 1 - 1
src/modules/audio/Audio.cpp

@@ -1,5 +1,5 @@
 /**
 /**
- * Copyright (c) 2006-2012 LOVE Development Team
+ * Copyright (c) 2006-2013 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
src/modules/audio/Audio.h

@@ -1,5 +1,5 @@
 /**
 /**
- * Copyright (c) 2006-2012 LOVE Development Team
+ * Copyright (c) 2006-2013 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
src/modules/audio/Source.cpp

@@ -1,5 +1,5 @@
 /**
 /**
- * Copyright (c) 2006-2012 LOVE Development Team
+ * Copyright (c) 2006-2013 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
src/modules/audio/Source.h

@@ -1,5 +1,5 @@
 /**
 /**
- * Copyright (c) 2006-2012 LOVE Development Team
+ * Copyright (c) 2006-2013 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
src/modules/audio/null/Audio.cpp

@@ -1,5 +1,5 @@
 /**
 /**
- * Copyright (c) 2006-2012 LOVE Development Team
+ * Copyright (c) 2006-2013 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
src/modules/audio/null/Audio.h

@@ -1,5 +1,5 @@
 /**
 /**
- * Copyright (c) 2006-2012 LOVE Development Team
+ * Copyright (c) 2006-2013 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
src/modules/audio/null/Source.cpp

@@ -1,5 +1,5 @@
 /**
 /**
- * Copyright (c) 2006-2012 LOVE Development Team
+ * Copyright (c) 2006-2013 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
src/modules/audio/null/Source.h

@@ -1,5 +1,5 @@
 /**
 /**
- * Copyright (c) 2006-2012 LOVE Development Team
+ * Copyright (c) 2006-2013 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
src/modules/audio/openal/Audio.cpp

@@ -1,5 +1,5 @@
 /**
 /**
- * Copyright (c) 2006-2012 LOVE Development Team
+ * Copyright (c) 2006-2013 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

+ 3 - 3
src/modules/audio/openal/Audio.h

@@ -1,5 +1,5 @@
 /**
 /**
- * Copyright (c) 2006-2012 LOVE Development Team
+ * Copyright (c) 2006-2013 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,8 +38,8 @@
 
 
 // OpenAL
 // OpenAL
 #ifdef LOVE_MACOSX
 #ifdef LOVE_MACOSX
-#include <OpenAL/alc.h>
-#include <OpenAL/al.h>
+#include <OpenAL-Soft/alc.h>
+#include <OpenAL-Soft/al.h>
 #else
 #else
 #include <AL/alc.h>
 #include <AL/alc.h>
 #include <AL/al.h>
 #include <AL/al.h>

+ 1 - 1
src/modules/audio/openal/Pool.cpp

@@ -1,5 +1,5 @@
 /**
 /**
- * Copyright (c) 2006-2012 LOVE Development Team
+ * Copyright (c) 2006-2013 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

+ 3 - 3
src/modules/audio/openal/Pool.h

@@ -1,5 +1,5 @@
 /**
 /**
- * Copyright (c) 2006-2012 LOVE Development Team
+ * Copyright (c) 2006-2013 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,8 @@
 
 
 // OpenAL
 // OpenAL
 #ifdef LOVE_MACOSX
 #ifdef LOVE_MACOSX
-#include <OpenAL/alc.h>
-#include <OpenAL/al.h>
+#include <OpenAL-Soft/alc.h>
+#include <OpenAL-Soft/al.h>
 #else
 #else
 #include <AL/alc.h>
 #include <AL/alc.h>
 #include <AL/al.h>
 #include <AL/al.h>

+ 1 - 1
src/modules/audio/openal/Source.cpp

@@ -1,5 +1,5 @@
 /**
 /**
- * Copyright (c) 2006-2012 LOVE Development Team
+ * Copyright (c) 2006-2013 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

+ 3 - 3
src/modules/audio/openal/Source.h

@@ -1,5 +1,5 @@
 /**
 /**
- * Copyright (c) 2006-2012 LOVE Development Team
+ * Copyright (c) 2006-2013 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
@@ -30,8 +30,8 @@
 
 
 // OpenAL
 // OpenAL
 #ifdef LOVE_MACOSX
 #ifdef LOVE_MACOSX
-#include <OpenAL/alc.h>
-#include <OpenAL/al.h>
+#include <OpenAL-Soft/alc.h>
+#include <OpenAL-Soft/al.h>
 #else
 #else
 #include <AL/alc.h>
 #include <AL/alc.h>
 #include <AL/al.h>
 #include <AL/al.h>

+ 1 - 1
src/modules/audio/wrap_Audio.cpp

@@ -1,5 +1,5 @@
 /**
 /**
- * Copyright (c) 2006-2012 LOVE Development Team
+ * Copyright (c) 2006-2013 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
src/modules/audio/wrap_Audio.h

@@ -1,5 +1,5 @@
 /**
 /**
- * Copyright (c) 2006-2012 LOVE Development Team
+ * Copyright (c) 2006-2013 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
src/modules/audio/wrap_Source.cpp

@@ -1,5 +1,5 @@
 /**
 /**
- * Copyright (c) 2006-2012 LOVE Development Team
+ * Copyright (c) 2006-2013 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
src/modules/audio/wrap_Source.h

@@ -1,5 +1,5 @@
 /**
 /**
- * Copyright (c) 2006-2012 LOVE Development Team
+ * Copyright (c) 2006-2013 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
src/modules/event/Event.cpp

@@ -1,5 +1,5 @@
 /**
 /**
- * Copyright (c) 2006-2012 LOVE Development Team
+ * Copyright (c) 2006-2013 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
src/modules/event/Event.h

@@ -1,5 +1,5 @@
 /**
 /**
- * Copyright (c) 2006-2012 LOVE Development Team
+ * Copyright (c) 2006-2013 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
src/modules/event/sdl/Event.cpp

@@ -1,5 +1,5 @@
 /**
 /**
- * Copyright (c) 2006-2012 LOVE Development Team
+ * Copyright (c) 2006-2013 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
src/modules/event/sdl/Event.h

@@ -1,5 +1,5 @@
 /**
 /**
- * Copyright (c) 2006-2012 LOVE Development Team
+ * Copyright (c) 2006-2013 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
src/modules/event/sdl/wrap_Event.cpp

@@ -1,5 +1,5 @@
 /**
 /**
- * Copyright (c) 2006-2012 LOVE Development Team
+ * Copyright (c) 2006-2013 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
src/modules/event/sdl/wrap_Event.h

@@ -1,5 +1,5 @@
 /**
 /**
- * Copyright (c) 2006-2012 LOVE Development Team
+ * Copyright (c) 2006-2013 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
src/modules/filesystem/File.cpp

@@ -1,5 +1,5 @@
 /**
 /**
- * Copyright (c) 2006-2012 LOVE Development Team
+ * Copyright (c) 2006-2013 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
src/modules/filesystem/File.h

@@ -1,5 +1,5 @@
 /**
 /**
- * Copyright (c) 2006-2012 LOVE Development Team
+ * Copyright (c) 2006-2013 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
src/modules/filesystem/FileData.cpp

@@ -1,5 +1,5 @@
 /**
 /**
- * Copyright (c) 2006-2012 LOVE Development Team
+ * Copyright (c) 2006-2013 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
src/modules/filesystem/FileData.h

@@ -1,5 +1,5 @@
 /**
 /**
- * Copyright (c) 2006-2012 LOVE Development Team
+ * Copyright (c) 2006-2013 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
src/modules/filesystem/physfs/File.cpp

@@ -1,5 +1,5 @@
 /**
 /**
- * Copyright (c) 2006-2012 LOVE Development Team
+ * Copyright (c) 2006-2013 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
src/modules/filesystem/physfs/File.h

@@ -1,5 +1,5 @@
 /**
 /**
- * Copyright (c) 2006-2012 LOVE Development Team
+ * Copyright (c) 2006-2013 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
src/modules/filesystem/physfs/Filesystem.cpp

@@ -1,5 +1,5 @@
 /**
 /**
- * Copyright (c) 2006-2012 LOVE Development Team
+ * Copyright (c) 2006-2013 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
src/modules/filesystem/physfs/Filesystem.h

@@ -1,5 +1,5 @@
 /**
 /**
- * Copyright (c) 2006-2012 LOVE Development Team
+ * Copyright (c) 2006-2013 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
src/modules/filesystem/physfs/wrap_File.cpp

@@ -1,5 +1,5 @@
 /**
 /**
- * Copyright (c) 2006-2012 LOVE Development Team
+ * Copyright (c) 2006-2013 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
src/modules/filesystem/physfs/wrap_File.h

@@ -1,5 +1,5 @@
 /**
 /**
- * Copyright (c) 2006-2012 LOVE Development Team
+ * Copyright (c) 2006-2013 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
src/modules/filesystem/physfs/wrap_FileData.cpp

@@ -1,5 +1,5 @@
 /**
 /**
- * Copyright (c) 2006-2012 LOVE Development Team
+ * Copyright (c) 2006-2013 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
src/modules/filesystem/physfs/wrap_FileData.h

@@ -1,5 +1,5 @@
 /**
 /**
- * Copyright (c) 2006-2012 LOVE Development Team
+ * Copyright (c) 2006-2013 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
src/modules/filesystem/physfs/wrap_Filesystem.cpp

@@ -1,5 +1,5 @@
 /**
 /**
- * Copyright (c) 2006-2012 LOVE Development Team
+ * Copyright (c) 2006-2013 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
src/modules/filesystem/physfs/wrap_Filesystem.h

@@ -1,5 +1,5 @@
 /**
 /**
- * Copyright (c) 2006-2012 LOVE Development Team
+ * Copyright (c) 2006-2013 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

+ 4 - 4
src/modules/font/Font.h

@@ -1,5 +1,5 @@
 /**
 /**
- * Copyright (c) 2006-2012 LOVE Development Team
+ * Copyright (c) 2006-2013 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
@@ -40,9 +40,9 @@ class Font : public Module
 public:
 public:
 
 
 	virtual Rasterizer *newRasterizer(Data *data, int size) = 0;
 	virtual Rasterizer *newRasterizer(Data *data, int size) = 0;
-	virtual Rasterizer *newRasterizer(love::image::ImageData *data, std::string glyphs) = 0;
-	virtual Rasterizer *newRasterizer(love::image::ImageData *data, unsigned short *glyphs, int length) = 0;
-	virtual GlyphData *newGlyphData(Rasterizer *r, unsigned short glyph) = 0;
+	virtual Rasterizer *newRasterizer(love::image::ImageData *data, const std::string &glyphs) = 0;
+	virtual Rasterizer *newRasterizer(love::image::ImageData *data, unsigned int *glyphs, int length) = 0;
+	virtual GlyphData *newGlyphData(Rasterizer *r, unsigned int glyph) = 0;
 
 
 	// Implement Module
 	// Implement Module
 	virtual const char *getName() const = 0;
 	virtual const char *getName() const = 0;

+ 7 - 2
src/modules/font/GlyphData.cpp

@@ -1,5 +1,5 @@
 /**
 /**
- * Copyright (c) 2006-2012 LOVE Development Team
+ * Copyright (c) 2006-2013 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,7 +27,7 @@ namespace love
 namespace font
 namespace font
 {
 {
 
 
-GlyphData::GlyphData(unsigned short glyph, GlyphMetrics glyphMetrics, GlyphData::Format f)
+GlyphData::GlyphData(unsigned int glyph, GlyphMetrics glyphMetrics, GlyphData::Format f)
 	: glyph(glyph)
 	: glyph(glyph)
 	, metrics(glyphMetrics)
 	, metrics(glyphMetrics)
 	, data(0)
 	, data(0)
@@ -83,6 +83,11 @@ int GlyphData::getWidth() const
 	return metrics.width;
 	return metrics.width;
 }
 }
 
 
+unsigned int GlyphData::getGlyph() const
+{
+	return glyph;
+}
+
 int GlyphData::getAdvance() const
 int GlyphData::getAdvance() const
 {
 {
 	return metrics.advance;
 	return metrics.advance;

+ 8 - 3
src/modules/font/GlyphData.h

@@ -1,5 +1,5 @@
 /**
 /**
- * Copyright (c) 2006-2012 LOVE Development Team
+ * Copyright (c) 2006-2013 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
@@ -56,7 +56,7 @@ public:
 		FORMAT_RGBA
 		FORMAT_RGBA
 	};
 	};
 
 
-	GlyphData(unsigned short glyph, GlyphMetrics glyphMetrics, Format f);
+	GlyphData(unsigned int glyph, GlyphMetrics glyphMetrics, Format f);
 	virtual ~GlyphData();
 	virtual ~GlyphData();
 
 
 	// Implements Data.
 	// Implements Data.
@@ -73,6 +73,11 @@ public:
 	 **/
 	 **/
 	virtual int getWidth() const;
 	virtual int getWidth() const;
 
 
+	/**
+	 * Gets the glyph itself.
+	 **/
+	unsigned int getGlyph() const;
+
 	/**
 	/**
 	 * Gets the advance (the space the glyph takes up) of the glyph.
 	 * Gets the advance (the space the glyph takes up) of the glyph.
 	 **/
 	 **/
@@ -115,7 +120,7 @@ public:
 
 
 private:
 private:
 	// The glyph itself
 	// The glyph itself
-	unsigned short glyph;
+	unsigned int glyph;
 
 
 	// Glyph metrics
 	// Glyph metrics
 	GlyphMetrics metrics;
 	GlyphMetrics metrics;

+ 47 - 55
src/modules/font/ImageRasterizer.cpp

@@ -1,5 +1,5 @@
 /**
 /**
- * Copyright (c) 2006-2012 LOVE Development Team
+ * Copyright (c) 2006-2013 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,27 +34,18 @@ inline bool equal(const love::image::pixel &a, const love::image::pixel &b)
 	return (a.r == b.r && a.g == b.g && a.b == b.b && a.a == b.a);
 	return (a.r == b.r && a.g == b.g && a.b == b.b && a.a == b.a);
 }
 }
 
 
-ImageRasterizer::ImageRasterizer(love::image::ImageData *data, unsigned short *glyphs, int length)
+ImageRasterizer::ImageRasterizer(love::image::ImageData *data, unsigned int *glyphs, int numglyphs)
 	: imageData(data)
 	: imageData(data)
 	, glyphs(glyphs)
 	, glyphs(glyphs)
-	, length(length)
+	, numglyphs(numglyphs)
 {
 {
 	imageData->retain();
 	imageData->retain();
-	positions = new unsigned int[MAX_CHARS];
-	memset(positions, 0, MAX_CHARS*4);
-	widths = new unsigned int[MAX_CHARS];
-	memset(widths, 0, MAX_CHARS*4);
-	spacing = new unsigned int[MAX_CHARS];
-	memset(spacing, 0, MAX_CHARS*4);
 	load();
 	load();
 }
 }
 
 
 ImageRasterizer::~ImageRasterizer()
 ImageRasterizer::~ImageRasterizer()
 {
 {
 	imageData->release();
 	imageData->release();
-	delete[] positions;
-	delete[] widths;
-	delete[] spacing;
 }
 }
 
 
 int ImageRasterizer::getLineHeight() const
 int ImageRasterizer::getLineHeight() const
@@ -62,59 +53,71 @@ int ImageRasterizer::getLineHeight() const
 	return getHeight();
 	return getHeight();
 }
 }
 
 
-GlyphData *ImageRasterizer::getGlyphData(unsigned short glyph) const
+GlyphData *ImageRasterizer::getGlyphData(unsigned int glyph) const
 {
 {
 	GlyphMetrics gm;
 	GlyphMetrics gm;
+	memset(&gm, 0, sizeof(GlyphMetrics));
+
+	// Set relevant glyph metrics if the glyph is in this ImageFont
+	std::map<unsigned int, ImageGlyphData>::const_iterator it = imageGlyphs.find(glyph);
+	if (it != imageGlyphs.end())
+	{
+		gm.width = it->second.width;
+		gm.advance = it->second.width + it->second.spacing;
+	}
+
 	gm.height = metrics.height;
 	gm.height = metrics.height;
-	gm.width = widths[glyph];
-	gm.advance = spacing[glyph] + widths[glyph];
-	gm.bearingX = 0;
-	gm.bearingY = 0;
+
 	GlyphData *g = new GlyphData(glyph, gm, GlyphData::FORMAT_RGBA);
 	GlyphData *g = new GlyphData(glyph, gm, GlyphData::FORMAT_RGBA);
-	if (gm.width == 0) return g;
-	unsigned char *gd = (unsigned char *)g->getData();
-	love::image::pixel *pixels = (love::image::pixel *)(imageData->getData());
-	for (unsigned int i = 0; i < widths[glyph]*getHeight(); i++)
+
+	if (gm.width == 0)
+		return g;
+
+	love::image::pixel *gdpixels = (love::image::pixel *) g->getData();
+	love::image::pixel *imagepixels = (love::image::pixel *) imageData->getData();
+
+	// copy glyph pixels from imagedata to glyphdata
+	for (int i = 0; i < g->getWidth() * g->getHeight(); i++)
 	{
 	{
-		love::image::pixel p = pixels[ positions[glyph] + (i % widths[glyph]) + (imageData->getWidth() * (i / widths[glyph])) ];
-		gd[i*4] = p.r;
-		gd[i*4+1] = p.g;
-		gd[i*4+2] = p.b;
-		gd[i*4+3] = p.a;
+		love::image::pixel p = imagepixels[ it->second.x + (i % gm.width) + (imageData->getWidth() * (i / gm.width)) ];
+
+		// Use transparency instead of the spacer color
+		if (equal(p, spacer))
+			gdpixels[i].r = gdpixels[i].g = gdpixels[i].b = gdpixels[i].a = 0;
+		else
+			gdpixels[i] = p;
 	}
 	}
+
 	return g;
 	return g;
 }
 }
 
 
 void ImageRasterizer::load()
 void ImageRasterizer::load()
 {
 {
-	love::image::pixel *pixels = (love::image::pixel *)(imageData->getData());
+	love::image::pixel *pixels = (love::image::pixel *) imageData->getData();
 
 
-	unsigned imgw = (unsigned)imageData->getWidth();
-	unsigned imgh = (unsigned)imageData->getHeight();
-	unsigned imgs = imgw*imgh;
+	unsigned int imgw = (unsigned int) imageData->getWidth();
+	unsigned int imgh = (unsigned int) imageData->getHeight();
 
 
 	// Set the only metric that matters
 	// Set the only metric that matters
 	metrics.height = imgh;
 	metrics.height = imgh;
 
 
 	// Reading texture data begins
 	// Reading texture data begins
-	love::image::pixel spacer = pixels[0];
+	spacer = pixels[0];
 
 
 	unsigned int start = 0;
 	unsigned int start = 0;
 	unsigned int end = 0;
 	unsigned int end = 0;
 
 
-	for (unsigned int i = 0; i < length; ++i)
+	for (unsigned int i = 0; i < numglyphs; ++i)
 	{
 	{
-		if (i >= MAX_CHARS)
-			break;
-
 		start = end;
 		start = end;
 
 
 		// Finds out where the first character starts
 		// Finds out where the first character starts
 		while (start < imgw && equal(pixels[start], spacer))
 		while (start < imgw && equal(pixels[start], spacer))
 			++start;
 			++start;
 
 
-		if (i > 0)
-			spacing[glyphs[i - 1]] = (start > end) ? (start - end) : 0;
+		// set previous glyph's spacing
+		if (i > 0 && imageGlyphs.size() > 0)
+			imageGlyphs[glyphs[i - 1]].spacing = (start > end) ? (start - end) : 0;
 
 
 		end = start;
 		end = start;
 
 
@@ -125,38 +128,27 @@ void ImageRasterizer::load()
 		if (start >= end)
 		if (start >= end)
 			break;
 			break;
 
 
-		unsigned c = glyphs[i];
+		ImageGlyphData imageGlyph;
+		imageGlyph.x = start;
+		imageGlyph.width = end - start;
 
 
-		positions[c] = start;
-		widths[c] = (end - start);
+		imageGlyphs[glyphs[i]] = imageGlyph;
 	}
 	}
 
 
 	// Find spacing of last glyph
 	// Find spacing of last glyph
-	if (length > 0)
+	if (numglyphs > 0)
 	{
 	{
 		start = end;
 		start = end;
 		while (start < imgw && equal(pixels[start], spacer))
 		while (start < imgw && equal(pixels[start], spacer))
 			++start;
 			++start;
 
 
-		spacing[glyphs[length - 1]] = (start > end) ? (start - end) : 0;
-	}
-
-	// Replace spacer color with an empty pixel
-	for (unsigned int i = 0; i < imgs; ++i)
-	{
-		if (equal(pixels[i], spacer))
-		{
-			pixels[i].r = 0;
-			pixels[i].g = 0;
-			pixels[i].b = 0;
-			pixels[i].a = 0;
-		}
+		imageGlyphs[glyphs[numglyphs - 1]].spacing = (start > end) ? (start - end) : 0;
 	}
 	}
 }
 }
 
 
 int ImageRasterizer::getNumGlyphs() const
 int ImageRasterizer::getNumGlyphs() const
 {
 {
-	return length;
+	return numglyphs;
 }
 }
 
 
 } // font
 } // font

+ 27 - 18
src/modules/font/ImageRasterizer.h

@@ -1,5 +1,5 @@
 /**
 /**
- * Copyright (c) 2006-2012 LOVE Development Team
+ * Copyright (c) 2006-2013 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,8 @@
 #include "font/Rasterizer.h"
 #include "font/Rasterizer.h"
 #include "image/ImageData.h"
 #include "image/ImageData.h"
 
 
+#include <map>
+
 namespace love
 namespace love
 {
 {
 namespace font
 namespace font
@@ -36,33 +38,40 @@ namespace font
  **/
  **/
 class ImageRasterizer : public Rasterizer
 class ImageRasterizer : public Rasterizer
 {
 {
+public:
+	ImageRasterizer(love::image::ImageData *imageData, unsigned int *glyphs, int numglyphs);
+	virtual ~ImageRasterizer();
+
+	// Implement Rasterizer
+	virtual int getLineHeight() const;
+	virtual GlyphData *getGlyphData(unsigned int glyph) const;
+	virtual int getNumGlyphs() const;
+
 private:
 private:
 	// Load all the glyph positions into memory
 	// Load all the glyph positions into memory
 	void load();
 	void load();
 
 
 	// The image data
 	// The image data
 	love::image::ImageData *imageData;
 	love::image::ImageData *imageData;
+
 	// The glyphs in the font
 	// The glyphs in the font
-	unsigned short *glyphs;
-	// The length of the glyph array
-	unsigned int length;
-	// The positions of each glyph
-	unsigned int *positions;
-	// The widths of each glyph
-	unsigned int *widths;
-	// The spacing of each glyph
-	unsigned int *spacing;
+	unsigned int *glyphs;
 
 
-public:
-	ImageRasterizer(love::image::ImageData *imageData, unsigned short *glyphs, int length);
-	virtual ~ImageRasterizer();
+	// Number of glyphs in the font
+	unsigned int numglyphs;
 
 
-	// Implement Rasterizer
-	virtual int getLineHeight() const;
-	virtual GlyphData *getGlyphData(unsigned short glyph) const;
-	virtual int getNumGlyphs() const;
+	// Information about a glyph in the ImageData
+	struct ImageGlyphData
+	{
+		unsigned int x;
+		unsigned int width;
+		unsigned int spacing;
+	};
+
+	std::map<unsigned int, ImageGlyphData> imageGlyphs;
 
 
-	static const unsigned int MAX_CHARS = 256;
+	// Color used to identify glyph separation in the source ImageData
+	love::image::pixel spacer;
 
 
 }; // ImageRasterizer
 }; // ImageRasterizer
 
 

+ 1 - 1
src/modules/font/Rasterizer.cpp

@@ -1,5 +1,5 @@
 /**
 /**
- * Copyright (c) 2006-2012 LOVE Development Team
+ * Copyright (c) 2006-2013 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

+ 2 - 2
src/modules/font/Rasterizer.h

@@ -1,5 +1,5 @@
 /**
 /**
- * Copyright (c) 2006-2012 LOVE Development Team
+ * Copyright (c) 2006-2013 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
@@ -82,7 +82,7 @@ public:
 	 * Gets a specific glyph.
 	 * Gets a specific glyph.
 	 * @param glyph The (UNICODE) glyph to get data for
 	 * @param glyph The (UNICODE) glyph to get data for
 	 **/
 	 **/
-	virtual GlyphData *getGlyphData(unsigned short glyph) const = 0;
+	virtual GlyphData *getGlyphData(unsigned int glyph) const = 0;
 
 
 	/**
 	/**
 	 * Gets the number of glyphs the rasterizer has data for.
 	 * Gets the number of glyphs the rasterizer has data for.

+ 27 - 11
src/modules/font/freetype/Font.cpp

@@ -1,5 +1,5 @@
 /**
 /**
- * Copyright (c) 2006-2012 LOVE Development Team
+ * Copyright (c) 2006-2013 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,8 @@
 #include "TrueTypeRasterizer.h"
 #include "TrueTypeRasterizer.h"
 #include "font/ImageRasterizer.h"
 #include "font/ImageRasterizer.h"
 
 
+#include "libraries/utf8/utf8.h"
+
 namespace love
 namespace love
 {
 {
 namespace font
 namespace font
@@ -46,25 +48,39 @@ Rasterizer *Font::newRasterizer(Data *data, int size)
 	return new TrueTypeRasterizer(library, data, size);
 	return new TrueTypeRasterizer(library, data, size);
 }
 }
 
 
-Rasterizer *Font::newRasterizer(love::image::ImageData *data, std::string glyphs)
+Rasterizer *Font::newRasterizer(love::image::ImageData *data, const std::string &text)
 {
 {
-	int length = glyphs.size();
-	unsigned short *g = new unsigned short[length];
-	for (int i = 0; i < length; i++)
+	size_t strlen = text.size();
+	size_t numglyphs = 0;
+	
+	unsigned int *glyphs = new unsigned int[strlen];
+
+	try
+	{
+		utf8::iterator<std::string::const_iterator> i(text.begin(), text.begin(), text.end());
+		utf8::iterator<std::string::const_iterator> end(text.end(), text.begin(), text.end());
+
+		while (i != end)
+			glyphs[numglyphs++] = *i++;
+	}
+	catch (utf8::exception &e)
 	{
 	{
-		g[i] = (unsigned char)glyphs[i];
+		delete [] glyphs;
+		throw love::Exception("%s", e.what());
 	}
 	}
-	Rasterizer *r = newRasterizer(data, g, length);
-	delete [] g;
+	
+	Rasterizer *r = newRasterizer(data, glyphs, numglyphs);
+	delete [] glyphs;
+	
 	return r;
 	return r;
 }
 }
 
 
-Rasterizer *Font::newRasterizer(love::image::ImageData *data, unsigned short *glyphs, int length)
+Rasterizer *Font::newRasterizer(love::image::ImageData *data, unsigned int *glyphs, int numglyphs)
 {
 {
-	return new ImageRasterizer(data, glyphs, length);
+	return new ImageRasterizer(data, glyphs, numglyphs);
 }
 }
 
 
-GlyphData *Font::newGlyphData(Rasterizer *r, unsigned short glyph)
+GlyphData *Font::newGlyphData(Rasterizer *r, unsigned int glyph)
 {
 {
 	return r->getGlyphData(glyph);
 	return r->getGlyphData(glyph);
 }
 }

+ 4 - 4
src/modules/font/freetype/Font.h

@@ -1,5 +1,5 @@
 /**
 /**
- * Copyright (c) 2006-2012 LOVE Development Team
+ * Copyright (c) 2006-2013 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
@@ -55,9 +55,9 @@ public:
 
 
 	// Implements Font
 	// Implements Font
 	Rasterizer *newRasterizer(Data *data, int size);
 	Rasterizer *newRasterizer(Data *data, int size);
-	Rasterizer *newRasterizer(love::image::ImageData *data, std::string glyphs);
-	Rasterizer *newRasterizer(love::image::ImageData *data, unsigned short *glyphs, int length);
-	GlyphData *newGlyphData(Rasterizer *r, unsigned short glyph);
+	Rasterizer *newRasterizer(love::image::ImageData *data, const std::string &text);
+	Rasterizer *newRasterizer(love::image::ImageData *data, unsigned int *glyphs, int numglyphs);
+	GlyphData *newGlyphData(Rasterizer *r, unsigned int glyph);
 
 
 	// Implement Module
 	// Implement Module
 	const char *getName() const;
 	const char *getName() const;

+ 14 - 21
src/modules/font/freetype/TrueTypeRasterizer.cpp

@@ -1,5 +1,5 @@
 /**
 /**
- * Copyright (c) 2006-2012 LOVE Development Team
+ * Copyright (c) 2006-2013 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
@@ -30,16 +30,9 @@ namespace font
 namespace freetype
 namespace freetype
 {
 {
 
 
-struct la
-{
-	unsigned char l,a;
-};
-
 TrueTypeRasterizer::TrueTypeRasterizer(FT_Library library, Data *data, int size)
 TrueTypeRasterizer::TrueTypeRasterizer(FT_Library library, Data *data, int size)
 	: data(data)
 	: data(data)
 {
 {
-	data->retain();
-
 	if (FT_New_Memory_Face(library,
 	if (FT_New_Memory_Face(library,
 						  (const FT_Byte *)data->getData(),	/* first byte in memory */
 						  (const FT_Byte *)data->getData(),	/* first byte in memory */
 						  data->getSize(),					/* size in bytes        */
 						  data->getSize(),					/* size in bytes        */
@@ -55,6 +48,8 @@ TrueTypeRasterizer::TrueTypeRasterizer(FT_Library library, Data *data, int size)
 	metrics.ascent = s.ascender >> 6;
 	metrics.ascent = s.ascender >> 6;
 	metrics.descent = s.descender >> 6;
 	metrics.descent = s.descender >> 6;
 	metrics.height = s.height >> 6;
 	metrics.height = s.height >> 6;
+
+	data->retain();
 }
 }
 
 
 TrueTypeRasterizer::~TrueTypeRasterizer()
 TrueTypeRasterizer::~TrueTypeRasterizer()
@@ -68,7 +63,7 @@ int TrueTypeRasterizer::getLineHeight() const
 	return (int)(getHeight() * 1.25);
 	return (int)(getHeight() * 1.25);
 }
 }
 
 
-GlyphData *TrueTypeRasterizer::getGlyphData(unsigned short glyph) const
+GlyphData *TrueTypeRasterizer::getGlyphData(unsigned int glyph) const
 {
 {
 	love::font::GlyphMetrics glyphMetrics;
 	love::font::GlyphMetrics glyphMetrics;
 	FT_Glyph ftglyph;
 	FT_Glyph ftglyph;
@@ -81,7 +76,7 @@ GlyphData *TrueTypeRasterizer::getGlyphData(unsigned short glyph) const
 		throw love::Exception("TrueTypeFont Loading vm->error: FT_Get_Glyph failed\n");
 		throw love::Exception("TrueTypeFont Loading vm->error: FT_Get_Glyph failed\n");
 
 
 	FT_Glyph_To_Bitmap(&ftglyph, FT_RENDER_MODE_NORMAL, 0, 1);
 	FT_Glyph_To_Bitmap(&ftglyph, FT_RENDER_MODE_NORMAL, 0, 1);
-	FT_BitmapGlyph bitmap_glyph = (FT_BitmapGlyph)ftglyph;
+	FT_BitmapGlyph bitmap_glyph = (FT_BitmapGlyph) ftglyph;
 	FT_Bitmap &bitmap = bitmap_glyph->bitmap; //just to make things easier
 	FT_Bitmap &bitmap = bitmap_glyph->bitmap; //just to make things easier
 
 
 	// Get metrics
 	// Get metrics
@@ -93,17 +88,15 @@ GlyphData *TrueTypeRasterizer::getGlyphData(unsigned short glyph) const
 
 
 	GlyphData *glyphData = new GlyphData(glyph, glyphMetrics, GlyphData::FORMAT_LUMINANCE_ALPHA);
 	GlyphData *glyphData = new GlyphData(glyph, glyphMetrics, GlyphData::FORMAT_LUMINANCE_ALPHA);
 
 
+	int size = bitmap.rows * bitmap.width;
+	unsigned char *dst = (unsigned char *) glyphData->getData();
+
+	// Note that bitmap.buffer contains only luminosity. We copy that single value to
+	// our luminosity-alpha format.
+	for (int i = 0; i < size; i++)
 	{
 	{
-		int size = bitmap.rows*bitmap.width;
-		unsigned char *dst = (unsigned char *)glyphData->getData();
-
-		// Note that bitmap.buffer contains only luminosity. We copy that single value to
-		// our luminosity-alpha format.
-		for (int i = 0; i<size; i++)
-		{
-			dst[2*i] = 255;
-			dst[2*i+1] = bitmap.buffer[i];
-		}
+		dst[2*i] = 255;
+		dst[2*i+1] = bitmap.buffer[i];
 	}
 	}
 
 
 	// Having copied the data over, we can destroy the glyph
 	// Having copied the data over, we can destroy the glyph
@@ -115,7 +108,7 @@ GlyphData *TrueTypeRasterizer::getGlyphData(unsigned short glyph) const
 
 
 int TrueTypeRasterizer::getNumGlyphs() const
 int TrueTypeRasterizer::getNumGlyphs() const
 {
 {
-	return 256;
+	return face->num_glyphs;
 }
 }
 
 
 } // freetype
 } // freetype

+ 2 - 2
src/modules/font/freetype/TrueTypeRasterizer.h

@@ -1,5 +1,5 @@
 /**
 /**
- * Copyright (c) 2006-2012 LOVE Development Team
+ * Copyright (c) 2006-2013 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
@@ -50,7 +50,7 @@ public:
 
 
 	// Implement Rasterizer
 	// Implement Rasterizer
 	virtual int getLineHeight() const;
 	virtual int getLineHeight() const;
-	virtual GlyphData *getGlyphData(unsigned short glyph) const;
+	virtual GlyphData *getGlyphData(unsigned int glyph) const;
 	virtual int getNumGlyphs() const;
 	virtual int getNumGlyphs() const;
 
 
 private:
 private:

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