AssetImporter.h 1.1 KB

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