InputNode.hx 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  1. package arm.node.brush;
  2. import iron.math.Vec4;
  3. @:keep
  4. class InputNode extends LogicNode {
  5. var coords = new Vec4();
  6. var startX = 0.0;
  7. var startY = 0.0;
  8. // Brush ruler
  9. var lockBegin = false;
  10. var lockX = false;
  11. var lockY = false;
  12. var lockStartX = 0.0;
  13. var lockStartY = 0.0;
  14. public function new(tree: LogicTree) {
  15. super(tree);
  16. tree.notifyOnUpdate(function() {
  17. if (arm.ui.UITrait.inst.splitView) {
  18. arm.ui.UITrait.inst.viewIndex = iron.system.Input.getMouse().viewX > arm.App.w() / 2 ? 1 : 0;
  19. }
  20. var mouse = iron.system.Input.getMouse();
  21. coords.x = mouse.viewX / iron.App.w();
  22. coords.y = mouse.viewY / iron.App.h();
  23. if (mouse.started()) {
  24. startX = mouse.viewX / iron.App.w();
  25. startY = mouse.viewY / iron.App.h();
  26. }
  27. var pen = iron.system.Input.getPen();
  28. if (pen.down()) {
  29. coords.x = pen.viewX / iron.App.w();
  30. coords.y = pen.viewY / iron.App.h();
  31. }
  32. if (pen.started()) {
  33. startX = pen.viewX / iron.App.w();
  34. startY = pen.viewY / iron.App.h();
  35. }
  36. if (arm.ui.UITrait.inst.splitView) {
  37. arm.ui.UITrait.inst.viewIndex = -1;
  38. }
  39. if (lockBegin) {
  40. var dx = Math.abs(lockStartX - mouse.viewX);
  41. var dy = Math.abs(lockStartY - mouse.viewY);
  42. if (dx > 1 || dy > 1) {
  43. lockBegin = false;
  44. if (dx > dy) lockY = true;
  45. else lockX = true;
  46. }
  47. }
  48. var kb = iron.system.Input.getKeyboard();
  49. if (kb.started(Config.keymap.brush_ruler)) { lockStartX = mouse.viewX; lockStartY = mouse.viewY; lockBegin = true; }
  50. else if (kb.released(Config.keymap.brush_ruler)) { lockX = lockY = lockBegin = false; }
  51. if (lockX) coords.x = startX;
  52. if (lockY) coords.y = startY;
  53. });
  54. }
  55. override function get(from: Int): Dynamic {
  56. return coords;
  57. }
  58. }