@events.menu_renderотменить нельзя5 методовКаждый кадр, пока открыто меню клиента, до того как оно нарисует себя.
Слой под панелями меню: свечение, узор, подложка. Всё нарисованное здесь окажется под меню, а само меню ляжет сверху.
Рисование идёт в тех же координатах, в которых меню рисует свои панели, поэтому глобал menu даёт готовые числа: где стоит каждая панель и на каком месте анимация открытия.
Повторять анимацию руками не нужно, слой уже внутри неё: меню подпрыгивает на открытии и улетает в мир на закрытии вместе с тем, что нарисовал скрипт.
| Метод | Возвращает | Зачем |
|---|---|---|
getContext() | CustomDrawContext | Кисточка: все методы рисования клиента |
getMenu() | str | Какое меню открыто: panel или modern |
getProgress() | float | Открытость меню от 0 до 1, то же, что menu.progress |
isCapture() | bool | Кадр снимается в картинку для анимации закрытия, а не рисуется на экран |
getTickDelta() | float | Доля тика для плавных анимаций |
mod = Module("MenuGlow", "Visuals")
COL = Color(120, 190, 255)
@events.menu_render
def draw(event):
if not mod.isEnabled():
return
ctx = event.getContext()
for panel in menu.panels:
# свечение под каждой панелью, гаснет вместе с меню
ctx.drawShadow(panel.x - 8, panel.y - 8,
panel.width + 16, panel.height + 16,
30, border(18), COL.withAlpha(110 * menu.progress))Общий список всех событий и правила подписки лежат на странице События.