From ecd7883521cbde02f4f1a6b23a7b3b601c32dbef Mon Sep 17 00:00:00 2001 From: chai Date: Mon, 29 Jul 2019 09:06:09 +0800 Subject: *misc --- source/modules/asura-core/input/button.h | 32 +++++++++ source/modules/asura-core/input/clipboard.h | 35 ---------- source/modules/asura-core/input/cursor.cpp | 0 source/modules/asura-core/input/cursor.h | 81 ---------------------- .../modules/asura-core/input/cursor_impl_sdl.cpp | 0 source/modules/asura-core/input/cursor_impl_sdl.h | 0 source/modules/asura-core/input/equeue.cpp | 28 -------- source/modules/asura-core/input/equeue.h | 51 -------------- source/modules/asura-core/input/equeue_impl_sdl.h | 0 .../modules/asura-core/input/equeue_impl_win32.h | 0 source/modules/asura-core/input/event.h | 45 ------------ source/modules/asura-core/input/event_manager.h | 24 ------- source/modules/asura-core/input/input_device.cpp | 0 source/modules/asura-core/input/input_device.h | 41 +++++++++++ source/modules/asura-core/input/input_device.hpp | 31 --------- source/modules/asura-core/input/input_manager.cpp | 0 source/modules/asura-core/input/input_manager.h | 25 +++++++ source/modules/asura-core/input/joypad.h | 0 source/modules/asura-core/input/joystick_state.h | 0 source/modules/asura-core/input/keyboard.cpp | 0 source/modules/asura-core/input/keyboard.h | 73 ------------------- source/modules/asura-core/input/keyboard_state.h | 39 +++++++++++ source/modules/asura-core/input/mouse.cpp | 0 source/modules/asura-core/input/mouse.h | 63 ----------------- source/modules/asura-core/input/mouse_state.h | 0 25 files changed, 137 insertions(+), 431 deletions(-) create mode 100644 source/modules/asura-core/input/button.h delete mode 100644 source/modules/asura-core/input/cursor.cpp delete mode 100644 source/modules/asura-core/input/cursor.h delete mode 100644 source/modules/asura-core/input/cursor_impl_sdl.cpp delete mode 100644 source/modules/asura-core/input/cursor_impl_sdl.h delete mode 100644 source/modules/asura-core/input/equeue.cpp delete mode 100644 source/modules/asura-core/input/equeue.h delete mode 100644 source/modules/asura-core/input/equeue_impl_sdl.h delete mode 100644 source/modules/asura-core/input/equeue_impl_win32.h delete mode 100644 source/modules/asura-core/input/event.h delete mode 100644 source/modules/asura-core/input/event_manager.h create mode 100644 source/modules/asura-core/input/input_device.cpp create mode 100644 source/modules/asura-core/input/input_device.h delete mode 100644 source/modules/asura-core/input/input_device.hpp create mode 100644 source/modules/asura-core/input/input_manager.cpp create mode 100644 source/modules/asura-core/input/input_manager.h delete mode 100644 source/modules/asura-core/input/joypad.h create mode 100644 source/modules/asura-core/input/joystick_state.h delete mode 100644 source/modules/asura-core/input/keyboard.cpp delete mode 100644 source/modules/asura-core/input/keyboard.h create mode 100644 source/modules/asura-core/input/keyboard_state.h delete mode 100644 source/modules/asura-core/input/mouse.cpp delete mode 100644 source/modules/asura-core/input/mouse.h create mode 100644 source/modules/asura-core/input/mouse_state.h (limited to 'source/modules/asura-core/input') diff --git a/source/modules/asura-core/input/button.h b/source/modules/asura-core/input/button.h new file mode 100644 index 0000000..0df8ed2 --- /dev/null +++ b/source/modules/asura-core/input/button.h @@ -0,0 +1,32 @@ +#ifndef __BUTTON_H__ +#define __BUTTON_H__ + +namespace AsuraEngine +{ + namespace Input + { + + /// keyboard button \ mouse button \ joystick button + class Button + { + public: + inline Button(int key, bool state) : + key(key), + state(state) + { + } + + inline int GetKey(void) const { return this->key; } + inline bool GetState(void) const { return this->state; } + + private: + int key; + bool state; + + }; + + } +} + + +#endif \ No newline at end of file diff --git a/source/modules/asura-core/input/clipboard.h b/source/modules/asura-core/input/clipboard.h index 1b7c2b8..e69de29 100644 --- a/source/modules/asura-core/input/clipboard.h +++ b/source/modules/asura-core/input/clipboard.h @@ -1,35 +0,0 @@ -#ifndef __ASURA_ENGINE_CLIPBOARD_H__ -#define __ASURA_ENGINE_CLIPBOARD_H__ - -#include "Text/String.hpp" -#include "InputDevice.hpp" - -namespace AsuraEngine -{ - namespace Input - { - - class Clipboard ASURA_FINAL : public InputDevice - { - public: - - Clipboard(); - - Text::String GetString(); - - void SetString(const Text::String& text); - - private: - - ~Clipboard(); - - luaxport: - - LUAX_DECL_SINGLETON(Clipboard); - - }; - - }; -} - -#endif \ No newline at end of file diff --git a/source/modules/asura-core/input/cursor.cpp b/source/modules/asura-core/input/cursor.cpp deleted file mode 100644 index e69de29..0000000 diff --git a/source/modules/asura-core/input/cursor.h b/source/modules/asura-core/input/cursor.h deleted file mode 100644 index e3df7ee..0000000 --- a/source/modules/asura-core/input/cursor.h +++ /dev/null @@ -1,81 +0,0 @@ -#ifndef __ASURA_ENGINE_CURSOR_H__ -#define __ASURA_ENGINE_CURSOR_H__ - -#include - -#include - -#include "../graphics/image_data.h" - -#include "input_device.hpp" - -namespace AsuraEngine -{ - namespace Input - { - - class CursorImpl; - - // Types of system cursors. - enum SystemCursor - { - CURSOR_ARROW, - CURSOR_IBEAM, - CURSOR_WAIT, - CURSOR_CROSSHAIR, - CURSOR_WAITARROW, - CURSOR_SIZENWSE, - CURSOR_SIZENESW, - CURSOR_SIZEWE, - CURSOR_SIZENS, - CURSOR_SIZEALL, - CURSOR_NO, - CURSOR_HAND, - CURSOR_MAX_ENUM - }; - - enum CursorType - { - CURSORTYPE_SYSTEM, - CURSORTYPE_IMAGE, - CURSORTYPE_MAX_ENUM - }; - - // 鼠标指针的相关枚举 -#include "Cursor.defs" - - class Cursor - : public AEScripting::Portable - { - public: - - Cursor(Graphics::ImageData& imageData, int hotx, int hoty); - Cursor(SystemCursor cursortype); - - ~Cursor(); - - SDL_Cursor* GetHandle() const; - CursorType GetType() const; - SystemCursor GetSystemType() const; - - private: - - CursorType mType; - SystemCursor mSystemType; - CursorImpl* mImpl; - - luaxport: - - LUAX_DECL_FACTORY(Cursor); - - }; - - ASURA_ABSTRACT class CursorImpl - { - - }; - - } -} - -#endif \ No newline at end of file diff --git a/source/modules/asura-core/input/cursor_impl_sdl.cpp b/source/modules/asura-core/input/cursor_impl_sdl.cpp deleted file mode 100644 index e69de29..0000000 diff --git a/source/modules/asura-core/input/cursor_impl_sdl.h b/source/modules/asura-core/input/cursor_impl_sdl.h deleted file mode 100644 index e69de29..0000000 diff --git a/source/modules/asura-core/input/equeue.cpp b/source/modules/asura-core/input/equeue.cpp deleted file mode 100644 index e165393..0000000 --- a/source/modules/asura-core/input/equeue.cpp +++ /dev/null @@ -1,28 +0,0 @@ -#include "equeue.h" - -namespace AsuraEngine -{ - namespace Input - { - - EQueue::EQueue() - { - // try create queue - - ASSERT(mImpl); - } - - EQueue::~EQueue() - { - if(mImpl) - delete mImpl; - } - - bool EQueue::Poll(const Event& e) - { - ASSERT(mImpl); - return mImpl->Poll(e); - } - - } -} \ No newline at end of file diff --git a/source/modules/asura-core/input/equeue.h b/source/modules/asura-core/input/equeue.h deleted file mode 100644 index 495c869..0000000 --- a/source/modules/asura-core/input/equeue.h +++ /dev/null @@ -1,51 +0,0 @@ -#ifndef __ASURA_EQUEUE_H__ -#define __ASURA_EQUEUE_H__ - -#include - -#include "event.h" - -namespace AsuraEngine -{ - namespace Input - { - - class EQueueImpl; - - /// - /// Event queue. - /// - class EQueue - { - public: - - EQueue(); - ~EQueue(); - - bool Poll(const Event& e); - - private: - - EQueueImpl* mImpl; - - }; - - ASURA_ABSTRACT class EQueueImpl - { - public: - - EQueueImpl() {}; - virtual ~EQueueImpl() {}; - - /// - /// 从操作系统外设的事件队列中拿出一个,并返回。如果有返回true,没有返回false。重点在于 - /// 装配这些不同实现的事件,使得统一转换为Asura event。 - /// - virtual bool Poll(const Event&) = 0; - - }; - - } -} - -#endif \ No newline at end of file diff --git a/source/modules/asura-core/input/equeue_impl_sdl.h b/source/modules/asura-core/input/equeue_impl_sdl.h deleted file mode 100644 index e69de29..0000000 diff --git a/source/modules/asura-core/input/equeue_impl_win32.h b/source/modules/asura-core/input/equeue_impl_win32.h deleted file mode 100644 index e69de29..0000000 diff --git a/source/modules/asura-core/input/event.h b/source/modules/asura-core/input/event.h deleted file mode 100644 index a24e806..0000000 --- a/source/modules/asura-core/input/event.h +++ /dev/null @@ -1,45 +0,0 @@ -#ifndef __ASURA_ENGINE_EVENT_H__ -#define __ASURA_ENGINE_EVENT_H__ - -namespace AsuraEngine -{ - namespace Input - { - - enum EventType - { - EVENT_BEGIN_MOUSE__ , - EVENT_LEFT_DOWN , - EVENT_LEFT_UP , - EVENT_LEFT_DCLICK , - EVENT_MIDDLE_DOWN , - EVENT_MIDDLE_UP , - EVENT_MIDDLE_DCLICK , - EVENT_RIGHT_DOWN , - EVENT_RIGHT_UP , - EVENT_RIGHT_DCLICK , - EVENT_MOTION , - EVENT_END_MOUSE__ , - EVENT_ENTER_WINDOW , - EVENT_LEAVE_WINDOW , - EVENT_MOUSEWHEEL - }; - - struct Event - { - int type; - union - { - // 鼠标按键事件 - struct { - int id; - } button; - }; - }; - - } -} - -namespace AEInput = AsuraEngine::Input; - -#endif \ No newline at end of file diff --git a/source/modules/asura-core/input/event_manager.h b/source/modules/asura-core/input/event_manager.h deleted file mode 100644 index b81b7ff..0000000 --- a/source/modules/asura-core/input/event_manager.h +++ /dev/null @@ -1,24 +0,0 @@ -#ifndef __ASURA_EVENT_MANANGER_H__ -#define __ASURA_EVENT_MANANGER_H__ - -#include "equeue.h" - -namespace AsuraEngine -{ - namespace Input - { - - class EventManager - { - public: - - private: - - EQueue mQueue; - - }; - - } -} - -#endif \ No newline at end of file diff --git a/source/modules/asura-core/input/input_device.cpp b/source/modules/asura-core/input/input_device.cpp new file mode 100644 index 0000000..e69de29 diff --git a/source/modules/asura-core/input/input_device.h b/source/modules/asura-core/input/input_device.h new file mode 100644 index 0000000..7082ea3 --- /dev/null +++ b/source/modules/asura-core/input/input_device.h @@ -0,0 +1,41 @@ +#ifndef __ASURA_ENGINE_INPUT_BASE_H__ +#define __ASURA_ENGINE_INPUT_BASE_H__ + +#include +#include +#include + +#include "../core_config.h" + +#include "keyboard_state.h" + +namespace AsuraEngine +{ + namespace Input + { + + /// 不同平台继承这个基类并实现handle接口 + ASURA_ABSTRACT class InputDevice : public Singleton + { + protected: + + void OnKeyDown(int key); + void OnKeyUp(int key); + + void OnMouseMove(const AEMath::Vector2f& position); + + void OnMouseButtonDown(int key); + void OnMouseButtonUp(int key); + + void OnMouseWheel(); + + void OnInputChar(); + + }; + + } +} + +namespace AEInput = AsuraEngine::Input; + +#endif \ No newline at end of file diff --git a/source/modules/asura-core/input/input_device.hpp b/source/modules/asura-core/input/input_device.hpp deleted file mode 100644 index 4d82343..0000000 --- a/source/modules/asura-core/input/input_device.hpp +++ /dev/null @@ -1,31 +0,0 @@ -#ifndef __ASURA_ENGINE_INPUT_BASE_H__ -#define __ASURA_ENGINE_INPUT_BASE_H__ - -#include -#include - -#include "../core_config.h" - -namespace AsuraEngine -{ - namespace Input - { - - /// - /// 输入设备是一个单例 - /// - template - ASURA_ABSTRACT class InputDevice - : virtual public Scripting::Portable - , virtual public Singleton - { - public: - InputDevice(); - virtual ~InputDevice(); - - }; - - } -} - -#endif \ No newline at end of file diff --git a/source/modules/asura-core/input/input_manager.cpp b/source/modules/asura-core/input/input_manager.cpp new file mode 100644 index 0000000..e69de29 diff --git a/source/modules/asura-core/input/input_manager.h b/source/modules/asura-core/input/input_manager.h new file mode 100644 index 0000000..4597d39 --- /dev/null +++ b/source/modules/asura-core/input/input_manager.h @@ -0,0 +1,25 @@ +#ifndef __INPUT_MAMANGER_H__ +#define __INPUT_MAMANGER_H__ + +#include +#include + +namespace AsuraEngine +{ + namespace Input + { + + /// 逻辑管理 + class InputManager : public Singleton + { + public : + + + private : + + }; + + } +} + +#endif \ No newline at end of file diff --git a/source/modules/asura-core/input/joypad.h b/source/modules/asura-core/input/joypad.h deleted file mode 100644 index e69de29..0000000 diff --git a/source/modules/asura-core/input/joystick_state.h b/source/modules/asura-core/input/joystick_state.h new file mode 100644 index 0000000..e69de29 diff --git a/source/modules/asura-core/input/keyboard.cpp b/source/modules/asura-core/input/keyboard.cpp deleted file mode 100644 index e69de29..0000000 diff --git a/source/modules/asura-core/input/keyboard.h b/source/modules/asura-core/input/keyboard.h deleted file mode 100644 index d1d7b48..0000000 --- a/source/modules/asura-core/input/keyboard.h +++ /dev/null @@ -1,73 +0,0 @@ -//#ifndef __ASURA_INPUT_KEYBOARD_H__ -//#define __ASURA_INPUT_KEYBOARD_H__ -// -//#include -// -//#include "InputDevice.hpp" -//#include "Scripting/Portable.h" -// -//namespace AsuraEngine -//{ -// namespace Input -// { -// -// class Keyboard ASURA_FINAL : public InputDevice -// { -// public: -// -// // 键盘相关的枚举 -// #include "keys.h" -// -// Keyboard(); -// -// void SetKeyRepeat(bool enable); -// bool HasKeyRepeat() const; -// bool IsDown(const std::vector &keylist) const; -// bool IsScancodeDown(const std::vector &scancodelist) const; -// -// Key GetKeyFromScancode(Scancode scancode) const; -// Scancode GetScancodeFromKey(Key key) const; -// -// void SetTextInput(bool enable); -// void SetTextInput(bool enable, double x, double y, double w, double h); -// bool HasTextInput() const; -// bool HasScreenKeyboard() const; -// -// bool GetConstant(Scancode in, SDL_Scancode &out); -// bool GetConstant(SDL_Scancode in, Scancode &out); -// -// private: -// -// ~Keyboard(); -// -// public: -// -// //----------------------------------------------------------------------------// -// -// LUAX_DECL_SINGLETON(Keyboard); // 通过AsuraEngine.Keyboard直接访问,没有New方法 -// -// LUAX_DECL_ENUM(Key); -// LUAX_DECL_ENUM(ScanCode); -// -// LUAX_DECL_METHOD(SetKeyRepeat); -// LUAX_DECL_METHOD(HasKeyRepeat); -// LUAX_DECL_METHOD(IsDown); -// LUAX_DECL_METHOD(IsScancodeDown); -// -// LUAX_DECL_METHOD(GetKeyFromScancode); -// LUAX_DECL_METHOD(GetScancodeFromKey); -// -// LUAX_DECL_METHOD(SetTextInput); -// LUAX_DECL_METHOD(HasTextInput); -// LUAX_DECL_METHOD(HasScreenKeyboard); -// -// LUAX_DECL_METHOD(GetConstant); -// -// //----------------------------------------------------------------------------// -// -// }; -// -// } -//} -// -//#endif \ No newline at end of file diff --git a/source/modules/asura-core/input/keyboard_state.h b/source/modules/asura-core/input/keyboard_state.h new file mode 100644 index 0000000..f6aa5ea --- /dev/null +++ b/source/modules/asura-core/input/keyboard_state.h @@ -0,0 +1,39 @@ +#ifndef __KEYBOARD_STATE_H__ +#define __KEYBOARD_STATE_H__ + +#include + +#include "button.h" + +namespace AsuraEngine +{ + namespace Input + { + + typedef std::vector