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.
		
		
		
		
		
			
		
			
				
	
	
		
			93 lines
		
	
	
		
			2.5 KiB
		
	
	
	
		
			GDScript
		
	
			
		
		
	
	
			93 lines
		
	
	
		
			2.5 KiB
		
	
	
	
		
			GDScript
		
	
| @tool
 | |
| extends Node3D
 | |
| 
 | |
| @export var refresh_animation_lib: bool:
 | |
| 	get: return false
 | |
| 	set(_value):
 | |
| 		Util.refresh_animation_lib()
 | |
| 
 | |
| @export var clean_animation_lib: bool:
 | |
| 	get: return false
 | |
| 	set(_value):
 | |
| 		Util.clean_animation_lib()
 | |
| 
 | |
| @export var refresh_mesh_lib: bool:
 | |
| 	get: return false
 | |
| 	set(_value):
 | |
| 		process_mesh_lib("res://resource/mesh_level")
 | |
| 		print("done.")
 | |
| 
 | |
| @export var refresh_uid: bool:
 | |
| 	get: return false
 | |
| 	set(_value):
 | |
| 		process_dir("res://")
 | |
| 		print("done.")
 | |
| 
 | |
| var selected_skill_file: String
 | |
| 
 | |
| 
 | |
| func _process(delta: float) -> void:
 | |
| 	if not get_node_or_null("Character"):
 | |
| 		return
 | |
| 	if not Engine.is_editor_hint():
 | |
| 		if $Character:
 | |
| 			$Character.free()
 | |
| 		return
 | |
| 	var selected_paths: PackedStringArray = EditorInterface.get_selected_paths()
 | |
| 	if len(selected_paths) != 1:
 | |
| 		return
 | |
| 	var selected_path: String = selected_paths[0]
 | |
| 	if selected_skill_file == selected_path:
 | |
| 		return
 | |
| 	selected_skill_file = selected_path
 | |
| 	if not selected_path.ends_with(".tres"):
 | |
| 		return
 | |
| 	var res := ResourceLoader.load(selected_path)
 | |
| 	if not res is SkillCfg:
 | |
| 		return
 | |
| 	var skill_cfg: SkillCfg = res as SkillCfg
 | |
| 
 | |
| 	if not skill_cfg.skill_animation:
 | |
| 		return
 | |
| 
 | |
| 	var character_skill: AnimationPlayer = $Character/Skill as AnimationPlayer
 | |
| 	var character_view: AnimatedSprite3D = $Character/View as AnimatedSprite3D
 | |
| 	EditorInterface.edit_node(character_skill)
 | |
| 	var animation_name: String = "animation_library/%s" % Util.get_resource_name(res)
 | |
| 	character_skill.current_animation = animation_name
 | |
| 	EditorInterface.edit_resource(res)
 | |
| 
 | |
| 
 | |
| func process_mesh_lib(dir_name: String) -> void:
 | |
| 	var dir := DirAccess.open(dir_name)
 | |
| 	if not dir:
 | |
| 		print("An error occurred when trying to access the path: ", dir_name)
 | |
| 		return
 | |
| 	var path_list: Array[Variant] = []
 | |
| 	dir.list_dir_begin()
 | |
| 	for file_name in dir.get_files():
 | |
| 		if file_name.ends_with(".vox"):
 | |
| 			path_list.append(dir_name + "/" + file_name)
 | |
| 	Util.refresh_mesh_library(path_list, true)
 | |
| 
 | |
| 
 | |
| func process_dir(dir_name: String) -> void:
 | |
| 	var dir := DirAccess.open(dir_name)
 | |
| 	if dir:
 | |
| 		dir.list_dir_begin()
 | |
| 		var file_name: String = dir.get_next()
 | |
| 		if dir_name.ends_with("/"):
 | |
| 			dir_name = dir_name.trim_suffix("/")
 | |
| 		while file_name != "":
 | |
| 			if dir.current_is_dir():
 | |
| 				print("-----" + dir_name + "/" + file_name + " -----")
 | |
| 				process_dir(dir_name + "/" + file_name)
 | |
| 			elif file_name.get_extension() in [ "tres", "res" ]:
 | |
| 				print(dir_name + "/" + file_name)
 | |
| 				var res := ResourceLoader.load(dir_name + "/" + file_name)
 | |
| 				ResourceSaver.save(res)
 | |
| 
 | |
| 			file_name = dir.get_next()
 | |
| 	else:
 | |
| 		print("An error occurred when trying to access the path: ", dir_name)
 |