Bug markers can now be loaded and unloaded during gameplay using static functions in the Bugbot class.

This commit is contained in:
Jamie Greunbaum 2024-05-27 02:01:39 -04:00
parent a31a2f63af
commit b75c1f002f
5 changed files with 48 additions and 19 deletions

View File

@ -13,6 +13,10 @@ enum BugStatus { NEUTRAL, UNRESOLVED, IN_PROGRESS, RESOLVED }
@export_group("") @export_group("")
@export var enable_info : bool = true : set = set_info_enabled @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 bug_data : BugbotBugData
var __arrow : MeshInstance3D var __arrow : MeshInstance3D

View File

@ -67,7 +67,9 @@ extends CharacterBody3D
#endregion #endregion
#region Private Properties #region Private Properties
var __bugbot_server : BugbotServerAPI static var __bugbot_server : BugbotServerAPI
static var __bug_marker_root : Node
var __bug_report_form : BugReportForm var __bug_report_form : BugReportForm
var __movement_speed : float = 5.0 var __movement_speed : float = 5.0
@ -240,7 +242,7 @@ func _physics_process(_delta:float) -> void:
static func instantiate(tree:SceneTree) -> void: static func instantiate(tree:SceneTree) -> void:
tree.root.add_child(load("res://addons/Bugbot/Scenes/bugbot_player.tscn").instantiate() as CharacterBody3D) 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") var bug_marker_preload : PackedScene = preload("res://addons/Bugbot/Scenes/bug_marker.tscn")
Bugbot.adjust_bug_marker_colours() 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) bug_marker.set_rotation_to_normal(bugbot_data.marker_normal)
static func adjust_bug_marker_colours() -> void: static func adjust_bug_marker_colours() -> void:
var unresolved_colour : Color = ProjectSettings.get_setting("bugbot/markers/unresolved/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") 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") 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") 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) (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.arrow as ShaderMaterial).set_shader_parameter("colour", resolved_colour)
(resolved_material.icon 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: func __calculate_movement_speed() -> void:
if Input.is_action_pressed(&"bugbot_movement_speed_down") or Input.is_action_just_pressed(&"bugbot_movement_speed_down"): 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.submitted.connect(__form_submitted)
__bug_report_form.cancelled.connect(__form_cancelled) __bug_report_form.cancelled.connect(__form_cancelled)
func __form_submitted(map_name:String, bug_position:Vector3, bug_normal:Vector3) -> void: 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 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.global_position = bug_position
marker.set_rotation_to_normal(bug_normal) marker.set_rotation_to_normal(bug_normal)
marker.marker_status = BugMarker.BugStatus.UNRESOLVED marker.marker_status = BugMarker.BugStatus.UNRESOLVED

View File

@ -52,13 +52,13 @@ func __return_list_of_bugs_thread(map_name:String, callback:Callable) -> void:
return return
var bug_array : Array var bug_array : Array
var resolved_labels : Array = ProjectSettings.get_setting("bugbot/reporting/gitea/status_labels/resolved_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") 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") 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_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") 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") var show_unresolved : bool = ProjectSettings.get_setting("bugbot/markers/unresolved/show_unresolved_bugs", true)
for bug_in:Dictionary in response_data: for bug_in:Dictionary in response_data:
var bugbot_marker_string : String = bug_in["body"].split("\n")[-1] 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: if bug.map_name != map_name:
continue 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"] var marker_normal : Array = bugbot_marker_data["bug_normal"]
bug.marker_position = Vector3(marker_location[0], marker_location[1], marker_location[2]) 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]) bug.marker_normal = Vector3(marker_normal[0], marker_normal[1], marker_normal[2])

View File

@ -79,7 +79,9 @@ func _on_submit_button_pressed() -> void:
printerr("You must select a severity level.") printerr("You must select a severity level.")
error_detected = true 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.VERSION)
__get_label_ids_for_submission_data(labels_to_be_added, BugbotServerAPI.BugbotTagArray.HARDWARE) __get_label_ids_for_submission_data(labels_to_be_added, BugbotServerAPI.BugbotTagArray.HARDWARE)

View File

@ -30,8 +30,6 @@ func _enter_tree() -> void:
func _exit_tree() -> void: func _exit_tree() -> void:
remove_control_from_container(CustomControlContainer.CONTAINER_SPATIAL_EDITOR_MENU, __bugbot_menu_button) remove_control_from_container(CustomControlContainer.CONTAINER_SPATIAL_EDITOR_MENU, __bugbot_menu_button)
__bugbot_menu_button.queue_free() __bugbot_menu_button.queue_free()
# This is where we should remove any visible bug markers
func __initialise_project_settings() -> void: func __initialise_project_settings() -> void:
@ -86,13 +84,13 @@ func __initialise_project_settings() -> void:
#region Bug Markers #region Bug Markers
__add_project_setting("bugbot/markers/unresolved/show_unresolved_bugs", TYPE_BOOL, true) __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/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/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 #endregion
#region Batch Loading #region Batch Loading