@@ -72,11 +72,7 @@ func update_shake_x(amplitude: float = 0.0, frequency: float = 0.0, fade: float
7272
7373 shake_horizontal_started .emit (dialogic .current_state_info ['screen_shake' ]['x' ])
7474
75- var screen_shaker : DialogicNode_ScreenShaker
76- if dialogic .has_subsystem ('Styles' ):
77- screen_shaker = dialogic .Styles .get_first_node_in_layout ('dialogic_screen_shaker' )
78- else :
79- screen_shaker = get_tree ().get_first_node_in_group ('dialogic_screen_shaker' )
75+ var screen_shaker := get_screen_shaker ()
8076
8177 if not screen_shaker :
8278 return
@@ -88,9 +84,9 @@ func update_shake_x(amplitude: float = 0.0, frequency: float = 0.0, fade: float
8884 var current_amplitude := screen_shaker .material .get_shader_parameter ('amplitude_x' ) as float
8985 var current_frequency := screen_shaker .material .get_shader_parameter ('frequency_x' ) as float
9086 var tween := get_tree ().create_tween ()
91- tween .tween_method (_tween_amplitude_x . bind ( screen_shaker . material ) , current_amplitude , amplitude , fade )
87+ tween .tween_method (_tween_amplitude_x , current_amplitude , amplitude , fade )
9288 tween .set_parallel ()
93- tween .tween_method (_tween_frequency_x . bind ( screen_shaker ) , current_frequency , frequency , fade )
89+ tween .tween_method (_tween_frequency_x , current_frequency , frequency , fade )
9490 await tween .finished
9591 else :
9692 screen_shaker .material .set_shader_parameter ('amplitude_x' , amplitude )
@@ -109,9 +105,9 @@ func update_shake_x(amplitude: float = 0.0, frequency: float = 0.0, fade: float
109105 var current_amplitude := screen_shaker .material .get_shader_parameter ('amplitude_x' ) as float
110106 var current_frequency := screen_shaker .material .get_shader_parameter ('frequency_x' ) as float
111107 var tween := get_tree ().create_tween ()
112- tween .tween_method (_tween_amplitude_x . bind ( screen_shaker . material ) , current_amplitude , 0.0 , fade )
108+ tween .tween_method (_tween_amplitude_x , current_amplitude , 0.0 , fade )
113109 tween .set_parallel ()
114- tween .tween_method (_tween_frequency_x . bind ( screen_shaker ) , current_frequency , 0.0 , fade )
110+ tween .tween_method (_tween_frequency_x , current_frequency , 0.0 , fade )
115111 await tween .finished
116112 else :
117113 screen_shaker .material .set_shader_parameter ('amplitude_x' , 0.0 )
@@ -132,11 +128,7 @@ func update_shake_y(amplitude: float = 0.0, frequency: float = 0.0, fade: float
132128
133129 shake_vertical_started .emit (dialogic .current_state_info ['screen_shake' ]['y' ])
134130
135- var screen_shaker : DialogicNode_ScreenShaker
136- if dialogic .has_subsystem ('Styles' ):
137- screen_shaker = dialogic .Styles .get_first_node_in_layout ('dialogic_screen_shaker' )
138- else :
139- screen_shaker = get_tree ().get_first_node_in_group ('dialogic_screen_shaker' )
131+ var screen_shaker := get_screen_shaker ()
140132
141133 if not screen_shaker :
142134 return
@@ -148,9 +140,9 @@ func update_shake_y(amplitude: float = 0.0, frequency: float = 0.0, fade: float
148140 var current_amplitude := screen_shaker .material .get_shader_parameter ('amplitude_y' ) as float
149141 var current_frequency := screen_shaker .material .get_shader_parameter ('frequency_y' ) as float
150142 var tween := get_tree ().create_tween ()
151- tween .tween_method (_tween_amplitude_y . bind ( screen_shaker . material ) , current_amplitude , amplitude , fade )
143+ tween .tween_method (_tween_amplitude_y , current_amplitude , amplitude , fade )
152144 tween .set_parallel ()
153- tween .tween_method (_tween_frequency_y . bind ( screen_shaker ) , current_frequency , frequency , fade )
145+ tween .tween_method (_tween_frequency_y , current_frequency , frequency , fade )
154146 await tween .finished
155147 else :
156148 screen_shaker .material .set_shader_parameter ('amplitude_y' , amplitude )
@@ -169,9 +161,9 @@ func update_shake_y(amplitude: float = 0.0, frequency: float = 0.0, fade: float
169161 var current_amplitude := screen_shaker .material .get_shader_parameter ('amplitude_y' ) as float
170162 var current_frequency := screen_shaker .material .get_shader_parameter ('frequency_y' ) as float
171163 var tween := get_tree ().create_tween ()
172- tween .tween_method (_tween_amplitude_y . bind ( screen_shaker . material ) , current_amplitude , 0.0 , fade )
164+ tween .tween_method (_tween_amplitude_y , current_amplitude , 0.0 , fade )
173165 tween .set_parallel ()
174- tween .tween_method (_tween_frequency_y . bind ( screen_shaker ) , current_frequency , 0.0 , fade )
166+ tween .tween_method (_tween_frequency_y , current_frequency , 0.0 , fade )
175167 await tween .finished
176168 else :
177169 screen_shaker .material .set_shader_parameter ('amplitude_y' , 0.0 )
@@ -182,17 +174,48 @@ func update_shake_y(amplitude: float = 0.0, frequency: float = 0.0, fade: float
182174
183175#endregion
184176
185- func _tween_amplitude_x (value : float , material : ShaderMaterial ) -> void :
186- material .set_shader_parameter ('amplitude_x' , value )
177+ func _tween_amplitude_x (value : float ) -> void :
178+ var screen_shaker := get_screen_shaker ()
179+
180+ if not screen_shaker :
181+ return
182+
183+ screen_shaker .material .set_shader_parameter ('amplitude_x' , value )
184+
185+
186+ func _tween_amplitude_y (value : float ) -> void :
187+ var screen_shaker := get_screen_shaker ()
188+
189+ if not screen_shaker :
190+ return
191+
192+ screen_shaker .material .set_shader_parameter ('amplitude_y' , value )
187193
188194
189- func _tween_amplitude_y (value : float , material : ShaderMaterial ) -> void :
190- material . set_shader_parameter ( 'amplitude_y' , value )
195+ func _tween_frequency_x (value : float ) -> void :
196+ var screen_shaker := get_screen_shaker ( )
191197
198+ if not screen_shaker :
199+ return
192200
193- func _tween_frequency_x (value : float , screen_shaker : DialogicNode_ScreenShaker ) -> void :
194201 screen_shaker .update_frequency_x (value )
195202
196203
197- func _tween_frequency_y (value : float , screen_shaker : DialogicNode_ScreenShaker ) -> void :
204+ func _tween_frequency_y (value : float ) -> void :
205+ var screen_shaker := get_screen_shaker ()
206+
207+ if not screen_shaker :
208+ return
209+
198210 screen_shaker .update_frequency_y (value )
211+
212+
213+ func get_screen_shaker () -> DialogicNode_ScreenShaker :
214+ var screen_shaker : DialogicNode_ScreenShaker = null
215+
216+ if dialogic .has_subsystem ('Styles' ):
217+ screen_shaker = dialogic .Styles .get_first_node_in_layout ('dialogic_screen_shaker' )
218+ else :
219+ screen_shaker = get_tree ().get_first_node_in_group ('dialogic_screen_shaker' )
220+
221+ return screen_shaker
0 commit comments