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