#Dragpreview not being freed?

1 messages · Page 1 of 1 (latest)

jade sun
#
func _process(delta):
    if dragPreview != null:
        dragPreview.rect_position = get_local_mouse_position() + Vector2(-4,-4)

var dragPreview
func get_drag_data(_position):
    print("Getting drag data")
    var item_index = get_index()
    var item = inventory.remove_item(item_index)
    if item != null:
        var data = {}
        data.item = item
        data.item_index = item_index
        # Dragpreview stuff
        dragPreview = TextureRect.new()
        dragPreview.texture = item.texture
        dragPreview.modulate.a = 0.5
        dragPreview.mouse_filter = Control.MOUSE_FILTER_IGNORE
        add_child(dragPreview)
        set_process(true)
        
        return data
    
func can_drop_data(_position, data):
    return data is Dictionary and data.has("item")
    
func drop_data(_position, data):
    var my_item_index = get_index()
    var my_item = inventory.items[my_item_index]
    inventory.swap_item(my_item_index, data.item_index)
    inventory.set_item(my_item_index, data.item)
    if dragPreview != null:
        dragPreview.queue_free()
    set_process(false)
#

so, in drop_data I have dragPreview.queue_free()

#

but it's not being deleted for some reason

#

Ive been checking with the debugger and when it gets there it says dragPreview is aleady null. Which is weird because it's still in the node tree and I don't free it anywhere

#

(note, it's not the inbuilt dragpreview, it's my own attempt at making one because the other one wouldn't be on my mouse position or follow as the player moves)