image slide & video slide with caption, ability to exit presentation by holding esc
This commit is contained in:
parent
df75283c99
commit
6025b8c28f
10 changed files with 333 additions and 15 deletions
|
|
@ -13,6 +13,7 @@ extends Node
|
|||
#@export_group("Group")
|
||||
#@export_subgroup("Subgroup")
|
||||
@export var slides_node : Control
|
||||
@export var exit_bar : ProgressBar
|
||||
|
||||
#Onready Variables
|
||||
|
||||
|
|
@ -21,6 +22,8 @@ var slides : Array[Node]
|
|||
var current_slide : int = 0
|
||||
var total_slides : int
|
||||
|
||||
var exit_clock : float = 0
|
||||
|
||||
#endregion
|
||||
|
||||
#region Godot methods
|
||||
|
|
@ -28,8 +31,8 @@ func _ready():
|
|||
slides = slides_node.get_children()
|
||||
total_slides = slides_node.get_child_count()
|
||||
for slide in slides:
|
||||
slide.hide()
|
||||
slides[current_slide].show()
|
||||
disable_slide(slide)
|
||||
enable_slide(slides[current_slide])
|
||||
pass
|
||||
|
||||
func _process(delta):
|
||||
|
|
@ -39,6 +42,18 @@ func _process(delta):
|
|||
elif(Input.is_action_just_pressed("previous")):
|
||||
if current_slide > 0:
|
||||
show_previous_slide()
|
||||
|
||||
if Input.is_action_pressed("exit"):
|
||||
exit_clock += delta
|
||||
if exit_clock > 2:
|
||||
get_tree().quit()
|
||||
else:
|
||||
exit_clock -= delta*3.5
|
||||
exit_clock = clamp(exit_clock, 0, 2)
|
||||
|
||||
exit_bar.visible = exit_clock > 0
|
||||
exit_bar.value = exit_clock/2
|
||||
|
||||
#endregion
|
||||
|
||||
#region Signal methods
|
||||
|
|
@ -48,15 +63,41 @@ func _process(delta):
|
|||
#region Other methods (please try to separate and organise!)
|
||||
|
||||
func show_next_slide():
|
||||
slides[current_slide].hide()
|
||||
disable_slide(slides[current_slide])
|
||||
current_slide += 1
|
||||
slides[current_slide].show()
|
||||
enable_slide(slides[current_slide])
|
||||
|
||||
|
||||
func show_previous_slide():
|
||||
slides[current_slide].hide()
|
||||
disable_slide(slides[current_slide])
|
||||
current_slide -= 1
|
||||
slides[current_slide].show()
|
||||
enable_slide(slides[current_slide])
|
||||
|
||||
func disable_slide(slide : Node):
|
||||
slide.hide()
|
||||
reset_videos(slide)
|
||||
slide.process_mode = Node.PROCESS_MODE_DISABLED
|
||||
|
||||
|
||||
|
||||
func enable_slide(slide : Node):
|
||||
slide.process_mode = Node.PROCESS_MODE_INHERIT
|
||||
slide.show()
|
||||
play_videos(slide)
|
||||
|
||||
func reset_videos(node : Node):
|
||||
for N in node.get_children():
|
||||
if N.get_child_count() > 0:
|
||||
reset_videos(N)
|
||||
if N is VideoStreamPlayer:
|
||||
N.stop()
|
||||
|
||||
func play_videos(node : Node):
|
||||
for N in node.get_children():
|
||||
if N.get_child_count() > 0:
|
||||
play_videos(N)
|
||||
if N is VideoStreamPlayer:
|
||||
N.play()
|
||||
|
||||
|
||||
#endregion
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue