Core/ParameterList: Rework Parameter getter using Result
This commit is contained in:
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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)))
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user