fix(player): ���� ESC toggle + ����� orbit-������ �� ��� #12

Merged
min merged 1 commits from fix/player-menu-toggle-camera into main 2026-05-31 07:15:26 +00:00
Owner

��� ���� ����: (1) ��������� ESC �������� ���� ������ �������; (2) ����� ���� �������� orbit-������ �� ���. ������� � ����� ���� ESC-������������ (������ + React). ����: ������ toggle _playerMenuOpen � ������, ����� ����������� React-����������, ����� _rmbHeld. ��������� �� dev-������.

?? Generated with Claude Code

��� ���� ����: (1) ��������� ESC �������� ���� ������ �������; (2) ����� ���� �������� orbit-������ �� ���. ������� � ����� ���� ESC-������������ (������ + React). ����: ������ toggle _playerMenuOpen � ������, ����� ����������� React-����������, ����� _rmbHeld. ��������� �� dev-������. ?? Generated with [Claude Code](https://claude.com/claude-code)
min added 1 commit 2026-05-31 06:56:15 +00:00
fix(player): меню ESC — toggle вместо открытия поверх + чинит orbit-камеру по ПКМ
All checks were successful
CI / Build (pull_request) Successful in 1m35s
CI / Secret scan (pull_request) Successful in 2m29s
CI / PR size check (pull_request) Successful in 6s
CI / Deploy to S1 + S2 (pull_request) Has been skipped
CI / Lint (pull_request) Successful in 58s
acb5b0b133
Два бага меню в плеере:
1. Повторный ESC открывал меню ПОВЕРХ первого (не закрывал).
2. После открытия/закрытия меню переставала работать orbit-камера по
   зажатой ПКМ (игры задачи 2 camera_mouse_controls).

Первопричина: ESC слушали ДВА обработчика — движок (setOnExitRequest →
_onEscMenu) и React (отдельный keydown при topMenuOpen). На одно нажатие
срабатывали оба → гонка: меню дублировалось, а _uiCursorMode застревал в
true, из-за чего onCanvasMouseDownGlobal (if _uiCursorMode return) игнорировал
ПКМ → orbit-камера не включалась.

Фикс — единый источник истины в движке:
- BabylonScene: флаг _playerMenuOpen + toggle в setOnExitRequest (открыто→
  закрыть+setUiCursorMode(false), закрыто→открыть). _onEscMenu(open) передаёт
  состояние в UI. setPlayerMenuOpen(open) — синхронизация при закрытии из UI
  (кнопка «Продолжить»). Сброс флага в enterPlayMode.
- KubikonPlayer: setOnEscMenu((open)=>setTopMenuOpen(open)); УБРАН дублирующий
  React ESC-обработчик; onClose меню → setPlayerMenuOpen(false); синхронизация
  _playerMenuOpen=true в onLockChange (perma) и setOnPlayChange.
- PlayerController.setUiCursorMode(true): сброс _rmbHeld=false (иначе если меню
  открыли при зажатой ПКМ, флаг застревал → orbit «думал» что ПКМ активна).

Проверено: ESC открыл→ESC закрыл (1 меню в DOM), ПКМ-orbit работает после меню.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
min merged commit 64de6c3683 into main 2026-05-31 07:15:26 +00:00
min deleted branch fix/player-menu-toggle-camera 2026-05-31 07:15:27 +00:00
Sign in to join this conversation.
No Reviewers
No Label
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: rublox/player#12
No description provided.