Jump to content

Подписка и обработка событий


photo

Recommended Posts

  Совсем недавно начал изучать Unigine и на многие вопросы ответы нахожу. Но не могу справиться с подпиской и обработкой событий. Для примера, по нажатию левой кнопки мыши хочу  обрабатывать положение курсора. При создании в WorldLogic update() простого запроса - все работает. Но не хочется тратить впустую ресурсы, ведь событие редкое. Раза три перечитал EventHandling в документации, пробовал по всякому - не идет. Понимаю, что какую-то мелочь упускаю, но осилить не могу пока. Поделитесь решением или в какую сторону смотреть? Всем спасибо заранее. 

Link to comment

Преждевременные оптимизации - зло :) Можно спокойно дергать все в апдейте:

int AppSystemLogic::update()
{
    if (Input::isKeyDown(Input::KEY_Z))
    {
        Log::message("key z pressed!\n");
    }
    if (Input::isMouseButtonDown(Input::MOUSE_BUTTON_LEFT))
    {
        Log::message("mouse clicled\n");
    }
}

 

Ну, а если нужны события, то можно и так:

int AppSystemLogic::init()
{
    // подписка лямбдой
    Input::getEventMouseDown().connect([](Input::MOUSE_BUTTON button) {
        if (button == Input::MOUSE_BUTTON_LEFT)
        {
            int x = Gui::getCurrent()->getMouseX();
            int y = Gui::getCurrent()->getMouseY();
            Log::message("LAMBDA LEFT CLICK %d %d\n", x, y);
        }
    });

    // подписка методом. (метод нужно объявить в хидере)
    // void on_mouse_button_method(Unigine::Input::MOUSE_BUTTON button);
    Input::getEventMouseDown().connect(this, &AppSystemLogic::on_mouse_button_method);

    return 1;
}

void AppSystemLogic::on_mouse_button_method(Input::MOUSE_BUTTON button)
{
    if (button == Input::MOUSE_BUTTON_RIGHT)
    {
        int x = Gui::getCurrent()->getMouseX();
        int y = Gui::getCurrent()->getMouseY();
        Log::message("METHOD RIGHT CLICK %d %d\n", x, y);
    }
}

 

  • Like 1

How to submit a good bug report
---
FTP server for test scenes and user uploads:

Link to comment
  • 2 weeks later...

Спасибо за ответ, помогло разобраться с механизмами событий. Делаю через connect, но не до конца разобрался с классами EventConnection  и EventConnections. Но дело пошло! Спасибо!

Link to comment
×
×
  • Create New...