diff --git a/scene/launcher.tscn b/scene/launcher.tscn index 54d2842..0cd818e 100644 --- a/scene/launcher.tscn +++ b/scene/launcher.tscn @@ -1,4 +1,4 @@ -[gd_scene load_steps=20 format=3 uid="uid://eoydwrunmm5n"] +[gd_scene load_steps=21 format=3 uid="uid://eoydwrunmm5n"] [ext_resource type="Script" path="res://script/manager/game_manager.gd" id="1_q2t80"] [ext_resource type="Script" path="res://script/manager/level_manager.gd" id="2_ewhkj"] @@ -17,6 +17,7 @@ [ext_resource type="PackedScene" uid="uid://b78dbmcsioaa4" path="res://scene/ui/status_screen.tscn" id="9_bki0o"] [ext_resource type="PackedScene" uid="uid://0uonhojhfgi" path="res://scene/ui/menu_screen.tscn" id="10_sky2n"] [ext_resource type="Script" path="res://script/manager/input_manager.gd" id="12_vfqm4"] +[ext_resource type="PackedScene" uid="uid://8rcvw1vnjcf7" path="res://scene/character/character.tscn" id="18_2ae4v"] [sub_resource type="ShaderMaterial" id="ShaderMaterial_b4sw2"] shader = ExtResource("2_iwyj8") @@ -94,6 +95,9 @@ process_mode = 3 script = ExtResource("12_vfqm4") [node name="EditorTool" type="Node3D" parent="."] +visible = false script = ExtResource("5_n3qhi") +[node name="Character" parent="EditorTool" instance=ExtResource("18_2ae4v")] + [connection signal="item_rect_changed" from="GameManager/Stage" to="GameManager/Stage" method="_on_item_rect_changed"] diff --git a/script/editor_tool/editor_tool.gd b/script/editor_tool/editor_tool.gd index 484eaac..0ad18e5 100644 --- a/script/editor_tool/editor_tool.gd +++ b/script/editor_tool/editor_tool.gd @@ -2,52 +2,81 @@ extends Node3D @export var refresh_animation_lib: bool: - get: return false - set(_value): - Util.refresh_animation_lib() + get: return false + set(_value): + Util.refresh_animation_lib() @export var refresh_mesh_lib: bool: - get: return false - set(_value): - process_mesh_lib("res://resource/mesh_level") - print("done.") + 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.") + get: return false + set(_value): + process_dir("res://") + print("done.") +var selected_skill_file: String + +func _process(delta: float) -> void: + if not Engine.is_editor_hint(): + return + var selected_paths = EditorInterface.get_selected_paths() + if len(selected_paths) != 1: + return + var selected_path = 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 = res as SkillCfg + + if not skill_cfg.skill_animation: + return + + var character_skill = $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) + 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) + 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) diff --git a/script/manager/resource_manager.gd b/script/manager/resource_manager.gd index b9a2624..1d04f53 100644 --- a/script/manager/resource_manager.gd +++ b/script/manager/resource_manager.gd @@ -1,6 +1,7 @@ extends Node3D #==scene== +var scene_character: PackedScene = load("res://scene/character/character.tscn") var scene_player: PackedScene = load("res://scene/character/player.tscn") var scene_monster: PackedScene = load("res://scene/character/monster.tscn") var scene_bullet: PackedScene = load("res://scene/character/bullet.tscn")