Bicameral Engine
GPU-resident engine for a magic-research open-world game
Loading...
Searching...
No Matches
input.h
Go to the documentation of this file.
1// input.h — 窓に届いた入力のイベント(OS に依存しない形。T-0015)。
2//
3// データの流れ: platform/window.cpp の WndProc が溜める → フレームのループが TakeInputEvents() で受け取り、
4// render/debug_view_controller がカメラ・表示の切り替え・つつき(コマンド)に振り分ける。
5// 位置はクライアント領域の物理ピクセル。キーは Windows の仮想キーコード(VK_* と 'A' などの大文字)。
6#pragma once
7
8#include <cstdint>
9
10namespace bicameral {
11
12 enum class PointerButton : uint8_t { Left, Right, Middle };
13
14 enum class InputKind : uint8_t {
15 ButtonDown, // button を押した(x, y)
16 ButtonUp, // button を離した(x, y)
17 PointerMove, // ポインタが動いた(x, y)
18 Wheel, // ホイール(wheelSteps: 奥へ 1 刻み = +1。高分解能のホイールは端数を溜めて 1 刻みごとに出す)
19 KeyDown, // キーを押した(key。押しっぱなしの繰り返しも来る)
20 };
21
22 struct InputEvent {
24
25 // --- ポインタ ---
27 int32_t x = 0; // 窓の中の位置(画素)
28 int32_t y = 0;
29 int32_t wheelSteps = 0;
30
31 // --- キー ---
32 uint32_t key = 0;
33 bool shift = false; // Shift を押しながら
34 };
35
36} // namespace bicameral
PointerButton
Definition input.h:12
InputKind
Definition input.h:14
InputKind kind
Definition input.h:23
int32_t wheelSteps
Definition input.h:29
PointerButton button
Definition input.h:26