Ark Server API (ASA) - Wiki
Loading...
Searching...
No Matches
FMath Member List

This is the complete list of members for FMath, including all inherited members.

ApplyScaleToFloat(float &Dst, const FVector &DeltaScale, float Magnitude=1.0f)FMathstatic
BiLerp(const T &P00, const T &P10, const T &P01, const T &P11, const U &FracX, const U &FracY)FMathinlinestatic
BiLerp(const T &P00, const T &P10, const T &P01, const T &P11, const U &FracX, const U &FracY)FMathinlinestatic
BitFlagFMathstatic
CartesianToPolar(const T X, const T Y, T &OutRad, T &OutAng)FMathinlinestatic
CartesianToPolar(const UE::Math::TVector2< T > InCart, UE::Math::TVector2< T > &OutPolar)FMathinlinestatic
CInterpTo(const FLinearColor &Current, const FLinearColor &Target, float DeltaTime, float InterpSpeed)FMathstatic
Clamp(const T X, const T Min, const T Max)FMathinlinestatic
Clamp(const float X, const float Min, const float Max)FMathinlinestatic
Clamp(const double X, const double Min, const double Max)FMathinlinestatic
Clamp(const int64 X, const int32 Min, const int32 Max)FMathinlinestatic
ClampAngle(T AngleDegrees, T MinAngleDegrees, T MaxAngleDegrees)FMathstatic
ClampAngle(T AngleDegrees, T MinAngleDegrees, T MaxAngleDegrees)FMath
ClosestPointOnInfiniteLine(const FVector &LineStart, const FVector &LineEnd, const FVector &Point)FMathstatic
ClosestPointOnLine(const FVector &LineStart, const FVector &LineEnd, const FVector &Point)FMathstatic
ClosestPointOnSegment(const FVector &Point, const FVector &StartPoint, const FVector &EndPoint)FMathstatic
ClosestPointOnSegment2D(const FVector2D &Point, const FVector2D &StartPoint, const FVector2D &EndPoint)FMathstatic
ClosestPointOnTetrahedronToPoint(const FVector &Point, const FVector &A, const FVector &B, const FVector &C, const FVector &D)FMathstatic
ClosestPointOnTriangleToPoint(const FVector &Point, const FVector &A, const FVector &B, const FVector &C)FMathstatic
ComputeBaryCentric2D(const FVector &Point, const FVector &A, const FVector &B, const FVector &C)FMathstatic
ComputeBaryCentric3D(const FVector &Point, const FVector &A, const FVector &B, const FVector &C, const FVector &D)FMathstatic
ComputeBoundingSphereForCone(UE::Math::TVector< FReal > const &ConeOrigin, UE::Math::TVector< FReal > const &ConeDirection, FReal ConeRadius, FReal CosConeAngle, FReal SinConeAngle)FMathstatic
ComputeBoundingSphereForCone(UE::Math::TVector< FReal > const &ConeOrigin, UE::Math::TVector< FReal > const &ConeDirection, FReal ConeRadius, FReal CosConeAngle, FReal SinConeAngle)FMath
ComputeProjectedSphereScissorRect(FIntRect &InOutScissorRect, FVector SphereOrigin, float Radius, FVector ViewOrigin, const FMatrix &ViewMatrix, const FMatrix &ProjMatrix)FMathstatic
CriticallyDampedSmoothing(T &InOutValue, T &InOutValueRate, const T &InTargetValue, const T &InTargetValueRate, const float InDeltaTime, const float InSmoothingTime)FMathinlinestatic
Cube(const T A)FMathinlinestatic
CubicCRSplineInterp(const U &P0, const U &P1, const U &P2, const U &P3, const float T0, const float T1, const float T2, const float T3, const float T)FMathinlinestatic
CubicCRSplineInterpSafe(const U &P0, const U &P1, const U &P2, const U &P3, const float T0, const float T1, const float T2, const float T3, const float T)FMathinlinestatic
CubicInterp(const T &P0, const T &T0, const T &P1, const T &T1, const U &A)FMathinlinestatic
CubicInterp(const T &P0, const T &T0, const T &P1, const T &T1, const U &A)FMathinlinestatic
CubicInterpDerivative(const T &P0, const T &T0, const T &P1, const T &T1, const U &A)FMathinlinestatic
CubicInterpSecondDerivative(const T &P0, const T &T0, const T &P1, const T &T1, const U &A)FMathinlinestatic
DegreesToRadians(T const &DegVal) -> decltype(DegVal *(UE_PI/180.f))FMathinlinestatic
DegreesToRadians(float const &DegVal)FMathinlinestatic
DegreesToRadians(double const &DegVal)FMathinlinestatic
DivideAndRoundDown(T Dividend, T Divisor)FMathinlinestatic
DivideAndRoundNearest(T Dividend, T Divisor)FMathinlinestatic
DivideAndRoundUp(T Dividend, T Divisor)FMathinlinestatic
DynamicWeightedMovingAverage(T CurrentSample, T PreviousSample, T MaxDistance, T MinWeight, T MaxWeight)FMathinlinestatic
Eval(FString Str, float &OutValue)FMathstatic
ExponentialSmoothingApprox(T &InOutValue, const T &InTargetValue, const float InDeltaTime, const float InSmoothingTime)FMathinlinestatic
ExtractBoolFromBitfield(uint8 *Ptr, uint32 Index)FMathinlinestatic
FastAsin(float Value)FMathinlinestatic
FastAsin(double Value)FMathinlinestatic
FindDeltaAngleDegrees(T A1, T2 A2) -> decltype(A1 *A2)FMathinlinestatic
FindDeltaAngleRadians(T A1, T2 A2) -> decltype(A1 *A2)FMathinlinestatic
FInterpConstantTo(T1 Current, T2 Target, T3 DeltaTime, T4 InterpSpeed)FMathinlinestatic
FInterpTo(T1 Current, T2 Target, T3 DeltaTime, T4 InterpSpeed)FMathinlinestatic
FixedTurn(float InCurrent, float InDesired, float InDeltaRate)FMathstatic
Floor(float F)FMathinlinestatic
Floor(double F)FMathinlinestatic
Floor(IntegralType I)FMathinlinestatic
FormatIntToHumanReadable(int32 Val)FMathstatic
FRandRange(float InMin, float InMax)FMathinlinestatic
FRandRange(double InMin, double InMax)FMathinlinestatic
GetAzimuthAndElevation(const FVector &Direction, const FVector &AxisX, const FVector &AxisY, const FVector &AxisZ)FMathstatic
GetBaryCentric2D(const FVector &Point, const FVector &A, const FVector &B, const FVector &C)FMathstatic
GetBaryCentric2D(const FVector2D &Point, const FVector2D &A, const FVector2D &B, const FVector2D &C)FMathstatic
GetDistanceWithinConeSegment(FVector Point, FVector ConeStartPoint, FVector ConeLine, float RadiusAtStart, float RadiusAtEnd, float &PercentageOut)FMathstatic
GetDotDistance(FVector2D &OutDotDist, const FVector &Direction, const FVector &AxisX, const FVector &AxisY, const FVector &AxisZ)FMathstatic
GetMappedRangeValueClamped(const UE::Math::TVector2< T > &InputRange, const UE::Math::TVector2< T > &OutputRange, const T2 Value)FMathinlinestatic
GetMappedRangeValueClamped(const TRange< T > &InputRange, const TRange< T > &OutputRange, const T Value)FMathinlinestatic
GetMappedRangeValueUnclamped(const UE::Math::TVector2< T > &InputRange, const UE::Math::TVector2< T > &OutputRange, const T2 Value)FMathinlinestatic
GetRangePct(T MinValue, T MaxValue, T2 Value)FMathinlinestatic
GetRangePct(UE::Math::TVector2< T > const &Range, T2 Value)FMathinlinestatic
GetRangePct(TRange< T > const &Range, T Value)FMathinlinestatic
GetRangeValue(UE::Math::TVector2< T > const &Range, T2 Pct)FMathinlinestatic
GetRangeValue(TRange< T > const &Range, T Pct)FMathinlinestatic
GetReflectionVector(const FVector &Direction, const FVector &SurfaceNormal)FMathstatic
GetTForSegmentPlaneIntersect(const FVector &StartPoint, const FVector &EndPoint, const FPlane &Plane)FMathstatic
GreatestCommonDivisor(int32 a, int32 b)FMathinlinestatic
GridSnap(T Location, T Grid)FMathinlinestatic
InterpCircularIn(const T &A, const T &B, float Alpha)FMathinlinestatic
InterpCircularInOut(const T &A, const T &B, float Alpha)FMathinlinestatic
InterpCircularOut(const T &A, const T &B, float Alpha)FMathinlinestatic
InterpEaseIn(const T &A, const T &B, float Alpha, float Exp)FMathinlinestatic
InterpEaseInOut(const T &A, const T &B, float Alpha, float Exp)FMathinlinestatic
InterpEaseOut(const T &A, const T &B, float Alpha, float Exp)FMathinlinestatic
InterpExpoIn(const T &A, const T &B, float Alpha)FMathinlinestatic
InterpExpoInOut(const T &A, const T &B, float Alpha)FMathinlinestatic
InterpExpoOut(const T &A, const T &B, float Alpha)FMathinlinestatic
InterpSinIn(const T &A, const T &B, float Alpha)FMathinlinestatic
InterpSinInOut(const T &A, const T &B, float Alpha)FMathinlinestatic
InterpSinOut(const T &A, const T &B, float Alpha)FMathinlinestatic
InterpStep(const T &A, const T &B, float Alpha, int32 Steps)FMathinlinestatic
IntersectPlanes2(UE::Math::TVector< FReal > &I, UE::Math::TVector< FReal > &D, const UE::Math::TPlane< FReal > &P1, const UE::Math::TPlane< FReal > &P2)FMathstatic
IntersectPlanes2(UE::Math::TVector< T > &I, UE::Math::TVector< T > &D, const UE::Math::TPlane< T > &P1, const UE::Math::TPlane< T > &P2)FMathinline
IntersectPlanes3(UE::Math::TVector< FReal > &I, const UE::Math::TPlane< FReal > &P1, const UE::Math::TPlane< FReal > &P2, const UE::Math::TPlane< FReal > &P3)FMathstatic
IntersectPlanes3(UE::Math::TVector< T > &I, const UE::Math::TPlane< T > &P1, const UE::Math::TPlane< T > &P2, const UE::Math::TPlane< T > &P3)FMathinline
InvExpApprox(T X)FMathinlinestatic
IsNearlyEqual(float A, float B, float ErrorTolerance=UE_SMALL_NUMBER)FMathinlinestatic
IsNearlyEqual(double A, double B, double ErrorTolerance=UE_DOUBLE_SMALL_NUMBER)FMathinlinestatic
IsNearlyEqualByULP(float A, float B, int32 MaxUlps=4)FMathinlinestatic
IsNearlyEqualByULP(double A, double B, int32 MaxUlps=4)FMathinlinestatic
IsNearlyZero(float Value, float ErrorTolerance=UE_SMALL_NUMBER)FMathinlinestatic
IsNearlyZero(double Value, double ErrorTolerance=UE_DOUBLE_SMALL_NUMBER)FMathinlinestatic
IsPowerOfTwo(T Value)FMathinlinestatic
IsWithin(const T &TestValue, const U &MinValue, const U &MaxValue)FMathinlinestatic
IsWithinInclusive(const T &TestValue, const U &MinValue, const U &MaxValue)FMathinlinestatic
LeastCommonMultiplier(int32 a, int32 b)FMathinlinestatic
Lerp(const T &A, const T &B, const U &Alpha)FMathinlinestatic
Lerp(const T &A, const T &B, const U &Alpha)FMathinlinestatic
Lerp(const T1 &A, const T2 &B, const T3 &Alpha) -> decltype(A *B)FMathinlinestatic
LerpRange(const UE::Math::TRotator< T > &A, const UE::Math::TRotator< T > &B, U Alpha)FMathstatic
LerpRange(const UE::Math::TRotator< T > &A, const UE::Math::TRotator< T > &B, U Alpha)FMath
LerpStable(const T &A, const T &B, double Alpha)FMathinlinestatic
LerpStable(const T &A, const T &B, float Alpha)FMathinlinestatic
LerpStable(const T1 &A, const T2 &B, const T3 &Alpha) -> decltype(A *B)FMathinlinestatic
LineBoxIntersection(const UE::Math::TBox< FReal > &Box, const UE::Math::TVector< FReal > &Start, const UE::Math::TVector< FReal > &End, const UE::Math::TVector< FReal > &Direction)FMathstatic
LineBoxIntersection(const UE::Math::TBox< FReal > &Box, const UE::Math::TVector< FReal > &Start, const UE::Math::TVector< FReal > &End, const UE::Math::TVector< FReal > &Direction, const UE::Math::TVector< FReal > &OneOverDirection)FMathstatic
LineBoxIntersection(const UE::Math::TBox< FReal > &Box, const UE::Math::TVector< FReal > &Start, const UE::Math::TVector< FReal > &End, const UE::Math::TVector< FReal > &StartToEnd)FMathinline
LineBoxIntersection(const UE::Math::TBox< FReal > &Box, const UE::Math::TVector< FReal > &Start, const UE::Math::TVector< FReal > &End, const UE::Math::TVector< FReal > &StartToEnd, const UE::Math::TVector< FReal > &OneOverStartToEnd)FMathinline
LineExtentBoxIntersection(const FBox &inBox, const FVector &Start, const FVector &End, const FVector &Extent, FVector &HitLocation, FVector &HitNormal, float &HitTime)FMathstatic
LinePlaneIntersection(const UE::Math::TVector< FReal > &Point1, const UE::Math::TVector< FReal > &Point2, const UE::Math::TVector< FReal > &PlaneOrigin, const UE::Math::TVector< FReal > &PlaneNormal)FMathstatic
LinePlaneIntersection(const UE::Math::TVector< FReal > &Point1, const UE::Math::TVector< FReal > &Point2, const UE::Math::TPlane< FReal > &Plane)FMathstatic
LinePlaneIntersection(const UE::Math::TVector< T > &Point1, const UE::Math::TVector< T > &Point2, const UE::Math::TVector< T > &PlaneOrigin, const UE::Math::TVector< T > &PlaneNormal)FMathinline
LinePlaneIntersection(const UE::Math::TVector< T > &Point1, const UE::Math::TVector< T > &Point2, const UE::Math::TPlane< T > &Plane)FMathinline
LineSphereIntersection(const UE::Math::TVector< FReal > &Start, const UE::Math::TVector< FReal > &Dir, FReal Length, const UE::Math::TVector< FReal > &Origin, FReal Radius)FMathstatic
LineSphereIntersection(const UE::Math::TVector< T > &Start, const UE::Math::TVector< T > &Dir, T Length, const UE::Math::TVector< T > &Origin, T Radius)FMathinline
Log2(float Value)FMathinlinestatic
Log2(double Value)FMathinlinestatic
MakePulsatingValue(const double InCurrentTime, const float InPulsesPerSecond, const float InPhase=0.0f)FMathinlinestatic
Max3(const T A, const T B, const T C)FMathinlinestatic
Max3Index(const T A, const T B, const T C)FMathinlinestatic
MemoryTest(void *BaseAddress, uint32 NumBytes)FMathstatic
Min3(const T A, const T B, const T C)FMathinlinestatic
Min3Index(const T A, const T B, const T C)FMathinlinestatic
MIX_FLOATS_2_ARGS(GridSnap)FMath
MIX_FLOATS_3_ARGS(Clamp)FMath
PerlinNoise1D(float Value)FMathstatic
PerlinNoise2D(const FVector2D &Location)FMathstatic
PerlinNoise3D(const FVector &Location)FMathstatic
PlaneAABBIntersection(const FPlane &P, const FBox &AABB)FMathstatic
PlaneAABBRelativePosition(const FPlane &P, const FBox &AABB)FMathstatic
PointBoxIntersection(const UE::Math::TVector< FReal > &Point, const UE::Math::TBox< FReal > &Box)FMathstatic
PointBoxIntersection(const UE::Math::TVector< FReal > &Point, const UE::Math::TBox< FReal > &Box)FMathinline
PointDistToLine(const FVector &Point, const FVector &Direction, const FVector &Origin, FVector &OutClosestPoint)FMathstatic
PointDistToLine(const FVector &Point, const FVector &Direction, const FVector &Origin)FMathstatic
PointDistToSegment(const FVector &Point, const FVector &StartPoint, const FVector &EndPoint)FMathstatic
PointDistToSegmentSquared(const FVector &Point, const FVector &StartPoint, const FVector &EndPoint)FMathstatic
PointsAreCoplanar(const TArray< FVector > &Points, const float Tolerance=0.1f)FMathstatic
PolarToCartesian(const T Rad, const T Ang, T &OutX, T &OutY)FMathinlinestatic
PolarToCartesian(const UE::Math::TVector2< T > InPolar, UE::Math::TVector2< T > &OutCart)FMathinlinestatic
QInterpConstantTo(const UE::Math::TQuat< T > &Current, const UE::Math::TQuat< T > &Target, float DeltaTime, float InterpSpeed)FMathstatic
QInterpTo(const UE::Math::TQuat< T > &Current, const UE::Math::TQuat< T > &Target, float DeltaTime, float InterpSpeed)FMathstatic
Quantize8SignedByte(float x)FMathinlinestatic
Quantize8UnsignedByte(float x)FMathinlinestatic
RadiansToDegrees(T const &RadVal) -> decltype(RadVal *(180.f/UE_PI))FMathinlinestatic
RadiansToDegrees(float const &RadVal)FMathinlinestatic
RadiansToDegrees(double const &RadVal)FMathinlinestatic
RandBool()FMathinlinestatic
RandHelper(int32 A)FMathinlinestatic
RandHelper64(int64 A)FMathinlinestatic
RandPointInBox(const FBox &Box)FMathstatic
RandPointInCircle(float CircleRadius)FMathstatic
RandRange(int32 Min, int32 Max)FMathinlinestatic
RandRange(int64 Min, int64 Max)FMathinlinestatic
RandRange(float InMin, float InMax)FMathinlinestatic
RandRange(double InMin, double InMax)FMathinlinestatic
RayPlaneIntersection(const UE::Math::TVector< FReal > &RayOrigin, const UE::Math::TVector< FReal > &RayDirection, const UE::Math::TPlane< FReal > &Plane)FMathstatic
RayPlaneIntersection(const UE::Math::TVector< T > &RayOrigin, const UE::Math::TVector< T > &RayDirection, const UE::Math::TPlane< T > &Plane)FMathinline
RayPlaneIntersectionParam(const UE::Math::TVector< FReal > &RayOrigin, const UE::Math::TVector< FReal > &RayDirection, const UE::Math::TPlane< FReal > &Plane)FMathstatic
RayPlaneIntersectionParam(const UE::Math::TVector< T > &RayOrigin, const UE::Math::TVector< T > &RayDirection, const UE::Math::TPlane< T > &Plane)FMathinline
RESOLVE_FLOAT_AMBIGUITY_2_ARGS(FRandRange)FMath
RESOLVE_FLOAT_AMBIGUITY_3_ARGS(ClampAngle)FMath
RESOLVE_FLOAT_PREDICATE_AMBIGUITY_2_ARGS(IsNearlyEqual)FMath
RESOLVE_FLOAT_PREDICATE_AMBIGUITY_2_ARGS(IsNearlyZero)FMath
RESOLVE_FLOAT_PREDICATE_AMBIGUITY_3_ARGS(IsNearlyEqual)FMath
RInterpConstantTo(const FRotator &Current, const FRotator &Target, float DeltaTime, float InterpSpeed)FMathstatic
RInterpTo(const FRotator &Current, const FRotator &Target, float DeltaTime, float InterpSpeed)FMathstatic
RoundFromZero(float F)FMathinlinestatic
RoundFromZero(double F)FMathinlinestatic
RoundHalfFromZero(float F)FMathstatic
RoundHalfFromZero(double F)FMathstatic
RoundHalfToEven(float F)FMathstatic
RoundHalfToEven(double F)FMathstatic
RoundHalfToZero(float F)FMathstatic
RoundHalfToZero(double F)FMathstatic
RoundToNegativeInfinity(float F)FMathinlinestatic
RoundToNegativeInfinity(double F)FMathinlinestatic
RoundToPositiveInfinity(float F)FMathinlinestatic
RoundToPositiveInfinity(double F)FMathinlinestatic
RoundToZero(float F)FMathinlinestatic
RoundToZero(double F)FMathinlinestatic
SegmentDistToSegment(FVector A1, FVector B1, FVector A2, FVector B2, FVector &OutP1, FVector &OutP2)FMathstatic
SegmentDistToSegmentSafe(FVector A1, FVector B1, FVector A2, FVector B2, FVector &OutP1, FVector &OutP2)FMathstatic
SegmentIntersection2D(const FVector &SegmentStartA, const FVector &SegmentEndA, const FVector &SegmentStartB, const FVector &SegmentEndB, FVector &out_IntersectionPoint)FMathstatic
SegmentPlaneIntersection(const FVector &StartPoint, const FVector &EndPoint, const FPlane &Plane, FVector &out_IntersectionPoint)FMathstatic
SegmentTriangleIntersection(const FVector &StartPoint, const FVector &EndPoint, const FVector &A, const FVector &B, const FVector &C, FVector &OutIntersectPoint, FVector &OutTriangleNormal)FMathstatic
SetBoolInBitField(uint8 *Ptr, uint32 Index, bool bSet)FMathinlinestatic
SinCos(std::decay_t< T > *ScalarSin, std::decay_t< T > *ScalarCos, T Value)FMathinlinestatic
SinCos(double *ScalarSin, double *ScalarCos, double Value)FMathinlinestatic
SinCos(T *ScalarSin, T *ScalarCos, U Value)FMathinlinestatic
SmoothStep(T A, T B, T X)FMathinlinestatic
SphereAABBIntersection(const UE::Math::TVector< FReal > &SphereCenter, const FReal RadiusSquared, const UE::Math::TBox< FReal > &AABB)FMathstatic
SphereAABBIntersection(const UE::Math::TSphere< FReal > &Sphere, const UE::Math::TBox< FReal > &AABB)FMathstatic
SphereAABBIntersection(const UE::Math::TVector< FReal > &SphereCenter, const FReal RadiusSquared, const UE::Math::TBox< FReal > &AABB)FMathinline
SphereAABBIntersection(const UE::Math::TSphere< FReal > &Sphere, const UE::Math::TBox< FReal > &AABB)FMathinline
SphereConeIntersection(const FVector &SphereCenter, float SphereRadius, const FVector &ConeAxis, float ConeAngleSin, float ConeAngleCos)FMathstatic
SphereDistToLine(FVector SphereOrigin, float SphereRadius, FVector LineOrigin, FVector LineDir, FVector &OutClosestPoint)FMathstatic
SpringDamper(T &InOutValue, T &InOutValueRate, const T &InTargetValue, const T &InTargetValueRate, const float InDeltaTime, const float InUndampedFrequency, const float InDampingRatio)FMathinlinestatic
SpringDamperSmoothing(T &InOutValue, T &InOutValueRate, const T &InTargetValue, const T &InTargetValueRate, const float InDeltaTime, const float InSmoothingTime, const float InDampingRatio)FMathinlinestatic
Square(const T A)FMathinlinestatic
TIsNearlyEqualByULP(FloatType A, FloatType B, int32 MaxUlps)FMathinlineprivatestatic
TruncateToHalfIfClose(float F, float Tolerance=UE_SMALL_NUMBER)FMathstatic
TruncateToHalfIfClose(double F, double Tolerance=UE_SMALL_NUMBER)FMathstatic
UnwindDegrees(T A)FMathinlinestatic
UnwindRadians(T A)FMathinlinestatic
Vector2DInterpConstantTo(const FVector2D &Current, const FVector2D &Target, float DeltaTime, float InterpSpeed)FMathstatic
Vector2DInterpTo(const FVector2D &Current, const FVector2D &Target, float DeltaTime, float InterpSpeed)FMathstatic
VInterpConstantTo(const FVector &Current, const FVector &Target, float DeltaTime, float InterpSpeed)FMathstatic
VInterpNormalRotationTo(const FVector &Current, const FVector &Target, float DeltaTime, float RotationSpeedDegrees)FMathstatic
VInterpTo(const FVector &Current, const FVector &Target, float DeltaTime, float InterpSpeed)FMathstatic
VRand()FMathinlinestatic
VRandCone(FVector const &Dir, float ConeHalfAngleRad)FMathstatic
VRandCone(FVector const &Dir, float HorizontalConeHalfAngleRad, float VerticalConeHalfAngleRad)FMathstatic
WeightedMovingAverage(T CurrentSample, T PreviousSample, T Weight)FMathinlinestatic
WindRelativeAnglesDegrees(float InAngle0, float &InOutAngle1)FMathstatic
WindRelativeAnglesDegrees(double InAngle0, double &InOutAngle1)FMathstatic
Wrap(const T X, const T Min, const T Max)FMathinlinestatic