Mercurial > hg > Members > e075743
view src/KeyboardEventHandler.h @ 10:5727d511a13a
add src in Martial Project Xcode.
author | tokumoritaichirou@nw0743.st.ie.u-ryukyu.ac.jp |
---|---|
date | Wed, 03 Feb 2010 03:39:04 +0900 |
parents | |
children |
line wrap: on
line source
#ifndef KEYBOARD_HANDLER_H #define KEYBOARD_HANDLER_H #include <iostream> #include <osgGA/GUIEventHandler> class Player; /*! @header KeyboardHandler @abstract Keyboard入力のコールバック関数を司るクラス @discussion Keyboardの入力とPlayer(インターフェース)を実装したクラスの関数のポインタをハッシュで保持 */ class KeyboardEventHandler : public osgGA::GUIEventHandler { public: /*! @typedef functionType @abstract Playerの仮想関数へのポインタ */ typedef void (Player::*functionType)(); /*! @enum keyStatusType @abstract Key入力の状態 @constant KEY_UP ボタンを入力 @constant KEY_UP ボタンを解放 */ enum keyStatusType { KEY_UP, KEY_DOWN }; /*! @function addFunction @abstract コールバック関数の登録 @param whatKey キー入力の値(ascii) @param newFunction 登録する関数のポインタ @param target 関数を実行するインスタンス */ bool addFunction(int whatKey, functionType newFunction, Player *player); bool addFunction(int whatKey, keyStatusType keyPressStatus, functionType newFunction, Player *player); virtual bool handle(const osgGA::GUIEventAdapter& ea,osgGA::GUIActionAdapter&); virtual void accept(osgGA::GUIEventHandlerVisitor& v) { v.visit(*this); }; protected: /*! @struct functionStatusType @abstract Playerの関数登録の引数 @field target 関数を呼び出すPlayerのインスタンス */ struct functionStatusType { functionStatusType() {keyState = KEY_UP; keyFunction = NULL;} functionType keyFunction; keyStatusType keyState; Player* target; }; /*! @typedef keyFunctionMap @abstract コールバック関数とキー入力のハッシュ */ typedef std::map<int, functionStatusType> keyFunctionMap; /*! @var keyFunctionMap ボタン押し時のコールバック関数のハッシュ */ keyFunctionMap keyFuncMap; /*! @var keyFunctionMap ボタン押し時のコールバック関数のハッシュ */ keyFunctionMap keyUPFuncMap; }; #endif