First work on dialogic, resized guild, and started implementing portraits.
This commit is contained in:
@@ -0,0 +1,53 @@
|
||||
@tool
|
||||
extends Tree
|
||||
|
||||
## Script that handles drag and drop on the layer tree.
|
||||
|
||||
|
||||
signal layer_moved(from:int, to:int)
|
||||
|
||||
#region DRAG AND DROP
|
||||
################################################################################
|
||||
|
||||
func _get_drag_data(position:Vector2) -> Variant:
|
||||
if get_selected() == null or get_selected() == get_root():
|
||||
return
|
||||
|
||||
if find_parent('StyleEditor').current_style.inherits != null:
|
||||
return
|
||||
|
||||
drop_mode_flags = DROP_MODE_INBETWEEN
|
||||
var preview := Label.new()
|
||||
preview.text = " "+get_selected().get_text(0)
|
||||
preview.add_theme_stylebox_override('normal', get_theme_stylebox("Background", "EditorStyles"))
|
||||
set_drag_preview(preview)
|
||||
|
||||
return get_selected()
|
||||
|
||||
|
||||
func _can_drop_data(position:Vector2, data:Variant) -> bool:
|
||||
return data is TreeItem
|
||||
|
||||
|
||||
func _drop_data(position:Vector2, item:Variant) -> void:
|
||||
var to_item := get_item_at_position(position)
|
||||
var drop_section := get_drop_section_at_position(position)
|
||||
|
||||
if to_item == get_root():
|
||||
if item.get_index() != 0:
|
||||
layer_moved.emit(item.get_index(), 0)
|
||||
return
|
||||
|
||||
if to_item == null:
|
||||
if item.get_index() != get_root().get_child_count()-1:
|
||||
layer_moved.emit(item.get_index(), get_root().get_child_count()-1)
|
||||
return
|
||||
|
||||
var to_idx: int = to_item.get_index()+max(0, drop_section)
|
||||
if to_idx > item.get_index():
|
||||
to_idx -= 1
|
||||
|
||||
if to_idx != item.get_index():
|
||||
layer_moved.emit(item.get_index(), to_idx)
|
||||
|
||||
#endregion
|
||||
Reference in New Issue
Block a user