@@ -72,11 +72,7 @@ func update_shake_x(amplitude: float = 0.0, frequency: float = 0.0, fade: float
72
72
73
73
shake_horizontal_started .emit (dialogic .current_state_info ['screen_shake' ]['x' ])
74
74
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 ()
80
76
81
77
if not screen_shaker :
82
78
return
@@ -88,9 +84,9 @@ func update_shake_x(amplitude: float = 0.0, frequency: float = 0.0, fade: float
88
84
var current_amplitude := screen_shaker .material .get_shader_parameter ('amplitude_x' ) as float
89
85
var current_frequency := screen_shaker .material .get_shader_parameter ('frequency_x' ) as float
90
86
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 )
92
88
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 )
94
90
await tween .finished
95
91
else :
96
92
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
109
105
var current_amplitude := screen_shaker .material .get_shader_parameter ('amplitude_x' ) as float
110
106
var current_frequency := screen_shaker .material .get_shader_parameter ('frequency_x' ) as float
111
107
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 )
113
109
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 )
115
111
await tween .finished
116
112
else :
117
113
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
132
128
133
129
shake_vertical_started .emit (dialogic .current_state_info ['screen_shake' ]['y' ])
134
130
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 ()
140
132
141
133
if not screen_shaker :
142
134
return
@@ -148,9 +140,9 @@ func update_shake_y(amplitude: float = 0.0, frequency: float = 0.0, fade: float
148
140
var current_amplitude := screen_shaker .material .get_shader_parameter ('amplitude_y' ) as float
149
141
var current_frequency := screen_shaker .material .get_shader_parameter ('frequency_y' ) as float
150
142
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 )
152
144
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 )
154
146
await tween .finished
155
147
else :
156
148
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
169
161
var current_amplitude := screen_shaker .material .get_shader_parameter ('amplitude_y' ) as float
170
162
var current_frequency := screen_shaker .material .get_shader_parameter ('frequency_y' ) as float
171
163
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 )
173
165
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 )
175
167
await tween .finished
176
168
else :
177
169
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
182
174
183
175
#endregion
184
176
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 )
187
193
188
194
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 ( )
191
197
198
+ if not screen_shaker :
199
+ return
192
200
193
- func _tween_frequency_x (value : float , screen_shaker : DialogicNode_ScreenShaker ) -> void :
194
201
screen_shaker .update_frequency_x (value )
195
202
196
203
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
+
198
210
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