108 lines
2.4 KiB
C++
Executable File

#pragma once
#include "DeerRender/Events/Event.h"
#include <sstream>
namespace Deer {
class MouseMovedEvent : public Event
{
public:
MouseMovedEvent(float x, float y)
: m_MouseX(x), m_MouseY(y) {}
inline float getX() const { return m_MouseX; }
inline float getY() const { return m_MouseY; }
std::string toString() const override
{
std::stringstream ss;
ss << "MouseMovedEvent: " << m_MouseX << ", " << m_MouseY;
return ss.str();
}
EVENT_CLASS_TYPE(MouseMoved)
EVENT_CLASS_CATEGORY(EventCategoryMouse | EventCategoryInput)
private:
float m_MouseX, m_MouseY;
};
class MouseScrolledEvent : public Event
{
public:
MouseScrolledEvent(float xOffset, float yOffset)
: m_XOffset(xOffset), m_YOffset(yOffset) {}
inline float getXOffset() const { return m_XOffset; }
inline float getYOffset() const { return m_YOffset; }
std::string toString() const override
{
std::stringstream ss;
ss << "MouseScrolledEvent: " << getXOffset() << ", " << getYOffset();
return ss.str();
}
EVENT_CLASS_TYPE(MouseScrolled)
EVENT_CLASS_CATEGORY(EventCategoryMouse | EventCategoryInput)
private:
float m_XOffset, m_YOffset;
};
class MouseButtonEvent : public Event
{
public:
inline int getMouseButton() const { return m_Button; }
EVENT_CLASS_CATEGORY(EventCategoryMouse | EventCategoryInput)
protected:
MouseButtonEvent(int button)
: m_Button(button) {}
int m_Button;
};
class MouseButtonPressedEvent : public MouseButtonEvent
{
public:
MouseButtonPressedEvent(int button)
: MouseButtonEvent(button) {}
std::string toString() const override {
std::stringstream ss;
ss << "MouseButtonPressedEvent: " << m_Button;
return ss.str();
}
EVENT_CLASS_TYPE(MouseButtonPressed)
};
class MouseButtonReleasedEvent : public MouseButtonEvent
{
public:
MouseButtonReleasedEvent(int button)
: MouseButtonEvent(button) {}
std::string toString() const override {
std::stringstream ss;
ss << "MouseButtonReleasedEvent: " << m_Button;
return ss.str();
}
EVENT_CLASS_TYPE(MouseButtonReleased)
};
class MouseButtonDownEvent : public MouseButtonEvent
{
public:
MouseButtonDownEvent(int button)
: MouseButtonEvent(button) {
}
std::string toString() const override {
std::stringstream ss;
ss << "MouseButtonDownEvent: " << m_Button;
return ss.str();
}
EVENT_CLASS_TYPE(MouseButtonDown)
};
}