21        float       aDiff = pModel.m_fHeadingAngle - pModel.m_fOrientationAngle;
 
   33        if (pLastHeadingDiff < -Math.PI_HALF && aDiff > 0)
 
   36            pLastHeadingDiff        = aDiff;
 
   37            pModel.m_fHeadingAngle  = pModel.m_fOrientationAngle + aDiff;
 
   43        else if (pLastHeadingDiff > 
Math.
PI_HALF && aDiff < 0)
 
   46            pLastHeadingDiff        = aDiff;
 
   47            pModel.m_fHeadingAngle  = pModel.m_fOrientationAngle + aDiff;
 
   54        pLastHeadingDiff    = aDiff;
 
 
  129    protected static float ClampAngle(
float angle, HeadingRestrictData restrictData)
 
  133        if (restrictData.m_RestrictedR > restrictData.m_RestrictedL)
 
  135            if (angle > restrictData.m_RestrictedL && angle < restrictData.m_RestrictedR)
 
  144                if (angle > restrictData.m_RestrictedR + 90 * 
Math.
DEG2RAD)   
 
  145                    return restrictData.m_RestrictedL;
 
  146                else if (angle < restrictData.m_RestrictedL - 90 * 
Math.
DEG2RAD)
 
  147                    return restrictData.m_RestrictedR;
 
  149                return Math.
Clamp(angle, restrictData.m_RestrictedL, restrictData.m_RestrictedR);  
 
  152        else if (restrictData.m_RestrictedR < restrictData.m_RestrictedL) 
 
  154            if ((angle >= -180 && angle < restrictData.m_RestrictedR) || (angle <= 180 && angle > restrictData.m_RestrictedL))
 
  165                    testOtherDir = 
Math.
AbsFloat(restrictData.m_RestrictedR - angle);
 
  166                    if (testOtherDir < restrictData.m_AngleRangeInverted - testOtherDir)
 
  167                        return restrictData.m_RestrictedR;
 
  169                        return restrictData.m_RestrictedL;
 
  173                    testOtherDir = 
Math.
AbsFloat(restrictData.m_RestrictedL - angle);
 
  174                    if (testOtherDir < restrictData.m_AngleRangeInverted - testOtherDir)
 
  175                        return restrictData.m_RestrictedL;
 
  177                        return restrictData.m_RestrictedR;