Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

Ignore:
Timestamp:
Mar 21, 2009, 8:47:11 PM (16 years ago)
Author:
rgrieder
Message:

Upgrade number two for the InputManager: An InputState can have two new properties. You can tell it to always receive input, no matter what the input stack actually is. Secondly there is a 'transparent' option to be kind of invisible to the other states. I have found no use yet, but three more lines weren't a big deal ;)
This change ultimately supersedes the need for a master InputState.

Location:
code/branches/gui/src/orxonox/gamestates
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • code/branches/gui/src/orxonox/gamestates/GSGraphics.cc

    r2805 r2816  
    3939#include "core/input/InputManager.h"
    4040#include "core/input/KeyBinder.h"
    41 #include "core/input/ExtendedInputState.h"
     41#include "core/input/SimpleInputState.h"
    4242#include "core/Loader.h"
    4343#include "core/XMLFile.h"
     
    5757        , graphicsManager_(0)
    5858        , masterKeyBinder_(0)
     59        , masterInputState_(0)
    5960        , debugOverlay_(0)
    6061    {
     
    9192        renderWindow->getCustomAttribute("WINDOW", &windowHnd);
    9293        inputManager_->initialise(windowHnd, renderWindow->getWidth(), renderWindow->getHeight(), true);
    93         // Configure master input state with a KeyBinder
     94
     95        masterInputState_ = InputManager::getInstance().createInputState<SimpleInputState>("master", true);
    9496        masterKeyBinder_ = new KeyBinder();
    9597        masterKeyBinder_->loadBindings("masterKeybindings.ini");
    96         inputManager_->getMasterInputState()->addKeyHandler(masterKeyBinder_);
     98        masterInputState_->setKeyHandler(masterKeyBinder_);
    9799
    98100        // Load the InGameConsole
     
    103105        guiManager_ = new GUIManager();
    104106        guiManager_->initialise(renderWindow);
     107
     108        InputManager::getInstance().requestEnterState("master");
    105109    }
    106110
    107111    void GSGraphics::leave()
    108112    {
     113        if (Core::showsGraphics())
     114            InputManager::getInstance().requestLeaveState("master");
     115
    109116        delete this->guiManager_;
    110117
     
    119126
    120127        delete graphicsManager_;
     128
     129        if (Core::showsGraphics())
     130        {
     131            masterInputState_->setHandler(0);
     132            InputManager::getInstance().requestDestroyState("master");
     133            if (this->masterKeyBinder_)
     134            {
     135                delete this->masterKeyBinder_;
     136                this->masterKeyBinder_ = 0;
     137            }
     138        }
    121139    }
    122140
  • code/branches/gui/src/orxonox/gamestates/GSGraphics.h

    r2801 r2816  
    6565
    6666        KeyBinder*            masterKeyBinder_;
     67        SimpleInputState*     masterInputState_;
    6768        XMLFile*              debugOverlay_;
    6869    };
Note: See TracChangeset for help on using the changeset viewer.