o_c_e_h_b Posted February 17 Share Posted February 17 Совсем недавно начал изучать Unigine и на многие вопросы ответы нахожу. Но не могу справиться с подпиской и обработкой событий. Для примера, по нажатию левой кнопки мыши хочу обрабатывать положение курсора. При создании в WorldLogic update() простого запроса - все работает. Но не хочется тратить впустую ресурсы, ведь событие редкое. Раза три перечитал EventHandling в документации, пробовал по всякому - не идет. Понимаю, что какую-то мелочь упускаю, но осилить не могу пока. Поделитесь решением или в какую сторону смотреть? Всем спасибо заранее. Link to comment
silent Posted February 19 Share Posted February 19 Преждевременные оптимизации - зло :) Можно спокойно дергать все в апдейте: 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); } } 1 How to submit a good bug report --- FTP server for test scenes and user uploads: ftp://files.unigine.com user: upload password: 6xYkd6vLYWjpW6SN Link to comment
o_c_e_h_b Posted March 2 Author Share Posted March 2 Спасибо за ответ, помогло разобраться с механизмами событий. Делаю через connect, но не до конца разобрался с классами EventConnection и EventConnections. Но дело пошло! Спасибо! Link to comment
Recommended Posts