docs: rebuild Input API content
This commit is contained in:
@@ -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)
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user