BsResourceImporter.cpp 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. #include "BsResourceImporter.h"
  2. #include "BsFileSerializer.h"
  3. #include "BsResource.h"
  4. namespace BansheeEngine
  5. {
  6. const WString ResourceImporter::DEFAULT_EXTENSION = L"asset";
  7. ResourceImporter::ResourceImporter()
  8. :SpecificImporter()
  9. {
  10. }
  11. ResourceImporter::~ResourceImporter()
  12. {
  13. }
  14. bool ResourceImporter::isExtensionSupported(const WString& ext) const
  15. {
  16. WString lowerCaseExt = ext;
  17. StringUtil::toLowerCase(lowerCaseExt);
  18. return lowerCaseExt == DEFAULT_EXTENSION;
  19. }
  20. bool ResourceImporter::isMagicNumberSupported(const UINT8* magicNumPtr, UINT32 numBytes) const
  21. {
  22. return true; // No magic number of asset files, they must always rely on extension
  23. }
  24. ResourcePtr ResourceImporter::import(const Path& filePath, ConstImportOptionsPtr importOptions)
  25. {
  26. FileDecoder fs(filePath);
  27. fs.skip(); // Skipped over saved resource data
  28. std::shared_ptr<IReflectable> loadedData = fs.decode();
  29. if (loadedData == nullptr)
  30. BS_EXCEPT(InternalErrorException, "Unable to import resource.");
  31. if (!loadedData->isDerivedFrom(Resource::getRTTIStatic()))
  32. BS_EXCEPT(InternalErrorException, "Imported object doesn't derive from Resource.");
  33. ResourcePtr resource = std::static_pointer_cast<Resource>(loadedData);
  34. return resource;
  35. }
  36. }