Added chat bubbles
This commit is contained in:
46
client/player/chat/ChatComponent.gd
Normal file
46
client/player/chat/ChatComponent.gd
Normal file
@ -0,0 +1,46 @@
|
||||
class_name ChatComponent
|
||||
extends Sprite3D
|
||||
|
||||
@export var duration: float
|
||||
@export var alpha_curve: Curve
|
||||
|
||||
var sub_viewport: SubViewport
|
||||
var bubble: ChatBubble
|
||||
var time := 0.0
|
||||
|
||||
func _ready():
|
||||
sub_viewport = %SubViewport
|
||||
bubble = %ChatBubble
|
||||
|
||||
assert(alpha_curve)
|
||||
assert(duration > 0)
|
||||
assert(sub_viewport)
|
||||
assert(bubble)
|
||||
|
||||
texture = sub_viewport.get_texture()
|
||||
|
||||
func show_message(message: String):
|
||||
bubble.show_message(message)
|
||||
time = 0
|
||||
set_enabled(true)
|
||||
|
||||
func _process(delta):
|
||||
time += delta
|
||||
|
||||
if time > duration:
|
||||
time = duration
|
||||
set_enabled(false)
|
||||
|
||||
modulate.a = alpha_curve.sample(time / duration)
|
||||
|
||||
func set_enabled(enabled: bool):
|
||||
visible = enabled
|
||||
set_process(enabled)
|
||||
|
||||
match enabled:
|
||||
true:
|
||||
sub_viewport.render_target_clear_mode = SubViewport.CLEAR_MODE_ALWAYS
|
||||
sub_viewport.render_target_update_mode = SubViewport.UPDATE_WHEN_VISIBLE
|
||||
false:
|
||||
sub_viewport.render_target_clear_mode = SubViewport.CLEAR_MODE_NEVER
|
||||
sub_viewport.render_target_update_mode = SubViewport.UPDATE_DISABLED
|
Reference in New Issue
Block a user