Space Plunder
Loading...
Searching...
No Matches
UALSMathLibrary Class Reference

#include <ALSMathLibrary.h>

Inheritance diagram for UALSMathLibrary:

Static Public Member Functions

static FTransform MantleComponentLocalToWorld (const FALSComponentAndTransform &CompAndTransform)
 
static FTransform TransformSub (const FTransform &T1, const FTransform &T2)
 
static FTransform TransformAdd (const FTransform &T1, const FTransform &T2)
 
static FVector GetCapsuleBaseLocation (float ZOffset, UCapsuleComponent *Capsule)
 
static FVector GetCapsuleLocationFromBase (FVector BaseLocation, float ZOffset, UCapsuleComponent *Capsule)
 
static bool CapsuleHasRoomCheck (UCapsuleComponent *Capsule, FVector TargetLocation, float HeightOffset, float RadiusOffset, EDrawDebugTrace::Type DebugType=EDrawDebugTrace::Type::None, bool DrawDebugTrace=false)
 
static bool AngleInRange (float Angle, float MinAngle, float MaxAngle, float Buffer, bool IncreaseBuffer)
 
static EALSMovementDirection CalculateQuadrant (EALSMovementDirection Current, float FRThreshold, float FLThreshold, float BRThreshold, float BLThreshold, float Buffer, float Angle)
 

Detailed Description

Math library functions for ALS

Member Function Documentation

◆ AngleInRange()

bool UALSMathLibrary::AngleInRange ( float Angle,
float MinAngle,
float MaxAngle,
float Buffer,
bool IncreaseBuffer )
static
75{
76 if (IncreaseBuffer)
77 {
78 return Angle >= MinAngle - Buffer && Angle <= MaxAngle + Buffer;
79 }
80 return Angle >= MinAngle + Buffer && Angle <= MaxAngle - Buffer;
81}

◆ CalculateQuadrant()

EALSMovementDirection UALSMathLibrary::CalculateQuadrant ( EALSMovementDirection Current,
float FRThreshold,
float FLThreshold,
float BRThreshold,
float BLThreshold,
float Buffer,
float Angle )
static
87{
88 // Take the input angle and determine its quadrant (direction). Use the current Movement Direction to increase or
89 // decrease the buffers on the angle ranges for each quadrant.
90 if (AngleInRange(Angle, FLThreshold, FRThreshold, Buffer,
92 {
94 }
95
96 if (AngleInRange(Angle, FRThreshold, BRThreshold, Buffer,
98 {
100 }
101
102 if (AngleInRange(Angle, BLThreshold, FLThreshold, Buffer,
104 {
106 }
107
109}
static bool AngleInRange(float Angle, float MinAngle, float MaxAngle, float Buffer, bool IncreaseBuffer)
Definition ALSMathLibrary.cpp:74

◆ CapsuleHasRoomCheck()

bool UALSMathLibrary::CapsuleHasRoomCheck ( UCapsuleComponent * Capsule,
FVector TargetLocation,
float HeightOffset,
float RadiusOffset,
EDrawDebugTrace::Type DebugType = EDrawDebugTrace::Type::None,
bool DrawDebugTrace = false )
static
37{
38 // Perform a trace to see if the capsule has room to be at the target location.
39 const float ZTarget = Capsule->GetScaledCapsuleHalfHeight_WithoutHemisphere() - RadiusOffset + HeightOffset;
40 FVector TraceStart = TargetLocation;
41 TraceStart.Z += ZTarget;
42 FVector TraceEnd = TargetLocation;
43 TraceEnd.Z -= ZTarget;
44 const float Radius = Capsule->GetUnscaledCapsuleRadius() + RadiusOffset;
45
46 const UWorld* World = Capsule->GetWorld();
47 check(World);
48
49 FCollisionQueryParams Params;
50 Params.AddIgnoredActor(Capsule->GetOwner());
51
52 FHitResult HitResult;
53 const FCollisionShape SphereCollisionShape = FCollisionShape::MakeSphere(Radius);
54 const bool bHit = World->SweepSingleByChannel(HitResult, TraceStart, TraceEnd, FQuat::Identity,
55 ECC_Visibility, FCollisionShape::MakeSphere(Radius), Params);
56
57 if (DrawDebugTrace)
58 {
60 TraceStart,
61 TraceEnd,
62 SphereCollisionShape,
63 DebugType,
64 bHit,
65 HitResult,
66 FLinearColor(0.130706f, 0.896269f, 0.144582f, 1.0f), // light green
67 FLinearColor(0.932733f, 0.29136f, 1.0f, 1.0f), // light purple
68 1.0f);
69 }
70
71 return !(HitResult.bBlockingHit || HitResult.bStartPenetrating);
72}
static void DrawDebugSphereTraceSingle(const UWorld *World, const FVector &Start, const FVector &End, const FCollisionShape &CollisionShape, EDrawDebugTrace::Type DrawDebugType, bool bHit, const FHitResult &OutHit, FLinearColor TraceColor, FLinearColor TraceHitColor, float DrawTime)
Definition ALSDebugComponent.cpp:337

◆ GetCapsuleBaseLocation()

FVector UALSMathLibrary::GetCapsuleBaseLocation ( float ZOffset,
UCapsuleComponent * Capsule )
static
23{
24 return Capsule->GetComponentLocation() -
25 Capsule->GetUpVector() * (Capsule->GetScaledCapsuleHalfHeight() + ZOffset);
26}

◆ GetCapsuleLocationFromBase()

FVector UALSMathLibrary::GetCapsuleLocationFromBase ( FVector BaseLocation,
float ZOffset,
UCapsuleComponent * Capsule )
static
30{
31 BaseLocation.Z += Capsule->GetScaledCapsuleHalfHeight() + ZOffset;
32 return BaseLocation;
33}

◆ MantleComponentLocalToWorld()

FTransform UALSMathLibrary::MantleComponentLocalToWorld ( const FALSComponentAndTransform & CompAndTransform)
static
14{
15 const FTransform& InverseTransform = CompAndTransform.Component->GetComponentToWorld().Inverse();
16 const FVector Location = InverseTransform.InverseTransformPosition(CompAndTransform.Transform.GetLocation());
17 const FQuat Quat = InverseTransform.InverseTransformRotation(CompAndTransform.Transform.GetRotation());
18 const FVector Scale = InverseTransform.InverseTransformPosition(CompAndTransform.Transform.GetScale3D());
19 return {Quat, Location, Scale};
20}
TObjectPtr< UPrimitiveComponent > Component
Definition ALSCharacterStructLibrary.h:38
FTransform Transform
Definition ALSCharacterStructLibrary.h:35

◆ TransformAdd()

static FTransform UALSMathLibrary::TransformAdd ( const FTransform & T1,
const FTransform & T2 )
inlinestatic
36 {
37 return FTransform(T1.GetRotation().Rotator() + T2.GetRotation().Rotator(),
38 T1.GetLocation() + T2.GetLocation(), T1.GetScale3D() + T2.GetScale3D());
39 }

◆ TransformSub()

static FTransform UALSMathLibrary::TransformSub ( const FTransform & T1,
const FTransform & T2 )
inlinestatic
29 {
30 return FTransform(T1.GetRotation().Rotator() - T2.GetRotation().Rotator(),
31 T1.GetLocation() - T2.GetLocation(), T1.GetScale3D() - T2.GetScale3D());
32 }

The documentation for this class was generated from the following files: