|
|
|
 |
Attention |
Topic was automatically imported from the old Question2Answer platform. |
 |
Asked By |
Methamane |
Hi, I’ve created my own grid system that I draw using draw_rect which is working great.
I wanted for certain cells to have a texture instead of a square with 1 color so I tried loading and drawing the texture this way:
var pic = Image.new()
var pic_tex = ImageTexture.new()
pic.load(“res://Assets/Characters/fd.png”)
pic.resize(grid.size, grid.size)
pic_tex.create_from_image(pic)
draw_texture_rect(pic_tex, row.rect, false)
If it matters the size that I’m resizing it to is 60x60, I’m doing this so that it fits the grid that I’ve created. This is drawing just a white square instead of the image that I’ve loaded, any help would be appreciated.
|
|
|
 |
Reply From: |
whiteshampoo |
I have tried it like this, and it works for me:
extends Node2D
var grid : Rect2 = Rect2(Vector2(0, 0), Vector2(32, 32))
var pos : Rect2 = Rect2(Vector2(32, 32), Vector2(32, 32))
var pic = Image.new()
var pictex = ImageTexture.new()
func _ready():
pic.load("res://icon.png")
pic.resize(grid.size.x, grid.size.y)
pictex.create_from_image(pic)
func _process(_delta):
update()
func _draw():
draw_texture_rect(pictex, pos, false)
you should maybe use preload
instead of load
. You also don’t need to resize the image, because draw_texture_rect
can resize it on-the-fly with the Rect2.size
value
I can’t really preload as ~95% of the assets would be loaded by the users on the fly, and so all of the loading and conversions are done right now within the _draw() function because the node is used only as a canvas for the grid which is dynamic.
Anyway moving:
var pic = Image.new()
var pic_tex = ImageTexture.new()
to be outside of the _draw() function did the trick with everything else staying within the _draw().
Thanks for the help
Methamane | 2020-07-08 13:06