);
- }
-
- static bool HasMin(ConVar* pConVar)
- {
- float fMin;
- return pConVar->GetMin(fMin);
- }
+ const char* description, int flags, object min_value, object max_value);
- static bool HasMax(ConVar* pConVar)
- {
- float fMax;
- return pConVar->GetMax(fMax);
- }
+ static bool HasMin(ConVar* pConVar);
+ static bool HasMax(ConVar* pConVar);
- static float GetMin(ConVar* pConVar)
- {
- float fMin;
- pConVar->GetMin(fMin);
- return fMin;
- }
+ static float GetMin(ConVar* pConVar);
+ static float GetMax(ConVar* pConVar);
- static bool GetMax(ConVar* pConVar)
- {
- float fMax;
- pConVar->GetMax(fMax);
- return fMax;
- }
+ static void SetValue(ConVar* pConVar, bool bValue);
- static void SetValue(ConVar* pConVar, bool bValue)
- {
- pConVar->SetValue(bValue);
- }
+ static void MakePublic(ConVar* pConVar);
+ static void RemovePublic(ConVar* pConVar);
- static void MakePublic(ConVar* pConVar)
- {
- pConVar->m_nFlags |= FCVAR_NOTIFY;
- g_pCVar->CallGlobalChangeCallbacks(pConVar, pConVar->GetString(), pConVar->GetFloat());
- }
+ static void ChangedCallback(IConVar* var, const char* pOldValue, float flOldValue);
+ static void AddChangedCallback(ConVar* pConVar, PyObject* pCallable);
+ static void RemoveChangedCallback(ConVar* pConVar, PyObject* pCallable);
+ static void ClearCallback();
- static void RemovePublic(ConVar* pConVar)
- {
- pConVar->m_nFlags &= ~FCVAR_NOTIFY;
- g_pCVar->CallGlobalChangeCallbacks(pConVar, pConVar->GetString(), pConVar->GetFloat());
- }
+ static bool installed;
};
diff --git a/src/core/modules/cvars/cvars_wrap.cpp b/src/core/modules/cvars/cvars_wrap.cpp
old mode 100644
new mode 100755
index 997d410f6..f4d66b954
--- a/src/core/modules/cvars/cvars_wrap.cpp
+++ b/src/core/modules/cvars/cvars_wrap.cpp
@@ -299,7 +299,19 @@ void export_convar(scope _cvars)
&ConVarExt::RemovePublic,
"Remove the notify flag and make the console variable no longer public."
)
-
+
+ .def("add_changed_callback",
+ &ConVarExt::AddChangedCallback,
+ "Add a callable object that will be called when the ConVar is changed.",
+ args("callable")
+ )
+
+ .def("remove_changed_callback",
+ &ConVarExt::RemoveChangedCallback,
+ "Remove a callable object that will be called when the ConVar is changed.",
+ args("callable")
+ )
+
// Special methods...
.def("__float__",
&ConVar::GetFloat,
diff --git a/src/core/sp_main.cpp b/src/core/sp_main.cpp
index 6f1be1dcb..5b0fdcf1b 100755
--- a/src/core/sp_main.cpp
+++ b/src/core/sp_main.cpp
@@ -58,6 +58,7 @@
#include "manager.h"
#include "modules/listeners/listeners_manager.h"
+#include "modules/cvars/cvars.h"
#include "utilities/conversions.h"
#include "modules/entities/entities_entity.h"
#include "modules/core/core.h"
@@ -403,6 +404,9 @@ void CSourcePython::Unload( void )
DevMsg(1, MSG_PREFIX "Clearing convar changed listener...\n");
GetOnConVarChangedListenerManager()->clear();
+ DevMsg(1, MSG_PREFIX "Clearing convar changed callbacks...\n");
+ ConVarExt::ClearCallback();
+
DevMsg(1, MSG_PREFIX "Unhooking all functions...\n");
GetHookManager()->UnhookAllFunctions();
pFad - Phonifier reborn
Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.
Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.
Alternative Proxies:
Alternative Proxy
pFad Proxy
pFad v3 Proxy
pFad v4 Proxy