diff options
Diffstat (limited to 'client')
-rw-r--r-- | client/player/controllable_player.gd | 2 | ||||
-rw-r--r-- | client/player/interact_marker.gdshader | 7 | ||||
-rw-r--r-- | client/player/marker.gd | 5 | ||||
-rw-r--r-- | client/player/marker.tscn | 1 |
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") |