Effects: better error reporting

This commit is contained in:
James Turner
2021-04-21 21:55:04 +01:00
parent d521625307
commit 2871a2df85
+12 -11
View File
@@ -25,6 +25,7 @@
#include <osgDB/ReadFile> #include <osgDB/ReadFile>
#include <osgDB/Registry> #include <osgDB/Registry>
#include <simgear/debug/ErrorReportingCallback.hxx>
#include <simgear/debug/logstream.hxx> #include <simgear/debug/logstream.hxx>
#include <simgear/misc/sg_path.hxx> #include <simgear/misc/sg_path.hxx>
#include <simgear/props/props_io.hxx> #include <simgear/props/props_io.hxx>
@@ -117,17 +118,17 @@ Effect* makeEffect(const string& name,
string absFileName string absFileName
= SGModelLib::findDataFile(effectFileName, options); = SGModelLib::findDataFile(effectFileName, options);
if (absFileName.empty()) { if (absFileName.empty()) {
SG_LOG(SG_INPUT, SG_ALERT, "can't find \"" << effectFileName << "\""); simgear::reportFailure(simgear::LoadFailure::NotFound, simgear::ErrorCode::LoadEffectsShaders, "Couldn't find Effect:" + effectFileName);
return 0; return nullptr;
} }
SGPropertyNode_ptr effectProps = new SGPropertyNode(); SGPropertyNode_ptr effectProps = new SGPropertyNode();
try { try {
readProperties(absFileName, effectProps.ptr(), 0, true); readProperties(absFileName, effectProps.ptr(), 0, true);
} }
catch (sg_io_exception& e) { catch (sg_io_exception& e) {
SG_LOG(SG_INPUT, SG_ALERT, "error reading \"" << absFileName << "\": " simgear::reportFailure(simgear::LoadFailure::BadData, simgear::ErrorCode::LoadEffectsShaders, e.getFormattedMessage(),
<< e.getFormattedMessage()); e.getLocation());
return 0; return nullptr;
} }
ref_ptr<Effect> result = makeEffect(effectProps.ptr(), realizeTechniques, ref_ptr<Effect> result = makeEffect(effectProps.ptr(), realizeTechniques,
options, SGPath::fromUtf8(absFileName)); options, SGPath::fromUtf8(absFileName));
@@ -227,9 +228,9 @@ Effect* makeEffect(SGPropertyNode* prop,
effect->generator = parent->generator; // Copy the generators effect->generator = parent->generator; // Copy the generators
} }
} else { } else {
SG_LOG(SG_INPUT, SG_ALERT, "can't find base effect " << simgear::reportFailure(simgear::LoadFailure::NotFound, simgear::ErrorCode::LoadEffectsShaders,
inheritProp->getStringValue()); string{"couldn't find base effect to inherit from:"} + inheritProp->getStringValue(), filePath);
return 0; return nullptr;
} }
} else { } else {
effect = new Effect; effect = new Effect;
@@ -260,9 +261,9 @@ Effect* makeEffect(SGPropertyNode* prop,
effect->realizeTechniques(options); effect->realizeTechniques(options);
} }
catch (BuilderException& e) { catch (BuilderException& e) {
SG_LOG(SG_INPUT, SG_ALERT, "Error building technique: " simgear::reportFailure(simgear::LoadFailure::Misconfigured, simgear::ErrorCode::LoadEffectsShaders,
<< e.getFormattedMessage()); "Failed to build technique:" + e.getFormattedMessage(), filePath);
return 0; return nullptr;
} }
} }
return effect.release(); return effect.release();