Core/ParameterList: Rework Parameter getter using Result

This commit is contained in:
SirLynix
2022-09-09 13:47:06 +02:00
parent e063c7b45e
commit 6bf4ccaae1
23 changed files with 311 additions and 405 deletions

View File

@@ -60,7 +60,7 @@ namespace Nz
if (header.flags & DDSD_DEPTH)
depth = std::max(header.depth, 1U);
unsigned int levelCount = (parameters.levelCount > 0) ? std::min(parameters.levelCount, static_cast<UInt8>(header.levelCount)) : header.levelCount;
unsigned int levelCount = (parameters.levelCount > 0) ? std::min(parameters.levelCount, SafeCast<UInt8>(header.levelCount)) : header.levelCount;
// First, identify the type
ImageType type;
@@ -258,8 +258,7 @@ namespace Nz
loaderEntry.streamLoader = DDSLoader::Load;
loaderEntry.parameterFilter = [](const ImageParams& parameters)
{
bool skip;
if (parameters.custom.GetBooleanParameter("SkipBuiltinDDSLoader", &skip) && skip)
if (auto result = parameters.custom.GetBooleanParameter("SkipBuiltinDDSLoader"); result.GetValueOr(false))
return false;
return true;

View File

@@ -467,8 +467,7 @@ namespace Nz
loader.streamLoader = LoadFreetypeStream;
loader.parameterFilter = [](const FontParams& parameters)
{
bool skip;
if (parameters.custom.GetBooleanParameter("SkipBuiltinFreeTypeLoader", &skip) && skip)
if (auto result = parameters.custom.GetBooleanParameter("SkipBuiltinFreeTypeLoader"); result.GetValueOr(false))
return false;
return true;

View File

@@ -749,8 +749,7 @@ namespace Nz
loaderEntry.streamLoader = LoadGIFStream;
loaderEntry.parameterFilter = [](const ImageStreamParams& parameters)
{
bool skip;
if (parameters.custom.GetBooleanParameter("SkipBuiltinGIFLoader", &skip) && skip)
if (auto result = parameters.custom.GetBooleanParameter("SkipBuiltinGIFLoader"); result.GetValueOr(false))
return false;
return true;

View File

@@ -259,8 +259,7 @@ namespace Nz
loader.streamLoader = LoadMD2;
loader.parameterFilter = [](const MeshParams& parameters)
{
bool skip;
if (parameters.custom.GetBooleanParameter("SkipBuiltinMD2Loader", &skip) && skip)
if (auto result = parameters.custom.GetBooleanParameter("SkipBuiltinMD2Loader"); result.GetValueOr(false))
return false;
return true;

View File

@@ -100,8 +100,7 @@ namespace Nz
loader.streamLoader = LoadMD5Anim;
loader.parameterFilter = [](const AnimationParams& parameters)
{
bool skip;
if (parameters.custom.GetBooleanParameter("SkipBuiltinMD5AnimLoader", &skip) && skip)
if (auto result = parameters.custom.GetBooleanParameter("SkipBuiltinMD5AnimLoader"); result.GetValueOr(false))
return false;
return true;

View File

@@ -43,10 +43,9 @@ namespace Nz
}
UInt32 maxWeightCount = 4;
long long customMaxWeightCount;
if (parameters.custom.GetIntegerParameter("MaxWeightCount", &customMaxWeightCount))
if (auto result = parameters.custom.GetIntegerParameter("MaxWeightCount"))
{
maxWeightCount = SafeCast<UInt32>(customMaxWeightCount);
maxWeightCount = SafeCast<UInt32>(result.GetValue());
if (maxWeightCount > 4)
{
NazaraWarning("MaxWeightCount cannot be over 4");
@@ -361,8 +360,7 @@ namespace Nz
loader.streamLoader = LoadMD5Mesh;
loader.parameterFilter = [](const MeshParams& parameters)
{
bool skip;
if (parameters.custom.GetBooleanParameter("SkipBuiltinMD5MeshLoader", &skip) && skip)
if (auto result = parameters.custom.GetBooleanParameter("SkipBuiltinMD5MeshLoader"); result.GetValueOr(false))
return false;
return true;

View File

@@ -144,9 +144,7 @@ namespace Nz
Result<std::shared_ptr<Mesh>, ResourceLoadingError> LoadOBJ(Stream& stream, const MeshParams& parameters)
{
long long reservedVertexCount;
if (!parameters.custom.GetIntegerParameter("NativeOBJLoader_VertexCount", &reservedVertexCount))
reservedVertexCount = 100;
long long reservedVertexCount = parameters.custom.GetIntegerParameter("ReserveVertexCount").GetValueOr(1'000);
OBJParser parser;
@@ -360,8 +358,7 @@ namespace Nz
loader.streamLoader = LoadOBJ;
loader.parameterFilter = [](const MeshParams& parameters)
{
bool skip;
if (parameters.custom.GetBooleanParameter("SkipBuiltinOBJLoader", &skip) && skip)
if (auto result = parameters.custom.GetBooleanParameter("SkipBuiltinOBJLoader"); result.GetValueOr(false))
return false;
return true;

View File

@@ -103,7 +103,9 @@ namespace Nz
const ParameterList& matData = mesh.GetMaterialData(i);
std::string name;
if (!matData.GetStringParameter(MaterialData::Name, &name))
if (auto result = matData.GetStringParameter(MaterialData::Name))
name = std::move(result).GetValue();
else
name = "material_" + std::to_string(i);
// Makes sure we only have one material of that name
@@ -115,27 +117,32 @@ namespace Nz
MTLParser::Material* material = mtlFormat.AddMaterial(name);
if (!matData.GetStringParameter(MaterialData::FilePath, &material->diffuseMap))
auto pathResult = matData.GetStringParameter(MaterialData::FilePath);
if (!pathResult)
{
Color colorVal;
double dValue;
if (auto result = matData.GetColorParameter(MaterialData::AmbientColor))
material->ambient = result.GetValue();
if (matData.GetColorParameter(MaterialData::AmbientColor, &colorVal))
material->ambient = colorVal;
if (auto result = matData.GetColorParameter(MaterialData::BaseColor))
material->diffuse = result.GetValue();
if (matData.GetColorParameter(MaterialData::BaseColor, &colorVal))
material->diffuse = colorVal;
if (auto result = matData.GetColorParameter(MaterialData::SpecularColor))
material->specular = result.GetValue();
if (matData.GetColorParameter(MaterialData::SpecularColor, &colorVal))
material->specular = colorVal;
if (auto result = matData.GetDoubleParameter(MaterialData::Shininess))
material->shininess = SafeCast<float>(result.GetValue());
if (matData.GetDoubleParameter(MaterialData::Shininess, &dValue))
material->shininess = float(dValue);
if (auto result = matData.GetStringParameter(MaterialData::AlphaTexturePath))
material->alphaMap = std::move(result).GetValue();
matData.GetStringParameter(MaterialData::AlphaTexturePath, &material->alphaMap);
matData.GetStringParameter(MaterialData::BaseColorTexturePath, &material->diffuseMap);
matData.GetStringParameter(MaterialData::SpecularTexturePath, &material->specularMap);
if (auto result = matData.GetStringParameter(MaterialData::BaseColorTexturePath))
material->diffuseMap = std::move(result).GetValue();
if (auto result = matData.GetStringParameter(MaterialData::SpecularTexturePath))
material->specularMap = std::move(result).GetValue();
}
else
material->diffuseMap = std::move(pathResult).GetValue();
}
// Meshes

View File

@@ -331,8 +331,7 @@ namespace Nz
loaderEntry.streamLoader = LoadPCX;
loaderEntry.parameterFilter = [](const ImageParams& parameters)
{
bool skip;
if (parameters.custom.GetBooleanParameter("SkipBuiltinPCXLoader", &skip) && skip)
if (auto result = parameters.custom.GetBooleanParameter("SkipBuiltinPCXLoader"); result.GetValueOr(false))
return false;
return true;

View File

@@ -62,7 +62,7 @@ namespace Nz
if (!ptr)
{
NazaraError("Failed to load image: " + std::string(stbi_failure_reason()));
return Err(ResourceLoadingError::Unrecognized);
return Err(ResourceLoadingError::DecodingError);
}
CallOnExit freeStbiImage([ptr]()
@@ -103,8 +103,7 @@ namespace Nz
loaderEntry.streamLoader = LoadSTB;
loaderEntry.parameterFilter = [](const ImageParams& parameters)
{
bool skip;
if (parameters.custom.GetBooleanParameter("SkipBuiltinSTBLoader", &skip) && skip)
if (auto result = parameters.custom.GetBooleanParameter("SkipBuiltinSTBLoader"); result.GetValueOr(false))
return false;
return true;

View File

@@ -175,17 +175,12 @@ namespace Nz
return false;
}
long long imageQuality;
if (parameters.custom.GetIntegerParameter("NativeJPEGSaver_Quality", &imageQuality))
long long imageQuality = parameters.custom.GetIntegerParameter("JPEGQuality").GetValueOr(100);
if (imageQuality <= 0 || imageQuality > 100)
{
if (imageQuality <= 0 || imageQuality > 100)
{
NazaraError("NativeJPEGSaver_Quality value (" + Nz::NumberToString(imageQuality) + ") does not fit in bounds ]0, 100], clamping...");
imageQuality = Nz::Clamp(imageQuality, 1LL, 100LL);
}
NazaraError("NativeJPEGSaver_Quality value (" + Nz::NumberToString(imageQuality) + ") does not fit in bounds ]0, 100], clamping...");
imageQuality = Nz::Clamp(imageQuality, 1LL, 100LL);
}
else
imageQuality = 100;
if (!stbi_write_jpg_to_func(&WriteToStream, &stream, tempImage.GetWidth(), tempImage.GetHeight(), componentCount, tempImage.GetConstPixels(), int(imageQuality)))
{