JavascriptImporter.cpp 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103
  1. //
  2. // Copyright (c) 2014-2015, THUNDERBEAST GAMES LLC All rights reserved
  3. // LICENSE: Atomic Game Engine Editor and Tools EULA
  4. // Please see LICENSE_ATOMIC_EDITOR_AND_TOOLS.md in repository root for
  5. // license information: https://github.com/AtomicGameEngine/AtomicGameEngine
  6. //
  7. #include <Atomic/IO/Log.h>
  8. #include <Atomic/IO/File.h>
  9. #include <Atomic/Resource/ResourceCache.h>
  10. #include <Atomic/Resource/Image.h>
  11. #include <AtomicJS/Javascript/JSComponentFile.h>
  12. #include "Asset.h"
  13. #include "AssetDatabase.h"
  14. #include "JavascriptImporter.h"
  15. namespace ToolCore
  16. {
  17. JavascriptImporter::JavascriptImporter(Context* context, Asset *asset) : AssetImporter(context, asset)
  18. {
  19. requiresCacheFile_ = false;
  20. isComponentFile_ = false;
  21. }
  22. JavascriptImporter::~JavascriptImporter()
  23. {
  24. }
  25. void JavascriptImporter::SetDefaults()
  26. {
  27. AssetImporter::SetDefaults();
  28. }
  29. bool JavascriptImporter::Import()
  30. {
  31. isComponentFile_ = false;
  32. const String& path = asset_->GetPath();
  33. SharedPtr<File> file(new File(context_, path, FILE_READ));
  34. unsigned dataSize = file->GetSize();
  35. SharedArrayPtr<char> buffer(new char[dataSize + 1]);
  36. if (file->Read(buffer.Get(), dataSize) != dataSize)
  37. return false;
  38. buffer[dataSize] = '\0';
  39. file->Close();
  40. if (strstr(buffer, "\"atomic component\"") || strstr(buffer, "'atomic component'"))
  41. isComponentFile_ = true;
  42. return true;
  43. }
  44. bool JavascriptImporter::LoadSettingsInternal(JSONValue& jsonRoot)
  45. {
  46. if (!AssetImporter::LoadSettingsInternal(jsonRoot))
  47. return false;
  48. JSONValue import = jsonRoot.Get("JavascriptImporter");
  49. isComponentFile_ = import.Get("IsComponentFile").GetBool();
  50. return true;
  51. }
  52. bool JavascriptImporter::SaveSettingsInternal(JSONValue& jsonRoot)
  53. {
  54. if (!AssetImporter::SaveSettingsInternal(jsonRoot))
  55. return false;
  56. JSONValue import;
  57. import.Set("IsComponentFile", JSONValue(isComponentFile_));
  58. jsonRoot.Set("JavascriptImporter", import);
  59. return true;
  60. }
  61. Resource* JavascriptImporter::GetResource(const String& typeName)
  62. {
  63. if (!isComponentFile_)
  64. return 0;
  65. ResourceCache* cache = GetSubsystem<ResourceCache>();
  66. JSComponentFile* jsc = cache->GetResource<JSComponentFile>(asset_->GetPath());
  67. return jsc;
  68. }
  69. }