Переглянути джерело

- Performance increase for PointForceController.

MelvMay-GG 12 роки тому
батько
коміт
9259322e2b
1 змінених файлів з 8 додано та 3 видалено
  1. 8 3
      engine/source/2d/controllers/PointForceController.cc

+ 8 - 3
engine/source/2d/controllers/PointForceController.cc

@@ -109,6 +109,13 @@ void PointForceController::integrate( Scene* pScene, const F32 totalTime, const
     // Fetch result count.
     const U32 resultCount = (U32)queryResults.size();
 
+    // Finish if nothing to process.
+    if ( resultCount == 0 )
+        return;
+
+    // Calculate the radius squared.
+    const F32 radiusSqr = mRadius * mRadius;
+
     // Calculate the force squared in-case we need it.
     const F32 forceSqr = mForce * mForce;
 
@@ -116,8 +123,6 @@ void PointForceController::integrate( Scene* pScene, const F32 totalTime, const
     const F32 linearDrag = mClampF( mLinearDrag, 0.0f, 1.0f ) * elapsedTime;
     const F32 angularDrag = mClampF( mAngularDrag, 0.0f, 1.0f ) * elapsedTime;
 
-    // Calculate 
-
     // Iterate the results.
     for ( U32 n = 0; n < resultCount; n++ )
     {
@@ -132,7 +137,7 @@ void PointForceController::integrate( Scene* pScene, const F32 totalTime, const
         Vector2 distanceForce = mPosition - pSceneObject->getPosition();
 
         // Skip if the position is outside the radius.
-        if ( distanceForce.Length() > mRadius )
+        if ( distanceForce.LengthSquared() > radiusSqr )
             continue;
 
         // Non-Linear force?