From: <de...@us...> - 2003-01-11 10:48:04
|
Update of /cvsroot/csp/APPLICATIONS/CSPFlightSim/Source In directory sc8-pr-cvs1:/tmp/cvs-serv21730 Modified Files: AirplaneInput.cpp Log Message: Cleaning code Adding Smooth method Index: AirplaneInput.cpp =================================================================== RCS file: /cvsroot/csp/APPLICATIONS/CSPFlightSim/Source/AirplaneInput.cpp,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** AirplaneInput.cpp 12 Dec 2002 21:13:45 -0000 1.3 --- AirplaneInput.cpp 11 Jan 2003 10:48:01 -0000 1.4 *************** *** 4,7 **** --- 4,9 ---- #include "AirplaneObject.h" + extern double frameSeconds(); + double const AirplaneInput::offsetControl = 0.05; *************** *** 12,38 **** m_foffsetRudder = 0.0; m_foffsetThrottle = 0.0; } ! void AirplaneInput::SetObject(BaseObject * pObject) { m_pAirplaneObject = dynamic_cast<AirplaneObject* >(pObject); } double AirplaneInput::Clamp(double p_setting) const { ! if ( p_setting < - 1.0) ! p_setting = - 1.0; ! else ! if ( p_setting > 1.0 ) ! p_setting = 1.0; ! return p_setting; } ! void AirplaneInput::OnUpdate() const { if (m_foffsetAileron != 0.0) { double setting = m_pAirplaneObject->getAileron() + m_foffsetAileron; ! setting = Clamp(setting); m_pAirplaneObject->setAileron( setting ); } --- 14,49 ---- m_foffsetRudder = 0.0; m_foffsetThrottle = 0.0; + m_oldsetting = 0.0; } ! void AirplaneInput::SetObject(BaseObject * pObject) { m_pAirplaneObject = dynamic_cast<AirplaneObject* >(pObject); } + double AirplaneInput::Smooth(double p_setting) + { + double u = 0.8 * frameSeconds(); + p_setting = u * m_oldsetting + (1.0 - u) * p_setting; + m_oldsetting = p_setting; + return p_setting; + } + double AirplaneInput::Clamp(double p_setting) const { ! if ( p_setting < - 1.0) ! p_setting = - 1.0; ! else ! if ( p_setting > 1.0 ) ! p_setting = 1.0; ! return p_setting; } ! void AirplaneInput::OnUpdate() { if (m_foffsetAileron != 0.0) { double setting = m_pAirplaneObject->getAileron() + m_foffsetAileron; ! setting = Smooth(Clamp(setting)); m_pAirplaneObject->setAileron( setting ); } *************** *** 42,46 **** { double setting = m_pAirplaneObject->getElevator() + m_foffsetElevator; ! setting = Clamp(setting); m_pAirplaneObject->setElevator( setting ); } --- 53,57 ---- { double setting = m_pAirplaneObject->getElevator() + m_foffsetElevator; ! setting = Smooth(Clamp(setting)); m_pAirplaneObject->setElevator( setting ); } *************** *** 50,54 **** { double setting = m_pAirplaneObject->getRudder() + m_foffsetRudder; ! setting = Clamp(setting); m_pAirplaneObject->setRudder( setting ); } --- 61,65 ---- { double setting = m_pAirplaneObject->getRudder() + m_foffsetRudder; ! setting = Smooth(Clamp(setting)); m_pAirplaneObject->setRudder( setting ); } *************** *** 57,61 **** { double setting = m_pAirplaneObject->getThrottle() + m_foffsetThrottle; ! setting = Clamp(setting); m_pAirplaneObject->setThrottle( setting ); } --- 68,72 ---- { double setting = m_pAirplaneObject->getThrottle() + m_foffsetThrottle; ! setting = Smooth(Clamp(setting)); m_pAirplaneObject->setThrottle( setting ); } *************** *** 147,151 **** << ", axis: " << axis << ", val: " << val ); ! float setting = val / 32768.0; switch ( joynum ) --- 158,162 ---- << ", axis: " << axis << ", val: " << val ); ! float setting = Smooth(val / 32768.0); switch ( joynum ) |