//----------------------------------------------------------------------------- // Purpose: // Input : *tempVal - //----------------------------------------------------------------------------- void ConVar::ChangeStringValue( const char *tempVal, float flOldValue ) { Assert( !( m_nFlags & FCVAR_NEVER_AS_STRING ) ); char* pszOldValue = (char*)stackalloc( m_StringLength ); memcpy( pszOldValue, m_pszString, m_StringLength ); int len = Q_strlen(tempVal) + 1; if ( len > m_StringLength) { if (m_pszString) { delete[] m_pszString; } m_pszString = new char[len]; m_StringLength = len; } memcpy( m_pszString, tempVal, len ); // Invoke any necessary callback function if ( m_fnChangeCallback ) { m_fnChangeCallback( this, pszOldValue, flOldValue ); } g_pCVar->CallGlobalChangeCallbacks( this, pszOldValue, flOldValue ); stackfree( pszOldValue ); }
void ConVar::InstallChangeCallback( FnChangeCallback callback ) { Assert( !m_fnChangeCallback || !callback ); m_fnChangeCallback = callback; if (m_fnChangeCallback) { // Call it immediately to set the initial value... m_fnChangeCallback( this, m_pszString ); } }