rework how var strings are created

This commit is contained in:
rei-2
2026-02-22 03:20:08 -05:00
parent 56fd4a2f59
commit d2cfddcafc
4 changed files with 192 additions and 196 deletions
+6 -6
View File
@@ -166,7 +166,7 @@ template <> void CConfigs::LoadJson(const boost::property_tree::ptree& t, const
if (uHash == uHash2)
i++;
}
bValid = bValid && i <= 1;
bValid = i <= 1;
}
if (bValid)
@@ -368,7 +368,7 @@ static inline void SaveMain(BaseVar*& pBase, boost::property_tree::ptree& tTree)
boost::property_tree::ptree tMap;
for (auto& [iBind, tValue] : pVar->Map)
F::Configs.SaveJson(tMap, std::to_string(iBind), tValue);
tTree.put_child(pVar->m_sName, tMap);
tTree.put_child(pVar->Name(), tMap);
}
#define Save(t, j) if (IsType(t)) SaveMain<t>(pBase, j);
@@ -378,7 +378,7 @@ static inline void LoadMain(BaseVar*& pBase, boost::property_tree::ptree& tTree)
auto pVar = pBase->As<T>();
pVar->Map = { { DEFAULT_BIND, pVar->Default } };
if (auto tMap = tTree.get_child_optional(pVar->m_sName))
if (auto tMap = tTree.get_child_optional(pVar->Name()))
{
for (auto& [sKey, _] : *tMap)
{
@@ -392,7 +392,7 @@ static inline void LoadMain(BaseVar*& pBase, boost::property_tree::ptree& tTree)
}
}
else if (!(pVar->m_iFlags & NOSAVE))
SDK::Output("Amalgam", std::format("{} not found", pVar->m_sName).c_str(), ALTERNATE_COLOR, OUTPUT_CONSOLE | OUTPUT_MENU | OUTPUT_DEBUG);
SDK::Output("Amalgam", std::format("{} not found", pVar->Name()).c_str(), ALTERNATE_COLOR, OUTPUT_CONSOLE | OUTPUT_MENU | OUTPUT_DEBUG);
}
#define Load(t, j) if (IsType(t)) LoadMain<t>(pBase, j);
@@ -617,14 +617,14 @@ bool CConfigs::LoadConfig(const std::string& sConfigName, bool bNotify)
template <class T>
static inline void SaveMiscMain(BaseVar*& pBase, boost::property_tree::ptree& tTree)
{
F::Configs.SaveJson(tTree, pBase->m_sName, pBase->As<T>()->Map[DEFAULT_BIND]);
F::Configs.SaveJson(tTree, pBase->Name(), pBase->As<T>()->Map[DEFAULT_BIND]);
}
#define SaveMisc(t, j) if (IsType(t)) SaveMiscMain<t>(pBase, j);
template <class T>
static inline void LoadMiscMain(BaseVar*& pBase, boost::property_tree::ptree& tTree)
{
F::Configs.LoadJson(tTree, pBase->m_sName, pBase->As<T>(), DEFAULT_BIND);
F::Configs.LoadJson(tTree, pBase->Name(), pBase->As<T>(), DEFAULT_BIND);
}
#define LoadMisc(t, j) if (IsType(t)) LoadMiscMain<t>(pBase, j);
+43 -43
View File
@@ -2153,7 +2153,7 @@ namespace ImGui
}
inline void FKeybind(ConfigVar<int>& var, int iFlags = FKeybindEnum::None, std::vector<int> vIgnore = { Vars::Menu::PrimaryKey[DEFAULT_BIND], Vars::Menu::SecondaryKey[DEFAULT_BIND] }, ImVec2 vSize = { 0, 30 }, int iSizeOffset = 0, bool* pHovered = nullptr)
{
FKeybind(var.m_vTitle.front(), var[DEFAULT_BIND], iFlags, vIgnore, vSize, iSizeOffset, pHovered);
FKeybind(var.m_vNames.front(), var[DEFAULT_BIND], iFlags, vIgnore, vSize, iSizeOffset, pHovered);
}
// dropdown for materials
@@ -2588,48 +2588,48 @@ namespace ImGui
DebugDummy({ 0, GetStyle().WindowPadding.y });
}
#define WRAPPER(function, type, parameters, arguments)\
inline bool function(ConfigVar<type>& var, parameters, bool* pHovered = nullptr, int iBindOverride = -1, int iLabelOverride = -1)\
{\
const char* sLabel = iLabelOverride != -1 ? var.m_vTitle[iLabelOverride] : var.m_vTitle.front();\
int iVarFlags = var.m_iFlags & ~(VISUAL | NOSAVE | NOBIND | DEBUGVAR);\
iFlags |= iVarFlags;\
auto val = FGet(var, true);\
bool bHovered = false;\
bool bReturn = function(std::format("{}## {}", sLabel, var.m_sName).c_str(), arguments, &bHovered);\
FSet(var, val);\
if (pHovered)\
*pHovered = bHovered;\
if (!(var.m_iFlags & (NOBIND | NOSAVE)) && !Disabled && CurrentBind == DEFAULT_BIND)\
{ /*probably a better way to do this*/\
static auto staticVal = val;\
bool bNewPopup = bHovered && IsMouseReleased(ImGuiMouseButton_Right) && !IsMouseDown(ImGuiMouseButton_Left) && !IsPopupOpen(nullptr, ImGuiPopupFlags_AnyPopupId);\
if (bNewPopup)\
{\
OpenPopup(var.m_sName.c_str());\
staticVal = val;\
}\
SetNextWindowSize({ H::Draw.Scale(300), 0 });\
bool bPopup = FBeginPopup(var.m_sName.c_str());\
if (bPopup)\
{\
std::string sBind = iBindOverride != -1 ? var.m_vTitle[iBindOverride] : var.m_vTitle.back();\
std::transform(sBind.begin(), sBind.end(), sBind.begin(), ::tolower);\
iFlags = iVarFlags; /*get rid of any visual flags*/\
if (FNV1A::Hash32Const(#function) == FNV1A::Hash32Const("FColorPicker"))\
iFlags |= FColorPickerEnum::Full | FColorPickerEnum::RemoveVisuals;\
PushTransparent(false);\
static bool bLastHovered = false;\
DrawBindInfo(var, staticVal, StripDoubleHash(sBind.c_str()), bNewPopup, bLastHovered);\
val = staticVal;\
function(std::format("{}## Bind", var.m_vTitle.front()).c_str(), arguments, &bHovered);\
bLastHovered = bLastHovered || bHovered;\
staticVal = val;\
PopTransparent(2);\
EndPopup();\
}\
}\
return bReturn;\
#define WRAPPER(function, type, parameters, arguments) \
inline bool function(ConfigVar<type>& var, parameters, bool* pHovered = nullptr, int iBindOverride = -1, int iLabelOverride = -1) \
{ \
const char* sLabel = iLabelOverride != -1 ? var.m_vNames[iLabelOverride] : var.m_vNames.front(); \
int iVarFlags = var.m_iFlags & ~(VISUAL | NOSAVE | NOBIND | DEBUGVAR); \
iFlags |= iVarFlags; \
auto val = FGet(var, true); \
bool bHovered = false; \
bool bReturn = function(std::format("{}## {}", sLabel, var.Name()).c_str(), arguments, &bHovered); \
FSet(var, val); \
if (pHovered) \
*pHovered = bHovered; \
if (!(var.m_iFlags & (NOBIND | NOSAVE)) && !Disabled && CurrentBind == DEFAULT_BIND) \
{ /*probably a better way to do this*/ \
static auto staticVal = val; \
bool bNewPopup = bHovered && IsMouseReleased(ImGuiMouseButton_Right) && !IsMouseDown(ImGuiMouseButton_Left) && !IsPopupOpen(nullptr, ImGuiPopupFlags_AnyPopupId); \
if (bNewPopup) \
{ \
OpenPopup(var.Name()); \
staticVal = val; \
} \
SetNextWindowSize({ H::Draw.Scale(300), 0 }); \
bool bPopup = FBeginPopup(var.Name()); \
if (bPopup) \
{ \
std::string sBind = iBindOverride != -1 ? var.m_vNames[iBindOverride] : var.m_vNames.back(); \
std::transform(sBind.begin(), sBind.end(), sBind.begin(), ::tolower); \
iFlags = iVarFlags; /*get rid of any visual flags*/ \
if (FNV1A::Hash32Const(#function) == FNV1A::Hash32Const("FColorPicker")) \
iFlags |= FColorPickerEnum::Full | FColorPickerEnum::RemoveVisuals; \
PushTransparent(false); \
static bool bLastHovered = false; \
DrawBindInfo(var, staticVal, StripDoubleHash(sBind.c_str()), bNewPopup, bLastHovered); \
val = staticVal; \
function(std::format("{}## Bind", var.m_vNames.front()).c_str(), arguments, &bHovered); \
bLastHovered = bLastHovered || bHovered; \
staticVal = val; \
PopTransparent(2); \
EndPopup(); \
} \
} \
return bReturn; \
}
WRAPPER(FToggle, bool, VA_LIST(int iFlags = 0), VA_LIST(&val, iFlags))
+10 -10
View File
@@ -3195,7 +3195,7 @@ void CMenu::MenuSettings(int iTab)
{
int i = 0; for (auto& pBase : G::Vars)
{
if (pBase->m_sName.find("Vars::Hooks::") == std::string::npos)
if (std::string(pBase->Name()).find("Vars::Hooks::") == std::string::npos)
continue;
FToggle(*pBase->As<bool>(), !(i % 2) ? FToggleEnum::Left : FToggleEnum::Right);
@@ -3230,8 +3230,8 @@ void CMenu::MenuSearch(std::string sSearch)
if (!Vars::Debug::Options[DEFAULT_BIND] && pBase->m_iFlags & DEBUGVAR)
continue;
std::vector<const char*> vSearch = { pBase->m_sName.c_str(), pBase->m_sSection };
vSearch.insert(vSearch.end(), pBase->m_vTitle.begin(), pBase->m_vTitle.end());
std::vector<const char*> vSearch = { pBase->Name(), pBase->Section() };
vSearch.insert(vSearch.end(), pBase->m_vNames.begin(), pBase->m_vNames.end());
vSearch.insert(vSearch.end(), pBase->m_vValues.begin(), pBase->m_vValues.end());
for (auto pSearch : vSearch)
{
@@ -3264,7 +3264,7 @@ void CMenu::MenuSearch(std::string sSearch)
else if (auto pVar = pBase->As<int>())
{
if (!pVar->m_vValues.empty()
|| FNV1A::Hash32(pVar->m_sName.c_str()) == FNV1A::Hash32Const("Vars::ESP::ActiveGroups"))
|| FNV1A::Hash32(pVar->Name()) == FNV1A::Hash32Const("Vars::ESP::ActiveGroups"))
iWidgetEnum = iTypeEnum = WidgetEnum::FDropdown;
else if (pVar->m_sExtra)
iWidgetEnum = WidgetEnum::FISlider, iTypeEnum = WidgetEnum::FSlider;
@@ -3288,12 +3288,12 @@ void CMenu::MenuSearch(std::string sSearch)
else
continue;
uint32_t uSection = FNV1A::Hash32(pBase->m_sSection);
uint32_t uSection = FNV1A::Hash32(pBase->Section());
if (uSection != uLastSection)
{
if (uLastSection)
EndSection();
Section(std::format("{}## {}", pBase->m_sSection, pBase->m_sName).c_str());
Section(std::format("{}## {}", pBase->Section(), pBase->Name()).c_str());
i = 0;
}
uLastSection = uSection;
@@ -3341,7 +3341,7 @@ void CMenu::MenuSearch(std::string sSearch)
auto pVar = pBase->As<bool>();
if (FToggle(*pVar, !(i % 2) ? FToggleEnum::Left : FToggleEnum::Right, nullptr, iOverride/*, iOverride*/))
{
if (FNV1A::Hash32(pVar->m_sName.c_str()) == FNV1A::Hash32Const("Vars::Debug::Options"))
if (FNV1A::Hash32(pVar->Name()) == FNV1A::Hash32Const("Vars::Debug::Options"))
uStaticHash = 0;
}
break;
@@ -3356,7 +3356,7 @@ void CMenu::MenuSearch(std::string sSearch)
{
auto pVar = pBase->As<float>();
const char* sFormat = pVar->m_sExtra;
switch (FNV1A::Hash32(pVar->m_sName.c_str()))
switch (FNV1A::Hash32(pVar->Name()))
{
case FNV1A::Hash32Const("Vars::Aimbot::Projectile::SplashRotateX"):
case FNV1A::Hash32Const("Vars::Aimbot::Projectile::SplashRotateY"):
@@ -3413,7 +3413,7 @@ void CMenu::MenuSearch(std::string sSearch)
{
auto pVar = pBase->As<int>();
std::vector<int> vIgnore;
switch (FNV1A::Hash32(pVar->m_sName.c_str()))
switch (FNV1A::Hash32(pVar->Name()))
{
case FNV1A::Hash32Const("Vars::Menu::PrimaryKey"):
vIgnore = { Vars::Menu::SecondaryKey[DEFAULT_BIND], VK_LBUTTON, VK_RBUTTON };
@@ -3424,7 +3424,7 @@ void CMenu::MenuSearch(std::string sSearch)
default:
vIgnore = { Vars::Menu::PrimaryKey[DEFAULT_BIND], Vars::Menu::SecondaryKey[DEFAULT_BIND] };
}
FKeybind(iOverride != -1 ? pVar->m_vTitle[iOverride] : pVar->m_vTitle.front(), pVar->Map[DEFAULT_BIND], !(i % 2) ? FButtonEnum::Left : FButtonEnum::Right | FButtonEnum::SameLine, vIgnore);
FKeybind(iOverride != -1 ? pVar->m_vNames[iOverride] : pVar->m_vNames.front(), pVar->Map[DEFAULT_BIND], !(i % 2) ? FButtonEnum::Left : FButtonEnum::Right | FButtonEnum::SameLine, vIgnore);
break;
}
}
+133 -137
View File
@@ -8,19 +8,14 @@
#define DEFAULT_BIND -1
// forward declartion of ConfigVar
template <class T>
class ConfigVar;
class BaseVar
{
public:
size_t m_iType;
std::string m_sName;
std::vector<const char*> m_vNames;
int m_iFlags = 0;
std::vector<const char*> m_vTitle;
const char* m_sSection;
union {
int i = 0;
float f;
@@ -36,7 +31,23 @@ public:
std::vector<const char*> m_vValues = {};
const char* m_sExtra = nullptr;
// getter for ConfigVar
protected:
std::string m_sName;
const char* m_sSection;
public:
constexpr const char* Name() const
{
return m_sName.c_str();
}
constexpr const char* Section() const
{
return m_sSection;
}
public:
size_t m_iType;
template <class T>
inline ConfigVar<T>* As()
{
@@ -56,38 +67,35 @@ template <class T>
class ConfigVar : public BaseVar
{
public:
T Default;
T Value;
T Default;
std::unordered_map<int, T> Map = {};
ConfigVar(T tValue, std::string sName, const char* sSection, std::vector<const char*> vTitle, int iFlags = 0, std::vector<const char*> vValues = {}, const char* sNone = nullptr)
ConfigVar(T tValue, std::vector<const char*> vNames, const char* sName, const char* sSection, int iFlags = 0, std::vector<const char*> vValues = {}, const char* sNone = nullptr)
{
Default = tValue;
Value = tValue;
Map[DEFAULT_BIND] = tValue;
Value = Default = Map[DEFAULT_BIND] = tValue;
m_iType = typeid(T).hash_code();
m_sName = sName;
m_iFlags = iFlags;
m_vTitle = vTitle;
m_vNames = vNames;
m_sName = std::string(sName).replace(strlen(sName) - 1, 1, "");
m_sSection = sSection;
m_iFlags = iFlags;
m_vValues = vValues;
m_sExtra = sNone;
G::Vars.push_back(this);
}
ConfigVar(T tValue, std::string sName, const char* sSection, std::vector<const char*> vTitle, int iFlags, int iMin, int iMax, int iStep = 1, const char* sFormat = "%i")
ConfigVar(T tValue, std::vector<const char*> vNames, const char* sName, const char* sSection, int iFlags, int iMin, int iMax, int iStep = 1, const char* sFormat = "%i")
{
Default = tValue;
Value = tValue;
Map[DEFAULT_BIND] = tValue;
Value = Default = Map[DEFAULT_BIND] = tValue;
m_iType = typeid(T).hash_code();
m_sName = sName;
m_iFlags = iFlags;
m_vTitle = vTitle;
m_vNames = vNames;
m_sName = std::string(sName).replace(strlen(sName) - 1, 1, "");
m_sSection = sSection;
m_iFlags = iFlags;
m_unMin.i = iMin;
m_unMax.i = iMax;
m_unStep.i = iStep;
@@ -95,18 +103,16 @@ public:
G::Vars.push_back(this);
}
ConfigVar(T tValue, std::string sName, const char* sSection, std::vector<const char*> vTitle, int iFlags, float flMin, float flMax, float flStep = 1.f, const char* sFormat = "%g")
ConfigVar(T tValue, std::vector<const char*> vNames, const char* sName, const char* sSection, int iFlags, float flMin, float flMax, float flStep = 1.f, const char* sFormat = "%g")
{
Default = tValue;
Value = tValue;
Map[DEFAULT_BIND] = tValue;
Value = Default = Map[DEFAULT_BIND] = tValue;
m_iType = typeid(T).hash_code();
m_sName = sName;
m_iFlags = iFlags;
m_vTitle = vTitle;
m_vNames = vNames;
m_sName = std::string(sName).replace(strlen(sName) - 1, 1, "");
m_sSection = sSection;
m_iFlags = iFlags;
m_unMin.f = flMin;
m_unMax.f = flMax;
m_unStep.f = flStep;
@@ -125,30 +131,22 @@ public:
}
};
#define NAMESPACE_BEGIN(name, ...)\
namespace name {\
inline const char* GetNamespace() { return "Vars::"#name"::"; }\
inline const char* GetSubname() { return ""; }\
inline const char* GetSection() { return !std::string(#__VA_ARGS__).empty() ? ""#__VA_ARGS__ : #name; }
#define SUBNAMESPACE_BEGIN(name, ...)\
namespace name {\
inline const char* GetSubname() { return #name"::"; }\
inline const char* GetSection() { return !std::string(#__VA_ARGS__).empty() ? ""#__VA_ARGS__ : #name; }
#define NAMESPACE_END(name)\
}
#define SUBNAMESPACE_END(name)\
#define NAMESPACE_BEGIN(name, ...) \
namespace name { \
constexpr inline const char* Section() { return !std::string(#__VA_ARGS__).empty() ? ""#__VA_ARGS__ : #name; }
#define NAMESPACE_END(name) \
}
#define CVar(name, title, value, ...)\
inline ConfigVar<decltype(value)> name = { value, std::format("{}{}{}", GetNamespace(), GetSubname(), #name), GetSection(), { title }, __VA_ARGS__ }
#define CVarValues(name, title, value, flags, none, ...)\
inline ConfigVar<decltype(value)> name = { value, std::format("{}{}{}", GetNamespace(), GetSubname(), #name), GetSection(), { title }, flags, { __VA_ARGS__ }, none }
#define Enum(name, ...)\
#define CVar(name, title, value, ...) \
constexpr inline const char* name##_() { return __FUNCTION__; } \
inline ConfigVar<decltype(value)> name = { value, { title }, name##_(), Section(), __VA_ARGS__ }
#define CVarValues(name, title, value, flags, none, ...) \
constexpr inline const char* name##_() { return __FUNCTION__; } \
inline ConfigVar<decltype(value)> name = { value, { title }, name##_(), Section(), flags, { __VA_ARGS__ }, none }
#define Enum(name, ...) \
namespace name##Enum { enum name##Enum { __VA_ARGS__ }; }
#define CVarEnum(name, title, value, flags, none, values, ...)\
CVarValues(name, title, value, flags, none, values);\
#define CVarEnum(name, title, value, flags, none, values, ...) \
CVarValues(name, title, value, flags, none, values); \
Enum(name, __VA_ARGS__);
#define NONE 0
@@ -169,8 +167,7 @@ public:
#define DROPDOWN_CUSTOM (1 << 2)
#define DROPDOWN_AUTOUPDATE (1 << 3)
namespace Vars
{
NAMESPACE_BEGIN(Vars)
NAMESPACE_BEGIN(Menu)
CVar(CheatTitle, "Cheat title", std::string("Amalgam"), VISUAL | DROPDOWN_AUTOUPDATE);
CVar(CheatTag, "Cheat tag", std::string("[Amalgam]"), VISUAL);
@@ -196,13 +193,13 @@ namespace Vars
CVar(Scale, "Scale", 1.f, NOBIND | SLIDER_MIN | SLIDER_PRECISION | SLIDER_NOAUTOUPDATE, 0.75f, 2.f, 0.25f);
CVar(CheapText, "Cheap text", false);
SUBNAMESPACE_BEGIN(Theme)
NAMESPACE_BEGIN(Theme)
CVar(Accent, "Accent color", Color_t(175, 150, 255, 255), VISUAL);
CVar(Background, "Background color", Color_t(0, 0, 0, 250), VISUAL);
CVar(Active, "Active color", Color_t(255, 255, 255, 255), VISUAL);
CVar(Inactive, "Inactive color", Color_t(150, 150, 150, 255), VISUAL);
SUBNAMESPACE_END(Theme);
NAMESPACE_END(Menu);
NAMESPACE_END(Theme)
NAMESPACE_END(Menu)
NAMESPACE_BEGIN(Colors)
CVar(FOVCircle, "FOV circle color", Color_t(255, 255, 255, 100), VISUAL);
@@ -253,10 +250,10 @@ namespace Vars
CVar(BoundHitboxFaceIgnoreZ, "Bound hitbox face ignore Z color", Color_t(255, 255, 255, 0), VISUAL);
CVar(SpellFootstep, "Spell footstep color", Color_t(255, 255, 255, 255), VISUAL);
NAMESPACE_END(Colors);
NAMESPACE_END(Colors)
NAMESPACE_BEGIN(Aimbot)
SUBNAMESPACE_BEGIN(General, Aimbot)
NAMESPACE_BEGIN(General, Aimbot)
CVarEnum(AimType, "Aim type", 0, NONE, nullptr,
VA_LIST("Off", "Plain", "Smooth", "Silent", "Locking", "Assistive"),
Off, Plain, Smooth, Silent, Locking, Assistive);
@@ -286,9 +283,9 @@ namespace Vars
CVar(NoSpreadAverage, "No spread average", 5, NOSAVE | DEBUGVAR | SLIDER_MIN, 1, 25);
CVar(NoSpreadInterval, "No spread interval", 0.1f, NOSAVE | DEBUGVAR | SLIDER_MIN, 0.05f, 5.f, 0.1f, "%gs");
CVar(NoSpreadBackupInterval, "No spread backup interval", 2.f, NOSAVE | DEBUGVAR | SLIDER_MIN, 2.f, 10.f, 0.1f, "%gs");
SUBNAMESPACE_END(Global);
NAMESPACE_END(Global)
SUBNAMESPACE_BEGIN(Hitscan)
NAMESPACE_BEGIN(Hitscan)
CVarEnum(Hitboxes, VA_LIST("Hitboxes", "Hitscan hitboxes"), 0b000111, DROPDOWN_MULTI, nullptr,
VA_LIST("Head", "Body", "Pelvis", "Arms", "Legs", "##Divider", "Bodyaim if lethal", "Headshot only"),
Head = 1 << 0, Body = 1 << 1, Pelvis = 1 << 2, Arms = 1 << 3, Legs = 1 << 4, BodyaimIfLethal = 1 << 5, HeadshotOnly = 1 << 6);
@@ -306,9 +303,9 @@ namespace Vars
CVar(PeekAmount, "Peek amount", 1, NOSAVE | DEBUGVAR, 0, 5);
CVar(BoneSizeSubtract, "Bone size subtract", 1.f, NOSAVE | DEBUGVAR | SLIDER_MIN, 0.f, 4.f, 0.25f);
CVar(BoneSizeMinimumScale, "Bone size minimum scale", 1.f, NOSAVE | DEBUGVAR | SLIDER_CLAMP, 0.f, 1.f, 0.1f);
SUBNAMESPACE_END(HITSCAN);
NAMESPACE_END(HITSCAN)
SUBNAMESPACE_BEGIN(Projectile)
NAMESPACE_BEGIN(Projectile)
CVarEnum(StrafePrediction, VA_LIST("Predict", "Strafe prediction"), 0b11, DROPDOWN_MULTI, "Off",
VA_LIST("Air strafing", "Ground strafing"),
Air = 1 << 0, Ground = 1 << 1);
@@ -387,9 +384,9 @@ namespace Vars
CVarEnum(MovesimFrictionFlags, "Movesim friction flags", 0b01, NOSAVE | DEBUGVAR | DROPDOWN_MULTI, nullptr,
VA_LIST("Run reduce", "Calculate increase"),
RunReduce = 1 << 0, CalculateIncrease = 1 << 1);
SUBNAMESPACE_END(Projectile);
NAMESPACE_END(Projectile)
SUBNAMESPACE_BEGIN(Melee)
NAMESPACE_BEGIN(Melee)
CVar(AutoBackstab, "Auto backstab", true);
CVar(IgnoreRazorback, "Ignore razorback", true);
CVar(SwingPrediction, "Swing prediction", false);
@@ -399,9 +396,9 @@ namespace Vars
CVar(SwingPredictLag, "Swing predict lag", true, NOSAVE | DEBUGVAR);
CVar(BackstabAccountPing, "Backstab account ping", true, NOSAVE | DEBUGVAR);
CVar(BackstabDoubleTest, "Backstab double test", true, NOSAVE | DEBUGVAR);
SUBNAMESPACE_END(Melee);
NAMESPACE_END(Melee)
SUBNAMESPACE_BEGIN(Healing)
NAMESPACE_BEGIN(Healing)
CVarEnum(HealPriority, "Heal Priority", 0, NONE, nullptr,
VA_LIST("None", "Prioritize team", "Prioritize friends", "Friends only"),
None, PrioritizeTeam, PrioritizeFriends, FriendsOnly);
@@ -416,14 +413,14 @@ namespace Vars
CVar(AutoVaccinatorBlastScale, "Auto vaccinator blast scale", 100.f, NOSAVE | DEBUGVAR | SLIDER_MIN | SLIDER_PRECISION, 0.f, 200.f, 10.f, "%g%%");
CVar(AutoVaccinatorFireScale, "Auto vaccinator fire scale", 100.f, NOSAVE | DEBUGVAR | SLIDER_MIN | SLIDER_PRECISION, 0.f, 200.f, 10.f, "%g%%");
CVar(AutoVaccinatorFlamethrowerDamageOnly, "Auto vaccinator flamethrower damage only", false, NOSAVE | DEBUGVAR);
SUBNAMESPACE_END(Healing);
NAMESPACE_END(Aimbot);
NAMESPACE_END(Healing)
NAMESPACE_END(Aimbot)
NAMESPACE_BEGIN(CritHack, Crit Hack)
CVar(ForceCrits, "Force crits", false);
CVar(AvoidRandomCrits, "Avoid random crits", false);
CVar(AlwaysMeleeCrit, "Always melee crit", false);
NAMESPACE_END(CritHack);
NAMESPACE_END(CritHack)
NAMESPACE_BEGIN(Backtrack)
CVar(Latency, "Fake latency", 0, SLIDER_CLAMP, 0, 1000, 5);
@@ -432,7 +429,7 @@ namespace Vars
CVar(PreferOnShot, "Prefer on shot", false);
CVar(Offset, "Offset", 0, NOSAVE | DEBUGVAR, -1, 1);
NAMESPACE_END(Backtrack);
NAMESPACE_END(Backtrack)
NAMESPACE_BEGIN(Doubletap)
CVar(Doubletap, "Doubletap", false);
@@ -458,16 +455,16 @@ namespace Vars
CVar(RetainBlastJump, "Retain blastjump", false);
CVar(RetainSoldierOnly, "Retain blastjump soldier only", true, NOSAVE | DEBUGVAR);
NAMESPACE_END(FakeLag);
NAMESPACE_END(FakeLag)
NAMESPACE_BEGIN(AutoPeek, Auto Peek)
CVar(Enabled, VA_LIST("Enabled", "Auto peek"), false);
NAMESPACE_END(AutoPeek);
NAMESPACE_END(AutoPeek)
NAMESPACE_BEGIN(Speedhack)
CVar(Enabled, VA_LIST("Enabled", "Speedhack enabled"), false);
CVar(Amount, VA_LIST("Amount", "SpeedHack amount"), 1, NONE, 1, 50);
NAMESPACE_END(Speedhack);
NAMESPACE_END(Speedhack)
NAMESPACE_BEGIN(AntiAim, Antiaim)
CVar(Enabled, VA_LIST("Enabled", "Antiaim enabled"), false);
@@ -495,7 +492,7 @@ namespace Vars
CVar(MinWalk, "Minwalk", true);
CVar(AntiOverlap, "Anti-overlap", false);
CVar(InvalidShootPitch, "Hide pitch on shot", false);
NAMESPACE_END(AntiAim);
NAMESPACE_END(AntiAim)
NAMESPACE_BEGIN(Resolver)
CVar(Enabled, VA_LIST("Enabled", "Resolver enabled"), false);
@@ -508,7 +505,7 @@ namespace Vars
CVar(CyclePitch, "Cycle pitch", 0.f, SLIDER_CLAMP, -180.f, 180.f, 90.f);
CVar(CycleView, "Cycle view", false);
CVar(CycleMinwalk, "Cycle minwalk", false);
NAMESPACE_END(Resolver);
NAMESPACE_END(Resolver)
NAMESPACE_BEGIN(CheaterDetection, Cheater Detection)
CVarEnum(Methods, "Detection methods", 0b0000, DROPDOWN_MULTI, nullptr,
@@ -518,14 +515,14 @@ namespace Vars
CVar(MinimumChoking, "Minimum choking", 20, SLIDER_MIN, 4, 22);
CVar(MinimumFlick, "Minimum flick angle", 20.f, SLIDER_PRECISION, 10.f, 30.f); // min flick size to suspect
CVar(MaximumNoise, "Maximum flick noise", 1.f, SLIDER_PRECISION, 1.f, 10.f); // max difference between angles before and after flick
NAMESPACE_END(CheaterDetection);
NAMESPACE_END(CheaterDetection)
NAMESPACE_BEGIN(ESP)
CVarValues(ActiveGroups, "Active groups", int(0b11111111111111111111111111111111), VISUAL | DROPDOWN_MULTI | DROPDOWN_NOSANITIZATION, nullptr);
NAMESPACE_END(ESP);
NAMESPACE_END(ESP)
NAMESPACE_BEGIN(Visuals)
SUBNAMESPACE_BEGIN(UI)
NAMESPACE_BEGIN(UI)
CVarEnum(StreamerMode, "Streamer mode", 0, VISUAL, nullptr,
VA_LIST("Off", "Local", "Friends", "Party", "All"),
Off, Local, Friends, Party, All);
@@ -539,9 +536,9 @@ namespace Vars
CVar(ScoreboardUtility, "Scoreboard utility", false);
CVar(ScoreboardColors, "Scoreboard colors", false, VISUAL);
CVar(CleanScreenshots, "Clean screenshots", true);
SUBNAMESPACE_END(UI);
NAMESPACE_END(UI)
SUBNAMESPACE_BEGIN(Thirdperson)
NAMESPACE_BEGIN(Thirdperson)
CVar(Enabled, "Thirdperson", false, VISUAL);
CVar(Crosshair, VA_LIST("Crosshair", "Thirdperson crosshair"), false, VISUAL);
CVar(Distance, "Thirdperson distance", 150.f, VISUAL | SLIDER_PRECISION, 0.f, 400.f, 10.f);
@@ -550,9 +547,9 @@ namespace Vars
CVar(Scale, "Thirdperson scales", true, NOSAVE | DEBUGVAR);
CVar(Collide, "Thirdperson collides", true, NOSAVE | DEBUGVAR);
SUBNAMESPACE_END(ThirdPerson);
NAMESPACE_END(ThirdPerson)
SUBNAMESPACE_BEGIN(Removals)
NAMESPACE_BEGIN(Removals)
CVar(Interpolation, VA_LIST("Interpolation", "Remove interpolation"), false);
CVar(Lerp, VA_LIST("Lerp", "Remove lerp"), true);
CVar(Disguises, VA_LIST("Disguises", "Remove disguises"), false, VISUAL);
@@ -566,9 +563,9 @@ namespace Vars
CVar(Ragdolls, VA_LIST("Ragdolls", "Remove ragdoll"), false, VISUAL);
CVar(Gibs, VA_LIST("Gibs", "Remove gibs"), false, VISUAL);
CVar(MOTD, VA_LIST("MOTD", "Remove MOTD"), false, VISUAL);
SUBNAMESPACE_END(Removals);
NAMESPACE_END(Removals)
SUBNAMESPACE_BEGIN(Effects)
NAMESPACE_BEGIN(Effects)
CVarValues(BulletTracer, "Bullet tracer", std::string("Default"), VISUAL | DROPDOWN_CUSTOM, nullptr,
"Default", "None", "Big nasty", "Distortion trail", "Machina", "Sniper rail", "Short circuit", "C.A.P.P.E.R", "Merasmus ZAP", "Merasmus ZAP 2", "Black ink", "Line", "Line ignore Z", "Beam");
CVarValues(CritTracer, "Crit tracer", std::string("Default"), VISUAL | DROPDOWN_CUSTOM, nullptr,
@@ -587,9 +584,9 @@ namespace Vars
Burning = 1 << 0, Electrocuted = 1 << 1, Ash = 1 << 2, Dissolve = 1 << 3, Gold = 1 << 4, Ice = 1 << 5);
CVar(DrawIconsThroughWalls, "Draw icons through walls", false, VISUAL);
CVar(DrawDamageNumbersThroughWalls, "Draw damage numbers through walls", false, VISUAL);
SUBNAMESPACE_END(Tracers);
NAMESPACE_END(Tracers)
SUBNAMESPACE_BEGIN(Viewmodel)
NAMESPACE_BEGIN(Viewmodel)
CVar(CrosshairAim, "Crosshair aim position", false, VISUAL);
CVar(ViewmodelAim, "Viewmodel aim position", false, VISUAL);
CVar(OffsetX, VA_LIST("Offset X", "Viewmodel offset X"), 0.f, VISUAL | SLIDER_PRECISION, -45.f, 45.f, 5.f);
@@ -600,9 +597,9 @@ namespace Vars
CVar(Roll, VA_LIST("Roll", "Viewmodel roll"), 0.f, VISUAL | SLIDER_CLAMP | SLIDER_PRECISION, -180.f, 180.f, 5.f);
CVar(SwayScale, VA_LIST("Sway scale", "Viewmodel sway scale"), 0.f, VISUAL | SLIDER_MIN | SLIDER_PRECISION, 0.f, 5.f, 0.5f);
CVar(SwayInterp, VA_LIST("Sway interp", "Viewmodel sway interp"), 0.f, VISUAL | SLIDER_MIN | SLIDER_PRECISION, 0.f, 1.f, 0.1f);
SUBNAMESPACE_END(Viewmodel);
NAMESPACE_END(Viewmodel)
SUBNAMESPACE_BEGIN(World)
NAMESPACE_BEGIN(World)
CVarEnum(Modulations, "Modulations", 0b00000, VISUAL | DROPDOWN_MULTI, nullptr,
VA_LIST("World", "Sky", "Prop", "Particle", "Fog"),
World = 1 << 0, Sky = 1 << 1, Prop = 1 << 2, Particle = 1 << 3, Fog = 1 << 4);
@@ -612,9 +609,9 @@ namespace Vars
"Default", "Dev", "Camo", "Black", "White", "Gray", "Flat");
CVar(NearPropFade, "Near prop fade", false, VISUAL);
CVar(NoPropFade, "No prop fade", false, VISUAL);
SUBNAMESPACE_END(World);
NAMESPACE_END(World)
SUBNAMESPACE_BEGIN(Beams) // as of now, these will stay out of the menu
NAMESPACE_BEGIN(Beams) // as of now, these will stay out of the menu
CVar(Model, "Model", std::string("sprites/physbeam.vmt"), VISUAL);
CVar(Life, "Life", 2.f, VISUAL | SLIDER_MIN | SLIDER_PRECISION, 0.f, 10.f);
CVar(Width, "Width", 2.f, VISUAL | SLIDER_MIN | SLIDER_PRECISION, 0.f, 10.f);
@@ -628,14 +625,14 @@ namespace Vars
CVarEnum(Flags, "Flags", 0b10000000100000000, VISUAL | DROPDOWN_MULTI, nullptr,
VA_LIST("Start entity", "End entity", "Fade in", "Fade out", "Sine noise", "Solid", "Shade in", "Shade out", "Only noise once", "No tile", "Use hitboxes", "Start visible", "End visible", "Is active", "Forever", "Halobeam", "Reverse"),
StartEntity = 1 << 0, EndEntity = 1 << 1, FadeIn = 1 << 2, FadeOut = 1 << 3, SineNoise = 1 << 4, Solid = 1 << 5, ShadeIn = 1 << 6, ShadeOut = 1 << 7, OnlyNoiseOnce = 1 << 8, NoTile = 1 << 9, UseHitboxes = 1 << 10, StartVisible = 1 << 11, EndVisible = 1 << 12, IsActive = 1 << 13, Forever = 1 << 14, Halobeam = 1 << 15, Reverse = 1 << 16);
SUBNAMESPACE_END(Beams);
NAMESPACE_END(Beams)
SUBNAMESPACE_BEGIN(Line)
NAMESPACE_BEGIN(Line)
CVar(Enabled, "Line tracers", false, VISUAL);
CVar(DrawDuration, VA_LIST("Draw duration", "Line draw duration"), 5.f, VISUAL | SLIDER_MIN | SLIDER_PRECISION, 0.f, 10.f);
SUBNAMESPACE_END(Line);
NAMESPACE_END(Line)
SUBNAMESPACE_BEGIN(Hitbox)
NAMESPACE_BEGIN(Hitbox)
CVarEnum(BonesEnabled, VA_LIST("Bones enabled", "Hitbox bones enabled"), 0b00, VISUAL | DROPDOWN_MULTI, "Off",
VA_LIST("On shot", "On hit"),
OnShot = 1 << 0, OnHit = 1 << 1);
@@ -643,9 +640,9 @@ namespace Vars
VA_LIST("On shot", "On hit", "Aim point"),
OnShot = 1 << 0, OnHit = 1 << 1, AimPoint = 1 << 2);
CVar(DrawDuration, VA_LIST("Draw duration", "Hitbox draw duration"), 5.f, VISUAL | SLIDER_MIN | SLIDER_PRECISION, 0.f, 10.f);
SUBNAMESPACE_END(Hitbox);
NAMESPACE_END(Hitbox)
SUBNAMESPACE_BEGIN(Simulation)
NAMESPACE_BEGIN(Simulation)
Enum(Style, Off, Line, Separators, Spaced, Arrows, Boxes);
CVarValues(PlayerPath, "Player path", 0, VISUAL, nullptr,
"Off", "Line", "Separators", "Spaced", "Arrows", "Boxes");
@@ -670,9 +667,9 @@ namespace Vars
"Off", "Line", "Separators", "Spaced", "Arrows", "Boxes");
CVar(SeparatorSpacing, "Separator spacing", 4, NOSAVE | DEBUGVAR, 1, 16);
CVar(SeparatorLength, "Separator length", 12.f, NOSAVE | DEBUGVAR, 2.f, 16.f);
SUBNAMESPACE_END(Simulation);
NAMESPACE_END(Simulation)
SUBNAMESPACE_BEGIN(Trajectory)
NAMESPACE_BEGIN(Trajectory)
CVar(Override, "Simulation override", false, NOSAVE | DEBUGVAR);
CVar(OffsetX, "Offset X", 16.f, NOSAVE | DEBUGVAR | SLIDER_PRECISION, -25.f, 25.f, 0.5f);
CVar(OffsetY, "Offset Y", 8.f, NOSAVE | DEBUGVAR | SLIDER_PRECISION, -25.f, 25.f, 0.5f);
@@ -695,11 +692,11 @@ namespace Vars
CVar(AngularDragZ, "Angular drag Z", 0.001514f, NOSAVE | DEBUGVAR | SLIDER_PRECISION, 0.f, 0.1f, 0.01f, "%.15g");
CVar(MaxVelocity, "Max velocity", 2000.f, NOSAVE | DEBUGVAR | SLIDER_MIN | SLIDER_PRECISION, 0.f, 4000.f, 50.f);
CVar(MaxAngularVelocity, "Max angular velocity", 3600.f, NOSAVE | DEBUGVAR | SLIDER_MIN | SLIDER_PRECISION, 0.f, 7200.f, 50.f);
SUBNAMESPACE_END(ProjectileTrajectory);
NAMESPACE_END(Visuals);
NAMESPACE_END(ProjectileTrajectory)
NAMESPACE_END(Visuals)
NAMESPACE_BEGIN(Misc)
SUBNAMESPACE_BEGIN(Movement)
NAMESPACE_BEGIN(Movement)
CVarEnum(AutoStrafe, "Auto strafe", 0, NONE, nullptr,
VA_LIST("Off", "Legit", "Directional"),
Off, Legit, Directional);
@@ -724,9 +721,9 @@ namespace Vars
CVar(AutoRocketJumpSkipAir, "Skip air", 1, NOSAVE | DEBUGVAR, 0, 3);
CVar(AutoRocketJumpTimingOffset, "Timing offset", 0, NOSAVE | DEBUGVAR, 0, 3);
CVar(AutoRocketJumpApplyAbove, "Apply offset above", 0, NOSAVE | DEBUGVAR, 0, 10);
SUBNAMESPACE_END(Movement);
NAMESPACE_END(Movement)
SUBNAMESPACE_BEGIN(Automation)
NAMESPACE_BEGIN(Automation)
CVarEnum(AntiBackstab, "Anti-backstab", 0, NONE, nullptr,
VA_LIST("Off", "Yaw", "Pitch", "Fake"),
Off, Yaw, Pitch, Fake);
@@ -737,9 +734,9 @@ namespace Vars
CVar(AutoF2Ignored, "Auto F2 ignored", false);
CVar(AutoF1Priority, "Auto F1 priority", false);
CVar(AcceptItemDrops, "Auto accept item drops", false);
SUBNAMESPACE_END(Automation);
NAMESPACE_END(Automation)
SUBNAMESPACE_BEGIN(Exploits)
NAMESPACE_BEGIN(Exploits)
CVar(PureBypass, "Pure bypass", false);
CVar(CheatsBypass, "Cheats bypass", false);
CVar(EquipRegionUnlock, "Equip region unlock", false);
@@ -747,18 +744,18 @@ namespace Vars
CVar(NoisemakerSpam, "Noisemaker spam", false);
CVar(PingReducer, "Ping reducer", false);
CVar(PingTarget, "cl_cmdrate", 1, SLIDER_CLAMP, 1, 66);
SUBNAMESPACE_END(Exploits);
NAMESPACE_END(Exploits)
SUBNAMESPACE_BEGIN(Game)
NAMESPACE_BEGIN(Game)
CVar(AntiCheatCompatibility, "Anti-cheat compatibility", false);
CVar(F2PChatBypass, "F2P chat bypass", false);
CVar(NetworkFix, "Network fix", false);
CVar(SetupBonesOptimization, "Bones optimization", false);
CVar(AntiCheatCritHack, "Anti-cheat crit hack", false, NOSAVE | DEBUGVAR);
SUBNAMESPACE_END(Game);
NAMESPACE_END(Game)
SUBNAMESPACE_BEGIN(Queueing)
NAMESPACE_BEGIN(Queueing)
CVarEnum(ForceRegions, "Force regions", 0b0, DROPDOWN_MULTI, nullptr, // i'm not sure all of these are actually used for tf2 servers
VA_LIST("Atlanta", "Chicago", "Dallas", "Los Angeles", "Seattle", "Virginia", "##Divider", "Amsterdam", "Falkenstein", "Frankfurt", "Helsinki", "London", "Madrid", "Paris", "Stockholm", "Vienna", "Warsaw", "##Divider", "Buenos Aires", "Lima", "Santiago", "Sao Paulo", "##Divider", "Chennai", "Dubai", "Hong Kong", "Mumbai", "Seoul", "Singapore", "Tokyo", "##Divider", "Sydney", "##Divider", "Johannesburg"),
// North America
@@ -799,23 +796,23 @@ namespace Vars
);
CVar(FreezeQueue, "Freeze queue", false);
CVar(AutoCasualQueue, "Auto casual queue", false);
SUBNAMESPACE_END(Queueing);
NAMESPACE_END(Queueing)
SUBNAMESPACE_BEGIN(MannVsMachine, Mann vs. Machine)
NAMESPACE_BEGIN(MannVsMachine, Mann vs. Machine)
CVar(InstantRespawn, "Instant respawn", false);
CVar(InstantRevive, "Instant revive", false);
CVar(AllowInspect, "Allow inspect", false);
SUBNAMESPACE_END(Sound);
NAMESPACE_END(Sound)
SUBNAMESPACE_BEGIN(Sound)
NAMESPACE_BEGIN(Sound)
CVarEnum(Block, VA_LIST("Block", "Sound block"), 0b0000, DROPDOWN_MULTI, nullptr,
VA_LIST("Footsteps", "Noisemaker", "Frying pan", "Water"),
Footsteps = 1 << 0, Noisemaker = 1 << 1, FryingPan = 1 << 2, Water = 1 << 3);
CVar(HitsoundAlways, "Hitsound always", false);
CVar(RemoveDSP, "Remove DSP", false);
CVar(GiantWeaponSounds, "Giant weapon sounds", false);
SUBNAMESPACE_END(Sound);
NAMESPACE_END(Misc);
NAMESPACE_END(Sound)
NAMESPACE_END(Misc)
NAMESPACE_BEGIN(Logging)
CVarEnum(Logs, "Logs", 0b0000011, DROPDOWN_MULTI, "Off",
@@ -827,46 +824,46 @@ namespace Vars
TopLeft, TopRight, BottomLeft, BottomRight);
CVar(Lifetime, "Notification time", 5.f, VISUAL, 0.5f, 5.f, 0.5f);
SUBNAMESPACE_BEGIN(VoteStart, Logging)
NAMESPACE_BEGIN(VoteStart, Logging)
CVarValues(LogTo, VA_LIST("Log to", "Vote start log to"), 0b000001, DROPDOWN_MULTI, nullptr,
"Toasts", "Chat", "Party", "Console", "Menu", "Debug");
SUBNAMESPACE_END(VoteStart);
NAMESPACE_END(VoteStart)
SUBNAMESPACE_BEGIN(VoteCast, Logging)
NAMESPACE_BEGIN(VoteCast, Logging)
CVarValues(LogTo, VA_LIST("Log to", "Vote cast log to"), 0b000001, DROPDOWN_MULTI, nullptr,
"Toasts", "Chat", "Party", "Console", "Menu", "Debug");
SUBNAMESPACE_END(VoteCast);
NAMESPACE_END(VoteCast)
SUBNAMESPACE_BEGIN(ClassChange, Logging)
NAMESPACE_BEGIN(ClassChange, Logging)
CVarValues(LogTo, VA_LIST("Log to", "Class change log to"), 0b000001, DROPDOWN_MULTI, nullptr,
"Toasts", "Chat", "Party", "Console", "Menu", "Debug");
SUBNAMESPACE_END(ClassChange);
NAMESPACE_END(ClassChange)
SUBNAMESPACE_BEGIN(Damage, Logging)
NAMESPACE_BEGIN(Damage, Logging)
CVarValues(LogTo, VA_LIST("Log to", "Damage log to"), 0b000001, DROPDOWN_MULTI, nullptr,
"Toasts", "Chat", "Party", "Console", "Menu", "Debug");
SUBNAMESPACE_END(Damage);
NAMESPACE_END(Damage)
SUBNAMESPACE_BEGIN(CheatDetection, Logging)
NAMESPACE_BEGIN(CheatDetection, Logging)
CVarValues(LogTo, VA_LIST("Log to", "Cheat detection log to"), 0b000001, DROPDOWN_MULTI, nullptr,
"Toasts", "Chat", "Party", "Console", "Menu", "Debug");
SUBNAMESPACE_END(CheatDetection);
NAMESPACE_END(CheatDetection)
SUBNAMESPACE_BEGIN(Tags, Logging)
NAMESPACE_BEGIN(Tags, Logging)
CVarValues(LogTo, VA_LIST("Log to", "Tags log to"), 0b000001, DROPDOWN_MULTI, nullptr,
"Toasts", "Chat", "Party", "Console", "Menu", "Debug");
SUBNAMESPACE_END(Tags);
NAMESPACE_END(Tags)
SUBNAMESPACE_BEGIN(Aliases, Logging)
NAMESPACE_BEGIN(Aliases, Logging)
CVarValues(LogTo, VA_LIST("Log to", "Aliases log to"), 0b000001, DROPDOWN_MULTI, nullptr,
"Toasts", "Chat", "Party", "Console", "Menu", "Debug");
SUBNAMESPACE_END(Aliases);
NAMESPACE_END(Aliases)
SUBNAMESPACE_BEGIN(Resolver, Logging)
NAMESPACE_BEGIN(Resolver, Logging)
CVarValues(LogTo, VA_LIST("Log to", "Resolver log to"), 0b000001, DROPDOWN_MULTI, nullptr,
"Toasts", "Chat", "Party", "Console", "Menu", "Debug");
SUBNAMESPACE_END(Resolver);
NAMESPACE_END(Logging);
NAMESPACE_END(Resolver)
NAMESPACE_END(Logging)
NAMESPACE_BEGIN(Debug)
CVar(Info, "Debug info", false, NOSAVE);
@@ -879,6 +876,5 @@ namespace Vars
CVar(VisualizeTraces, "Visualize traces", false, NOSAVE);
CVar(VisualizeTraceHits, "Visualize trace hits", false, NOSAVE);
#endif
NAMESPACE_END(Debug);
}
NAMESPACE_END(Debug)
NAMESPACE_END(Vars)