aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authornokoe <nokoe@mailbox.org>2024-07-18 10:47:27 +0200
committernokoe <nokoe@mailbox.org>2024-07-18 10:47:27 +0200
commitc457871aac886b9b015f4716c8ae69c20407a104 (patch)
tree6b76c0765aec66713c19e398629b1ad10edfe094
parent7c73b9274f42e95c094717ca3c2550426b08a9f8 (diff)
downloadhurrycurry-c457871aac886b9b015f4716c8ae69c20407a104.tar
hurrycurry-c457871aac886b9b015f4716c8ae69c20407a104.tar.bz2
hurrycurry-c457871aac886b9b015f4716c8ae69c20407a104.tar.zst
interact marker indicates interaction
-rw-r--r--client/player/controllable_player.gd2
-rw-r--r--client/player/interact_marker.gdshader7
-rw-r--r--client/player/marker.gd5
-rw-r--r--client/player/marker.tscn1
4 files changed, 12 insertions, 3 deletions
diff --git a/client/player/controllable_player.gd b/client/player/controllable_player.gd
index 659a5c6b..9287a533 100644
--- a/client/player/controllable_player.gd
+++ b/client/player/controllable_player.gd
@@ -160,8 +160,10 @@ func interact():
if Input.is_action_just_pressed("interact"):
game.mp.send_tile_interact(target, true)
tile.interact()
+ marker.set_interacting(true)
elif Input.is_action_just_released("interact"):
game.mp.send_tile_interact(target, false)
+ marker.set_interacting(false)
else:
marker.visible = false
diff --git a/client/player/interact_marker.gdshader b/client/player/interact_marker.gdshader
index eee76270..3720290f 100644
--- a/client/player/interact_marker.gdshader
+++ b/client/player/interact_marker.gdshader
@@ -21,9 +21,12 @@ uniform float max_width = .1;
uniform float marker_length = .5;
uniform float pulse_speed = 4.;
uniform bool interactive = false;
+uniform bool interacting = false;
void fragment() {
- if (interactive) {
+ if (interacting) {
+ ALBEDO = vec3(0., 0., 15.);
+ } else if (interactive) {
ALBEDO = vec3(15., 0., 0.);
} else {
ALBEDO = vec3(.1, .1, .1);
@@ -31,7 +34,7 @@ void fragment() {
vec2 uv = abs(2. * UV.xy - 1.);
float m_length = marker_length / max_width;
float anim;
- if (interactive) {
+ if (interactive || interacting) {
anim = sin(TIME * pulse_speed) * .5 + 1.;
} else {
anim = .5;
diff --git a/client/player/marker.gd b/client/player/marker.gd
index 7161c78e..07f6bfe8 100644
--- a/client/player/marker.gd
+++ b/client/player/marker.gd
@@ -18,7 +18,10 @@ class_name Marker
extends Node3D
@onready var _cube: MeshInstance3D = $Cube
+@onready var mat: ShaderMaterial = _cube.get_active_material(0)
func set_interactive(val: bool):
- var mat: ShaderMaterial = _cube.get_active_material(0)
mat.set_shader_parameter("interactive", val)
+
+func set_interacting(val: bool):
+ mat.set_shader_parameter("interacting", val)
diff --git a/client/player/marker.tscn b/client/player/marker.tscn
index 9a68e1c1..0d5efedb 100644
--- a/client/player/marker.tscn
+++ b/client/player/marker.tscn
@@ -42,6 +42,7 @@ shader_parameter/max_width = 0.1
shader_parameter/marker_length = 0.5
shader_parameter/pulse_speed = 4.0
shader_parameter/interactive = false
+shader_parameter/interacting = false
[node name="Marker" type="Node3D"]
script = ExtResource("1_3njdu")