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;
};
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 */,
[[UIAccelerometer sharedAccelerometer] setUpdateInterval:(1.0 / kAccelerometerFrequency)];
[[UIAccelerometer sharedAccelerometer] setDelegate:self];
-
- //[self setMultipleTouchEnabled:YES];
}
//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;
}
// 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);
TestEntry* e = g_testEntries;
e+=indexPath.row;
- cell.textLabel.text = [NSString stringWithUTF8String:e->name];
+ [cell setText:[NSString stringWithCString:e->name]];
return cell;
}
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;
int32 drawStats;
int32 enableWarmStarting;
int32 enableContinuous;
- int32 enableSubStepping;
int32 pause;
int32 singleStep;
};
/*
-* 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
*
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);
}
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;
}
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)
{
{
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();
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;
{
return;
}
-
+
SpawnBomb(p);
}
m_world->DestroyBody(m_bomb);
m_bomb = NULL;
}
-
+
b2BodyDef bd;
bd.type = b2_dynamicBody;
bd.position = position;
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);
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)
{
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
// 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)
{
//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);
-/*\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}
+
+};
/*\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
// 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
#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
/*\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
\r
#include <Box2D/Collision/Shapes/b2CircleShape.h>\r
#include <new>\r
-using namespace std;\r
\r
b2Shape* b2CircleShape::Clone(b2BlockAllocator* allocator) const\r
{\r
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
// 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
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
/*\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
/// 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
+++ /dev/null
-/*\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
+++ /dev/null
-/*\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
+++ /dev/null
-/*\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
+++ /dev/null
-/*\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
/*\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
}\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
\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
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
//\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
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
// 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
/*\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
\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
/// 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
/// @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
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
/*\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
\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
{\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
/// @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
/*\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
\r
#include <Box2D/Collision/b2BroadPhase.h>\r
#include <cstring>\r
-using namespace std;\r
\r
b2BroadPhase::b2BroadPhase()\r
{\r
}\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
/*\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
\r
enum\r
{\r
- e_nullProxy = -1\r
+ e_nullProxy = -1,\r
};\r
\r
b2BroadPhase();\r
/// 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
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
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
}\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
/*\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
+++ /dev/null
-/*\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
-