MainToolbar.ts 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108
  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. import EditorUI = require("./EditorUI");
  8. class MainToolbar extends Atomic.UIWidget {
  9. translateButton: Atomic.UIButton;
  10. rotateButton: Atomic.UIButton;
  11. scaleButton: Atomic.UIButton;
  12. axisButton: Atomic.UIButton;
  13. constructor(parent: Atomic.UIWidget) {
  14. super();
  15. this.load("AtomicEditor/editor/ui/maintoolbar.tb.txt");
  16. this.translateButton = <Atomic.UIButton>this.getWidget("3d_translate");
  17. this.rotateButton = <Atomic.UIButton>this.getWidget("3d_rotate");
  18. this.scaleButton = <Atomic.UIButton>this.getWidget("3d_scale");
  19. this.axisButton = <Atomic.UIButton>this.getWidget("3d_axismode");
  20. this.translateButton.value = 1;
  21. parent.addChild(this);
  22. this.subscribeToEvent("GizmoAxisModeChanged", (ev) => this.handleGizmoAxisModeChanged(ev));
  23. this.subscribeToEvent("GizmoEditModeChanged", (ev) => this.handleGizmoEditModeChanged(ev));
  24. this.subscribeToEvent(this, "WidgetEvent", (data) => this.handleWidgetEvent(data));
  25. }
  26. handleGizmoAxisModeChanged(ev: Editor.GizmoAxisModeChangedEvent) {
  27. if (ev.toggle) return;
  28. if (ev.mode == Editor.AXIS_WORLD) {
  29. this.axisButton.value = 1;
  30. this.axisButton.text = "World";
  31. } else {
  32. this.axisButton.value = 0;
  33. this.axisButton.text = "Local";
  34. }
  35. }
  36. handleGizmoEditModeChanged(ev: Editor.GizmoEditModeChangedEvent) {
  37. this.translateButton.value = 0;
  38. this.rotateButton.value = 0;
  39. this.scaleButton.value = 0;
  40. switch (ev.mode) {
  41. case 1:
  42. this.translateButton.value = 1;
  43. break;
  44. case 2:
  45. this.rotateButton.value = 1;
  46. break;
  47. case 3:
  48. this.scaleButton.value = 1;
  49. break;
  50. }
  51. }
  52. handleWidgetEvent(ev: Atomic.UIWidgetEvent) {
  53. if (ev.type == Atomic.UI_EVENT_TYPE_CLICK && ev.target) {
  54. if (ev.target.id == "3d_translate" || ev.target.id == "3d_rotate" || ev.target.id == "3d_scale") {
  55. var mode = 1;
  56. if (ev.target.id == "3d_rotate")
  57. mode = 2;
  58. else if (ev.target.id == "3d_scale")
  59. mode = 3;
  60. this.sendEvent("GizmoEditModeChanged", { mode: mode });
  61. return true;
  62. } else if (ev.target.id == "3d_axismode") {
  63. EditorUI.getShortcuts().invokeGizmoAxisModeChanged(ev.target.value ? Editor.AXIS_WORLD : Editor.AXIS_LOCAL);
  64. return true;
  65. } else if (ev.target.id == "maintoolbar_play") {
  66. EditorUI.getShortcuts().invokePlay();
  67. return true;
  68. }
  69. }
  70. }
  71. }
  72. export = MainToolbar;