ShitEngine 1.4.2
基于 C++20 与 SDL3 的轻量级 2D 游戏引擎
载入中...
搜索中...
未找到
Input类 参考

输入管理(单例) 更多...

#include <Input.h>

Public 成员函数

bool isKeyDown (KeyCode code) const
bool isKeyPressed (KeyCode code) const
bool isKeyReleased (KeyCode code) const
bool isMouseButtonDown (MouseButton code) const
bool isMouseButtonPressed (MouseButton code) const
bool isMouseButtonReleased (MouseButton code) const
Vector2 getMousePosition () const
Vector2 getMouseScroll () const
bool isActionDown (const std::string &action) const
bool isActionPressed (const std::string &action) const
bool isActionReleased (const std::string &action) const
float getAxis (const std::string &axis) const
void initMappings ()
 从 Config 预编译动作/轴绑定(Config::Init 之后调用)
void update ()
 帧末:current → previous
void handleEvent (const SDL_Event &event)
void setMousePosition (const Vector2 &position)
 注入鼠标逻辑坐标(编辑器进程内嵌时由宿主转发 Qt 事件坐标)
void resetState ()
 清空键鼠三态快照与注入坐标(进入运行态时调用,防遗留按住状态)

静态 Public 成员函数

static Input & GetInstance ()
static bool IsKeyDown (KeyCode code)
static bool IsKeyPressed (KeyCode code)
static bool IsKeyReleased (KeyCode code)
static bool IsMouseButtonDown (MouseButton code)
static bool IsMouseButtonPressed (MouseButton code)
static bool IsMouseButtonReleased (MouseButton code)
static Vector2 GetMousePosition ()
static Vector2 GetMouseScroll ()
static bool IsActionDown (const std::string &action)
static bool IsActionPressed (const std::string &action)
static bool IsActionReleased (const std::string &action)
static float GetAxis (const std::string &axis)
static void InitMappings ()
static void Update ()
static void HandleEvent (const SDL_Event &event)
static void SetMousePosition (const Vector2 &position)
 编辑器注入逻辑坐标(隐藏窗口下 SDL 轮询不到真实鼠标)
static void ResetState ()
 清空键鼠快照与注入坐标(进入运行态时调用)

友元

class EngineContext

详细描述

输入管理(单例)

同时提供两层 API(类似 Unity / Godot):

  1. 底层键鼠 Input::IsKeyDown(KeyCode::Space) Input::IsMouseButtonPressed(MouseButton::Left)
  2. 动作 / 轴映射(配置在 settings.json 的 inputMappings) Input::IsActionDown("Jump") Input::IsActionPressed("Jump") Input::IsActionReleased("Jump") Input::GetAxis("Horizontal") // -1 / 0 / 1

命名约定(与 Unity 不同,请注意): Down = 刚按下(仅一帧) Pressed = 持续按住 Released = 刚松开(仅一帧)

键名使用 SDL 官方 scancode 名("Space"/"A"/"Left Shift"), 也接受无空格别名("LeftShift" → "Left Shift")。 鼠标:MouseButton.Left / Right / Middle / XButton1 / XButton2

成员函数说明

◆ GetAxis()

float GetAxis ( const std::string & axis)
inlinestatic

◆ getAxis()

float getAxis ( const std::string & axis) const

◆ GetInstance()

Input & GetInstance ( )
static

◆ GetMousePosition()

Vector2 GetMousePosition ( )
inlinestatic

◆ getMousePosition()

Vector2 getMousePosition ( ) const

◆ GetMouseScroll()

Vector2 GetMouseScroll ( )
inlinestatic

◆ getMouseScroll()

Vector2 getMouseScroll ( ) const

◆ HandleEvent()

void HandleEvent ( const SDL_Event & event)
inlinestatic

◆ handleEvent()

void handleEvent ( const SDL_Event & event)

◆ InitMappings()

void InitMappings ( )
inlinestatic

◆ initMappings()

void initMappings ( )

从 Config 预编译动作/轴绑定(Config::Init 之后调用)

◆ IsActionDown()

bool IsActionDown ( const std::string & action)
inlinestatic

◆ isActionDown()

bool isActionDown ( const std::string & action) const

◆ IsActionPressed()

bool IsActionPressed ( const std::string & action)
inlinestatic

◆ isActionPressed()

bool isActionPressed ( const std::string & action) const

◆ IsActionReleased()

bool IsActionReleased ( const std::string & action)
inlinestatic

◆ isActionReleased()

bool isActionReleased ( const std::string & action) const

◆ IsKeyDown()

bool IsKeyDown ( KeyCode code)
inlinestatic

◆ isKeyDown()

bool isKeyDown ( KeyCode code) const

◆ IsKeyPressed()

bool IsKeyPressed ( KeyCode code)
inlinestatic

◆ isKeyPressed()

bool isKeyPressed ( KeyCode code) const

◆ IsKeyReleased()

bool IsKeyReleased ( KeyCode code)
inlinestatic

◆ isKeyReleased()

bool isKeyReleased ( KeyCode code) const

◆ IsMouseButtonDown()

bool IsMouseButtonDown ( MouseButton code)
inlinestatic

◆ isMouseButtonDown()

bool isMouseButtonDown ( MouseButton code) const

◆ IsMouseButtonPressed()

bool IsMouseButtonPressed ( MouseButton code)
inlinestatic

◆ isMouseButtonPressed()

bool isMouseButtonPressed ( MouseButton code) const

◆ IsMouseButtonReleased()

bool IsMouseButtonReleased ( MouseButton code)
inlinestatic

◆ isMouseButtonReleased()

bool isMouseButtonReleased ( MouseButton code) const

◆ ResetState()

void ResetState ( )
inlinestatic

清空键鼠快照与注入坐标(进入运行态时调用)

◆ resetState()

void resetState ( )

清空键鼠三态快照与注入坐标(进入运行态时调用,防遗留按住状态)

◆ SetMousePosition()

void SetMousePosition ( const Vector2 & position)
inlinestatic

编辑器注入逻辑坐标(隐藏窗口下 SDL 轮询不到真实鼠标)

◆ setMousePosition()

void setMousePosition ( const Vector2 & position)

注入鼠标逻辑坐标(编辑器进程内嵌时由宿主转发 Qt 事件坐标)

◆ Update()

void Update ( )
inlinestatic

◆ update()

void update ( )

帧末:current → previous

◆ EngineContext

friend class EngineContext
friend

该类的文档由以下文件生成: