Editor.ts 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889
  1. import EditorUI = require("../ui/EditorUI");
  2. import UIEvents = require("../ui/UIEvents");
  3. import AssetImport = require("../assets/AssetImport");
  4. import EditorLicense = require("./EditorLicense");
  5. import EditorEvents = require("./EditorEvents");
  6. class Editor extends Atomic.ScriptObject {
  7. project: ToolCore.Project;
  8. assetImport: AssetImport;
  9. editorLicense:EditorLicense;
  10. static instance: Editor;
  11. constructor() {
  12. super();
  13. // limit the framerate to limit CPU usage
  14. Atomic.getEngine().maxFps = 60;
  15. Editor.instance = this;
  16. this.editorLicense = new EditorLicense();
  17. EditorUI.initialize();
  18. Atomic.getResourceCache().autoReloadResources = true;
  19. this.assetImport = new AssetImport();
  20. this.subscribeToEvent(EditorEvents.LoadProject, (data) => this.handleEditorLoadProject(data));
  21. this.subscribeToEvent(EditorEvents.Quit, (data) => this.handleEditorEventQuit(data));
  22. this.parseArguments();
  23. }
  24. handleEditorLoadProject(event: EditorEvents.LoadProjectEvent): boolean {
  25. var system = ToolCore.getToolSystem();
  26. if (system.project) {
  27. this.sendEvent(UIEvents.MessageModalEvent,
  28. { type: "error", title: "Project already loaded", message: "Project already loaded" });
  29. return false;
  30. }
  31. return system.loadProject(event.path);
  32. }
  33. parseArguments() {
  34. var args = Atomic.getArguments();
  35. var idx = 0;
  36. while (idx < args.length) {
  37. if (args[idx] == "--project") {
  38. this.sendEvent(EditorEvents.LoadProject, {path: args[idx + 1]});
  39. }
  40. idx++;
  41. }
  42. }
  43. // event handling
  44. handleEditorEventQuit(data) {
  45. Atomic.getEngine().exit();
  46. }
  47. }
  48. export = Editor;