Aktuelle Zeit: 28.03.2024, 10:45

Alle Zeiten sind UTC + 1 Stunde




Ein neues Thema erstellen Auf das Thema antworten  [ 4 Beiträge ] 
Autor Nachricht
BeitragVerfasst: 02.06.2012, 16:40 
Offline

Registriert: 02.06.2012, 16:24
Beiträge: 2
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


Nach oben
 Profil  
 
BeitragVerfasst: 03.06.2012, 20:12 
Offline

Registriert: 28.06.2010, 21:47
Beiträge: 27
IGUIEnvironment ist nur für das GUI zuständig. Die FUnktion erzeugt aus Mausklicks und Tasteneingaben GUI-events. Verherige GUI-Events werden bewusst nicht bearbeitet.
Nutze IrrlichtDevice::postEventFromUser. Dieses leitet den Aufruf der Reihe nach an alle EventHandler weiter, bis alle abgearbeitet wurden oder das event abgefangen wurde (return true).
Dieses sind dein eigener EventReceiver, GUI-environment und der SceneManager.


Nach oben
 Profil  
 
BeitragVerfasst: 05.06.2012, 10:30 
Offline

Registriert: 02.06.2012, 16:24
Beiträge: 2
Ah ok,

d.h. in der Übersetzung, dass jedes Element, dass ein GUIEvent erzeugt auch wieder
eine Reference auf IrrlichtDevice braucht, um selbst Events zu senden oder gibt es da
eine andere Möglichkeit?


Nach oben
 Profil  
 
BeitragVerfasst: 18.02.2013, 12:40 
Offline

Registriert: 18.02.2013, 10:59
Beiträge: 1
hi, informative post.. thanks for sharing it..
:)

_________________
actualtests http://www.actualtests.com
312-50v7 http://www.actualtests.com/exam-312-50v7.htm
NS0-502 http://www.actualtests.com/exam-NS0-502.htm
642-874 http://www.actualtests.com/exam-642-874.htm


Nach oben
 Profil  
 
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 4 Beiträge ] 

Alle Zeiten sind UTC + 1 Stunde


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 2 Gäste


Du darfst keine neuen Themen in diesem Forum erstellen.
Du darfst keine Antworten zu Themen in diesem Forum erstellen.
Du darfst deine Beiträge in diesem Forum nicht ändern.
Du darfst deine Beiträge in diesem Forum nicht löschen.
Du darfst keine Dateianhänge in diesem Forum erstellen.

Suche nach:
Gehe zu:  
cron
Powered by phpBB® Forum Software © phpBB Group
Deutsche Übersetzung durch phpBB.de