forked from LeenkxTeam/LNXSDK
Update Files
This commit is contained in:
68
leenkx/Sources/leenkx/logicnode/DrawStringNode.hx
Normal file
68
leenkx/Sources/leenkx/logicnode/DrawStringNode.hx
Normal file
@ -0,0 +1,68 @@
|
||||
package leenkx.logicnode;
|
||||
|
||||
import kha.Font;
|
||||
import kha.Color;
|
||||
import leenkx.renderpath.RenderToTexture;
|
||||
|
||||
#if lnx_ui
|
||||
import leenkx.ui.Canvas;
|
||||
#end
|
||||
|
||||
class DrawStringNode extends LogicNode {
|
||||
var font: Font;
|
||||
var lastFontName = "";
|
||||
var string:String;
|
||||
|
||||
public function new(tree: LogicTree) {
|
||||
super(tree);
|
||||
}
|
||||
|
||||
override function run(from: Int) {
|
||||
RenderToTexture.ensure2DContext("DrawStringNode");
|
||||
|
||||
string = Std.string(inputs[1].get());
|
||||
var angle: Float = inputs[7].get();
|
||||
|
||||
var fontName = inputs[2].get();
|
||||
if (fontName == "") {
|
||||
#if lnx_ui
|
||||
fontName = Canvas.defaultFontName;
|
||||
#else
|
||||
return; // No default font is exported, there is nothing we can do here
|
||||
#end
|
||||
}
|
||||
|
||||
if (fontName != lastFontName) {
|
||||
// Load new font
|
||||
lastFontName = fontName;
|
||||
iron.data.Data.getFont(fontName, (f: Font) -> {
|
||||
font = f;
|
||||
});
|
||||
}
|
||||
|
||||
if (font == null) {
|
||||
runOutput(0);
|
||||
return;
|
||||
}
|
||||
|
||||
RenderToTexture.g.rotate(angle, inputs[5].get(), inputs[6].get());
|
||||
|
||||
final colorVec = inputs[4].get();
|
||||
RenderToTexture.g.color = Color.fromFloats(colorVec.x, colorVec.y, colorVec.z, colorVec.w);
|
||||
|
||||
RenderToTexture.g.fontSize = inputs[3].get();
|
||||
RenderToTexture.g.font = font;
|
||||
|
||||
RenderToTexture.g.drawString(string, inputs[5].get(), inputs[6].get());
|
||||
|
||||
RenderToTexture.g.rotate(-angle, inputs[5].get(), inputs[6].get());
|
||||
|
||||
runOutput(0);
|
||||
}
|
||||
|
||||
override function get(from: Int): Dynamic {
|
||||
|
||||
return from == 1 ? RenderToTexture.g.font.height(RenderToTexture.g.fontSize) : RenderToTexture.g.font.width(RenderToTexture.g.fontSize, string);
|
||||
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user