Bug markers can now be loaded and unloaded during gameplay using static functions in the Bugbot class.
This commit is contained in:
@@ -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
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user