Files
armorpaint/Sources/arm/node/brush/InputNode.hx
T
2019-12-09 00:28:10 +01:00

73 lines
1.7 KiB
Haxe

package arm.node.brush;
import iron.math.Vec4;
@:keep
class InputNode extends LogicNode {
var coords = new Vec4();
var startX = 0.0;
var startY = 0.0;
// Brush ruler
var lockBegin = false;
var lockX = false;
var lockY = false;
var lockStartX = 0.0;
var lockStartY = 0.0;
public function new(tree: LogicTree) {
super(tree);
tree.notifyOnUpdate(function() {
if (arm.ui.UITrait.inst.splitView) {
arm.ui.UITrait.inst.viewIndex = iron.system.Input.getMouse().viewX > arm.App.w() / 2 ? 1 : 0;
}
var mouse = iron.system.Input.getMouse();
coords.x = mouse.viewX / iron.App.w();
coords.y = mouse.viewY / iron.App.h();
if (mouse.started()) {
startX = mouse.viewX / iron.App.w();
startY = mouse.viewY / iron.App.h();
}
var pen = iron.system.Input.getPen();
if (pen.down()) {
coords.x = pen.viewX / iron.App.w();
coords.y = pen.viewY / iron.App.h();
}
if (pen.started()) {
startX = pen.viewX / iron.App.w();
startY = pen.viewY / iron.App.h();
}
if (arm.ui.UITrait.inst.splitView) {
arm.ui.UITrait.inst.viewIndex = -1;
}
if (lockBegin) {
var dx = Math.abs(lockStartX - mouse.viewX);
var dy = Math.abs(lockStartY - mouse.viewY);
if (dx > 1 || dy > 1) {
lockBegin = false;
if (dx > dy) lockY = true;
else lockX = true;
}
}
var kb = iron.system.Input.getKeyboard();
if (kb.started(Config.keymap.brush_ruler)) { lockStartX = mouse.viewX; lockStartY = mouse.viewY; lockBegin = true; }
else if (kb.released(Config.keymap.brush_ruler)) { lockX = lockY = lockBegin = false; }
if (lockX) coords.x = startX;
if (lockY) coords.y = startY;
});
}
override function get(from: Int): Dynamic {
return coords;
}
}