strook
10-02-2011 08:23:07
i have this code:
if i activate the <-------------- commented out functions, the program will crash at starting up the input manager.
what did i do wrong?
how do i get the pointer moving'?
header:
...
MyGUI::InputManager* mMyGUIInputManager;
...
source:
void InputManager::setMousePosition(int _x, int _y)
{
//const OIS::MouseState &ms = mMouse->getMouseState();
mCursorX = _x;
mCursorY = _y;
checkPosition();
}
void InputManager::checkPosition()
{
const OIS::MouseState& ms = mMouse->getMouseState();
if (mCursorX < 0)
mCursorX = 0;
else if (mCursorX >= ms.width)
mCursorX = ms.width - 1;
if (mCursorY < 0)
mCursorY = 0;
else if (mCursorY >= ms.height)
mCursorY = ms.height - 1;
}
void InputManager::updateCursorPosition()
{
const OIS::MouseState& ms = mMouse->getMouseState();
injectMouseMove(mCursorX, mCursorY, ms.Z.abs);
}
void InputManager::injectMouseMove(int _absx, int _absy, int _absz)
{
setMousePosition(_absx, _absy);
// mMyGUIInputManager->injectMouseMove(_absx, _absy, _absz); <-----------------------------
}
void InputManager::injectMousePress(int _absx, int _absy, MyGUI::MouseButton _id)
{
const OIS::MouseState &ms = mMouse->getMouseState();
OIS::MouseEvent event( NULL, ms );
if(ms.buttonDown(OIS::MouseButtonID(event.state.buttons)))
{
mousePressed( event, OIS::MouseButtonID(event.state.buttons));
}
}
startup:
void InputManager::createInput(size_t _handle, MyGUI::Gui* mGUI )
{
pmygui = mGUI;
std::ostringstream windowHndStr;
windowHndStr << _handle;
OIS::ParamList pl;
pl.insert(std::make_pair(std::string("w32_mouse"), std::string("DISCL_FOREGROUND" )));
pl.insert(std::make_pair(std::string("w32_keyboard"), std::string("DISCL_FOREGROUND")));
pl.insert(std::make_pair(std::string("x11_mouse_grab"), std::string("false")));
pl.insert(std::make_pair(std::string("WINDOW"), windowHndStr.str()));
mInputManager = OIS::InputManager::createInputSystem(pl);
mKeyboard = static_cast<OIS::Keyboard*>(mInputManager->createInputObject( OIS::OISKeyboard, true ));
mKeyboard->setEventCallback(this);
mMouse = static_cast<OIS::Mouse*>(mInputManager->createInputObject( OIS::OISMouse, true ));
mMouse->setEventCallback(this);
// mMyGUIInputManager = new MyGUI::InputManager(); <-------------------
// mMyGUIInputManager->initialise(); <------------------------
}
if i activate the <-------------- commented out functions, the program will crash at starting up the input manager.
what did i do wrong?
how do i get the pointer moving'?