22 lines
1.8 KiB
HTML
Executable file
22 lines
1.8 KiB
HTML
Executable file
<pre style="text-align:left;color:#000000; background-color:#ffffff; border:solid black 1px; padding:0.5em 1em 0.5em 1em; overflow:auto;font-size:small; font-family:monospace; "><em><span style="color:#236e25;">// Create the joint and set it's max force property.
|
|
</span></em>breakableJoint = <span style="color:#003369;">cpSpaceAddConstraint</span>(space, <span style="color:#003369;">cpPinJointNew</span>(body1, body2, <span style="color:#003369;">cpv</span>(<span style="color:#0000ff;">15</span>,<span style="color:#0000ff;">0</span>), <span style="color:#003369;">cpv</span>(-<span style="color:#0000ff;">15</span>,<span style="color:#0000ff;">0</span>)));
|
|
<span style="color:#003369;">cpConstraintSetMaxForce</span>(breakableJoint, <span style="color:#0000ff;">4000</span>);
|
|
|
|
|
|
<em><span style="color:#236e25;">// In your update function:
|
|
// Step your space normally...
|
|
</span></em>cpFloat dt = <span style="color:#0000ff;">1.0</span>/<span style="color:#0000ff;">60.0</span>;
|
|
<span style="color:#003369;">cpSpaceStep</span>(space, dt);
|
|
|
|
<strong><span style="color:#881350;">if</span></strong>(breakableJoint){
|
|
<em><span style="color:#236e25;">// Convert the impulse to a force by dividing it by the timestep.
|
|
</span></em> cpFloat force = <span style="color:#003369;">cpConstraintGetImpulse</span>(breakableJoint)/dt;
|
|
cpFloat maxForce = <span style="color:#003369;">cpConstraintGetMaxForce</span>(breakableJoint);
|
|
|
|
<em><span style="color:#236e25;">// If the force is almost as big as the joint's max force, break it.
|
|
</span></em> <strong><span style="color:#881350;">if</span></strong>(force > <span style="color:#0000ff;">0.9</span>*maxForce){
|
|
<span style="color:#003369;">cpSpaceRemoveConstraint</span>(space, breakableJoint);
|
|
breakableJoint = <strong><span style="color:#881350;">NULL</span></strong>;
|
|
}
|
|
}
|
|
</pre> |