ResourceOps.ts 4.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156
  1. import EditorEvents = require("../editor/EditorEvents");
  2. class ResourceOps extends Atomic.ScriptObject {
  3. }
  4. var resourceOps = new ResourceOps();
  5. export function CreateNewFolder(resourcePath: string, reportError: boolean = true): boolean {
  6. var title = "New Folder Error";
  7. var fs = Atomic.getFileSystem();
  8. if (fs.dirExists(resourcePath) || fs.fileExists(resourcePath)) {
  9. if (reportError)
  10. resourceOps.sendEvent(EditorEvents.ModalError, { title: title, message: "Already exists: " + resourcePath });
  11. return false;
  12. }
  13. if (!fs.createDir(resourcePath)) {
  14. if (reportError)
  15. resourceOps.sendEvent(EditorEvents.ModalError, { title: title, message: "Could not create " + resourcePath });
  16. return false;
  17. }
  18. var db = ToolCore.getAssetDatabase();
  19. db.scan();
  20. return true;
  21. }
  22. export function CreateNewComponent(resourcePath: string, componentName: string, reportError: boolean = true): boolean {
  23. var title = "New Component Error";
  24. var fs = Atomic.fileSystem;
  25. if (fs.dirExists(resourcePath) || fs.fileExists(resourcePath)) {
  26. if (reportError)
  27. resourceOps.sendEvent(EditorEvents.ModalError, { title: title, message: "Already exists: " + resourcePath });
  28. return false;
  29. }
  30. var templateFilename = "AtomicEditor/templates/template_component.js";
  31. var file = Atomic.cache.getFile(templateFilename);
  32. if (!file) {
  33. if (reportError)
  34. resourceOps.sendEvent(EditorEvents.ModalError, { title: title, message: "Failed to open template: " + templateFilename });
  35. return false;
  36. }
  37. var out = new Atomic.File(resourcePath, Atomic.FILE_WRITE);
  38. var success = out.copy(file);
  39. out.close();
  40. if (!success) {
  41. if (reportError)
  42. resourceOps.sendEvent(EditorEvents.ModalError, { title: title, message: "Failed template copy: " + templateFilename + " -> " + resourcePath });
  43. return false;
  44. }
  45. ToolCore.assetDatabase.scan();
  46. return true;
  47. }
  48. export function CreateNewScene(resourcePath: string, sceneName: string, reportError: boolean = true): boolean {
  49. var title = "New Scene Error";
  50. var fs = Atomic.fileSystem;
  51. if (fs.dirExists(resourcePath) || fs.fileExists(resourcePath)) {
  52. if (reportError)
  53. resourceOps.sendEvent(EditorEvents.ModalError, { title: title, message: "Already exists: " + resourcePath });
  54. return false;
  55. }
  56. var templateFilename = "AtomicEditor/templates/template_scene.scene";
  57. var file = Atomic.cache.getFile(templateFilename);
  58. if (!file) {
  59. if (reportError)
  60. resourceOps.sendEvent(EditorEvents.ModalError, { title: title, message: "Failed to open template: " + templateFilename });
  61. return false;
  62. }
  63. var out = new Atomic.File(resourcePath, Atomic.FILE_WRITE);
  64. var success = out.copy(file);
  65. out.close();
  66. if (!success) {
  67. if (reportError)
  68. resourceOps.sendEvent(EditorEvents.ModalError, { title: title, message: "Failed template copy: " + templateFilename + " -> " + resourcePath });
  69. return false;
  70. }
  71. ToolCore.assetDatabase.scan();
  72. return true;
  73. }
  74. export function CreateNewMaterial(resourcePath: string, materialName: string, reportError: boolean = true): boolean {
  75. var title = "New Material Error";
  76. var fs = Atomic.fileSystem;
  77. if (fs.dirExists(resourcePath) || fs.fileExists(resourcePath)) {
  78. if (reportError)
  79. resourceOps.sendEvent(EditorEvents.ModalError, { title: title, message: "Already exists: " + resourcePath });
  80. return false;
  81. }
  82. var templateFilename = "AtomicEditor/templates/template_material.material";
  83. var file = Atomic.cache.getFile(templateFilename);
  84. if (!file) {
  85. if (reportError)
  86. resourceOps.sendEvent(EditorEvents.ModalError, { title: title, message: "Failed to open template: " + templateFilename });
  87. return false;
  88. }
  89. var out = new Atomic.File(resourcePath, Atomic.FILE_WRITE);
  90. var success = out.copy(file);
  91. out.close();
  92. if (!success) {
  93. if (reportError)
  94. resourceOps.sendEvent(EditorEvents.ModalError, { title: title, message: "Failed template copy: " + templateFilename + " -> " + resourcePath });
  95. return false;
  96. }
  97. ToolCore.assetDatabase.scan();
  98. return true;
  99. }