22 template<CArithmetic T>
struct TRadian;
37 constexpr explicit TDegree(T d) : raw(d) {}
45 template<CArithmetic U>
constexpr explicit TDegree(
const TDegree<U>& deg) : raw(T(deg.raw)) {}
49 T newRaw = mod(raw, 360.0);
87 constexpr bool operator<(T d)
const {
return raw < d; }
90 constexpr bool operator<=(T d)
const {
return raw <= d; }
93 constexpr bool operator==(T d)
const {
return raw == d; }
96 constexpr bool operator!=(T d)
const {
return raw != d; }
99 constexpr bool operator>=(T d)
const {
return raw >= d; }
138 raw = radians(d.
raw);
146 const constexpr T twoPi = glm::two_pi<T>();
147 T newRaw = mod(raw, twoPi);
185 [[nodiscard]]
constexpr bool operator<(T d)
const {
return raw < d; }
188 [[nodiscard]]
constexpr bool operator<=(T d)
const {
return raw <= d; }
191 [[nodiscard]]
constexpr bool operator==(T d)
const {
return raw == d; }
194 [[nodiscard]]
constexpr bool operator!=(T d)
const {
return raw != d; }
197 [[nodiscard]]
constexpr bool operator>=(T d)
const {
return raw >= d; }
200 [[nodiscard]]
constexpr bool operator>(T d)
const {
return raw > d; }
222 using Type = CeresEngine::Math::TDegree<T>;
223 constexpr size_t operator()(
const Type& obj)
const {
return CeresEngine::hash(obj.raw); }
227 using Type = CeresEngine::Math::TRadian<T>;
228 constexpr size_t operator()(
const Type& obj)
const {
return CeresEngine::hash(obj.raw); }
231#define REFL_DECLARE_CE_ANGLE(T) \
#define REFL_DECLARE_CE_ANGLE(T)
Definition Angle.hpp:231
#define CE_SCRIPT_EXPORT(...)
The CE_SCRIPT_EXPORT macro marks a class or method as exportable and available in scripting environme...
Definition Macros.hpp:247
Definition Application.hpp:19
constexpr Byte operator<<(const Byte arg, const _IntType shift) noexcept
Definition DataTypes.hpp:44
constexpr size_t hash(const T &v)
Generates a hash for the provided type.
Definition Hash.hpp:25
Wrapper class which indicates a given angle value is in degrees.
Definition Angle.hpp:28
constexpr bool operator>=(const TDegree &d) const
Definition Angle.hpp:98
constexpr bool operator>(const TDegree &d) const
Definition Angle.hpp:101
constexpr TDegree & operator=(const TRadian< T > &r)
Definition Angle.hpp:40
constexpr TDegree operator*(T f) const
Definition Angle.hpp:72
constexpr TDegree operator-() const
Definition Angle.hpp:64
friend constexpr TDegree operator*(T lhs, const TDegree &rhs)
Definition Angle.hpp:77
constexpr TDegree(const TRadian< T > &r)
Definition Angle.hpp:39
constexpr TDegree operator+(const TDegree &d) const
Definition Angle.hpp:57
T raw
Definition Angle.hpp:29
constexpr TDegree()=default
constexpr bool operator>(T d) const
Definition Angle.hpp:102
constexpr bool operator>=(T d) const
Definition Angle.hpp:99
constexpr bool operator!=(T d) const
Definition Angle.hpp:96
constexpr TDegree operator/(T f) const
Definition Angle.hpp:79
constexpr TDegree(const TDegree< U > °)
Definition Angle.hpp:45
constexpr TDegree & operator+=(const TDegree &d)
Definition Angle.hpp:58
constexpr TDegree & operator=(const TDegree &d)=default
constexpr TDegree & operator/=(T f)
Definition Angle.hpp:80
constexpr TDegree(const TDegree &d)=default
constexpr bool operator<(const TDegree &d) const
Definition Angle.hpp:86
constexpr bool operator==(const TDegree &d) const
Definition Angle.hpp:92
constexpr TDegree & operator-=(const TDegree &d)
Definition Angle.hpp:66
friend constexpr TDegree operator/(T lhs, const TDegree &rhs)
Definition Angle.hpp:84
constexpr bool operator<(T d) const
Definition Angle.hpp:87
constexpr TDegree wrap() const
Wraps the angle in [0, 360) range.
Definition Angle.hpp:48
constexpr bool operator!=(const TDegree &d) const
Definition Angle.hpp:95
friend constexpr TDegree operator+(T lhs, const TDegree &rhs)
Definition Angle.hpp:62
constexpr bool operator<=(T d) const
Definition Angle.hpp:90
constexpr TDegree(T d)
Definition Angle.hpp:37
constexpr const TDegree & operator+() const
Definition Angle.hpp:56
constexpr TDegree & operator*=(T f)
Definition Angle.hpp:73
constexpr bool operator==(T d) const
Definition Angle.hpp:93
constexpr TDegree operator-(const TDegree &d) const
Definition Angle.hpp:65
constexpr bool operator<=(const TDegree &d) const
Definition Angle.hpp:89
friend constexpr TDegree operator-(T lhs, const TDegree &rhs)
Definition Angle.hpp:70
Wrapper class which indicates a given angle value is in radians.
Definition Angle.hpp:125
constexpr bool operator>(T d) const
Definition Angle.hpp:200
constexpr bool operator>=(T d) const
Definition Angle.hpp:197
constexpr bool operator<(const TRadian &d) const
Definition Angle.hpp:184
constexpr TRadian & operator-=(const TRadian &r)
Definition Angle.hpp:164
constexpr TRadian(const TRadian< U > &rad)
Definition Angle.hpp:142
constexpr bool operator<(T d) const
Definition Angle.hpp:185
constexpr TRadian & operator*=(T f)
Definition Angle.hpp:171
constexpr TRadian operator*(T f) const
Definition Angle.hpp:170
constexpr TRadian(T r)
Definition Angle.hpp:134
constexpr bool operator>=(const TRadian &d) const
Definition Angle.hpp:196
constexpr TRadian operator+(const TRadian &r) const
Definition Angle.hpp:155
friend constexpr TRadian operator+(T lhs, const TRadian &rhs)
Definition Angle.hpp:160
constexpr TRadian()=default
friend constexpr TRadian operator/(T lhs, const TRadian &rhs)
Definition Angle.hpp:182
constexpr bool operator==(T d) const
Definition Angle.hpp:191
constexpr TRadian & operator+=(const TRadian &r)
Definition Angle.hpp:156
constexpr const TRadian & operator+() const
Definition Angle.hpp:154
constexpr TRadian operator-() const
Definition Angle.hpp:162
constexpr TRadian & operator=(const TRadian &)=default
constexpr bool operator>(const TRadian &d) const
Definition Angle.hpp:199
constexpr bool operator==(const TRadian &d) const
Definition Angle.hpp:190
constexpr TRadian & operator=(const TDegree< T > &d)
Definition Angle.hpp:137
constexpr TRadian & operator/=(T f)
Definition Angle.hpp:178
constexpr bool operator!=(T d) const
Definition Angle.hpp:194
constexpr bool operator<=(T d) const
Definition Angle.hpp:188
constexpr TRadian(const TDegree< T > &d)
Definition Angle.hpp:136
constexpr TRadian(const TRadian &)=default
constexpr TRadian wrap()
Wraps the angle in [0, 2 * PI) range.
Definition Angle.hpp:145
constexpr TRadian operator-(const TRadian &r) const
Definition Angle.hpp:163
friend constexpr TRadian operator*(T lhs, const TRadian &rhs)
Definition Angle.hpp:175
constexpr bool operator!=(const TRadian &d) const
Definition Angle.hpp:193
constexpr TRadian operator/(T f) const
Definition Angle.hpp:177
T raw
Definition Angle.hpp:126
friend constexpr TRadian operator-(T lhs, const TRadian &rhs)
Definition Angle.hpp:168
constexpr bool operator<=(const TRadian &d) const
Definition Angle.hpp:187