]> Untitled Git - wolf-seeking-sheep.git/blob - addons/dialogic/Modules/Background/Transitions/class_dialogic_background_transition.gd
Squashed commit of the following:
[wolf-seeking-sheep.git] / addons / dialogic / Modules / Background / Transitions / class_dialogic_background_transition.gd
1 class_name DialogicBackgroundTransition
2 extends Node
3
4 ## Helper
5 var this_folder: String = get_script().resource_path.get_base_dir()
6
7
8 ## Set before _fade() is called, will be the root node of the previous bg scene.
9 var prev_scene: Node
10 ## Set before _fade() is called, will be the viewport texture of the previous bg scene.
11 var prev_texture: ViewportTexture
12
13 ## Set before _fade() is called, will be the root node of the upcoming bg scene.
14 var next_scene: Node
15 ## Set before _fade() is called, will be the viewport texture of the upcoming bg scene.
16 var next_texture: ViewportTexture
17
18 ## Set before _fade() is called, will be the requested time for the fade
19 var time: float
20
21 ## Set before _fade() is called, will be the background holder (TextureRect)
22 var bg_holder: DialogicNode_BackgroundHolder
23
24
25 signal transition_finished
26
27
28 ## To be overridden by transitions
29 func _fade() -> void:
30         pass
31
32
33 func set_shader(path_to_shader:String=DialogicUtil.get_module_path('Background').path_join("Transitions/default_transition_shader.gdshader")) -> ShaderMaterial:
34         if bg_holder:
35                 if path_to_shader.is_empty():
36                         bg_holder.material = null
37                         bg_holder.color = Color.TRANSPARENT
38                         return null
39                 bg_holder.material = ShaderMaterial.new()
40                 bg_holder.material.shader = load(path_to_shader)
41                 return bg_holder.material
42         return null
43
44
45 func tween_shader_progress(_progress_parameter:="progress") -> PropertyTweener:
46         if !bg_holder:
47                 return
48
49         if !bg_holder.material is ShaderMaterial:
50                 return
51
52         bg_holder.material.set_shader_parameter("progress", 0.0)
53         var tween := create_tween()
54         var tweener := tween.tween_property(bg_holder, "material:shader_parameter/progress", 1.0, time).from(0.0)
55         tween.tween_callback(emit_signal.bind('transition_finished'))
56         return tweener