当前位置: 首页 > news >正文

跟着cherno手搓游戏引擎【8】按键和鼠标的KeyCode

自定义KeyCode

先把glfw3.h里的KeyCode的定义抄到咱这里来。

在YOTO下创建KeyCode.h:

#pragma once#ifdef YT_PLATFORM_WINDOWS///从glfw3中拿的
#define YT_KEY_SPACE              32
#define YT_KEY_APOSTROPHE         39  /* ' */
#define YT_KEY_COMMA              44  /* , */
#define YT_KEY_MINUS              45  /* - */
#define YT_KEY_PERIOD             46  /* . */
#define YT_KEY_SLASH              47  /* / */
#define YT_KEY_0                  48
#define YT_KEY_1                  49
#define YT_KEY_2                  50
#define YT_KEY_3                  51
#define YT_KEY_4                  52
#define YT_KEY_5                  53
#define YT_KEY_6                  54
#define YT_KEY_7                  55
#define YT_KEY_8                  56
#define YT_KEY_9                  57
#define YT_KEY_SEMICOLON          59  /* ; */
#define YT_KEY_EQUAL              61  /* = */
#define YT_KEY_A                  65
#define YT_KEY_B                  66
#define YT_KEY_C                  67
#define YT_KEY_D                  68
#define YT_KEY_E                  69
#define YT_KEY_F                  70
#define YT_KEY_G                  71
#define YT_KEY_H                  72
#define YT_KEY_I                  73
#define YT_KEY_J                  74
#define YT_KEY_K                  75
#define YT_KEY_L                  76
#define YT_KEY_M                  77
#define YT_KEY_N                  78
#define YT_KEY_O                  79
#define YT_KEY_P                  80
#define YT_KEY_Q                  81
#define YT_KEY_R                  82
#define YT_KEY_S                  83
#define YT_KEY_T                  84
#define YT_KEY_U                  85
#define YT_KEY_V                  86
#define YT_KEY_W                  87
#define YT_KEY_X                  88
#define YT_KEY_Y                  89
#define YT_KEY_Z                  90
#define YT_KEY_LEFT_BRACKET       91  /* [ */
#define YT_KEY_BACKSLASH          92  /* \ */
#define YT_KEY_RIGHT_BRACKET      93  /* ] */
#define YT_KEY_GRAVE_ACCENT       96  /* ` */
#define YT_KEY_WORLD_1            161 /* non-US #1 */
#define YT_KEY_WORLD_2            162 /* non-US #2 *//* Function keys */
#define YT_KEY_ESCAPE             256
#define YT_KEY_ENTER              257
#define YT_KEY_TAB                258
#define YT_KEY_BACKSPACE          259
#define YT_KEY_INSERT             260
#define YT_KEY_DELETE             261
#define YT_KEY_RIGHT              262
#define YT_KEY_LEFT               263
#define YT_KEY_DOWN               264
#define YT_KEY_UP                 265
#define YT_KEY_PAGE_UP            266
#define YT_KEY_PAGE_DOWN          267
#define YT_KEY_HOME               268
#define YT_KEY_END                269
#define YT_KEY_CAPS_LOCK          280
#define YT_KEY_SCROLL_LOCK        281
#define YT_KEY_NUM_LOCK           282
#define YT_KEY_PRINT_SCREEN       283
#define YT_KEY_PAUSE              284
#define YT_KEY_F1                 290
#define YT_KEY_F2                 291
#define YT_KEY_F3                 292
#define YT_KEY_F4                 293
#define YT_KEY_F5                 294
#define YT_KEY_F6                 295
#define YT_KEY_F7                 296
#define YT_KEY_F8                 297
#define YT_KEY_F9                 298
#define YT_KEY_F10                299
#define YT_KEY_F11                300
#define YT_KEY_F12                301
#define YT_KEY_F13                302
#define YT_KEY_F14                303
#define YT_KEY_F15                304
#define YT_KEY_F16                305
#define YT_KEY_F17                306
#define YT_KEY_F18                307
#define YT_KEY_F19                308
#define YT_KEY_F20                309
#define YT_KEY_F21                310
#define YT_KEY_F22                311
#define YT_KEY_F23                312
#define YT_KEY_F24                313
#define YT_KEY_F25                314
#define YT_KEY_KP_0               320
#define YT_KEY_KP_1               321
#define YT_KEY_KP_2               322
#define YT_KEY_KP_3               323
#define YT_KEY_KP_4               324
#define YT_KEY_KP_5               325
#define YT_KEY_KP_6               326
#define YT_KEY_KP_7               327
#define YT_KEY_KP_8               328
#define YT_KEY_KP_9               329
#define YT_KEY_KP_DECIMAL         330
#define YT_KEY_KP_DIVIDE          331
#define YT_KEY_KP_MULTIPLY        332
#define YT_KEY_KP_SUBTRACT        333
#define YT_KEY_KP_ADD             334
#define YT_KEY_KP_ENTER           335
#define YT_KEY_KP_EQUAL           336
#define YT_KEY_LEFT_SHIFT         340
#define YT_KEY_LEFT_CONTROL       341
#define YT_KEY_LEFT_ALT           342
#define YT_KEY_LEFT_SUPER         343
#define YT_KEY_RIGHT_SHIFT        344
#define YT_KEY_RIGHT_CONTROL      345
#define YT_KEY_RIGHT_ALT          346
#define YT_KEY_RIGHT_SUPER        347
#define YT_KEY_MENU               348
#endif // YT_PLATFORM_WINDOWS

 MouseButtonCodes.h:和KeyCode.h一样作用,把GLFW改成自己的

#pragma once
#define YT_MOUSE_BUTTON_1         0
#define YT_MOUSE_BUTTON_2         1
#define YT_MOUSE_BUTTON_3         2
#define YT_MOUSE_BUTTON_4         3
#define YT_MOUSE_BUTTON_5         4
#define YT_MOUSE_BUTTON_6         5
#define YT_MOUSE_BUTTON_7         6
#define YT_MOUSE_BUTTON_8         7
#define YT_MOUSE_BUTTON_LAST      YT_MOUSE_BUTTON_8
#define YT_MOUSE_BUTTON_LEFT      YT_MOUSE_BUTTON_1
#define YT_MOUSE_BUTTON_RIGHT     YT_MOUSE_BUTTON_2
#define YT_MOUSE_BUTTON_MIDDLE    YT_MOUSE_BUTTON_3`

把KeyCode放入头文件

YOTO.h:

#pragma once
#include "YOTO/Application.h"
#include"YOTO/Layer.h"
#include "YOTO/Log.h"#include"YOTO/Input.h"
#include"YOTO/KeyCode.h"
#include"YOTO/MouseButtonCodes.h"#include"YOTO/ImGui/ImGuiLayer.h"
//入口点
#include"YOTO/EntryPoint.h"

SandboxApp.cpp:在ExampleLayer测试轮询和KeyCode

#include<YOTO.h>
#include<stdio.h>class ExampleLayer:public YOTO::Layer
{
public:ExampleLayer():Layer("Example") {}void OnUpdate()override {//YT_CLIENT_INFO("测试update");if (YOTO::Input::IsKeyPressed(YT_KEY_TAB)) {YT_CLIENT_INFO("ExampleLayerOnUpdate:TAB按下了");}}void OnEvent(YOTO::Event& event)override {if (event.GetEventType() == YOTO::EventType::KeyPressed) {YOTO:: KeyPressedEvent& e = (YOTO::KeyPressedEvent&)event;YT_CLIENT_TRACE("ExampleLayer:{0}",(char)e.GetKeyCode());if (e.GetKeyCode()==YT_KEY_TAB) {YT_CLIENT_INFO("ExampleLayerOnEvent:TAB按下了");}}//YT_CLIENT_TRACE("SandBoxApp:测试event{0}", event);}private:};class Sandbox:public YOTO::Application
{
public:Sandbox() {PushLayer(new ExampleLayer());PushLayer(new YOTO::ImGuiLayer());}~Sandbox() {}private:};YOTO::Application* YOTO::CreateApplication() {printf("helloworld");return new Sandbox();
}

测试:

 明日继续更新数学和ImGui停靠和视口

相关文章:

  • LINUX基础培训十之服务管理
  • C++ 编程需要什么样的开发环境?
  • UFW防火墙详解
  • 学习JavaEE的日子 day13 封装 static private this 类加载机制
  • 超优秀的三维模型优化平台(轻量化、格式转换、可视化等)
  • 360勒索病毒:了解最新变种.360,以及如何保护您的数据
  • 白山云基于StarRocks数据库构建湖仓一体数仓的实践
  • Git将某个文件合并到指定分支
  • 【MySQL】权限控制
  • Bitcoin的Covenants——合同化管理UTXO的花费方式
  • MOJO语言的诞生
  • 【DFS】200.岛屿数量
  • 常用的git diff命令用法汇总和示例
  • 如何绘制出图像的色素分布直方图
  • 【python 的各种模块】(9) 在python使用PIL( 即pillow模块 ) 修改图片
  • 【刷算法】从上往下打印二叉树
  • ES6, React, Redux, Webpack写的一个爬 GitHub 的网页
  • ES学习笔记(12)--Symbol
  • iOS 颜色设置看我就够了
  • Java程序员幽默爆笑锦集
  • laravel with 查询列表限制条数
  • maya建模与骨骼动画快速实现人工鱼
  • MyEclipse 8.0 GA 搭建 Struts2 + Spring2 + Hibernate3 (测试)
  • python3 使用 asyncio 代替线程
  • 阿里云容器服务区块链解决方案全新升级 支持Hyperledger Fabric v1.1
  • 电商搜索引擎的架构设计和性能优化
  • 分享几个不错的工具
  • 浅析微信支付:申请退款、退款回调接口、查询退款
  • 一些基于React、Vue、Node.js、MongoDB技术栈的实践项目
  • MPAndroidChart 教程:Y轴 YAxis
  • 京东物流联手山西图灵打造智能供应链,让阅读更有趣 ...
  • ​如何在iOS手机上查看应用日志
  • # .NET Framework中使用命名管道进行进程间通信
  • # 手柄编程_北通阿修罗3动手评:一款兼具功能、操控性的电竞手柄
  • (rabbitmq的高级特性)消息可靠性
  • (独孤九剑)--文件系统
  • (附源码)spring boot网络空间安全实验教学示范中心网站 毕业设计 111454
  • (区间dp) (经典例题) 石子合并
  • .net 怎么循环得到数组里的值_关于js数组
  • .NET6 开发一个检查某些状态持续多长时间的类
  • .NET实现之(自动更新)
  • .net用HTML开发怎么调试,如何使用ASP.NET MVC在调试中查看控制器生成的html?
  • .Net中间语言BeforeFieldInit
  • .考试倒计时43天!来提分啦!
  • @column注解_MyBatis注解开发 -MyBatis(15)
  • [ C++ ] STL_vector -- 迭代器失效问题
  • [] 与 [[]], -gt 与 > 的比较
  • []常用AT命令解释()
  • [Angular 基础] - 数据绑定(databinding)
  • [ANT] 项目中应用ANT
  • [CTSC2014]企鹅QQ
  • [go 反射] 进阶
  • [Java][Android][Process] ProcessBuilder与Runtime差别
  • [Java]深入剖析常见排序
  • [JS]JavaScript 简介