Inferno Game Engine
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

121 lines
2.3 KiB

/*
* Copyright (C) 2022 Riyyi
*
* SPDX-License-Identifier: MIT
*/
#pragma once
#include <sstream> // std::stringstream
#include "inferno/event/event.h"
namespace Inferno {
class MouseButtonEvent : public Event {
public:
inline int getButton() const { return m_button; }
EVENT_CLASS_CATEGORY(InputEventCategory | MouseEventCategory | MouseButtonEventCategory)
protected:
MouseButtonEvent(int button)
: m_button(button)
{
}
private:
int m_button;
};
class MouseButtonPressEvent : public MouseButtonEvent {
public:
MouseButtonPressEvent(int button)
: MouseButtonEvent(button)
{
}
virtual std::string toString() const override
{
std::stringstream ss;
ss << "MouseButtonPressed: " << getButton();
return ss.str();
}
EVENT_CLASS_TYPE(MouseButtonPress)
};
class MouseButtonReleaseEvent : public MouseButtonEvent {
public:
MouseButtonReleaseEvent(int button)
: MouseButtonEvent(button)
{
}
virtual std::string toString() const override
{
std::stringstream ss;
ss << "MouseButtonReleased: " << getButton();
return ss.str();
}
EVENT_CLASS_TYPE(MouseButtonRelease)
};
class MousePositionEvent : public Event {
public:
MousePositionEvent(float xPos, float yPos)
: m_xPos(xPos)
, m_yPos(yPos)
{
}
virtual std::string toString() const override
{
std::stringstream ss;
ss << "MousePosition: " << m_xPos << "x" << m_yPos;
return ss.str();
}
// -----------------------------------------
inline float getXPos() const { return m_xPos; }
inline float getYPos() const { return m_yPos; }
EVENT_CLASS_TYPE(MousePosition)
EVENT_CLASS_CATEGORY(InputEventCategory | MouseEventCategory)
private:
float m_xPos;
float m_yPos;
};
class MouseScrollEvent : public Event {
public:
MouseScrollEvent(float xOffset, float yOffset)
: m_xOffset(xOffset)
, m_yOffset(yOffset)
{
}
virtual std::string toString() const override
{
std::stringstream ss;
ss << "MouseScroll: " << m_xOffset << ":" << m_yOffset;
return ss.str();
}
// -----------------------------------------
inline float getXOffset() const { return m_xOffset; }
inline float getYOffset() const { return m_yOffset; }
EVENT_CLASS_TYPE(MouseScroll)
EVENT_CLASS_CATEGORY(InputEventCategory | MouseEventCategory)
private:
float m_xOffset;
float m_yOffset;
};
} // namespace Inferno