2018-10-11 17:55:05 +02:00
|
|
|
package arm.brushnode;
|
2018-02-26 16:59:45 +01:00
|
|
|
|
|
|
|
|
import armory.logicnode.LogicNode;
|
|
|
|
|
import armory.logicnode.LogicTree;
|
2018-09-11 10:13:38 +02:00
|
|
|
import iron.math.Vec4;
|
2018-02-26 16:59:45 +01:00
|
|
|
|
2018-06-20 19:23:49 +02:00
|
|
|
@:keep
|
2018-02-26 16:59:45 +01:00
|
|
|
class InputNode extends LogicNode {
|
|
|
|
|
|
|
|
|
|
var coords = new Vec4();
|
|
|
|
|
|
|
|
|
|
var startX = 0.0;
|
|
|
|
|
var startY = 0.0;
|
2019-03-05 21:07:43 +01:00
|
|
|
|
|
|
|
|
// Brush ruler
|
|
|
|
|
var lockBegin = false;
|
2018-02-26 16:59:45 +01:00
|
|
|
var lockX = false;
|
|
|
|
|
var lockY = false;
|
2019-03-05 21:07:43 +01:00
|
|
|
var lockStartX = 0.0;
|
|
|
|
|
var lockStartY = 0.0;
|
2018-02-26 16:59:45 +01:00
|
|
|
|
|
|
|
|
public function new(tree:LogicTree) {
|
|
|
|
|
super(tree);
|
|
|
|
|
tree.notifyOnUpdate(function() {
|
2018-08-09 22:51:15 +02:00
|
|
|
var mouse = iron.system.Input.getMouse();
|
2018-02-26 16:59:45 +01:00
|
|
|
coords.x = mouse.x / iron.App.w();
|
|
|
|
|
coords.y = mouse.y / iron.App.h();
|
|
|
|
|
if (mouse.started()) {
|
|
|
|
|
startX = mouse.x / iron.App.w();
|
|
|
|
|
startY = mouse.y / iron.App.h();
|
|
|
|
|
}
|
|
|
|
|
|
2018-08-09 22:51:15 +02:00
|
|
|
var pen = iron.system.Input.getPen();
|
2018-03-09 11:16:28 +01:00
|
|
|
if (pen.down()) {
|
|
|
|
|
coords.x = pen.x / iron.App.w();
|
|
|
|
|
coords.y = pen.y / iron.App.h();
|
|
|
|
|
}
|
2018-10-11 17:55:05 +02:00
|
|
|
if (pen.started()) {
|
|
|
|
|
startX = pen.x / iron.App.w();
|
|
|
|
|
startY = pen.y / iron.App.h();
|
|
|
|
|
}
|
2018-03-09 11:16:28 +01:00
|
|
|
|
2018-02-26 16:59:45 +01:00
|
|
|
var kb = iron.system.Input.getKeyboard();
|
2019-03-05 21:07:43 +01:00
|
|
|
if (lockBegin) {
|
|
|
|
|
var dx = Math.abs(lockStartX - mouse.x);
|
|
|
|
|
var dy = Math.abs(lockStartY - mouse.y);
|
|
|
|
|
if (dx > 1 || dy > 1) {
|
|
|
|
|
lockBegin = false;
|
|
|
|
|
if (dx > dy) lockY = true;
|
|
|
|
|
else lockX = true;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
if (kb.started("shift")) { lockStartX = mouse.x; lockStartY = mouse.y; lockBegin = true; }
|
|
|
|
|
else if (kb.released("shift")) { lockX = lockY = lockBegin = false; }
|
|
|
|
|
|
|
|
|
|
if (lockX) coords.x = startX;
|
2018-02-26 16:59:45 +01:00
|
|
|
if (lockY) coords.y = startY;
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
override function get(from:Int):Dynamic {
|
|
|
|
|
return coords;
|
|
|
|
|
}
|
|
|
|
|
}
|