JSBind.cpp 2.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192
  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/Core/ProcessUtils.h>
  8. #include <Atomic/IO/FileSystem.h>
  9. #include "JSBPackage.h"
  10. #include "JSBind.h"
  11. #include "JavaScript/JSPackageWriter.h"
  12. #include "CSharp/CSPackageWriter.h"
  13. namespace ToolCore
  14. {
  15. JSBind::JSBind(Context* context) : Object(context),
  16. package_(new JSBPackage(context))
  17. {
  18. }
  19. JSBind::~JSBind()
  20. {
  21. }
  22. bool JSBind::LoadPackage(const String& sourceRootFolder, const String& packageFolder, const String& platform)
  23. {
  24. sourceRootFolder_ = sourceRootFolder;
  25. packageFolder_ = packageFolder;
  26. platform_ = platform;
  27. package_->Load(sourceRootFolder_ + packageFolder_);
  28. return true;
  29. }
  30. bool JSBind::GenerateCSharpBindings()
  31. {
  32. String modulesFolder = "Build/Source/Generated/" + platform_ + "/CSharp/Packages/";
  33. modulesFolder += package_->GetName() + "/";
  34. String outputFolder = sourceRootFolder_ + "/" + modulesFolder;
  35. FileSystem* fs = GetSubsystem<FileSystem>();
  36. if (!fs->CreateDirs(sourceRootFolder_, modulesFolder) || !fs->DirExists(outputFolder))
  37. {
  38. String error = "Unable to create bindings output folder: " + outputFolder;
  39. ErrorExit(error.CString());
  40. }
  41. destScriptFolder_ = outputFolder;
  42. destNativeFolder_ = outputFolder;
  43. CSPackageWriter writer(package_);
  44. package_->GenerateSource(writer);
  45. return true;
  46. }
  47. bool JSBind::GenerateJavaScriptBindings()
  48. {
  49. String modulesFolder = "Build/Source/Generated/" + platform_ + "/Javascript/Packages/";
  50. modulesFolder += package_->GetName() + "/";
  51. String outputFolder = sourceRootFolder_ + "/" + modulesFolder;
  52. FileSystem* fs = GetSubsystem<FileSystem>();
  53. if (!fs->CreateDirs(sourceRootFolder_, modulesFolder) || !fs->DirExists(outputFolder))
  54. {
  55. String error = "Unable to create bindings output folder: " + outputFolder;
  56. ErrorExit(error.CString());
  57. }
  58. destScriptFolder_ = String::EMPTY;
  59. destNativeFolder_ = outputFolder;
  60. JSPackageWriter writer(package_);
  61. package_->GenerateSource(writer);
  62. return true;
  63. }
  64. }