00001 00012 @interface ChipmunkConstraint : NSObject <ChipmunkBaseObject> { 00013 @private 00014 id data; 00015 } 00016 00018 @property(nonatomic, readonly) cpConstraint *constraint; 00019 00021 @property(nonatomic, readonly) ChipmunkBody *bodyA; 00022 00024 @property(nonatomic, readonly) ChipmunkBody *bodyB; 00025 00028 +(ChipmunkConstraint *)constraintFromCPConstraint:(cpConstraint *)constraint; 00029 00035 @property(nonatomic, assign) cpFloat maxForce; 00036 00041 @property(nonatomic, assign) cpFloat errorBias; 00042 00047 @property(nonatomic, assign) cpFloat maxBias; 00048 00053 @property(nonatomic, assign) id data; 00054 00055 @end 00056 00057 00062 @interface ChipmunkPinJoint : ChipmunkConstraint { 00063 @private 00064 cpPinJoint _constraint; 00065 } 00066 00071 + (ChipmunkPinJoint *)pinJointWithBodyA:(ChipmunkBody *)a bodyB:(ChipmunkBody *)b anchr1:(cpVect)anchr1 anchr2:(cpVect)anchr2; 00072 00077 - (id)initWithBodyA:(ChipmunkBody *)a bodyB:(ChipmunkBody *)b anchr1:(cpVect)anchr1 anchr2:(cpVect)anchr2; 00078 00080 @property(nonatomic, assign) cpVect anchr1; 00081 00083 @property(nonatomic, assign) cpVect anchr2; 00084 00086 @property(nonatomic, assign) cpFloat dist; 00087 00088 @end 00089 00090 00095 @interface ChipmunkSlideJoint : ChipmunkConstraint { 00096 @private 00097 cpSlideJoint _constraint; 00098 } 00099 00103 + (ChipmunkSlideJoint *)slideJointWithBodyA:(ChipmunkBody *)a bodyB:(ChipmunkBody *)b anchr1:(cpVect)anchr1 anchr2:(cpVect)anchr2 min:(cpFloat)min max:(cpFloat)max; 00104 00108 - (id)initWithBodyA:(ChipmunkBody *)a bodyB:(ChipmunkBody *)b anchr1:(cpVect)anchr1 anchr2:(cpVect)anchr2 min:(cpFloat)min max:(cpFloat)max; 00109 00111 @property(nonatomic, assign) cpVect anchr1; 00112 00114 @property(nonatomic, assign) cpVect anchr2; 00115 00117 @property(nonatomic, assign) cpFloat min; 00118 00120 @property(nonatomic, assign) cpFloat max; 00121 00122 @end 00123 00124 00128 @interface ChipmunkPivotJoint : ChipmunkConstraint { 00129 @private 00130 cpPivotJoint _constraint; 00131 } 00132 00137 + (ChipmunkPivotJoint *)pivotJointWithBodyA:(ChipmunkBody *)a bodyB:(ChipmunkBody *)b anchr1:(cpVect)anchr1 anchr2:(cpVect)anchr2; 00138 00142 + (ChipmunkPivotJoint *)pivotJointWithBodyA:(ChipmunkBody *)a bodyB:(ChipmunkBody *)b pivot:(cpVect)pivot; 00143 00148 - (id)initWithBodyA:(ChipmunkBody *)a bodyB:(ChipmunkBody *)b anchr1:(cpVect)anchr1 anchr2:(cpVect)anchr2; 00149 00153 - (id)initWithBodyA:(ChipmunkBody *)a bodyB:(ChipmunkBody *)b pivot:(cpVect)pivot; 00154 00156 @property(nonatomic, assign) cpVect anchr1; 00157 00159 @property(nonatomic, assign) cpVect anchr2; 00160 00161 @end 00162 00163 00167 @interface ChipmunkGrooveJoint : ChipmunkConstraint { 00168 @private 00169 cpGrooveJoint _constraint; 00170 } 00171 00179 + (ChipmunkGrooveJoint *)grooveJointWithBodyA:(ChipmunkBody *)a bodyB:(ChipmunkBody *)b groove_a:(cpVect)groove_a groove_b:(cpVect)groove_b anchr2:(cpVect)anchr2; 00180 00188 - (id)initWithBodyA:(ChipmunkBody *)a bodyB:(ChipmunkBody *)b groove_a:(cpVect)groove_a groove_b:(cpVect)groove_b anchr2:(cpVect)anchr2; 00189 00191 @property(nonatomic, assign) cpVect grooveA; 00193 @property(nonatomic, assign) cpVect grooveB; 00194 00196 @property(nonatomic, assign) cpVect anchr2; 00197 00198 @end 00199 00200 00205 @interface ChipmunkDampedSpring : ChipmunkConstraint { 00206 @private 00207 cpDampedSpring _constraint; 00208 } 00209 00216 + (ChipmunkDampedSpring *)dampedSpringWithBodyA:(ChipmunkBody *)a bodyB:(ChipmunkBody *)b anchr1:(cpVect)anchr1 anchr2:(cpVect)anchr2 restLength:(cpFloat)restLength stiffness:(cpFloat)stiffness damping:(cpFloat)damping; 00217 00224 - (id)initWithBodyA:(ChipmunkBody *)a bodyB:(ChipmunkBody *)b anchr1:(cpVect)anchr1 anchr2:(cpVect)anchr2 restLength:(cpFloat)restLength stiffness:(cpFloat)stiffness damping:(cpFloat)damping; 00225 00227 @property(nonatomic, assign) cpVect anchr1; 00228 00230 @property(nonatomic, assign) cpVect anchr2; 00231 00233 @property(nonatomic, assign) cpFloat restLength; 00234 00236 @property(nonatomic, assign) cpFloat stiffness; 00237 00239 @property(nonatomic, assign) cpFloat damping; 00240 00241 @end 00242 00243 00247 @interface ChipmunkDampedRotarySpring : ChipmunkConstraint { 00248 @private 00249 cpDampedRotarySpring _constraint; 00250 } 00251 00252 00259 + (ChipmunkDampedRotarySpring *)dampedRotarySpringWithBodyA:(ChipmunkBody *)a bodyB:(ChipmunkBody *)b restAngle:(cpFloat)restAngle stiffness:(cpFloat)stiffness damping:(cpFloat)damping; 00260 00267 - (id)initWithBodyA:(ChipmunkBody *)a bodyB:(ChipmunkBody *)b restAngle:(cpFloat)restAngle stiffness:(cpFloat)stiffness damping:(cpFloat)damping; 00268 00270 @property(nonatomic, assign) cpFloat restAngle; 00271 00273 @property(nonatomic, assign) cpFloat stiffness; 00274 00276 @property(nonatomic, assign) cpFloat damping; 00277 00278 @end 00279 00280 00285 @interface ChipmunkRotaryLimitJoint : ChipmunkConstraint { 00286 @private 00287 cpRotaryLimitJoint _constraint; 00288 } 00289 00294 + (ChipmunkRotaryLimitJoint *)rotaryLimitJointWithBodyA:(ChipmunkBody *)a bodyB:(ChipmunkBody *)b min:(cpFloat)min max:(cpFloat)max; 00295 00300 - (id)initWithBodyA:(ChipmunkBody *)a bodyB:(ChipmunkBody *)b min:(cpFloat)min max:(cpFloat)max; 00301 00303 @property(nonatomic, assign) cpFloat min; 00304 00306 @property(nonatomic, assign) cpFloat max; 00307 00308 @end 00309 00310 00315 @interface ChipmunkSimpleMotor : ChipmunkConstraint { 00316 @private 00317 cpSimpleMotor _constraint; 00318 } 00319 00321 + (ChipmunkSimpleMotor *)simpleMotorWithBodyA:(ChipmunkBody *)a bodyB:(ChipmunkBody *)b rate:(cpFloat)rate; 00322 00324 - (id)initWithBodyA:(ChipmunkBody *)a bodyB:(ChipmunkBody *)b rate:(cpFloat)rate; 00325 00327 @property(nonatomic, assign) cpFloat rate; 00328 00329 @end 00330 00331 00337 @interface ChipmunkGearJoint : ChipmunkConstraint { 00338 @private 00339 cpGearJoint _constraint; 00340 } 00341 00347 + (ChipmunkGearJoint *)gearJointWithBodyA:(ChipmunkBody *)a bodyB:(ChipmunkBody *)b phase:(cpFloat)phase ratio:(cpFloat)ratio; 00348 00354 - (id)initWithBodyA:(ChipmunkBody *)a bodyB:(ChipmunkBody *)b phase:(cpFloat)phase ratio:(cpFloat)ratio; 00355 00357 @property(nonatomic, assign) cpFloat phase; 00359 @property(nonatomic, assign) cpFloat ratio; 00360 00361 @end 00362 00366 @interface ChipmunkRatchetJoint : ChipmunkConstraint { 00367 @private 00368 cpRatchetJoint _constraint; 00369 } 00370 00376 + (ChipmunkRatchetJoint *)ratchetJointWithBodyA:(ChipmunkBody *)a bodyB:(ChipmunkBody *)b phase:(cpFloat)phase ratchet:(cpFloat)ratchet; 00377 00383 - (id)initWithBodyA:(ChipmunkBody *)a bodyB:(ChipmunkBody *)b phase:(cpFloat)phase ratchet:(cpFloat)ratchet; 00384 00386 @property(nonatomic, assign) cpFloat angle; 00387 00389 @property(nonatomic, assign) cpFloat phase; 00390 00392 @property(nonatomic, assign) cpFloat ratchet; 00393 00394 @end