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.

92 lines
2.8 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
EditorInterface.edit_node(character_skill)
var animation_name: String = "animation_library/%s" % Util.get_resource_name(res)
character_skill.current_animation = animation_name
print(selected_path)
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)
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)