Rolls back update to Box2D SVN trunk.
authordsc <david.schoonover@gmail.com>
Thu, 5 May 2011 06:46:43 +0000 (23:46 -0700)
committerdsc <david.schoonover@gmail.com>
Thu, 5 May 2011 06:46:43 +0000 (23:46 -0700)
143 files changed:
libs/box2d/box2d-ios.xcodeproj/project.pbxproj
libs/box2d/box2d-iphone.xcodeproj/project.pbxproj
libs/box2d/iPhone/Classes/Box2DView.mm
libs/box2d/iPhone/Classes/GLES-Render.h
libs/box2d/iPhone/Classes/TestEntriesViewController.mm
libs/box2d/iPhone/Classes/iPhoneTest.h
libs/box2d/iPhone/Classes/iPhoneTest.mm
libs/box2d/iPhone/Classes/iPhoneTestEntries.mm
libs/box2d/src/Box2D/Box2D.h
libs/box2d/src/Box2D/Collision/Shapes/b2CircleShape.cpp
libs/box2d/src/Box2D/Collision/Shapes/b2CircleShape.h
libs/box2d/src/Box2D/Collision/Shapes/b2EdgeShape.cpp [deleted file]
libs/box2d/src/Box2D/Collision/Shapes/b2EdgeShape.h [deleted file]
libs/box2d/src/Box2D/Collision/Shapes/b2LoopShape.cpp [deleted file]
libs/box2d/src/Box2D/Collision/Shapes/b2LoopShape.h [deleted file]
libs/box2d/src/Box2D/Collision/Shapes/b2PolygonShape.cpp
libs/box2d/src/Box2D/Collision/Shapes/b2PolygonShape.h
libs/box2d/src/Box2D/Collision/Shapes/b2Shape.h
libs/box2d/src/Box2D/Collision/b2BroadPhase.cpp
libs/box2d/src/Box2D/Collision/b2BroadPhase.h
libs/box2d/src/Box2D/Collision/b2CollideCircle.cpp
libs/box2d/src/Box2D/Collision/b2CollideEdge.cpp [deleted file]
libs/box2d/src/Box2D/Collision/b2CollidePolygon.cpp
libs/box2d/src/Box2D/Collision/b2Collision.cpp
libs/box2d/src/Box2D/Collision/b2Collision.h
libs/box2d/src/Box2D/Collision/b2Distance.cpp
libs/box2d/src/Box2D/Collision/b2Distance.h
libs/box2d/src/Box2D/Collision/b2DynamicTree.cpp
libs/box2d/src/Box2D/Collision/b2DynamicTree.h
libs/box2d/src/Box2D/Collision/b2TimeOfImpact.cpp
libs/box2d/src/Box2D/Collision/b2TimeOfImpact.h
libs/box2d/src/Box2D/Common/b2BlockAllocator.cpp
libs/box2d/src/Box2D/Common/b2BlockAllocator.h
libs/box2d/src/Box2D/Common/b2Draw.cpp [deleted file]
libs/box2d/src/Box2D/Common/b2Draw.h [deleted file]
libs/box2d/src/Box2D/Common/b2GrowableStack.h [deleted file]
libs/box2d/src/Box2D/Common/b2Math.cpp
libs/box2d/src/Box2D/Common/b2Math.h
libs/box2d/src/Box2D/Common/b2Settings.cpp
libs/box2d/src/Box2D/Common/b2Settings.h
libs/box2d/src/Box2D/Common/b2StackAllocator.cpp
libs/box2d/src/Box2D/Common/b2StackAllocator.h
libs/box2d/src/Box2D/Common/b2Timer.cpp [deleted file]
libs/box2d/src/Box2D/Dynamics/Contacts/b2CircleContact.cpp
libs/box2d/src/Box2D/Dynamics/Contacts/b2CircleContact.h
libs/box2d/src/Box2D/Dynamics/Contacts/b2Contact.cpp
libs/box2d/src/Box2D/Dynamics/Contacts/b2Contact.h
libs/box2d/src/Box2D/Dynamics/Contacts/b2ContactSolver.cpp
libs/box2d/src/Box2D/Dynamics/Contacts/b2ContactSolver.h
libs/box2d/src/Box2D/Dynamics/Contacts/b2EdgeAndCircleContact.cpp [deleted file]
libs/box2d/src/Box2D/Dynamics/Contacts/b2EdgeAndCircleContact.h [deleted file]
libs/box2d/src/Box2D/Dynamics/Contacts/b2EdgeAndPolygonContact.cpp [deleted file]
libs/box2d/src/Box2D/Dynamics/Contacts/b2EdgeAndPolygonContact.h [deleted file]
libs/box2d/src/Box2D/Dynamics/Contacts/b2LoopAndCircleContact.cpp [deleted file]
libs/box2d/src/Box2D/Dynamics/Contacts/b2LoopAndCircleContact.h [deleted file]
libs/box2d/src/Box2D/Dynamics/Contacts/b2LoopAndPolygonContact.cpp [deleted file]
libs/box2d/src/Box2D/Dynamics/Contacts/b2LoopAndPolygonContact.h [deleted file]
libs/box2d/src/Box2D/Dynamics/Contacts/b2PolygonAndCircleContact.cpp
libs/box2d/src/Box2D/Dynamics/Contacts/b2PolygonAndCircleContact.h
libs/box2d/src/Box2D/Dynamics/Contacts/b2PolygonContact.cpp
libs/box2d/src/Box2D/Dynamics/Contacts/b2PolygonContact.h
libs/box2d/src/Box2D/Dynamics/Contacts/b2TOISolver.cpp [new file with mode: 0644]
libs/box2d/src/Box2D/Dynamics/Contacts/b2TOISolver.h [moved from libs/box2d/src/Box2D/Common/b2Timer.h with 53% similarity]
libs/box2d/src/Box2D/Dynamics/Joints/b2DistanceJoint.cpp
libs/box2d/src/Box2D/Dynamics/Joints/b2DistanceJoint.h
libs/box2d/src/Box2D/Dynamics/Joints/b2FrictionJoint.cpp
libs/box2d/src/Box2D/Dynamics/Joints/b2FrictionJoint.h
libs/box2d/src/Box2D/Dynamics/Joints/b2GearJoint.cpp
libs/box2d/src/Box2D/Dynamics/Joints/b2GearJoint.h
libs/box2d/src/Box2D/Dynamics/Joints/b2Joint.cpp
libs/box2d/src/Box2D/Dynamics/Joints/b2Joint.h
libs/box2d/src/Box2D/Dynamics/Joints/b2LineJoint.cpp [new file with mode: 0644]
libs/box2d/src/Box2D/Dynamics/Joints/b2LineJoint.h [moved from libs/box2d/src/Box2D/Dynamics/Joints/b2WheelJoint.h with 54% similarity]
libs/box2d/src/Box2D/Dynamics/Joints/b2MouseJoint.cpp
libs/box2d/src/Box2D/Dynamics/Joints/b2MouseJoint.h
libs/box2d/src/Box2D/Dynamics/Joints/b2PrismaticJoint.cpp
libs/box2d/src/Box2D/Dynamics/Joints/b2PrismaticJoint.h
libs/box2d/src/Box2D/Dynamics/Joints/b2PulleyJoint.cpp
libs/box2d/src/Box2D/Dynamics/Joints/b2PulleyJoint.h
libs/box2d/src/Box2D/Dynamics/Joints/b2RevoluteJoint.cpp
libs/box2d/src/Box2D/Dynamics/Joints/b2RevoluteJoint.h
libs/box2d/src/Box2D/Dynamics/Joints/b2RopeJoint.cpp [deleted file]
libs/box2d/src/Box2D/Dynamics/Joints/b2RopeJoint.h [deleted file]
libs/box2d/src/Box2D/Dynamics/Joints/b2WeldJoint.cpp
libs/box2d/src/Box2D/Dynamics/Joints/b2WeldJoint.h
libs/box2d/src/Box2D/Dynamics/Joints/b2WheelJoint.cpp [deleted file]
libs/box2d/src/Box2D/Dynamics/b2Body.cpp
libs/box2d/src/Box2D/Dynamics/b2Body.h
libs/box2d/src/Box2D/Dynamics/b2ContactManager.cpp
libs/box2d/src/Box2D/Dynamics/b2ContactManager.h
libs/box2d/src/Box2D/Dynamics/b2Fixture.cpp
libs/box2d/src/Box2D/Dynamics/b2Fixture.h
libs/box2d/src/Box2D/Dynamics/b2Island.cpp
libs/box2d/src/Box2D/Dynamics/b2Island.h
libs/box2d/src/Box2D/Dynamics/b2TimeStep.h
libs/box2d/src/Box2D/Dynamics/b2World.cpp
libs/box2d/src/Box2D/Dynamics/b2World.h
libs/box2d/src/Box2D/Dynamics/b2WorldCallbacks.cpp
libs/box2d/src/Box2D/Dynamics/b2WorldCallbacks.h
libs/box2d/src/Box2D/Rope/b2Rope.cpp [deleted file]
libs/box2d/src/Box2D/Rope/b2Rope.h [deleted file]
libs/box2d/src/Tests/ApplyForce.h
libs/box2d/src/Tests/BodyTypes.h
libs/box2d/src/Tests/Breakable.h
libs/box2d/src/Tests/Bridge.h
libs/box2d/src/Tests/BulletTest.h [deleted file]
libs/box2d/src/Tests/Cantilever.h
libs/box2d/src/Tests/Car.h [deleted file]
libs/box2d/src/Tests/Chain.h
libs/box2d/src/Tests/CharacterCollision.h
libs/box2d/src/Tests/CollisionFiltering.h
libs/box2d/src/Tests/CollisionProcessing.h
libs/box2d/src/Tests/CompoundShapes.h
libs/box2d/src/Tests/Confined.h
libs/box2d/src/Tests/ContinuousTest.h
libs/box2d/src/Tests/DistanceTest.h
libs/box2d/src/Tests/Dominos.h
libs/box2d/src/Tests/DynamicTreeTest.h
libs/box2d/src/Tests/EdgeShapes.h
libs/box2d/src/Tests/EdgeTest.h [deleted file]
libs/box2d/src/Tests/Gears.h
libs/box2d/src/Tests/OneSidedPlatform.h
libs/box2d/src/Tests/Pinball.h [deleted file]
libs/box2d/src/Tests/PolyCollision.h
libs/box2d/src/Tests/PolyShapes.h
libs/box2d/src/Tests/Prismatic.h
libs/box2d/src/Tests/Pulleys.h
libs/box2d/src/Tests/Pyramid.h
libs/box2d/src/Tests/RayCast.h
libs/box2d/src/Tests/Revolute.h
libs/box2d/src/Tests/Rope.h [deleted file]
libs/box2d/src/Tests/RopeJoint.h [deleted file]
libs/box2d/src/Tests/SensorTest.h
libs/box2d/src/Tests/ShapeEditing.h
libs/box2d/src/Tests/SliderCrank.h
libs/box2d/src/Tests/SphereStack.h
libs/box2d/src/Tests/TheoJansen.h
libs/box2d/src/Tests/Tiles.h [deleted file]
libs/box2d/src/Tests/TimeOfImpact.h
libs/box2d/src/Tests/VaryingFriction.h
libs/box2d/src/Tests/VaryingRestitution.h
libs/box2d/src/Tests/VerticalStack.h
libs/box2d/src/Tests/Web.h

index edca52a..7a456a4 100644 (file)
        objects = {
 
 /* Begin PBXBuildFile section */
-               491330C81372616300DFB46D /* Box2D.h in Headers */ = {isa = PBXBuildFile; fileRef = 4913307B1372616300DFB46D /* Box2D.h */; };
-               491330C91372616300DFB46D /* b2BroadPhase.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4913307D1372616300DFB46D /* b2BroadPhase.cpp */; };
-               491330CA1372616300DFB46D /* b2BroadPhase.h in Headers */ = {isa = PBXBuildFile; fileRef = 4913307E1372616300DFB46D /* b2BroadPhase.h */; };
-               491330CB1372616300DFB46D /* b2CollideCircle.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4913307F1372616300DFB46D /* b2CollideCircle.cpp */; };
-               491330CC1372616300DFB46D /* b2CollidePolygon.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 491330801372616300DFB46D /* b2CollidePolygon.cpp */; };
-               491330CD1372616300DFB46D /* b2Collision.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 491330811372616300DFB46D /* b2Collision.cpp */; };
-               491330CE1372616300DFB46D /* b2Collision.h in Headers */ = {isa = PBXBuildFile; fileRef = 491330821372616300DFB46D /* b2Collision.h */; };
-               491330CF1372616300DFB46D /* b2Distance.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 491330831372616300DFB46D /* b2Distance.cpp */; };
-               491330D01372616300DFB46D /* b2Distance.h in Headers */ = {isa = PBXBuildFile; fileRef = 491330841372616300DFB46D /* b2Distance.h */; };
-               491330D11372616300DFB46D /* b2DynamicTree.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 491330851372616300DFB46D /* b2DynamicTree.cpp */; };
-               491330D21372616300DFB46D /* b2DynamicTree.h in Headers */ = {isa = PBXBuildFile; fileRef = 491330861372616300DFB46D /* b2DynamicTree.h */; };
-               491330D31372616300DFB46D /* b2TimeOfImpact.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 491330871372616300DFB46D /* b2TimeOfImpact.cpp */; };
-               491330D41372616300DFB46D /* b2TimeOfImpact.h in Headers */ = {isa = PBXBuildFile; fileRef = 491330881372616300DFB46D /* b2TimeOfImpact.h */; };
-               491330D51372616300DFB46D /* b2CircleShape.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4913308A1372616300DFB46D /* b2CircleShape.cpp */; };
-               491330D61372616300DFB46D /* b2CircleShape.h in Headers */ = {isa = PBXBuildFile; fileRef = 4913308B1372616300DFB46D /* b2CircleShape.h */; };
-               491330D71372616300DFB46D /* b2PolygonShape.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4913308C1372616300DFB46D /* b2PolygonShape.cpp */; };
-               491330D81372616300DFB46D /* b2PolygonShape.h in Headers */ = {isa = PBXBuildFile; fileRef = 4913308D1372616300DFB46D /* b2PolygonShape.h */; };
-               491330D91372616300DFB46D /* b2Shape.h in Headers */ = {isa = PBXBuildFile; fileRef = 4913308E1372616300DFB46D /* b2Shape.h */; };
-               491330DA1372616300DFB46D /* b2BlockAllocator.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 491330901372616300DFB46D /* b2BlockAllocator.cpp */; };
-               491330DB1372616300DFB46D /* b2BlockAllocator.h in Headers */ = {isa = PBXBuildFile; fileRef = 491330911372616300DFB46D /* b2BlockAllocator.h */; };
-               491330DC1372616300DFB46D /* b2Math.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 491330921372616300DFB46D /* b2Math.cpp */; };
-               491330DD1372616300DFB46D /* b2Math.h in Headers */ = {isa = PBXBuildFile; fileRef = 491330931372616300DFB46D /* b2Math.h */; };
-               491330DE1372616300DFB46D /* b2Settings.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 491330941372616300DFB46D /* b2Settings.cpp */; };
-               491330DF1372616300DFB46D /* b2Settings.h in Headers */ = {isa = PBXBuildFile; fileRef = 491330951372616300DFB46D /* b2Settings.h */; };
-               491330E01372616300DFB46D /* b2StackAllocator.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 491330961372616300DFB46D /* b2StackAllocator.cpp */; };
-               491330E11372616300DFB46D /* b2StackAllocator.h in Headers */ = {isa = PBXBuildFile; fileRef = 491330971372616300DFB46D /* b2StackAllocator.h */; };
-               491330E21372616300DFB46D /* b2Body.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 491330991372616300DFB46D /* b2Body.cpp */; };
-               491330E31372616300DFB46D /* b2Body.h in Headers */ = {isa = PBXBuildFile; fileRef = 4913309A1372616300DFB46D /* b2Body.h */; };
-               491330E41372616300DFB46D /* b2ContactManager.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4913309B1372616300DFB46D /* b2ContactManager.cpp */; };
-               491330E51372616300DFB46D /* b2ContactManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 4913309C1372616300DFB46D /* b2ContactManager.h */; };
-               491330E61372616300DFB46D /* b2Fixture.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4913309D1372616300DFB46D /* b2Fixture.cpp */; };
-               491330E71372616300DFB46D /* b2Fixture.h in Headers */ = {isa = PBXBuildFile; fileRef = 4913309E1372616300DFB46D /* b2Fixture.h */; };
-               491330E81372616300DFB46D /* b2Island.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4913309F1372616300DFB46D /* b2Island.cpp */; };
-               491330E91372616300DFB46D /* b2Island.h in Headers */ = {isa = PBXBuildFile; fileRef = 491330A01372616300DFB46D /* b2Island.h */; };
-               491330EA1372616300DFB46D /* b2TimeStep.h in Headers */ = {isa = PBXBuildFile; fileRef = 491330A11372616300DFB46D /* b2TimeStep.h */; };
-               491330EB1372616300DFB46D /* b2World.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 491330A21372616300DFB46D /* b2World.cpp */; };
-               491330EC1372616300DFB46D /* b2World.h in Headers */ = {isa = PBXBuildFile; fileRef = 491330A31372616300DFB46D /* b2World.h */; };
-               491330ED1372616300DFB46D /* b2WorldCallbacks.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 491330A41372616300DFB46D /* b2WorldCallbacks.cpp */; };
-               491330EE1372616300DFB46D /* b2WorldCallbacks.h in Headers */ = {isa = PBXBuildFile; fileRef = 491330A51372616300DFB46D /* b2WorldCallbacks.h */; };
-               491330EF1372616300DFB46D /* b2CircleContact.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 491330A71372616300DFB46D /* b2CircleContact.cpp */; };
-               491330F01372616300DFB46D /* b2CircleContact.h in Headers */ = {isa = PBXBuildFile; fileRef = 491330A81372616300DFB46D /* b2CircleContact.h */; };
-               491330F11372616300DFB46D /* b2Contact.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 491330A91372616300DFB46D /* b2Contact.cpp */; };
-               491330F21372616300DFB46D /* b2Contact.h in Headers */ = {isa = PBXBuildFile; fileRef = 491330AA1372616300DFB46D /* b2Contact.h */; };
-               491330F31372616300DFB46D /* b2ContactSolver.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 491330AB1372616300DFB46D /* b2ContactSolver.cpp */; };
-               491330F41372616300DFB46D /* b2ContactSolver.h in Headers */ = {isa = PBXBuildFile; fileRef = 491330AC1372616300DFB46D /* b2ContactSolver.h */; };
-               491330F51372616300DFB46D /* b2PolygonAndCircleContact.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 491330AD1372616300DFB46D /* b2PolygonAndCircleContact.cpp */; };
-               491330F61372616300DFB46D /* b2PolygonAndCircleContact.h in Headers */ = {isa = PBXBuildFile; fileRef = 491330AE1372616300DFB46D /* b2PolygonAndCircleContact.h */; };
-               491330F71372616300DFB46D /* b2PolygonContact.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 491330AF1372616300DFB46D /* b2PolygonContact.cpp */; };
-               491330F81372616300DFB46D /* b2PolygonContact.h in Headers */ = {isa = PBXBuildFile; fileRef = 491330B01372616300DFB46D /* b2PolygonContact.h */; };
-               491330F91372616300DFB46D /* b2TOISolver.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 491330B11372616300DFB46D /* b2TOISolver.cpp */; };
-               491330FA1372616300DFB46D /* b2TOISolver.h in Headers */ = {isa = PBXBuildFile; fileRef = 491330B21372616300DFB46D /* b2TOISolver.h */; };
-               491330FB1372616300DFB46D /* b2DistanceJoint.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 491330B41372616300DFB46D /* b2DistanceJoint.cpp */; };
-               491330FC1372616300DFB46D /* b2DistanceJoint.h in Headers */ = {isa = PBXBuildFile; fileRef = 491330B51372616300DFB46D /* b2DistanceJoint.h */; };
-               491330FD1372616300DFB46D /* b2FrictionJoint.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 491330B61372616300DFB46D /* b2FrictionJoint.cpp */; };
-               491330FE1372616300DFB46D /* b2FrictionJoint.h in Headers */ = {isa = PBXBuildFile; fileRef = 491330B71372616300DFB46D /* b2FrictionJoint.h */; };
-               491330FF1372616300DFB46D /* b2GearJoint.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 491330B81372616300DFB46D /* b2GearJoint.cpp */; };
-               491331001372616300DFB46D /* b2GearJoint.h in Headers */ = {isa = PBXBuildFile; fileRef = 491330B91372616300DFB46D /* b2GearJoint.h */; };
-               491331011372616300DFB46D /* b2Joint.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 491330BA1372616300DFB46D /* b2Joint.cpp */; };
-               491331021372616300DFB46D /* b2Joint.h in Headers */ = {isa = PBXBuildFile; fileRef = 491330BB1372616300DFB46D /* b2Joint.h */; };
-               491331031372616300DFB46D /* b2LineJoint.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 491330BC1372616300DFB46D /* b2LineJoint.cpp */; };
-               491331041372616300DFB46D /* b2LineJoint.h in Headers */ = {isa = PBXBuildFile; fileRef = 491330BD1372616300DFB46D /* b2LineJoint.h */; };
-               491331051372616300DFB46D /* b2MouseJoint.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 491330BE1372616300DFB46D /* b2MouseJoint.cpp */; };
-               491331061372616300DFB46D /* b2MouseJoint.h in Headers */ = {isa = PBXBuildFile; fileRef = 491330BF1372616300DFB46D /* b2MouseJoint.h */; };
-               491331071372616300DFB46D /* b2PrismaticJoint.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 491330C01372616300DFB46D /* b2PrismaticJoint.cpp */; };
-               491331081372616300DFB46D /* b2PrismaticJoint.h in Headers */ = {isa = PBXBuildFile; fileRef = 491330C11372616300DFB46D /* b2PrismaticJoint.h */; };
-               491331091372616300DFB46D /* b2PulleyJoint.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 491330C21372616300DFB46D /* b2PulleyJoint.cpp */; };
-               4913310A1372616300DFB46D /* b2PulleyJoint.h in Headers */ = {isa = PBXBuildFile; fileRef = 491330C31372616300DFB46D /* b2PulleyJoint.h */; };
-               4913310B1372616300DFB46D /* b2RevoluteJoint.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 491330C41372616300DFB46D /* b2RevoluteJoint.cpp */; };
-               4913310C1372616300DFB46D /* b2RevoluteJoint.h in Headers */ = {isa = PBXBuildFile; fileRef = 491330C51372616300DFB46D /* b2RevoluteJoint.h */; };
-               4913310D1372616300DFB46D /* b2WeldJoint.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 491330C61372616300DFB46D /* b2WeldJoint.cpp */; };
-               4913310E1372616300DFB46D /* b2WeldJoint.h in Headers */ = {isa = PBXBuildFile; fileRef = 491330C71372616300DFB46D /* b2WeldJoint.h */; };
                49133123137262F200DFB46D /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 49133122137262F200DFB46D /* Foundation.framework */; };
                491331281372630700DFB46D /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 491331271372630700DFB46D /* UIKit.framework */; };
+               4913344213727CB100DFB46D /* Box2D.h in Headers */ = {isa = PBXBuildFile; fileRef = 491333F513727CB100DFB46D /* Box2D.h */; };
+               4913344313727CB100DFB46D /* b2BroadPhase.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 491333F713727CB100DFB46D /* b2BroadPhase.cpp */; };
+               4913344413727CB100DFB46D /* b2BroadPhase.h in Headers */ = {isa = PBXBuildFile; fileRef = 491333F813727CB100DFB46D /* b2BroadPhase.h */; };
+               4913344513727CB100DFB46D /* b2CollideCircle.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 491333F913727CB100DFB46D /* b2CollideCircle.cpp */; };
+               4913344613727CB100DFB46D /* b2CollidePolygon.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 491333FA13727CB100DFB46D /* b2CollidePolygon.cpp */; };
+               4913344713727CB100DFB46D /* b2Collision.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 491333FB13727CB100DFB46D /* b2Collision.cpp */; };
+               4913344813727CB100DFB46D /* b2Collision.h in Headers */ = {isa = PBXBuildFile; fileRef = 491333FC13727CB100DFB46D /* b2Collision.h */; };
+               4913344913727CB100DFB46D /* b2Distance.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 491333FD13727CB100DFB46D /* b2Distance.cpp */; };
+               4913344A13727CB100DFB46D /* b2Distance.h in Headers */ = {isa = PBXBuildFile; fileRef = 491333FE13727CB100DFB46D /* b2Distance.h */; };
+               4913344B13727CB100DFB46D /* b2DynamicTree.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 491333FF13727CB100DFB46D /* b2DynamicTree.cpp */; };
+               4913344C13727CB100DFB46D /* b2DynamicTree.h in Headers */ = {isa = PBXBuildFile; fileRef = 4913340013727CB100DFB46D /* b2DynamicTree.h */; };
+               4913344D13727CB100DFB46D /* b2TimeOfImpact.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4913340113727CB100DFB46D /* b2TimeOfImpact.cpp */; };
+               4913344E13727CB100DFB46D /* b2TimeOfImpact.h in Headers */ = {isa = PBXBuildFile; fileRef = 4913340213727CB100DFB46D /* b2TimeOfImpact.h */; };
+               4913344F13727CB100DFB46D /* b2CircleShape.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4913340413727CB100DFB46D /* b2CircleShape.cpp */; };
+               4913345013727CB100DFB46D /* b2CircleShape.h in Headers */ = {isa = PBXBuildFile; fileRef = 4913340513727CB100DFB46D /* b2CircleShape.h */; };
+               4913345113727CB100DFB46D /* b2PolygonShape.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4913340613727CB100DFB46D /* b2PolygonShape.cpp */; };
+               4913345213727CB100DFB46D /* b2PolygonShape.h in Headers */ = {isa = PBXBuildFile; fileRef = 4913340713727CB100DFB46D /* b2PolygonShape.h */; };
+               4913345313727CB100DFB46D /* b2Shape.h in Headers */ = {isa = PBXBuildFile; fileRef = 4913340813727CB100DFB46D /* b2Shape.h */; };
+               4913345413727CB100DFB46D /* b2BlockAllocator.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4913340A13727CB100DFB46D /* b2BlockAllocator.cpp */; };
+               4913345513727CB100DFB46D /* b2BlockAllocator.h in Headers */ = {isa = PBXBuildFile; fileRef = 4913340B13727CB100DFB46D /* b2BlockAllocator.h */; };
+               4913345613727CB100DFB46D /* b2Math.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4913340C13727CB100DFB46D /* b2Math.cpp */; };
+               4913345713727CB100DFB46D /* b2Math.h in Headers */ = {isa = PBXBuildFile; fileRef = 4913340D13727CB100DFB46D /* b2Math.h */; };
+               4913345813727CB100DFB46D /* b2Settings.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4913340E13727CB100DFB46D /* b2Settings.cpp */; };
+               4913345913727CB100DFB46D /* b2Settings.h in Headers */ = {isa = PBXBuildFile; fileRef = 4913340F13727CB100DFB46D /* b2Settings.h */; };
+               4913345A13727CB100DFB46D /* b2StackAllocator.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4913341013727CB100DFB46D /* b2StackAllocator.cpp */; };
+               4913345B13727CB100DFB46D /* b2StackAllocator.h in Headers */ = {isa = PBXBuildFile; fileRef = 4913341113727CB100DFB46D /* b2StackAllocator.h */; };
+               4913345C13727CB100DFB46D /* b2Body.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4913341313727CB100DFB46D /* b2Body.cpp */; };
+               4913345D13727CB100DFB46D /* b2Body.h in Headers */ = {isa = PBXBuildFile; fileRef = 4913341413727CB100DFB46D /* b2Body.h */; };
+               4913345E13727CB100DFB46D /* b2ContactManager.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4913341513727CB100DFB46D /* b2ContactManager.cpp */; };
+               4913345F13727CB100DFB46D /* b2ContactManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 4913341613727CB100DFB46D /* b2ContactManager.h */; };
+               4913346013727CB100DFB46D /* b2Fixture.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4913341713727CB100DFB46D /* b2Fixture.cpp */; };
+               4913346113727CB100DFB46D /* b2Fixture.h in Headers */ = {isa = PBXBuildFile; fileRef = 4913341813727CB100DFB46D /* b2Fixture.h */; };
+               4913346213727CB100DFB46D /* b2Island.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4913341913727CB100DFB46D /* b2Island.cpp */; };
+               4913346313727CB100DFB46D /* b2Island.h in Headers */ = {isa = PBXBuildFile; fileRef = 4913341A13727CB100DFB46D /* b2Island.h */; };
+               4913346413727CB100DFB46D /* b2TimeStep.h in Headers */ = {isa = PBXBuildFile; fileRef = 4913341B13727CB100DFB46D /* b2TimeStep.h */; };
+               4913346513727CB100DFB46D /* b2World.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4913341C13727CB100DFB46D /* b2World.cpp */; };
+               4913346613727CB100DFB46D /* b2World.h in Headers */ = {isa = PBXBuildFile; fileRef = 4913341D13727CB100DFB46D /* b2World.h */; };
+               4913346713727CB100DFB46D /* b2WorldCallbacks.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4913341E13727CB100DFB46D /* b2WorldCallbacks.cpp */; };
+               4913346813727CB100DFB46D /* b2WorldCallbacks.h in Headers */ = {isa = PBXBuildFile; fileRef = 4913341F13727CB100DFB46D /* b2WorldCallbacks.h */; };
+               4913346913727CB100DFB46D /* b2CircleContact.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4913342113727CB100DFB46D /* b2CircleContact.cpp */; };
+               4913346A13727CB100DFB46D /* b2CircleContact.h in Headers */ = {isa = PBXBuildFile; fileRef = 4913342213727CB100DFB46D /* b2CircleContact.h */; };
+               4913346B13727CB100DFB46D /* b2Contact.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4913342313727CB100DFB46D /* b2Contact.cpp */; };
+               4913346C13727CB100DFB46D /* b2Contact.h in Headers */ = {isa = PBXBuildFile; fileRef = 4913342413727CB100DFB46D /* b2Contact.h */; };
+               4913346D13727CB100DFB46D /* b2ContactSolver.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4913342513727CB100DFB46D /* b2ContactSolver.cpp */; };
+               4913346E13727CB100DFB46D /* b2ContactSolver.h in Headers */ = {isa = PBXBuildFile; fileRef = 4913342613727CB100DFB46D /* b2ContactSolver.h */; };
+               4913346F13727CB100DFB46D /* b2PolygonAndCircleContact.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4913342713727CB100DFB46D /* b2PolygonAndCircleContact.cpp */; };
+               4913347013727CB100DFB46D /* b2PolygonAndCircleContact.h in Headers */ = {isa = PBXBuildFile; fileRef = 4913342813727CB100DFB46D /* b2PolygonAndCircleContact.h */; };
+               4913347113727CB100DFB46D /* b2PolygonContact.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4913342913727CB100DFB46D /* b2PolygonContact.cpp */; };
+               4913347213727CB100DFB46D /* b2PolygonContact.h in Headers */ = {isa = PBXBuildFile; fileRef = 4913342A13727CB100DFB46D /* b2PolygonContact.h */; };
+               4913347313727CB100DFB46D /* b2TOISolver.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4913342B13727CB100DFB46D /* b2TOISolver.cpp */; };
+               4913347413727CB100DFB46D /* b2TOISolver.h in Headers */ = {isa = PBXBuildFile; fileRef = 4913342C13727CB100DFB46D /* b2TOISolver.h */; };
+               4913347513727CB100DFB46D /* b2DistanceJoint.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4913342E13727CB100DFB46D /* b2DistanceJoint.cpp */; };
+               4913347613727CB100DFB46D /* b2DistanceJoint.h in Headers */ = {isa = PBXBuildFile; fileRef = 4913342F13727CB100DFB46D /* b2DistanceJoint.h */; };
+               4913347713727CB100DFB46D /* b2FrictionJoint.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4913343013727CB100DFB46D /* b2FrictionJoint.cpp */; };
+               4913347813727CB100DFB46D /* b2FrictionJoint.h in Headers */ = {isa = PBXBuildFile; fileRef = 4913343113727CB100DFB46D /* b2FrictionJoint.h */; };
+               4913347913727CB100DFB46D /* b2GearJoint.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4913343213727CB100DFB46D /* b2GearJoint.cpp */; };
+               4913347A13727CB100DFB46D /* b2GearJoint.h in Headers */ = {isa = PBXBuildFile; fileRef = 4913343313727CB100DFB46D /* b2GearJoint.h */; };
+               4913347B13727CB100DFB46D /* b2Joint.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4913343413727CB100DFB46D /* b2Joint.cpp */; };
+               4913347C13727CB100DFB46D /* b2Joint.h in Headers */ = {isa = PBXBuildFile; fileRef = 4913343513727CB100DFB46D /* b2Joint.h */; };
+               4913347D13727CB100DFB46D /* b2LineJoint.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4913343613727CB100DFB46D /* b2LineJoint.cpp */; };
+               4913347E13727CB100DFB46D /* b2LineJoint.h in Headers */ = {isa = PBXBuildFile; fileRef = 4913343713727CB100DFB46D /* b2LineJoint.h */; };
+               4913347F13727CB100DFB46D /* b2MouseJoint.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4913343813727CB100DFB46D /* b2MouseJoint.cpp */; };
+               4913348013727CB100DFB46D /* b2MouseJoint.h in Headers */ = {isa = PBXBuildFile; fileRef = 4913343913727CB100DFB46D /* b2MouseJoint.h */; };
+               4913348113727CB100DFB46D /* b2PrismaticJoint.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4913343A13727CB100DFB46D /* b2PrismaticJoint.cpp */; };
+               4913348213727CB100DFB46D /* b2PrismaticJoint.h in Headers */ = {isa = PBXBuildFile; fileRef = 4913343B13727CB100DFB46D /* b2PrismaticJoint.h */; };
+               4913348313727CB100DFB46D /* b2PulleyJoint.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4913343C13727CB100DFB46D /* b2PulleyJoint.cpp */; };
+               4913348413727CB100DFB46D /* b2PulleyJoint.h in Headers */ = {isa = PBXBuildFile; fileRef = 4913343D13727CB100DFB46D /* b2PulleyJoint.h */; };
+               4913348513727CB100DFB46D /* b2RevoluteJoint.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4913343E13727CB100DFB46D /* b2RevoluteJoint.cpp */; };
+               4913348613727CB100DFB46D /* b2RevoluteJoint.h in Headers */ = {isa = PBXBuildFile; fileRef = 4913343F13727CB100DFB46D /* b2RevoluteJoint.h */; };
+               4913348713727CB100DFB46D /* b2WeldJoint.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4913344013727CB100DFB46D /* b2WeldJoint.cpp */; };
+               4913348813727CB100DFB46D /* b2WeldJoint.h in Headers */ = {isa = PBXBuildFile; fileRef = 4913344113727CB100DFB46D /* b2WeldJoint.h */; };
 /* End PBXBuildFile section */
 
 /* Begin PBXFileReference section */
                4913305F1372610400DFB46D /* libBox2D.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libBox2D.a; sourceTree = BUILT_PRODUCTS_DIR; };
-               4913307B1372616300DFB46D /* Box2D.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Box2D.h; sourceTree = "<group>"; };
-               4913307D1372616300DFB46D /* b2BroadPhase.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = b2BroadPhase.cpp; sourceTree = "<group>"; };
-               4913307E1372616300DFB46D /* b2BroadPhase.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = b2BroadPhase.h; sourceTree = "<group>"; };
-               4913307F1372616300DFB46D /* b2CollideCircle.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = b2CollideCircle.cpp; sourceTree = "<group>"; };
-               491330801372616300DFB46D /* b2CollidePolygon.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = b2CollidePolygon.cpp; sourceTree = "<group>"; };
-               491330811372616300DFB46D /* b2Collision.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = b2Collision.cpp; sourceTree = "<group>"; };
-               491330821372616300DFB46D /* b2Collision.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = b2Collision.h; sourceTree = "<group>"; };
-               491330831372616300DFB46D /* b2Distance.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = b2Distance.cpp; sourceTree = "<group>"; };
-               491330841372616300DFB46D /* b2Distance.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = b2Distance.h; sourceTree = "<group>"; };
-               491330851372616300DFB46D /* b2DynamicTree.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = b2DynamicTree.cpp; sourceTree = "<group>"; };
-               491330861372616300DFB46D /* b2DynamicTree.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = b2DynamicTree.h; sourceTree = "<group>"; };
-               491330871372616300DFB46D /* b2TimeOfImpact.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = b2TimeOfImpact.cpp; sourceTree = "<group>"; };
-               491330881372616300DFB46D /* b2TimeOfImpact.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = b2TimeOfImpact.h; sourceTree = "<group>"; };
-               4913308A1372616300DFB46D /* b2CircleShape.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = b2CircleShape.cpp; sourceTree = "<group>"; };
-               4913308B1372616300DFB46D /* b2CircleShape.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = b2CircleShape.h; sourceTree = "<group>"; };
-               4913308C1372616300DFB46D /* b2PolygonShape.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = b2PolygonShape.cpp; sourceTree = "<group>"; };
-               4913308D1372616300DFB46D /* b2PolygonShape.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = b2PolygonShape.h; sourceTree = "<group>"; };
-               4913308E1372616300DFB46D /* b2Shape.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = b2Shape.h; sourceTree = "<group>"; };
-               491330901372616300DFB46D /* b2BlockAllocator.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = b2BlockAllocator.cpp; sourceTree = "<group>"; };
-               491330911372616300DFB46D /* b2BlockAllocator.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = b2BlockAllocator.h; sourceTree = "<group>"; };
-               491330921372616300DFB46D /* b2Math.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = b2Math.cpp; sourceTree = "<group>"; };
-               491330931372616300DFB46D /* b2Math.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = b2Math.h; sourceTree = "<group>"; };
-               491330941372616300DFB46D /* b2Settings.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = b2Settings.cpp; sourceTree = "<group>"; };
-               491330951372616300DFB46D /* b2Settings.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = b2Settings.h; sourceTree = "<group>"; };
-               491330961372616300DFB46D /* b2StackAllocator.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = b2StackAllocator.cpp; sourceTree = "<group>"; };
-               491330971372616300DFB46D /* b2StackAllocator.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = b2StackAllocator.h; sourceTree = "<group>"; };
-               491330991372616300DFB46D /* b2Body.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = b2Body.cpp; sourceTree = "<group>"; };
-               4913309A1372616300DFB46D /* b2Body.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = b2Body.h; sourceTree = "<group>"; };
-               4913309B1372616300DFB46D /* b2ContactManager.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = b2ContactManager.cpp; sourceTree = "<group>"; };
-               4913309C1372616300DFB46D /* b2ContactManager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = b2ContactManager.h; sourceTree = "<group>"; };
-               4913309D1372616300DFB46D /* b2Fixture.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = b2Fixture.cpp; sourceTree = "<group>"; };
-               4913309E1372616300DFB46D /* b2Fixture.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = b2Fixture.h; sourceTree = "<group>"; };
-               4913309F1372616300DFB46D /* b2Island.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = b2Island.cpp; sourceTree = "<group>"; };
-               491330A01372616300DFB46D /* b2Island.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = b2Island.h; sourceTree = "<group>"; };
-               491330A11372616300DFB46D /* b2TimeStep.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = b2TimeStep.h; sourceTree = "<group>"; };
-               491330A21372616300DFB46D /* b2World.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = b2World.cpp; sourceTree = "<group>"; };
-               491330A31372616300DFB46D /* b2World.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = b2World.h; sourceTree = "<group>"; };
-               491330A41372616300DFB46D /* b2WorldCallbacks.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = b2WorldCallbacks.cpp; sourceTree = "<group>"; };
-               491330A51372616300DFB46D /* b2WorldCallbacks.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = b2WorldCallbacks.h; sourceTree = "<group>"; };
-               491330A71372616300DFB46D /* b2CircleContact.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = b2CircleContact.cpp; sourceTree = "<group>"; };
-               491330A81372616300DFB46D /* b2CircleContact.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = b2CircleContact.h; sourceTree = "<group>"; };
-               491330A91372616300DFB46D /* b2Contact.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = b2Contact.cpp; sourceTree = "<group>"; };
-               491330AA1372616300DFB46D /* b2Contact.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = b2Contact.h; sourceTree = "<group>"; };
-               491330AB1372616300DFB46D /* b2ContactSolver.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = b2ContactSolver.cpp; sourceTree = "<group>"; };
-               491330AC1372616300DFB46D /* b2ContactSolver.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = b2ContactSolver.h; sourceTree = "<group>"; };
-               491330AD1372616300DFB46D /* b2PolygonAndCircleContact.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = b2PolygonAndCircleContact.cpp; sourceTree = "<group>"; };
-               491330AE1372616300DFB46D /* b2PolygonAndCircleContact.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = b2PolygonAndCircleContact.h; sourceTree = "<group>"; };
-               491330AF1372616300DFB46D /* b2PolygonContact.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = b2PolygonContact.cpp; sourceTree = "<group>"; };
-               491330B01372616300DFB46D /* b2PolygonContact.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = b2PolygonContact.h; sourceTree = "<group>"; };
-               491330B11372616300DFB46D /* b2TOISolver.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = b2TOISolver.cpp; sourceTree = "<group>"; };
-               491330B21372616300DFB46D /* b2TOISolver.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = b2TOISolver.h; sourceTree = "<group>"; };
-               491330B41372616300DFB46D /* b2DistanceJoint.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = b2DistanceJoint.cpp; sourceTree = "<group>"; };
-               491330B51372616300DFB46D /* b2DistanceJoint.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = b2DistanceJoint.h; sourceTree = "<group>"; };
-               491330B61372616300DFB46D /* b2FrictionJoint.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = b2FrictionJoint.cpp; sourceTree = "<group>"; };
-               491330B71372616300DFB46D /* b2FrictionJoint.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = b2FrictionJoint.h; sourceTree = "<group>"; };
-               491330B81372616300DFB46D /* b2GearJoint.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = b2GearJoint.cpp; sourceTree = "<group>"; };
-               491330B91372616300DFB46D /* b2GearJoint.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = b2GearJoint.h; sourceTree = "<group>"; };
-               491330BA1372616300DFB46D /* b2Joint.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = b2Joint.cpp; sourceTree = "<group>"; };
-               491330BB1372616300DFB46D /* b2Joint.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = b2Joint.h; sourceTree = "<group>"; };
-               491330BC1372616300DFB46D /* b2LineJoint.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = b2LineJoint.cpp; sourceTree = "<group>"; };
-               491330BD1372616300DFB46D /* b2LineJoint.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = b2LineJoint.h; sourceTree = "<group>"; };
-               491330BE1372616300DFB46D /* b2MouseJoint.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = b2MouseJoint.cpp; sourceTree = "<group>"; };
-               491330BF1372616300DFB46D /* b2MouseJoint.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = b2MouseJoint.h; sourceTree = "<group>"; };
-               491330C01372616300DFB46D /* b2PrismaticJoint.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = b2PrismaticJoint.cpp; sourceTree = "<group>"; };
-               491330C11372616300DFB46D /* b2PrismaticJoint.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = b2PrismaticJoint.h; sourceTree = "<group>"; };
-               491330C21372616300DFB46D /* b2PulleyJoint.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = b2PulleyJoint.cpp; sourceTree = "<group>"; };
-               491330C31372616300DFB46D /* b2PulleyJoint.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = b2PulleyJoint.h; sourceTree = "<group>"; };
-               491330C41372616300DFB46D /* b2RevoluteJoint.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = b2RevoluteJoint.cpp; sourceTree = "<group>"; };
-               491330C51372616300DFB46D /* b2RevoluteJoint.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = b2RevoluteJoint.h; sourceTree = "<group>"; };
-               491330C61372616300DFB46D /* b2WeldJoint.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = b2WeldJoint.cpp; sourceTree = "<group>"; };
-               491330C71372616300DFB46D /* b2WeldJoint.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = b2WeldJoint.h; sourceTree = "<group>"; };
                49133122137262F200DFB46D /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; };
                491331271372630700DFB46D /* UIKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UIKit.framework; path = System/Library/Frameworks/UIKit.framework; sourceTree = SDKROOT; };
+               491333F513727CB100DFB46D /* Box2D.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Box2D.h; sourceTree = "<group>"; };
+               491333F713727CB100DFB46D /* b2BroadPhase.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = b2BroadPhase.cpp; sourceTree = "<group>"; };
+               491333F813727CB100DFB46D /* b2BroadPhase.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = b2BroadPhase.h; sourceTree = "<group>"; };
+               491333F913727CB100DFB46D /* b2CollideCircle.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = b2CollideCircle.cpp; sourceTree = "<group>"; };
+               491333FA13727CB100DFB46D /* b2CollidePolygon.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = b2CollidePolygon.cpp; sourceTree = "<group>"; };
+               491333FB13727CB100DFB46D /* b2Collision.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = b2Collision.cpp; sourceTree = "<group>"; };
+               491333FC13727CB100DFB46D /* b2Collision.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = b2Collision.h; sourceTree = "<group>"; };
+               491333FD13727CB100DFB46D /* b2Distance.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = b2Distance.cpp; sourceTree = "<group>"; };
+               491333FE13727CB100DFB46D /* b2Distance.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = b2Distance.h; sourceTree = "<group>"; };
+               491333FF13727CB100DFB46D /* b2DynamicTree.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = b2DynamicTree.cpp; sourceTree = "<group>"; };
+               4913340013727CB100DFB46D /* b2DynamicTree.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = b2DynamicTree.h; sourceTree = "<group>"; };
+               4913340113727CB100DFB46D /* b2TimeOfImpact.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = b2TimeOfImpact.cpp; sourceTree = "<group>"; };
+               4913340213727CB100DFB46D /* b2TimeOfImpact.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = b2TimeOfImpact.h; sourceTree = "<group>"; };
+               4913340413727CB100DFB46D /* b2CircleShape.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = b2CircleShape.cpp; sourceTree = "<group>"; };
+               4913340513727CB100DFB46D /* b2CircleShape.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = b2CircleShape.h; sourceTree = "<group>"; };
+               4913340613727CB100DFB46D /* b2PolygonShape.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = b2PolygonShape.cpp; sourceTree = "<group>"; };
+               4913340713727CB100DFB46D /* b2PolygonShape.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = b2PolygonShape.h; sourceTree = "<group>"; };
+               4913340813727CB100DFB46D /* b2Shape.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = b2Shape.h; sourceTree = "<group>"; };
+               4913340A13727CB100DFB46D /* b2BlockAllocator.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = b2BlockAllocator.cpp; sourceTree = "<group>"; };
+               4913340B13727CB100DFB46D /* b2BlockAllocator.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = b2BlockAllocator.h; sourceTree = "<group>"; };
+               4913340C13727CB100DFB46D /* b2Math.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = b2Math.cpp; sourceTree = "<group>"; };
+               4913340D13727CB100DFB46D /* b2Math.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = b2Math.h; sourceTree = "<group>"; };
+               4913340E13727CB100DFB46D /* b2Settings.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = b2Settings.cpp; sourceTree = "<group>"; };
+               4913340F13727CB100DFB46D /* b2Settings.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = b2Settings.h; sourceTree = "<group>"; };
+               4913341013727CB100DFB46D /* b2StackAllocator.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = b2StackAllocator.cpp; sourceTree = "<group>"; };
+               4913341113727CB100DFB46D /* b2StackAllocator.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = b2StackAllocator.h; sourceTree = "<group>"; };
+               4913341313727CB100DFB46D /* b2Body.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = b2Body.cpp; sourceTree = "<group>"; };
+               4913341413727CB100DFB46D /* b2Body.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = b2Body.h; sourceTree = "<group>"; };
+               4913341513727CB100DFB46D /* b2ContactManager.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = b2ContactManager.cpp; sourceTree = "<group>"; };
+               4913341613727CB100DFB46D /* b2ContactManager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = b2ContactManager.h; sourceTree = "<group>"; };
+               4913341713727CB100DFB46D /* b2Fixture.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = b2Fixture.cpp; sourceTree = "<group>"; };
+               4913341813727CB100DFB46D /* b2Fixture.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = b2Fixture.h; sourceTree = "<group>"; };
+               4913341913727CB100DFB46D /* b2Island.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = b2Island.cpp; sourceTree = "<group>"; };
+               4913341A13727CB100DFB46D /* b2Island.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = b2Island.h; sourceTree = "<group>"; };
+               4913341B13727CB100DFB46D /* b2TimeStep.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = b2TimeStep.h; sourceTree = "<group>"; };
+               4913341C13727CB100DFB46D /* b2World.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = b2World.cpp; sourceTree = "<group>"; };
+               4913341D13727CB100DFB46D /* b2World.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = b2World.h; sourceTree = "<group>"; };
+               4913341E13727CB100DFB46D /* b2WorldCallbacks.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = b2WorldCallbacks.cpp; sourceTree = "<group>"; };
+               4913341F13727CB100DFB46D /* b2WorldCallbacks.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = b2WorldCallbacks.h; sourceTree = "<group>"; };
+               4913342113727CB100DFB46D /* b2CircleContact.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = b2CircleContact.cpp; sourceTree = "<group>"; };
+               4913342213727CB100DFB46D /* b2CircleContact.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = b2CircleContact.h; sourceTree = "<group>"; };
+               4913342313727CB100DFB46D /* b2Contact.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = b2Contact.cpp; sourceTree = "<group>"; };
+               4913342413727CB100DFB46D /* b2Contact.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = b2Contact.h; sourceTree = "<group>"; };
+               4913342513727CB100DFB46D /* b2ContactSolver.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = b2ContactSolver.cpp; sourceTree = "<group>"; };
+               4913342613727CB100DFB46D /* b2ContactSolver.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = b2ContactSolver.h; sourceTree = "<group>"; };
+               4913342713727CB100DFB46D /* b2PolygonAndCircleContact.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = b2PolygonAndCircleContact.cpp; sourceTree = "<group>"; };
+               4913342813727CB100DFB46D /* b2PolygonAndCircleContact.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = b2PolygonAndCircleContact.h; sourceTree = "<group>"; };
+               4913342913727CB100DFB46D /* b2PolygonContact.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = b2PolygonContact.cpp; sourceTree = "<group>"; };
+               4913342A13727CB100DFB46D /* b2PolygonContact.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = b2PolygonContact.h; sourceTree = "<group>"; };
+               4913342B13727CB100DFB46D /* b2TOISolver.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = b2TOISolver.cpp; sourceTree = "<group>"; };
+               4913342C13727CB100DFB46D /* b2TOISolver.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = b2TOISolver.h; sourceTree = "<group>"; };
+               4913342E13727CB100DFB46D /* b2DistanceJoint.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = b2DistanceJoint.cpp; sourceTree = "<group>"; };
+               4913342F13727CB100DFB46D /* b2DistanceJoint.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = b2DistanceJoint.h; sourceTree = "<group>"; };
+               4913343013727CB100DFB46D /* b2FrictionJoint.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = b2FrictionJoint.cpp; sourceTree = "<group>"; };
+               4913343113727CB100DFB46D /* b2FrictionJoint.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = b2FrictionJoint.h; sourceTree = "<group>"; };
+               4913343213727CB100DFB46D /* b2GearJoint.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = b2GearJoint.cpp; sourceTree = "<group>"; };
+               4913343313727CB100DFB46D /* b2GearJoint.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = b2GearJoint.h; sourceTree = "<group>"; };
+               4913343413727CB100DFB46D /* b2Joint.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = b2Joint.cpp; sourceTree = "<group>"; };
+               4913343513727CB100DFB46D /* b2Joint.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = b2Joint.h; sourceTree = "<group>"; };
+               4913343613727CB100DFB46D /* b2LineJoint.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = b2LineJoint.cpp; sourceTree = "<group>"; };
+               4913343713727CB100DFB46D /* b2LineJoint.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = b2LineJoint.h; sourceTree = "<group>"; };
+               4913343813727CB100DFB46D /* b2MouseJoint.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = b2MouseJoint.cpp; sourceTree = "<group>"; };
+               4913343913727CB100DFB46D /* b2MouseJoint.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = b2MouseJoint.h; sourceTree = "<group>"; };
+               4913343A13727CB100DFB46D /* b2PrismaticJoint.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = b2PrismaticJoint.cpp; sourceTree = "<group>"; };
+               4913343B13727CB100DFB46D /* b2PrismaticJoint.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = b2PrismaticJoint.h; sourceTree = "<group>"; };
+               4913343C13727CB100DFB46D /* b2PulleyJoint.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = b2PulleyJoint.cpp; sourceTree = "<group>"; };
+               4913343D13727CB100DFB46D /* b2PulleyJoint.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = b2PulleyJoint.h; sourceTree = "<group>"; };
+               4913343E13727CB100DFB46D /* b2RevoluteJoint.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = b2RevoluteJoint.cpp; sourceTree = "<group>"; };
+               4913343F13727CB100DFB46D /* b2RevoluteJoint.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = b2RevoluteJoint.h; sourceTree = "<group>"; };
+               4913344013727CB100DFB46D /* b2WeldJoint.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = b2WeldJoint.cpp; sourceTree = "<group>"; };
+               4913344113727CB100DFB46D /* b2WeldJoint.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = b2WeldJoint.h; sourceTree = "<group>"; };
 /* End PBXFileReference section */
 
 /* Begin PBXFrameworksBuildPhase section */
                491330541372610400DFB46D = {
                        isa = PBXGroup;
                        children = (
-                               4913307A1372616300DFB46D /* Box2D */,
+                               491333F413727CB100DFB46D /* Box2D */,
                                491331291372630F00DFB46D /* Frameworks */,
                                491330601372610400DFB46D /* Products */,
                        );
                        name = Products;
                        sourceTree = "<group>";
                };
-               4913307A1372616300DFB46D /* Box2D */ = {
+               491331291372630F00DFB46D /* Frameworks */ = {
+                       isa = PBXGroup;
+                       children = (
+                               491331271372630700DFB46D /* UIKit.framework */,
+                               49133122137262F200DFB46D /* Foundation.framework */,
+                       );
+                       name = Frameworks;
+                       sourceTree = "<group>";
+               };
+               491333F413727CB100DFB46D /* Box2D */ = {
                        isa = PBXGroup;
                        children = (
-                               4913307B1372616300DFB46D /* Box2D.h */,
-                               4913307C1372616300DFB46D /* Collision */,
-                               4913308F1372616300DFB46D /* Common */,
-                               491330981372616300DFB46D /* Dynamics */,
+                               491333F513727CB100DFB46D /* Box2D.h */,
+                               491333F613727CB100DFB46D /* Collision */,
+                               4913340913727CB100DFB46D /* Common */,
+                               4913341213727CB100DFB46D /* Dynamics */,
                        );
                        name = Box2D;
-                       path = src/Box2D;
+                       path = "../../../../tanks-ios/libs/box2d/src/Box2D";
                        sourceTree = "<group>";
                };
-               4913307C1372616300DFB46D /* Collision */ = {
+               491333F613727CB100DFB46D /* Collision */ = {
                        isa = PBXGroup;
                        children = (
-                               4913307D1372616300DFB46D /* b2BroadPhase.cpp */,
-                               4913307E1372616300DFB46D /* b2BroadPhase.h */,
-                               4913307F1372616300DFB46D /* b2CollideCircle.cpp */,
-                               491330801372616300DFB46D /* b2CollidePolygon.cpp */,
-                               491330811372616300DFB46D /* b2Collision.cpp */,
-                               491330821372616300DFB46D /* b2Collision.h */,
-                               491330831372616300DFB46D /* b2Distance.cpp */,
-                               491330841372616300DFB46D /* b2Distance.h */,
-                               491330851372616300DFB46D /* b2DynamicTree.cpp */,
-                               491330861372616300DFB46D /* b2DynamicTree.h */,
-                               491330871372616300DFB46D /* b2TimeOfImpact.cpp */,
-                               491330881372616300DFB46D /* b2TimeOfImpact.h */,
-                               491330891372616300DFB46D /* Shapes */,
+                               491333F713727CB100DFB46D /* b2BroadPhase.cpp */,
+                               491333F813727CB100DFB46D /* b2BroadPhase.h */,
+                               491333F913727CB100DFB46D /* b2CollideCircle.cpp */,
+                               491333FA13727CB100DFB46D /* b2CollidePolygon.cpp */,
+                               491333FB13727CB100DFB46D /* b2Collision.cpp */,
+                               491333FC13727CB100DFB46D /* b2Collision.h */,
+                               491333FD13727CB100DFB46D /* b2Distance.cpp */,
+                               491333FE13727CB100DFB46D /* b2Distance.h */,
+                               491333FF13727CB100DFB46D /* b2DynamicTree.cpp */,
+                               4913340013727CB100DFB46D /* b2DynamicTree.h */,
+                               4913340113727CB100DFB46D /* b2TimeOfImpact.cpp */,
+                               4913340213727CB100DFB46D /* b2TimeOfImpact.h */,
+                               4913340313727CB100DFB46D /* Shapes */,
                        );
                        path = Collision;
                        sourceTree = "<group>";
                };
-               491330891372616300DFB46D /* Shapes */ = {
+               4913340313727CB100DFB46D /* Shapes */ = {
                        isa = PBXGroup;
                        children = (
-                               4913308A1372616300DFB46D /* b2CircleShape.cpp */,
-                               4913308B1372616300DFB46D /* b2CircleShape.h */,
-                               4913308C1372616300DFB46D /* b2PolygonShape.cpp */,
-                               4913308D1372616300DFB46D /* b2PolygonShape.h */,
-                               4913308E1372616300DFB46D /* b2Shape.h */,
+                               4913340413727CB100DFB46D /* b2CircleShape.cpp */,
+                               4913340513727CB100DFB46D /* b2CircleShape.h */,
+                               4913340613727CB100DFB46D /* b2PolygonShape.cpp */,
+                               4913340713727CB100DFB46D /* b2PolygonShape.h */,
+                               4913340813727CB100DFB46D /* b2Shape.h */,
                        );
                        path = Shapes;
                        sourceTree = "<group>";
                };
-               4913308F1372616300DFB46D /* Common */ = {
+               4913340913727CB100DFB46D /* Common */ = {
                        isa = PBXGroup;
                        children = (
-                               491330901372616300DFB46D /* b2BlockAllocator.cpp */,
-                               491330911372616300DFB46D /* b2BlockAllocator.h */,
-                               491330921372616300DFB46D /* b2Math.cpp */,
-                               491330931372616300DFB46D /* b2Math.h */,
-                               491330941372616300DFB46D /* b2Settings.cpp */,
-                               491330951372616300DFB46D /* b2Settings.h */,
-                               491330961372616300DFB46D /* b2StackAllocator.cpp */,
-                               491330971372616300DFB46D /* b2StackAllocator.h */,
+                               4913340A13727CB100DFB46D /* b2BlockAllocator.cpp */,
+                               4913340B13727CB100DFB46D /* b2BlockAllocator.h */,
+                               4913340C13727CB100DFB46D /* b2Math.cpp */,
+                               4913340D13727CB100DFB46D /* b2Math.h */,
+                               4913340E13727CB100DFB46D /* b2Settings.cpp */,
+                               4913340F13727CB100DFB46D /* b2Settings.h */,
+                               4913341013727CB100DFB46D /* b2StackAllocator.cpp */,
+                               4913341113727CB100DFB46D /* b2StackAllocator.h */,
                        );
                        path = Common;
                        sourceTree = "<group>";
                };
-               491330981372616300DFB46D /* Dynamics */ = {
+               4913341213727CB100DFB46D /* Dynamics */ = {
                        isa = PBXGroup;
                        children = (
-                               491330991372616300DFB46D /* b2Body.cpp */,
-                               4913309A1372616300DFB46D /* b2Body.h */,
-                               4913309B1372616300DFB46D /* b2ContactManager.cpp */,
-                               4913309C1372616300DFB46D /* b2ContactManager.h */,
-                               4913309D1372616300DFB46D /* b2Fixture.cpp */,
-                               4913309E1372616300DFB46D /* b2Fixture.h */,
-                               4913309F1372616300DFB46D /* b2Island.cpp */,
-                               491330A01372616300DFB46D /* b2Island.h */,
-                               491330A11372616300DFB46D /* b2TimeStep.h */,
-                               491330A21372616300DFB46D /* b2World.cpp */,
-                               491330A31372616300DFB46D /* b2World.h */,
-                               491330A41372616300DFB46D /* b2WorldCallbacks.cpp */,
-                               491330A51372616300DFB46D /* b2WorldCallbacks.h */,
-                               491330A61372616300DFB46D /* Contacts */,
-                               491330B31372616300DFB46D /* Joints */,
+                               4913341313727CB100DFB46D /* b2Body.cpp */,
+                               4913341413727CB100DFB46D /* b2Body.h */,
+                               4913341513727CB100DFB46D /* b2ContactManager.cpp */,
+                               4913341613727CB100DFB46D /* b2ContactManager.h */,
+                               4913341713727CB100DFB46D /* b2Fixture.cpp */,
+                               4913341813727CB100DFB46D /* b2Fixture.h */,
+                               4913341913727CB100DFB46D /* b2Island.cpp */,
+                               4913341A13727CB100DFB46D /* b2Island.h */,
+                               4913341B13727CB100DFB46D /* b2TimeStep.h */,
+                               4913341C13727CB100DFB46D /* b2World.cpp */,
+                               4913341D13727CB100DFB46D /* b2World.h */,
+                               4913341E13727CB100DFB46D /* b2WorldCallbacks.cpp */,
+                               4913341F13727CB100DFB46D /* b2WorldCallbacks.h */,
+                               4913342013727CB100DFB46D /* Contacts */,
+                               4913342D13727CB100DFB46D /* Joints */,
                        );
                        path = Dynamics;
                        sourceTree = "<group>";
                };
-               491330A61372616300DFB46D /* Contacts */ = {
+               4913342013727CB100DFB46D /* Contacts */ = {
                        isa = PBXGroup;
                        children = (
-                               491330A71372616300DFB46D /* b2CircleContact.cpp */,
-                               491330A81372616300DFB46D /* b2CircleContact.h */,
-                               491330A91372616300DFB46D /* b2Contact.cpp */,
-                               491330AA1372616300DFB46D /* b2Contact.h */,
-                               491330AB1372616300DFB46D /* b2ContactSolver.cpp */,
-                               491330AC1372616300DFB46D /* b2ContactSolver.h */,
-                               491330AD1372616300DFB46D /* b2PolygonAndCircleContact.cpp */,
-                               491330AE1372616300DFB46D /* b2PolygonAndCircleContact.h */,
-                               491330AF1372616300DFB46D /* b2PolygonContact.cpp */,
-                               491330B01372616300DFB46D /* b2PolygonContact.h */,
-                               491330B11372616300DFB46D /* b2TOISolver.cpp */,
-                               491330B21372616300DFB46D /* b2TOISolver.h */,
+                               4913342113727CB100DFB46D /* b2CircleContact.cpp */,
+                               4913342213727CB100DFB46D /* b2CircleContact.h */,
+                               4913342313727CB100DFB46D /* b2Contact.cpp */,
+                               4913342413727CB100DFB46D /* b2Contact.h */,
+                               4913342513727CB100DFB46D /* b2ContactSolver.cpp */,
+                               4913342613727CB100DFB46D /* b2ContactSolver.h */,
+                               4913342713727CB100DFB46D /* b2PolygonAndCircleContact.cpp */,
+                               4913342813727CB100DFB46D /* b2PolygonAndCircleContact.h */,
+                               4913342913727CB100DFB46D /* b2PolygonContact.cpp */,
+                               4913342A13727CB100DFB46D /* b2PolygonContact.h */,
+                               4913342B13727CB100DFB46D /* b2TOISolver.cpp */,
+                               4913342C13727CB100DFB46D /* b2TOISolver.h */,
                        );
                        path = Contacts;
                        sourceTree = "<group>";
                };
-               491330B31372616300DFB46D /* Joints */ = {
+               4913342D13727CB100DFB46D /* Joints */ = {
                        isa = PBXGroup;
                        children = (
-                               491330B41372616300DFB46D /* b2DistanceJoint.cpp */,
-                               491330B51372616300DFB46D /* b2DistanceJoint.h */,
-                               491330B61372616300DFB46D /* b2FrictionJoint.cpp */,
-                               491330B71372616300DFB46D /* b2FrictionJoint.h */,
-                               491330B81372616300DFB46D /* b2GearJoint.cpp */,
-                               491330B91372616300DFB46D /* b2GearJoint.h */,
-                               491330BA1372616300DFB46D /* b2Joint.cpp */,
-                               491330BB1372616300DFB46D /* b2Joint.h */,
-                               491330BC1372616300DFB46D /* b2LineJoint.cpp */,
-                               491330BD1372616300DFB46D /* b2LineJoint.h */,
-                               491330BE1372616300DFB46D /* b2MouseJoint.cpp */,
-                               491330BF1372616300DFB46D /* b2MouseJoint.h */,
-                               491330C01372616300DFB46D /* b2PrismaticJoint.cpp */,
-                               491330C11372616300DFB46D /* b2PrismaticJoint.h */,
-                               491330C21372616300DFB46D /* b2PulleyJoint.cpp */,
-                               491330C31372616300DFB46D /* b2PulleyJoint.h */,
-                               491330C41372616300DFB46D /* b2RevoluteJoint.cpp */,
-                               491330C51372616300DFB46D /* b2RevoluteJoint.h */,
-                               491330C61372616300DFB46D /* b2WeldJoint.cpp */,
-                               491330C71372616300DFB46D /* b2WeldJoint.h */,
+                               4913342E13727CB100DFB46D /* b2DistanceJoint.cpp */,
+                               4913342F13727CB100DFB46D /* b2DistanceJoint.h */,
+                               4913343013727CB100DFB46D /* b2FrictionJoint.cpp */,
+                               4913343113727CB100DFB46D /* b2FrictionJoint.h */,
+                               4913343213727CB100DFB46D /* b2GearJoint.cpp */,
+                               4913343313727CB100DFB46D /* b2GearJoint.h */,
+                               4913343413727CB100DFB46D /* b2Joint.cpp */,
+                               4913343513727CB100DFB46D /* b2Joint.h */,
+                               4913343613727CB100DFB46D /* b2LineJoint.cpp */,
+                               4913343713727CB100DFB46D /* b2LineJoint.h */,
+                               4913343813727CB100DFB46D /* b2MouseJoint.cpp */,
+                               4913343913727CB100DFB46D /* b2MouseJoint.h */,
+                               4913343A13727CB100DFB46D /* b2PrismaticJoint.cpp */,
+                               4913343B13727CB100DFB46D /* b2PrismaticJoint.h */,
+                               4913343C13727CB100DFB46D /* b2PulleyJoint.cpp */,
+                               4913343D13727CB100DFB46D /* b2PulleyJoint.h */,
+                               4913343E13727CB100DFB46D /* b2RevoluteJoint.cpp */,
+                               4913343F13727CB100DFB46D /* b2RevoluteJoint.h */,
+                               4913344013727CB100DFB46D /* b2WeldJoint.cpp */,
+                               4913344113727CB100DFB46D /* b2WeldJoint.h */,
                        );
                        path = Joints;
                        sourceTree = "<group>";
                };
-               491331291372630F00DFB46D /* Frameworks */ = {
-                       isa = PBXGroup;
-                       children = (
-                               491331271372630700DFB46D /* UIKit.framework */,
-                               49133122137262F200DFB46D /* Foundation.framework */,
-                       );
-                       name = Frameworks;
-                       sourceTree = "<group>";
-               };
 /* End PBXGroup section */
 
 /* Begin PBXHeadersBuildPhase section */
                        isa = PBXHeadersBuildPhase;
                        buildActionMask = 2147483647;
                        files = (
-                               491330C81372616300DFB46D /* Box2D.h in Headers */,
-                               491330CA1372616300DFB46D /* b2BroadPhase.h in Headers */,
-                               491330CE1372616300DFB46D /* b2Collision.h in Headers */,
-                               491330D01372616300DFB46D /* b2Distance.h in Headers */,
-                               491330D21372616300DFB46D /* b2DynamicTree.h in Headers */,
-                               491330D41372616300DFB46D /* b2TimeOfImpact.h in Headers */,
-                               491330D61372616300DFB46D /* b2CircleShape.h in Headers */,
-                               491330D81372616300DFB46D /* b2PolygonShape.h in Headers */,
-                               491330D91372616300DFB46D /* b2Shape.h in Headers */,
-                               491330DB1372616300DFB46D /* b2BlockAllocator.h in Headers */,
-                               491330DD1372616300DFB46D /* b2Math.h in Headers */,
-                               491330DF1372616300DFB46D /* b2Settings.h in Headers */,
-                               491330E11372616300DFB46D /* b2StackAllocator.h in Headers */,
-                               491330E31372616300DFB46D /* b2Body.h in Headers */,
-                               491330E51372616300DFB46D /* b2ContactManager.h in Headers */,
-                               491330E71372616300DFB46D /* b2Fixture.h in Headers */,
-                               491330E91372616300DFB46D /* b2Island.h in Headers */,
-                               491330EA1372616300DFB46D /* b2TimeStep.h in Headers */,
-                               491330EC1372616300DFB46D /* b2World.h in Headers */,
-                               491330EE1372616300DFB46D /* b2WorldCallbacks.h in Headers */,
-                               491330F01372616300DFB46D /* b2CircleContact.h in Headers */,
-                               491330F21372616300DFB46D /* b2Contact.h in Headers */,
-                               491330F41372616300DFB46D /* b2ContactSolver.h in Headers */,
-                               491330F61372616300DFB46D /* b2PolygonAndCircleContact.h in Headers */,
-                               491330F81372616300DFB46D /* b2PolygonContact.h in Headers */,
-                               491330FA1372616300DFB46D /* b2TOISolver.h in Headers */,
-                               491330FC1372616300DFB46D /* b2DistanceJoint.h in Headers */,
-                               491330FE1372616300DFB46D /* b2FrictionJoint.h in Headers */,
-                               491331001372616300DFB46D /* b2GearJoint.h in Headers */,
-                               491331021372616300DFB46D /* b2Joint.h in Headers */,
-                               491331041372616300DFB46D /* b2LineJoint.h in Headers */,
-                               491331061372616300DFB46D /* b2MouseJoint.h in Headers */,
-                               491331081372616300DFB46D /* b2PrismaticJoint.h in Headers */,
-                               4913310A1372616300DFB46D /* b2PulleyJoint.h in Headers */,
-                               4913310C1372616300DFB46D /* b2RevoluteJoint.h in Headers */,
-                               4913310E1372616300DFB46D /* b2WeldJoint.h in Headers */,
+                               4913344213727CB100DFB46D /* Box2D.h in Headers */,
+                               4913344413727CB100DFB46D /* b2BroadPhase.h in Headers */,
+                               4913344813727CB100DFB46D /* b2Collision.h in Headers */,
+                               4913344A13727CB100DFB46D /* b2Distance.h in Headers */,
+                               4913344C13727CB100DFB46D /* b2DynamicTree.h in Headers */,
+                               4913344E13727CB100DFB46D /* b2TimeOfImpact.h in Headers */,
+                               4913345013727CB100DFB46D /* b2CircleShape.h in Headers */,
+                               4913345213727CB100DFB46D /* b2PolygonShape.h in Headers */,
+                               4913345313727CB100DFB46D /* b2Shape.h in Headers */,
+                               4913345513727CB100DFB46D /* b2BlockAllocator.h in Headers */,
+                               4913345713727CB100DFB46D /* b2Math.h in Headers */,
+                               4913345913727CB100DFB46D /* b2Settings.h in Headers */,
+                               4913345B13727CB100DFB46D /* b2StackAllocator.h in Headers */,
+                               4913345D13727CB100DFB46D /* b2Body.h in Headers */,
+                               4913345F13727CB100DFB46D /* b2ContactManager.h in Headers */,
+                               4913346113727CB100DFB46D /* b2Fixture.h in Headers */,
+                               4913346313727CB100DFB46D /* b2Island.h in Headers */,
+                               4913346413727CB100DFB46D /* b2TimeStep.h in Headers */,
+                               4913346613727CB100DFB46D /* b2World.h in Headers */,
+                               4913346813727CB100DFB46D /* b2WorldCallbacks.h in Headers */,
+                               4913346A13727CB100DFB46D /* b2CircleContact.h in Headers */,
+                               4913346C13727CB100DFB46D /* b2Contact.h in Headers */,
+                               4913346E13727CB100DFB46D /* b2ContactSolver.h in Headers */,
+                               4913347013727CB100DFB46D /* b2PolygonAndCircleContact.h in Headers */,
+                               4913347213727CB100DFB46D /* b2PolygonContact.h in Headers */,
+                               4913347413727CB100DFB46D /* b2TOISolver.h in Headers */,
+                               4913347613727CB100DFB46D /* b2DistanceJoint.h in Headers */,
+                               4913347813727CB100DFB46D /* b2FrictionJoint.h in Headers */,
+                               4913347A13727CB100DFB46D /* b2GearJoint.h in Headers */,
+                               4913347C13727CB100DFB46D /* b2Joint.h in Headers */,
+                               4913347E13727CB100DFB46D /* b2LineJoint.h in Headers */,
+                               4913348013727CB100DFB46D /* b2MouseJoint.h in Headers */,
+                               4913348213727CB100DFB46D /* b2PrismaticJoint.h in Headers */,
+                               4913348413727CB100DFB46D /* b2PulleyJoint.h in Headers */,
+                               4913348613727CB100DFB46D /* b2RevoluteJoint.h in Headers */,
+                               4913348813727CB100DFB46D /* b2WeldJoint.h in Headers */,
                        );
                        runOnlyForDeploymentPostprocessing = 0;
                };
                        isa = PBXSourcesBuildPhase;
                        buildActionMask = 2147483647;
                        files = (
-                               491330C91372616300DFB46D /* b2BroadPhase.cpp in Sources */,
-                               491330CB1372616300DFB46D /* b2CollideCircle.cpp in Sources */,
-                               491330CC1372616300DFB46D /* b2CollidePolygon.cpp in Sources */,
-                               491330CD1372616300DFB46D /* b2Collision.cpp in Sources */,
-                               491330CF1372616300DFB46D /* b2Distance.cpp in Sources */,
-                               491330D11372616300DFB46D /* b2DynamicTree.cpp in Sources */,
-                               491330D31372616300DFB46D /* b2TimeOfImpact.cpp in Sources */,
-                               491330D51372616300DFB46D /* b2CircleShape.cpp in Sources */,
-                               491330D71372616300DFB46D /* b2PolygonShape.cpp in Sources */,
-                               491330DA1372616300DFB46D /* b2BlockAllocator.cpp in Sources */,
-                               491330DC1372616300DFB46D /* b2Math.cpp in Sources */,
-                               491330DE1372616300DFB46D /* b2Settings.cpp in Sources */,
-                               491330E01372616300DFB46D /* b2StackAllocator.cpp in Sources */,
-                               491330E21372616300DFB46D /* b2Body.cpp in Sources */,
-                               491330E41372616300DFB46D /* b2ContactManager.cpp in Sources */,
-                               491330E61372616300DFB46D /* b2Fixture.cpp in Sources */,
-                               491330E81372616300DFB46D /* b2Island.cpp in Sources */,
-                               491330EB1372616300DFB46D /* b2World.cpp in Sources */,
-                               491330ED1372616300DFB46D /* b2WorldCallbacks.cpp in Sources */,
-                               491330EF1372616300DFB46D /* b2CircleContact.cpp in Sources */,
-                               491330F11372616300DFB46D /* b2Contact.cpp in Sources */,
-                               491330F31372616300DFB46D /* b2ContactSolver.cpp in Sources */,
-                               491330F51372616300DFB46D /* b2PolygonAndCircleContact.cpp in Sources */,
-                               491330F71372616300DFB46D /* b2PolygonContact.cpp in Sources */,
-                               491330F91372616300DFB46D /* b2TOISolver.cpp in Sources */,
-                               491330FB1372616300DFB46D /* b2DistanceJoint.cpp in Sources */,
-                               491330FD1372616300DFB46D /* b2FrictionJoint.cpp in Sources */,
-                               491330FF1372616300DFB46D /* b2GearJoint.cpp in Sources */,
-                               491331011372616300DFB46D /* b2Joint.cpp in Sources */,
-                               491331031372616300DFB46D /* b2LineJoint.cpp in Sources */,
-                               491331051372616300DFB46D /* b2MouseJoint.cpp in Sources */,
-                               491331071372616300DFB46D /* b2PrismaticJoint.cpp in Sources */,
-                               491331091372616300DFB46D /* b2PulleyJoint.cpp in Sources */,
-                               4913310B1372616300DFB46D /* b2RevoluteJoint.cpp in Sources */,
-                               4913310D1372616300DFB46D /* b2WeldJoint.cpp in Sources */,
+                               4913344313727CB100DFB46D /* b2BroadPhase.cpp in Sources */,
+                               4913344513727CB100DFB46D /* b2CollideCircle.cpp in Sources */,
+                               4913344613727CB100DFB46D /* b2CollidePolygon.cpp in Sources */,
+                               4913344713727CB100DFB46D /* b2Collision.cpp in Sources */,
+                               4913344913727CB100DFB46D /* b2Distance.cpp in Sources */,
+                               4913344B13727CB100DFB46D /* b2DynamicTree.cpp in Sources */,
+                               4913344D13727CB100DFB46D /* b2TimeOfImpact.cpp in Sources */,
+                               4913344F13727CB100DFB46D /* b2CircleShape.cpp in Sources */,
+                               4913345113727CB100DFB46D /* b2PolygonShape.cpp in Sources */,
+                               4913345413727CB100DFB46D /* b2BlockAllocator.cpp in Sources */,
+                               4913345613727CB100DFB46D /* b2Math.cpp in Sources */,
+                               4913345813727CB100DFB46D /* b2Settings.cpp in Sources */,
+                               4913345A13727CB100DFB46D /* b2StackAllocator.cpp in Sources */,
+                               4913345C13727CB100DFB46D /* b2Body.cpp in Sources */,
+                               4913345E13727CB100DFB46D /* b2ContactManager.cpp in Sources */,
+                               4913346013727CB100DFB46D /* b2Fixture.cpp in Sources */,
+                               4913346213727CB100DFB46D /* b2Island.cpp in Sources */,
+                               4913346513727CB100DFB46D /* b2World.cpp in Sources */,
+                               4913346713727CB100DFB46D /* b2WorldCallbacks.cpp in Sources */,
+                               4913346913727CB100DFB46D /* b2CircleContact.cpp in Sources */,
+                               4913346B13727CB100DFB46D /* b2Contact.cpp in Sources */,
+                               4913346D13727CB100DFB46D /* b2ContactSolver.cpp in Sources */,
+                               4913346F13727CB100DFB46D /* b2PolygonAndCircleContact.cpp in Sources */,
+                               4913347113727CB100DFB46D /* b2PolygonContact.cpp in Sources */,
+                               4913347313727CB100DFB46D /* b2TOISolver.cpp in Sources */,
+                               4913347513727CB100DFB46D /* b2DistanceJoint.cpp in Sources */,
+                               4913347713727CB100DFB46D /* b2FrictionJoint.cpp in Sources */,
+                               4913347913727CB100DFB46D /* b2GearJoint.cpp in Sources */,
+                               4913347B13727CB100DFB46D /* b2Joint.cpp in Sources */,
+                               4913347D13727CB100DFB46D /* b2LineJoint.cpp in Sources */,
+                               4913347F13727CB100DFB46D /* b2MouseJoint.cpp in Sources */,
+                               4913348113727CB100DFB46D /* b2PrismaticJoint.cpp in Sources */,
+                               4913348313727CB100DFB46D /* b2PulleyJoint.cpp in Sources */,
+                               4913348513727CB100DFB46D /* b2RevoluteJoint.cpp in Sources */,
+                               4913348713727CB100DFB46D /* b2WeldJoint.cpp in Sources */,
                        );
                        runOnlyForDeploymentPostprocessing = 0;
                };
index 6e1af9d..65cf69b 100644 (file)
@@ -21,9 +21,7 @@
                4913323913726B1F00DFB46D /* BodyTypes.h in Headers */ = {isa = PBXBuildFile; fileRef = 4913320E13726B1F00DFB46D /* BodyTypes.h */; };
                4913323A13726B1F00DFB46D /* Breakable.h in Headers */ = {isa = PBXBuildFile; fileRef = 4913320F13726B1F00DFB46D /* Breakable.h */; };
                4913323B13726B1F00DFB46D /* Bridge.h in Headers */ = {isa = PBXBuildFile; fileRef = 4913321013726B1F00DFB46D /* Bridge.h */; };
-               4913323C13726B1F00DFB46D /* BulletTest.h in Headers */ = {isa = PBXBuildFile; fileRef = 4913321113726B1F00DFB46D /* BulletTest.h */; };
                4913323D13726B1F00DFB46D /* Cantilever.h in Headers */ = {isa = PBXBuildFile; fileRef = 4913321213726B1F00DFB46D /* Cantilever.h */; };
-               4913323E13726B1F00DFB46D /* Car.h in Headers */ = {isa = PBXBuildFile; fileRef = 4913321313726B1F00DFB46D /* Car.h */; };
                4913323F13726B1F00DFB46D /* Chain.h in Headers */ = {isa = PBXBuildFile; fileRef = 4913321413726B1F00DFB46D /* Chain.h */; };
                4913324013726B1F00DFB46D /* CharacterCollision.h in Headers */ = {isa = PBXBuildFile; fileRef = 4913321513726B1F00DFB46D /* CharacterCollision.h */; };
                4913324113726B1F00DFB46D /* CollisionFiltering.h in Headers */ = {isa = PBXBuildFile; fileRef = 4913321613726B1F00DFB46D /* CollisionFiltering.h */; };
                4913324713726B1F00DFB46D /* Dominos.h in Headers */ = {isa = PBXBuildFile; fileRef = 4913321C13726B1F00DFB46D /* Dominos.h */; };
                4913324813726B1F00DFB46D /* DynamicTreeTest.h in Headers */ = {isa = PBXBuildFile; fileRef = 4913321D13726B1F00DFB46D /* DynamicTreeTest.h */; };
                4913324913726B1F00DFB46D /* EdgeShapes.h in Headers */ = {isa = PBXBuildFile; fileRef = 4913321E13726B1F00DFB46D /* EdgeShapes.h */; };
-               4913324A13726B1F00DFB46D /* EdgeTest.h in Headers */ = {isa = PBXBuildFile; fileRef = 4913321F13726B1F00DFB46D /* EdgeTest.h */; };
                4913324B13726B1F00DFB46D /* Gears.h in Headers */ = {isa = PBXBuildFile; fileRef = 4913322013726B1F00DFB46D /* Gears.h */; };
                4913324C13726B1F00DFB46D /* LineJoint.h in Headers */ = {isa = PBXBuildFile; fileRef = 4913322113726B1F00DFB46D /* LineJoint.h */; };
                4913324D13726B1F00DFB46D /* OneSidedPlatform.h in Headers */ = {isa = PBXBuildFile; fileRef = 4913322213726B1F00DFB46D /* OneSidedPlatform.h */; };
-               4913324E13726B1F00DFB46D /* Pinball.h in Headers */ = {isa = PBXBuildFile; fileRef = 4913322313726B1F00DFB46D /* Pinball.h */; };
                4913324F13726B1F00DFB46D /* PolyCollision.h in Headers */ = {isa = PBXBuildFile; fileRef = 4913322413726B1F00DFB46D /* PolyCollision.h */; };
                4913325013726B1F00DFB46D /* PolyShapes.h in Headers */ = {isa = PBXBuildFile; fileRef = 4913322513726B1F00DFB46D /* PolyShapes.h */; };
                4913325113726B1F00DFB46D /* Prismatic.h in Headers */ = {isa = PBXBuildFile; fileRef = 4913322613726B1F00DFB46D /* Prismatic.h */; };
                4913325213726B1F00DFB46D /* Pulleys.h in Headers */ = {isa = PBXBuildFile; fileRef = 4913322713726B1F00DFB46D /* Pulleys.h */; };
                4913325313726B1F00DFB46D /* Pyramid.h in Headers */ = {isa = PBXBuildFile; fileRef = 4913322813726B1F00DFB46D /* Pyramid.h */; };
                4913325413726B1F00DFB46D /* RayCast.h in Headers */ = {isa = PBXBuildFile; fileRef = 4913322913726B1F00DFB46D /* RayCast.h */; };
-               4913325513726B1F00DFB46D /* Revolute.h in Headers */ = {isa = PBXBuildFile; fileRef = 4913322A13726B1F00DFB46D /* Revolute.h */; };
-               4913325613726B1F00DFB46D /* Rope.h in Headers */ = {isa = PBXBuildFile; fileRef = 4913322B13726B1F00DFB46D /* Rope.h */; };
-               4913325713726B1F00DFB46D /* RopeJoint.h in Headers */ = {isa = PBXBuildFile; fileRef = 4913322C13726B1F00DFB46D /* RopeJoint.h */; };
                4913325813726B1F00DFB46D /* SensorTest.h in Headers */ = {isa = PBXBuildFile; fileRef = 4913322D13726B1F00DFB46D /* SensorTest.h */; };
                4913325913726B1F00DFB46D /* ShapeEditing.h in Headers */ = {isa = PBXBuildFile; fileRef = 4913322E13726B1F00DFB46D /* ShapeEditing.h */; };
                4913325A13726B1F00DFB46D /* SliderCrank.h in Headers */ = {isa = PBXBuildFile; fileRef = 4913322F13726B1F00DFB46D /* SliderCrank.h */; };
                4913325B13726B1F00DFB46D /* SphereStack.h in Headers */ = {isa = PBXBuildFile; fileRef = 4913323013726B1F00DFB46D /* SphereStack.h */; };
                4913325C13726B1F00DFB46D /* TheoJansen.h in Headers */ = {isa = PBXBuildFile; fileRef = 4913323113726B1F00DFB46D /* TheoJansen.h */; };
-               4913325D13726B1F00DFB46D /* Tiles.h in Headers */ = {isa = PBXBuildFile; fileRef = 4913323213726B1F00DFB46D /* Tiles.h */; };
                4913325E13726B1F00DFB46D /* TimeOfImpact.h in Headers */ = {isa = PBXBuildFile; fileRef = 4913323313726B1F00DFB46D /* TimeOfImpact.h */; };
                4913325F13726B1F00DFB46D /* VaryingFriction.h in Headers */ = {isa = PBXBuildFile; fileRef = 4913323413726B1F00DFB46D /* VaryingFriction.h */; };
                4913326013726B1F00DFB46D /* VaryingRestitution.h in Headers */ = {isa = PBXBuildFile; fileRef = 4913323513726B1F00DFB46D /* VaryingRestitution.h */; };
                4913320E13726B1F00DFB46D /* BodyTypes.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = BodyTypes.h; sourceTree = "<group>"; };
                4913320F13726B1F00DFB46D /* Breakable.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Breakable.h; sourceTree = "<group>"; };
                4913321013726B1F00DFB46D /* Bridge.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Bridge.h; sourceTree = "<group>"; };
-               4913321113726B1F00DFB46D /* BulletTest.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = BulletTest.h; sourceTree = "<group>"; };
                4913321213726B1F00DFB46D /* Cantilever.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Cantilever.h; sourceTree = "<group>"; };
-               4913321313726B1F00DFB46D /* Car.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Car.h; sourceTree = "<group>"; };
                4913321413726B1F00DFB46D /* Chain.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Chain.h; sourceTree = "<group>"; };
                4913321513726B1F00DFB46D /* CharacterCollision.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CharacterCollision.h; sourceTree = "<group>"; };
                4913321613726B1F00DFB46D /* CollisionFiltering.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CollisionFiltering.h; sourceTree = "<group>"; };
                4913321C13726B1F00DFB46D /* Dominos.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Dominos.h; sourceTree = "<group>"; };
                4913321D13726B1F00DFB46D /* DynamicTreeTest.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DynamicTreeTest.h; sourceTree = "<group>"; };
                4913321E13726B1F00DFB46D /* EdgeShapes.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = EdgeShapes.h; sourceTree = "<group>"; };
-               4913321F13726B1F00DFB46D /* EdgeTest.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = EdgeTest.h; sourceTree = "<group>"; };
                4913322013726B1F00DFB46D /* Gears.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Gears.h; sourceTree = "<group>"; };
                4913322113726B1F00DFB46D /* LineJoint.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LineJoint.h; sourceTree = "<group>"; };
                4913322213726B1F00DFB46D /* OneSidedPlatform.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OneSidedPlatform.h; sourceTree = "<group>"; };
-               4913322313726B1F00DFB46D /* Pinball.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Pinball.h; sourceTree = "<group>"; };
                4913322413726B1F00DFB46D /* PolyCollision.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PolyCollision.h; sourceTree = "<group>"; };
                4913322513726B1F00DFB46D /* PolyShapes.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PolyShapes.h; sourceTree = "<group>"; };
                4913322613726B1F00DFB46D /* Prismatic.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Prismatic.h; sourceTree = "<group>"; };
                4913322713726B1F00DFB46D /* Pulleys.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Pulleys.h; sourceTree = "<group>"; };
                4913322813726B1F00DFB46D /* Pyramid.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Pyramid.h; sourceTree = "<group>"; };
                4913322913726B1F00DFB46D /* RayCast.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RayCast.h; sourceTree = "<group>"; };
-               4913322A13726B1F00DFB46D /* Revolute.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Revolute.h; sourceTree = "<group>"; };
-               4913322B13726B1F00DFB46D /* Rope.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Rope.h; sourceTree = "<group>"; };
-               4913322C13726B1F00DFB46D /* RopeJoint.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RopeJoint.h; sourceTree = "<group>"; };
                4913322D13726B1F00DFB46D /* SensorTest.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SensorTest.h; sourceTree = "<group>"; };
                4913322E13726B1F00DFB46D /* ShapeEditing.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ShapeEditing.h; sourceTree = "<group>"; };
                4913322F13726B1F00DFB46D /* SliderCrank.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SliderCrank.h; sourceTree = "<group>"; };
                4913323013726B1F00DFB46D /* SphereStack.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SphereStack.h; sourceTree = "<group>"; };
                4913323113726B1F00DFB46D /* TheoJansen.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TheoJansen.h; sourceTree = "<group>"; };
-               4913323213726B1F00DFB46D /* Tiles.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Tiles.h; sourceTree = "<group>"; };
                4913323313726B1F00DFB46D /* TimeOfImpact.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TimeOfImpact.h; sourceTree = "<group>"; };
                4913323413726B1F00DFB46D /* VaryingFriction.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = VaryingFriction.h; sourceTree = "<group>"; };
                4913323513726B1F00DFB46D /* VaryingRestitution.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = VaryingRestitution.h; sourceTree = "<group>"; };
                                4913320E13726B1F00DFB46D /* BodyTypes.h */,
                                4913320F13726B1F00DFB46D /* Breakable.h */,
                                4913321013726B1F00DFB46D /* Bridge.h */,
-                               4913321113726B1F00DFB46D /* BulletTest.h */,
                                4913321213726B1F00DFB46D /* Cantilever.h */,
-                               4913321313726B1F00DFB46D /* Car.h */,
                                4913321413726B1F00DFB46D /* Chain.h */,
                                4913321513726B1F00DFB46D /* CharacterCollision.h */,
                                4913321613726B1F00DFB46D /* CollisionFiltering.h */,
                                4913321C13726B1F00DFB46D /* Dominos.h */,
                                4913321D13726B1F00DFB46D /* DynamicTreeTest.h */,
                                4913321E13726B1F00DFB46D /* EdgeShapes.h */,
-                               4913321F13726B1F00DFB46D /* EdgeTest.h */,
                                4913322013726B1F00DFB46D /* Gears.h */,
                                4913322113726B1F00DFB46D /* LineJoint.h */,
                                4913322213726B1F00DFB46D /* OneSidedPlatform.h */,
-                               4913322313726B1F00DFB46D /* Pinball.h */,
                                4913322413726B1F00DFB46D /* PolyCollision.h */,
                                4913322513726B1F00DFB46D /* PolyShapes.h */,
                                4913322613726B1F00DFB46D /* Prismatic.h */,
                                4913322713726B1F00DFB46D /* Pulleys.h */,
                                4913322813726B1F00DFB46D /* Pyramid.h */,
                                4913322913726B1F00DFB46D /* RayCast.h */,
-                               4913322A13726B1F00DFB46D /* Revolute.h */,
-                               4913322B13726B1F00DFB46D /* Rope.h */,
-                               4913322C13726B1F00DFB46D /* RopeJoint.h */,
                                4913322D13726B1F00DFB46D /* SensorTest.h */,
                                4913322E13726B1F00DFB46D /* ShapeEditing.h */,
                                4913322F13726B1F00DFB46D /* SliderCrank.h */,
                                4913323013726B1F00DFB46D /* SphereStack.h */,
                                4913323113726B1F00DFB46D /* TheoJansen.h */,
-                               4913323213726B1F00DFB46D /* Tiles.h */,
                                4913323313726B1F00DFB46D /* TimeOfImpact.h */,
                                4913323413726B1F00DFB46D /* VaryingFriction.h */,
                                4913323513726B1F00DFB46D /* VaryingRestitution.h */,
                                4913323913726B1F00DFB46D /* BodyTypes.h in Headers */,
                                4913323A13726B1F00DFB46D /* Breakable.h in Headers */,
                                4913323B13726B1F00DFB46D /* Bridge.h in Headers */,
-                               4913323C13726B1F00DFB46D /* BulletTest.h in Headers */,
                                4913323D13726B1F00DFB46D /* Cantilever.h in Headers */,
-                               4913323E13726B1F00DFB46D /* Car.h in Headers */,
                                4913323F13726B1F00DFB46D /* Chain.h in Headers */,
                                4913324013726B1F00DFB46D /* CharacterCollision.h in Headers */,
                                4913324113726B1F00DFB46D /* CollisionFiltering.h in Headers */,
                                4913324713726B1F00DFB46D /* Dominos.h in Headers */,
                                4913324813726B1F00DFB46D /* DynamicTreeTest.h in Headers */,
                                4913324913726B1F00DFB46D /* EdgeShapes.h in Headers */,
-                               4913324A13726B1F00DFB46D /* EdgeTest.h in Headers */,
                                4913324B13726B1F00DFB46D /* Gears.h in Headers */,
                                4913324C13726B1F00DFB46D /* LineJoint.h in Headers */,
                                4913324D13726B1F00DFB46D /* OneSidedPlatform.h in Headers */,
-                               4913324E13726B1F00DFB46D /* Pinball.h in Headers */,
                                4913324F13726B1F00DFB46D /* PolyCollision.h in Headers */,
                                4913325013726B1F00DFB46D /* PolyShapes.h in Headers */,
                                4913325113726B1F00DFB46D /* Prismatic.h in Headers */,
                                4913325213726B1F00DFB46D /* Pulleys.h in Headers */,
                                4913325313726B1F00DFB46D /* Pyramid.h in Headers */,
                                4913325413726B1F00DFB46D /* RayCast.h in Headers */,
-                               4913325513726B1F00DFB46D /* Revolute.h in Headers */,
-                               4913325613726B1F00DFB46D /* Rope.h in Headers */,
-                               4913325713726B1F00DFB46D /* RopeJoint.h in Headers */,
                                4913325813726B1F00DFB46D /* SensorTest.h in Headers */,
                                4913325913726B1F00DFB46D /* ShapeEditing.h in Headers */,
                                4913325A13726B1F00DFB46D /* SliderCrank.h in Headers */,
                                4913325B13726B1F00DFB46D /* SphereStack.h in Headers */,
                                4913325C13726B1F00DFB46D /* TheoJansen.h in Headers */,
-                               4913325D13726B1F00DFB46D /* Tiles.h in Headers */,
                                4913325E13726B1F00DFB46D /* TimeOfImpact.h in Headers */,
                                4913325F13726B1F00DFB46D /* VaryingFriction.h in Headers */,
                                4913326013726B1F00DFB46D /* VaryingRestitution.h in Headers */,
index edbf9ef..11743b0 100644 (file)
@@ -66,8 +66,6 @@ Settings settings;
                
                [[UIAccelerometer sharedAccelerometer] setUpdateInterval:(1.0 / kAccelerometerFrequency)];
                [[UIAccelerometer sharedAccelerometer] setDelegate:self];
-
-               //[self setMultipleTouchEnabled:YES];
     }
        
        
@@ -248,9 +246,7 @@ Settings settings;
                //printf("Screen touched %f,%f -> %f,%f\n",touchLocation.x,touchLocation.y,worldPosition.x,worldPosition.y);
                lastScreenTouch=touchLocation;
                lastWorldTouch=worldPosition;
-               b2Vec2 p = b2Vec2(lastWorldTouch.x,lastWorldTouch.y);
-               test->MouseDown(p);
-               //test->ShiftMouseDown(p);
+               test->MouseDown(b2Vec2(lastWorldTouch.x,lastWorldTouch.y));
                
                if (!test->m_mouseJoint) panning=true;
        }
index 8e02a74..2551666 100644 (file)
@@ -32,7 +32,7 @@ struct b2AABB;
 
 // This class implements debug drawing callbacks that are invoked
 // inside b2World::Step.
-class GLESDebugDraw : public b2Draw
+class GLESDebugDraw : public b2DebugDraw
 {
 public:
        void DrawPolygon(const b2Vec2* vertices, int32 vertexCount, const b2Color& color);
index bb8e1ac..49eb94e 100644 (file)
@@ -57,7 +57,7 @@
        TestEntry* e = g_testEntries;
        e+=indexPath.row;
 
-       cell.textLabel.text = [NSString stringWithUTF8String:e->name];
+       [cell setText:[NSString stringWithCString:e->name]];
     return cell;
 }
 
index c7c767a..dc82ed5 100644 (file)
@@ -58,28 +58,25 @@ inline float32 RandomFloat(float32 lo, float32 hi)
 struct Settings
 {
        Settings() :
-               viewCenter(0.0f, 20.0f),
-               hz(60.0f),
-               velocityIterations(8),
-               positionIterations(3),
-               drawShapes(1),
-               drawJoints(1),
-               drawAABBs(0),
-               drawPairs(0),
-               drawContactPoints(0),
-               drawContactNormals(0),
-               drawContactForces(0),
-               drawFrictionForces(0),
-               drawCOMs(0),
-               drawStats(0),
-               enableWarmStarting(1),
-               enableContinuous(1),
-               enableSubStepping(0),
-               pause(0),
-               singleStep(0)
-               {}
-
-       b2Vec2 viewCenter;
+       hz(60.0f),
+       velocityIterations(10),
+       positionIterations(4),
+       drawStats(0),
+       drawShapes(1),
+       drawJoints(1),
+       drawAABBs(0),
+       drawPairs(0),
+       drawContactPoints(0),
+       drawContactNormals(0),
+       drawContactForces(0),
+       drawFrictionForces(0),
+       drawCOMs(0),
+       enableWarmStarting(1),
+       enableContinuous(1),
+       pause(0),
+       singleStep(0)
+       {}
+       
        float32 hz;
        int32 velocityIterations;
        int32 positionIterations;
@@ -95,7 +92,6 @@ struct Settings
        int32 drawStats;
        int32 enableWarmStarting;
        int32 enableContinuous;
-       int32 enableSubStepping;
        int32 pause;
        int32 singleStep;
 };
index faf08df..16cc5da 100644 (file)
@@ -1,5 +1,5 @@
 /*
-* Copyright (c) 2006-2009 Erin Catto http://www.gphysics.com
+* Copyright (c) 2006-2007 Erin Catto http://www.gphysics.com
 *
 * iPhone port by Simon Oliver - http://www.simonoliver.com - http://www.handcircus.com
 *
@@ -46,16 +46,16 @@ Test::Test()
        m_textLine = 30;
        m_mouseJoint = NULL;
        m_pointCount = 0;
-
+       
        m_destructionListener.test = this;
        m_world->SetDestructionListener(&m_destructionListener);
        m_world->SetContactListener(this);
        m_world->SetDebugDraw(&m_debugDraw);
        
        m_bombSpawning = false;
-
+       
        m_stepCount = 0;
-
+       
        b2BodyDef bodyDef;
        m_groundBody = m_world->CreateBody(&bodyDef);
 }
@@ -79,21 +79,21 @@ void Test::SetGravity( float x, float y)
 void Test::PreSolve(b2Contact* contact, const b2Manifold* oldManifold)
 {
        const b2Manifold* manifold = contact->GetManifold();
-
+       
        if (manifold->pointCount == 0)
        {
                return;
        }
-
+       
        b2Fixture* fixtureA = contact->GetFixtureA();
        b2Fixture* fixtureB = contact->GetFixtureB();
-
+       
        b2PointState state1[b2_maxManifoldPoints], state2[b2_maxManifoldPoints];
        b2GetPointStates(state1, state2, oldManifold, manifold);
-
+       
        b2WorldManifold worldManifold;
        contact->GetWorldManifold(&worldManifold);
-
+       
        for (int32 i = 0; i < manifold->pointCount && m_pointCount < k_maxContactPoints; ++i)
        {
                ContactPoint* cp = m_points + m_pointCount;
@@ -112,36 +112,37 @@ void Test::DrawTitle(int x, int y, const char *string)
 }
 
 class QueryCallback : public b2QueryCallback
-{
-public:
-       QueryCallback(const b2Vec2& point)
-       {
-               m_point = point;
-               m_fixture = NULL;
-       }
-
-       bool ReportFixture(b2Fixture* fixture)
        {
-               b2Body* body = fixture->GetBody();
-               if (body->GetType() == b2_dynamicBody)
+       public:
+               QueryCallback(const b2Vec2& point)
                {
-                       bool inside = fixture->TestPoint(m_point);
-                       if (inside)
+                       m_point = point;
+                       m_fixture = NULL;
+               }
+               
+               bool ReportFixture(b2Fixture* fixture)
+               {
+                       b2Body* body = fixture->GetBody();
+                       if (body->GetType() == b2_dynamicBody)
                        {
-                               m_fixture = fixture;
-
-                               // We are done, terminate the query.
-                               return false;
+                               bool inside = fixture->TestPoint(m_point);
+                               if (inside)
+                               {
+                                       m_fixture = fixture;
+                                       
+                                       // We are done, terminate the query.
+                                       return false;
+                               }
                        }
+                       
+                       // Continue the query.
+                       return true;
                }
+               
+               b2Vec2 m_point;
+               b2Fixture* m_fixture;
+       };
 
-               // Continue the query.
-               return true;
-       }
-
-       b2Vec2 m_point;
-       b2Fixture* m_fixture;
-};
 
 void Test::MouseDown(const b2Vec2& p)
 {
@@ -151,18 +152,18 @@ void Test::MouseDown(const b2Vec2& p)
        {
                return;
        }
-
+       
        // Make a small box.
        b2AABB aabb;
        b2Vec2 d;
        d.Set(0.001f, 0.001f);
        aabb.lowerBound = p - d;
        aabb.upperBound = p + d;
-
+       
        // Query the world for overlapping shapes.
        QueryCallback callback(p);
        m_world->QueryAABB(&callback, aabb);
-
+       
        if (callback.m_fixture)
        {
                b2Body* body = callback.m_fixture->GetBody();
@@ -186,14 +187,14 @@ void Test::SpawnBomb(const b2Vec2& worldPt)
        m_bombSpawnPoint = worldPt;
        m_bombSpawning = true;
 }
-    
+
 void Test::CompleteBombSpawn(const b2Vec2& p)
 {
        if (m_bombSpawning == false)
        {
                return;
        }
-
+       
        const float multiplier = 30.0f;
        b2Vec2 vel = m_bombSpawnPoint - p;
        vel *= multiplier;
@@ -209,7 +210,7 @@ void Test::ShiftMouseDown(const b2Vec2& p)
        {
                return;
        }
-
+       
        SpawnBomb(p);
 }
 
@@ -251,7 +252,7 @@ void Test::LaunchBomb(const b2Vec2& position, const b2Vec2& velocity)
                m_world->DestroyBody(m_bomb);
                m_bomb = NULL;
        }
-
+       
        b2BodyDef bd;
        bd.type = b2_dynamicBody;
        bd.position = position;
@@ -261,11 +262,11 @@ void Test::LaunchBomb(const b2Vec2& position, const b2Vec2& velocity)
        
        b2CircleShape circle;
        circle.m_radius = 0.3f;
-
+       
        b2FixtureDef fd;
        fd.shape = &circle;
        fd.density = 20.0f;
-       fd.restitution = 0.0f;
+       fd.restitution = 0.1f;
        
        b2Vec2 minV = position - b2Vec2(0.3f,0.3f);
        b2Vec2 maxV = position + b2Vec2(0.3f,0.3f);
@@ -273,14 +274,14 @@ void Test::LaunchBomb(const b2Vec2& position, const b2Vec2& velocity)
        b2AABB aabb;
        aabb.lowerBound = minV;
        aabb.upperBound = maxV;
-
+       
        m_bomb->CreateFixture(&fd);
 }
 
 void Test::Step(Settings* settings)
 {
        float32 timeStep = settings->hz > 0.0f ? 1.0f / settings->hz : float32(0.0f);
-
+       
        if (settings->pause)
        {
                if (settings->singleStep)
@@ -291,94 +292,89 @@ void Test::Step(Settings* settings)
                {
                        timeStep = 0.0f;
                }
-
+               
                m_debugDraw.DrawString(5, m_textLine, "****PAUSED****");
                m_textLine += 15;
        }
-
+       
        uint32 flags = 0;
-       flags += settings->drawShapes                   * b2Draw::e_shapeBit;
-       flags += settings->drawJoints                   * b2Draw::e_jointBit;
-       flags += settings->drawAABBs                    * b2Draw::e_aabbBit;
-       flags += settings->drawPairs                    * b2Draw::e_pairBit;
-       flags += settings->drawCOMs                             * b2Draw::e_centerOfMassBit;
+       flags += settings->drawShapes                   * b2DebugDraw::e_shapeBit;
+       flags += settings->drawJoints                   * b2DebugDraw::e_jointBit;
+       flags += settings->drawAABBs                    * b2DebugDraw::e_aabbBit;
+       flags += settings->drawPairs                    * b2DebugDraw::e_pairBit;
+       flags += settings->drawCOMs                             * b2DebugDraw::e_centerOfMassBit;
        m_debugDraw.SetFlags(flags);
-
+       
        m_world->SetWarmStarting(settings->enableWarmStarting > 0);
        m_world->SetContinuousPhysics(settings->enableContinuous > 0);
-       m_world->SetSubStepping(settings->enableSubStepping > 0);
-
+       
        m_pointCount = 0;
-
+       
        m_world->Step(timeStep, settings->velocityIterations, settings->positionIterations);
-
+       
        m_world->DrawDebugData();
-
+       
        if (timeStep > 0.0f)
        {
                ++m_stepCount;
        }
-
+       
        if (settings->drawStats)
        {
                m_debugDraw.DrawString(5, m_textLine, "bodies/contacts/joints/proxies = %d/%d/%d",
-                       m_world->GetBodyCount(), m_world->GetContactCount(), m_world->GetJointCount(), m_world->GetProxyCount());
+                                                          m_world->GetBodyCount(), m_world->GetContactCount(), m_world->GetJointCount(), m_world->GetProxyCount());
                m_textLine += 15;
+               
+//             m_debugDraw.DrawString(5, m_textLine, "heap bytes = %d", b2_byteCount);
+//             m_textLine += 15;
        }
-
+       
        if (m_mouseJoint)
        {
-               b2Vec2 p1 = m_mouseJoint->GetAnchorB();
-               b2Vec2 p2 = m_mouseJoint->GetTarget();
-
-               glPointSize(4.0f);
-               glColor4f(0.0f, 1.0f, 0.0f, 1.0f);
-               GLbyte verts1[2 * 3] = {
-                       p1.x, p1.y, 0.0f,
-                       p2.x, p2.y, 0.0f
-               };
-               glVertexPointer(3, GL_BYTE, 0, verts1);
-               glDrawArrays(GL_POINTS, 0, 2);
-               glPointSize(1.0f);
-
-               glColor4f(0.8f, 0.8f, 0.8f, 1.0f);
-               GLbyte verts2[2 * 3] = {
-                       p1.x, p1.y, 0.0f,
-                       p2.x, p2.y, 0.0f
-               };
-               glVertexPointer(3, GL_BYTE, 0, verts2);
-               glDrawArrays(GL_LINES, 0, 2);
+//             b2Body* body = m_mouseJoint->GetBodyB();
+//             b2Vec2 p1 = body->GetWorldPoint(m_mouseJoint->m_localAnchor);
+//             b2Vec2 p2 = m_mouseJoint->m_target;
+//             
+//             glPointSize(4.0f);
+//             glColor3f(0.0f, 1.0f, 0.0f);
+//             glBegin(GL_POINTS);
+//             glVertex2f(p1.x, p1.y);
+//             glVertex2f(p2.x, p2.y);
+//             glEnd();
+//             glPointSize(1.0f);
+//             
+//             glColor3f(0.8f, 0.8f, 0.8f);
+//             glBegin(GL_LINES);
+//             glVertex2f(p1.x, p1.y);
+//             glVertex2f(p2.x, p2.y);
+//             glEnd();
        }
        
        if (m_bombSpawning)
        {
-               glPointSize(4.0f);
-               glColor4f(0.0f, 0.0f, 1.0f, 1.0f);
-               glColor4f(0.0f, 0.0f, 1.0f, 1.0f);
-               GLbyte verts1[1 * 3] = {
-                       m_bombSpawnPoint.x, m_bombSpawnPoint.y, 0.0f
-               };
-               glVertexPointer(3, GL_BYTE, 0, verts1);
-               glDrawArrays(GL_POINTS, 0, 1);
-               
-               glColor4f(0.8f, 0.8f, 0.8f, 1.0f);
-               GLbyte verts2[2 * 3] = {
-                       m_mouseWorld.x, m_mouseWorld.y, 0.0f,
-                       m_bombSpawnPoint.x, m_bombSpawnPoint.y, 0.0f
-               };
-               glVertexPointer(3, GL_BYTE, 0, verts2);
-               glDrawArrays(GL_LINES, 0, 2);
+//             glPointSize(4.0f);
+//             glColor3f(0.0f, 0.0f, 1.0f);
+//             glBegin(GL_POINTS);
+//             glColor3f(0.0f, 0.0f, 1.0f);
+//             glVertex2f(m_bombSpawnPoint.x, m_bombSpawnPoint.y);
+//             glEnd();
+//             
+//             glColor3f(0.8f, 0.8f, 0.8f);
+//             glBegin(GL_LINES);
+//             glVertex2f(m_mouseWorld.x, m_mouseWorld.y);
+//             glVertex2f(m_bombSpawnPoint.x, m_bombSpawnPoint.y);
+//             glEnd();
        }
-
+       
        if (settings->drawContactPoints)
        {
                //const float32 k_impulseScale = 0.1f;
                const float32 k_axisScale = 0.3f;
-
+               
                for (int32 i = 0; i < m_pointCount; ++i)
                {
                        ContactPoint* point = m_points + i;
-
+                       
                        if (point->state == b2_addState)
                        {
                                // Add
@@ -389,12 +385,12 @@ void Test::Step(Settings* settings)
                                // Persist
                                m_debugDraw.DrawPoint(point->position, 5.0f, b2Color(0.3f, 0.3f, 0.95f));
                        }
-
+                       
                        if (settings->drawContactNormals == 1)
                        {
                                b2Vec2 p1 = point->position;
                                b2Vec2 p2 = p1 + k_axisScale * point->normal;
-                               m_debugDraw.DrawSegment(p1, p2, b2Color(0.9f, 0.9f, 0.9f));
+                               m_debugDraw.DrawSegment(p1, p2, b2Color(0.4f, 0.9f, 0.4f));
                        }
                        else if (settings->drawContactForces == 1)
                        {
@@ -402,7 +398,7 @@ void Test::Step(Settings* settings)
                                //b2Vec2 p2 = p1 + k_forceScale * point->normalForce * point->normal;
                                //DrawSegment(p1, p2, b2Color(0.9f, 0.9f, 0.3f));
                        }
-
+                       
                        if (settings->drawFrictionForces == 1)
                        {
                                //b2Vec2 tangent = b2Cross(point->normal, 1.0f);
index 18faaa0..02da5f5 100644 (file)
-/*\r
-* Copyright (c) 2006-2009 Erin Catto http://www.box2d.org\r
-*\r
-* This software is provided 'as-is', without any express or implied\r
-* warranty.  In no event will the authors be held liable for any damages\r
-* arising from the use of this software.\r
-* Permission is granted to anyone to use this software for any purpose,\r
-* including commercial applications, and to alter it and redistribute it\r
-* freely, subject to the following restrictions:\r
-* 1. The origin of this software must not be misrepresented; you must not\r
-* claim that you wrote the original software. If you use this software\r
-* in a product, an acknowledgment in the product documentation would be\r
-* appreciated but is not required.\r
-* 2. Altered source versions must be plainly marked as such, and must not be\r
-* misrepresented as being the original software.\r
-* 3. This notice may not be removed or altered from any source distribution.\r
-*/\r
-\r
-#include "iPhoneTest.h"\r
-#include <cstring>\r
-using namespace std;\r
-\r
-#include "ApplyForce.h"\r
-#include "BodyTypes.h"\r
-#include "Breakable.h"\r
-#include "Bridge.h"\r
-#include "BulletTest.h"\r
-#include "Cantilever.h"\r
-#include "Car.h"\r
-#include "ContinuousTest.h"\r
-#include "Chain.h"\r
-#include "CharacterCollision.h"\r
-#include "CollisionFiltering.h"\r
-#include "CollisionProcessing.h"\r
-#include "CompoundShapes.h"\r
-#include "Confined.h"\r
-#include "DistanceTest.h"\r
-#include "Dominos.h"\r
-#include "DynamicTreeTest.h"\r
-#include "EdgeShapes.h"\r
-#include "EdgeTest.h"\r
-#include "Gears.h"\r
-#include "OneSidedPlatform.h"\r
-#include "Pinball.h"\r
-#include "PolyCollision.h"\r
-#include "PolyShapes.h"\r
-#include "Prismatic.h"\r
-#include "Pulleys.h"\r
-#include "Pyramid.h"\r
-#include "RayCast.h"\r
-#include "Revolute.h"\r
-#include "Rope.h"\r
-#include "RopeJoint.h"\r
-#include "SensorTest.h"\r
-#include "ShapeEditing.h"\r
-#include "SliderCrank.h"\r
-#include "SphereStack.h"\r
-#include "TheoJansen.h"\r
-#include "Tiles.h"\r
-#include "TimeOfImpact.h"\r
-#include "VaryingFriction.h"\r
-#include "VaryingRestitution.h"\r
-#include "VerticalStack.h"\r
-#include "Web.h"\r
-\r
-TestEntry g_testEntries[] =\r
-{\r
-       {"Pulleys", Pulleys::Create},\r
-       {"SphereStack", SphereStack::Create},\r
-       {"Tiles", Tiles::Create},\r
-       {"Polygon Shapes", PolyShapes::Create},\r
-       {"Rope", Rope::Create},\r
-       {"Web", Web::Create},\r
-       {"Car", Car::Create},\r
-       {"Vertical Stack", VerticalStack::Create},\r
-       {"RopeJoint", RopeJoint::Create},\r
-       {"Character Collision", CharacterCollision::Create},\r
-       {"Edge Test", EdgeTest::Create},\r
-       {"One-Sided Platform", OneSidedPlatform::Create},\r
-       {"Pinball", Pinball::Create},\r
-       {"Bullet Test", BulletTest::Create},\r
-       {"Continuous Test", ContinuousTest::Create},\r
-       {"Time of Impact", TimeOfImpact::Create},\r
-       {"Ray-Cast", RayCast::Create},\r
-       {"Confined", Confined::Create},\r
-       {"Pyramid", Pyramid::Create},\r
-       {"Varying Restitution", VaryingRestitution::Create},\r
-       {"Theo Jansen's Walker", TheoJansen::Create},\r
-       {"Body Types", BodyTypes::Create},\r
-       {"Prismatic", Prismatic::Create},\r
-       {"Edge Shapes", EdgeShapes::Create},\r
-       {"PolyCollision", PolyCollision::Create},\r
-       {"Apply Force", ApplyForce::Create},\r
-       {"Cantilever", Cantilever::Create},\r
-       {"Bridge", Bridge::Create},\r
-       {"Breakable", Breakable::Create},\r
-       {"Chain", Chain::Create},\r
-       {"Collision Filtering", CollisionFiltering::Create},\r
-       {"Collision Processing", CollisionProcessing::Create},\r
-       {"Compound Shapes", CompoundShapes::Create},\r
-       {"Distance Test", DistanceTest::Create},\r
-       {"Dominos", Dominos::Create},\r
-       {"Dynamic Tree", DynamicTreeTest::Create},\r
-       {"Gears", Gears::Create},\r
-       {"Revolute", Revolute::Create},\r
-       {"Sensor Test", SensorTest::Create},\r
-       {"Shape Editing", ShapeEditing::Create},\r
-       {"Slider Crank", SliderCrank::Create},\r
-       {"Varying Friction", VaryingFriction::Create},\r
-       {NULL, NULL}\r
-};\r
+/*
+ * Copyright (c) 2006-2007 Erin Catto http://www.gphysics.com
+ *
+ * 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 "iPhoneTest.h"
+//#include "GLES-Render.h"
+
+#include "ApplyForce.h"
+#include "BodyTypes.h"
+
+#include "Breakable.h"
+#include "Bridge.h"
+#include "Chain.h"
+#include "CollisionFiltering.h"
+#include "CollisionProcessing.h"
+#include "CompoundShapes.h"
+#include "Confined.h"
+#include "DistanceTest.h"
+#include "Dominos.h"
+#include "DynamicTreeTest.h"
+#include "Gears.h"
+#include "LineJoint.h"
+#include "OneSidedPlatform.h"
+#include "PolyCollision.h"
+#include "PolyShapes.h"
+#include "Prismatic.h"
+#include "Pulleys.h"
+#include "Pyramid.h"
+#include "RayCast.h"
+#include "Revolute.h"
+#include "SensorTest.h"
+#include "ShapeEditing.h"
+#include "SliderCrank.h"
+#include "SphereStack.h"
+#include "TheoJansen.h"
+#include "TimeOfImpact.h"
+#include "VaryingFriction.h"
+#include "VaryingRestitution.h"
+#include "VerticalStack.h"
+#include "Web.h"
+
+TestEntry g_testEntries[] =
+{
+{"Body Types", BodyTypes::Create},
+{"SphereStack", SphereStack::Create},
+{"Vertical Stack", VerticalStack::Create},
+{"Confined", Confined::Create},
+{"Bridge", Bridge::Create},
+{"Breakable", Breakable::Create},
+{"Varying Restitution", VaryingRestitution::Create},
+{"Ray-Cast", RayCast::Create},
+{"Pyramid", Pyramid::Create},
+{"PolyCollision", PolyCollision::Create},
+{"One-Sided Platform", OneSidedPlatform::Create},
+{"Apply Force", ApplyForce::Create},
+{"Chain", Chain::Create},
+{"Collision Filtering", CollisionFiltering::Create},
+{"Collision Processing", CollisionProcessing::Create},
+{"Compound Shapes", CompoundShapes::Create},
+{"Distance Test", DistanceTest::Create},
+{"Dominos", Dominos::Create},
+{"Dynamic Tree", DynamicTreeTest::Create},
+{"Gears", Gears::Create},
+{"Line Joint", LineJoint::Create},
+{"Polygon Shapes", PolyShapes::Create},
+{"Prismatic", Prismatic::Create},
+{"Pulleys", Pulleys::Create},
+{"Revolute", Revolute::Create},
+{"Sensor Test", SensorTest::Create},
+{"Shape Editing", ShapeEditing::Create},
+{"Slider Crank", SliderCrank::Create},
+{"Theo Jansen's Walker", TheoJansen::Create},
+{"Time of Impact", TimeOfImpact::Create},
+{"Varying Friction", VaryingFriction::Create},
+{"Web", Web::Create},
+{NULL, NULL}
+
+};
index 0414477..dc5701f 100644 (file)
@@ -1,5 +1,5 @@
 /*\r
-* Copyright (c) 2006-2009 Erin Catto http://www.box2d.org\r
+* Copyright (c) 2006-2009 Erin Catto http://www.gphysics.com\r
 *\r
 * This software is provided 'as-is', without any express or implied\r
 * warranty.  In no event will the authors be held liable for any damages\r
@@ -32,12 +32,8 @@ For discussion please visit http://box2d.org/forum
 // These include files constitute the main Box2D API\r
 \r
 #include <Box2D/Common/b2Settings.h>\r
-#include <Box2D/Common/b2Draw.h>\r
-#include <Box2D/Common/b2Timer.h>\r
 \r
 #include <Box2D/Collision/Shapes/b2CircleShape.h>\r
-#include <Box2D/Collision/Shapes/b2EdgeShape.h>\r
-#include <Box2D/Collision/Shapes/b2LoopShape.h>\r
 #include <Box2D/Collision/Shapes/b2PolygonShape.h>\r
 \r
 #include <Box2D/Collision/b2BroadPhase.h>\r
@@ -56,14 +52,11 @@ For discussion please visit http://box2d.org/forum
 #include <Box2D/Dynamics/Joints/b2DistanceJoint.h>\r
 #include <Box2D/Dynamics/Joints/b2FrictionJoint.h>\r
 #include <Box2D/Dynamics/Joints/b2GearJoint.h>\r
-#include <Box2D/Dynamics/Joints/b2WheelJoint.h>\r
+#include <Box2D/Dynamics/Joints/b2LineJoint.h>\r
 #include <Box2D/Dynamics/Joints/b2MouseJoint.h>\r
 #include <Box2D/Dynamics/Joints/b2PrismaticJoint.h>\r
 #include <Box2D/Dynamics/Joints/b2PulleyJoint.h>\r
 #include <Box2D/Dynamics/Joints/b2RevoluteJoint.h>\r
-#include <Box2D/Dynamics/Joints/b2RopeJoint.h>\r
 #include <Box2D/Dynamics/Joints/b2WeldJoint.h>\r
 \r
-#include <Box2D/Rope/b2Rope.h>\r
-\r
 #endif\r
index 80dac85..a950b0b 100644 (file)
@@ -1,5 +1,5 @@
 /*\r
-* Copyright (c) 2006-2009 Erin Catto http://www.box2d.org\r
+* Copyright (c) 2006-2009 Erin Catto http://www.gphysics.com\r
 *\r
 * This software is provided 'as-is', without any express or implied\r
 * warranty.  In no event will the authors be held liable for any damages\r
@@ -18,7 +18,6 @@
 \r
 #include <Box2D/Collision/Shapes/b2CircleShape.h>\r
 #include <new>\r
-using namespace std;\r
 \r
 b2Shape* b2CircleShape::Clone(b2BlockAllocator* allocator) const\r
 {\r
@@ -28,11 +27,6 @@ b2Shape* b2CircleShape::Clone(b2BlockAllocator* allocator) const
        return clone;\r
 }\r
 \r
-int32 b2CircleShape::GetChildCount() const\r
-{\r
-       return 1;\r
-}\r
-\r
 bool b2CircleShape::TestPoint(const b2Transform& transform, const b2Vec2& p) const\r
 {\r
        b2Vec2 center = transform.position + b2Mul(transform.R, m_p);\r
@@ -44,11 +38,8 @@ bool b2CircleShape::TestPoint(const b2Transform& transform, const b2Vec2& p) con
 // From Section 3.1.2\r
 // x = s + a * r\r
 // norm(x) = radius\r
-bool b2CircleShape::RayCast(b2RayCastOutput* output, const b2RayCastInput& input,\r
-                                                       const b2Transform& transform, int32 childIndex) const\r
+bool b2CircleShape::RayCast(b2RayCastOutput* output, const b2RayCastInput& input, const b2Transform& transform) const\r
 {\r
-       B2_NOT_USED(childIndex);\r
-\r
        b2Vec2 position = transform.position + b2Mul(transform.R, m_p);\r
        b2Vec2 s = input.p1 - position;\r
        float32 b = b2Dot(s, s) - m_radius * m_radius;\r
@@ -81,10 +72,8 @@ bool b2CircleShape::RayCast(b2RayCastOutput* output, const b2RayCastInput& input
        return false;\r
 }\r
 \r
-void b2CircleShape::ComputeAABB(b2AABB* aabb, const b2Transform& transform, int32 childIndex) const\r
+void b2CircleShape::ComputeAABB(b2AABB* aabb, const b2Transform& transform) const\r
 {\r
-       B2_NOT_USED(childIndex);\r
-\r
        b2Vec2 p = transform.position + b2Mul(transform.R, m_p);\r
        aabb->lowerBound.Set(p.x - m_radius, p.y - m_radius);\r
        aabb->upperBound.Set(p.x + m_radius, p.y + m_radius);\r
index 6c1fd54..bb31da8 100644 (file)
@@ -1,5 +1,5 @@
 /*\r
-* Copyright (c) 2006-2009 Erin Catto http://www.box2d.org\r
+* Copyright (c) 2006-2009 Erin Catto http://www.gphysics.com\r
 *\r
 * This software is provided 'as-is', without any express or implied\r
 * warranty.  In no event will the authors be held liable for any damages\r
@@ -30,18 +30,14 @@ public:
        /// Implement b2Shape.\r
        b2Shape* Clone(b2BlockAllocator* allocator) const;\r
 \r
-       /// @see b2Shape::GetChildCount\r
-       int32 GetChildCount() const;\r
-\r
        /// Implement b2Shape.\r
        bool TestPoint(const b2Transform& transform, const b2Vec2& p) const;\r
 \r
        /// Implement b2Shape.\r
-       bool RayCast(b2RayCastOutput* output, const b2RayCastInput& input,\r
-                               const b2Transform& transform, int32 childIndex) const;\r
+       bool RayCast(b2RayCastOutput* output, const b2RayCastInput& input, const b2Transform& transform) const;\r
 \r
        /// @see b2Shape::ComputeAABB\r
-       void ComputeAABB(b2AABB* aabb, const b2Transform& transform, int32 childIndex) const;\r
+       void ComputeAABB(b2AABB* aabb, const b2Transform& transform) const;\r
 \r
        /// @see b2Shape::ComputeMass\r
        void ComputeMass(b2MassData* massData, float32 density) const;\r
diff --git a/libs/box2d/src/Box2D/Collision/Shapes/b2EdgeShape.cpp b/libs/box2d/src/Box2D/Collision/Shapes/b2EdgeShape.cpp
deleted file mode 100644 (file)
index 19ca893..0000000
+++ /dev/null
@@ -1,139 +0,0 @@
-/*\r
-* Copyright (c) 2006-2010 Erin Catto http://www.box2d.org\r
-*\r
-* This software is provided 'as-is', without any express or implied\r
-* warranty.  In no event will the authors be held liable for any damages\r
-* arising from the use of this software.\r
-* Permission is granted to anyone to use this software for any purpose,\r
-* including commercial applications, and to alter it and redistribute it\r
-* freely, subject to the following restrictions:\r
-* 1. The origin of this software must not be misrepresented; you must not\r
-* claim that you wrote the original software. If you use this software\r
-* in a product, an acknowledgment in the product documentation would be\r
-* appreciated but is not required.\r
-* 2. Altered source versions must be plainly marked as such, and must not be\r
-* misrepresented as being the original software.\r
-* 3. This notice may not be removed or altered from any source distribution.\r
-*/\r
-\r
-#include <Box2D/Collision/Shapes/b2EdgeShape.h>\r
-#include <new>\r
-using namespace std;\r
-\r
-void b2EdgeShape::Set(const b2Vec2& v1, const b2Vec2& v2)\r
-{\r
-       m_vertex1 = v1;\r
-       m_vertex2 = v2;\r
-       m_hasVertex0 = false;\r
-       m_hasVertex3 = false;\r
-}\r
-\r
-b2Shape* b2EdgeShape::Clone(b2BlockAllocator* allocator) const\r
-{\r
-       void* mem = allocator->Allocate(sizeof(b2EdgeShape));\r
-       b2EdgeShape* clone = new (mem) b2EdgeShape;\r
-       *clone = *this;\r
-       return clone;\r
-}\r
-\r
-int32 b2EdgeShape::GetChildCount() const\r
-{\r
-       return 1;\r
-}\r
-\r
-bool b2EdgeShape::TestPoint(const b2Transform& xf, const b2Vec2& p) const\r
-{\r
-       B2_NOT_USED(xf);\r
-       B2_NOT_USED(p);\r
-       return false;\r
-}\r
-\r
-// p = p1 + t * d\r
-// v = v1 + s * e\r
-// p1 + t * d = v1 + s * e\r
-// s * e - t * d = p1 - v1\r
-bool b2EdgeShape::RayCast(b2RayCastOutput* output, const b2RayCastInput& input,\r
-                                                       const b2Transform& xf, int32 childIndex) const\r
-{\r
-       B2_NOT_USED(childIndex);\r
-\r
-       // Put the ray into the edge's frame of reference.\r
-       b2Vec2 p1 = b2MulT(xf.R, input.p1 - xf.position);\r
-       b2Vec2 p2 = b2MulT(xf.R, input.p2 - xf.position);\r
-       b2Vec2 d = p2 - p1;\r
-\r
-       b2Vec2 v1 = m_vertex1;\r
-       b2Vec2 v2 = m_vertex2;\r
-       b2Vec2 e = v2 - v1;\r
-       b2Vec2 normal(e.y, -e.x);\r
-       normal.Normalize();\r
-\r
-       // q = p1 + t * d\r
-       // dot(normal, q - v1) = 0\r
-       // dot(normal, p1 - v1) + t * dot(normal, d) = 0\r
-       float32 numerator = b2Dot(normal, v1 - p1);\r
-       float32 denominator = b2Dot(normal, d);\r
-\r
-       if (denominator == 0.0f)\r
-       {\r
-               return false;\r
-       }\r
-\r
-       float32 t = numerator / denominator;\r
-       if (t < 0.0f || 1.0f < t)\r
-       {\r
-               return false;\r
-       }\r
-\r
-       b2Vec2 q = p1 + t * d;\r
-\r
-       // q = v1 + s * r\r
-       // s = dot(q - v1, r) / dot(r, r)\r
-       b2Vec2 r = v2 - v1;\r
-       float32 rr = b2Dot(r, r);\r
-       if (rr == 0.0f)\r
-       {\r
-               return false;\r
-       }\r
-\r
-       float32 s = b2Dot(q - v1, r) / rr;\r
-       if (s < 0.0f || 1.0f < s)\r
-       {\r
-               return false;\r
-       }\r
-\r
-       output->fraction = t;\r
-       if (numerator > 0.0f)\r
-       {\r
-               output->normal = -normal;\r
-       }\r
-       else\r
-       {\r
-               output->normal = normal;\r
-       }\r
-       return true;\r
-}\r
-\r
-void b2EdgeShape::ComputeAABB(b2AABB* aabb, const b2Transform& xf, int32 childIndex) const\r
-{\r
-       B2_NOT_USED(childIndex);\r
-\r
-       b2Vec2 v1 = b2Mul(xf, m_vertex1);\r
-       b2Vec2 v2 = b2Mul(xf, m_vertex2);\r
-\r
-       b2Vec2 lower = b2Min(v1, v2);\r
-       b2Vec2 upper = b2Max(v1, v2);\r
-\r
-       b2Vec2 r(m_radius, m_radius);\r
-       aabb->lowerBound = lower - r;\r
-       aabb->upperBound = upper + r;\r
-}\r
-\r
-void b2EdgeShape::ComputeMass(b2MassData* massData, float32 density) const\r
-{\r
-       B2_NOT_USED(density);\r
-\r
-       massData->mass = 0.0f;\r
-       massData->center = 0.5f * (m_vertex1 + m_vertex2);\r
-       massData->I = 0.0f;\r
-}\r
diff --git a/libs/box2d/src/Box2D/Collision/Shapes/b2EdgeShape.h b/libs/box2d/src/Box2D/Collision/Shapes/b2EdgeShape.h
deleted file mode 100644 (file)
index 780eb2c..0000000
+++ /dev/null
@@ -1,70 +0,0 @@
-/*\r
-* Copyright (c) 2006-2010 Erin Catto http://www.box2d.org\r
-*\r
-* This software is provided 'as-is', without any express or implied\r
-* warranty.  In no event will the authors be held liable for any damages\r
-* arising from the use of this software.\r
-* Permission is granted to anyone to use this software for any purpose,\r
-* including commercial applications, and to alter it and redistribute it\r
-* freely, subject to the following restrictions:\r
-* 1. The origin of this software must not be misrepresented; you must not\r
-* claim that you wrote the original software. If you use this software\r
-* in a product, an acknowledgment in the product documentation would be\r
-* appreciated but is not required.\r
-* 2. Altered source versions must be plainly marked as such, and must not be\r
-* misrepresented as being the original software.\r
-* 3. This notice may not be removed or altered from any source distribution.\r
-*/\r
-\r
-#ifndef B2_EDGE_SHAPE_H\r
-#define B2_EDGE_SHAPE_H\r
-\r
-#include <Box2D/Collision/Shapes/b2Shape.h>\r
-\r
-/// A line segment (edge) shape. These can be connected in chains or loops\r
-/// to other edge shapes. The connectivity information is used to ensure\r
-/// correct contact normals.\r
-class b2EdgeShape : public b2Shape\r
-{\r
-public:\r
-       b2EdgeShape();\r
-\r
-       /// Set this as an isolated edge.\r
-       void Set(const b2Vec2& v1, const b2Vec2& v2);\r
-\r
-       /// Implement b2Shape.\r
-       b2Shape* Clone(b2BlockAllocator* allocator) const;\r
-\r
-       /// @see b2Shape::GetChildCount\r
-       int32 GetChildCount() const;\r
-\r
-       /// @see b2Shape::TestPoint\r
-       bool TestPoint(const b2Transform& transform, const b2Vec2& p) const;\r
-\r
-       /// Implement b2Shape.\r
-       bool RayCast(b2RayCastOutput* output, const b2RayCastInput& input,\r
-                               const b2Transform& transform, int32 childIndex) const;\r
-\r
-       /// @see b2Shape::ComputeAABB\r
-       void ComputeAABB(b2AABB* aabb, const b2Transform& transform, int32 childIndex) const;\r
-\r
-       /// @see b2Shape::ComputeMass\r
-       void ComputeMass(b2MassData* massData, float32 density) const;\r
-       \r
-       /// These are the edge vertices\r
-       b2Vec2 m_vertex1, m_vertex2;\r
-\r
-       /// Optional adjacent vertices. These are used for smooth collision.\r
-       b2Vec2 m_vertex0, m_vertex3;\r
-       bool m_hasVertex0, m_hasVertex3;\r
-};\r
-\r
-inline b2EdgeShape::b2EdgeShape()\r
-{\r
-       m_type = e_edge;\r
-       m_radius = b2_polygonRadius;\r
-       m_hasVertex0 = false;\r
-       m_hasVertex3 = false;\r
-}\r
-\r
-#endif\r
diff --git a/libs/box2d/src/Box2D/Collision/Shapes/b2LoopShape.cpp b/libs/box2d/src/Box2D/Collision/Shapes/b2LoopShape.cpp
deleted file mode 100644 (file)
index 7f7a216..0000000
+++ /dev/null
@@ -1,130 +0,0 @@
-/*\r
-* Copyright (c) 2006-2010 Erin Catto http://www.box2d.org\r
-*\r
-* This software is provided 'as-is', without any express or implied\r
-* warranty.  In no event will the authors be held liable for any damages\r
-* arising from the use of this software.\r
-* Permission is granted to anyone to use this software for any purpose,\r
-* including commercial applications, and to alter it and redistribute it\r
-* freely, subject to the following restrictions:\r
-* 1. The origin of this software must not be misrepresented; you must not\r
-* claim that you wrote the original software. If you use this software\r
-* in a product, an acknowledgment in the product documentation would be\r
-* appreciated but is not required.\r
-* 2. Altered source versions must be plainly marked as such, and must not be\r
-* misrepresented as being the original software.\r
-* 3. This notice may not be removed or altered from any source distribution.\r
-*/\r
-\r
-#include <Box2D/Collision/Shapes/b2LoopShape.h>\r
-#include <Box2D/Collision/Shapes/b2EdgeShape.h>\r
-#include <new>\r
-#include <cstring>\r
-using namespace std;\r
-\r
-b2LoopShape::~b2LoopShape()\r
-{\r
-       b2Free(m_vertices);\r
-       m_vertices = NULL;\r
-       m_count = 0;\r
-}\r
-\r
-void b2LoopShape::Create(const b2Vec2* vertices, int32 count)\r
-{\r
-       b2Assert(m_vertices == NULL && m_count == 0);\r
-       b2Assert(count >= 2);\r
-       m_count = count;\r
-       m_vertices = (b2Vec2*)b2Alloc(count * sizeof(b2Vec2));\r
-       memcpy(m_vertices, vertices, m_count * sizeof(b2Vec2));\r
-}\r
-\r
-b2Shape* b2LoopShape::Clone(b2BlockAllocator* allocator) const\r
-{\r
-       void* mem = allocator->Allocate(sizeof(b2LoopShape));\r
-       b2LoopShape* clone = new (mem) b2LoopShape;\r
-       clone->Create(m_vertices, m_count);\r
-       return clone;\r
-}\r
-\r
-int32 b2LoopShape::GetChildCount() const\r
-{\r
-       return m_count;\r
-}\r
-\r
-void b2LoopShape::GetChildEdge(b2EdgeShape* edge, int32 index) const\r
-{\r
-       b2Assert(2 <= m_count);\r
-       b2Assert(0 <= index && index < m_count);\r
-       edge->m_type = b2Shape::e_edge;\r
-       edge->m_radius = m_radius;\r
-       edge->m_hasVertex0 = true;\r
-       edge->m_hasVertex3 = true;\r
-\r
-       int32 i0 = index - 1 >= 0 ? index - 1 : m_count - 1;\r
-       int32 i1 = index;\r
-       int32 i2 = index + 1 < m_count ? index + 1 : 0;\r
-       int32 i3 = index + 2;\r
-       while (i3 >= m_count)\r
-       {\r
-               i3 -= m_count;\r
-       }\r
-\r
-       edge->m_vertex0 = m_vertices[i0];\r
-       edge->m_vertex1 = m_vertices[i1];\r
-       edge->m_vertex2 = m_vertices[i2];\r
-       edge->m_vertex3 = m_vertices[i3];\r
-}\r
-\r
-bool b2LoopShape::TestPoint(const b2Transform& xf, const b2Vec2& p) const\r
-{\r
-       B2_NOT_USED(xf);\r
-       B2_NOT_USED(p);\r
-       return false;\r
-}\r
-\r
-bool b2LoopShape::RayCast(b2RayCastOutput* output, const b2RayCastInput& input,\r
-                                                       const b2Transform& xf, int32 childIndex) const\r
-{\r
-       b2Assert(childIndex < m_count);\r
-\r
-       b2EdgeShape edgeShape;\r
-\r
-       int32 i1 = childIndex;\r
-       int32 i2 = childIndex + 1;\r
-       if (i2 == m_count)\r
-       {\r
-               i2 = 0;\r
-       }\r
-\r
-       edgeShape.m_vertex1 = m_vertices[i1];\r
-       edgeShape.m_vertex2 = m_vertices[i2];\r
-\r
-       return edgeShape.RayCast(output, input, xf, 0);\r
-}\r
-\r
-void b2LoopShape::ComputeAABB(b2AABB* aabb, const b2Transform& xf, int32 childIndex) const\r
-{\r
-       b2Assert(childIndex < m_count);\r
-\r
-       int32 i1 = childIndex;\r
-       int32 i2 = childIndex + 1;\r
-       if (i2 == m_count)\r
-       {\r
-               i2 = 0;\r
-       }\r
-\r
-       b2Vec2 v1 = b2Mul(xf, m_vertices[i1]);\r
-       b2Vec2 v2 = b2Mul(xf, m_vertices[i2]);\r
-\r
-       aabb->lowerBound = b2Min(v1, v2);\r
-       aabb->upperBound = b2Max(v1, v2);\r
-}\r
-\r
-void b2LoopShape::ComputeMass(b2MassData* massData, float32 density) const\r
-{\r
-       B2_NOT_USED(density);\r
-\r
-       massData->mass = 0.0f;\r
-       massData->center.SetZero();\r
-       massData->I = 0.0f;\r
-}\r
diff --git a/libs/box2d/src/Box2D/Collision/Shapes/b2LoopShape.h b/libs/box2d/src/Box2D/Collision/Shapes/b2LoopShape.h
deleted file mode 100644 (file)
index 0dd7f1c..0000000
+++ /dev/null
@@ -1,96 +0,0 @@
-/*\r
-* Copyright (c) 2006-2010 Erin Catto http://www.box2d.org\r
-*\r
-* This software is provided 'as-is', without any express or implied\r
-* warranty.  In no event will the authors be held liable for any damages\r
-* arising from the use of this software.\r
-* Permission is granted to anyone to use this software for any purpose,\r
-* including commercial applications, and to alter it and redistribute it\r
-* freely, subject to the following restrictions:\r
-* 1. The origin of this software must not be misrepresented; you must not\r
-* claim that you wrote the original software. If you use this software\r
-* in a product, an acknowledgment in the product documentation would be\r
-* appreciated but is not required.\r
-* 2. Altered source versions must be plainly marked as such, and must not be\r
-* misrepresented as being the original software.\r
-* 3. This notice may not be removed or altered from any source distribution.\r
-*/\r
-\r
-#ifndef B2_LOOP_SHAPE_H\r
-#define B2_LOOP_SHAPE_H\r
-\r
-#include <Box2D/Collision/Shapes/b2Shape.h>\r
-\r
-class b2EdgeShape;\r
-\r
-/// A loop shape is a free form sequence of line segments that form a circular list.\r
-/// The loop may cross upon itself, but this is not recommended for smooth collision.\r
-/// The loop has double sided collision, so you can use inside and outside collision.\r
-/// Therefore, you may use any winding order.\r
-/// Since there may be many vertices, they are allocated using b2Alloc.\r
-class b2LoopShape : public b2Shape\r
-{\r
-public:\r
-       b2LoopShape();\r
-\r
-       /// The destructor frees the vertices using b2Free.\r
-       ~b2LoopShape();\r
-\r
-       /// Create the loop shape, copy all vertices.\r
-       void Create(const b2Vec2* vertices, int32 count);\r
-\r
-       /// Implement b2Shape. Vertices are cloned using b2Alloc.\r
-       b2Shape* Clone(b2BlockAllocator* allocator) const;\r
-\r
-       /// @see b2Shape::GetChildCount\r
-       int32 GetChildCount() const;\r
-\r
-       /// Get a child edge.\r
-       void GetChildEdge(b2EdgeShape* edge, int32 index) const;\r
-\r
-       /// This always return false.\r
-       /// @see b2Shape::TestPoint\r
-       bool TestPoint(const b2Transform& transform, const b2Vec2& p) const;\r
-\r
-       /// Implement b2Shape.\r
-       bool RayCast(b2RayCastOutput* output, const b2RayCastInput& input,\r
-                                       const b2Transform& transform, int32 childIndex) const;\r
-\r
-       /// @see b2Shape::ComputeAABB\r
-       void ComputeAABB(b2AABB* aabb, const b2Transform& transform, int32 childIndex) const;\r
-\r
-       /// Chains have zero mass.\r
-       /// @see b2Shape::ComputeMass\r
-       void ComputeMass(b2MassData* massData, float32 density) const;\r
-\r
-       /// Get the number of vertices.\r
-       int32 GetCount() const { return m_count; }\r
-\r
-       /// Get the vertices (read-only).\r
-       const b2Vec2& GetVertex(int32 index) const\r
-       {\r
-               b2Assert(0 <= index && index < m_count);\r
-               return m_vertices[index];\r
-       }\r
-\r
-       /// Get the vertices (read-only).\r
-       const b2Vec2* GetVertices() const { return m_vertices; }\r
-\r
-protected:\r
-\r
-       /// The vertices. Owned by this class.\r
-       b2Vec2* m_vertices;\r
-\r
-       /// The vertex count.\r
-       int32 m_count;\r
-};\r
-\r
-inline b2LoopShape::b2LoopShape()\r
-{\r
-       m_type = e_loop;\r
-       m_radius = b2_polygonRadius;\r
-       m_vertices = NULL;\r
-       m_count = 0;\r
-}\r
-\r
-#endif\r
index a625aff..429e647 100644 (file)
@@ -1,5 +1,5 @@
 /*\r
-* Copyright (c) 2006-2009 Erin Catto http://www.box2d.org\r
+* Copyright (c) 2006-2009 Erin Catto http://www.gphysics.com\r
 *\r
 * This software is provided 'as-is', without any express or implied\r
 * warranty.  In no event will the authors be held liable for any damages\r
@@ -66,18 +66,30 @@ void b2PolygonShape::SetAsBox(float32 hx, float32 hy, const b2Vec2& center, floa
        }\r
 }\r
 \r
-int32 b2PolygonShape::GetChildCount() const\r
+void b2PolygonShape::SetAsEdge(const b2Vec2& v1, const b2Vec2& v2)\r
 {\r
-       return 1;\r
+       m_vertexCount = 2;\r
+       m_vertices[0] = v1;\r
+       m_vertices[1] = v2;\r
+       m_centroid = 0.5f * (v1 + v2);\r
+       m_normals[0] = b2Cross(v2 - v1, 1.0f);\r
+       m_normals[0].Normalize();\r
+       m_normals[1] = -m_normals[0];\r
 }\r
 \r
 static b2Vec2 ComputeCentroid(const b2Vec2* vs, int32 count)\r
 {\r
-       b2Assert(count >= 3);\r
+       b2Assert(count >= 2);\r
 \r
        b2Vec2 c; c.Set(0.0f, 0.0f);\r
        float32 area = 0.0f;\r
 \r
+       if (count == 2)\r
+       {\r
+               c = 0.5f * (vs[0] + vs[1]);\r
+               return c;\r
+       }\r
+\r
        // pRef is the reference point for forming triangles.\r
        // It's location doesn't change the result (except for rounding error).\r
        b2Vec2 pRef(0.0f, 0.0f);\r
@@ -119,7 +131,7 @@ static b2Vec2 ComputeCentroid(const b2Vec2* vs, int32 count)
 \r
 void b2PolygonShape::Set(const b2Vec2* vertices, int32 count)\r
 {\r
-       b2Assert(3 <= count && count <= b2_maxPolygonVertices);\r
+       b2Assert(2 <= count && count <= b2_maxPolygonVertices);\r
        m_vertexCount = count;\r
 \r
        // Copy vertices.\r
@@ -186,82 +198,131 @@ bool b2PolygonShape::TestPoint(const b2Transform& xf, const b2Vec2& p) const
        return true;\r
 }\r
 \r
-bool b2PolygonShape::RayCast(b2RayCastOutput* output, const b2RayCastInput& input,\r
-                                                               const b2Transform& xf, int32 childIndex) const\r
+bool b2PolygonShape::RayCast(b2RayCastOutput* output, const b2RayCastInput& input, const b2Transform& xf) const\r
 {\r
-       B2_NOT_USED(childIndex);\r
-\r
        // Put the ray into the polygon's frame of reference.\r
        b2Vec2 p1 = b2MulT(xf.R, input.p1 - xf.position);\r
        b2Vec2 p2 = b2MulT(xf.R, input.p2 - xf.position);\r
        b2Vec2 d = p2 - p1;\r
 \r
-       float32 lower = 0.0f, upper = input.maxFraction;\r
-\r
-       int32 index = -1;\r
-\r
-       for (int32 i = 0; i < m_vertexCount; ++i)\r
+       if (m_vertexCount == 2)\r
        {\r
-               // p = p1 + a * d\r
-               // dot(normal, p - v) = 0\r
-               // dot(normal, p1 - v) + a * dot(normal, d) = 0\r
-               float32 numerator = b2Dot(m_normals[i], m_vertices[i] - p1);\r
-               float32 denominator = b2Dot(m_normals[i], d);\r
+               b2Vec2 v1 = m_vertices[0];\r
+               b2Vec2 v2 = m_vertices[1];\r
+               b2Vec2 normal = m_normals[0];\r
+\r
+               // q = p1 + t * d\r
+               // dot(normal, q - v1) = 0\r
+               // dot(normal, p1 - v1) + t * dot(normal, d) = 0\r
+               float32 numerator = b2Dot(normal, v1 - p1);\r
+               float32 denominator = b2Dot(normal, d);\r
 \r
                if (denominator == 0.0f)\r
-               {       \r
-                       if (numerator < 0.0f)\r
-                       {\r
-                               return false;\r
-                       }\r
+               {\r
+                       return false;\r
+               }\r
+       \r
+               float32 t = numerator / denominator;\r
+               if (t < 0.0f || 1.0f < t)\r
+               {\r
+                       return false;\r
+               }\r
+\r
+               b2Vec2 q = p1 + t * d;\r
+\r
+               // q = v1 + s * r\r
+               // s = dot(q - v1, r) / dot(r, r)\r
+               b2Vec2 r = v2 - v1;\r
+               float32 rr = b2Dot(r, r);\r
+               if (rr == 0.0f)\r
+               {\r
+                       return false;\r
+               }\r
+\r
+               float32 s = b2Dot(q - v1, r) / rr;\r
+               if (s < 0.0f || 1.0f < s)\r
+               {\r
+                       return false;\r
+               }\r
+\r
+               output->fraction = t;\r
+               if (numerator > 0.0f)\r
+               {\r
+                       output->normal = -normal;\r
                }\r
                else\r
                {\r
-                       // Note: we want this predicate without division:\r
-                       // lower < numerator / denominator, where denominator < 0\r
-                       // Since denominator < 0, we have to flip the inequality:\r
-                       // lower < numerator / denominator <==> denominator * lower > numerator.\r
-                       if (denominator < 0.0f && numerator < lower * denominator)\r
+                       output->normal = normal;\r
+               }\r
+               return true;\r
+       }\r
+       else\r
+       {\r
+               float32 lower = 0.0f, upper = input.maxFraction;\r
+\r
+               int32 index = -1;\r
+\r
+               for (int32 i = 0; i < m_vertexCount; ++i)\r
+               {\r
+                       // p = p1 + a * d\r
+                       // dot(normal, p - v) = 0\r
+                       // dot(normal, p1 - v) + a * dot(normal, d) = 0\r
+                       float32 numerator = b2Dot(m_normals[i], m_vertices[i] - p1);\r
+                       float32 denominator = b2Dot(m_normals[i], d);\r
+\r
+                       if (denominator == 0.0f)\r
+                       {       \r
+                               if (numerator < 0.0f)\r
+                               {\r
+                                       return false;\r
+                               }\r
+                       }\r
+                       else\r
                        {\r
-                               // Increase lower.\r
-                               // The segment enters this half-space.\r
-                               lower = numerator / denominator;\r
-                               index = i;\r
+                               // Note: we want this predicate without division:\r
+                               // lower < numerator / denominator, where denominator < 0\r
+                               // Since denominator < 0, we have to flip the inequality:\r
+                               // lower < numerator / denominator <==> denominator * lower > numerator.\r
+                               if (denominator < 0.0f && numerator < lower * denominator)\r
+                               {\r
+                                       // Increase lower.\r
+                                       // The segment enters this half-space.\r
+                                       lower = numerator / denominator;\r
+                                       index = i;\r
+                               }\r
+                               else if (denominator > 0.0f && numerator < upper * denominator)\r
+                               {\r
+                                       // Decrease upper.\r
+                                       // The segment exits this half-space.\r
+                                       upper = numerator / denominator;\r
+                               }\r
                        }\r
-                       else if (denominator > 0.0f && numerator < upper * denominator)\r
+\r
+                       // The use of epsilon here causes the assert on lower to trip\r
+                       // in some cases. Apparently the use of epsilon was to make edge\r
+                       // shapes work, but now those are handled separately.\r
+                       //if (upper < lower - b2_epsilon)\r
+                       if (upper < lower)\r
                        {\r
-                               // Decrease upper.\r
-                               // The segment exits this half-space.\r
-                               upper = numerator / denominator;\r
+                               return false;\r
                        }\r
                }\r
 \r
-               // The use of epsilon here causes the assert on lower to trip\r
-               // in some cases. Apparently the use of epsilon was to make edge\r
-               // shapes work, but now those are handled separately.\r
-               //if (upper < lower - b2_epsilon)\r
-               if (upper < lower)\r
+               b2Assert(0.0f <= lower && lower <= input.maxFraction);\r
+\r
+               if (index >= 0)\r
                {\r
-                       return false;\r
+                       output->fraction = lower;\r
+                       output->normal = b2Mul(xf.R, m_normals[index]);\r
+                       return true;\r
                }\r
        }\r
 \r
-       b2Assert(0.0f <= lower && lower <= input.maxFraction);\r
-\r
-       if (index >= 0)\r
-       {\r
-               output->fraction = lower;\r
-               output->normal = b2Mul(xf.R, m_normals[index]);\r
-               return true;\r
-       }\r
-\r
        return false;\r
 }\r
 \r
-void b2PolygonShape::ComputeAABB(b2AABB* aabb, const b2Transform& xf, int32 childIndex) const\r
+void b2PolygonShape::ComputeAABB(b2AABB* aabb, const b2Transform& xf) const\r
 {\r
-       B2_NOT_USED(childIndex);\r
-\r
        b2Vec2 lower = b2Mul(xf, m_vertices[0]);\r
        b2Vec2 upper = lower;\r
 \r
@@ -303,30 +364,44 @@ void b2PolygonShape::ComputeMass(b2MassData* massData, float32 density) const
        //\r
        // The rest of the derivation is handled by computer algebra.\r
 \r
-       b2Assert(m_vertexCount >= 3);\r
+       b2Assert(m_vertexCount >= 2);\r
+\r
+       // A line segment has zero mass.\r
+       if (m_vertexCount == 2)\r
+       {\r
+               massData->center = 0.5f * (m_vertices[0] + m_vertices[1]);\r
+               massData->mass = 0.0f;\r
+               massData->I = 0.0f;\r
+               return;\r
+       }\r
 \r
        b2Vec2 center; center.Set(0.0f, 0.0f);\r
        float32 area = 0.0f;\r
        float32 I = 0.0f;\r
 \r
-       // s is the reference point for forming triangles.\r
+       // pRef is the reference point for forming triangles.\r
        // It's location doesn't change the result (except for rounding error).\r
-       b2Vec2 s(0.0f, 0.0f);\r
-\r
+       b2Vec2 pRef(0.0f, 0.0f);\r
+#if 0\r
        // This code would put the reference point inside the polygon.\r
        for (int32 i = 0; i < m_vertexCount; ++i)\r
        {\r
-               s += m_vertices[i];\r
+               pRef += m_vertices[i];\r
        }\r
-       s *= 1.0f / m_vertexCount;\r
+       pRef *= 1.0f / count;\r
+#endif\r
 \r
        const float32 k_inv3 = 1.0f / 3.0f;\r
 \r
        for (int32 i = 0; i < m_vertexCount; ++i)\r
        {\r
                // Triangle vertices.\r
-               b2Vec2 e1 = m_vertices[i] - s;\r
-               b2Vec2 e2 = i + 1 < m_vertexCount ? m_vertices[i+1] - s : m_vertices[0] - s;\r
+               b2Vec2 p1 = pRef;\r
+               b2Vec2 p2 = m_vertices[i];\r
+               b2Vec2 p3 = i + 1 < m_vertexCount ? m_vertices[i+1] : m_vertices[0];\r
+\r
+               b2Vec2 e1 = p2 - p1;\r
+               b2Vec2 e2 = p3 - p1;\r
 \r
                float32 D = b2Cross(e1, e2);\r
 \r
@@ -334,15 +409,16 @@ void b2PolygonShape::ComputeMass(b2MassData* massData, float32 density) const
                area += triangleArea;\r
 \r
                // Area weighted centroid\r
-               center += triangleArea * k_inv3 * (e1 + e2);\r
+               center += triangleArea * k_inv3 * (p1 + p2 + p3);\r
 \r
+               float32 px = p1.x, py = p1.y;\r
                float32 ex1 = e1.x, ey1 = e1.y;\r
                float32 ex2 = e2.x, ey2 = e2.y;\r
 \r
-               float32 intx2 = ex1*ex1 + ex2*ex1 + ex2*ex2;\r
-               float32 inty2 = ey1*ey1 + ey2*ey1 + ey2*ey2;\r
+               float32 intx2 = k_inv3 * (0.25f * (ex1*ex1 + ex2*ex1 + ex2*ex2) + (px*ex1 + px*ex2)) + 0.5f*px*px;\r
+               float32 inty2 = k_inv3 * (0.25f * (ey1*ey1 + ey2*ey1 + ey2*ey2) + (py*ey1 + py*ey2)) + 0.5f*py*py;\r
 \r
-               I += (0.25f * k_inv3 * D) * (intx2 + inty2);\r
+               I += D * (intx2 + inty2);\r
        }\r
 \r
        // Total mass\r
@@ -351,8 +427,8 @@ void b2PolygonShape::ComputeMass(b2MassData* massData, float32 density) const
        // Center of mass\r
        b2Assert(area > b2_epsilon);\r
        center *= 1.0f / area;\r
-       massData->center = center + s;\r
+       massData->center = center;\r
 \r
        // Inertia tensor relative to the local origin.\r
-       massData->I = density * I + massData->mass * b2Dot(s, s);\r
+       massData->I = density * I;\r
 }\r
index fd11bd1..564d4b0 100644 (file)
@@ -1,5 +1,5 @@
 /*\r
-* Copyright (c) 2006-2009 Erin Catto http://www.box2d.org\r
+* Copyright (c) 2006-2009 Erin Catto http://www.gphysics.com\r
 *\r
 * This software is provided 'as-is', without any express or implied\r
 * warranty.  In no event will the authors be held liable for any damages\r
@@ -23,8 +23,6 @@
 \r
 /// A convex polygon. It is assumed that the interior of the polygon is to\r
 /// the left of each edge.\r
-/// Polygons have a maximum number of vertices equal to b2_maxPolygonVertices.\r
-/// In most cases you should not need many vertices for a convex polygon.\r
 class b2PolygonShape : public b2Shape\r
 {\r
 public:\r
@@ -33,12 +31,8 @@ public:
        /// Implement b2Shape.\r
        b2Shape* Clone(b2BlockAllocator* allocator) const;\r
 \r
-       /// @see b2Shape::GetChildCount\r
-       int32 GetChildCount() const;\r
-\r
        /// Copy vertices. This assumes the vertices define a convex polygon.\r
        /// It is assumed that the exterior is the the right of each edge.\r
-       /// The count must be in the range [3, b2_maxPolygonVertices].\r
        void Set(const b2Vec2* vertices, int32 vertexCount);\r
 \r
        /// Build vertices to represent an axis-aligned box.\r
@@ -53,19 +47,27 @@ public:
        /// @param angle the rotation of the box in local coordinates.\r
        void SetAsBox(float32 hx, float32 hy, const b2Vec2& center, float32 angle);\r
 \r
+       /// Set this as a single edge.\r
+       void SetAsEdge(const b2Vec2& v1, const b2Vec2& v2);\r
+\r
        /// @see b2Shape::TestPoint\r
        bool TestPoint(const b2Transform& transform, const b2Vec2& p) const;\r
 \r
        /// Implement b2Shape.\r
-       bool RayCast(b2RayCastOutput* output, const b2RayCastInput& input,\r
-                                       const b2Transform& transform, int32 childIndex) const;\r
+       bool RayCast(b2RayCastOutput* output, const b2RayCastInput& input, const b2Transform& transform) const;\r
 \r
        /// @see b2Shape::ComputeAABB\r
-       void ComputeAABB(b2AABB* aabb, const b2Transform& transform, int32 childIndex) const;\r
+       void ComputeAABB(b2AABB* aabb, const b2Transform& transform) const;\r
 \r
        /// @see b2Shape::ComputeMass\r
        void ComputeMass(b2MassData* massData, float32 density) const;\r
 \r
+       /// Get the supporting vertex index in the given direction.\r
+       int32 GetSupport(const b2Vec2& d) const;\r
+\r
+       /// Get the supporting vertex in the given direction.\r
+       const b2Vec2& GetSupportVertex(const b2Vec2& d) const;\r
+\r
        /// Get the vertex count.\r
        int32 GetVertexCount() const { return m_vertexCount; }\r
 \r
@@ -86,6 +88,40 @@ inline b2PolygonShape::b2PolygonShape()
        m_centroid.SetZero();\r
 }\r
 \r
+inline int32 b2PolygonShape::GetSupport(const b2Vec2& d) const\r
+{\r
+       int32 bestIndex = 0;\r
+       float32 bestValue = b2Dot(m_vertices[0], d);\r
+       for (int32 i = 1; i < m_vertexCount; ++i)\r
+       {\r
+               float32 value = b2Dot(m_vertices[i], d);\r
+               if (value > bestValue)\r
+               {\r
+                       bestIndex = i;\r
+                       bestValue = value;\r
+               }\r
+       }\r
+\r
+       return bestIndex;\r
+}\r
+\r
+inline const b2Vec2& b2PolygonShape::GetSupportVertex(const b2Vec2& d) const\r
+{\r
+       int32 bestIndex = 0;\r
+       float32 bestValue = b2Dot(m_vertices[0], d);\r
+       for (int32 i = 1; i < m_vertexCount; ++i)\r
+       {\r
+               float32 value = b2Dot(m_vertices[i], d);\r
+               if (value > bestValue)\r
+               {\r
+                       bestIndex = i;\r
+                       bestValue = value;\r
+               }\r
+       }\r
+\r
+       return m_vertices[bestIndex];\r
+}\r
+\r
 inline const b2Vec2& b2PolygonShape::GetVertex(int32 index) const\r
 {\r
        b2Assert(0 <= index && index < m_vertexCount);\r
index 34656dd..9082c0e 100644 (file)
@@ -1,5 +1,5 @@
 /*\r
-* Copyright (c) 2006-2009 Erin Catto http://www.box2d.org\r
+* Copyright (c) 2006-2009 Erin Catto http://www.gphysics.com\r
 *\r
 * This software is provided 'as-is', without any express or implied\r
 * warranty.  In no event will the authors be held liable for any damages\r
@@ -38,7 +38,7 @@ struct b2MassData
 \r
 /// A shape is used for collision detection. You can create a shape however you like.\r
 /// Shapes used for simulation in b2World are created automatically when a b2Fixture\r
-/// is created. Shapes may encapsulate a one or more child shapes.\r
+/// is created.\r
 class b2Shape\r
 {\r
 public:\r
@@ -47,10 +47,8 @@ public:
        {\r
                e_unknown= -1,\r
                e_circle = 0,\r
-               e_edge = 1,\r
-               e_polygon = 2,\r
-               e_loop = 3,\r
-               e_typeCount = 4\r
+               e_polygon = 1,\r
+               e_typeCount = 2,\r
        };\r
 \r
        b2Shape() { m_type = e_unknown; }\r
@@ -63,27 +61,21 @@ public:
        /// @return the shape type.\r
        Type GetType() const;\r
 \r
-       /// Get the number of child primitives.\r
-       virtual int32 GetChildCount() const = 0;\r
-\r
        /// Test a point for containment in this shape. This only works for convex shapes.\r
        /// @param xf the shape world transform.\r
        /// @param p a point in world coordinates.\r
        virtual bool TestPoint(const b2Transform& xf, const b2Vec2& p) const = 0;\r
 \r
-       /// Cast a ray against a child shape.\r
+       /// Cast a ray against this shape.\r
        /// @param output the ray-cast results.\r
        /// @param input the ray-cast input parameters.\r
        /// @param transform the transform to be applied to the shape.\r
-       /// @param childIndex the child shape index\r
-       virtual bool RayCast(b2RayCastOutput* output, const b2RayCastInput& input,\r
-                                               const b2Transform& transform, int32 childIndex) const = 0;\r
+       virtual bool RayCast(b2RayCastOutput* output, const b2RayCastInput& input, const b2Transform& transform) const = 0;\r
 \r
-       /// Given a transform, compute the associated axis aligned bounding box for a child shape.\r
+       /// Given a transform, compute the associated axis aligned bounding box for this shape.\r
        /// @param aabb returns the axis aligned box.\r
        /// @param xf the world transform of the shape.\r
-       /// @param childIndex the child shape\r
-       virtual void ComputeAABB(b2AABB* aabb, const b2Transform& xf, int32 childIndex) const = 0;\r
+       virtual void ComputeAABB(b2AABB* aabb, const b2Transform& xf) const = 0;\r
 \r
        /// Compute the mass properties of this shape using its dimensions and density.\r
        /// The inertia tensor is computed about the local origin.\r
index 2aa62f9..12c7967 100644 (file)
@@ -1,5 +1,5 @@
 /*\r
-* Copyright (c) 2006-2009 Erin Catto http://www.box2d.org\r
+* Copyright (c) 2006-2009 Erin Catto http://www.gphysics.com\r
 *\r
 * This software is provided 'as-is', without any express or implied\r
 * warranty.  In no event will the authors be held liable for any damages\r
@@ -18,7 +18,6 @@
 \r
 #include <Box2D/Collision/b2BroadPhase.h>\r
 #include <cstring>\r
-using namespace std;\r
 \r
 b2BroadPhase::b2BroadPhase()\r
 {\r
@@ -63,11 +62,6 @@ void b2BroadPhase::MoveProxy(int32 proxyId, const b2AABB& aabb, const b2Vec2& di
        }\r
 }\r
 \r
-void b2BroadPhase::TouchProxy(int32 proxyId)\r
-{\r
-       BufferMove(proxyId);\r
-}\r
-\r
 void b2BroadPhase::BufferMove(int32 proxyId)\r
 {\r
        if (m_moveCount == m_moveCapacity)\r
index c7398c9..bff188e 100644 (file)
@@ -1,5 +1,5 @@
 /*\r
-* Copyright (c) 2006-2009 Erin Catto http://www.box2d.org\r
+* Copyright (c) 2006-2009 Erin Catto http://www.gphysics.com\r
 *\r
 * This software is provided 'as-is', without any express or implied\r
 * warranty.  In no event will the authors be held liable for any damages\r
@@ -40,7 +40,7 @@ public:
 \r
        enum\r
        {\r
-               e_nullProxy = -1\r
+               e_nullProxy = -1,\r
        };\r
 \r
        b2BroadPhase();\r
@@ -57,9 +57,6 @@ public:
        /// call UpdatePairs to finalized the proxy pairs (for your time step).\r
        void MoveProxy(int32 proxyId, const b2AABB& aabb, const b2Vec2& displacement);\r
 \r
-       /// Call to trigger a re-processing of it's pairs on the next call to UpdatePairs.\r
-       void TouchProxy(int32 proxyId);\r
-\r
        /// Get the fat AABB for a proxy.\r
        const b2AABB& GetFatAABB(int32 proxyId) const;\r
 \r
@@ -91,14 +88,8 @@ public:
        template <typename T>\r
        void RayCast(T* callback, const b2RayCastInput& input) const;\r
 \r
-       /// Get the height of the embedded tree.\r
-       int32 GetTreeHeight() const;\r
-\r
-       /// Get the balance of the embedded tree.\r
-       int32 GetTreeBalance() const;\r
-\r
-       /// Get the quality metric of the embedded tree.\r
-       float32 GetTreeQuality() const;\r
+       /// Compute the height of the embedded tree.\r
+       int32 ComputeHeight() const;\r
 \r
 private:\r
 \r
@@ -162,19 +153,9 @@ inline int32 b2BroadPhase::GetProxyCount() const
        return m_proxyCount;\r
 }\r
 \r
-inline int32 b2BroadPhase::GetTreeHeight() const\r
-{\r
-       return m_tree.GetHeight();\r
-}\r
-\r
-inline int32 b2BroadPhase::GetTreeBalance() const\r
-{\r
-       return m_tree.GetMaxBalance();\r
-}\r
-\r
-inline float32 b2BroadPhase::GetTreeQuality() const\r
+inline int32 b2BroadPhase::ComputeHeight() const\r
 {\r
-       return m_tree.GetAreaRatio();\r
+       return m_tree.ComputeHeight();\r
 }\r
 \r
 template <typename T>\r
@@ -230,7 +211,7 @@ void b2BroadPhase::UpdatePairs(T* callback)
        }\r
 \r
        // Try to keep the tree balanced.\r
-       //m_tree.Rebalance(4);\r
+       m_tree.Rebalance(4);\r
 }\r
 \r
 template <typename T>\r
index 0ad58f0..6edf89d 100644 (file)
@@ -1,5 +1,5 @@
 /*\r
-* Copyright (c) 2007-2009 Erin Catto http://www.box2d.org\r
+* Copyright (c) 2007-2009 Erin Catto http://www.gphysics.com\r
 *\r
 * This software is provided 'as-is', without any express or implied\r
 * warranty.  In no event will the authors be held liable for any damages\r
diff --git a/libs/box2d/src/Box2D/Collision/b2CollideEdge.cpp b/libs/box2d/src/Box2D/Collision/b2CollideEdge.cpp
deleted file mode 100644 (file)
index e2ded85..0000000
+++ /dev/null
@@ -1,673 +0,0 @@
-/*\r
-* Copyright (c) 2007-2009 Erin Catto http://www.box2d.org\r
-*\r
-* This software is provided 'as-is', without any express or implied\r
-* warranty.  In no event will the authors be held liable for any damages\r
-* arising from the use of this software.\r
-* Permission is granted to anyone to use this software for any purpose,\r
-* including commercial applications, and to alter it and redistribute it\r
-* freely, subject to the following restrictions:\r
-* 1. The origin of this software must not be misrepresented; you must not\r
-* claim that you wrote the original software. If you use this software\r
-* in a product, an acknowledgment in the product documentation would be\r
-* appreciated but is not required.\r
-* 2. Altered source versions must be plainly marked as such, and must not be\r
-* misrepresented as being the original software.\r
-* 3. This notice may not be removed or altered from any source distribution.\r
-*/\r
-\r
-#include <Box2D/Collision/b2Collision.h>\r
-#include <Box2D/Collision/Shapes/b2CircleShape.h>\r
-#include <Box2D/Collision/Shapes/b2EdgeShape.h>\r
-#include <Box2D/Collision/Shapes/b2PolygonShape.h>\r
-\r
-enum b2EdgeType\r
-{\r
-       b2_isolated,\r
-       b2_concave,\r
-       b2_flat,\r
-       b2_convex\r
-};\r
-\r
-// Compute contact points for edge versus circle.\r
-// This accounts for edge connectivity.\r
-void b2CollideEdgeAndCircle(b2Manifold* manifold,\r
-                                                       const b2EdgeShape* edgeA, const b2Transform& xfA,\r
-                                                       const b2CircleShape* circleB, const b2Transform& xfB)\r
-{\r
-       manifold->pointCount = 0;\r
-\r
-       // Compute circle in frame of edge\r
-       b2Vec2 Q = b2MulT(xfA, b2Mul(xfB, circleB->m_p));\r
-\r
-       b2Vec2 A = edgeA->m_vertex1, B = edgeA->m_vertex2;\r
-       b2Vec2 e = B - A;\r
-\r
-       // Barycentric coordinates\r
-       float32 u = b2Dot(e, B - Q);\r
-       float32 v = b2Dot(e, Q - A);\r
-\r
-       float32 radius = edgeA->m_radius + circleB->m_radius;\r
-\r
-       b2ContactFeature cf;\r
-       cf.indexB = 0;\r
-       cf.typeB = b2ContactFeature::e_vertex;\r
-\r
-       // Region A\r
-       if (v <= 0.0f)\r
-       {\r
-               b2Vec2 P = A;\r
-               b2Vec2 d = Q - P;\r
-               float32 dd = b2Dot(d, d);\r
-               if (dd > radius * radius)\r
-               {\r
-                       return;\r
-               }\r
-\r
-               // Is there an edge connected to A?\r
-               if (edgeA->m_hasVertex0)\r
-               {\r
-                       b2Vec2 A1 = edgeA->m_vertex0;\r
-                       b2Vec2 B1 = A;\r
-                       b2Vec2 e1 = B1 - A1;\r
-                       float32 u1 = b2Dot(e1, B1 - Q);\r
-\r
-                       // Is the circle in Region AB of the previous edge?\r
-                       if (u1 > 0.0f)\r
-                       {\r
-                               return;\r
-                       }\r
-               }\r
-\r
-               cf.indexA = 0;\r
-               cf.typeA = b2ContactFeature::e_vertex;\r
-               manifold->pointCount = 1;\r
-               manifold->type = b2Manifold::e_circles;\r
-               manifold->localNormal.SetZero();\r
-               manifold->localPoint = P;\r
-               manifold->points[0].id.key = 0;\r
-               manifold->points[0].id.cf = cf;\r
-               manifold->points[0].localPoint = circleB->m_p;\r
-               return;\r
-       }\r
-       \r
-       // Region B\r
-       if (u <= 0.0f)\r
-       {\r
-               b2Vec2 P = B;\r
-               b2Vec2 d = Q - P;\r
-               float32 dd = b2Dot(d, d);\r
-               if (dd > radius * radius)\r
-               {\r
-                       return;\r
-               }\r
-\r
-               // Is there an edge connected to B?\r
-               if (edgeA->m_hasVertex3)\r
-               {\r
-                       b2Vec2 B2 = edgeA->m_vertex3;\r
-                       b2Vec2 A2 = B;\r
-                       b2Vec2 e2 = B2 - A2;\r
-                       float32 v2 = b2Dot(e2, Q - A2);\r
-\r
-                       // Is the circle in Region AB of the next edge?\r
-                       if (v2 > 0.0f)\r
-                       {\r
-                               return;\r
-                       }\r
-               }\r
-\r
-               cf.indexA = 1;\r
-               cf.typeA = b2ContactFeature::e_vertex;\r
-               manifold->pointCount = 1;\r
-               manifold->type = b2Manifold::e_circles;\r
-               manifold->localNormal.SetZero();\r
-               manifold->localPoint = P;\r
-               manifold->points[0].id.key = 0;\r
-               manifold->points[0].id.cf = cf;\r
-               manifold->points[0].localPoint = circleB->m_p;\r
-               return;\r
-       }\r
-\r
-       // Region AB\r
-       float32 den = b2Dot(e, e);\r
-       b2Assert(den > 0.0f);\r
-       b2Vec2 P = (1.0f / den) * (u * A + v * B);\r
-       b2Vec2 d = Q - P;\r
-       float32 dd = b2Dot(d, d);\r
-       if (dd > radius * radius)\r
-       {\r
-               return;\r
-       }\r
-\r
-       b2Vec2 n(-e.y, e.x);\r
-       if (b2Dot(n, Q - A) < 0.0f)\r
-       {\r
-               n.Set(-n.x, -n.y);\r
-       }\r
-       n.Normalize();\r
-\r
-       cf.indexA = 0;\r
-       cf.typeA = b2ContactFeature::e_face;\r
-       manifold->pointCount = 1;\r
-       manifold->type = b2Manifold::e_faceA;\r
-       manifold->localNormal = n;\r
-       manifold->localPoint = A;\r
-       manifold->points[0].id.key = 0;\r
-       manifold->points[0].id.cf = cf;\r
-       manifold->points[0].localPoint = circleB->m_p;\r
-}\r
-\r
-struct b2EPAxis\r
-{\r
-       enum Type\r
-       {\r
-               e_unknown,\r
-               e_edgeA,\r
-               e_edgeB\r
-       };\r
-\r
-       Type type;\r
-       int32 index;\r
-       float32 separation;\r
-};\r
-\r
-// Edge shape plus more stuff.\r
-struct b2FatEdge\r
-{\r
-       b2Vec2 v0, v1, v2, v3;\r
-       b2Vec2 normal;\r
-       bool hasVertex0, hasVertex3;\r
-};\r
-