mirror of
https://github.com/Orama-Interactive/Pixelorama.git
synced 2025-03-18 01:03:15 +00:00
64 lines
1.6 KiB
GDScript
64 lines
1.6 KiB
GDScript
extends Button
|
|
|
|
var references_panel: ReferencesPanel
|
|
|
|
|
|
func _get_drag_data(_at_position: Vector2) -> Variant:
|
|
var index := get_index() - 1
|
|
# If the index < 0 then that means this button is the "reset button"
|
|
if index < 0:
|
|
return null
|
|
|
|
set_drag_preview(self.duplicate())
|
|
|
|
var data := ["ReferenceImage", index]
|
|
|
|
return data
|
|
|
|
|
|
func _can_drop_data(_at_position: Vector2, data: Variant) -> bool:
|
|
if typeof(data) != TYPE_ARRAY:
|
|
references_panel.drag_highlight.visible = false
|
|
return false
|
|
if data[0] != "ReferenceImage":
|
|
references_panel.drag_highlight.visible = false
|
|
return false
|
|
|
|
var index := get_index() - 1
|
|
var from_index: int = data[1]
|
|
# If the index < 0 then that means this button is the "reset button"
|
|
# Or we are trying to drop on the same button
|
|
if index < 0 or index == from_index:
|
|
references_panel.drag_highlight.visible = false
|
|
return false
|
|
|
|
var side: int = -1
|
|
if get_local_mouse_position().x > size.x / 2:
|
|
side = 1
|
|
|
|
var region := Rect2(global_position + Vector2(3, 0), Vector2(6, size.y))
|
|
|
|
# Get the side
|
|
if side == 1:
|
|
region.position.x = (size.x + global_position.x) - 3
|
|
|
|
references_panel.drag_highlight.visible = true
|
|
references_panel.drag_highlight.position = region.position
|
|
references_panel.drag_highlight.size = region.size
|
|
|
|
return true
|
|
|
|
|
|
func _drop_data(_at_position: Vector2, data: Variant) -> void:
|
|
var from_index: int = data[1]
|
|
var to_index := get_index()
|
|
|
|
if get_local_mouse_position().x > size.x / 2:
|
|
if from_index > to_index:
|
|
to_index += 1
|
|
print("Help mee")
|
|
else:
|
|
if from_index < to_index:
|
|
to_index -= 1
|
|
|
|
references_panel.reorder_reference_image(from_index, to_index - 1, false)
|