Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

Ignore:
Timestamp:
May 25, 2008, 8:29:05 PM (16 years ago)
Author:
rgrieder
Message:
  • added a little text box to the HUD that says how much of the main loop we spend with rendering. (can easily be commented)
  • fixed a bug in KeyBinder.cc
Location:
code/branches/network/src/core
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • code/branches/network/src/core/InputManager.cc

    r1414 r1422  
    5252  InputManager::InputManager() :
    5353      inputSystem_(0), keyboard_(0), mouse_(0),
    54       keyBinder_(0), buffer_(0),
    5554      joySticksSize_(0),
     55      keyBinder_(0), buffer_(0), keyDetector_(0),
    5656      state_(IS_UNINIT), stateRequest_(IS_UNINIT),
    5757      keyboardModifiers_(0)
  • code/branches/network/src/core/KeyBinder.cc

    r1420 r1422  
    4646{
    4747  // ###############################
    48   // ######      Button       ######
    49   // ###############################
    50 
     48  // ###  BufferedParamCommand   ###
     49  // ###############################
     50
     51  /**
     52  * Executes a buffered command. This is used for commands with additional
     53  * parameters.
     54  * @return True if command execution was successful or value was zero.
     55  */
    5156  bool BufferedParamCommand::execute()
    5257  {
     
    6469  }
    6570
     71  // ###############################
     72  // #####    SimpleCommand    #####
     73  // ###############################
     74
     75  /**
     76  * Executes a simple command with no additional paramters.
     77  * @return True if command execution was successful, false otherwise.
     78  */
    6679  bool SimpleCommand::execute(float abs, float rel)
    6780  {
     
    6982  }
    7083
     84  // ###############################
     85  // #####    ParamCommand     #####
     86  // ###############################
     87
     88  /**
     89  * Executes a parameter command. The commmand string is not directly executed,
     90  * but instead stored in a buffer list so that values can be combined.
     91  * @return Always true.
     92  */
    7193  bool ParamCommand::execute(float abs, float rel)
    7294  {
    73     BufferedParamCommand& paramCommand = *paramCommand_;
     95    BufferedParamCommand& cmd = *paramCommand_;
    7496    // command has an additional parameter
    75     if (bRelative_ && (rel > 0 || rel < 0))
    76     {
    77       // we have to calculate a relative movement.
    78       // paramModifier_ says how much one keystroke is
    79       paramCommand.value_ += paramModifier_ * rel;
    80     }
    81     else if (abs > 0 || abs < 0)
    82     {
    83       // we have to calculate absolute position of the axis.
    84       // Since there might be another axis that is affected, we have to wait and
    85       // store the result in a temporary place
    86       paramCommand.value_ = (paramCommand.value_ * paramCommand.nValuesAdded_ + paramModifier_ * abs)
    87                             /++paramCommand.nValuesAdded_;
     97    if (bRelative_)
     98    {
     99      if (rel != 0.0f)
     100      {
     101        // we have to calculate a relative movement.
     102        // paramModifier_ says how much one keystroke is
     103        cmd.value_ += paramModifier_ * rel;
     104      }
     105    }
     106    else if (abs != 0.0f)
     107    {
     108      // Usually, joy sticks create 'noise' (they return values if they're in 0 position)
     109      // and normally this is caught in tickInput(), but that threshold cannot be to high
     110      // in order to preserve accuracy. Instead, we have to catch the problem here. An example:
     111      // Someone only uses buttons with an active joystick. The joy stick value could then
     112      // be 0.05 for instance and the the key value 1. Without handling the problem, the final
     113      // value would be computed to (1+0.05)/2=0.5025 which is not what the user expects.
     114      float absQ = abs * abs;
     115      float valueQ = cmd.value_ * cmd.value_;
     116      if (absQ > 50.0f * valueQ) // ease up comparison by using quadratics
     117      {
     118        cmd.value_ = abs * paramModifier_;
     119        cmd.nValuesAdded_ = 1;
     120      }
     121      else if (absQ * 50.0f < valueQ)
     122      {
     123        // abs is too small, we just don't do anything
     124      }
     125      else
     126      {
     127        // we have to calculate the absolute position of the axis.
     128        // Since there might be another axis that is affected, we have to wait and
     129        // store the result in a temporary place
     130        cmd.value_ = (cmd.value_ * cmd.nValuesAdded_ + paramModifier_ * abs) / ++cmd.nValuesAdded_;
     131      }
    88132    }
    89133    return true;
    90134  }
     135
     136  // ###############################
     137  // #####       Button        #####
     138  // ###############################
    91139
    92140  void Button::clear()
     
    259307    return true;
    260308  }
     309
     310  // ###############################
     311  // #####      HalfAxis       #####
     312  // ###############################
    261313
    262314  void HalfAxis::clear()
     
    494546    SetConfigValue(mouseSensitivity_, 1.0f)  .description("Mouse sensitivity.");
    495547    SetConfigValue(bDeriveMouseInput_, false).description("Whether or not to derive moues movement for the absolute value.");
    496     SetConfigValue(derivePeriod_, 0.1f).description("Accuracy of the mouse input deriver. The higher the more precise, but laggier.");
     548    SetConfigValue(derivePeriod_, 0.5f).description("Accuracy of the mouse input deriver. The higher the more precise, but laggier.");
    497549    SetConfigValue(mouseSensitivityDerived_, 1.0f).description("Mouse sensitivity if mouse input is derived.");
    498550
Note: See TracChangeset for help on using the changeset viewer.