Moinsen,
ich nutze C# und IrrlichtLime für mein Projekt und habe ein Problem beim
erstellen eines eigenen GUIElements.
Rendering, Event-Verarbeitung klappt soweit ganz gut,
nur die Folge von der Event-Verarbeitung sollen eigene
eigene Events sein. Dies soll laut Reference per Environment.PostEvent
funktionieren:
Code:
public bool ParseEvent(Event evnt)
{
if (evnt.Type == EventType.Mouse)
{
if (evnt.Mouse.IsLeftPressed())
{
pressed = true;
Environment.PostEvent(new Event(GUIEventType.ButtonClicked, this));
}
else
pressed = false;
}
return true;
}
Scheint unter Irrlicht für C++ auch nicht zu funktionieren, zum. nicht in meinem kleinen test Program:
Code:
#include <irrlicht.h>
#include <iostream>
using namespace irr;
using namespace video;
using namespace gui;
#pragma comment(lib, "irrlicht.lib")
class receiver : public IEventReceiver
{
public:
receiver()
{
}
virtual bool OnEvent(const SEvent &event)
{
if(event.EventType == EET_GUI_EVENT)
{
std::cout << event.GUIEvent.EventType << "\n";
return false;
}
return true;
}
};
void main(void)
{
IrrlichtDevice *device = createDevice(EDT_DIRECT3D9);
device->setEventReceiver(new receiver());
while(device->run())
{
device->getVideoDriver()->beginScene();
SEvent event;
event.EventType = EET_GUI_EVENT;
event.GUIEvent.EventType = EGUI_EVENT_TYPE::EGET_BUTTON_CLICKED;
event.GUIEvent.Caller = event.GUIEvent.Element = 0;
device->getGUIEnvironment()->postEventFromUser(event);
device->getVideoDriver()->endScene();
}
}
Im Endeffekt kommen bei beiden Sprachen keine zu verarbeitenden Events an.
Liegt das an Irrlicht/IrrlichtLime oder mache ich selbst etwas falsch?
Gruß
Bloody Shadow