Синхронизация с rublox-player (Этап 1 ANIMATIONS_PLAN.md):
MIXAMO:
- Добавлен MixamoAnimator.js (полная копия из плеера)
- В PlayerController список MIXAMO_SKINS (78 шт)
- _resolveModelSource ветка для skin_* — грузит GLB с /character-assets/skins/
- _loadPlayerModel создаёт MixamoAnimator для Mixamo-скинов
CROUCH (Ctrl):
- AABB → 0.45, скорость 0.45×walk, приоритет над sprint
- Анимации: crouch_enter → crouch_idle / crouch_walk → crouch_to_stand
- Y-drop по 0.20-0.45м для разных Mixamo-клипов
- Анти-флик debounce + детект one-shot vs loopable
PREVIEW PLAYER:
- Skin приоритет: URL #skin= → БД → localStorage → дефолт
- Дефолт skin_bacon-hair → skin_y-bot
ENTERPLAYMODE:
- BabylonScene при Play читает hash/localStorage и подставляет user skin
поверх projectModelType (тест-режим = играешь СВОИМ скином)
KUBIKONEDITOR:
- handlePlay async: предзагрузка скина из БД (если нет в URL) и инжект в hash
- При Play: requestFullscreen() — блокирует Ctrl+W/D/T/R/S/A/P/F и др.
- Во время Play: window keydown listener блокирует системные хоткеи,
WASD проходят к PlayerController (для crouch+движение)