FarseerPhysics.Dynamics.Contacts.ContactSolver.warmStart C# (CSharp) Method

warmStart() public method

public warmStart ( ) : void
return void
		public void warmStart()
		{
			// Warm start.
			for( int i = 0; i < _count; ++i )
			{
				ContactVelocityConstraint vc = _velocityConstraints[i];

				int indexA = vc.indexA;
				int indexB = vc.indexB;
				float mA = vc.invMassA;
				float iA = vc.invIA;
				float mB = vc.invMassB;
				float iB = vc.invIB;
				int pointCount = vc.pointCount;

				Vector2 vA = _velocities[indexA].v;
				float wA = _velocities[indexA].w;
				Vector2 vB = _velocities[indexB].v;
				float wB = _velocities[indexB].w;

				Vector2 normal = vc.normal;
				Vector2 tangent = MathUtils.cross( normal, 1.0f );

				for( int j = 0; j < pointCount; ++j )
				{
					VelocityConstraintPoint vcp = vc.points[j];
					Vector2 P = vcp.normalImpulse * normal + vcp.tangentImpulse * tangent;
					wA -= iA * MathUtils.cross( vcp.rA, P );
					vA -= mA * P;
					wB += iB * MathUtils.cross( vcp.rB, P );
					vB += mB * P;
				}

				_velocities[indexA].v = vA;
				_velocities[indexA].w = wA;
				_velocities[indexB].v = vB;
				_velocities[indexB].w = wB;
			}
		}