From 4358b6eb27fbb65baebb0afc2444015f8983af83 Mon Sep 17 00:00:00 2001 From: Esteban Papp <81431996+amznestebanpapp@users.noreply.github.com> Date: Thu, 5 Aug 2021 19:31:12 -0700 Subject: [PATCH] runtime fixes (Editor running) Signed-off-by: Esteban Papp <81431996+amznestebanpapp@users.noreply.github.com> --- Code/Editor/Controls/ConsoleSCB.cpp | 8 +- Code/Editor/QuickAccessBar.cpp | 6 +- Code/Editor/SettingsManager.cpp | 10 +- Code/Editor/ToolsConfigPage.cpp | 6 +- Code/Legacy/CryCommon/IConsole.h | 2 +- Code/Legacy/CryCommon/Mocks/IConsoleMock.h | 2 +- Code/Legacy/CrySystem/XConsole.cpp | 115 +++++------------- Code/Legacy/CrySystem/XConsole.h | 2 +- Code/Legacy/CrySystem/XConsoleVariable.h | 7 +- .../RemoteConsole/Core/RemoteConsoleCore.cpp | 6 +- 10 files changed, 55 insertions(+), 109 deletions(-) diff --git a/Code/Editor/Controls/ConsoleSCB.cpp b/Code/Editor/Controls/ConsoleSCB.cpp index 0c664bbc59..9c13aa7328 100644 --- a/Code/Editor/Controls/ConsoleSCB.cpp +++ b/Code/Editor/Controls/ConsoleSCB.cpp @@ -562,15 +562,15 @@ static void OnVariableUpdated([[maybe_unused]] int row, ICVar* pCVar) static CVarBlock* VarBlockFromConsoleVars() { IConsole* console = GetIEditor()->GetSystem()->GetIConsole(); - std::vector cmds; + AZStd::vector cmds; cmds.resize(console->GetNumVars()); - size_t cmdCount = console->GetSortedVars(&cmds[0], cmds.size()); + size_t cmdCount = console->GetSortedVars(cmds); CVarBlock* vb = new CVarBlock; IVariable* pVariable = 0; for (int i = 0; i < cmdCount; i++) { - ICVar* pCVar = console->GetCVar(cmds[i]); + ICVar* pCVar = console->GetCVar(cmds[i].data()); if (!pCVar) { continue; @@ -602,7 +602,7 @@ static CVarBlock* VarBlockFromConsoleVars() pCVar->AddOnChangeFunctor(onChange); pVariable->SetDescription(pCVar->GetHelp()); - pVariable->SetName(cmds[i]); + pVariable->SetName(cmds[i].data()); // Transfer the custom limits have they have been set for this variable if (pCVar->HasCustomLimits()) diff --git a/Code/Editor/QuickAccessBar.cpp b/Code/Editor/QuickAccessBar.cpp index 0379be027d..59b4418c4c 100644 --- a/Code/Editor/QuickAccessBar.cpp +++ b/Code/Editor/QuickAccessBar.cpp @@ -68,12 +68,12 @@ void CQuickAccessBar::OnInitDialog() // Add console variables & commands. IConsole* console = GetIEditor()->GetSystem()->GetIConsole(); - std::vector cmds; + AZStd::vector cmds; cmds.resize(console->GetNumVars()); - size_t cmdCount = console->GetSortedVars(&cmds[0], cmds.size()); + size_t cmdCount = console->GetSortedVars(cmds); for (int i = 0; i < cmdCount; ++i) { - m_model->setStringList(m_model->stringList() += cmds[i]); + m_model->setStringList(m_model->stringList() += cmds[i].data()); } } diff --git a/Code/Editor/SettingsManager.cpp b/Code/Editor/SettingsManager.cpp index 82e3eaf1e6..3f170e83c8 100644 --- a/Code/Editor/SettingsManager.cpp +++ b/Code/Editor/SettingsManager.cpp @@ -607,7 +607,7 @@ void CSettingsManager::SerializeCVars(XmlNodeRef& node, bool bLoad) int nCurrentVariable(0); IConsole* piConsole(NULL); ICVar* piVariable(NULL); - std::vector cszVariableNames; + AZStd::vector cszVariableNames; char* szKey(NULL); char* szValue(NULL); @@ -662,7 +662,7 @@ void CSettingsManager::SerializeCVars(XmlNodeRef& node, bool bLoad) nNumberOfVariables = piConsole->GetNumVisibleVars(); cszVariableNames.resize(nNumberOfVariables, NULL); - if (piConsole->GetSortedVars((const char**)&cszVariableNames.front(), nNumberOfVariables, NULL) != nNumberOfVariables) + if (piConsole->GetSortedVars(cszVariableNames, NULL) != nNumberOfVariables) { assert(false); return; @@ -670,12 +670,12 @@ void CSettingsManager::SerializeCVars(XmlNodeRef& node, bool bLoad) for (nCurrentVariable = 0; nCurrentVariable < cszVariableNames.size(); ++nCurrentVariable) { - if (_stricmp(cszVariableNames[nCurrentVariable], "_TestFormatMessage") == 0) + if (_stricmp(cszVariableNames[nCurrentVariable].data(), "_TestFormatMessage") == 0) { continue; } - piVariable = piConsole->GetCVar(cszVariableNames[nCurrentVariable]); + piVariable = piConsole->GetCVar(cszVariableNames[nCurrentVariable].data()); if (!piVariable) { assert(false); @@ -683,7 +683,7 @@ void CSettingsManager::SerializeCVars(XmlNodeRef& node, bool bLoad) } newCVarNode = XmlHelpers::CreateXmlNode(CVAR_NODE); - newCVarNode->setAttr(cszVariableNames[nCurrentVariable], piVariable->GetString()); + newCVarNode->setAttr(cszVariableNames[nCurrentVariable].data(), piVariable->GetString()); cvarsNode->addChild(newCVarNode); } diff --git a/Code/Editor/ToolsConfigPage.cpp b/Code/Editor/ToolsConfigPage.cpp index a2328550e0..7e481506b3 100644 --- a/Code/Editor/ToolsConfigPage.cpp +++ b/Code/Editor/ToolsConfigPage.cpp @@ -818,12 +818,12 @@ void CToolsConfigPage::FillConsoleCmds() { QStringList commands; IConsole* console = GetIEditor()->GetSystem()->GetIConsole(); - std::vector cmds; + AZStd::vector cmds; cmds.resize(console->GetNumVars()); - size_t cmdCount = console->GetSortedVars(&cmds[0], cmds.size()); + size_t cmdCount = console->GetSortedVars(cmds); for (int i = 0; i < cmdCount; ++i) { - commands.push_back(cmds[i]); + commands.push_back(cmds[i].data()); } m_completionModel->setStringList(commands); } diff --git a/Code/Legacy/CryCommon/IConsole.h b/Code/Legacy/CryCommon/IConsole.h index 79bfc5b532..e03de35aa1 100644 --- a/Code/Legacy/CryCommon/IConsole.h +++ b/Code/Legacy/CryCommon/IConsole.h @@ -426,7 +426,7 @@ struct IConsole // szPrefix - 0 or prefix e.g. "sys_spec_" // Return // used size - virtual size_t GetSortedVars(const char** pszArray, size_t numItems, const char* szPrefix = 0) = 0; + virtual size_t GetSortedVars(AZStd::vector& pszArray, const char* szPrefix = 0) = 0; virtual const char* AutoComplete(const char* substr) = 0; virtual const char* AutoCompletePrev(const char* substr) = 0; virtual const char* ProcessCompletion(const char* szInputBuffer) = 0; diff --git a/Code/Legacy/CryCommon/Mocks/IConsoleMock.h b/Code/Legacy/CryCommon/Mocks/IConsoleMock.h index 1475e8e01e..b416aa5f11 100644 --- a/Code/Legacy/CryCommon/Mocks/IConsoleMock.h +++ b/Code/Legacy/CryCommon/Mocks/IConsoleMock.h @@ -56,7 +56,7 @@ public: MOCK_METHOD0(IsOpened, bool ()); MOCK_METHOD0(GetNumVars, int()); MOCK_METHOD0(GetNumVisibleVars, int()); - MOCK_METHOD3(GetSortedVars, size_t (const char** pszArray, size_t numItems, const char* szPrefix)); + MOCK_METHOD2(GetSortedVars, size_t (AZStd::vector& pszArray, const char* szPrefix)); MOCK_METHOD1(AutoComplete, const char*(const char* substr)); MOCK_METHOD1(AutoCompletePrev, const char*(const char* substr)); MOCK_METHOD1(ProcessCompletion, const char*(const char* szInputBuffer)); diff --git a/Code/Legacy/CrySystem/XConsole.cpp b/Code/Legacy/CrySystem/XConsole.cpp index 6da42420f8..0f98dd12d6 100644 --- a/Code/Legacy/CrySystem/XConsole.cpp +++ b/Code/Legacy/CrySystem/XConsole.cpp @@ -84,35 +84,6 @@ inline int GetCharPrio(char x) return x; } } -// case sensitive -inline bool less_CVar(const AZStd::string& left, const AZStd::string& right) -{ - AZStd::string_view leftView(left); - AZStd::string_view rightView(right); - for (;; ) - { - uint32 l = GetCharPrio(leftView.front()), r = GetCharPrio(rightView.front()); - - if (l < r) - { - return true; - } - if (l > r) - { - return false; - } - - if (leftView.front() == 0 || rightView.front() == 0) - { - break; - } - - leftView.remove_prefix(1); - rightView.remove_prefix(1); - } - - return false; -} void Command_SetWaitSeconds(IConsoleCmdArgs* pCmd) { @@ -347,28 +318,6 @@ void CXConsole::Init(ISystem* pSystem) con_restricted = 0; } - // test cases ----------------------------------------------- - assert(GetCVar("con_debug") != 0); // should be registered a few lines above - assert(GetCVar("Con_Debug") == GetCVar("con_debug")); // different case - - // editor - assert(strcmp(AutoComplete("con_"), "con_debug") == 0); - assert(strcmp(AutoComplete("CON_"), "con_debug") == 0); - assert(strcmp(AutoComplete("con_debug"), "con_display_last_messages") == 0); // actually we should reconsider this behavior - assert(strcmp(AutoComplete("Con_Debug"), "con_display_last_messages") == 0); // actually we should reconsider this behavior - - // game - assert(strcmp(ProcessCompletion("con_"), "con_debug ") == 0); - ResetAutoCompletion(); - assert(strcmp(ProcessCompletion("CON_"), "con_debug ") == 0); - ResetAutoCompletion(); - assert(strcmp(ProcessCompletion("con_debug"), "con_debug ") == 0); - ResetAutoCompletion(); - assert(strcmp(ProcessCompletion("Con_Debug"), "con_debug ") == 0); - ResetAutoCompletion(); - - // ---------------------------------------------------------- - m_nLoadingBackTexID = -1; if (gEnv->IsDedicated()) @@ -2424,7 +2373,7 @@ const char* CXConsole::ProcessCompletion(const char* szInputBuffer) if (!matches.empty()) { - std::sort(matches.begin(), matches.end(), less_CVar); // to sort commands with variables + std::sort(matches.begin(), matches.end()); // to sort commands with variables } if (showlist && !matches.empty()) { @@ -3181,7 +3130,7 @@ char* CXConsole::GetCheatVarAt(uint32 nOffset) ////////////////////////////////////////////////////////////////////////// -size_t CXConsole::GetSortedVars(const char** pszArray, size_t numItems, const char* szPrefix) +size_t CXConsole::GetSortedVars(AZStd::vector& pszArray, const char* szPrefix) { size_t i = 0; size_t iPrefixLen = szPrefix ? strlen(szPrefix) : 0; @@ -3191,7 +3140,7 @@ size_t CXConsole::GetSortedVars(const char** pszArray, size_t numItems, const ch ConsoleVariablesMap::const_iterator it, end = m_mapVariables.end(); for (it = m_mapVariables.begin(); it != end; ++it) { - if (pszArray && i >= numItems) + if (i >= pszArray.size()) { break; } @@ -3209,10 +3158,7 @@ size_t CXConsole::GetSortedVars(const char** pszArray, size_t numItems, const ch continue; } - if (pszArray) - { - pszArray[i] = it->first; - } + pszArray[i] = it->first; i++; } @@ -3223,7 +3169,7 @@ size_t CXConsole::GetSortedVars(const char** pszArray, size_t numItems, const ch ConsoleCommandsMap::iterator it, end = m_mapCommands.end(); for (it = m_mapCommands.begin(); it != end; ++it) { - if (pszArray && i >= numItems) + if (i >= pszArray.size()) { break; } @@ -3241,18 +3187,15 @@ size_t CXConsole::GetSortedVars(const char** pszArray, size_t numItems, const ch continue; } - if (pszArray) - { - pszArray[i] = it->first.c_str(); - } + pszArray[i] = it->first.c_str(); i++; } } - if (i != 0 && pszArray) + if (i != 0) { - std::sort(pszArray, pszArray + i, less_CVar); + std::sort(pszArray.begin(), pszArray.end()); } return i; @@ -3261,22 +3204,22 @@ size_t CXConsole::GetSortedVars(const char** pszArray, size_t numItems, const ch ////////////////////////////////////////////////////////////////////////// void CXConsole::FindVar(const char* substr) { - std::vector cmds; + AZStd::vector cmds; cmds.resize(GetNumVars() + m_mapCommands.size()); - size_t cmdCount = GetSortedVars(&cmds[0], cmds.size()); + size_t cmdCount = GetSortedVars(cmds); for (size_t i = 0; i < cmdCount; i++) { if (AZ::StringFunc::Find(cmds[i], substr) != AZStd::string::npos) { - ICVar* pCvar = gEnv->pConsole->GetCVar(cmds[i]); + ICVar* pCvar = gEnv->pConsole->GetCVar(cmds[i].data()); if (pCvar) { DisplayVarValue(pCvar); } else { - ConsoleLogInputResponse(" $3%s $6(Command)", cmds[i]); + ConsoleLogInputResponse(" $3%.*s $6(Command)", aznumeric_cast(cmds[i].size()), cmds[i].data()); } } } @@ -3287,22 +3230,22 @@ const char* CXConsole::AutoComplete(const char* substr) { // following code can be optimized - std::vector cmds; + AZStd::vector cmds; cmds.resize(GetNumVars() + m_mapCommands.size()); - size_t cmdCount = GetSortedVars(&cmds[0], cmds.size()); + size_t cmdCount = GetSortedVars(cmds); size_t substrLen = strlen(substr); // If substring is empty return first command. if (substrLen == 0 && cmdCount > 0) { - return cmds[0]; + return cmds[0].data(); } // find next for (size_t i = 0; i < cmdCount; i++) { - const char* szCmd = cmds[i]; + const char* szCmd = cmds[i].data(); size_t cmdlen = strlen(szCmd); if (cmdlen >= substrLen && memcmp(szCmd, substr, substrLen) == 0) { @@ -3311,18 +3254,18 @@ const char* CXConsole::AutoComplete(const char* substr) i++; if (i < cmdCount) { - return cmds[i]; + return cmds[i].data(); } - return cmds[i - 1]; + return cmds[i - 1].data(); } - return cmds[i]; + return cmds[i].data(); } } // then first matching case insensitive for (size_t i = 0; i < cmdCount; i++) { - const char* szCmd = cmds[i]; + const char* szCmd = cmds[i].data(); size_t cmdlen = strlen(szCmd); if (cmdlen >= substrLen && azstrnicmp(szCmd, substr, substrLen) == 0) @@ -3332,11 +3275,11 @@ const char* CXConsole::AutoComplete(const char* substr) i++; if (i < cmdCount) { - return cmds[i]; + return cmds[i].data(); } - return cmds[i - 1]; + return cmds[i - 1].data(); } - return cmds[i]; + return cmds[i].data(); } } @@ -3357,27 +3300,27 @@ void CXConsole::SetInputLine(const char* szLine) ////////////////////////////////////////////////////////////////////////// const char* CXConsole::AutoCompletePrev(const char* substr) { - std::vector cmds; + AZStd::vector cmds; cmds.resize(GetNumVars() + m_mapCommands.size()); - size_t cmdCount = GetSortedVars(&cmds[0], cmds.size()); + size_t cmdCount = GetSortedVars(cmds); // If substring is empty return last command. if (strlen(substr) == 0 && cmds.size() > 0) { - return cmds[cmdCount - 1]; + return cmds[cmdCount - 1].data(); } for (unsigned int i = 0; i < cmdCount; i++) { - if (azstricmp(substr, cmds[i]) == 0) + if (azstricmp(substr, cmds[i].data()) == 0) { if (i > 0) { - return cmds[i - 1]; + return cmds[i - 1].data(); } else { - return cmds[0]; + return cmds[0].data(); } } } diff --git a/Code/Legacy/CrySystem/XConsole.h b/Code/Legacy/CrySystem/XConsole.h index b141a88e52..16d1870be6 100644 --- a/Code/Legacy/CrySystem/XConsole.h +++ b/Code/Legacy/CrySystem/XConsole.h @@ -181,7 +181,7 @@ public: virtual bool IsOpened(); virtual int GetNumVars(); virtual int GetNumVisibleVars(); - virtual size_t GetSortedVars(const char** pszArray, size_t numItems, const char* szPrefix = 0); + virtual size_t GetSortedVars(AZStd::vector& pszArray, const char* szPrefix = 0); virtual int GetNumCheatVars(); virtual void SetCheatVarHashRange(size_t firstVar, size_t lastVar); virtual void CalcCheatVarHash(); diff --git a/Code/Legacy/CrySystem/XConsoleVariable.h b/Code/Legacy/CrySystem/XConsoleVariable.h index e4f9c14355..122389407f 100644 --- a/Code/Legacy/CrySystem/XConsoleVariable.h +++ b/Code/Legacy/CrySystem/XConsoleVariable.h @@ -179,8 +179,11 @@ public: CXConsoleVariableString(CXConsole* pConsole, const char* sName, const char* szDefault, int nFlags, const char* help) : CXConsoleVariableBase(pConsole, sName, nFlags, help) { - m_sValue = szDefault; - m_sDefault = szDefault; + if (szDefault) + { + m_sValue = szDefault; + m_sDefault = szDefault; + } } // interface ICVar -------------------------------------------------------------------------------------- diff --git a/Code/Tools/RemoteConsole/Core/RemoteConsoleCore.cpp b/Code/Tools/RemoteConsole/Core/RemoteConsoleCore.cpp index 24faf2ccaa..aa439116a0 100644 --- a/Code/Tools/RemoteConsole/Core/RemoteConsoleCore.cpp +++ b/Code/Tools/RemoteConsole/Core/RemoteConsoleCore.cpp @@ -446,10 +446,10 @@ bool SRemoteClient::SendPackage(const char* buffer, int size) ///////////////////////////////////////////////////////////////////////////////////////////// void SRemoteClient::FillAutoCompleteList(AZStd::vector& list) { - AZStd::vector cmds; - size_t count = gEnv->pConsole->GetSortedVars(nullptr, 0); + AZStd::vector cmds; + size_t count = gEnv->pConsole->GetSortedVars(cmds); cmds.resize(count); - count = gEnv->pConsole->GetSortedVars(&cmds[0], count); + count = gEnv->pConsole->GetSortedVars(cmds); for (size_t i = 0; i < count; ++i) { list.push_back(cmds[i]);