mirror of
https://github.com/GeWuYou/GFramework.git
synced 2026-03-22 10:34:30 +08:00
新增 `IInputTranslator` 接口用于解耦原始输入与游戏事件的转换逻辑。 在 `InputSystem` 中增加注册、注销和处理原始输入的方法,支持优先级控制。 重构 `GodotInputBridge`,移除原有硬编码翻译逻辑,改为通过 `HandleRaw` 调用转换器处理。 新增 `GodotInputTranslator` 实现 `IInputTranslator`,负责将 Godot 输入事件翻译为游戏事件。 模块初始化时自动注册该转换器至输入系统。
31 lines
1.1 KiB
C#
31 lines
1.1 KiB
C#
namespace GFramework.Game.input;
|
||
|
||
public static class InputEvents
|
||
{
|
||
/// <summary>
|
||
/// 按键输入事件
|
||
/// </summary>
|
||
/// <param name="Action">按键操作名称</param>
|
||
/// <param name="Pressed">按键是否被按下,true表示按下,false表示释放</param>
|
||
/// <param name="Echo">是否为回显事件,用于处理按键重复触发</param>
|
||
public sealed record KeyInputEvent(
|
||
string Action,
|
||
bool Pressed,
|
||
bool Echo
|
||
) : IGameInputEvent;
|
||
|
||
/// <summary>
|
||
/// 指针/鼠标输入事件
|
||
/// </summary>
|
||
/// <typeparam name="TVector2">二维向量类型</typeparam>
|
||
/// <param name="Position">指针当前位置坐标</param>
|
||
/// <param name="Delta">指针位置变化量</param>
|
||
/// <param name="Button">鼠标按键编号,0表示左键,1表示右键,2表示中键</param>
|
||
/// <param name="Pressed">按键是否被按下,true表示按下,false表示释放</param>
|
||
public sealed record PointerInputEvent<TVector2>(
|
||
TVector2 Position,
|
||
TVector2 Delta,
|
||
int Button,
|
||
bool Pressed
|
||
) : IGameInputEvent where TVector2 : struct;
|
||
} |