forked from Nekojimi/JackIt
29 lines
684 B
GDScript
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
|