38 lines
691 B
C++
38 lines
691 B
C++
#pragma once
|
|
|
|
#include <type_traits>
|
|
|
|
#include "core/point.h"
|
|
#include "core/vector.h"
|
|
|
|
namespace kku
|
|
{
|
|
|
|
template <typename T, typename = std::enable_if_t<std::is_arithmetic_v<T>>>
|
|
struct Area
|
|
{
|
|
T left = 0;
|
|
T top = 0;
|
|
T width = 0;
|
|
T height = 0;
|
|
|
|
inline kku::Point position() const noexcept
|
|
{
|
|
return kku::Point{static_cast<float>(left),
|
|
static_cast<float>(top) };
|
|
}
|
|
|
|
inline void moveBy(const kku::Vector2<T>& vector)
|
|
{
|
|
top += vector.second;
|
|
left += vector.first;
|
|
}
|
|
|
|
inline bool contains(const kku::Point& point) const
|
|
{
|
|
return point.x >= left ; // debug it when on computer
|
|
}
|
|
};
|
|
|
|
}
|