@class ChipmunkShape;
@class ChipmunkConstraint;
@interface ChipmunkBody : NSObject <ChipmunkBaseObject>
+(ChipmunkBody *)bodyFromCPBody:(cpBody *)body;
+ (id)bodyWithMass:(cpFloat)mass andMoment:(cpFloat)moment;
+ (id)staticBody;
+ (id)kinematicBody;
- (id)initWithMass:(cpFloat)mass andMoment:(cpFloat)moment;
@property(nonatomic, assign) cpBodyType type;
@property(nonatomic, assign) cpFloat mass;
@property(nonatomic, assign) cpFloat moment;
@property(nonatomic, assign) cpVect centerOfGravity;
@property(nonatomic, assign) cpVect position;
@property(nonatomic, assign) cpVect velocity;
@property(nonatomic, assign) cpVect force;
@property(nonatomic, assign) cpFloat angle;
@property(nonatomic, assign) cpFloat angularVelocity;
@property(nonatomic, assign) cpFloat torque;
@property(nonatomic, readonly) cpTransform transform;
@property(nonatomic, readonly) cpBody *body;
@property(nonatomic, assign) id userData;
@property(nonatomic, readonly) bool isSleeping;
@property(nonatomic, readonly) cpFloat kineticEnergy;
@property(nonatomic, readonly) ChipmunkSpace *space;
- (cpVect)localToWorld:(cpVect)v;
- (cpVect)worldToLocal:(cpVect)v;
- (cpVect)velocityAtLocalPoint:(cpVect)p;
- (cpVect)velocityAtWorldPoint:(cpVect)p;
- (void)applyForce:(cpVect)force atLocalPoint:(cpVect)point;
- (void)applyForce:(cpVect)force atWorldPoint:(cpVect)point;
- (void)applyImpulse:(cpVect)impulse atLocalPoint:(cpVect)point;
- (void)applyImpulse:(cpVect)impulse atWorldPoint:(cpVect)point;
- (void)activate;
- (void)activateStatic:(ChipmunkShape *)filter;
- (void)sleepWithGroup:(ChipmunkBody *)group;
- (void)sleep;
- (NSArray *)shapes;
- (NSArray *)constraints;
typedef void (^ChipmunkBodyArbiterIteratorBlock)(cpArbiter *arbiter);
- (void)eachArbiter:(ChipmunkBodyArbiterIteratorBlock)block;
- (void)addToSpace:(ChipmunkSpace *)space;
- (void)removeFromSpace:(ChipmunkSpace *)space;
-(void)updateVelocity:(cpFloat)dt gravity:(cpVect)gravity damping:(cpFloat)damping;
-(void)updatePosition:(cpFloat)dt;
@end