forked from LeenkxTeam/LNXSDK
54 lines
1.3 KiB
Haxe
54 lines
1.3 KiB
Haxe
package leenkx.logicnode;
|
|
|
|
import iron.math.Vec4;
|
|
import kha.Image;
|
|
import kha.Color;
|
|
import leenkx.renderpath.RenderToTexture;
|
|
|
|
class DrawImageNode extends LogicNode {
|
|
var img: Image;
|
|
var lastImgName = "";
|
|
|
|
public function new(tree: LogicTree) {
|
|
super(tree);
|
|
}
|
|
|
|
override function run(from: Int) {
|
|
RenderToTexture.ensure2DContext("DrawImageNode");
|
|
|
|
final imgName: String = inputs[1].get();
|
|
final colorVec: Vec4 = inputs[2].get();
|
|
final anchorH: Int = inputs[3].get();
|
|
final anchorV: Int = inputs[4].get();
|
|
final x: Float = inputs[5].get();
|
|
final y: Float = inputs[6].get();
|
|
final width: Float = inputs[7].get();
|
|
final height: Float = inputs[8].get();
|
|
final angle: Float = inputs[9].get();
|
|
|
|
final drawx = x - 0.5 * width * anchorH;
|
|
final drawy = y - 0.5 * height * anchorV;
|
|
|
|
RenderToTexture.g.rotate(angle, x, y);
|
|
|
|
if (imgName != lastImgName) {
|
|
// Load new image
|
|
lastImgName = imgName;
|
|
iron.data.Data.getImage(imgName, (image: Image) -> {
|
|
img = image;
|
|
});
|
|
}
|
|
|
|
if (img == null) {
|
|
runOutput(0);
|
|
return;
|
|
}
|
|
|
|
RenderToTexture.g.color = Color.fromFloats(colorVec.x, colorVec.y, colorVec.z, colorVec.w);
|
|
RenderToTexture.g.drawScaledImage(img, drawx, drawy, width, height);
|
|
RenderToTexture.g.rotate(-angle, x, y);
|
|
|
|
runOutput(0);
|
|
}
|
|
}
|