mirror of
https://github.com/Milxnor/Project-Reboot-3.0.git
synced 2026-01-13 10:52:22 +01:00
91 lines
2.1 KiB
C++
91 lines
2.1 KiB
C++
#pragma once
|
|
|
|
#include "inc.h"
|
|
|
|
class FGenericPlatformMath
|
|
{
|
|
public:
|
|
static constexpr FORCEINLINE int32 TruncToInt(float F)
|
|
{
|
|
return (int32)F;
|
|
}
|
|
|
|
static constexpr FORCEINLINE float TruncToFloat(float F)
|
|
{
|
|
return (float)TruncToInt(F);
|
|
}
|
|
|
|
template< class T >
|
|
static constexpr FORCEINLINE T Min(const T A, const T B)
|
|
{
|
|
return (A <= B) ? A : B;
|
|
}
|
|
|
|
static FORCENOINLINE float Fmod(float X, float Y);
|
|
|
|
static FORCEINLINE int32 FloorToInt(float F)
|
|
{
|
|
return TruncToInt(floorf(F));
|
|
}
|
|
|
|
template< class T, class U >
|
|
static FORCEINLINE T Lerp(const T& A, const T& B, const U& Alpha)
|
|
{
|
|
return (T)(A + Alpha * (B - A));
|
|
}
|
|
|
|
static FORCEINLINE float Loge(float Value) { return logf(Value); }
|
|
|
|
template< class T >
|
|
static constexpr FORCEINLINE T Max(const T A, const T B)
|
|
{
|
|
return (A >= B) ? A : B;
|
|
}
|
|
|
|
static FORCEINLINE float Sin(float Value) { return sinf(Value); }
|
|
static FORCEINLINE float Asin(float Value) { return asinf((Value < -1.f) ? -1.f : ((Value < 1.f) ? Value : 1.f)); }
|
|
static FORCEINLINE float Sinh(float Value) { return sinhf(Value); }
|
|
static FORCEINLINE float Cos(float Value) { return cosf(Value); }
|
|
static FORCEINLINE float Acos(float Value) { return acosf((Value < -1.f) ? -1.f : ((Value < 1.f) ? Value : 1.f)); }
|
|
static FORCEINLINE float Tan(float Value) { return tanf(Value); }
|
|
static FORCEINLINE float Atan(float Value) { return atanf(Value); }
|
|
static float Atan2(float Y, float X);
|
|
static FORCEINLINE float Sqrt(float Value) { return sqrtf(Value); }
|
|
static FORCEINLINE float Pow(float A, float B) { return powf(A, B); }
|
|
|
|
template< class T >
|
|
static constexpr FORCEINLINE T Abs(const T A)
|
|
{
|
|
return (A >= (T)0) ? A : -A;
|
|
}
|
|
|
|
static FORCEINLINE float FloorToFloat(float F)
|
|
{
|
|
return floorf(F);
|
|
}
|
|
|
|
static FORCEINLINE double FloorToDouble(double F)
|
|
{
|
|
return floor(F);
|
|
}
|
|
|
|
static FORCEINLINE int32 RoundToInt(float F)
|
|
{
|
|
return FloorToInt(F + 0.5f);
|
|
}
|
|
|
|
static FORCEINLINE float Fractional(float Value)
|
|
{
|
|
return Value - TruncToFloat(Value);
|
|
}
|
|
|
|
static FORCEINLINE double TruncToDouble(double F)
|
|
{
|
|
return trunc(F);
|
|
}
|
|
|
|
static FORCEINLINE double Fractional(double Value)
|
|
{
|
|
return Value - TruncToDouble(Value);
|
|
}
|
|
}; |