Effects: better error reporting
This commit is contained in:
@@ -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();
|
||||||
|
|||||||
Reference in New Issue
Block a user