Jump to content

Действие аналогичное кнопке ESC


photo

Recommended Posts

Posted (edited)

Приветствую!

Сколько не бился, не могу сделать действие полностью аналогичное кнопке ESC по умолчанию. Т.е. Должно отключаться управление камерой, должен появляться курсор, Курсор должен видеть GUI. По клику мимо GUI (Внимание, по одному клику!) должен переключаться обратно в управление камерой. Конечно, думаю это все долго и нудно можно сделать в собственном конроллере камеры, но может есть простой способ? В крайнем случае может можно программно нажать ESC? )

И, кстати, сопутствующий вопрос. Как отключить это действие у ESC?

 

Edited by Didgik
Posted

Здравствуйте, переназначить это действие можно через 

ControlsApp::setRemoveGrabKey(Input::KEY_...)

 

  • Thanks 1
Posted (edited)
1 час назад мифрил сказал:

Здравствуйте, переназначить это действие можно через 

 

Отлично, работает!

А повторить вручую это действие можно или эмулировать? Т.е. общий замысел такой.

1. Мы освобождаем кнопку ESC под свои нужды или просто пользователь переназначает это действие на удобную себе кнопку. Это сделали.

2. У меня есть кнопка  ENTER по которой я перехожу в чат, хочется выходить из чата в режим управления тоже по однократному клику. При:
 

Цитата

    if (Input::isMouseButtonPressed(Input::MOUSE_BUTTON::MOUSE_BUTTON_LEFT)) {
        Input::setMouseHandle(Input::MOUSE_HANDLE_GRAB);
    }

    if (Input::isKeyDown(Input::KEY_ENTER)) {
        Input::setMouseHandle(Input::MOUSE_HANDLE_USER);

  }

переключается в режим управления только по второму клику.

Edited by Didgik
Posted

Вы можете еще принудительно выставлять grab мыши

if (Input::isMouseButtonDown(Input::MOUSE_BUTTON_LEFT))
{
	Input::setMouseHandle(Input::MOUSE_HANDLE_GRAB);
	Input::setMouseGrab(true);
	ControlsApp::setMouseEnabled(true);
}

if (Input::isKeyDown(Input::KEY_ENTER))
{
	Input::setMouseHandle(Input::MOUSE_HANDLE_USER);
}

 

  • Thanks 1
Posted
6.11.2024 в 14:51 мифрил сказал:

Вы можете еще принудительно выставлять grab мыши

Нет. Я рано радовался. Любое действие в

  
	
	
     

кроме собственно Input::setMouseHandle(Input::MOUSE_HANDLE_GRAB) приводит к тому, что мышь захватывается над Гуем и даже над заголовком окна. Так что вопрос еще актуален.

Posted

Это понятно. Правда гуй может быть разбросан по экрану и непредсказуемых местах и вычислять всё это тоже целое дело. Вопрос в том, что же происходит по ESC, что ничего этого не требуется.

Posted

У вас же проблема не с кнопкой ESC, а с тем что мышь не грабается сразу? Если нет, то я не понимаю в чем ваша проблема.

Posted
7 минут назад мифрил сказал:

У вас же проблема не с кнопкой ESC, а с тем что мышь не грабается сразу? Если нет, то я не понимаю в чем ваша проблема.

У меня изначальная проблема в том, что я не могу воспроизвести функционал кнопки  ESC. После её нажатия, мне не нужно как то дополнительно обрабатывать клики мыши чтобы вернутся в управление. Остальное это уже попытки сделать все вручную.

Posted

Можно тогда просто попробовать убирать граб мыши анологично тому как мы принудительно его ставили, только без выставления handle.

Например:

Input::setMouseGrab(false);
ControlsApp::setMouseEnabled(false);

 

  • Thanks 1
Posted
6 минут назад мифрил сказал:

Можно тогда просто попробовать убирать граб мыши анологично тому как мы принудительно его ставили, только без выставления handle.

Во, это кажись то, что надо!

Posted
On 11/6/2024 at 1:24 PM, mifril said:

Здравствуйте, переназначить это действие можно через 

ControlsApp::setRemoveGrabKey(Input::KEY_...)

 

Дополню, если кому будет интересна тема, что данная команда не просто переключает действие в реалтайме, а прописывает настройку в data\configs\default.controls, т.е. отменить удалением строки не получиться, надо в коде ставить нужною кнопку, хотя бы раз или править текстовый конфиг. А то я долго думал, что за бред происходит.

×
×
  • Create New...