OROCHI
 
Loading...
Searching...
No Matches
GxInputMouse.h
Go to the documentation of this file.
1//===========================================================================
9//===========================================================================
10#pragma once
11
12#if defined(_WINDOWS) || GX_DEVELOP
13
14GX_CORE_NAMESPACE_BEGIN()
15
16//===========================================================================
18//===========================================================================
19class GxMouse : public GxInputDevice
20{
21 //-------------------------------------------------------------
23 //-------------------------------------------------------------
25public:
26 GX_RTTI_CLASS(GxMouse, GxInputDevice)
27 // GxClassBase継承クラス用禁止宣言
29
30
31 enum BUTTON
32 {
33 BUTTON_LEFT = (1 << 0),
34 BUTTON_RIGHT = (1 << 1),
35 BUTTON_MIDDLE = (1 << 2),
36 BUTTON_3 = (1 << 3),
37 BUTTON_4 = (1 << 4),
38 BUTTON_5 = (1 << 5),
39 BUTTON_6 = (1 << 6),
40 BUTTON_7 = (1 << 7),
41 BUTTON_ALL = 0xFFFFFFFF,
42 BUTTON_MAX = 8,
43 };
45 struct GxInputData
46 {
47 GxVector3 _position;
48 u32 _button;
49 };
51 struct GxSaveData
52 {
53 s32 _repeatCount[BUTTON_MAX];
54 s32 _doubleClickCounter[BUTTON_MAX];
55
56 u32 _on;
57 u32 _old;
58 u32 _oldTemporary;
59 u32 _trigger;
60 u32 _release;
61 u32 _repeat;
62 u32 _doubleClick;
63
64 GxPoint2 _position;
65 GxPoint2 _positionOld;
66 GxVector3 _offset;
67 };
69 static constexpr u32 DOUBLE_CLICK_INTERVAL = 15;
71 static constexpr u32 DOUBLE_CLICK_MARGIN = 5;
72
74 //-------------------------------------------------------------
76 //-------------------------------------------------------------
78
80 GxMouse(void);
82 ~GxMouse(void) override;
84 void clear(void) override;
86 b32 initialize(void) override;
87
89 //-----------------------------------------------------------
91 //-----------------------------------------------------------
93
95 void getInputDataDevice(void) override;
97 void update(void) override;
98#if GX_DEVELOP
100 GX_FORCE_INLINE void developRender(void) override {}
101#endif //GX_DEVELOP
103 void saveInput(void) override;
105 void loadInput(void) override;
106
108 //-----------------------------------------------------------
110 //-----------------------------------------------------------
112
114 GX_FORCE_INLINE b32 isOn(BUTTON button = BUTTON_ALL) const { return (_on & button) ? true : false; }
116 GX_FORCE_INLINE b32 isOld(BUTTON button = BUTTON_ALL) const { return (_old & button) ? true : false; }
118 GX_FORCE_INLINE b32 isTrigger(BUTTON button = BUTTON_ALL) const { return (_trigger & button) ? true : false; }
120 GX_FORCE_INLINE b32 isRelease(BUTTON button = BUTTON_ALL) const { return (_release & button) ? true : false; }
122 GX_FORCE_INLINE b32 isRepeat(BUTTON button = BUTTON_ALL) const { return (_repeat & button) ? true : false; }
124 GX_FORCE_INLINE b32 isDoubleClick(BUTTON button = BUTTON_ALL) const { return (_doubleClick & button) ? true : false; }
126 b32 isEnable(void) const override;
127protected:
129 GX_FORCE_INLINE b32 isOk(void) override { return false; }
131 GX_FORCE_INLINE b32 isCancel(void) override { return false; }
132public:
134 GX_FORCE_INLINE const GxPoint2& getPosition(void) const { return _position; }
136 GxVector2 getVirtualPosition(void) const;
138 GX_FORCE_INLINE b32 isMove(void) const { return _position != _positionOld; }
140 GX_FORCE_INLINE const GxVector3& getOffset(void) const { return _offset; }
141#if GX_DEVELOP
143 constexpr u32 getOn(void) const { return _on; }
145 constexpr u32 getTrigger(void) const { return _trigger; }
147 constexpr u32 getRelease(void) const { return _release; }
149 constexpr u32 getDoubleClick(void) const { return _doubleClick; }
150#endif //GX_DEVELOP
151
152#if defined(_WINDOWS)
154 constexpr IDirectInputDevice8* getDirectInputDevice(void){ return _pDirectInputDevice; }
156 GX_FORCE_INLINE const DIMOUSESTATE2& getDirectInputState(void) const { return _directInputState; }
158 LRESULT CALLBACK wndProc(HWND windowHandle, UINT uMessage, WPARAM wParam, LPARAM lParam);
159private:
161 b32 createDirectInputDevice(void);
163 void releaseDirectInputDevice(void);
164#endif //_WINDOWS
165
167 //-------------------------------------------------------------
169 //-------------------------------------------------------------
171private:
172#if defined(_WINDOWS)
173 IDirectInputDevice8* _pDirectInputDevice;
174 DIMOUSESTATE2 _directInputState;
175#endif //_WINDOWS
176#if defined(_WINDOWS) || defined(_XBOX_XS)
177 s64 _wheel;
178#endif //_WINDOWS || _XBOX_XS
179 s32 _repeatCount[BUTTON_MAX];
180 s32 _doubleClickCounter[BUTTON_MAX];
181
182 u32 _on;
183 u32 _old;
184 u32 _oldTemporary;
185 u32 _trigger;
186 u32 _release;
187 u32 _repeat;
188 u32 _doubleClick;
189
190 GxPoint2 _position;
191 GxPoint2 _positionOld;
192 GxVector3 _offset;
193 GxSaveData _saveData;
194
196};
197
198GX_CORE_NAMESPACE_END()
199
200#endif //_WINDOWS || GX_DEVELOP
#define GX_PROHIBIT_CLASS_BASE(__CLASS__)
GxClassBase継承の禁止宣言
Definition GxBase.h:240
入力デバイスクラス
Definition GxSysInput.h:78
セーブデータクラス
Definition GxSaveData.h:18
座標
Definition GxStruct.h:867
2次元ベクトル
Definition GxVector.h:34
3次元ベクトル
Definition GxVector.h:245
32bitブーリアン
Definition GxDefine.h:173