diff --git a/Scenes/bug_marker.gd b/Scenes/bug_marker.gd index 8b44b98..09ef65d 100644 --- a/Scenes/bug_marker.gd +++ b/Scenes/bug_marker.gd @@ -13,6 +13,10 @@ enum BugStatus { NEUTRAL, UNRESOLVED, IN_PROGRESS, RESOLVED } @export_group("") @export var enable_info : bool = true : set = set_info_enabled +const UNRESOLVED_TINT : Color = Color(0.1,0.0,0.0) +const IN_PROGRESS_TINT : Color = Color(0.5,0.5,0.0) +const RESOLVED_TINT : Color = Color(0.0,1.0,0.0) + var bug_data : BugbotBugData var __arrow : MeshInstance3D diff --git a/Scenes/bugbot_player.gd b/Scenes/bugbot_player.gd index 3416ebf..2586fbb 100644 --- a/Scenes/bugbot_player.gd +++ b/Scenes/bugbot_player.gd @@ -67,7 +67,9 @@ extends CharacterBody3D #endregion #region Private Properties -var __bugbot_server : BugbotServerAPI +static var __bugbot_server : BugbotServerAPI +static var __bug_marker_root : Node + var __bug_report_form : BugReportForm var __movement_speed : float = 5.0 @@ -240,7 +242,7 @@ func _physics_process(_delta:float) -> void: static func instantiate(tree:SceneTree) -> void: tree.root.add_child(load("res://addons/Bugbot/Scenes/bugbot_player.tscn").instantiate() as CharacterBody3D) -static func load_bug_markers(marker_root:Node3D, bug_list:Array) -> void: +static func load_bug_markers(marker_root:Node, bug_list:Array) -> void: var bug_marker_preload : PackedScene = preload("res://addons/Bugbot/Scenes/bug_marker.tscn") Bugbot.adjust_bug_marker_colours() @@ -265,9 +267,9 @@ static func load_bug_markers(marker_root:Node3D, bug_list:Array) -> void: bug_marker.set_rotation_to_normal(bugbot_data.marker_normal) static func adjust_bug_marker_colours() -> void: - var unresolved_colour : Color = ProjectSettings.get_setting("bugbot/markers/unresolved/tint") - var in_progress_colour : Color = ProjectSettings.get_setting("bugbot/markers/in_progress/tint") - var resolved_colour : Color = ProjectSettings.get_setting("bugbot/markers/resolved/tint") + var unresolved_colour : Color = ProjectSettings.get_setting("bugbot/markers/unresolved/tint", BugMarker.UNRESOLVED_TINT) + var in_progress_colour : Color = ProjectSettings.get_setting("bugbot/markers/in_progress/tint", BugMarker.IN_PROGRESS_TINT) + var resolved_colour : Color = ProjectSettings.get_setting("bugbot/markers/resolved/tint", BugMarker.RESOLVED_TINT) var unresolved_material : BugMarkerMaterialPack = load("res://addons/Bugbot/Materials/BugMarker/bug_marker_unresolved.res") (unresolved_material.arrow as ShaderMaterial).set_shader_parameter("colour", unresolved_colour) @@ -281,6 +283,28 @@ static func adjust_bug_marker_colours() -> void: (resolved_material.arrow as ShaderMaterial).set_shader_parameter("colour", resolved_colour) (resolved_material.icon as ShaderMaterial).set_shader_parameter("colour", resolved_colour) +static func __get_bug_marker_root(current_scene:Node) -> void: + var current_scene_hash : String = current_scene.scene_file_path.sha256_text() + var current_scene_children : Array = current_scene.get_children() + var found_root : bool = false + for child:Node in current_scene_children: + if child.name == current_scene_hash: + __bug_marker_root = child + return + var new_root : Node = Node.new() + current_scene.add_child(new_root) + new_root.name = current_scene_hash + __bug_marker_root = new_root + +static func show_bug_markers(current_scene:Node) -> void: + Bugbot.__get_bug_marker_root(current_scene) + __bugbot_server._return_list_of_bugs(current_scene.scene_file_path, __show_bug_markers_response) +static func __show_bug_markers_response(bugs:Array) -> void: + Bugbot.load_bug_markers(__bug_marker_root, bugs) + +static func hide_bug_markers(current_scene:Node) -> void: + Bugbot.__get_bug_marker_root(current_scene) + __bug_marker_root.queue_free() func __calculate_movement_speed() -> void: if Input.is_action_pressed(&"bugbot_movement_speed_down") or Input.is_action_just_pressed(&"bugbot_movement_speed_down"): @@ -363,8 +387,9 @@ func __bug_report_form_data_prepared(tag_lists:Array) -> void: __bug_report_form.submitted.connect(__form_submitted) __bug_report_form.cancelled.connect(__form_cancelled) func __form_submitted(map_name:String, bug_position:Vector3, bug_normal:Vector3) -> void: + __get_bug_marker_root(get_tree().current_scene) var marker : BugMarker = (load(bug_marker) as PackedScene).instantiate() as BugMarker - get_tree().get_root().add_child(marker) + __bug_marker_root.add_child(marker) marker.global_position = bug_position marker.set_rotation_to_normal(bug_normal) marker.marker_status = BugMarker.BugStatus.UNRESOLVED diff --git a/Scripts/server_gitea_api.gd b/Scripts/server_gitea_api.gd index 32c3b5d..985ee14 100644 --- a/Scripts/server_gitea_api.gd +++ b/Scripts/server_gitea_api.gd @@ -52,13 +52,13 @@ func __return_list_of_bugs_thread(map_name:String, callback:Callable) -> void: return var bug_array : Array - var resolved_labels : Array = ProjectSettings.get_setting("bugbot/reporting/gitea/status_labels/resolved_statuses") - var in_progress_labels : Array = ProjectSettings.get_setting("bugbot/reporting/gitea/status_labels/in_progress_statuses") - var unresolved_labels : Array = ProjectSettings.get_setting("bugbot/reporting/gitea/status_labels/unresolved_statuses") + var resolved_labels : Array = ProjectSettings.get_setting("bugbot/reporting/gitea/status_labels/resolved_statuses", Array()) + var in_progress_labels : Array = ProjectSettings.get_setting("bugbot/reporting/gitea/status_labels/in_progress_statuses", Array()) + var unresolved_labels : Array = ProjectSettings.get_setting("bugbot/reporting/gitea/status_labels/unresolved_statuses", Array()) - var show_resolved : bool = ProjectSettings.get_setting("bugbot/markers/resolved/show_resolved_bugs") - var show_in_progress : bool = ProjectSettings.get_setting("bugbot/markers/in_progress/show_in_progress_bugs") - var show_unresolved : bool = ProjectSettings.get_setting("bugbot/markers/unresolved/show_unresolved_bugs") + var show_resolved : bool = ProjectSettings.get_setting("bugbot/markers/resolved/show_resolved_bugs", false) + var show_in_progress : bool = ProjectSettings.get_setting("bugbot/markers/in_progress/show_in_progress_bugs", true) + var show_unresolved : bool = ProjectSettings.get_setting("bugbot/markers/unresolved/show_unresolved_bugs", true) for bug_in:Dictionary in response_data: var bugbot_marker_string : String = bug_in["body"].split("\n")[-1] @@ -73,7 +73,7 @@ func __return_list_of_bugs_thread(map_name:String, callback:Callable) -> void: if bug.map_name != map_name: continue - var marker_location : Array = bugbot_marker_data["bug_location"] + var marker_location : Array = bugbot_marker_data["bug_position"] var marker_normal : Array = bugbot_marker_data["bug_normal"] bug.marker_position = Vector3(marker_location[0], marker_location[1], marker_location[2]) bug.marker_normal = Vector3(marker_normal[0], marker_normal[1], marker_normal[2]) diff --git a/UI/bug_report_form.gd b/UI/bug_report_form.gd index 210682c..0e3a09e 100644 --- a/UI/bug_report_form.gd +++ b/UI/bug_report_form.gd @@ -79,7 +79,9 @@ func _on_submit_button_pressed() -> void: printerr("You must select a severity level.") error_detected = true - if error_detected: return + if error_detected: + __submit_button.disabled = false + return __get_label_ids_for_submission_data(labels_to_be_added, BugbotServerAPI.BugbotTagArray.VERSION) __get_label_ids_for_submission_data(labels_to_be_added, BugbotServerAPI.BugbotTagArray.HARDWARE) diff --git a/bugbot.gd b/bugbot.gd index 4836228..26e43c7 100644 --- a/bugbot.gd +++ b/bugbot.gd @@ -30,8 +30,6 @@ func _enter_tree() -> void: func _exit_tree() -> void: remove_control_from_container(CustomControlContainer.CONTAINER_SPATIAL_EDITOR_MENU, __bugbot_menu_button) __bugbot_menu_button.queue_free() - - # This is where we should remove any visible bug markers func __initialise_project_settings() -> void: @@ -86,13 +84,13 @@ func __initialise_project_settings() -> void: #region Bug Markers __add_project_setting("bugbot/markers/unresolved/show_unresolved_bugs", TYPE_BOOL, true) - __add_project_setting("bugbot/markers/unresolved/tint", TYPE_COLOR, Color(0.1,0.0,0.0)) + __add_project_setting("bugbot/markers/unresolved/tint", TYPE_COLOR, BugMarker.UNRESOLVED_TINT) __add_project_setting("bugbot/markers/in_progress/show_in_progress_bugs", TYPE_BOOL, true) - __add_project_setting("bugbot/markers/in_progress/tint", TYPE_COLOR, Color(0.5,0.5,0.0)) + __add_project_setting("bugbot/markers/in_progress/tint", TYPE_COLOR, BugMarker.IN_PROGRESS_TINT) __add_project_setting("bugbot/markers/resolved/show_resolved_bugs", TYPE_BOOL, false) - __add_project_setting("bugbot/markers/resolved/tint", TYPE_COLOR, Color(0.0,1.0,0.0)) + __add_project_setting("bugbot/markers/resolved/tint", TYPE_COLOR, BugMarker.RESOLVED_TINT) #endregion #region Batch Loading