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

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -0,0 +1,5 @@
class_name BugMarkerMaterialPack
extends Resource
@export var arrow : ShaderMaterial
@export var icon : ShaderMaterial

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

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

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