4
0
Fork 0
WolfBox/scripts/proxy_delegate.gd

29 lines
684 B
GDScript

extends Node
class_name ProxyDelegate
@export var delegate_scene: PackedScene
@export var model: Node:
set(val):
model = val
model.connect("child_entered_tree", source_item_added)
model.connect("child_exiting_tree", source_item_removed)
model.connect("child_order_changed", source_items_reordered)
var item_map: Dictionary = {}
func source_item_added(node: Node):
var delegate: Node = delegate_scene.instantiate()
item_map[node] = delegate
add_child(delegate)
delegate.item = node
func source_item_removed(node: Node):
var delegate: Node = item_map[node]
if delegate != null:
remove_child(delegate)
item_map.erase(node)
func source_items_reordered():
pass