Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

[c++] irrlicht (gui)

Ostatnio zmodyfikowano 2013-02-17 17:05
Autor Wiadomość
megatron
Temat założony przez niniejszego użytkownika
[c++] irrlicht (gui)
» 2013-02-17 12:09:44
Witam. Od kilku dni męczę się z gui w powyższym silniku. Ale moje pytanie brzmi, jak by to zrobić, żeby nie używać do tego klasy, albo też zamiast używać myszki do poruszania się po interfejsie to używać klawiatury. Moja obecna klasa gui wygląda tak:
C/C++
class klasagui
    : public IEventReceiver
{
public:
    klasagui( SAppContext & context )
        : Context( context )
    { }
   
   
    virtual bool OnEvent( const SEvent & event )
    {
        if( event.EventType == EET_GUI_EVENT )
        {
            s32 id = event.GUIEvent.Caller->getID();
            IGUIEnvironment * env = Context.device->getGUIEnvironment();
           
            switch( event.GUIEvent.EventType )
            {
            case EGET_BUTTON_CLICKED:
                switch( id )
                {
                case GUI_ID_QUIT_BUTTON:
                   
                    Context.device->closeDevice();
                    return true;
                   
                    default:
                    return false;
                }
                break;
               
                default:
                break;
            }
        }
       
        return false;
    }
   
private:
    SAppContext & Context;
};
P-76432
megatron
Temat założony przez niniejszego użytkownika
» 2013-02-17 13:05:59
Widzę że jak dobrze nie wytłumaczę to nie mam co liczyć na pomoc; więc tak,
mój problem tkwi w tym, że mam dwie klasy, od obsługi klawiatury:
C/C++
bool klawisz[ KEY_KEY_CODES_COUNT ];

class Klawisze
    : public IEventReceiver
{
public:
    virtual bool OnEvent( const SEvent & event )
    {
        if( event.EventType == EET_KEY_INPUT_EVENT )
        {
            klawisz[ event.KeyInput.Key ] = event.KeyInput.PressedDown;
            return false;
        }
    };
i mam klasę od gui:
C/C++
class klasagui
    : public IEventReceiver
{
public:
    klasagui( SAppContext & context )
        : Context( context )
    { }
   
   
    virtual bool OnEvent( const SEvent & event )
    {
        if( event.EventType == EET_GUI_EVENT )
        {
            s32 id = event.GUIEvent.Caller->getID();
            IGUIEnvironment * env = Context.device->getGUIEnvironment();
           
            switch( event.GUIEvent.EventType )
            {
            case EGET_BUTTON_CLICKED:
                switch( id )
                {
                case GUI_ID_QUIT_BUTTON:
                   
                    Context.device->closeDevice();
                    return true;
                   
                    default:
                    return false;
                }
                break;
               
                default:
                break;
            }
        }
       
        return false;
    }
   
private:
    SAppContext & Context;
};

I teraz tak. Jeśli użyje jednej z tych klas osobno to działają poprawnie, a jeśli je wstawię tak do programu/gry to działa tylko gui.
Klawisze gry;
to jest kawałek kodu odpowiadający za klawisze
IrrlichtDevice * device = createDevice( EDT_OPENGL, dimension2d < u32 >( 1440, 900 ), 32, true, true, true, & gry );
a to jest moje okno programu.
I teraz aby gui działało to jest potrzebne do tego jeszcze kawałek kodu:
C/C++
SAppContext context;
context.device = device;
context.counter = 0;

MyEventReceiver receiver( context );

device->setEventReceiver( & receiver );
i tym powyższym kawałku kodu naszym diabełkiem jest:
device->setEventReceiver( & receiver );
Ponieważ zamienia on
Klawisze gry;
na
MyEventReceiver receiver;

przez co klawiatura nie reaguje i nie wiem co mam zrobić.
Sorki za tą mieszanine kodu i liczę tym razem na jakąś odpowiedź i oby na temat.
Pozdrawiam
P-76438
RazzorFlame
» 2013-02-17 13:41:26
Kiedy ty się nauczysz edytować posty? Takie ciężkie? Chyba że chcesz sobie nabić pełno postów. Boże, nie umiesz kliknąć opcji edytuj pod postem. To jeszcze nic bo jak zobaczyłem twój poprzedni temat to przy sobie miałeś jakies 5 postów. EDYCJA!
P-76440
megatron
Temat założony przez niniejszego użytkownika
» 2013-02-17 13:49:46
Wiem no sorki ale tutaj zrobiłem to celowo, ponieważ gdy bym edytował to podejrzewam, że nikt by nie zajrzał do tego postu.

PS. nabijanie postów mnie jakoś nie kręci :D
P-76441
RazzorFlame
» 2013-02-17 17:05:21
To że powiesz że cie nie kręci to nie znaczy że tak jest. Przy opcji edytuj post trafia na samą górę (zaraz po przyklejonych tematach) tak jakbyś dodawał normalnego posta.
P-76450
« 1 »
  Strona 1 z 1