forked from LeenkxTeam/LNXSDK
		
	t3du - New Image nodes: Draw Sub Image and Write Image
This commit is contained in:
		
							
								
								
									
										59
									
								
								leenkx/Sources/leenkx/logicnode/DrawSubImageNode.hx
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										59
									
								
								leenkx/Sources/leenkx/logicnode/DrawSubImageNode.hx
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,59 @@ | |||||||
|  | package leenkx.logicnode; | ||||||
|  |  | ||||||
|  | import iron.math.Vec4; | ||||||
|  | import kha.Image; | ||||||
|  | import kha.Color; | ||||||
|  | import leenkx.renderpath.RenderToTexture; | ||||||
|  |  | ||||||
|  | class DrawSubImageNode 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 sx: Float = inputs[9].get(); | ||||||
|  |         final sy: Float = inputs[10].get(); | ||||||
|  |         final swidth: Float = inputs[11].get(); | ||||||
|  |         final sheight: Float = inputs[12].get(); | ||||||
|  |         final angle: Float = inputs[13].get(); | ||||||
|  |  | ||||||
|  |         final drawx = x - 0.5 * width * anchorH; | ||||||
|  |         final drawy = y - 0.5 * height * anchorV; | ||||||
|  |         final sdrawx = sx - 0.5 * swidth * anchorH; | ||||||
|  |         final sdrawy = sy - 0.5 * sheight * 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.drawScaledSubImage(img, sdrawx, sdrawy, swidth, sheight, drawx, drawy, width, height); | ||||||
|  |         RenderToTexture.g.rotate(-angle, x, y); | ||||||
|  |  | ||||||
|  |         runOutput(0); | ||||||
|  |     } | ||||||
|  | } | ||||||
		Reference in New Issue
	
	Block a user