события клавиатуры OSG (открытый график сцены)

Я хотел бы знать, как я могу вводить события клавиатуры для управления сферой? Мне нужна сфера и перемещать ее по экрану с помощью событий клавиатуры.


person user2656430    schedule 28.11.2013    source источник


Ответы (1)


OSG использует обработчики событий. Просто создайте такой:

// KeyboardEventHandler.h
#pragma once

#include <osgGA/GUIEventHandler>

class KeyHandler : public osgGA::GUIEventHandler
{
public:
    KeyHandler()
    {}

public:
    virtual bool handle(const osgGA::GUIEventAdapter& ea, osgGA::GUIActionAdapter&)
    {
        switch(ea.getEventType())
        {
            case(osgGA::GUIEventAdapter::KEYDOWN):
            {
                // Place your code here...
            }

            default:
                return false;
        }
    }

    virtual void accept(osgGA::GUIEventHandlerVisitor& v)
    {
        v.visit(*this);
    }
};

Теперь подключите его к вашему представлению:

m_osgViewer->addEventHandler(new KeyHandler());

Вы можете передать указатель "this" в KeyboardHandler и вызывать методы просмотра изнутри.

person samdavydov    schedule 14.05.2014