Hallo!
Ich hab jetzt das Kontext-Menü soweit zum laufen gebracht, dass es zwar angezeigt wird, jedoch kann man dort kein Element ansteuern (es wird nicht hervorgehoben - es reagiert nicht).
Das ganze Programm basiert auf der Irrlicht Demo - zum lernen versuche ich es an meine Vorstellungen anzupassen - ein KM gehört leider absolut dazu...
Naja hier der (geklaute) Code:
Code:
bool CDemo::OnEvent(SEvent event)
{
if (!device)
return false;
if (event.EventType == EET_KEY_INPUT_EVENT &&
event.KeyInput.Key == KEY_ESCAPE &&
event.KeyInput.PressedDown == false)
{
// user wants to quit.
if (currentScene < 3)
timeForThisScene = 0;
else
device->closeDevice();
}
else
if ((event.EventType == EET_KEY_INPUT_EVENT &&
event.KeyInput.Key == KEY_SPACE &&
event.KeyInput.PressedDown == false) &&
currentScene == 3)
{
// shoot
shoot();
}
else
if((event.EventType == EET_MOUSE_INPUT_EVENT &&
event.MouseInput.Event == EMIE_LMOUSE_LEFT_UP) &&
currentScene == 3)
{
}
else
if ((event.EventType == EET_MOUSE_INPUT_EVENT &&
event.MouseInput.Event == EMIE_RMOUSE_LEFT_UP) &&
currentScene == 3)
{
//Kontext-Menü fade in
core::rect<s32> r(320, 240, 0, 0);
gui::IGUIContextMenu* cmnu = device->getGUIEnvironment()->addContextMenu(r, 0, 100);
cmnu->addItem(L"Schauen",101);
cmnu->addItem(L"Benutzen",102);
cmnu->addItem(L"Nehmen",103);
cmnu->addItem(L"Sprechen",104);
cmnu->addSeparator();
cmnu->addItem(L"Abbrechen",105);
device->getSceneManager()->getActiveCamera()->setInputReceiverEnabled(false);
device->getCursorControl()->setVisible(true);
}
else
if (event.EventType == EET_GUI_EVENT)
{
s32 id = event.GUIEvent.Caller->getID();
switch(id)
{
case 100: // context menu
if (event.GUIEvent.EventType == gui::EGET_MENU_ITEM_SELECTED)
{
s32 s = ((gui::IGUIContextMenu*)event.GUIEvent.Caller)->getSelectedItem(); //->getID();
if (s == 0||s == 1||s == 2||s == 3||s == 4)
{
device->getSceneManager()->getActiveCamera()->setInputReceiverEnabled(true);
device->getCursorControl()->setVisible(false);
}
break;
}
default:
break;
}
}