1.6.8162

Март — улучшения Keybinds и DI

C# Scripting — прототип Keybinds

Новый инструмент, который позволяет инициализировать горячие клавиши прямо из скриптов.

csharp
[Keybind("p")] // Simple example - triggers when 'p' is pressed
[Keybind("Ctrl+2")] // Triggers only when 'Ctrl + 2' is pressed
[Keybind("Ctrl+2", IgnoreModifiers = true)] // Triggers on ANY combination containing 'Ctrl + 2' (e.g., 'Ctrl + Alt + 2')
public void OnKey(){
    Log.Info("Key pressed");
}

[Keybind(Hotkey = "4", SuppressKey = false)] // Handles the key, but it will still pass through to other apps
public void HandleKeyWithInjectedServices(IAuraEventLoggingService loggingService){
    Log.Info("Key pressed");
    loggingService.LogMessage(new AuraEvent(){ Text = "Message", Loglevel = FluentLogLevel.Info });
}

C# Scripting — улучшения Dependency Injection

Если вы где-то в коде используете GetService, значит, вы уже работаете с системой DI в EyeAuras.
Я немного улучшил эту часть, чтобы упростить написание скриптов.

Ниже один и тот же скрипт в трёх вариантах.

Текущий подход — получение API через GetService:

csharp
var sendInput = GetService<ISendInputScriptingApi>();
sendInput.MouseMoveTo(200, 100); // Moves the mouse to X200 Y100
sendInput.MouseRightClick(); // Performs a right mouse click

А теперь два новых подхода, которые уже можно (и стоит!) использовать в ваших скриптах.

Я также думаю над автоматическим внедрением текущих API (например, SendInput) прямо в скрипты — это сделает код проще и универсальнее.
Например, для ISendInputScriptingApi имя было бы SendInput (как в примере ниже), для IPlaySoundScriptingApi — PlaySound, а для ComputerVision это могло бы выглядеть примерно так: IComputerVisionExperimentalScriptingApi Cv { get; init; }
Это будет опубликовано отдельным обновлением.

csharp
ISendInputScriptingApi SendInput { get; init; } // Automatically initialized when the script starts

SendInput.MouseMoveTo(200, 100); // Moves the mouse to X200 Y100
SendInput.MouseRightClick(); // Performs a right mouse click

И ещё вариант:

csharp
[Dependency] ISendInputScriptingApi SendInput { get; set; }

SendInput.MouseMoveTo(200, 100); // Moves the mouse to X200 Y100
SendInput.MouseRightClick(); // Performs a right mouse click

Исправления и улучшения

  • [Scripting] Немного улучшена производительность первого запуска скриптов (3-5%)