|  |  |  | @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) |