@@ -44,6 +44,8 @@ var _test_step = 0
4444var  _test_all_angles  =  false 
4545var  _lock_controls  =  false 
4646
47+ var  _test_canceled  =  false 
48+ 
4749
4850func  _ready ():
4951	if  not  Engine .editor_hint :
@@ -225,16 +227,24 @@ func _test_all_rigid_body():
225227	_set_platform_size (64.0 , false )
226228	_set_rigidbody_angle (0.0 , false )
227229	yield (_start_test_case (OPTION_TEST_CASE_ALL_ANGLES_RIGID ), "completed" )
230+ 	if  _test_canceled :
231+ 		return 
228232
229233	_set_platform_size (64.0 , false )
230234	_set_rigidbody_angle (45.0 , false )
231235	yield (_start_test_case (OPTION_TEST_CASE_ALL_ANGLES_RIGID ), "completed" )
236+ 	if  _test_canceled :
237+ 		return 
232238
233239	_set_platform_size (32.0 , false )
234240	_set_rigidbody_angle (45.0 , false )
235241	yield (_start_test_case (OPTION_TEST_CASE_ALL_ANGLES_RIGID ), "completed" )
242+ 	if  _test_canceled :
243+ 		return 
236244
237245	yield (_start_test_case (OPTION_TEST_CASE_MOVING_PLATFORM_RIGID ), "completed" )
246+ 	if  _test_canceled :
247+ 		return 
238248
239249
240250func  _test_all_kinematic_body ():
@@ -243,16 +253,24 @@ func _test_all_kinematic_body():
243253	_set_platform_size (64.0 , false )
244254	_set_rigidbody_angle (0.0 , false )
245255	yield (_start_test_case (OPTION_TEST_CASE_ALL_ANGLES_KINEMATIC ), "completed" )
256+ 	if  _test_canceled :
257+ 		return 
246258
247259	_set_platform_size (64.0 , false )
248260	_set_rigidbody_angle (45.0 , false )
249261	yield (_start_test_case (OPTION_TEST_CASE_ALL_ANGLES_KINEMATIC ), "completed" )
262+ 	if  _test_canceled :
263+ 		return 
250264
251265	_set_platform_size (32.0 , false )
252266	_set_rigidbody_angle (45.0 , false )
253267	yield (_start_test_case (OPTION_TEST_CASE_ALL_ANGLES_KINEMATIC ), "completed" )
268+ 	if  _test_canceled :
269+ 		return 
254270
255271	yield (_start_test_case (OPTION_TEST_CASE_MOVING_PLATFORM_KINEMATIC ), "completed" )
272+ 	if  _test_canceled :
273+ 		return 
256274
257275
258276func  _test_moving_platform ():
@@ -265,9 +283,13 @@ func _test_moving_platform():
265283
266284	_set_platform_angle (90.0 , false )
267285	yield (_wait_for_test (), "completed" )
286+ 	if  _test_canceled :
287+ 		return 
268288
269289	_set_platform_angle (- 90.0 , false )
270290	yield (_wait_for_test (), "completed" )
291+ 	if  _test_canceled :
292+ 		return 
271293
272294	Log .print_log ("* Platform moving towards body..." )
273295	_set_platform_size (64.0 , false )
@@ -276,9 +298,13 @@ func _test_moving_platform():
276298
277299	_set_platform_angle (90.0 , false )
278300	yield (_wait_for_test (), "completed" )
301+ 	if  _test_canceled :
302+ 		return 
279303
280304	_set_platform_angle (- 90.0 , false )
281305	yield (_wait_for_test (), "completed" )
306+ 	if  _test_canceled :
307+ 		return 
282308
283309	_platform_speed  =  0.0 
284310	emit_signal ("all_tests_done" )
@@ -288,7 +314,12 @@ func _test_all():
288314	Log .print_log ("* TESTING ALL..." )
289315
290316	yield (_test_all_rigid_body (), "completed" )
317+ 	if  _test_canceled :
318+ 		return 
319+ 
291320	yield (_test_all_kinematic_body (), "completed" )
321+ 	if  _test_canceled :
322+ 		return 
292323
293324	Log .print_log ("* Done." )
294325
@@ -342,7 +373,9 @@ func _start_test():
342373
343374
344375func  _reset_test (cancel_test  =  true ):
345- 	$ Timer .stop ()
376+ 	_test_canceled  =  true 
377+ 	_on_timeout ()
378+ 	_test_canceled  =  false 
346379
347380	_test_step  =  0 
348381
@@ -415,13 +448,27 @@ func _should_collide():
415448
416449
417450func  _on_timeout ():
451+ 	cancel_timer ()
452+ 
453+ 	if  $ Timer .is_stopped ():
454+ 		return 
455+ 
456+ 	$ Timer .stop ()
457+ 
458+ 	if  _test_canceled :
459+ 		emit_signal ("test_done" )
460+ 		emit_signal ("all_tests_done" )
461+ 		return 
462+ 
418463	if  not  _contact_detected  and  not  _target_entered :
419464		Log .print_log ("Test TIMEOUT" )
420465		_set_result ()
421466
422- 	$ Timer .stop ()
423- 
424- 	yield (get_tree ().create_timer (0.5 ), "timeout" )
467+ 	yield (start_timer (0.5 ), "timeout" )
468+ 	if  _test_canceled :
469+ 		emit_signal ("test_done" )
470+ 		emit_signal ("all_tests_done" )
471+ 		return 
425472
426473	var  was_all_angles  =  _test_all_angles 
427474
0 commit comments