kick
|
00001 // 00002 // mouse_input.cpp 00003 // UnitTest_KickCPP 00004 // 00005 // Created by morten on 24/04/14. 00006 // 00007 // 00008 00009 #include "mouse_input.h" 00010 #include <cassert> 00011 00012 using namespace glm; 00013 00014 #define validButton(button) assert(button >=0); assert(button < mouseButtons); 00015 00016 namespace kick { 00017 00018 glm::ivec2 MouseInput::mPosition{0}; 00019 glm::ivec2 MouseInput::mPositionDelta{0}; 00020 glm::ivec2 MouseInput::mMouseWheelDelta{0}; 00021 int MouseInput::mClicks {0}; 00022 00023 bool MouseInput::mButtonDown[] = {false, false, false, false}; 00024 bool MouseInput::mButtonPressed[] = {false, false, false, false}; 00025 bool MouseInput::mButtonUp[] = {false, false, false, false}; 00026 00027 void MouseInput::reset(){ 00028 mPositionDelta = ivec2(0); 00029 mMouseWheelDelta = ivec2(0); 00030 for (int i=0;i<mouseButtons;i++){ 00031 mButtonDown[i] = false; 00032 mButtonUp[i] = false; 00033 } 00034 } 00035 00036 bool MouseInput::down(int button) { 00037 validButton(button); 00038 return mButtonDown[button]; 00039 } 00040 00041 bool MouseInput::pressed(int button) { 00042 validButton(button); 00043 return mButtonPressed[button]; 00044 } 00045 00046 bool MouseInput::up(int button) { 00047 validButton(button); 00048 return mButtonUp[button]; 00049 } 00050 00051 void MouseInput::buttonPressStarted(int button) { 00052 validButton(button); 00053 mButtonDown[button] = true; 00054 mButtonPressed[button] = true; 00055 } 00056 00057 void MouseInput::buttonPressEnded(int button) { 00058 validButton(button); 00059 mButtonUp[button] = true; 00060 mButtonPressed[button] = false; 00061 } 00062 00063 void MouseInput::setMouseWheelDelta(glm::ivec2 mouseWheelDelta) { 00064 MouseInput::mMouseWheelDelta = mouseWheelDelta; 00065 } 00066 00067 glm::ivec2 MouseInput::mouseWheelDelta() { 00068 return mMouseWheelDelta; 00069 } 00070 00071 void MouseInput::setPositionDelta(glm::ivec2 positionDelta) { 00072 MouseInput::mPositionDelta = positionDelta; 00073 } 00074 00075 glm::ivec2 MouseInput::positionDelta() { 00076 return mPositionDelta; 00077 } 00078 00079 void MouseInput::setPosition(glm::ivec2 position) { 00080 MouseInput::mPosition = position; 00081 } 00082 00083 glm::ivec2 MouseInput::position() { 00084 return mPosition; 00085 } 00086 00087 int MouseInput::clicks() { 00088 return mClicks; 00089 } 00090 00091 void MouseInput::setClicks(int clicks) { 00092 MouseInput::mClicks = clicks; 00093 } 00094 }