Files
Project-Reboot-3.0/Project Reboot 3.0/Rotator.h
2023-06-11 14:34:35 -04:00

54 lines
778 B
C

#pragma once
#include "Quat.h"
#include "Vector.h"
#include "UnrealMathUtility.h"
struct FRotator
{
#ifdef ABOVE_S20
double Pitch;
double Yaw;
double Roll;
#else
float Pitch;
float Yaw;
float Roll;
#endif
FQuat Quaternion();
FVector Vector() const;
static float NormalizeAxis(float Angle);
static float ClampAxis(float Angle);
};
FORCEINLINE float FRotator::ClampAxis(float Angle)
{
// returns Angle in the range (-360,360)
Angle = FMath::Fmod(Angle, 360.f);
if (Angle < 0.f)
{
// shift to [0,360) range
Angle += 360.f;
}
return Angle;
}
FORCEINLINE float FRotator::NormalizeAxis(float Angle)
{
// returns Angle in the range [0,360)
Angle = ClampAxis(Angle);
if (Angle > 180.f)
{
// shift to (-180,180]
Angle -= 360.f;
}
return Angle;
}