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.9 KiB
GDScript
92 lines
2.9 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)
|
|
|
|
|
|
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)
|