diff options
Diffstat (limited to 'mp/src/mathlib')
| -rw-r--r-- | mp/src/mathlib/mathlib_base.cpp | 4 | ||||
| -rw-r--r-- | mp/src/mathlib/vmatrix.cpp | 22 |
2 files changed, 23 insertions, 3 deletions
diff --git a/mp/src/mathlib/mathlib_base.cpp b/mp/src/mathlib/mathlib_base.cpp index a403ccfa..15c51963 100644 --- a/mp/src/mathlib/mathlib_base.cpp +++ b/mp/src/mathlib/mathlib_base.cpp @@ -4244,7 +4244,7 @@ FPExceptionDisabler::FPExceptionDisabler() // Retrieve the current state of the exception flags. This // must be done before changing them. _MCW_EM is a bit // mask representing all available exception masks. - _controlfp_s(&mOldValues, _MCW_EM, _MCW_EM); + _controlfp_s(&mOldValues, 0, 0); // Set all of the exception flags, which suppresses FP // exceptions on the x87 and SSE units. _controlfp_s(0, _MCW_EM, _MCW_EM); @@ -4269,7 +4269,7 @@ FPExceptionEnabler::FPExceptionEnabler(unsigned int enableBits /*= _EM_OVERFLOW // Retrieve the current state of the exception flags. This // must be done before changing them. _MCW_EM is a bit // mask representing all available exception masks. - _controlfp_s(&mOldValues, _MCW_EM, _MCW_EM); + _controlfp_s(&mOldValues, 0, 0); // Make sure no non-exception flags have been specified, // to avoid accidental changing of rounding modes, etc. diff --git a/mp/src/mathlib/vmatrix.cpp b/mp/src/mathlib/vmatrix.cpp index 1cd316f3..e99fae2a 100644 --- a/mp/src/mathlib/vmatrix.cpp +++ b/mp/src/mathlib/vmatrix.cpp @@ -507,7 +507,7 @@ bool VMatrix::IsRotationMatrix() const FloatMakePositive( v2.Dot(v3) ) < 0.01f; } -void VMatrix::SetupMatrixOrgAngles( const Vector &origin, const QAngle &vAngles ) +static void SetupMatrixAnglesInternal( vec_t m[4][4], const QAngle & vAngles ) { float sr, sp, sy, cr, cp, cy; @@ -528,6 +528,11 @@ void VMatrix::SetupMatrixOrgAngles( const Vector &origin, const QAngle &vAngles m[0][3] = 0.f; m[1][3] = 0.f; m[2][3] = 0.f; +} + +void VMatrix::SetupMatrixOrgAngles( const Vector &origin, const QAngle &vAngles ) +{ + SetupMatrixAnglesInternal( m, vAngles ); // Add translation m[0][3] = origin.x; @@ -540,6 +545,21 @@ void VMatrix::SetupMatrixOrgAngles( const Vector &origin, const QAngle &vAngles } +void VMatrix::SetupMatrixAngles( const QAngle &vAngles ) +{ + SetupMatrixAnglesInternal( m, vAngles ); + + // Zero everything else + m[0][3] = 0.0f; + m[1][3] = 0.0f; + m[2][3] = 0.0f; + m[3][0] = 0.0f; + m[3][1] = 0.0f; + m[3][2] = 0.0f; + m[3][3] = 1.0f; +} + + //----------------------------------------------------------------------------- // Sets matrix to identity //----------------------------------------------------------------------------- |