Add command line argument for disable menu optimizations on loading

This commit is contained in:
Jan 2021-12-28 18:26:41 +01:00
parent 6d622e6ae1
commit d24e847204
7 changed files with 30 additions and 20 deletions

View File

@ -76,6 +76,12 @@ const CommandLineOption* const OPTION_MENU_PERMISSIVE =
.WithDescription("Allows the usage of unknown script commands that can be compiled.")
.Build();
const CommandLineOption* const OPTION_MENU_NO_OPTIMIZATION =
CommandLineOption::Builder::Create()
.WithLongName("menu-no-optimization")
.WithDescription("Refrain from applying optimizations to parsed menus. (Optimizations increase menu performance and size. May result in less source information when dumped though.)")
.Build();
const CommandLineOption* const COMMAND_LINE_OPTIONS[]
{
OPTION_HELP,
@ -266,7 +272,11 @@ bool LinkerArgs::ParseArgs(const int argc, const char** argv)
// --menu-permissive
if (m_argument_parser.IsOptionSpecified(OPTION_MENU_PERMISSIVE))
ObjLoading::Configuration.PermissiveMenuParsing = true;
ObjLoading::Configuration.MenuPermissiveParsing = true;
// --menu-no-optimization
if (m_argument_parser.IsOptionSpecified(OPTION_MENU_NO_OPTIMIZATION))
ObjLoading::Configuration.MenuNoOptimization = true;
return true;
}

View File

@ -75,8 +75,7 @@ bool AssetLoaderMenuList::ProcessParsedResults(const std::string& assetName, ISe
for (const auto& menu : parsingResult->m_menus)
{
// TODO: Use command line arguments to activate legacy mode
MenuConverter converter(false, searchPath, memory, manager);
MenuConverter converter(ObjLoading::Configuration.MenuNoOptimization, searchPath, memory, manager);
auto* menuAsset = converter.ConvertMenu(*menu);
if(menuAsset == nullptr)
{
@ -143,7 +142,7 @@ bool AssetLoaderMenuList::LoadFromRaw(const std::string& assetName, ISearchPath*
});
reader.IncludeZoneState(zoneState);
reader.SetPermissiveMode(ObjLoading::Configuration.PermissiveMenuParsing);
reader.SetPermissiveMode(ObjLoading::Configuration.MenuPermissiveParsing);
const auto menuFileResult = reader.ReadMenuFile();
if (menuFileResult)

View File

@ -268,7 +268,7 @@ namespace IW4
void ConvertExpressionEntry(std::vector<expressionEntry>& entries, const ISimpleExpression* expression, const CommonMenuDef* menu, const CommonItemDef* item) const
{
if (!m_legacy_mode && expression->IsStatic())
if (!m_disable_optimizations && expression->IsStatic())
{
const auto expressionStaticValue = expression->Evaluate();
ConvertExpressionEntryExpressionValue(entries, &expressionStaticValue);
@ -327,7 +327,7 @@ namespace IW4
_NODISCARD Statement_s* ConvertOrApplyStatement(float& staticValue, const ISimpleExpression* expression, const CommonMenuDef* menu, const CommonItemDef* item = nullptr) const
{
if (m_legacy_mode)
if (m_disable_optimizations)
return ConvertExpression(expression, menu, item);
if (!expression)
@ -355,7 +355,7 @@ namespace IW4
_NODISCARD Statement_s* ConvertOrApplyStatement(const char*& staticValue, const ISimpleExpression* expression, const CommonMenuDef* menu, const CommonItemDef* item = nullptr) const
{
if (m_legacy_mode)
if (m_disable_optimizations)
return ConvertExpression(expression, menu, item);
if (!expression)
@ -382,7 +382,7 @@ namespace IW4
_NODISCARD Statement_s* ConvertOrApplyStatement(Material*& staticValue, const ISimpleExpression* expression, const CommonMenuDef* menu, const CommonItemDef* item = nullptr) const
{
if (m_legacy_mode)
if (m_disable_optimizations)
return ConvertExpression(expression, menu, item);
if (!expression)
@ -645,8 +645,8 @@ namespace IW4
}
public:
MenuConverterImpl(const bool legacyMode, ISearchPath* searchPath, MemoryManager* memory, IAssetLoadingManager* manager)
: AbstractMenuConverter(legacyMode, searchPath, memory, manager)
MenuConverterImpl(const bool disableOptimizations, ISearchPath* searchPath, MemoryManager* memory, IAssetLoadingManager* manager)
: AbstractMenuConverter(disableOptimizations, searchPath, memory, manager)
{
}
@ -705,8 +705,8 @@ namespace IW4
};
}
MenuConverter::MenuConverter(const bool legacyMode, ISearchPath* searchPath, MemoryManager* memory, IAssetLoadingManager* manager)
: m_legacy_mode(legacyMode),
MenuConverter::MenuConverter(const bool disableOptimizations, ISearchPath* searchPath, MemoryManager* memory, IAssetLoadingManager* manager)
: m_disable_optimizations(disableOptimizations),
m_search_path(searchPath),
m_memory(memory),
m_manager(manager)
@ -720,7 +720,7 @@ std::vector<XAssetInfoGeneric*>& MenuConverter::GetDependencies()
menuDef_t* MenuConverter::ConvertMenu(const CommonMenuDef& commonMenu)
{
MenuConverterImpl impl(m_legacy_mode, m_search_path, m_memory, m_manager);
MenuConverterImpl impl(m_disable_optimizations, m_search_path, m_memory, m_manager);
try
{

View File

@ -11,14 +11,14 @@ namespace IW4
{
class MenuConverter
{
bool m_legacy_mode;
bool m_disable_optimizations;
ISearchPath* m_search_path;
MemoryManager* m_memory;
IAssetLoadingManager* m_manager;
std::vector<XAssetInfoGeneric*> m_dependencies;
public:
MenuConverter(bool legacyMode, ISearchPath* searchPath, MemoryManager* memory, IAssetLoadingManager* manager);
MenuConverter(bool disableOptimizations, ISearchPath* searchPath, MemoryManager* memory, IAssetLoadingManager* manager);
std::vector<XAssetInfoGeneric*>& GetDependencies();
_NODISCARD menuDef_t* ConvertMenu(const menu::CommonMenuDef& commonMenu);

View File

@ -4,8 +4,8 @@
using namespace menu;
AbstractMenuConverter::AbstractMenuConverter(const bool legacyMode, ISearchPath* searchPath, MemoryManager* memory, IAssetLoadingManager* manager)
: m_legacy_mode(legacyMode),
AbstractMenuConverter::AbstractMenuConverter(const bool disableOptimizations, ISearchPath* searchPath, MemoryManager* memory, IAssetLoadingManager* manager)
: m_disable_optimizations(disableOptimizations),
m_search_path(searchPath),
m_memory(memory),
m_manager(manager)

View File

@ -11,12 +11,12 @@ namespace menu
class AbstractMenuConverter
{
protected:
bool m_legacy_mode;
bool m_disable_optimizations;
ISearchPath* m_search_path;
MemoryManager* m_memory;
IAssetLoadingManager* m_manager;
AbstractMenuConverter(bool legacyMode, ISearchPath* searchPath, MemoryManager* memory, IAssetLoadingManager* manager);
AbstractMenuConverter(bool disableOptimizations, ISearchPath* searchPath, MemoryManager* memory, IAssetLoadingManager* manager);
_NODISCARD const char* ConvertString(const std::string& str) const;

View File

@ -12,7 +12,8 @@ public:
{
public:
bool Verbose = false;
bool PermissiveMenuParsing = false;
bool MenuPermissiveParsing = false;
bool MenuNoOptimization = false;
} Configuration;
/**