// Copyright (c) 2025-2026 GeWuYou // SPDX-License-Identifier: Apache-2.0 using GFramework.Game.Abstractions.Input; namespace GFramework.Game.Input; /// /// 提供可由宿主侧更新的默认输入设备跟踪器。 /// public sealed class InputDeviceTracker : IInputDeviceTracker { /// /// 初始化输入设备跟踪器。 /// public InputDeviceTracker() { CurrentDevice = new InputDeviceContext(InputDeviceKind.Unknown); } /// /// /// 该属性不提供额外同步原语。 /// 宿主应在同一输入线程内调用 并读取当前值,例如 Godot 的主线程或输入事件线程。 /// public InputDeviceContext CurrentDevice { get; private set; } /// /// 使用新的宿主设备上下文覆盖当前状态。 /// /// 新的设备上下文。 /// /// 该方法设计给宿主输入线程串行调用。 /// 如果宿主需要跨线程读取设备上下文,应在外层提供自己的同步策略,而不是依赖此类型完成可见性保证。 /// /// 时抛出。 public void Update(InputDeviceContext context) { CurrentDevice = context ?? throw new ArgumentNullException(nameof(context)); } }