Well, I have tried the matrix translation, and it has the same results as just modifying the angle.x,y,z the setabsangle() I'm applying these rotations to the air boat. Does the vehicle handle things differently? Any other thoughts?
Here is the code I am using: void CPropAirboat::DriveVehicle( float flFrameTime, CUserCmd *ucmd, int iButtonsDown, int iButtonsReleased ) { CBaseEntity *pDriver = GetDriver(); CBasePlayer *pPlayerDriver; if( pDriver && pDriver->IsPlayer() ) { pPlayerDriver = dynamic_cast<CBasePlayer*>(pDriver); } matrix3x4_t currentRotation, incrementalRotation, nextRotation; QAngle angles = this->GetAbsAngles(); AngleMatrix( angles, currentRotation ); // compute an incremental 1 degree of roll AngleMatrix( QAngle( ucmd->mousedx, 0, 0 ), incrementalRotation ); ConcatTransforms( incrementalRotation, currentRotation, nextRotation ); MatrixAngles( nextRotation, angles ); SetAbsAngles( angles ); angles = this->GetAbsAngles(); AngleMatrix( angles, currentRotation ); // compute an incremental 1 degree of pitch AngleMatrix( QAngle( 0, 0, ucmd->mousedy ), incrementalRotation ); ConcatTransforms( incrementalRotation, currentRotation, nextRotation ); MatrixAngles( nextRotation, angles ); SetAbsAngles( angles ); //m_VehiclePhysics.UpdateDriverControls( ucmd, TICK_INTERVAL ); // Create splashes. // Save this data. m_flThrottle = m_VehiclePhysics.GetThrottle(); m_nSpeed = m_VehiclePhysics.GetSpeed(); m_nRPM = m_VehiclePhysics.GetRPM(); } -- Best regards, Dan http://www.lnxmad.com _______________________________________________ To unsubscribe, edit your list preferences, or view the list archives, please visit: http://list.valvesoftware.com/mailman/listinfo/hlcoders