Added a special resource to contain unique instances of BugMarker materials.

This commit is contained in:
Jamie Greunbaum
2024-05-16 18:26:09 -04:00
parent d279bef2b1
commit 8062cd3641
23 changed files with 33 additions and 25 deletions
+19 -22
View File
@@ -1,25 +1,23 @@
class_name BugMarker
extends Node3D
@export_group("Marker", "marker_")
enum BugStatus { NEUTRAL, UNRESOLVED, IN_PROGRESS, RESOLVED }
@export var marker_status : BugStatus = BugStatus.NEUTRAL : set = __set_marker_status
const NEUTRAL_COLOUR = Color.CORNFLOWER_BLUE
const UNRESOLVED_COLOUR = Color(0.1, 0.0, 0.0)
const IN_PROGRESS_COLOUR = Color(0.5, 0.5, 0.0)
const RESOLVED_COLOUR = Color(0.0, 1.0, 0.0)
@export var marker_material_neutral : BugMarkerMaterialPack
@export var marker_material_unresolved : BugMarkerMaterialPack
@export var marker_material_in_progress : BugMarkerMaterialPack
@export var marker_material_resolved : BugMarkerMaterialPack
@export_group("")
@export var enable_info : bool = true : set = set_info_enabled
@onready var __arrow : MeshInstance3D = $Arrow as MeshInstance3D
@onready var __billboard : MeshInstance3D = $Billboard as MeshInstance3D
@onready var __info_collider : Area3D = $Billboard/Info as Area3D
var __arrow_material : ShaderMaterial
var __billboard_material : ShaderMaterial
func _ready() -> void:
__arrow_material = __arrow.mesh.surface_get_material(0) as ShaderMaterial
__billboard_material = __billboard.mesh.surface_get_material(0) as ShaderMaterial
set_info_enabled(enable_info)
__set_marker_status(marker_status)
@@ -35,19 +33,18 @@ func set_info_enabled(_enable:bool):
func __set_marker_status(_status:BugStatus) -> void:
if __arrow_material and __billboard_material:
match _status:
BugStatus.NEUTRAL:
__arrow_material.set_shader_parameter("colour", NEUTRAL_COLOUR)
__billboard_material.set_shader_parameter("colour", NEUTRAL_COLOUR)
BugStatus.UNRESOLVED:
__arrow_material.set_shader_parameter("colour", UNRESOLVED_COLOUR)
__billboard_material.set_shader_parameter("colour", UNRESOLVED_COLOUR)
BugStatus.IN_PROGRESS:
__arrow_material.set_shader_parameter("colour", IN_PROGRESS_COLOUR)
__billboard_material.set_shader_parameter("colour", IN_PROGRESS_COLOUR)
BugStatus.RESOLVED:
__arrow_material.set_shader_parameter("colour", RESOLVED_COLOUR)
__billboard_material.set_shader_parameter("colour", RESOLVED_COLOUR)
match _status:
BugStatus.NEUTRAL:
__arrow.set_surface_override_material(0, marker_material_neutral.arrow)
__billboard.set_surface_override_material(0, marker_material_neutral.icon)
BugStatus.UNRESOLVED:
__arrow.set_surface_override_material(0, marker_material_unresolved.arrow)
__billboard.set_surface_override_material(0, marker_material_unresolved.icon)
BugStatus.IN_PROGRESS:
__arrow.set_surface_override_material(0, marker_material_in_progress.arrow)
__billboard.set_surface_override_material(0, marker_material_in_progress.icon)
BugStatus.RESOLVED:
__arrow.set_surface_override_material(0, marker_material_resolved.arrow)
__billboard.set_surface_override_material(0, marker_material_resolved.icon)
marker_status = _status
+9 -3
View File
@@ -1,11 +1,13 @@
[gd_scene load_steps=6 format=3 uid="uid://crr6cjploetps"]
[gd_scene load_steps=9 format=3 uid="uid://crr6cjploetps"]
[ext_resource type="Script" path="res://addons/Bugbot/Scenes/bug_marker.gd" id="1_1adfi"]
[ext_resource type="ArrayMesh" uid="uid://dtvea38mlpfla" path="res://addons/Bugbot/Meshes/arrow.res" id="1_65xos"]
[ext_resource type="Material" uid="uid://dkaq0ok73o5d4" path="res://addons/Bugbot/Materials/bug_marker_icon.material" id="3_px2dp"]
[ext_resource type="Resource" uid="uid://br7bd80u7vyid" path="res://addons/Bugbot/Materials/BugMarker/bug_marker_neutral.res" id="2_uwubq"]
[ext_resource type="Resource" uid="uid://dgsi0x8bj0twj" path="res://addons/Bugbot/Materials/BugMarker/bug_marker_unresolved.res" id="3_slhi1"]
[ext_resource type="Resource" uid="uid://qeog5ye8d64o" path="res://addons/Bugbot/Materials/BugMarker/bug_marker_in_progress.res" id="4_jrygt"]
[ext_resource type="Resource" uid="uid://bpog70fji227f" path="res://addons/Bugbot/Materials/BugMarker/bug_marker_resolved.res" id="5_yhhan"]
[sub_resource type="QuadMesh" id="QuadMesh_dd1nc"]
material = ExtResource("3_px2dp")
custom_aabb = AABB(-0.25, -0.25, -0.25, 0.5, 0.5, 0.5)
size = Vector2(0.25, 0.25)
@@ -14,6 +16,10 @@ radius = 0.125398
[node name="BugMarker" type="Node3D"]
script = ExtResource("1_1adfi")
marker_material_neutral = ExtResource("2_uwubq")
marker_material_unresolved = ExtResource("3_slhi1")
marker_material_in_progress = ExtResource("4_jrygt")
marker_material_resolved = ExtResource("5_yhhan")
[node name="Arrow" type="MeshInstance3D" parent="."]
cast_shadow = 0