AssetImporter.h 1001 B

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. #pragma once
  2. #include <Atomic/Core/Object.h>
  3. #include <Atomic/Resource/JSONFile.h>
  4. using namespace Atomic;
  5. namespace ToolCore
  6. {
  7. class Asset;
  8. /// deals with .asset files
  9. class AssetImporter : public Object
  10. {
  11. friend class Asset;
  12. OBJECT(AssetImporter);
  13. public:
  14. /// Construct.
  15. AssetImporter(Context* context, Asset* asset);
  16. virtual ~AssetImporter();
  17. // load .asset
  18. bool LoadSettings(JSONValue& root);
  19. // save .asset
  20. bool SaveSettings(JSONValue& root);
  21. virtual void SetDefaults();
  22. virtual bool Preload() { return true; }
  23. Asset* GetAsset() { return asset_; }
  24. virtual Resource* GetResource(const String& typeName = String::EMPTY) { return 0; }
  25. bool RequiresCacheFile() const { return requiresCacheFile_; }
  26. protected:
  27. virtual bool Import() { return true; }
  28. WeakPtr<Asset> asset_;
  29. JSONValue jsonRoot_;
  30. bool requiresCacheFile_;
  31. virtual bool LoadSettingsInternal();
  32. virtual bool SaveSettingsInternal();
  33. };
  34. }