Changeset 1422
- Timestamp:
- May 25, 2008, 8:29:05 PM (17 years ago)
- Location:
- code/branches/network
- Files:
-
- 6 edited
Legend:
- Unmodified
- Added
- Removed
-
code/branches/network/src/core/InputManager.cc
r1414 r1422 52 52 InputManager::InputManager() : 53 53 inputSystem_(0), keyboard_(0), mouse_(0), 54 keyBinder_(0), buffer_(0),55 54 joySticksSize_(0), 55 keyBinder_(0), buffer_(0), keyDetector_(0), 56 56 state_(IS_UNINIT), stateRequest_(IS_UNINIT), 57 57 keyboardModifiers_(0) -
code/branches/network/src/core/KeyBinder.cc
r1420 r1422 46 46 { 47 47 // ############################### 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 */ 51 56 bool BufferedParamCommand::execute() 52 57 { … … 64 69 } 65 70 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 */ 66 79 bool SimpleCommand::execute(float abs, float rel) 67 80 { … … 69 82 } 70 83 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 */ 71 93 bool ParamCommand::execute(float abs, float rel) 72 94 { 73 BufferedParamCommand& paramCommand = *paramCommand_;95 BufferedParamCommand& cmd = *paramCommand_; 74 96 // 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 } 88 132 } 89 133 return true; 90 134 } 135 136 // ############################### 137 // ##### Button ##### 138 // ############################### 91 139 92 140 void Button::clear() … … 259 307 return true; 260 308 } 309 310 // ############################### 311 // ##### HalfAxis ##### 312 // ############################### 261 313 262 314 void HalfAxis::clear() … … 494 546 SetConfigValue(mouseSensitivity_, 1.0f) .description("Mouse sensitivity."); 495 547 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."); 497 549 SetConfigValue(mouseSensitivityDerived_, 1.0f).description("Mouse sensitivity if mouse input is derived."); 498 550 -
code/branches/network/src/orxonox/Orxonox.cc
r1414 r1422 466 466 timer_->reset(); 467 467 468 float renderTime = 0.0f; 469 float frameTime = 0.0f; 470 clock_t time = 0; 471 468 472 COUT(3) << "Orxonox: Starting the main loop." << std::endl; 469 473 while (!bAbort_) … … 480 484 evt.timeSinceLastEvent = calculateEventTime(now, eventTimes[0]); 481 485 evt.timeSinceLastFrame = calculateEventTime(now, eventTimes[1]); 486 frameTime += evt.timeSinceLastFrame; 482 487 483 488 // show the current time in the HUD 484 489 // HUD::getSingleton().setTime(now); 490 if (frameTime > 0.4f) 491 { 492 HUD::getSingleton().setRenderTimeRatio(renderTime / frameTime); 493 frameTime = 0.0f; 494 renderTime = 0.0f; 495 } 485 496 486 497 // Call those objects that need the real time 498 for (Iterator<TickableReal> it = ObjectList<TickableReal>::start(); it; ++it) 499 it->tick((float)evt.timeSinceLastFrame); 500 // Call the scene objects 487 501 for (Iterator<Tickable> it = ObjectList<Tickable>::start(); it; ++it) 488 502 it->tick((float)evt.timeSinceLastFrame * this->timefactor_); 489 // Call the scene objects490 for (Iterator<TickableReal> it = ObjectList<TickableReal>::start(); it; ++it)491 it->tick((float)evt.timeSinceLastFrame);492 503 // TODO: currently a hack. Somehow the console doesn't work with OrxonoxClass 493 504 orxonoxConsole_->tick((float)evt.timeSinceLastFrame); … … 497 508 ogreRoot._fireFrameStarted(evt); 498 509 499 ogreRoot._updateAllRenderTargets(); // only render in non-server mode500 501 510 // get current time 502 511 now = timer_->getMilliseconds(); 512 calculateEventTime(now, eventTimes[2]); 513 514 ogreRoot._updateAllRenderTargets(); // only render in non-server mode 515 516 // get current time 517 now = timer_->getMilliseconds(); 503 518 504 519 // create an event to pass to the frameEnded method in ogre 505 520 evt.timeSinceLastEvent = calculateEventTime(now, eventTimes[0]); 506 evt.timeSinceLastFrame= calculateEventTime(now, eventTimes[2]);521 renderTime += calculateEventTime(now, eventTimes[2]); 507 522 508 523 // again, just to be sure ogre works fine -
code/branches/network/src/orxonox/hud/HUD.cc
r1414 r1422 75 75 fpsText->setCaption("init"); 76 76 77 // creating text to display render time ratio 78 rTRText = static_cast<TextAreaOverlayElement*>(om->createOverlayElement("TextArea", "rTRText")); 79 rTRText->show(); 80 rTRText->setMetricsMode(Ogre::GMM_PIXELS); 81 rTRText->setDimensions(0.001, 0.001); 82 rTRText->setPosition(10, 30); 83 rTRText->setFontName("Console"); 84 rTRText->setCharHeight(20); 85 rTRText->setCaption("init"); 86 77 87 // create energy bar 78 88 energyBar = static_cast<BarOverlayElement*>(om->createOverlayElement("Bar", "energyBar")); … … 99 109 container->setMetricsMode(Ogre::GMM_RELATIVE); 100 110 container->addChild(fpsText); 111 container->addChild(rTRText); 101 112 102 113 energyBar->init(0.01, 0.94, 0.4, container); … … 133 144 float fps = GraphicsEngine::getSingleton().getAverageFPS(); 134 145 fpsText->setCaption("FPS: " + Ogre::StringConverter::toString(fps)); 146 } 147 148 void HUD::setRenderTimeRatio(float ratio) 149 { 150 rTRText->setCaption("Render time ratio: " + Ogre::StringConverter::toString(ratio)); 135 151 } 136 152 -
code/branches/network/src/orxonox/hud/HUD.h
r1414 r1422 49 49 Ogre::OverlayContainer* container; 50 50 Ogre::TextAreaOverlayElement* fpsText; 51 Ogre::TextAreaOverlayElement* rTRText; 51 52 BarOverlayElement* energyBar; 52 53 BarOverlayElement* speedoBar; … … 60 61 void addRadarObject(Vector3 pos); 61 62 RadarObject* getFirstRadarObject(); 63 void setRenderTimeRatio(float ratio); 62 64 63 65 static HUD* instance_s; -
code/branches/network/visual_studio/base_properties_release.vsprops
r1024 r1422 9 9 Name="VCCLCompilerTool" 10 10 Optimization="2" 11 WholeProgramOptimization=" true"11 WholeProgramOptimization="false" 12 12 PreprocessorDefinitions="NDEBUG" 13 13 RuntimeLibrary="2"
Note: See TracChangeset
for help on using the changeset viewer.