diff --git a/Code/Misc/Input/Include/Mouse.h b/Code/Misc/Input/Include/Mouse.h index b657604b..510fe3a9 100644 --- a/Code/Misc/Input/Include/Mouse.h +++ b/Code/Misc/Input/Include/Mouse.h @@ -66,12 +66,14 @@ namespace Input }; public: - virtual bool IsBtnUp(Enum::SAMI key) = 0; - virtual bool IsBtnDown(Enum::SAMI key) = 0; - virtual int GetWheelDelta() = 0; - virtual Struct::SAIPoint2D GetPixelPosition(Struct::SAIPoint2D targetMem = Struct::SAIPoint2D()) = 0; - + virtual bool IsBtnUp(Enum::SAMI key) = 0; + virtual bool IsBtnDown(Enum::SAMI key) = 0; + public: + int GetWheelDelta() const; + Struct::SAIPoint2D & GetPixelPosition( Struct::SAIPoint2D &targetMem = Struct::SAIPoint2D() ) const; + Struct::SAIPoint2D & GetDeltaPosition( Struct::SAIPoint2D &targetMem = Struct::SAIPoint2D() ) const; + void AddOnMousePressCallback( Typedefs::OnMousePressCallback func); void AddOnMouseDownCallback( Typedefs::OnMouseDownCallback func ); void AddOnMouseReleaseCallback( Typedefs::OnMouseReleaseCallback func ); @@ -135,7 +137,7 @@ namespace Input protected: std::vector mouseSubscribers; MouseCallbackList* callbackList; - Struct::SAIPoint2D pixelPos; + Struct::SAIPoint2D pixelPos, deltaPos; bool isCurorLocked; int wheelDelta; }; diff --git a/Code/Misc/Input/Include/Win32/Win32Mouse.h b/Code/Misc/Input/Include/Win32/Win32Mouse.h index 10c04a28..3f1c0f10 100644 --- a/Code/Misc/Input/Include/Win32/Win32Mouse.h +++ b/Code/Misc/Input/Include/Win32/Win32Mouse.h @@ -17,8 +17,6 @@ namespace Input bool IsBtnUp(Enum::SAMI key) override; bool IsBtnDown(Enum::SAMI key) override; - int GetWheelDelta() override; - Struct::SAIPoint2D GetPixelPosition(Struct::SAIPoint2D targetMem = Struct::SAIPoint2D()) override; void ProccessMouseData (bool isDown, Enum::SAMI btn, int delta, Struct::SAIPoint2D velocity, unsigned int makeCode); diff --git a/Code/Misc/Input/Source/Mouse.cpp b/Code/Misc/Input/Source/Mouse.cpp index 36bd8330..f0eaba3b 100644 --- a/Code/Misc/Input/Source/Mouse.cpp +++ b/Code/Misc/Input/Source/Mouse.cpp @@ -81,6 +81,7 @@ Mouse::Mouse() , wheelDelta(0) , isCurorLocked(0) , pixelPos() + , deltaPos() { } Mouse::~Mouse() @@ -88,6 +89,25 @@ Mouse::~Mouse() } +int Mouse::GetWheelDelta() const +{ + return this->wheelDelta; +} + +SAIPoint2D & Mouse::GetPixelPosition( Struct::SAIPoint2D &targetMem ) const +{ + targetMem.x = this->pixelPos.x; + targetMem.y = this->pixelPos.y; + return targetMem; +} + +SAIPoint2D & Mouse::GetDeltaPosition( Struct::SAIPoint2D &targetMem ) const +{ + targetMem.x = this->deltaPos.x; + targetMem.y = this->deltaPos.y; + return targetMem; +} + void Mouse::AddOnMousePressCallback( Typedefs::OnMousePressCallback func) { MouseCallbackList::CallbackData d; diff --git a/Code/Misc/Input/Source/Win32/Win32Mouse.cpp b/Code/Misc/Input/Source/Win32/Win32Mouse.cpp index ef6d9edf..8bf22972 100644 --- a/Code/Misc/Input/Source/Win32/Win32Mouse.cpp +++ b/Code/Misc/Input/Source/Win32/Win32Mouse.cpp @@ -30,22 +30,13 @@ bool Win32Mouse::IsBtnDown(Enum::SAMI btn) return this->buttons[btn].isDown; } -int Win32Mouse::GetWheelDelta() -{ - return this->wheelDelta; -} -Struct::SAIPoint2D Win32Mouse::GetPixelPosition(Struct::SAIPoint2D targetMem) -{ - targetMem = this->pixelPos; - return targetMem; -} void Win32Mouse::ProccessMouseData (bool isUp, Enum::SAMI btn, int delta, Struct::SAIPoint2D velocity, unsigned int makeCode) { if(velocity.Length() != 0) { - this->pixelPos.x += velocity.x; - this->pixelPos.y += velocity.y; + this->pixelPos.x += this->deltaPos.x = velocity.x; + this->pixelPos.y += this->deltaPos.y = velocity.y; for (unsigned int i = 0; i < this->mouseSubscribers.size(); i++) {