/** * Apply force on joint, pushing the attached entity out of place. * * @param attached Attached component of entity to push * @param rotation Direction of force * @param force strength of force (don't factor in delta). */ public void push(final Attached attached, float rotation, float force) { vTmp.set(force, 0) .rotate(rotation) .add(attached.slackX, attached.slackY) .clamp(0f, attached.maxSlack); attached.slackX = vTmp.x; attached.slackY = vTmp.y; }
/** * Slack, like weapon recoil on the joint. * * @param attached */ protected void updateSlack(final Attached attached) { float len = vTmp.set(attached.slackX, attached.slackY).len() - world.delta * attached.tension; if (len > 0) { vTmp.nor().scl(len); } else { vTmp.set(0, 0); } attached.slackX = vTmp.x; attached.slackY = vTmp.y; }