JavascriptImporter.cpp 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697
  1. #include <Atomic/IO/Log.h>
  2. #include <Atomic/IO/File.h>
  3. #include <Atomic/Resource/ResourceCache.h>
  4. #include <Atomic/Resource/Image.h>
  5. #include <AtomicJS/Javascript/JSComponentFile.h>
  6. #include "Asset.h"
  7. #include "AssetDatabase.h"
  8. #include "JavascriptImporter.h"
  9. namespace ToolCore
  10. {
  11. JavascriptImporter::JavascriptImporter(Context* context, Asset *asset) : AssetImporter(context, asset)
  12. {
  13. requiresCacheFile_ = false;
  14. isComponentFile_ = false;
  15. }
  16. JavascriptImporter::~JavascriptImporter()
  17. {
  18. }
  19. void JavascriptImporter::SetDefaults()
  20. {
  21. AssetImporter::SetDefaults();
  22. }
  23. bool JavascriptImporter::Import()
  24. {
  25. isComponentFile_ = false;
  26. const String& path = asset_->GetPath();
  27. SharedPtr<File> file(new File(context_, path, FILE_READ));
  28. unsigned dataSize = file->GetSize();
  29. SharedArrayPtr<char> buffer(new char[dataSize + 1]);
  30. if (file->Read(buffer.Get(), dataSize) != dataSize)
  31. return false;
  32. buffer[dataSize] = '\0';
  33. file->Close();
  34. if (strstr(buffer, "\"atomic component\"") || strstr(buffer, "'atomic component'"))
  35. isComponentFile_ = true;
  36. return true;
  37. }
  38. bool JavascriptImporter::LoadSettingsInternal()
  39. {
  40. if (!AssetImporter::LoadSettingsInternal())
  41. return false;
  42. JSONValue import = jsonRoot_.GetChild("JavascriptImporter", JSON_OBJECT);
  43. isComponentFile_ = import.GetBool("IsComponentFile");
  44. return true;
  45. }
  46. bool JavascriptImporter::SaveSettingsInternal()
  47. {
  48. if (!AssetImporter::SaveSettingsInternal())
  49. return false;
  50. JSONValue import = jsonRoot_.CreateChild("JavascriptImporter");
  51. import.SetBool("IsComponentFile", isComponentFile_);
  52. return true;
  53. }
  54. Resource* JavascriptImporter::GetResource()
  55. {
  56. if (!isComponentFile_)
  57. return 0;
  58. ResourceCache* cache = GetSubsystem<ResourceCache>();
  59. JSComponentFile* jsc = cache->GetResource<JSComponentFile>(asset_->GetPath());
  60. return jsc;
  61. }
  62. }