Initial engine repository

This commit is contained in:
2026-06-08 19:58:35 +08:00
commit 7a925c3736
137 changed files with 162421 additions and 0 deletions
@@ -0,0 +1,108 @@
#pragma once
#include <frostbite2D/event/event.h>
#include <frostbite2D/types/type_math.h>
#include <SDL2/SDL_mouse.h>
namespace frostbite2D {
enum class MouseButton {
Left = SDL_BUTTON_LEFT,
Right = SDL_BUTTON_RIGHT,
Middle = SDL_BUTTON_MIDDLE,
X1 = SDL_BUTTON_X1,
X2 = SDL_BUTTON_X2
};
class MouseEvent : public Event {
public:
MouseEvent(EventType type, uint32 timestamp, const Vec2& position)
: Event(timestamp)
, type_(type)
, position_(position) {}
virtual ~MouseEvent() = default;
EventType getType() const override { return type_; }
const Vec2& getPosition() const { return position_; }
int32 getX() const { return static_cast<int32>(position_.x); }
int32 getY() const { return static_cast<int32>(position_.y); }
protected:
EventType type_;
Vec2 position_;
};
class MouseMoveEvent : public Event {
public:
MouseMoveEvent(uint32 timestamp, const Vec2& position, const Vec2& relative)
: Event(timestamp)
, position_(position)
, relative_(relative) {}
EventType getType() const override {
return EventType::MouseMove;
}
const Vec2& getPosition() const { return position_; }
const Vec2& getRelative() const { return relative_; }
int32 getX() const { return static_cast<int32>(position_.x); }
int32 getY() const { return static_cast<int32>(position_.y); }
private:
Vec2 position_;
Vec2 relative_;
};
class MouseButtonEvent : public Event {
public:
MouseButtonEvent(uint32 timestamp, MouseButton button, const Vec2& position, bool down)
: Event(timestamp)
, button_(button)
, position_(position)
, down_(down) {}
EventType getType() const override {
return down_ ? EventType::MouseButtonDown : EventType::MouseButtonUp;
}
MouseButton getButton() const { return button_; }
const Vec2& getPosition() const { return position_; }
bool isDown() const { return down_; }
int32 getX() const { return static_cast<int32>(position_.x); }
int32 getY() const { return static_cast<int32>(position_.y); }
private:
MouseButton button_;
Vec2 position_;
bool down_;
};
class MouseWheelEvent : public Event {
public:
MouseWheelEvent(uint32 timestamp, const Vec2& position, const Vec2& direction, bool flipped)
: Event(timestamp)
, position_(position)
, direction_(direction)
, flipped_(flipped) {}
EventType getType() const override {
return EventType::MouseWheel;
}
const Vec2& getPosition() const { return position_; }
const Vec2& getDirection() const { return direction_; }
bool isFlipped() const { return flipped_; }
int32 getX() const { return static_cast<int32>(direction_.x); }
int32 getY() const { return static_cast<int32>(direction_.y); }
private:
Vec2 position_;
Vec2 direction_;
bool flipped_;
};
}