8#include "../formatter.h"
9#include "../details/log_msg.h"
10#include "../details/os.h"
11#include "../fmt/fmt.h"
71static const char*
ampm(
const tm& t)
73 return t.tm_hour >= 12 ?
"PM" :
"AM";
78 return t.tm_hour > 12 ? t.tm_hour - 12 : t.tm_hour;
82static const std::
string days[] {
"Sun",
"Mon",
"Tue",
"Wed",
"Thu",
"Fri",
"Sat" };
87 msg.formatted << days[tm_time.tm_wday];
92static const std::
string full_days[] {
"Sunday",
"Monday",
"Tuesday",
"Wednesday",
"Thursday",
"Friday",
"Saturday" };
97 msg.formatted << full_days[tm_time.tm_wday];
102static const std::
string months[] {
"Jan",
"Feb",
"Mar",
"Apr",
"May",
"Jun",
"Jul",
"Aug",
"Sept",
"Oct",
"Nov",
"Dec" };
107 msg.formatted << months[tm_time.tm_mon];
112static const std::
string full_months[] {
"January",
"February",
"March",
"April",
"May",
"June",
"July",
"August",
"September",
"October",
"November",
"December" };
117 msg.formatted << full_months[tm_time.tm_mon];
125 w <<
fmt::pad(v1, 2,
'0') << sep <<
fmt::pad(v2, 2,
'0');
132 w <<
fmt::pad(v1, 2,
'0') << sep <<
fmt::pad(v2, 2,
'0') << sep <<
fmt::pad(v3, 2,
'0');
142 msg.formatted << days[tm_time.tm_wday] <<
' ' << months[tm_time.tm_mon] <<
' ' << tm_time.tm_mday <<
' ';
237 auto duration = msg.time.time_since_epoch();
238 auto millis = std::chrono::duration_cast<std::chrono::milliseconds>(duration).count() % 1000;
239 msg.formatted << fmt::pad(
static_cast<
int>(millis), 3,
'0');
248 auto duration = msg.time.time_since_epoch();
249 auto micros = std::chrono::duration_cast<std::chrono::microseconds>(duration).count() % 1000000;
250 msg.formatted << fmt::pad(
static_cast<
int>(micros), 6,
'0');
259 auto duration = msg.time.time_since_epoch();
260 auto ns = std::chrono::duration_cast<std::chrono::nanoseconds>(duration).count() % 1000000000;
261 msg.formatted << fmt::pad(
static_cast<
int>(ns), 9,
'0');
269 auto duration = msg.time.time_since_epoch();
270 auto seconds = std::chrono::duration_cast<std::chrono::seconds>(duration).count();
271 msg.formatted << seconds;
321 z_formatter&
operator=(
const z_formatter&) =
delete;
330 int total_minutes = os::utc_minutes_offset(tm_time);
332 bool is_negative = total_minutes < 0;
336 total_minutes = -total_minutes;
344 int h = total_minutes / 60;
345 int m = total_minutes % 60;
356 using namespace std::chrono;
358 if (msg.time - _last_update >= cache_refresh)
361 _last_update = msg.time;
430 msg.formatted << _str;
442#ifndef SPDLOG_NO_DATETIME
443 auto duration = msg.time.time_since_epoch();
444 auto millis = std::chrono::duration_cast<std::chrono::milliseconds>(duration).count() % 1000;
447
448
449
450
451
452
453
454
455
456
457
461 msg.formatted <<
'[' <<
static_cast<
unsigned int>(tm_time.tm_year + 1900) <<
'-'
462 << fmt::pad(
static_cast<
unsigned int>(tm_time.tm_mon + 1), 2,
'0') <<
'-'
463 << fmt::pad(
static_cast<
unsigned int>(tm_time.tm_mday), 2,
'0') <<
' '
464 << fmt::pad(
static_cast<
unsigned int>(tm_time.tm_hour), 2,
'0') <<
':'
465 << fmt::pad(
static_cast<
unsigned int>(tm_time.tm_min), 2,
'0') <<
':'
466 << fmt::pad(
static_cast<
unsigned int>(tm_time.tm_sec), 2,
'0') <<
'.'
467 << fmt::pad(
static_cast<
unsigned int>(millis), 3,
'0') <<
"] ";
474#ifndef SPDLOG_NO_NAME
475 msg
.formatted <<
'[' << *msg.logger_name <<
"] ";
493 compile_pattern(pattern);
496inline void spdlog::pattern_formatter::compile_pattern(
const std::string& pattern)
498 auto end = pattern.end();
499 std::unique_ptr<
details::aggregate_formatter> user_chars;
500 for (
auto it = pattern.begin(); it != end; ++it)
505 _formatters.push_back(std::move(user_chars));
515 user_chars = std::unique_ptr<details::aggregate_formatter>(
new details::aggregate_formatter());
516 user_chars->add_ch(*it);
521 _formatters.push_back(std::move(user_chars));
531 _formatters.push_back(std::unique_ptr<details::flag_formatter>(
new details::name_formatter()));
535 _formatters.push_back(std::unique_ptr<details::flag_formatter>(
new details::level_formatter()));
539 _formatters.push_back(std::unique_ptr<details::flag_formatter>(
new details::short_level_formatter()));
543 _formatters.push_back(std::unique_ptr<details::flag_formatter>(
new details::t_formatter()));
547 _formatters.push_back(std::unique_ptr<details::flag_formatter>(
new details::v_formatter()));
551 _formatters.push_back(std::unique_ptr<details::flag_formatter>(
new details::a_formatter()));
555 _formatters.push_back(std::unique_ptr<details::flag_formatter>(
new details::A_formatter()));
560 _formatters.push_back(std::unique_ptr<details::flag_formatter>(
new details::b_formatter()));
564 _formatters.push_back(std::unique_ptr<details::flag_formatter>(
new details::B_formatter()));
567 _formatters.push_back(std::unique_ptr<details::flag_formatter>(
new details::c_formatter()));
571 _formatters.push_back(std::unique_ptr<details::flag_formatter>(
new details::C_formatter()));
575 _formatters.push_back(std::unique_ptr<details::flag_formatter>(
new details::Y_formatter()));
581 _formatters.push_back(std::unique_ptr<details::flag_formatter>(
new details::D_formatter()));
585 _formatters.push_back(std::unique_ptr<details::flag_formatter>(
new details::m_formatter()));
589 _formatters.push_back(std::unique_ptr<details::flag_formatter>(
new details::d_formatter()));
593 _formatters.push_back(std::unique_ptr<details::flag_formatter>(
new details::H_formatter()));
597 _formatters.push_back(std::unique_ptr<details::flag_formatter>(
new details::I_formatter()));
601 _formatters.push_back(std::unique_ptr<details::flag_formatter>(
new details::M_formatter()));
605 _formatters.push_back(std::unique_ptr<details::flag_formatter>(
new details::S_formatter()));
609 _formatters.push_back(std::unique_ptr<details::flag_formatter>(
new details::e_formatter()));
613 _formatters.push_back(std::unique_ptr<details::flag_formatter>(
new details::f_formatter()));
616 _formatters.push_back(std::unique_ptr<details::flag_formatter>(
new details::F_formatter()));
620 _formatters.push_back(std::unique_ptr<details::flag_formatter>(
new details::E_formatter()));
624 _formatters.push_back(std::unique_ptr<details::flag_formatter>(
new details::p_formatter()));
628 _formatters.push_back(std::unique_ptr<details::flag_formatter>(
new details::r_formatter()));
632 _formatters.push_back(std::unique_ptr<details::flag_formatter>(
new details::R_formatter()));
637 _formatters.push_back(std::unique_ptr<details::flag_formatter>(
new details::T_formatter()));
641 _formatters.push_back(std::unique_ptr<details::flag_formatter>(
new details::z_formatter()));
645 _formatters.push_back(std::unique_ptr<details::flag_formatter>(
new details::full_formatter()));
649 _formatters.push_back(std::unique_ptr<details::flag_formatter>(
new details::pid_formatter()));
654 _formatters.push_back(std::unique_ptr<details::flag_formatter>(
new details::i_formatter()));
658 _formatters.push_back(std::unique_ptr<details::flag_formatter>(
new details::ch_formatter(
'%')));
659 _formatters.push_back(std::unique_ptr<details::flag_formatter>(
new details::ch_formatter(flag)));
667 return details::
os::localtime(log_clock::to_time_t(msg.time));
669 return details::
os::gmtime(log_clock::to_time_t(msg.time));
675#ifndef SPDLOG_NO_DATETIME
680 for (
auto &f : _formatters)
682 f->format(msg, tm_time);
static unsigned int GetBuildUniqueId()
ARK_API LPVOID GetDataAddress(const std::string &name)
ARK_API BitField GetBitField(LPVOID base, const std::string &name)
ARK_API BitField GetBitField(const void *base, const std::string &name)
ARK_API DWORD64 GetAddress(const void *base, const std::string &name)
ARK_API LPVOID GetAddress(const std::string &name)
FPlatformTypes::CHAR16 UCS2CHAR
A 16-bit character containing a UCS2 (Unicode, 16-bit, fixed-width) code unit, used for compatibility...
FWindowsPlatformTypes FPlatformTypes
#define PLATFORM_LITTLE_ENDIAN
FPlatformTypes::CHAR8 UTF8CHAR
An 8-bit character containing a UTF8 (Unicode, 8-bit, variable-width) code unit.
FPlatformTypes::CHAR16 UTF16CHAR
A 16-bit character containing a UTF16 (Unicode, 16-bit, variable-width) code unit.
FPlatformTypes::CHAR32 UTF32CHAR
A 32-bit character containing a UTF32 (Unicode, 32-bit, fixed-width) code unit.
TCString< TCHAR > FCString
int32 FindMatchingClosingParenthesis(const FString &TargetString, const int32 StartSearch)
int32 HexToBytes(const FString &HexString, uint8 *OutBytes)
const TCHAR * GetData(const FString &String)
const uint8 TCharToNibble(const TCHAR Char)
const bool CheckTCharIsHex(const TCHAR Char)
FORCEINLINE uint32 GetTypeHash(const FString &Thing)
TCHAR * GetData(FString &String)
SIZE_T GetNum(const FString &String)
void ByteToHex(uint8 In, FString &Result)
static const uint32 MaxSupportedEscapeChars
FString BytesToHex(const uint8 *In, int32 Count)
int32 StringToBytes(const FString &String, uint8 *OutBytes, int32 MaxBufferSize)
static const TCHAR * CharToEscapeSeqMap[][2]
TCHAR NibbleToTChar(uint8 Num)
FString BytesToString(const uint8 *In, int32 Count)
ARK_API std::vector< spdlog::sink_ptr > &APIENTRY GetLogSinks()
FORCEINLINE TEnableIf< TIsTriviallyCopyAssignable< ElementType >::Value >::Type CopyAssignItems(ElementType *Dest, const ElementType *Source, int32 Count)
#define WIN32_LEAN_AND_MEAN
#define THRESH_VECTOR_NORMALIZED
#define THRESH_NORMALS_ARE_PARALLEL
#define THRESH_POINTS_ARE_SAME
#define THRESH_POINT_ON_PLANE
#define THRESH_NORMALS_ARE_ORTHOGONAL
#define KINDA_SMALL_NUMBER
#define ARRAY_COUNT(array)
FORCEINLINE TRemoveReference< T >::Type && MoveTemp(T &&Obj)
#define Expose_TNameOf(type)
FORCEINLINE float ComputeSquaredDistanceFromBoxToPoint(const FVector &Mins, const FVector &Maxs, const FVector &Point)
FORCEINLINE FVector ClampVector(const FVector &V, const FVector &Min, const FVector &Max)
FORCEINLINE FVector operator*(float Scale, const FVector &V)
ApiUtils & operator=(ApiUtils &&)=delete
void SetCheatManager(UShooterCheatManager *cheatmanager)
void SetWorld(UWorld *uworld)
ApiUtils & operator=(const ApiUtils &)=delete
void SetShooterGameMode(AShooterGameMode *shooter_game_mode)
std::unordered_map< uint64, AShooterPlayerController * > steam_id_map_
UShooterCheatManager * GetCheatManager() const override
Returns a point to URCON CheatManager.
ApiUtils(ApiUtils &&)=delete
AShooterGameMode * shooter_game_mode_
AShooterGameMode * GetShooterGameMode() const override
Returns a pointer to AShooterGameMode.
void RemovePlayerController(AShooterPlayerController *player_controller)
UShooterCheatManager * cheatmanager_
void SetPlayerController(AShooterPlayerController *player_controller)
ServerStatus GetStatus() const override
Returns the current server status.
AShooterPlayerController * FindPlayerFromSteamId_Internal(uint64 steam_id) const override
~ApiUtils() override=default
void SetStatus(ServerStatus status)
UWorld * GetWorld() const override
Returns a pointer to UWorld.
ApiUtils(const ApiUtils &)=delete
static FString GetSteamName(AController *player_controller)
Returns the steam name of player.
static FORCEINLINE FString GetItemBlueprint(UPrimalItem *item)
Returns blueprint from UPrimalItem.
static FVector GetPosition(APlayerController *player_controller)
Returns the position of a player.
uint64 GetSteamIDForPlayerID(int player_id) const
static FORCEINLINE FString GetClassBlueprint(UClass *the_class)
Returns blueprint path from any UClass.
void SendServerMessageToAll(FLinearColor msg_color, const T *msg, Args &&... args)
Sends server message to all players. Using fmt::format.
virtual UShooterCheatManager * GetCheatManager() const =0
Returns a point to URCON CheatManager.
UPrimalGameData * GetGameData()
Returns pointer to Primal Game Data.
static bool IsRidingDino(AShooterPlayerController *player_controller)
Returns true if character is riding a dino, false otherwise.
AShooterGameState * GetGameState()
Get Shooter Game State.
virtual ~IApiUtils()=default
AShooterPlayerController * FindPlayerFromSteamName(const FString &steam_name) const
Finds player from the given steam name.
static UShooterCheatManager * GetCheatManagerByPC(AShooterPlayerController *SPC)
Get UShooterCheatManager* of player controller.
static uint64 GetPlayerID(AController *controller)
static bool IsPlayerDead(AShooterPlayerController *player)
Returns true if player is dead, false otherwise.
void SendNotificationToAll(FLinearColor color, float display_scale, float display_time, UTexture2D *icon, const T *msg, Args &&... args)
Sends notification (on-screen message) to all players. Using fmt::format.
APrimalDinoCharacter * SpawnDino(AShooterPlayerController *player, FString blueprint, FVector *location, int lvl, bool force_tame, bool neutered) const
Spawns a dino near player or at specific coordinates.
TArray< AShooterPlayerController * > FindPlayerFromCharacterName(const FString &character_name, ESearchCase::Type search, bool full_match) const
Finds all matching players from the given character name.
static FORCEINLINE FString GetBlueprint(UObjectBase *object)
Returns blueprint path from any UObject.
static FString GetCharacterName(AShooterPlayerController *player_controller, bool include_first_name=true, bool include_last_name=true)
Returns the character name of player.
TArray< AActor * > GetAllActorsInRange(FVector location, float radius, EServerOctreeGroup::Type ActorType)
Gets all actors in radius at location.
void SendChatMessageToAll(const FString &sender_name, const T *msg, Args &&... args)
Sends chat message to all players. Using fmt::format.
TArray< AActor * > GetAllActorsInRange(FVector location, float radius, EServerOctreeGroup::Type ActorType, TArray< AActor * > ignores)
Gets all actors in radius at location, with ignore actors.
virtual AShooterGameMode * GetShooterGameMode() const =0
Returns a pointer to AShooterGameMode.
static uint64 GetSteamIdFromController(AController *controller)
Returns Steam ID from player controller.
virtual UWorld * GetWorld() const =0
Returns a pointer to UWorld.
static bool TeleportToPos(AShooterPlayerController *player_controller, const FVector &pos)
Teleports player to the given position.
void SendNotification(AShooterPlayerController *player_controller, FLinearColor color, float display_scale, float display_time, UTexture2D *icon, const T *msg, Args &&... args)
Sends notification (on-screen message) to the specific player. Using fmt::format.
static uint64 GetPlayerID(APrimalCharacter *character)
virtual AShooterPlayerController * FindPlayerFromSteamId_Internal(uint64 steam_id) const =0
AShooterPlayerController * FindControllerFromCharacter(AShooterCharacter *character) const
Finds player controller from the given player character.
static APrimalDinoCharacter * GetRidingDino(AShooterPlayerController *player_controller)
Returns the dino the character is riding.
static FString GetIPAddress(AShooterPlayerController *player_controller)
Returns IP address of player.
AShooterPlayerController * FindPlayerFromSteamId(uint64 steam_id) const
Finds player from the given steam id.
virtual ServerStatus GetStatus() const =0
Returns the current server status.
void SendServerMessage(AShooterPlayerController *player_controller, FLinearColor msg_color, const T *msg, Args &&... args)
Sends server message to the specific player. Using fmt::format.
static std::optional< FString > TeleportToPlayer(AShooterPlayerController *me, AShooterPlayerController *him, bool check_for_dino, float max_dist)
Teleport one player to another.
static int GetInventoryItemCount(AShooterPlayerController *player_controller, const FString &item_name)
Counts a specific items quantity.
void SendChatMessage(AShooterPlayerController *player_controller, const FString &sender_name, const T *msg, Args &&... args)
Sends chat message to the specific player. Using fmt::format.
FORCEINLINE const DataType & GetCharArray() const
FORCEINLINE friend bool operator<=(const FString &Lhs, const CharType *Rhs)
FORCEINLINE void RemoveAt(int32 Index, int32 Count=1, bool bAllowShrinking=true)
FORCEINLINE friend FString operator+(FString &&Lhs, FString &&Rhs)
FORCEINLINE FString & Append(const FString &Text)
FORCEINLINE uint32 GetAllocatedSize() const
FString TrimStart() const &
int32 Find(const TCHAR *SubStr, ESearchCase::Type SearchCase=ESearchCase::IgnoreCase, ESearchDir::Type SearchDir=ESearchDir::FromStart, int32 StartPosition=INDEX_NONE) const
FORCEINLINE friend FString operator/(const FString &Lhs, const FString &Rhs)
FORCEINLINE FString(const std::string &str)
int32 ParseIntoArray(TArray< FString > &OutArray, const TCHAR **DelimArray, int32 NumDelims, bool InCullEmpty=true) const
FORCEINLINE friend FString operator+(const FString &Lhs, const TCHAR *Rhs)
FORCEINLINE friend bool operator!=(const FString &Lhs, const CharType *Rhs)
FORCEINLINE int32 Find(const FString &SubStr, ESearchCase::Type SearchCase=ESearchCase::IgnoreCase, ESearchDir::Type SearchDir=ESearchDir::FromStart, int32 StartPosition=INDEX_NONE) const
FORCEINLINE friend DataType::RangedForIteratorType end(FString &Str)
FORCEINLINE friend FString operator+(FString &&Lhs, const FString &Rhs)
FString(FString &&)=default
FORCEINLINE FString & operator=(const TCHAR *Other)
FORCEINLINE friend bool operator<(const CharType *Lhs, const FString &Rhs)
FString TrimEnd() const &
FString Replace(const TCHAR *From, const TCHAR *To, ESearchCase::Type SearchCase=ESearchCase::IgnoreCase) const
FORCEINLINE FString LeftChop(int32 Count) const
FORCEINLINE bool FindChar(TCHAR InChar, int32 &Index) const
FORCEINLINE friend bool operator!=(const FString &Lhs, const FString &Rhs)
int32 ReplaceInline(const TCHAR *SearchText, const TCHAR *ReplacementText, ESearchCase::Type SearchCase=ESearchCase::IgnoreCase)
FORCEINLINE FString Mid(int32 Start, int32 Count=INT_MAX) const
FORCEINLINE FString(FString &&Other, int32 ExtraSlack)
static FORCEINLINE FString ConcatFStrings(typename TIdentity< LhsType >::Type Lhs, typename TIdentity< RhsType >::Type Rhs)
static FString Chr(TCHAR Ch)
FORCEINLINE friend DataType::RangedForIteratorType begin(FString &Str)
FORCEINLINE friend FString operator+(const FString &Lhs, FString &&Rhs)
FORCEINLINE DataType & GetCharArray()
FORCEINLINE friend bool operator==(const FString &Lhs, const CharType *Rhs)
static FORCEINLINE FString FromInt(int32 Num)
FORCEINLINE FString & operator+=(const FString &Str)
FString & Append(const TCHAR *Text, int32 Count)
FORCEINLINE FString & operator/=(const FString &Str)
FORCEINLINE friend FString operator+(const FString &Lhs, const FString &Rhs)
FORCEINLINE int32 Compare(const FString &Other, ESearchCase::Type SearchCase=ESearchCase::CaseSensitive) const
FORCEINLINE friend bool operator<=(const CharType *Lhs, const FString &Rhs)
FORCEINLINE friend bool operator==(const FString &Lhs, const FString &Rhs)
FString TrimStartAndEnd() &&
FORCEINLINE friend FString operator+(const TCHAR *Lhs, const FString &Rhs)
FORCEINLINE TIterator CreateIterator()
FORCEINLINE void Reserve(const uint32 CharacterCount)
FString ReplaceQuotesWithEscapedQuotes() const
FString & operator=(FString &&)=default
static int32 CullArray(TArray< FString > *InArray)
bool MatchesWildcard(const FString &Wildcard, ESearchCase::Type SearchCase=ESearchCase::IgnoreCase) const
FString ConvertTabsToSpaces(const int32 InSpacesPerTab)
bool StartsWith(const TCHAR *InSuffix, ESearchCase::Type SearchCase=ESearchCase::IgnoreCase) const
FORCEINLINE friend bool operator!=(const CharType *Lhs, const FString &Rhs)
static FORCEINLINE FString ConcatTCHARsToFString(const TCHAR *Lhs, typename TIdentity< RhsType >::Type Rhs)
FORCEINLINE FString Left(int32 Count) const
static bool ToHexBlob(const FString &Source, uint8 *DestBuffer, const uint32 DestSize)
int32 ParseIntoArrayLines(TArray< FString > &OutArray, bool InCullEmpty=true) const
FORCEINLINE bool FindLastChar(TCHAR InChar, int32 &Index) const
std::string ToString() const
Convert FString to std::string.
FString TrimQuotes(bool *bQuotesRemoved=nullptr) const
FORCEINLINE FString & operator+=(const TCHAR *Str)
void AppendInt(int32 InNum)
FORCEINLINE const TCHAR * operator*() const
FORCEINLINE friend FString operator/(FString &&Lhs, const TCHAR *Rhs)
FORCEINLINE friend FString operator/(FString &&Lhs, const FString &Rhs)
FString RightPad(int32 ChCount) const
FORCEINLINE friend TEnableIf< TIsCharType< CharType >::Value, FString >::Type operator+(const FString &Lhs, CharType Rhs)
FORCEINLINE friend DataType::RangedForConstIteratorType end(const FString &Str)
void PathAppend(const TCHAR *Str, int32 StrLength)
FORCEINLINE bool Contains(const FString &SubStr, ESearchCase::Type SearchCase=ESearchCase::IgnoreCase, ESearchDir::Type SearchDir=ESearchDir::FromStart) const
FORCEINLINE FString(const CharType *Src, typename TEnableIf< TIsCharType< CharType >::Value >::Type *Dummy=nullptr)
FORCEINLINE FString RightChop(int32 Count) const
bool EndsWith(const FString &InSuffix, ESearchCase::Type SearchCase=ESearchCase::IgnoreCase) const
static FString ChrN(int32 NumCharacters, TCHAR Char)
static FORCEINLINE FString ConcatFStringToTCHARs(typename TIdentity< LhsType >::Type Lhs, const TCHAR *Rhs)
FORCEINLINE friend FString operator+(const TCHAR *Lhs, FString &&Rhs)
FORCEINLINE TConstIterator CreateConstIterator() const
bool StartsWith(const FString &InPrefix, ESearchCase::Type SearchCase=ESearchCase::IgnoreCase) const
FString ToUpper() const &
FString(const FString &)=default
static FString FormatAsNumber(int32 InNumber)
FORCEINLINE bool Equals(const FString &Other, ESearchCase::Type SearchCase=ESearchCase::CaseSensitive) const
FORCEINLINE bool IsValidIndex(int32 Index) const
FORCEINLINE friend FString operator/(const FString &Lhs, const TCHAR *Rhs)
void TrimStartAndEndInline()
int32 ParseIntoArray(TArray< FString > &OutArray, const TCHAR *pchDelim, bool InCullEmpty=true) const
bool EndsWith(const TCHAR *InSuffix, ESearchCase::Type SearchCase=ESearchCase::IgnoreCase) const
FORCEINLINE FString(int32 InCount, const TCHAR *InSrc)
FORCEINLINE friend DataType::RangedForConstIteratorType begin(const FString &Str)
FORCEINLINE friend bool operator>(const FString &Lhs, const CharType *Rhs)
FString ReplaceCharWithEscapedChar(const TArray< TCHAR > *Chars=nullptr) const
static bool ToBlob(const FString &Source, uint8 *DestBuffer, const uint32 DestSize)
FORCEINLINE TCHAR & operator[](int32 Index)
FORCEINLINE void InsertAt(int32 Index, TCHAR Character)
FORCEINLINE friend bool operator>=(const CharType *Lhs, const FString &Rhs)
FORCEINLINE friend FString operator/(const TCHAR *Lhs, const FString &Rhs)
FORCEINLINE void AppendChars(const TCHAR *Array, int32 Count)
FORCEINLINE friend TEnableIf< TIsCharType< CharType >::Value, FString >::Type operator+(FString &&Lhs, CharType Rhs)
FORCEINLINE void Shrink()
FORCEINLINE friend bool operator>(const CharType *Lhs, const FString &Rhs)
FORCEINLINE bool IsEmpty() const
FORCEINLINE FString Right(int32 Count) const
FORCEINLINE void InsertAt(int32 Index, const FString &Characters)
FORCEINLINE bool Contains(const TCHAR *SubStr, ESearchCase::Type SearchCase=ESearchCase::IgnoreCase, ESearchDir::Type SearchDir=ESearchDir::FromStart) const
FORCEINLINE friend bool operator>(const FString &Lhs, const FString &Rhs)
FORCEINLINE friend bool operator==(const CharType *Lhs, const FString &Rhs)
FORCEINLINE friend bool operator<(const FString &Lhs, const CharType *Rhs)
static FString Join(const TArray< T, Allocator > &Array, const TCHAR *Separator)
bool RemoveFromEnd(const FString &InSuffix, ESearchCase::Type SearchCase=ESearchCase::IgnoreCase)
FORCEINLINE TEnableIf< TIsCharType< CharType >::Value, FString & >::Type operator+=(CharType InChar)
FORCEINLINE const TCHAR & operator[](int32 Index) const
FORCEINLINE friend bool operator<(const FString &Lhs, const FString &Rhs)
FORCEINLINE friend bool operator>=(const FString &Lhs, const FString &Rhs)
FString ToLower() const &
int32 ParseIntoArrayWS(TArray< FString > &OutArray, const TCHAR *pchExtraDelim=nullptr, bool InCullEmpty=true) const
bool Split(const FString &InS, FString *LeftS, FString *RightS, ESearchCase::Type SearchCase=ESearchCase::IgnoreCase, ESearchDir::Type SearchDir=ESearchDir::FromStart) const
static FString Format(const T *format, Args &&... args)
Formats text using fmt::format.
FString LeftPad(int32 ChCount) const
FORCEINLINE int32 FindLastCharByPredicate(Predicate Pred) const
FORCEINLINE void Reset(int32 NewReservedSize=0)
FORCEINLINE void Empty(int32 Slack=0)
FORCEINLINE int32 Len() const
FORCEINLINE int32 FindLastCharByPredicate(Predicate Pred, int32 Count) const
void TrimToNullTerminator()
bool RemoveFromStart(const FString &InPrefix, ESearchCase::Type SearchCase=ESearchCase::IgnoreCase)
FORCEINLINE FString & AppendChar(const TCHAR InChar)
FORCEINLINE friend bool operator>=(const FString &Lhs, const CharType *Rhs)
FORCEINLINE friend bool operator<=(const FString &Lhs, const FString &Rhs)
FORCEINLINE void CheckInvariants() const
FORCEINLINE friend FString operator+(FString &&Lhs, const TCHAR *Rhs)
FString ReplaceEscapedCharWithChar(const TArray< TCHAR > *Chars=nullptr) const
FORCEINLINE FString(const FString &Other, int32 ExtraSlack)
FORCEINLINE FString & operator/=(const TCHAR *Str)
FString & operator=(const FString &)=default
FString TrimStartAndEnd() const &
std::shared_ptr< spdlog::logger > logger_
Log & operator=(Log &&)=delete
static std::shared_ptr< spdlog::logger > & GetLog()
Log & operator=(const Log &)=delete
FORCEINLINE int32 Num() const
FORCEINLINE int32 Add(const ElementType &Item)
void Reset(int32 NewSize=0)
int32 Remove(const ElementType &Item)
void Empty(int32 Slack=0)
FORCEINLINE ElementType * GetData() const
FORCEINLINE ObjectType * Get() const
ArgList(ULongLong types, const internal::Value *values)
internal::Arg::Type type(unsigned index) const
friend class internal::ArgMap
internal::Arg operator[](unsigned index) const
static internal::Arg::Type type(uint64_t types, unsigned index)
ArgList(ULongLong types, const internal::Arg *args)
void report_unhandled_arg()
Result visit_custom(Arg::CustomValue)
Result visit(const Arg &arg)
Result visit_double(double value)
Result visit_uint(unsigned value)
Result visit_cstring(const char *)
Result visit_pointer(const void *)
Result visit_unhandled_arg()
Result visit_any_double(T)
Result visit_long_double(long double value)
Result visit_long_long(LongLong value)
Result visit_wstring(Arg::StringValue< wchar_t >)
Result visit_string(Arg::StringValue< char >)
Result visit_ulong_long(ULongLong value)
Result visit_int(int value)
Result visit_bool(bool value)
Result visit_char(int value)
BasicArrayWriter(Char *array, std::size_t size)
internal::FixedBuffer< Char > buffer_
BasicArrayWriter(Char(&array)[SIZE])
const Char * c_str() const
BasicCStringRef(const Char *s)
BasicStringRef(const Char *s)
friend bool operator!=(BasicStringRef lhs, BasicStringRef rhs)
friend bool operator<(BasicStringRef lhs, BasicStringRef rhs)
const Char * data() const
friend bool operator<=(BasicStringRef lhs, BasicStringRef rhs)
friend bool operator>(BasicStringRef lhs, BasicStringRef rhs)
std::basic_string< Char > to_string() const
friend bool operator>=(BasicStringRef lhs, BasicStringRef rhs)
BasicStringRef(const Char *s, std::size_t size)
friend bool operator==(BasicStringRef lhs, BasicStringRef rhs)
int compare(BasicStringRef other) const
static CharPtr fill_padding(CharPtr buffer, unsigned total_size, std::size_t content_size, wchar_t fill)
void write_decimal(Int value)
void append_float_length(Char *&, T)
void write_int(T value, Spec spec)
static Char * get(Char *p)
friend class BasicPrintfArgFormatter
BasicWriter(Buffer< Char > &b)
CharPtr prepare_int_buffer(unsigned num_digits, const Spec &spec, const char *prefix, unsigned prefix_size)
Char * write_unsigned_decimal(UInt value, unsigned prefix_size=0)
void append_float_length(Char *&format_ptr, long double)
void operator<<(typename internal::WCharHelper< const wchar_t *, Char >::Unsupported)
CharPtr grow_buffer(std::size_t n)
void write_str(const internal::Arg::StringValue< StrChar > &str, const Spec &spec)
const Char * data() const FMT_NOEXCEPT
std::basic_string< Char > str() const
void clear() FMT_NOEXCEPT
CharPtr write_str(const StrChar *s, std::size_t size, const AlignSpec &spec)
void write(BasicCStringRef< Char > format, ArgList args)
Buffer< Char > & buffer() FMT_NOEXCEPT
CharPtr prepare_int_buffer(unsigned num_digits, const EmptySpec &, const char *prefix, unsigned prefix_size)
void operator<<(typename internal::WCharHelper< wchar_t, Char >::Unsupported)
internal::CharTraits< Char >::CharPtr CharPtr
void write_double(T value, const Spec &spec)
const Char * c_str() const
void resize(std::size_t new_size)
void push_back(const T &value)
void clear() FMT_NOEXCEPT
void append(const U *begin, const U *end)
void reserve(std::size_t capacity)
virtual void grow(std::size_t size)=0
Buffer(T *ptr=FMT_NULL, std::size_t capacity=0)
T & operator[](std::size_t index)
std::size_t capacity() const
const T & operator[](std::size_t index) const
SystemError(int error_code, CStringRef message)
FMT_API ~SystemError() FMT_DTOR_NOEXCEPT FMT_OVERRIDE
FMT_API void init(int err_code, CStringRef format_str, ArgList args)
void init(const ArgList &args)
static Char cast(int value)
static char convert(char value)
static char convert(wchar_t)
static wchar_t convert(char value)
static wchar_t convert(wchar_t value)
MakeValue(unsigned long value)
MakeValue(typename WCharHelper< wchar_t, Char >::Unsupported)
MakeValue(typename WCharHelper< WStringRef, Char >::Unsupported)
static uint64_t type(long)
MakeValue(typename WCharHelper< const wchar_t *, Char >::Unsupported)
MakeValue(typename WCharHelper< wchar_t *, Char >::Unsupported)
void set_string(WStringRef str)
static uint64_t type(unsigned long)
void set_string(StringRef str)
MakeValue(const T *value)
static void format_custom_arg(void *formatter, const void *arg, void *format_str_ptr)
RuntimeError(const RuntimeError &rerr)
FMT_API ~RuntimeError() FMT_DTOR_NOEXCEPT FMT_OVERRIDE
ThousandsSep(fmt::StringRef sep)
void operator()(Char *&buffer)
void format(details::log_msg &msg) override
pattern_formatter(const pattern_formatter &)=delete
std::tm get_time(details::log_msg &msg)
pattern_formatter & operator=(const pattern_formatter &)=delete
void handle_flag(char flag)
const std::string _pattern
const pattern_time_type _pattern_time
std::vector< std::unique_ptr< details::flag_formatter > > _formatters
const std::chrono::seconds cache_refresh
log_clock::time_point _last_update
void format(details::log_msg &msg, const std::tm &tm_time) override
z_formatter & operator=(const z_formatter &)=delete
int get_cached_offset(const log_msg &msg, const std::tm &tm_time)
void format(details::log_msg &msg, const std::tm &) override
z_formatter(const z_formatter &)=delete
const std::vector< sink_ptr > & sinks() const
std::atomic< time_t > _last_err_time
void log(level::level_enum lvl, const T &)
void log(level::level_enum lvl, const char *fmt, const Args &... args)
log_err_handler _err_handler
void debug(const char *fmt, const Arg1 &, const Args &... args)
void trace(const char *fmt, const Arg1 &, const Args &... args)
bool should_log(level::level_enum) const
void log(level::level_enum lvl, const char *msg)
void flush_on(level::level_enum log_level)
virtual log_err_handler error_handler()
spdlog::level_t _flush_level
void set_formatter(formatter_ptr)
void warn(const char *fmt, const Arg1 &, const Args &... args)
void info(const char *fmt, const Arg1 &, const Args &... args)
void error(const char *fmt, const Arg1 &, const Args &... args)
logger & operator=(const logger &)=delete
std::vector< sink_ptr > _sinks
logger(const logger &)=delete
std::atomic< size_t > _msg_counter
bool _should_flush_on(const details::log_msg &)
const std::string & name() const
virtual void _sink_it(details::log_msg &)
void critical(const char *fmt, const Arg1 &, const Args &... args)
virtual void _set_formatter(formatter_ptr)
void _incr_msg_counter(details::log_msg &msg)
void set_level(level::level_enum)
virtual ~base_sink()=default
base_sink & operator=(const base_sink &)=delete
void log(const details::log_msg &msg) SPDLOG_FINAL override
void flush() SPDLOG_FINAL override
virtual void _sink_it(const details::log_msg &msg)=0
base_sink(const base_sink &)=delete
void set_level(level::level_enum log_level)
bool should_log(level::level_enum msg_level) const
virtual void log(const details::log_msg &msg)=0
const char * what() const SPDLOG_NOEXCEPT override
#define SPDLOG_LEVEL_NAMES
IApiUtils & GetApiUtils()
void FromString(float &OutValue, const TCHAR *Buffer)
void FromString(int8 &OutValue, const TCHAR *Buffer)
void FromString(uint8 &OutValue, const TCHAR *Buffer)
void FromString(uint32 &OutValue, const TCHAR *Buffer)
TEnableIf< TIsCharType< CharType >::Value, FString >::Type ToString(const CharType *Ptr)
void FromString(int32 &OutValue, const TCHAR *Buffer)
void FromString(uint64 &OutValue, const TCHAR *Buffer)
FString ToSanitizedString(const T &Value)
void FromString(FString &OutValue, const TCHAR *Buffer)
void FromString(double &OutValue, const TCHAR *Buffer)
void FromString(uint16 &OutValue, const TCHAR *Buffer)
static TEnableIf< TIsArithmetic< T >::Value, bool >::Type TryParseString(T &OutValue, const TCHAR *Buffer)
void FromString(int16 &OutValue, const TCHAR *Buffer)
FString ToString(bool Value)
FORCEINLINE FString ToString(FString &&Str)
FORCEINLINE FString ToString(const FString &Str)
void FromString(int64 &OutValue, const TCHAR *Buffer)
bool MatchesWildcardRecursive(const TCHAR *Target, int32 TargetLength, const TCHAR *Wildcard, int32 WildcardLength)
unsigned parse_nonnegative_int(const Char *&s)
T * make_ptr(T *ptr, std::size_t)
bool is_name_start(Char c)
Yes & convert(fmt::ULongLong)
bool is_negative(T value)
fmt::StringRef thousands_sep(...)
void require_numeric_argument(const Arg &arg, char spec)
MakeUnsigned< Int >::Type to_unsigned(Int value)
void format_decimal(Char *buffer, UInt value, unsigned num_digits)
void check_sign(const Char *&s, const Arg &arg)
StringRef thousands_sep(LConv *lc, LConvCheck< char *LConv::*, &LConv::thousands_sep >=0)
uint64_t make_type(const T &arg)
void format_arg(Formatter &,...)
void format_decimal(Char *buffer, UInt value, unsigned num_digits, ThousandsSep thousands_sep)
ArgJoin< wchar_t, It > join(It first, It last, const BasicCStringRef< wchar_t > &sep)
void format_decimal(char *&buffer, T value)
FMT_API void print(CStringRef format_str, ArgList args)
FMT_API void print_colored(Color c, CStringRef format, ArgList args)
ArgJoin< char, It > join(It first, It last, const BasicCStringRef< char > &sep)
IntFormatSpec< int, TypeSpec< 'o'> > oct(int value)
BasicWriter< char > Writer
StrFormatSpec< wchar_t > pad(const wchar_t *str, unsigned width, char fill=' ')
BasicArrayWriter< wchar_t > WArrayWriter
std::string format(CStringRef format_str, ArgList args)
BasicArrayWriter< char > ArrayWriter
IntFormatSpec< int, TypeSpec< 'b'> > bin(int value)
BasicMemoryWriter< wchar_t > WMemoryWriter
IntFormatSpec< int, TypeSpec< 'x'> > hex(int value)
BasicStringRef< wchar_t > WStringRef
BasicMemoryWriter< char > MemoryWriter
void arg(WStringRef, const internal::NamedArg< Char > &) FMT_DELETED_OR_UNDEFINED
FMT_API void report_system_error(int error_code, StringRef message) FMT_NOEXCEPT
void format_arg(fmt::BasicFormatter< Char, ArgFormatter > &f, const Char *&format_str, const ArgJoin< Char, It > &e)
std::wstring format(WCStringRef format_str, ArgList args)
FMT_API void print(std::FILE *f, CStringRef format_str, ArgList args)
internal::NamedArgWithType< char, T > arg(StringRef name, const T &arg)
IntFormatSpec< int, AlignTypeSpec< TYPE_CODE >, Char > pad(int value, unsigned width, Char fill=' ')
FMT_API void format_system_error(fmt::Writer &out, int error_code, fmt::StringRef message) FMT_NOEXCEPT
void arg(StringRef, const internal::NamedArg< Char > &) FMT_DELETED_OR_UNDEFINED
internal::NamedArgWithType< wchar_t, T > arg(WStringRef name, const T &arg)
IntFormatSpec< int, TypeSpec< 'X'> > hexu(int value)
BasicStringRef< char > StringRef
StrFormatSpec< Char > pad(const Char *str, unsigned width, Char fill=' ')
BasicCStringRef< wchar_t > WCStringRef
FMT_GCC_EXTENSION typedef long long LongLong
BasicCStringRef< char > CStringRef
FMT_GCC_EXTENSION typedef unsigned long long ULongLong
BasicWriter< wchar_t > WWriter
bool operator!=(const std::tm &tm1, const std::tm &tm2)
std::string errno_to_string(char[256], char *res)
bool in_terminal(FILE *file)
std::string errno_to_string(char buf[256], int res)
void prevent_child_fd(FILE *f)
int utc_minutes_offset(const std::tm &tm=details::os::localtime())
std::tm gmtime(const std::time_t &time_tt)
static SPDLOG_CONSTEXPR int eol_size
std::tm localtime(const std::time_t &time_tt)
spdlog::log_clock::time_point now()
std::string errno_str(int err_num)
static SPDLOG_CONSTEXPR const char * eol
bool operator==(const std::tm &tm1, const std::tm &tm2)
static fmt::MemoryWriter & pad_n_join(fmt::MemoryWriter &w, int v1, int v2, int v3, char sep)
static const char * ampm(const tm &t)
static int to12h(const tm &t)
static fmt::MemoryWriter & pad_n_join(fmt::MemoryWriter &w, int v1, int v2, char sep)
const char * to_short_str(spdlog::level::level_enum l)
const char * to_str(spdlog::level::level_enum l)
static const char * short_level_names[]
void set_formatter(formatter_ptr f)
std::shared_ptr< logger > stdout_logger_st(const std::string &logger_name)
std::shared_ptr< logger > create_async(const std::string &logger_name, const sink_ptr &sink, size_t queue_size, const async_overflow_policy overflow_policy=async_overflow_policy::block_retry, const std::function< void()> &worker_warmup_cb=nullptr, const std::chrono::milliseconds &flush_interval_ms=std::chrono::milliseconds::zero(), const std::function< void()> &worker_teardown_cb=nullptr)
void register_logger(std::shared_ptr< logger > logger)
std::shared_ptr< logger > rotating_logger_st(const std::string &logger_name, const filename_t &filename, size_t max_file_size, size_t max_files)
std::shared_ptr< logger > rotating_logger_mt(const std::string &logger_name, const filename_t &filename, size_t max_file_size, size_t max_files)
void set_error_handler(log_err_handler)
std::shared_ptr< logger > create_async(const std::string &logger_name, sinks_init_list sinks, size_t queue_size, const async_overflow_policy overflow_policy=async_overflow_policy::block_retry, const std::function< void()> &worker_warmup_cb=nullptr, const std::chrono::milliseconds &flush_interval_ms=std::chrono::milliseconds::zero(), const std::function< void()> &worker_teardown_cb=nullptr)
std::shared_ptr< logger > stdout_color_mt(const std::string &logger_name)
std::shared_ptr< logger > get(const std::string &name)
std::shared_ptr< logger > create(const std::string &logger_name, sinks_init_list sinks)
std::shared_ptr< logger > create_async(const std::string &logger_name, const It &sinks_begin, const It &sinks_end, size_t queue_size, const async_overflow_policy overflow_policy=async_overflow_policy::block_retry, const std::function< void()> &worker_warmup_cb=nullptr, const std::chrono::milliseconds &flush_interval_ms=std::chrono::milliseconds::zero(), const std::function< void()> &worker_teardown_cb=nullptr)
void apply_all(std::function< void(std::shared_ptr< logger >)> fun)
std::shared_ptr< logger > create(const std::string &logger_name, const It &sinks_begin, const It &sinks_end)
std::shared_ptr< logger > daily_logger_mt(const std::string &logger_name, const filename_t &filename, int hour=0, int minute=0)
std::shared_ptr< logger > stdout_logger_mt(const std::string &logger_name)
std::shared_ptr< logger > stdout_color_st(const std::string &logger_name)
std::shared_ptr< logger > daily_logger_st(const std::string &logger_name, const filename_t &filename, int hour=0, int minute=0)
std::shared_ptr< logger > stderr_color_st(const std::string &logger_name)
std::shared_ptr< logger > basic_logger_mt(const std::string &logger_name, const filename_t &filename, bool truncate=false)
void set_level(level::level_enum log_level)
void set_async_mode(size_t queue_size, const async_overflow_policy overflow_policy=async_overflow_policy::block_retry, const std::function< void()> &worker_warmup_cb=nullptr, const std::chrono::milliseconds &flush_interval_ms=std::chrono::milliseconds::zero(), const std::function< void()> &worker_teardown_cb=nullptr)
std::shared_ptr< logger > stderr_logger_mt(const std::string &logger_name)
std::shared_ptr< spdlog::logger > create(const std::string &logger_name, Args...)
std::shared_ptr< logger > create(const std::string &logger_name, const sink_ptr &sink)
std::shared_ptr< logger > stderr_logger_st(const std::string &logger_name)
void set_pattern(const std::string &format_string)
std::shared_ptr< logger > stderr_color_mt(const std::string &logger_name)
void drop(const std::string &name)
std::shared_ptr< logger > basic_logger_st(const std::string &logger_name, const filename_t &filename, bool truncate=false)
FVector & DefaultActorLocationField()
int & TargetingTeamField()
USceneComponent * RootComponentField()
APlayerState * PlayerStateField()
UCheatManager * CheatManagerField()
FString * GetPlayerNetworkAddress(FString *result)
FUniqueNetIdRepl & UniqueIdField()
FString & PlayerNameField()
bool TeleportTo(FVector *DestLocation, FRotator *DestRotation, bool bIsATest, bool bNoCheck)
UPrimalInventoryComponent * MyInventoryComponentField()
void DoNeuter_Implementation()
static UClass * GetPrivateStaticClass()
void TameDino(AShooterPlayerController *ForPC, bool bIgnoreMaxTameLimit, int OverrideTamingTeamID)
int & TamingTeamIDField()
FString & TamerStringField()
int & AbsoluteBaseLevelField()
UPrimalPlayerData * GetPlayerData()
APrimalDinoCharacter * GetRidingDino()
unsigned __int64 GetSteamIDForPlayerID(int playerDataID)
void AddPlayerID(int playerDataID, unsigned __int64 netUniqueID)
__int64 & LinkedPlayerIDField()
void SetPlayerPos(float X, float Y, float Z)
AActor * SpawnActor(FString *blueprintPath, float spawnDistance, float spawnYOffset, float ZOffset, bool bDoDeferBeginPlay)
AShooterCharacter * GetPlayerCharacter()
FString * GetPlayerName(FString *result)
void SetTribeTamingDinoSettings(APrimalDinoCharacter *aDinoChar)
static uint32 MemCrc32(const void *Data, int32 Lenght)
FIntVector(FVector InVector)
static float UnwindRadians(float A)
static T InterpCircularOut(const T &A, const T &B, float Alpha)
static T InterpEaseInOut(const T &A, const T &B, float Alpha, float Exp)
static T InterpExpoInOut(const T &A, const T &B, float Alpha)
static FORCEINLINE double RoundToNegativeInfinity(double F)
static FORCEINLINE int32 RandRange(int32 Min, int32 Max)
static T BiLerp(const T &P00, const T &P10, const T &P01, const T &P11, const U &FracX, const U &FracY)
static T LerpStable(const T &A, const T &B, double Alpha)
static FORCEINLINE float RandRange(float InMin, float InMax)
static float UnwindDegrees(float A)
static FORCEINLINE float FastAsin(float Value)
static FORCEINLINE float RoundToNegativeInfinity(float F)
static float FindDeltaAngleRadians(float A1, float A2)
static U 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)
static T InterpCircularInOut(const T &A, const T &B, float Alpha)
static float SmoothStep(float A, float B, float X)
static FORCEINLINE T Clamp(const T X, const T Min, const T Max)
static FORCEINLINE float RoundFromZero(float F)
static T CubicInterpSecondDerivative(const T &P0, const T &T0, const T &P1, const T &T1, const U &A)
static int32 LeastCommonMultiplier(int32 a, int32 b)
static FORCEINLINE T Square(const T A)
static T Lerp(const T &A, const T &B, const U &Alpha)
static FORCEINLINE T Max3(const T A, const T B, const T C)
static T InterpEaseOut(const T &A, const T &B, float Alpha, float Exp)
static FORCEINLINE T DivideAndRoundDown(T Dividend, T Divisor)
static FORCEINLINE float RoundToZero(float F)
static FORCEINLINE int32 RandHelper(int32 A)
static int32 GreatestCommonDivisor(int32 a, int32 b)
static T InterpSinOut(const T &A, const T &B, float Alpha)
static T InterpEaseIn(const T &A, const T &B, float Alpha, float Exp)
static FORCEINLINE float RoundToPositiveInfinity(float F)
static FORCEINLINE void PolarToCartesian(const float Rad, const float Ang, float &OutX, float &OutY)
static FORCEINLINE float FRandRange(float InMin, float InMax)
static float FindDeltaAngleDegrees(float A1, float A2)
static FORCEINLINE bool IsPowerOfTwo(T Value)
static FORCEINLINE auto RadiansToDegrees(T const &RadVal) -> decltype(RadVal *(180.f/PI))
static T InterpCircularIn(const T &A, const T &B, float Alpha)
static T InterpStep(const T &A, const T &B, float Alpha, int32 Steps)
static FORCEINLINE T DivideAndRoundUp(T Dividend, T Divisor)
static T InterpExpoOut(const T &A, const T &B, float Alpha)
static T CubicInterpDerivative(const T &P0, const T &T0, const T &P1, const T &T1, const U &A)
static T CubicInterp(const T &P0, const T &T0, const T &P1, const T &T1, const U &A)
static FORCEINLINE double RoundToPositiveInfinity(double F)
static FORCEINLINE void SinCos(float *ScalarSin, float *ScalarCos, float Value)
static FORCEINLINE T Min3(const T A, const T B, const T C)
static FORCEINLINE auto DegreesToRadians(T const &DegVal) -> decltype(DegVal *(PI/180.f))
static T LerpStable(const T &A, const T &B, float Alpha)
static T InterpExpoIn(const T &A, const T &B, float Alpha)
static FORCEINLINE double RoundToZero(double F)
static T InterpSinIn(const T &A, const T &B, float Alpha)
static FORCEINLINE double RoundFromZero(double F)
static T InterpSinInOut(const T &A, const T &B, float Alpha)
static FORCEINLINE bool RandBool()
unsigned __int64 & PlayerDataIDField()
FORCEINLINE FRotator(float InPitch, float InYaw, float InRoll)
TSharedPtr< FUniqueNetId > UniqueNetId
FORCEINLINE FVector operator+(float Bias) const
FORCEINLINE FVector operator*=(float Scale)
bool operator!=(const FVector &V) const
static float Triple(const FVector &X, const FVector &Y, const FVector &Z)
static bool Orthogonal(const FVector &Normal1, const FVector &Normal2, float OrthogonalCosineThreshold=THRESH_NORMALS_ARE_ORTHOGONAL)
static bool Parallel(const FVector &Normal1, const FVector &Normal2, float ParallelCosineThreshold=THRESH_NORMALS_ARE_PARALLEL)
FORCEINLINE FVector operator-(const FVector &V) const
FORCEINLINE FVector operator-=(const FVector &V)
FVector GetSafeNormal(float Tolerance=SMALL_NUMBER) const
static FVector VectorPlaneProject(const FVector &V, const FVector &PlaneNormal)
FVector operator/=(const FVector &V)
static bool PointsAreSame(const FVector &P, const FVector &Q)
FORCEINLINE FVector(float InF)
FORCEINLINE FVector operator+=(const FVector &V)
FORCEINLINE FVector operator-() const
FORCEINLINE FVector operator^(const FVector &V) const
bool IsUniform(float Tolerance=KINDA_SMALL_NUMBER) const
FORCEINLINE FVector operator-(float Bias) const
FRotator ToOrientationRotator() const
FVector(const FLinearColor &InColor)
FVector MirrorByVector(const FVector &MirrorNormal) const
FVector Reciprocal() const
static FORCEINLINE float DistSquaredXY(const FVector &V1, const FVector &V2)
static bool PointsAreNear(const FVector &Point1, const FVector &Point2, float Dist)
bool InitFromString(const FString &InSourceString)
static FORCEINLINE float DotProduct(const FVector &A, const FVector &B)
FVector ComponentMax(const FVector &Other) const
void ToDirectionAndLength(FVector &OutDir, float &OutLength) const
FORCEINLINE float operator|(const FVector &V) const
FRotator Rotation() const
FORCEINLINE FVector GetUnsafeNormal() const
FVector GetClampedToMaxSize(float MaxSize) const
FORCEINLINE FVector operator*(const FVector &V) const
void FindBestAxisVectors(FVector &Axis1, FVector &Axis2) const
FVector(FIntVector InVector)
static const FVector ZeroVector
float SizeSquared2D() const
FVector GetSafeNormal2D(float Tolerance=SMALL_NUMBER) const
float & Component(int32 Index)
static FORCEINLINE float BoxPushOut(const FVector &Normal, const FVector &Size)
FVector operator/(float Scale) const
static FVector RadiansToDegrees(const FVector &RadVector)
FVector2D UnitCartesianToSpherical() const
static float PointPlaneDist(const FVector &Point, const FVector &PlaneBase, const FVector &PlaneNormal)
FVector BoundToCube(float Radius) const
static FORCEINLINE float DistSquared(const FVector &V1, const FVector &V2)
FORCEINLINE FVector GetSignVector() const
FORCEINLINE FVector operator/(const FVector &V) const
static FORCEINLINE float Dist2D(const FVector &V1, const FVector &V2)
FVector ComponentMin(const FVector &Other) const
float & operator[](int32 Index)
static FORCEINLINE float Dist(const FVector &V1, const FVector &V2)
FVector GridSnap(const float &GridSz) const
static bool Coincident(const FVector &Normal1, const FVector &Normal2, float ParallelCosineThreshold=THRESH_NORMALS_ARE_PARALLEL)
FVector Projection() const
static bool Coplanar(const FVector &Base1, const FVector &Normal1, const FVector &Base2, const FVector &Normal2, float ParallelCosineThreshold=THRESH_NORMALS_ARE_PARALLEL)
FORCEINLINE FVector ProjectOnTo(const FVector &A) const
static FVector PointPlaneProject(const FVector &Point, const FVector &PlaneBase, const FVector &PlaneNormal)
bool IsNormalized() const
FORCEINLINE FVector ProjectOnToNormal(const FVector &Normal) const
static FVector PointPlaneProject(const FVector &Point, const FVector &A, const FVector &B, const FVector &C)
bool Equals(const FVector &V, float Tolerance=KINDA_SMALL_NUMBER) const
FQuat ToOrientationQuat() const
bool operator==(const FVector &V) const
FVector GetClampedToSize2D(float Min, float Max) const
float SizeSquared() const
float operator[](int32 Index) const
FVector GetClampedToSize(float Min, float Max) const
static FORCEINLINE float DistSquared2D(const FVector &V1, const FVector &V2)
FVector operator/=(float V)
static FORCEINLINE FVector CrossProduct(const FVector &A, const FVector &B)
FVector operator*=(const FVector &V)
void Set(float InX, float InY, float InZ)
FORCEINLINE FVector operator+(const FVector &V) const
FORCEINLINE FVector operator*(float Scale) const
static FVector DegreesToRadians(const FVector &DegVector)
FORCEINLINE CONSTEXPR FVector(float InX, float InY, float InZ)
FORCEINLINE float CosineAngle2D(FVector B) const
bool AllComponentsEqual(float Tolerance=KINDA_SMALL_NUMBER) const
FVector GetClampedToMaxSize2D(float MaxSize) const
static FORCEINLINE float DistXY(const FVector &V1, const FVector &V2)
static void CreateOrthonormalBasis(FVector &XAxis, FVector &YAxis, FVector &ZAxis)
FORCEINLINE bool IsUnit(float LengthSquaredTolerance=KINDA_SMALL_NUMBER) const
FVector RotateAngleAxis(const float AngleDeg, const FVector &Axis) const
float HeadingAngle() const
static float EvaluateBezier(const FVector *ControlPoints, int32 NumPoints, TArray< FVector > &OutPoints)
float Component(int32 Index) const
FORCEINLINE FVector(const FVector2D V, float InZ)
bool IsNearlyZero(float Tolerance=KINDA_SMALL_NUMBER) const
FORCEINLINE FVector(EForceInit)
static FORCEINLINE float Distance(const FVector &V1, const FVector &V2)
bool Normalize(float Tolerance=SMALL_NUMBER)
static FORCEINLINE uint64 Strtoui64(const CharType *Start, CharType **End, int32 Base)
static CharType * Stristr(CharType *Str, const CharType *Find)
static FORCEINLINE CharType * Strstr(CharType *String, const CharType *Find)
static FORCEINLINE const CharType * Strstr(const CharType *String, const CharType *Find)
static FORCEINLINE double Atod(const CharType *String)
static FORCEINLINE int32 Stricmp(const CharType *String1, const CharType *String2)
static FORCEINLINE int32 Strnicmp(const CharType *String1, const CharType *String2, SIZE_T Count)
static FORCEINLINE float Atof(const CharType *String)
static FORCEINLINE int32 Strlen(const CharType *String)
static FORCEINLINE int32 Atoi(const CharType *String)
static FORCEINLINE int32 Strncmp(const CharType *String1, const CharType *String2, SIZE_T Count)
static FORCEINLINE int32 Strtoi(const CharType *Start, CharType **End, int32 Base)
static const CharType * Stristr(const CharType *Str, const CharType *Find)
static FORCEINLINE int64 Atoi64(const CharType *String)
static FORCEINLINE int32 Strcmp(const CharType *String1, const CharType *String2)
static CharType ToLower(CharType Char)
static bool IsWhitespace(CharType Char)
static CharType ToUpper(CharType Char)
static void FromString(T &Value, const TCHAR *Buffer)
static FString ToSanitizedString(const T &Value)
static FString ToString(const T &Value)
T * Get(bool bEvenIfPendingKill=false)
FORCEINLINE T * operator->()
UObject * GetDefaultObject(bool bCreateIfNeeded)
static FORCEINLINE bool Compare(TCHAR Lhs, TCHAR Rhs)
static FORCEINLINE bool Compare(TCHAR Lhs, TCHAR Rhs)
FString * GetFullName(FString *result, UObject *StopOuter)
bool IsA(UClass *SomeBase)
UPrimalGameData * PrimalGameDataOverrideField()
UPrimalGameData * PrimalGameDataField()
FPrimalPlayerDataStruct * MyDataField()
FVector * GetWorldLocation(FVector *result)
static TArray< AActor * > * ServerOctreeOverlapActors(TArray< AActor * > *result, UWorld *theWorld, FVector AtLoc, float Radius, EServerOctreeGroup::Type OctreeType, bool bForceActorLocationDistanceCheck)
TArray< TAutoWeakObjectPtr< APlayerController > > & PlayerControllerListField()
APlayerController * GetFirstPlayerController()
AGameState * GameStateField()
AlignSpec(unsigned width, wchar_t fill, Alignment align=ALIGN_DEFAULT)
bool flag(unsigned) const
AlignTypeSpec(unsigned width, wchar_t fill)
BasicCStringRef< Char > sep
ArgJoin(It first, It last, const BasicCStringRef< Char > &sep)
bool flag(unsigned) const
WidthSpec(unsigned width, wchar_t fill)
static Arg make(const T &value)
Value Type[N > 0 ? N :+1]
static Value make(const T &value)
static const uint32_t POWERS_OF_10_32[]
static const char DIGITS[]
static const uint64_t POWERS_OF_10_64[]
NamedArg(BasicStringRef< Char > argname, const T &value)
BasicStringRef< Char > name
NamedArgWithType(BasicStringRef< Char > argname, const T &value)
static bool is_negative(T)
static bool is_negative(T value)
void(* FormatFunc)(void *formatter, const void *arg, void *format_str_ptr)
StringValue< wchar_t > wstring
StringValue< signed char > sstring
ULongLong ulong_long_value
long double long_double_value
StringValue< char > string
StringValue< unsigned char > ustring
const std::string * logger_name
fmt::MemoryWriter formatted
log_clock::time_point time
log_msg(const log_msg &other)=delete
log_msg & operator=(log_msg &&other)=delete
log_msg(log_msg &&other)=delete
int load(std::memory_order) const
null_atomic_int()=default