/* ================ idDict::GetAngles ================ */ bool idDict::GetAngles( const char *key, const char *defaultString, idAngles &out ) const { bool found; const char *s; if( !defaultString ) { defaultString = "0 0 0"; } found = GetString( key, defaultString, &s ); out.Zero(); sscanf( s, "%f %f %f", &out.pitch, &out.yaw, &out.roll ); return found; }
// RAVEN BEGIN // jnewquist: Controller rumble void idPlayerView::ShakeOffsets( idVec3 &shakeOffset, idAngles &shakeAngleOffset, const idBounds bounds ) const { float shakeVolume = 0.0f; shakeOffset.Zero(); shakeAngleOffset.Zero(); if( gameLocal.isMultiplayer ) { return; } shakeVolume = CalculateShake( shakeAngleOffset ); if( gameLocal.time < shakeFinishTime ) { float offset = ( shakeFinishTime - gameLocal.time ) * shakeScale * 0.001f; shakeOffset[0] = idMath::ClampFloat( bounds[0][0] - 1.0f, bounds[1][0] + 1.0f, rvRandom::flrand( -offset, offset ) ); shakeOffset[1] = idMath::ClampFloat( bounds[0][1] - 1.0f, bounds[1][1] + 1.0f, rvRandom::flrand( -offset, offset ) ); shakeOffset[2] = idMath::ClampFloat( bounds[0][2] - 1.0f, bounds[1][2] + 1.0f, rvRandom::flrand( -offset, offset ) ); shakeAngleOffset[0] = idMath::ClampFloat( -70.0f, 70.0f, rvRandom::flrand( -offset, offset ) ); shakeAngleOffset[1] = idMath::ClampFloat( -70.0f, 70.0f, rvRandom::flrand( -offset, offset ) ); shakeAngleOffset[2] = idMath::ClampFloat( -70.0f, 70.0f, rvRandom::flrand( -offset, offset ) ); } }