Files
Project-Reboot-3.0/Project Reboot 3.0/GenericPlatformMath.h
Milxnor 9be64d79ca Revert "alright im not so happy"
This reverts commit bd87832147.
2023-05-12 17:51:29 -04:00

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);
}
};