docs: rebuild Input API content

This commit is contained in:
2026-03-26 17:39:53 +08:00
parent ec4edb2689
commit ce2eee32e3
54 changed files with 1108 additions and 941 deletions

View File

@@ -1,30 +1,33 @@
# InputManager::ClearAxes
清空内部数据
清空当前所有逻辑轴和逻辑按钮映射
```cpp
void ClearAxes();
```
该方法声明于 `XCEngine/Input/InputManager.h`,当前页面用于固定 `InputManager` 类目录下的方法级 canonical 路径。
## 行为说明
**参数:** 无。
尽管名字叫 `ClearAxes`,当前实现会同时执行:
**返回:** `void` - 无返回值。
- `m_axes.clear()`
- `m_buttons.clear()`
**示例:**
它不会清空键盘、鼠标或事件监听状态。
## 返回值
- 无。
## 示例
```cpp
#include <XCEngine/Input/InputManager.h>
void Example() {
XCEngine::Input::InputManager object;
// 根据上下文补齐参数后调用 InputManager::ClearAxes(...)。
(void)object;
}
auto& input = XCEngine::Input::InputManager::Get();
input.ClearAxes();
```
## 相关文档
- [返回类总览](InputManager.md)
- [返回模块目录](../Input.md)
- [返回类总览](InputManager.md)
- [RegisterAxis](RegisterAxis.md)
- [RegisterButton](RegisterButton.md)

View File

@@ -1,29 +1,26 @@
# InputManager::Get
获取相关状态或对象
获取进程级全局 `InputManager` 实例
```cpp
static InputManager& Get();
```
该方法声明于 `XCEngine/Input/InputManager.h`,当前页面用于固定 `InputManager` 类目录下的方法级 canonical 路径。
## 行为说明
**参数:**
当前实现使用函数内静态对象保存单例。`Get()` 本身不会初始化状态数组,也不会注册默认映射;这些工作要由 [Initialize](Initialize.md) 完成
**返回:** `InputManager&` - 返回值语义详见头文件声明。
## 返回值
**示例:**
- `InputManager&` - 全局输入管理器引用。
## 示例
```cpp
#include <XCEngine/Input/InputManager.h>
void Example() {
auto& instance = XCEngine::Input::InputManager::Get();
(void)instance;
}
XCEngine::Input::InputManager& input = XCEngine::Input::InputManager::Get();
```
## 相关文档
- [返回类总览](InputManager.md)
- [返回模块目录](../Input.md)
- [返回类总览](InputManager.md)
- [Initialize](Initialize.md)

View File

@@ -1,31 +1,43 @@
# InputManager::GetAxis
获取相关状态或对象
读取一个具名逻辑轴的当前值
```cpp
float GetAxis(const Containers::String& axisName) const;
```
该方法声明于 `XCEngine/Input/InputManager.h`,当前页面用于固定 `InputManager` 类目录下的方法级 canonical 路径。
## 行为说明
**参数:**
- `axisName` - 参数语义详见头文件声明。
当前实现按以下规则计算返回值:
**返回:** `float` - 返回值语义详见头文件声明。
- 如果找不到该轴,返回 `0.0f`
- 如果正方向键当前按下,结果加 `1.0f`
- 如果负方向键当前按下,结果减 `1.0f`
**示例:**
所以当前结果通常是 `-1.0f``0.0f``1.0f`。如果正负方向同时按下,结果会相互抵消为 `0.0f`
要特别注意:
- 当前实现没有平滑、插值、重力或灵敏度处理。
- 它不会读取 `InputAxis::GetValue()` 的内部值。
- 默认注册的 `Mouse X``Mouse Y` 轴当前都绑定为 `KeyCode::None`,因此结果始终为 `0.0f`
## 参数
- `axisName` - 逻辑轴名称。
## 返回值
- `float` - 当前轴值。
## 示例
```cpp
#include <XCEngine/Input/InputManager.h>
void Example() {
XCEngine::Input::InputManager object;
// 根据上下文补齐参数后调用 InputManager::GetAxis(...)。
(void)object;
}
float horizontal = XCEngine::Input::InputManager::Get().GetAxis("Horizontal");
```
## 相关文档
- [返回类总览](InputManager.md)
- [返回模块目录](../Input.md)
- [返回类总览](InputManager.md)
- [GetAxisRaw](GetAxisRaw.md)
- [RegisterAxis](RegisterAxis.md)

View File

@@ -1,31 +1,35 @@
# InputManager::GetAxisRaw
获取相关状态或对象
读取一个具名逻辑轴的当前原始值
```cpp
float GetAxisRaw(const Containers::String& axisName) const;
```
该方法声明于 `XCEngine/Input/InputManager.h`,当前页面用于固定 `InputManager` 类目录下的方法级 canonical 路径。
## 行为说明
**参数:**
- `axisName` - 参数语义详见头文件声明。
当前实现与 [GetAxis](GetAxis.md) 最大的区别在于,它检查的是 `IsKeyPressed()`,而不是 `IsKeyDown()`。这意味着:
**返回:** `float` - 返回值语义详见头文件声明。
- 只有在按键“刚按下的那一帧”才会返回 `1.0f``-1.0f`
- 按住不放跨帧后,结果会回到 `0.0f`
**示例:**
这和很多引擎里“raw axis 仍然表示持续按住的未平滑值”的直觉不同,因此需要特别小心。
## 参数
- `axisName` - 逻辑轴名称。
## 返回值
- `float` - 当前帧的原始边沿值。
## 示例
```cpp
#include <XCEngine/Input/InputManager.h>
void Example() {
XCEngine::Input::InputManager object;
// 根据上下文补齐参数后调用 InputManager::GetAxisRaw(...)。
(void)object;
}
float raw = XCEngine::Input::InputManager::Get().GetAxisRaw("Horizontal");
```
## 相关文档
- [返回类总览](InputManager.md)
- [返回模块目录](../Input.md)
- [返回类总览](InputManager.md)
- [GetAxis](GetAxis.md)

View File

@@ -1,31 +1,37 @@
# InputManager::GetButton
获取相关状态或对象
查询一个具名逻辑按钮当前是否按下
```cpp
bool GetButton(const Containers::String& buttonName) const;
```
该方法声明于 `XCEngine/Input/InputManager.h`,当前页面用于固定 `InputManager` 类目录下的方法级 canonical 路径。
## 行为说明
**参数:**
- `buttonName` - 参数语义详见头文件声明。
当前逻辑按钮只是“名字到 `KeyCode`”的映射。这个方法会:
**返回:** `bool` - 返回值语义详见头文件声明。
1. 查找 `buttonName`
2. 如果找到,则调用 `IsKeyDown(mappedKey)`
3. 如果没找到,则返回 `false`
**示例:**
## 参数
- `buttonName` - 逻辑按钮名称。
## 返回值
- `bool` - 当前是否按下。
## 示例
```cpp
#include <XCEngine/Input/InputManager.h>
void Example() {
XCEngine::Input::InputManager object;
// 根据上下文补齐参数后调用 InputManager::GetButton(...)。
(void)object;
if (XCEngine::Input::InputManager::Get().GetButton("Jump")) {
// ...
}
```
## 相关文档
- [返回类总览](InputManager.md)
- [返回模块目录](../Input.md)
- [返回类总览](InputManager.md)
- [GetButtonDown](GetButtonDown.md)
- [RegisterButton](RegisterButton.md)

View File

@@ -1,31 +1,35 @@
# InputManager::GetButtonDown
获取相关状态或对象
查询一个具名逻辑按钮是否在本帧刚被按下
```cpp
bool GetButtonDown(const Containers::String& buttonName) const;
```
该方法声明于 `XCEngine/Input/InputManager.h`,当前页面用于固定 `InputManager` 类目录下的方法级 canonical 路径。
## 行为说明
**参数:**
- `buttonName` - 参数语义详见头文件声明。
当前实现把逻辑按钮当作 `KeyCode` 别名处理,因此这个方法等价于对映射后的键调用 `IsKeyPressed()`
**返回:** `bool` - 返回值语义详见头文件声明
如果按钮名未注册,返回 `false`
**示例:**
## 参数
- `buttonName` - 逻辑按钮名称。
## 返回值
- `bool` - 该按钮是否在本帧刚被按下。
## 示例
```cpp
#include <XCEngine/Input/InputManager.h>
void Example() {
XCEngine::Input::InputManager object;
// 根据上下文补齐参数后调用 InputManager::GetButtonDown(...)。
(void)object;
if (XCEngine::Input::InputManager::Get().GetButtonDown("Fire1")) {
// ...
}
```
## 相关文档
- [返回类总览](InputManager.md)
- [返回模块目录](../Input.md)
- [返回类总览](InputManager.md)
- [GetButton](GetButton.md)
- [GetButtonUp](GetButtonUp.md)

View File

@@ -1,31 +1,32 @@
# InputManager::GetButtonUp
获取相关状态或对象
查询一个具名逻辑按钮当前是否处于抬起状态
```cpp
bool GetButtonUp(const Containers::String& buttonName) const;
```
该方法声明于 `XCEngine/Input/InputManager.h`,当前页面用于固定 `InputManager` 类目录下的方法级 canonical 路径。
## 行为说明
**参数:**
- `buttonName` - 参数语义详见头文件声明。
如果按钮名已注册,当前实现会对映射后的键调用 `IsKeyUp()`。如果按钮名未注册,当前实现直接返回 `true`
**返回:** `bool` - 返回值语义详见头文件声明
这个“未注册也算 Up”是当前行为不一定符合所有上层代码的直觉
**示例:**
## 参数
- `buttonName` - 逻辑按钮名称。
## 返回值
- `bool` - 当前是否处于抬起状态;未注册按钮也会返回 `true`
## 示例
```cpp
#include <XCEngine/Input/InputManager.h>
void Example() {
XCEngine::Input::InputManager object;
// 根据上下文补齐参数后调用 InputManager::GetButtonUp(...)。
(void)object;
}
bool released = XCEngine::Input::InputManager::Get().GetButtonUp("Jump");
```
## 相关文档
- [返回类总览](InputManager.md)
- [返回模块目录](../Input.md)
- [返回类总览](InputManager.md)
- [GetButton](GetButton.md)

View File

@@ -1,30 +1,30 @@
# InputManager::GetMouseDelta
获取相关状态或对象
读取当前帧保存的鼠标位移
```cpp
Math::Vector2 GetMouseDelta() const;
```
该方法声明于 `XCEngine/Input/InputManager.h`,当前页面用于固定 `InputManager` 类目录下的方法级 canonical 路径。
## 行为说明
**参数:** 无。
当前实现返回最近一次 [ProcessMouseMove](ProcessMouseMove.md) 写入的 `m_mouseDelta`。它有两个重要特点:
**返回:** `Math::Vector2` - 返回值语义详见头文件声明。
- 不是累加值,而是最近一次输入事件的 delta
- 会在 [Update](Update.md) 时被重置为 `Vector2::Zero()`
**示例:**
## 返回值
- `Math::Vector2` - 当前保存的鼠标位移。
## 示例
```cpp
#include <XCEngine/Input/InputManager.h>
void Example() {
XCEngine::Input::InputManager object;
// 根据上下文补齐参数后调用 InputManager::GetMouseDelta(...)。
(void)object;
}
auto delta = XCEngine::Input::InputManager::Get().GetMouseDelta();
```
## 相关文档
- [返回类总览](InputManager.md)
- [返回模块目录](../Input.md)
- [返回类总览](InputManager.md)
- [ProcessMouseMove](ProcessMouseMove.md)
- [Update](Update.md)

View File

@@ -1,30 +1,28 @@
# InputManager::GetMousePosition
获取相关状态或对象
读取当前保存的鼠标位置
```cpp
Math::Vector2 GetMousePosition() const;
```
该方法声明于 `XCEngine/Input/InputManager.h`,当前页面用于固定 `InputManager` 类目录下的方法级 canonical 路径。
## 行为说明
**参数:**
当前实现直接返回内部 `m_mousePosition`。该值由 [ProcessMouseMove](ProcessMouseMove.md) 或鼠标按钮/滚轮事件携带的位置间接更新
**返回:** `Math::Vector2` - 返回值语义详见头文件声明
如果尚未收到任何鼠标输入,默认值通常是零向量
**示例:**
## 返回值
- `Math::Vector2` - 当前鼠标位置。
## 示例
```cpp
#include <XCEngine/Input/InputManager.h>
void Example() {
XCEngine::Input::InputManager object;
// 根据上下文补齐参数后调用 InputManager::GetMousePosition(...)。
(void)object;
}
auto pos = XCEngine::Input::InputManager::Get().GetMousePosition();
```
## 相关文档
- [返回类总览](InputManager.md)
- [返回模块目录](../Input.md)
- [返回类总览](InputManager.md)
- [ProcessMouseMove](ProcessMouseMove.md)

View File

@@ -1,30 +1,27 @@
# InputManager::GetMouseScrollDelta
获取相关状态或对象
读取当前帧保存的滚轮增量
```cpp
float GetMouseScrollDelta() const;
```
该方法声明于 `XCEngine/Input/InputManager.h`,当前页面用于固定 `InputManager` 类目录下的方法级 canonical 路径。
## 行为说明
**参数:**
当前实现返回内部 `m_mouseScrollDelta`。该值在 [ProcessMouseWheel](ProcessMouseWheel.md) 中被直接覆盖,而不是累加,并会在 [Update](Update.md) 时重置为 `0.0f`
**返回:** `float` - 返回值语义详见头文件声明。
## 返回值
**示例:**
- `float` - 当前帧保存的滚轮增量。
## 示例
```cpp
#include <XCEngine/Input/InputManager.h>
void Example() {
XCEngine::Input::InputManager object;
// 根据上下文补齐参数后调用 InputManager::GetMouseScrollDelta(...)。
(void)object;
}
float scroll = XCEngine::Input::InputManager::Get().GetMouseScrollDelta();
```
## 相关文档
- [返回类总览](InputManager.md)
- [返回模块目录](../Input.md)
- [返回类总览](InputManager.md)
- [ProcessMouseWheel](ProcessMouseWheel.md)
- [Update](Update.md)

View File

@@ -1,31 +1,32 @@
# InputManager::GetTouch
获取相关状态或对象
读取指定索引的触点状态
```cpp
TouchState GetTouch(int index) const;
```
该方法声明于 `XCEngine/Input/InputManager.h`,当前页面用于固定 `InputManager` 类目录下的方法级 canonical 路径。
## 行为说明
**参数:**
- `index` - 参数语义详见头文件声明。
如果 `index` 合法,当前实现返回 `m_touches[index]` 的拷贝;否则返回默认构造的 `TouchState{}`
**返回:** `TouchState` - 返回值语义详见头文件声明
由于当前公开代码路径并不会填充 `m_touches`,这个接口大多数情况下只会返回默认值
**示例:**
## 参数
- `index` - 触点索引。
## 返回值
- `TouchState` - 指定触点状态;非法索引时为默认构造值。
## 示例
```cpp
#include <XCEngine/Input/InputManager.h>
void Example() {
XCEngine::Input::InputManager object;
// 根据上下文补齐参数后调用 InputManager::GetTouch(...)。
(void)object;
}
auto touch = XCEngine::Input::InputManager::Get().GetTouch(0);
```
## 相关文档
- [返回类总览](InputManager.md)
- [返回模块目录](../Input.md)
- [返回类总览](InputManager.md)
- [GetTouchCount](GetTouchCount.md)

View File

@@ -1,30 +1,26 @@
# InputManager::GetTouchCount
获取相关状态或对象
读取当前已保存的触点数量
```cpp
int GetTouchCount() const;
```
该方法声明于 `XCEngine/Input/InputManager.h`,当前页面用于固定 `InputManager` 类目录下的方法级 canonical 路径。
## 行为说明
**参数:**
当前实现直接返回 `m_touches.size()`。因为现有公开代码路径没有填充触摸状态,所以在当前版本里它通常为 `0`
**返回:** `int` - 返回值语义详见头文件声明。
## 返回值
**示例:**
- `int` - 当前触点数量。
## 示例
```cpp
#include <XCEngine/Input/InputManager.h>
void Example() {
XCEngine::Input::InputManager object;
// 根据上下文补齐参数后调用 InputManager::GetTouchCount(...)。
(void)object;
}
int count = XCEngine::Input::InputManager::Get().GetTouchCount();
```
## 相关文档
- [返回类总览](InputManager.md)
- [返回模块目录](../Input.md)
- [返回类总览](InputManager.md)
- [GetTouch](GetTouch.md)

View File

@@ -1,31 +1,45 @@
# InputManager::Initialize
初始化内部状态
初始化输入状态缓存并注册默认逻辑映射
```cpp
void Initialize(void* platformWindowHandle);
```
该方法声明于 `XCEngine/Input/InputManager.h`,当前页面用于固定 `InputManager` 类目录下的方法级 canonical 路径。
## 行为说明
**参数:**
- `platformWindowHandle` - 参数语义详见头文件声明。
当前实现是幂等的:如果已经初始化,直接返回。
**返回:** `void` - 无返回值。
首次初始化时,它会:
**示例:**
- 保存 `platformWindowHandle`
- 分配 256 槽键盘状态数组
- 分配 5 槽鼠标按键状态数组
- 分配 32 槽按钮瞬时状态数组
- 注册默认轴和按钮映射
-`m_initialized` 设为 `true`
当前没有做的事情:
- 不会清空事件监听器
- 不会校验窗口句柄
- 不会启动平台事件循环
## 参数
- `platformWindowHandle` - 平台窗口句柄;当前会保存下来,但 `InputManager` 本身不直接使用它。
## 返回值
- 无。
## 示例
```cpp
#include <XCEngine/Input/InputManager.h>
void Example() {
XCEngine::Input::InputManager object;
// 根据上下文补齐参数后调用 InputManager::Initialize(...)。
(void)object;
}
XCEngine::Input::InputManager::Get().Initialize(windowHandle);
```
## 相关文档
- [返回类总览](InputManager.md)
- [返回模块目录](../Input.md)
- [返回类总览](InputManager.md)
- [Shutdown](Shutdown.md)

View File

@@ -6,58 +6,89 @@
**头文件**: `XCEngine/Input/InputManager.h`
**描述**: 定义 `XCEngine/Input` 子目录中的 `InputManager` public API
**描述**: 保存当前输入状态、提供轮询查询接口,并同步广播输入事件
## 概述
`InputManager.h``XCEngine/Input` 子目录 下的 public header当前页面作为平行目录中的 canonical 总览,用于汇总该头文件暴露的主要声明
`InputManager` 是 XCEngine 当前输入系统的核心入口。平台层通过 `ProcessKeyDown``ProcessMouseMove` 等方法把原始输入送进来;游戏代码、编辑器和测试代码则通过 `IsKeyDown``GetAxis``OnKeyEvent` 等 API 查询或订阅这些状态
## 声明概览
它同时承担两种角色:
| 声明 | 类型 | 说明 |
|------|------|------|
| `InputManager` | `class` | 头文件中的公开声明。 |
- 轮询中心:保存“当前是否按下”“本帧是否刚按下”“本帧鼠标位移”等状态。
- 事件中心:把输入变化同步广播给订阅者。
## 公共方法
## 生命周期
| 方法 | 描述 |
- [Get](Get.md) 返回进程级单例。
- [Initialize](Initialize.md) 分配内部状态数组、保存窗口句柄并注册默认轴/按钮。
- [Shutdown](Shutdown.md) 清空状态和映射,但当前不会清空事件监听器。
- [Update](Update.md) 用于推进帧边界并清理瞬时状态。
## 默认映射
当前 `Initialize` 会注册以下默认逻辑项:
- 轴:`Horizontal` (`D` / `A`)、`Vertical` (`W` / `S`)
- 轴:`Mouse X``Mouse Y`,但两者当前都绑定为 `KeyCode::None`,因此 `GetAxis` 结果始终为 `0`
- 按钮:`Jump` (`Space`)、`Fire1` (`LeftCtrl`)、`Fire2` (`LeftAlt`)、`Fire3` (`LeftShift`)
## 线程语义
- 当前实现没有锁,也不是为多线程输入注入设计的。
- `Process*``Update`、注册映射和查询最好都在主线程或同一逻辑线程完成。
- 事件回调同步执行在调用 `Process*` 的线程上。
## 当前实现限制
- `platformWindowHandle` 会被保存,但 `InputManager` 当前并不直接使用它。
- `KeyCode` 数值存在重复项,而 `InputManager` 用原始枚举值索引固定数组,因此部分按键状态会别名冲突。
- `GetAxisRaw` 当前按“按下这一帧”计算,而不是按“持续按住”计算。
- `GetButtonUp` 对未注册按钮返回 `true`
- `ClearAxes` 会同时清空 `m_axes``m_buttons`
- 触摸接口已暴露,但当前实现没有任何公开路径去填充 `m_touches`
## 公开方法
| 方法 | 说明 |
|------|------|
| [Get](Get.md) | 获取相关状态或对象。 |
| [Initialize](Initialize.md) | 初始化内部状态。 |
| [Shutdown](Shutdown.md) | 关闭并清理内部状态。 |
| [Update](Update.md) | 更新运行时状态。 |
| [IsKeyDown](IsKeyDown.md) | 查询当前状态。 |
| [IsKeyUp](IsKeyUp.md) | 查询当前状态。 |
| [IsKeyPressed](IsKeyPressed.md) | 查询当前状态。 |
| [GetMousePosition](GetMousePosition.md) | 获取相关状态或对象。 |
| [GetMouseDelta](GetMouseDelta.md) | 获取相关状态或对象。 |
| [GetMouseScrollDelta](GetMouseScrollDelta.md) | 获取相关状态或对象。 |
| [IsMouseButtonDown](IsMouseButtonDown.md) | 查询当前状态。 |
| [IsMouseButtonUp](IsMouseButtonUp.md) | 查询当前状态。 |
| [IsMouseButtonClicked](IsMouseButtonClicked.md) | 查询当前状态。 |
| [GetTouchCount](GetTouchCount.md) | 获取相关状态或对象。 |
| [GetTouch](GetTouch.md) | 获取相关状态或对象。 |
| [GetAxis](GetAxis.md) | 获取相关状态或对象。 |
| [GetAxisRaw](GetAxisRaw.md) | 获取相关状态或对象。 |
| [GetButton](GetButton.md) | 获取相关状态或对象。 |
| [GetButtonDown](GetButtonDown.md) | 获取相关状态或对象。 |
| [GetButtonUp](GetButtonUp.md) | 获取相关状态或对象。 |
| [RegisterAxis](RegisterAxis.md) | 注册对象、回调或映射。 |
| [RegisterButton](RegisterButton.md) | 注册对象、回调或映射。 |
| [ClearAxes](ClearAxes.md) | 清空内部数据。 |
| [OnKeyEvent](OnKeyEvent.md) | 公开方法,详见头文件声明。 |
| [OnMouseButton](OnMouseButton.md) | 公开方法,详见头文件声明。 |
| [OnMouseMove](OnMouseMove.md) | 公开方法,详见头文件声明。 |
| [OnMouseWheel](OnMouseWheel.md) | 公开方法,详见头文件声明。 |
| [OnTextInput](OnTextInput.md) | 公开方法,详见头文件声明。 |
| [ProcessKeyDown](ProcessKeyDown.md) | 公开方法,详见头文件声明。 |
| [ProcessKeyUp](ProcessKeyUp.md) | 公开方法,详见头文件声明。 |
| [ProcessMouseMove](ProcessMouseMove.md) | 公开方法,详见头文件声明。 |
| [ProcessMouseButton](ProcessMouseButton.md) | 公开方法,详见头文件声明。 |
| [ProcessMouseWheel](ProcessMouseWheel.md) | 公开方法,详见头文件声明。 |
| [ProcessTextInput](ProcessTextInput.md) | 公开方法,详见头文件声明。 |
| [Get](Get.md) | 获取全局 `InputManager` 实例。 |
| [Initialize](Initialize.md) | 初始化输入状态和默认映射。 |
| [Shutdown](Shutdown.md) | 清空输入状态与映射。 |
| [Update](Update.md) | 推进帧边界并清理瞬时状态。 |
| [IsKeyDown](IsKeyDown.md) | 查询键是否处于按下状态。 |
| [IsKeyUp](IsKeyUp.md) | 查询键是否处于抬起状态。 |
| [IsKeyPressed](IsKeyPressed.md) | 查询键是否在本帧刚被按下。 |
| [GetMousePosition](GetMousePosition.md) | 读取当前鼠标位置。 |
| [GetMouseDelta](GetMouseDelta.md) | 读取本帧鼠标位移。 |
| [GetMouseScrollDelta](GetMouseScrollDelta.md) | 读取本帧滚轮增量。 |
| [IsMouseButtonDown](IsMouseButtonDown.md) | 查询鼠标按键是否按下。 |
| [IsMouseButtonUp](IsMouseButtonUp.md) | 查询鼠标按键是否抬起。 |
| [IsMouseButtonClicked](IsMouseButtonClicked.md) | 查询鼠标按键是否在本帧刚被按下。 |
| [GetTouchCount](GetTouchCount.md) | 读取触点数量。 |
| [GetTouch](GetTouch.md) | 读取指定触点状态。 |
| [GetAxis](GetAxis.md) | 读取具名逻辑轴。 |
| [GetAxisRaw](GetAxisRaw.md) | 读取具名逻辑轴的当前原始值。 |
| [GetButton](GetButton.md) | 查询具名按钮当前是否按下。 |
| [GetButtonDown](GetButtonDown.md) | 查询具名按钮是否在本帧刚按下。 |
| [GetButtonUp](GetButtonUp.md) | 查询具名按钮是否处于抬起状态。 |
| [RegisterAxis](RegisterAxis.md) | 注册或覆盖一个具名轴。 |
| [RegisterButton](RegisterButton.md) | 注册或覆盖一个具名按钮。 |
| [ClearAxes](ClearAxes.md) | 清空轴和按钮映射。 |
| [OnKeyEvent](OnKeyEvent.md) | 获取键盘事件通道。 |
| [OnMouseButton](OnMouseButton.md) | 获取鼠标按键事件通道。 |
| [OnMouseMove](OnMouseMove.md) | 获取鼠标移动事件通道。 |
| [OnMouseWheel](OnMouseWheel.md) | 获取鼠标滚轮事件通道。 |
| [OnTextInput](OnTextInput.md) | 获取文本输入事件通道。 |
| [ProcessKeyDown](ProcessKeyDown.md) | 注入按键按下事件。 |
| [ProcessKeyUp](ProcessKeyUp.md) | 注入按键抬起事件。 |
| [ProcessMouseMove](ProcessMouseMove.md) | 注入鼠标移动事件。 |
| [ProcessMouseButton](ProcessMouseButton.md) | 注入鼠标按键事件。 |
| [ProcessMouseWheel](ProcessMouseWheel.md) | 注入鼠标滚轮事件。 |
| [ProcessTextInput](ProcessTextInput.md) | 注入文本输入事件。 |
## 相关文档
- [当前目录](../Input.md) - 返回 `Input` 平行目录
- [API 总索引](../../../main.md) - 返回顶层索引
- [当前模块](../Input.md)
- [InputAxis](../InputAxis/InputAxis.md)
- [InputEvent](../InputEvent/InputEvent.md)
- [Input Flow And Frame Semantics](../../../_guides/Input/Input-Flow-and-Frame-Semantics.md)

View File

@@ -1,31 +1,36 @@
# InputManager::IsKeyDown
查询当前状态
查询一个键当前是否按下
```cpp
bool IsKeyDown(KeyCode key) const;
```
该方法声明于 `XCEngine/Input/InputManager.h`,当前页面用于固定 `InputManager` 类目录下的方法级 canonical 路径。
## 行为说明
**参数:**
- `key` - 参数语义详见头文件声明。
当前实现会:
**返回:** `bool` - 返回值语义详见头文件声明。
- 如果未初始化,返回 `false`
-`KeyCode` 强转成数组下标
- 如果下标越界,返回 `false`
- 否则返回 `m_keyDown[index]`
**示例:**
## 参数
- `key` - 要查询的键。
## 返回值
- `bool` - 当前是否按下。
## 示例
```cpp
#include <XCEngine/Input/InputManager.h>
void Example() {
XCEngine::Input::InputManager object;
// 根据上下文补齐参数后调用 InputManager::IsKeyDown(...)。
(void)object;
}
bool held = XCEngine::Input::InputManager::Get().IsKeyDown(XCEngine::Input::KeyCode::A);
```
## 相关文档
- [返回类总览](InputManager.md)
- [返回模块目录](../Input.md)
- [返回类总览](InputManager.md)
- [IsKeyPressed](IsKeyPressed.md)
- [IsKeyUp](IsKeyUp.md)

View File

@@ -1,31 +1,39 @@
# InputManager::IsKeyPressed
查询当前状态
查询一个键是否在本帧刚被按下
```cpp
bool IsKeyPressed(KeyCode key) const;
```
该方法声明于 `XCEngine/Input/InputManager.h`,当前页面用于固定 `InputManager` 类目录下的方法级 canonical 路径。
## 行为说明
**参数:**
- `key` - 参数语义详见头文件声明。
**返回:** `bool` - 返回值语义详见头文件声明。
**示例:**
当前实现判断条件是:
```cpp
#include <XCEngine/Input/InputManager.h>
m_keyDownThisFrame[index] && !m_keyDownLastFrame[index]
```
void Example() {
XCEngine::Input::InputManager object;
// 根据上下文补齐参数后调用 InputManager::IsKeyPressed(...)。
(void)object;
所以它表示的是“从上一帧到当前帧的按下边沿”。要得到正确结果,必须保证 [Update](Update.md) 每帧只在固定边界调用一次。
## 参数
- `key` - 要查询的键。
## 返回值
- `bool` - 当前帧是否刚按下。
## 示例
```cpp
if (XCEngine::Input::InputManager::Get().IsKeyPressed(XCEngine::Input::KeyCode::Space)) {
// ...
}
```
## 相关文档
- [返回类总览](InputManager.md)
- [返回模块目录](../Input.md)
- [返回类总览](InputManager.md)
- [Update](Update.md)
- [IsKeyDown](IsKeyDown.md)

View File

@@ -1,31 +1,29 @@
# InputManager::IsKeyUp
查询当前状态。
查询一个键当前是否处于抬起状态。
```cpp
bool IsKeyUp(KeyCode key) const;
```
该方法声明于 `XCEngine/Input/InputManager.h`,当前页面用于固定 `InputManager` 类目录下的方法级 canonical 路径。
## 行为说明
**参数:**
- `key` - 参数语义详见头文件声明。
当前实现有一个很宽松的定义:
**返回:** `bool` - 返回值语义详见头文件声明。
- 如果管理器未初始化,返回 `true`
- 否则返回 `!IsKeyDown(key)`
**示例:**
因此对于未初始化或未识别的键,它都会被视为 “Up”。
```cpp
#include <XCEngine/Input/InputManager.h>
## 参数
void Example() {
XCEngine::Input::InputManager object;
// 根据上下文补齐参数后调用 InputManager::IsKeyUp(...)。
(void)object;
}
```
- `key` - 要查询的键。
## 返回值
- `bool` - 当前是否抬起。
## 相关文档
- [返回类总览](InputManager.md)
- [返回模块目录](../Input.md)
- [返回类总览](InputManager.md)
- [IsKeyDown](IsKeyDown.md)

View File

@@ -1,31 +1,31 @@
# InputManager::IsMouseButtonClicked
查询当前状态
查询鼠标按键是否在本帧刚被按下
```cpp
bool IsMouseButtonClicked(MouseButton button) const;
```
该方法声明于 `XCEngine/Input/InputManager.h`,当前页面用于固定 `InputManager` 类目录下的方法级 canonical 路径。
## 行为说明
**参数:**
- `button` - 参数语义详见头文件声明。
**返回:** `bool` - 返回值语义详见头文件声明。
**示例:**
当前实现与 `IsKeyPressed` 类似,判断条件是:
```cpp
#include <XCEngine/Input/InputManager.h>
void Example() {
XCEngine::Input::InputManager object;
// 根据上下文补齐参数后调用 InputManager::IsMouseButtonClicked(...)。
(void)object;
}
m_mouseButtonDownThisFrame[index] && !m_mouseButtonDownLastFrame[index]
```
它表示的是“本帧按下边沿”,而不是完整的点击手势。
## 参数
- `button` - 要查询的鼠标按键。
## 返回值
- `bool` - 当前帧是否刚被按下。
## 相关文档
- [返回类总览](InputManager.md)
- [返回模块目录](../Input.md)
- [返回类总览](InputManager.md)
- [IsMouseButtonDown](IsMouseButtonDown.md)
- [Update](Update.md)

View File

@@ -1,31 +1,24 @@
# InputManager::IsMouseButtonDown
查询当前状态
查询鼠标按键当前是否按下
```cpp
bool IsMouseButtonDown(MouseButton button) const;
```
该方法声明于 `XCEngine/Input/InputManager.h`,当前页面用于固定 `InputManager` 类目录下的方法级 canonical 路径。
## 行为说明
**参数:**
- `button` - 参数语义详见头文件声明。
如果未初始化或按钮索引越界,当前实现返回 `false`。否则返回 `m_mouseButtonDown[index]`
**返回:** `bool` - 返回值语义详见头文件声明。
## 参数
**示例:**
- `button` - 要查询的鼠标按键。
```cpp
#include <XCEngine/Input/InputManager.h>
## 返回值
void Example() {
XCEngine::Input::InputManager object;
// 根据上下文补齐参数后调用 InputManager::IsMouseButtonDown(...)。
(void)object;
}
```
- `bool` - 当前是否按下。
## 相关文档
- [返回类总览](InputManager.md)
- [返回模块目录](../Input.md)
- [返回类总览](InputManager.md)
- [IsMouseButtonUp](IsMouseButtonUp.md)

View File

@@ -1,31 +1,24 @@
# InputManager::IsMouseButtonUp
查询当前状态。
查询鼠标按键当前是否处于抬起状态。
```cpp
bool IsMouseButtonUp(MouseButton button) const;
```
该方法声明于 `XCEngine/Input/InputManager.h`,当前页面用于固定 `InputManager` 类目录下的方法级 canonical 路径。
## 行为说明
**参数:**
- `button` - 参数语义详见头文件声明。
如果未初始化,当前实现返回 `true`;否则返回 `!IsMouseButtonDown(button)`。这和键盘的 `IsKeyUp` 语义一致。
**返回:** `bool` - 返回值语义详见头文件声明。
## 参数
**示例:**
- `button` - 要查询的鼠标按键。
```cpp
#include <XCEngine/Input/InputManager.h>
## 返回值
void Example() {
XCEngine::Input::InputManager object;
// 根据上下文补齐参数后调用 InputManager::IsMouseButtonUp(...)。
(void)object;
}
```
- `bool` - 当前是否抬起。
## 相关文档
- [返回类总览](InputManager.md)
- [返回模块目录](../Input.md)
- [返回类总览](InputManager.md)
- [IsMouseButtonDown](IsMouseButtonDown.md)

View File

@@ -1,30 +1,34 @@
# InputManager::OnKeyEvent
公开方法,详见头文件声明
获取键盘事件通道
```cpp
Core::Event<const KeyEvent&>& OnKeyEvent();
```
该方法声明于 `XCEngine/Input/InputManager.h`,当前页面用于固定 `InputManager` 类目录下的方法级 canonical 路径。
## 行为说明
**参数:**
返回内部 `Core::Event<const KeyEvent&>` 引用。当前事件会在 [ProcessKeyDown](ProcessKeyDown.md) 和 [ProcessKeyUp](ProcessKeyUp.md) 中同步触发
**返回:** `Core::Event<const KeyEvent&>&` - 返回值语义详见头文件声明。
需要注意:
**示例:**
- 回调执行线程就是调用 `Process*` 的线程。
- 当前 `Shutdown()` 不会清空这个事件对象中的监听器。
## 返回值
- `Core::Event<const KeyEvent&>&` - 键盘事件通道。
## 示例
```cpp
#include <XCEngine/Input/InputManager.h>
void Example() {
XCEngine::Input::InputManager object;
// 根据上下文补齐参数后调用 InputManager::OnKeyEvent(...)。
(void)object;
}
auto id = XCEngine::Input::InputManager::Get().OnKeyEvent().Subscribe(
[](const XCEngine::Input::KeyEvent& e) {}
);
```
## 相关文档
- [返回类总览](InputManager.md)
- [返回模块目录](../Input.md)
- [返回类总览](InputManager.md)
- [ProcessKeyDown](ProcessKeyDown.md)
- [ProcessKeyUp](ProcessKeyUp.md)

View File

@@ -1,30 +1,20 @@
# InputManager::OnMouseButton
公开方法,详见头文件声明
获取鼠标按键事件通道
```cpp
Core::Event<const MouseButtonEvent&>& OnMouseButton();
```
该方法声明于 `XCEngine/Input/InputManager.h`,当前页面用于固定 `InputManager` 类目录下的方法级 canonical 路径。
## 行为说明
**参数:**
当前事件会在 [ProcessMouseButton](ProcessMouseButton.md) 中同步触发。它适合 UI、编辑器工具和测试代码订阅鼠标按键变化
**返回:** `Core::Event<const MouseButtonEvent&>&` - 返回值语义详见头文件声明。
## 返回值
**示例:**
```cpp
#include <XCEngine/Input/InputManager.h>
void Example() {
XCEngine::Input::InputManager object;
// 根据上下文补齐参数后调用 InputManager::OnMouseButton(...)。
(void)object;
}
```
- `Core::Event<const MouseButtonEvent&>&` - 鼠标按键事件通道。
## 相关文档
- [返回类总览](InputManager.md)
- [返回模块目录](../Input.md)
- [返回类总览](InputManager.md)
- [ProcessMouseButton](ProcessMouseButton.md)

View File

@@ -1,30 +1,20 @@
# InputManager::OnMouseMove
公开方法,详见头文件声明
获取鼠标移动事件通道
```cpp
Core::Event<const MouseMoveEvent&>& OnMouseMove();
```
该方法声明于 `XCEngine/Input/InputManager.h`,当前页面用于固定 `InputManager` 类目录下的方法级 canonical 路径。
## 行为说明
**参数:**
当前事件会在 [ProcessMouseMove](ProcessMouseMove.md) 中同步触发,回调里可以直接读取本次输入事件的位置和 delta
**返回:** `Core::Event<const MouseMoveEvent&>&` - 返回值语义详见头文件声明。
## 返回值
**示例:**
```cpp
#include <XCEngine/Input/InputManager.h>
void Example() {
XCEngine::Input::InputManager object;
// 根据上下文补齐参数后调用 InputManager::OnMouseMove(...)。
(void)object;
}
```
- `Core::Event<const MouseMoveEvent&>&` - 鼠标移动事件通道。
## 相关文档
- [返回类总览](InputManager.md)
- [返回模块目录](../Input.md)
- [返回类总览](InputManager.md)
- [ProcessMouseMove](ProcessMouseMove.md)

View File

@@ -1,30 +1,20 @@
# InputManager::OnMouseWheel
公开方法,详见头文件声明
获取鼠标滚轮事件通道
```cpp
Core::Event<const MouseWheelEvent&>& OnMouseWheel();
```
该方法声明于 `XCEngine/Input/InputManager.h`,当前页面用于固定 `InputManager` 类目录下的方法级 canonical 路径。
## 行为说明
**参数:**
当前事件会在 [ProcessMouseWheel](ProcessMouseWheel.md) 中同步触发。它和 `GetMouseScrollDelta` 的区别在于:事件可以立即响应每次滚轮输入,而轮询接口只保留当前保存的一个 delta
**返回:** `Core::Event<const MouseWheelEvent&>&` - 返回值语义详见头文件声明。
## 返回值
**示例:**
```cpp
#include <XCEngine/Input/InputManager.h>
void Example() {
XCEngine::Input::InputManager object;
// 根据上下文补齐参数后调用 InputManager::OnMouseWheel(...)。
(void)object;
}
```
- `Core::Event<const MouseWheelEvent&>&` - 鼠标滚轮事件通道。
## 相关文档
- [返回类总览](InputManager.md)
- [返回模块目录](../Input.md)
- [返回类总览](InputManager.md)
- [ProcessMouseWheel](ProcessMouseWheel.md)

View File

@@ -1,30 +1,20 @@
# InputManager::OnTextInput
公开方法,详见头文件声明
获取文本输入事件通道
```cpp
Core::Event<const TextInputEvent&>& OnTextInput();
```
该方法声明于 `XCEngine/Input/InputManager.h`,当前页面用于固定 `InputManager` 类目录下的方法级 canonical 路径。
## 行为说明
**参数:**
当前事件会在 [ProcessTextInput](ProcessTextInput.md) 中同步触发。它适合接 UI 输入框、控制台和编辑器文本输入,而不是通用按键绑定逻辑
**返回:** `Core::Event<const TextInputEvent&>&` - 返回值语义详见头文件声明。
## 返回值
**示例:**
```cpp
#include <XCEngine/Input/InputManager.h>
void Example() {
XCEngine::Input::InputManager object;
// 根据上下文补齐参数后调用 InputManager::OnTextInput(...)。
(void)object;
}
```
- `Core::Event<const TextInputEvent&>&` - 文本输入事件通道。
## 相关文档
- [返回类总览](InputManager.md)
- [返回模块目录](../Input.md)
- [返回类总览](InputManager.md)
- [ProcessTextInput](ProcessTextInput.md)

View File

@@ -1,36 +1,37 @@
# InputManager::ProcessKeyDown
公开方法,详见头文件声明
向输入系统注入一个按键按下事件
```cpp
void ProcessKeyDown(KeyCode key, bool repeat, bool alt, bool ctrl, bool shift, bool meta);
```
该方法声明于 `XCEngine/Input/InputManager.h`,当前页面用于固定 `InputManager` 类目录下的方法级 canonical 路径。
## 行为说明
**参数:**
- `key` - 参数语义详见头文件声明。
- `repeat` - 参数语义详见头文件声明。
- `alt` - 参数语义详见头文件声明。
- `ctrl` - 参数语义详见头文件声明。
- `shift` - 参数语义详见头文件声明。
- `meta` - 参数语义详见头文件声明。
当前实现会:
**返回:** `void` - 无返回值。
- 如果未初始化或键索引越界,直接返回
-`m_keyDown[index]` 设为 `true`
-`m_keyDownThisFrame[index]` 设为 `true`
- 构造 `KeyEvent`
- 如果 `repeat``true`,事件类型设为 `Repeat`,否则为 `Down`
- 同步触发 `m_onKeyEvent`
**示例:**
## 参数
```cpp
#include <XCEngine/Input/InputManager.h>
- `key` - 键值。
- `repeat` - 是否为重复按键事件。
- `alt` - Alt 修饰键状态。
- `ctrl` - Ctrl 修饰键状态。
- `shift` - Shift 修饰键状态。
- `meta` - Meta 修饰键状态。
void Example() {
XCEngine::Input::InputManager object;
// 根据上下文补齐参数后调用 InputManager::ProcessKeyDown(...)
(void)object;
}
```
## 返回值
-
## 相关文档
- [返回类总览](InputManager.md)
- [返回模块目录](../Input.md)
- [返回类总览](InputManager.md)
- [OnKeyEvent](OnKeyEvent.md)
- [ProcessKeyUp](ProcessKeyUp.md)

View File

@@ -1,35 +1,36 @@
# InputManager::ProcessKeyUp
公开方法,详见头文件声明
向输入系统注入一个按键抬起事件
```cpp
void ProcessKeyUp(KeyCode key, bool alt, bool ctrl, bool shift, bool meta);
```
该方法声明于 `XCEngine/Input/InputManager.h`,当前页面用于固定 `InputManager` 类目录下的方法级 canonical 路径。
## 行为说明
**参数:**
- `key` - 参数语义详见头文件声明。
- `alt` - 参数语义详见头文件声明。
- `ctrl` - 参数语义详见头文件声明。
- `shift` - 参数语义详见头文件声明。
- `meta` - 参数语义详见头文件声明。
当前实现会:
**返回:** `void` - 无返回值。
- 如果未初始化或键索引越界,直接返回
-`m_keyDown[index]` 设为 `false`
- 构造 `KeyEvent`,类型固定为 `KeyEvent::Up`
- 同步触发 `m_onKeyEvent`
**示例:**
当前没有单独的 “key up this frame” 标志位;抬起后,`IsKeyUp` 会立即通过 `!IsKeyDown(key)` 成立。
```cpp
#include <XCEngine/Input/InputManager.h>
## 参数
void Example() {
XCEngine::Input::InputManager object;
// 根据上下文补齐参数后调用 InputManager::ProcessKeyUp(...)
(void)object;
}
```
- `key` - 键值。
- `alt` - Alt 修饰键状态。
- `ctrl` - Ctrl 修饰键状态
- `shift` - Shift 修饰键状态。
- `meta` - Meta 修饰键状态。
## 返回值
- 无。
## 相关文档
- [返回类总览](InputManager.md)
- [返回模块目录](../Input.md)
- [返回类总览](InputManager.md)
- [ProcessKeyDown](ProcessKeyDown.md)
- [OnKeyEvent](OnKeyEvent.md)

View File

@@ -1,34 +1,36 @@
# InputManager::ProcessMouseButton
公开方法,详见头文件声明
向输入系统注入一个鼠标按键事件
```cpp
void ProcessMouseButton(MouseButton button, bool pressed, int x, int y);
```
该方法声明于 `XCEngine/Input/InputManager.h`,当前页面用于固定 `InputManager` 类目录下的方法级 canonical 路径。
## 行为说明
**参数:**
- `button` - 参数语义详见头文件声明。
- `pressed` - 参数语义详见头文件声明。
- `x` - 参数语义详见头文件声明。
- `y` - 参数语义详见头文件声明。
当前实现会:
**返回:** `void` - 无返回值。
- 如果未初始化或按钮索引越界,直接返回
-`m_mouseButtonDown[index]` 更新为 `pressed`
- 只有在 `pressed == true` 时,才把 `m_mouseButtonDownThisFrame[index]` 设为 `true`
- 构造 `MouseButtonEvent`
- 同步触发 `m_onMouseButton`
**示例:**
这意味着当前实现只显式记录“按下边沿”,没有单独的 “mouse up this frame” 缓存。
```cpp
#include <XCEngine/Input/InputManager.h>
## 参数
void Example() {
XCEngine::Input::InputManager object;
// 根据上下文补齐参数后调用 InputManager::ProcessMouseButton(...)
(void)object;
}
```
- `button` - 鼠标按键。
- `pressed` - `true` 表示按下,`false` 表示释放。
- `x` - 事件位置 X
- `y` - 事件位置 Y。
## 返回值
- 无。
## 相关文档
- [返回类总览](InputManager.md)
- [返回模块目录](../Input.md)
- [返回类总览](InputManager.md)
- [OnMouseButton](OnMouseButton.md)
- [IsMouseButtonClicked](IsMouseButtonClicked.md)

View File

@@ -1,34 +1,36 @@
# InputManager::ProcessMouseMove
公开方法,详见头文件声明
向输入系统注入一个鼠标移动事件
```cpp
void ProcessMouseMove(int x, int y, int deltaX, int deltaY);
```
该方法声明于 `XCEngine/Input/InputManager.h`,当前页面用于固定 `InputManager` 类目录下的方法级 canonical 路径。
## 行为说明
**参数:**
- `x` - 参数语义详见头文件声明。
- `y` - 参数语义详见头文件声明。
- `deltaX` - 参数语义详见头文件声明。
- `deltaY` - 参数语义详见头文件声明。
当前实现会:
**返回:** `void` - 无返回值。
- 如果未初始化,直接返回
- 更新 `m_mousePosition`
- 更新 `m_mouseDelta`
- 构造 `MouseMoveEvent`
- 同步触发 `m_onMouseMove`
**示例:**
它不会累积一帧内的多次移动量,`m_mouseDelta` 始终是最近一次写入的值。
```cpp
#include <XCEngine/Input/InputManager.h>
## 参数
void Example() {
XCEngine::Input::InputManager object;
// 根据上下文补齐参数后调用 InputManager::ProcessMouseMove(...)
(void)object;
}
```
- `x` - 当前鼠标位置 X。
- `y` - 当前鼠标位置 Y。
- `deltaX` - 相对位移 X
- `deltaY` - 相对位移 Y。
## 返回值
- 无。
## 相关文档
- [返回类总览](InputManager.md)
- [返回模块目录](../Input.md)
- [返回类总览](InputManager.md)
- [OnMouseMove](OnMouseMove.md)
- [GetMouseDelta](GetMouseDelta.md)

View File

@@ -1,33 +1,34 @@
# InputManager::ProcessMouseWheel
公开方法,详见头文件声明
向输入系统注入一个鼠标滚轮事件
```cpp
void ProcessMouseWheel(float delta, int x, int y);
```
该方法声明于 `XCEngine/Input/InputManager.h`,当前页面用于固定 `InputManager` 类目录下的方法级 canonical 路径。
## 行为说明
**参数:**
- `delta` - 参数语义详见头文件声明。
- `x` - 参数语义详见头文件声明。
- `y` - 参数语义详见头文件声明。
当前实现会:
**返回:** `void` - 无返回值。
- 如果未初始化,直接返回
-`delta` 覆盖 `m_mouseScrollDelta`
- 构造 `MouseWheelEvent`
- 同步触发 `m_onMouseWheel`
**示例:**
它不会把多次滚轮输入累加到当前帧总量中。
```cpp
#include <XCEngine/Input/InputManager.h>
## 参数
void Example() {
XCEngine::Input::InputManager object;
// 根据上下文补齐参数后调用 InputManager::ProcessMouseWheel(...)
(void)object;
}
```
- `delta` - 滚轮增量。
- `x` - 鼠标位置 X。
- `y` - 鼠标位置 Y
## 返回值
- 无。
## 相关文档
- [返回类总览](InputManager.md)
- [返回模块目录](../Input.md)
- [返回类总览](InputManager.md)
- [OnMouseWheel](OnMouseWheel.md)
- [GetMouseScrollDelta](GetMouseScrollDelta.md)

View File

@@ -1,31 +1,32 @@
# InputManager::ProcessTextInput
公开方法,详见头文件声明
向输入系统注入一个文本输入事件
```cpp
void ProcessTextInput(char c);
```
该方法声明于 `XCEngine/Input/InputManager.h`,当前页面用于固定 `InputManager` 类目录下的方法级 canonical 路径。
## 行为说明
**参数:**
- `c` - 参数语义详见头文件声明。
当前实现会:
**返回:** `void` - 无返回值。
- 如果未初始化,直接返回
- 构造 `TextInputEvent`
-`character` 设为 `c`
-`text` 构造成长度为 1 的 `Containers::String`
- 同步触发 `m_onTextInput`
**示例:**
它适合处理字符输入,而不是通用按键状态。
```cpp
#include <XCEngine/Input/InputManager.h>
## 参数
void Example() {
XCEngine::Input::InputManager object;
// 根据上下文补齐参数后调用 InputManager::ProcessTextInput(...)。
(void)object;
}
```
- `c` - 输入字符。
## 返回值
- 无。
## 相关文档
- [返回类总览](InputManager.md)
- [返回模块目录](../Input.md)
- [返回类总览](InputManager.md)
- [OnTextInput](OnTextInput.md)

View File

@@ -1,31 +1,35 @@
# InputManager::RegisterAxis
注册对象、回调或映射
注册或覆盖一个具名逻辑轴
```cpp
void RegisterAxis(const InputAxis& axis);
```
该方法声明于 `XCEngine/Input/InputManager.h`,当前页面用于固定 `InputManager` 类目录下的方法级 canonical 路径。
## 行为说明
**参数:**
- `axis` - 参数语义详见头文件声明。
**返回:** `void` - 无返回值。
**示例:**
当前实现会执行:
```cpp
#include <XCEngine/Input/InputManager.h>
void Example() {
XCEngine::Input::InputManager object;
// 根据上下文补齐参数后调用 InputManager::RegisterAxis(...)。
(void)object;
}
m_axes[axis.GetName()] = axis;
```
因此:
- 同名轴会被覆盖
- `InputAxis` 会按值复制进管理器
- 后续再修改原始 `axis` 对象不会影响管理器中的副本
## 参数
- `axis` - 轴配置对象。
## 返回值
- 无。
## 相关文档
- [返回类总览](InputManager.md)
- [返回模块目录](../Input.md)
- [返回类总览](InputManager.md)
- [GetAxis](GetAxis.md)
- [ClearAxes](ClearAxes.md)

View File

@@ -1,32 +1,26 @@
# InputManager::RegisterButton
注册对象、回调或映射
注册或覆盖一个具名逻辑按钮
```cpp
void RegisterButton(const Containers::String& name, KeyCode key);
```
该方法声明于 `XCEngine/Input/InputManager.h`,当前页面用于固定 `InputManager` 类目录下的方法级 canonical 路径。
## 行为说明
**参数:**
- `name` - 参数语义详见头文件声明。
- `key` - 参数语义详见头文件声明。
当前实现只保存 `name -> key` 的映射关系,不会创建更复杂的动作状态机。逻辑按钮本质上只是一个有名字的 `KeyCode` 别名。
**返回:** `void` - 无返回值。
## 参数
**示例:**
- `name` - 逻辑按钮名称。
- `key` - 对应的按键。
```cpp
#include <XCEngine/Input/InputManager.h>
## 返回值
void Example() {
XCEngine::Input::InputManager object;
// 根据上下文补齐参数后调用 InputManager::RegisterButton(...)。
(void)object;
}
```
- 无。
## 相关文档
- [返回类总览](InputManager.md)
- [返回模块目录](../Input.md)
- [返回类总览](InputManager.md)
- [GetButton](GetButton.md)
- [ClearAxes](ClearAxes.md)

View File

@@ -1,30 +1,34 @@
# InputManager::Shutdown
关闭并清理内部状态
清空输入状态缓存和逻辑映射
```cpp
void Shutdown();
```
该方法声明于 `XCEngine/Input/InputManager.h`,当前页面用于固定 `InputManager` 类目录下的方法级 canonical 路径。
## 行为说明
**参数:** 无。
当前实现只有在已初始化时才会执行关闭逻辑。它会清空:
**返回:** `void` - 无返回值。
- 键盘状态数组
- 鼠标按键状态数组
- 轴映射
- 按钮映射
- 按钮瞬时状态数组
**示例:**
然后把 `m_platformWindowHandle` 置空,并把 `m_initialized` 设为 `false`
```cpp
#include <XCEngine/Input/InputManager.h>
当前不会清空:
void Example() {
XCEngine::Input::InputManager object;
// 根据上下文补齐参数后调用 InputManager::Shutdown(...)。
(void)object;
}
```
- 事件监听器
- `m_touches`
- 鼠标位置缓存
## 返回值
- 无。
## 相关文档
- [返回类总览](InputManager.md)
- [返回模块目录](../Input.md)
- [返回类总览](InputManager.md)
- [Initialize](Initialize.md)

View File

@@ -1,31 +1,36 @@
# InputManager::Update
更新运行时状态。
推进输入系统的帧边界并清理瞬时状态。
```cpp
void Update(float deltaTime);
```
该方法声明于 `XCEngine/Input/InputManager.h`,当前页面用于固定 `InputManager` 类目录下的方法级 canonical 路径。
## 行为说明
**参数:**
- `deltaTime` - 参数语义详见头文件声明。
当前实现如果未初始化则直接返回。否则会:
**返回:** `void` - 无返回值。
-`m_keyDownThisFrame` 复制到 `m_keyDownLastFrame`
- 清空并重建 `m_keyDownThisFrame`
-`m_mouseButtonDownThisFrame` 复制到 `m_mouseButtonDownLastFrame`
- 清空并重建 `m_mouseButtonDownThisFrame`
-`m_buttonDownThisFrame` 复制到 `m_buttonDownLastFrame`
- 清空并重建 `m_buttonDownThisFrame`
-`m_mouseDelta` 重置为零向量
-`m_mouseScrollDelta` 重置为 `0.0f`
**示例:**
当前 `deltaTime` 参数没有被使用。
```cpp
#include <XCEngine/Input/InputManager.h>
## 参数
void Example() {
XCEngine::Input::InputManager object;
// 根据上下文补齐参数后调用 InputManager::Update(...)。
(void)object;
}
```
- `deltaTime` - 当前未使用,但保留在接口中。
## 返回值
- 无。
## 相关文档
- [返回类总览](InputManager.md)
- [返回模块目录](../Input.md)
- [返回类总览](InputManager.md)
- [IsKeyPressed](IsKeyPressed.md)
- [IsMouseButtonClicked](IsMouseButtonClicked.md)