|
3 | 3 | using namespace nbl;
|
4 | 4 | using namespace asset;
|
5 | 5 |
|
6 |
| -asset::SAssetBundle |
7 |
| -CIESProfileLoader::loadAsset(io::IReadFile* _file, |
8 |
| - const asset::IAssetLoader::SAssetLoadParams& _params, |
9 |
| - asset::IAssetLoader::IAssetLoaderOverride* _override, |
10 |
| - uint32_t _hierarchyLevel) { |
11 |
| - if (!_file) |
| 6 | +bool CIESProfileLoader::isALoadableFileFormat(system::IFile* _file, const system::logger_opt_ptr logger) const |
| 7 | +{ |
| 8 | + system::IFile::success_t success; |
| 9 | + std::string versionBuffer(0x45, ' '); |
| 10 | + const auto* fName = _file->getFileName().c_str(); |
| 11 | + _file->read(success, versionBuffer.data(), 0, versionBuffer.size()); |
| 12 | + |
| 13 | + if (success) |
| 14 | + { |
| 15 | + for (const auto& it : CIESProfileParser::VALID_SIGNATURES) |
| 16 | + if (versionBuffer.find(it.data()) != std::string::npos) |
| 17 | + return true; |
| 18 | + |
| 19 | + logger.log("%s: Invalid IES signature for \"%s\" file!", system::ILogger::ELL_ERROR, __FUNCTION__, fName); |
| 20 | + } |
| 21 | + else |
| 22 | + logger.log("%s: Failed to read \"%s\" file!", system::ILogger::ELL_ERROR, __FUNCTION__, fName); |
| 23 | + |
| 24 | + return false; |
| 25 | +} |
| 26 | + |
| 27 | +asset::SAssetBundle CIESProfileLoader::loadAsset(system::IFile* _file, const asset::IAssetLoader::SAssetLoadParams& _params, asset::IAssetLoader::IAssetLoaderOverride* _override, uint32_t _hierarchyLevel) |
| 28 | +{ |
| 29 | + if (not _file) |
| 30 | + { |
| 31 | + _params.logger.log("%s: Nullptr system::IFile pointer!", system::ILogger::ELL_ERROR, __FUNCTION__); |
12 | 32 | return {};
|
| 33 | + } |
13 | 34 |
|
14 | 35 | IAssetLoader::SAssetLoadContext loadContex(_params, _file);
|
15 | 36 | core::vector<char> data(_file->getSize());
|
16 |
| - _file->read(data.data(), _file->getSize()); |
| 37 | + system::IFile::success_t success; |
| 38 | + const auto* fName = _file->getFileName().c_str(); |
| 39 | + _file->read(success, data.data(), 0, _file->getSize()); |
| 40 | + |
| 41 | + if (not success) |
| 42 | + { |
| 43 | + _params.logger.log("%s: Failed to read \"%s\" file!", system::ILogger::ELL_ERROR, __FUNCTION__, fName); |
| 44 | + return {}; |
| 45 | + } |
17 | 46 |
|
18 | 47 | CIESProfileParser parser(data.data(), data.size());
|
19 | 48 | CIESProfile profile;
|
20 | 49 |
|
21 |
| - if (!parser.parse(profile)) |
| 50 | + if (not parser.parse(profile)) |
22 | 51 | {
|
23 |
| - os::Printer::log("ERROR: Emission profile parsing error: " + std::string(parser.getErrorMsg()), ELL_ERROR); |
| 52 | + _params.logger.log("%s: Failed to parse emission profile for \"%s\" file!", system::ILogger::ELL_ERROR, __FUNCTION__, fName); |
24 | 53 | return {};
|
25 | 54 | }
|
26 | 55 |
|
|
0 commit comments