Fix GroundCover banking with camera

Fix for issue https://github.com/GarageGames/Torque3D/issues/527
This commit is contained in:
DavidWyand-GG 2013-11-11 15:03:45 -05:00
parent ea2592a83d
commit 3be3cc6589

View file

@ -1572,12 +1572,20 @@ void GroundCover::prepRenderImage( SceneRenderState *state )
mShaderConstData.gustInfo.set( mWindGustLength, mWindGustFrequency * simTime, mWindGustStrength );
mShaderConstData.turbInfo.set( mWindTurbulenceFrequency * simTime, mWindTurbulenceStrength );
// Use the camera's forward vector to calculate the camera's right
// and up vectors. This removes any camera banking from affecting
// the ground cover.
const MatrixF &camMat = state->getDiffuseCameraTransform();
Point3F camDir, camUp, camRight;
camMat.getColumn( 1, &camDir );
camMat.getColumn( 2, &camUp );
camMat.getColumn( 0, &camRight );
mCross( camDir, Point3F::UnitZ, &camRight );
if ( camRight.magnitudeSafe() == 0.0f )
{
camRight.set( 0.0f, -1.0f, 0.0f );
}
camRight.normalizeSafe();
mCross( camRight, camDir, &camUp );
// Limit the camera up vector to keep the billboards
// from leaning too far down into the terrain.