You cannot select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
	
	
		
			38 lines
		
	
	
		
			982 B
		
	
	
	
		
			GDScript
		
	
		
		
			
		
	
	
			38 lines
		
	
	
		
			982 B
		
	
	
	
		
			GDScript
		
	
| 
											2 years ago
										 | @tool | ||
|  | extends PanelContainer | ||
|  | 
 | ||
|  | var resource_picker: EditorResourcePicker | ||
|  | 
 | ||
|  | signal save_request | ||
|  | 
 | ||
|  | func _ready() -> void: | ||
|  | 	if get_tree().edited_scene_root and get_tree().edited_scene_root.is_ancestor_of(self): | ||
|  | 		return | ||
|  | 	 | ||
|  | 	resource_picker = EditorResourcePicker.new() | ||
|  | 	%IconContainer.add_child(resource_picker) | ||
|  | 	resource_picker.base_type = "Texture2D" | ||
|  | 	resource_picker.size_flags_horizontal = Control.SIZE_EXPAND_FILL | ||
|  | 	resource_picker.resource_changed.connect(func(a): save_request.emit()) | ||
|  | 
 | ||
|  | func get_data() -> Dictionary: | ||
|  | 	var data := {element = %LineEdit.text} | ||
|  | 	if resource_picker.edited_resource: | ||
|  | 		data.icon = resource_picker.edited_resource.resource_path | ||
|  | 	return data | ||
|  | 
 | ||
|  | func get_data2() -> Dictionary: | ||
|  | 	var data := get_data() | ||
|  | 	if "icon" in data: | ||
|  | 		data.icon = load(data.icon) | ||
|  | 	return data | ||
|  | 
 | ||
|  | func set_data(data: Dictionary): | ||
|  | 	%LineEdit.text = data.element | ||
|  | 	if "icon" in data: | ||
|  | 		resource_picker.edited_resource = load(data.icon) | ||
|  | 
 | ||
|  | func delete() -> void: | ||
|  | 	queue_free() | ||
|  | 	save_request.emit() |