public void apply(final float theDeltaTime, final Physics theParticleSystem) { // if (!mA.fixed() || !mB.fixed()) { float a2bX = mA.position().x - mB.position().x; float a2bY = mA.position().y - mB.position().y; float a2bZ = mA.position().z - mB.position().z; final float myInversDistance = fastInverseSqrt(a2bX * a2bX + a2bY * a2bY + a2bZ * a2bZ); final float myDistance = 1.0F / myInversDistance; if (myDistance == 0.0F) { a2bX = 0.0F; a2bY = 0.0F; a2bZ = 0.0F; } else { a2bX *= myInversDistance; a2bY *= myInversDistance; a2bZ *= myInversDistance; } final float mSpringForce = -(myDistance - mRestLength) * mSpringConstant; final float Va2bX = mA.velocity().x - mB.velocity().x; final float Va2bY = mA.velocity().y - mB.velocity().y; final float Va2bZ = mA.velocity().z - mB.velocity().z; final float mDampingForce = -mSpringDamping * (a2bX * Va2bX + a2bY * Va2bY + a2bZ * Va2bZ); final float r = mSpringForce + mDampingForce; a2bX *= r; a2bY *= r; a2bZ *= r; if (mOneWay) { if (!mB.fixed()) { mB.force().add(-2 * a2bX, -2 * a2bY, -2 * a2bZ); } } else { if (!mA.fixed()) { mA.force().add(a2bX, a2bY, a2bZ); } if (!mB.fixed()) { mB.force().add(-a2bX, -a2bY, -a2bZ); } } // } }