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
+4
View File
@@ -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
+31 -6
View File
@@ -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