Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
202 changes: 101 additions & 101 deletions addons/gdUnit4/GdUnitRunner.cfg

Large diffs are not rendered by default.

7 changes: 6 additions & 1 deletion addons/godot_projectile_engine/GodotProjectileEngine.gd
Original file line number Diff line number Diff line change
Expand Up @@ -203,14 +203,19 @@ func clear_all_projectiles() -> void:

## Clear all ProjectileInstances
func clear_projectile_instances() -> void:
print(projectile_updater_2d_nodes)
for _projectile_udpater_node : ProjectileUpdater2D in projectile_updater_2d_nodes.values():
_projectile_udpater_node.clear_projectiles()
if is_instance_valid(_projectile_udpater_node):
_projectile_udpater_node.clear_projectiles()
pass


## Clear all ProjectileNode2Ds
func clear_projectile_nodes() -> void:
print(projectile_node_manager_2d_nodes)
for _projectile_node_manager : ProjectileNodeManager2D in projectile_node_manager_2d_nodes.values():
if is_instance_valid(_projectile_node_manager):
_projectile_node_manager.clear_projectiles()
_projectile_node_manager.clear_projectiles()
pass

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -60,6 +60,7 @@ func setup_projectile_spawner() -> void:
return
if typeof(projectile_template_2d) != TYPE_OBJECT:
return

match projectile_template_2d.get_script():
ProjectileTemplateSimple2D:
if !is_instance_valid(
Expand Down Expand Up @@ -101,6 +102,7 @@ func setup_projectile_spawner() -> void:
)
):
create_projectile_node_manager_2d()

projectile_node_manager_2d = ProjectileEngine.projectile_node_manager_2d_nodes.get(
projectile_template_2d
)
Expand Down Expand Up @@ -231,9 +233,13 @@ func create_projectile_node_manager_2d() -> void:

ProjectileEngine.projectile_environment.add_child(_projectile_node_manager, true)
_projectile_node_manager.owner = ProjectileEngine.projectile_environment
ProjectileEngine.projectile_node_manager_2d_nodes.get_or_add(
projectile_template_2d, _projectile_node_manager
)

if ProjectileEngine.projectile_node_manager_2d_nodes.has(projectile_template_2d):
ProjectileEngine.projectile_node_manager_2d_nodes.set(projectile_template_2d, _projectile_node_manager)
else:
ProjectileEngine.projectile_node_manager_2d_nodes.get_or_add(
projectile_template_2d, _projectile_node_manager
)
_projectile_node_manager.setup_projectile_manager()
pass

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,33 +14,10 @@

[sub_resource type="Resource" id="Resource_m831r"]
script = ExtResource("7_0r6ln")
active = true
metadata/_custom_type_script = "uid://bpntc8lt06yr8"

[resource]
script = ExtResource("9_cv5kg")
damage = 1.0
speed = 100.0
projectile_pooling_amount = 500
texture = ExtResource("11_ylhvc")
scale = Vector2(1, 1)
texture_rotation = 0.0
skew = 0.0
texture_visible = true
texture_z_index = 0
texture_modulate = Color(1, 1, 1, 1)
collision_layer = 0
collision_mask = 0
speed_projectile_behaviors = Array[ExtResource("10_kfx4j")]([])
direction_projectile_behaviors = Array[ExtResource("3_8t5vu")]([])
rotation_projectile_behaviors = Array[ExtResource("6_43qwg")]([SubResource("Resource_m831r")])
scale_projectile_behaviors = Array[ExtResource("8_4c65f")]([])
destroy_projectile_behaviors = Array[ExtResource("2_uaycm")]([])
piercing_projectile_behaviors = Array[ExtResource("5_cmhk1")]([])
bouncing_projectile_behaviors = Array[ExtResource("1_b3dxs")]([])
trigger_projectile_behaviors = Array[ExtResource("12_10nsj")]([])
speed_random = Vector3(0, 0, 0)
texture_rotation_random = Vector3(0, 0, 0)
scale_random = Vector3(0, 0, 0)
custom_data = []
metadata/_custom_type_script = "uid://d3yyxyx6shhya"
Original file line number Diff line number Diff line change
Expand Up @@ -12,29 +12,7 @@

[sub_resource type="Resource" id="Resource_nfr7l"]
script = ExtResource("3_7j3qm")
speed = 100.0
projectile_pooling_amount = 500
texture = ExtResource("4_716l7")
scale = Vector2(1, 1)
texture_rotation = 0.0
skew = 0.0
texture_visible = true
texture_z_index = 0
texture_modulate = Color(1, 1, 1, 1)
collision_layer = 0
collision_mask = 0
texture_rotate_direction = false
destroy_on_body_collide = true
destroy_on_area_collide = true
life_time_second_max = 10.0
life_distance_max = 1000.0
speed_random = Vector3(0, 0, 0)
texture_rotation_random = Vector3(0, 0, 0)
texture_rotation_speed_random = Vector3(0, 0, 0)
scale_random = Vector3(0, 0, 0)
life_time_second_random = Vector3(0, 0, 0)
life_distance_random = Vector3(0, 0, 0)
custom_data = []
metadata/_custom_type_script = "uid://dqlixqba72p5f"

[node name="Example1FirstProjectile2" type="Node2D"]
Expand Down
5 changes: 5 additions & 0 deletions project.godot
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,11 @@ enabled=PackedStringArray("res://addons/godot_projectile_engine/plugin.cfg", "re
settings/test/test_lookup_folder="tests"
ui/inspector/tree_view_mode=1
ui/toolbar/run_overall=true
report/godot/push_error=true
hooks/session_hooks=Dictionary[String, bool]({
"res://addons/gdUnit4/src/core/hooks/GdUnitHtmlReporterTestSessionHook.gd": false,
"res://addons/gdUnit4/src/core/hooks/GdUnitXMLReporterTestSessionHook.gd": false
})

[global_group]

Expand Down
62 changes: 37 additions & 25 deletions tests/pattern_composer/test_gdunit_pattern_composer.gd
Original file line number Diff line number Diff line change
@@ -1,58 +1,70 @@
extends GdUnitTestSuite

var runner: GdUnitSceneRunner

func test_pattern_composer_single() -> void:
var runner := scene_runner("uid://c100r43aw5b57")
runner.simulate_frames(5)
runner._scene_auto_free = false
runner = null
runner = scene_runner("uid://c100r43aw5b57")
await runner.simulate_frames(10)
runner._scene_auto_free = true
assert_object(runner).is_not_null()
pass

func test_pattern_composer_polygon() -> void:
var runner := scene_runner("uid://dlxrdpvh8mcpu")
runner.simulate_frames(5)
runner._scene_auto_free = false
runner = null
runner = scene_runner("uid://dlxrdpvh8mcpu")
await runner.simulate_frames(10)
runner._scene_auto_free = true
assert_object(runner).is_not_null()
pass

func test_pattern_composer_spread() -> void:
var runner := scene_runner("uid://dtmk56w332se2")
runner.simulate_frames(5)
runner._scene_auto_free = false
runner = null
runner = scene_runner("uid://dtmk56w332se2")
await runner.simulate_frames(10)
runner._scene_auto_free = true
assert_object(runner).is_not_null()
pass

func test_pattern_composer_stack() -> void:
var runner := scene_runner("uid://yypoytt7an8h")
runner.simulate_frames(5)
runner._scene_auto_free = false
runner = null
runner = scene_runner("uid://yypoytt7an8h")
await runner.simulate_frames(10)
runner._scene_auto_free = true
assert_object(runner).is_not_null()
pass

func test_pattern_composer_shape_2d() -> void:
var runner := scene_runner("uid://vnh02vjautdp")
runner.simulate_frames(5)
runner._scene_auto_free = false
runner = null
runner = scene_runner("uid://vnh02vjautdp")
await runner.simulate_frames(10)
runner._scene_auto_free = true
assert_object(runner).is_not_null()

pass

func test_pattern_composer_custom_shape_2d() -> void:
var runner := scene_runner("uid://s3visbj8dq43")
runner.simulate_frames(5)
runner._scene_auto_free = false
runner = null
runner = scene_runner("uid://s3visbj8dq43")
await runner.simulate_frames(10)
runner._scene_auto_free = true
assert_object(runner).is_not_null()

pass

func test_pattern_composer_loop() -> void:
var runner := scene_runner("uid://vuaj15gpwguh")
runner._scene_auto_free = false
runner.simulate_frames(5)
runner = null
runner = scene_runner("uid://vuaj15gpwguh")
runner._scene_auto_free = true
await runner.simulate_frames(10)
assert_object(runner).is_not_null()

pass

func test_pattern_composer_group() -> void:
var runner := scene_runner("uid://crdq3kd2tjy82")
runner.simulate_frames(5)
runner._scene_auto_free = false
runner = null
runner = scene_runner("uid://crdq3kd2tjy82")
await runner.simulate_frames(10)
runner._scene_auto_free = true
assert_object(runner).is_not_null()
pass
pass
17 changes: 8 additions & 9 deletions tests/pattern_composer/test_pattern_composer_custom_shape.tscn
Original file line number Diff line number Diff line change
Expand Up @@ -2,16 +2,16 @@

[ext_resource type="Script" uid="uid://dn7rm61wq3t3s" path="res://addons/godot_projectile_engine/core/projectile_environment/projectile_environment.gd" id="1_8gt1f"]
[ext_resource type="Script" uid="uid://cnqgcej10tinn" path="res://addons/godot_projectile_engine/core/projectile_spawner/projectile_spawner.gd" id="2_asdxy"]
[ext_resource type="Resource" uid="uid://cpi2kow6y6b26" path="res://tests/projectile_template/test_projectile_template_resources/test_projectile_template_simple_basic.tres" id="3_dpmww"]
[ext_resource type="Resource" uid="uid://dxwntxwh1rc2j" path="res://tests/projectile_template/test_projectile_template_resources/test_projectile_custom_basic.tres" id="4_uu3uj"]
[ext_resource type="Resource" uid="uid://cwuljq73r3hlk" path="res://tests/projectile_template/test_projectile_template_resources/test_projectile_template_node_basic.tres" id="5_e4w75"]
[ext_resource type="Resource" uid="uid://dv7tscon4nv84" path="res://addons/godot_projectile_engine/examples/assets/projectile_template/example_projectile_template_advanced_1.tres" id="6_m2jvt"]
[ext_resource type="Resource" uid="uid://dct2nl4m318uu" path="res://tests/projectile_template/test_projectile_template_resources/test_projectile_template_custom_complex.tres" id="7_paut7"]
[ext_resource type="Resource" uid="uid://bh6mjx2xbu7a8" path="res://tests/projectile_template/test_projectile_template_resources/test_projectile_template_node_complex.tres" id="8_nebvw"]
[ext_resource type="Resource" uid="uid://cpi2kow6y6b26" path="res://tests/test_resources/test_projectile_template_resources/test_projectile_template_simple_basic.tres" id="3_dpmww"]
[ext_resource type="Resource" uid="uid://dxwntxwh1rc2j" path="res://tests/test_resources/test_projectile_template_resources/test_projectile_custom_basic.tres" id="4_uu3uj"]
[ext_resource type="Resource" uid="uid://cwuljq73r3hlk" path="res://tests/test_resources/test_projectile_template_resources/test_projectile_template_node_basic.tres" id="5_e4w75"]
[ext_resource type="Resource" uid="uid://d2fbngr8ph0y4" path="res://tests/test_resources/test_projectile_template_advanced.tres" id="6_asdxy"]
[ext_resource type="Resource" uid="uid://dct2nl4m318uu" path="res://tests/test_resources/test_projectile_template_resources/test_projectile_template_custom_complex.tres" id="7_paut7"]
[ext_resource type="Resource" uid="uid://bh6mjx2xbu7a8" path="res://tests/test_resources/test_projectile_template_resources/test_projectile_template_node_complex.tres" id="8_nebvw"]
[ext_resource type="Script" uid="uid://bc73oiea731jc" path="res://addons/godot_projectile_engine/core/pattern_composer/pattern_composer.gd" id="9_iaaan"]
[ext_resource type="Script" uid="uid://cx6esy7bqcdgd" path="res://addons/godot_projectile_engine/core/pattern_composer/component/PCCCustomShape2D.gd" id="10_asdxy"]
[ext_resource type="Script" uid="uid://b8nclaklcf4uu" path="res://addons/godot_projectile_engine/core/timing_scheduler/timing_scheduler.gd" id="11_2v6jc"]
[ext_resource type="Curve2D" uid="uid://bt8dtk3k0xac0" path="res://experiments/experiment_projectile_template/square_curve_2d.tres" id="11_asdxy"]
[ext_resource type="Curve2D" uid="uid://bt8dtk3k0xac0" path="res://tests/test_resources/test_square_curve_2d.tres" id="11_asdxy"]
[ext_resource type="Script" uid="uid://sjpvs4m6jk71" path="res://addons/godot_projectile_engine/core/timing_scheduler/repeater/tsc_repeater.gd" id="12_hbuh1"]

[node name="TestPatternComposerSingle" type="Node2D"]
Expand Down Expand Up @@ -72,7 +72,7 @@ metadata/_custom_type_script = "uid://cnqgcej10tinn"
position = Vector2(-3, 0)
script = ExtResource("2_asdxy")
projectile_composer_name = "custom_shape_mix"
projectile_template_2d = ExtResource("6_m2jvt")
projectile_template_2d = ExtResource("6_asdxy")
timing_scheduler = NodePath("../TimingScheduler")
metadata/_custom_type_script = "uid://cnqgcej10tinn"

Expand Down Expand Up @@ -108,7 +108,6 @@ metadata/_custom_type_script = "uid://bc73oiea731jc"
[node name="PCCCustomShape2D" type="Node" parent="PatternComposer2D2"]
script = ExtResource("10_asdxy")
shape_path = ExtResource("11_asdxy")
point_type = 1

[node name="PatternComposer2D8" type="Node" parent="."]
script = ExtResource("9_iaaan")
Expand Down
15 changes: 7 additions & 8 deletions tests/pattern_composer/test_pattern_composer_group.tscn
Original file line number Diff line number Diff line change
Expand Up @@ -2,12 +2,12 @@

[ext_resource type="Script" uid="uid://dn7rm61wq3t3s" path="res://addons/godot_projectile_engine/core/projectile_environment/projectile_environment.gd" id="1_obcrw"]
[ext_resource type="Script" uid="uid://cnqgcej10tinn" path="res://addons/godot_projectile_engine/core/projectile_spawner/projectile_spawner.gd" id="2_57kgr"]
[ext_resource type="Resource" uid="uid://cpi2kow6y6b26" path="res://tests/projectile_template/test_projectile_template_resources/test_projectile_template_simple_basic.tres" id="3_eakl3"]
[ext_resource type="Resource" uid="uid://dxwntxwh1rc2j" path="res://tests/projectile_template/test_projectile_template_resources/test_projectile_custom_basic.tres" id="4_2n4vl"]
[ext_resource type="Resource" uid="uid://cwuljq73r3hlk" path="res://tests/projectile_template/test_projectile_template_resources/test_projectile_template_node_basic.tres" id="5_x7q7g"]
[ext_resource type="Resource" uid="uid://dv7tscon4nv84" path="res://addons/godot_projectile_engine/examples/assets/projectile_template/example_projectile_template_advanced_1.tres" id="6_6kvvi"]
[ext_resource type="Resource" uid="uid://dct2nl4m318uu" path="res://tests/projectile_template/test_projectile_template_resources/test_projectile_template_custom_complex.tres" id="7_fnys6"]
[ext_resource type="Resource" uid="uid://bh6mjx2xbu7a8" path="res://tests/projectile_template/test_projectile_template_resources/test_projectile_template_node_complex.tres" id="8_vhvrr"]
[ext_resource type="Resource" uid="uid://cpi2kow6y6b26" path="res://tests/test_resources/test_projectile_template_resources/test_projectile_template_simple_basic.tres" id="3_eakl3"]
[ext_resource type="Resource" uid="uid://dxwntxwh1rc2j" path="res://tests/test_resources/test_projectile_template_resources/test_projectile_custom_basic.tres" id="4_2n4vl"]
[ext_resource type="Resource" uid="uid://cwuljq73r3hlk" path="res://tests/test_resources/test_projectile_template_resources/test_projectile_template_node_basic.tres" id="5_x7q7g"]
[ext_resource type="Resource" uid="uid://d2fbngr8ph0y4" path="res://tests/test_resources/test_projectile_template_advanced.tres" id="6_obcrw"]
[ext_resource type="Resource" uid="uid://dct2nl4m318uu" path="res://tests/test_resources/test_projectile_template_resources/test_projectile_template_custom_complex.tres" id="7_fnys6"]
[ext_resource type="Resource" uid="uid://bh6mjx2xbu7a8" path="res://tests/test_resources/test_projectile_template_resources/test_projectile_template_node_complex.tres" id="8_vhvrr"]
[ext_resource type="Script" uid="uid://bc73oiea731jc" path="res://addons/godot_projectile_engine/core/pattern_composer/pattern_composer.gd" id="9_ewcbk"]
[ext_resource type="Script" uid="uid://1bygasnif26d" path="res://addons/godot_projectile_engine/core/pattern_composer/component/PCCGroup.gd" id="10_obcrw"]
[ext_resource type="Script" uid="uid://co24jiat0y46s" path="res://addons/godot_projectile_engine/core/pattern_composer/component/PCCSingle2D.gd" id="11_x5gny"]
Expand Down Expand Up @@ -50,7 +50,7 @@ metadata/_custom_type_script = "uid://cnqgcej10tinn"
[node name="ProjectileSpawner2D9" type="Node2D" parent="." node_paths=PackedStringArray("timing_scheduler")]
script = ExtResource("2_57kgr")
projectile_composer_name = "group_mix"
projectile_template_2d = ExtResource("6_6kvvi")
projectile_template_2d = ExtResource("6_obcrw")
timing_scheduler = NodePath("../TimingScheduler")
metadata/_custom_type_script = "uid://cnqgcej10tinn"

Expand Down Expand Up @@ -110,7 +110,6 @@ metadata/_custom_type_script = "uid://b8nclaklcf4uu"
[node name="TSCRepeater" type="Node" parent="TimingScheduler"]
script = ExtResource("16_ffbux")
duration = 0.017
repeat_count = 1
metadata/_custom_type_script = "uid://sjpvs4m6jk71"

[node name="Camera2D" type="Camera2D" parent="."]
15 changes: 7 additions & 8 deletions tests/pattern_composer/test_pattern_composer_loop.tscn
Original file line number Diff line number Diff line change
Expand Up @@ -2,12 +2,12 @@

[ext_resource type="Script" uid="uid://dn7rm61wq3t3s" path="res://addons/godot_projectile_engine/core/projectile_environment/projectile_environment.gd" id="1_uh4jd"]
[ext_resource type="Script" uid="uid://cnqgcej10tinn" path="res://addons/godot_projectile_engine/core/projectile_spawner/projectile_spawner.gd" id="2_7343e"]
[ext_resource type="Resource" uid="uid://cpi2kow6y6b26" path="res://tests/projectile_template/test_projectile_template_resources/test_projectile_template_simple_basic.tres" id="3_il24c"]
[ext_resource type="Resource" uid="uid://dxwntxwh1rc2j" path="res://tests/projectile_template/test_projectile_template_resources/test_projectile_custom_basic.tres" id="4_qfl0s"]
[ext_resource type="Resource" uid="uid://cwuljq73r3hlk" path="res://tests/projectile_template/test_projectile_template_resources/test_projectile_template_node_basic.tres" id="5_t8rpw"]
[ext_resource type="Resource" uid="uid://dv7tscon4nv84" path="res://addons/godot_projectile_engine/examples/assets/projectile_template/example_projectile_template_advanced_1.tres" id="6_2er1c"]
[ext_resource type="Resource" uid="uid://dct2nl4m318uu" path="res://tests/projectile_template/test_projectile_template_resources/test_projectile_template_custom_complex.tres" id="7_4cg3g"]
[ext_resource type="Resource" uid="uid://bh6mjx2xbu7a8" path="res://tests/projectile_template/test_projectile_template_resources/test_projectile_template_node_complex.tres" id="8_6eb16"]
[ext_resource type="Resource" uid="uid://cpi2kow6y6b26" path="res://tests/test_resources/test_projectile_template_resources/test_projectile_template_simple_basic.tres" id="3_il24c"]
[ext_resource type="Resource" uid="uid://dxwntxwh1rc2j" path="res://tests/test_resources/test_projectile_template_resources/test_projectile_custom_basic.tres" id="4_qfl0s"]
[ext_resource type="Resource" uid="uid://cwuljq73r3hlk" path="res://tests/test_resources/test_projectile_template_resources/test_projectile_template_node_basic.tres" id="5_t8rpw"]
[ext_resource type="Resource" uid="uid://d2fbngr8ph0y4" path="res://tests/test_resources/test_projectile_template_advanced.tres" id="6_qfl0s"]
[ext_resource type="Resource" uid="uid://dct2nl4m318uu" path="res://tests/test_resources/test_projectile_template_resources/test_projectile_template_custom_complex.tres" id="7_4cg3g"]
[ext_resource type="Resource" uid="uid://bh6mjx2xbu7a8" path="res://tests/test_resources/test_projectile_template_resources/test_projectile_template_node_complex.tres" id="8_6eb16"]
[ext_resource type="Script" uid="uid://bc73oiea731jc" path="res://addons/godot_projectile_engine/core/pattern_composer/pattern_composer.gd" id="9_dbwet"]
[ext_resource type="Script" uid="uid://cw3jfu53wt4vm" path="res://addons/godot_projectile_engine/core/pattern_composer/component/PCCStack2D.gd" id="10_j52gr"]
[ext_resource type="Script" uid="uid://1iejq4nn3soy" path="res://addons/godot_projectile_engine/core/pattern_composer/component/PCCLoop.gd" id="10_uh4jd"]
Expand Down Expand Up @@ -50,7 +50,7 @@ metadata/_custom_type_script = "uid://cnqgcej10tinn"
[node name="ProjectileSpawner2D9" type="Node2D" parent="." node_paths=PackedStringArray("timing_scheduler")]
script = ExtResource("2_7343e")
projectile_composer_name = "loop_mix"
projectile_template_2d = ExtResource("6_2er1c")
projectile_template_2d = ExtResource("6_qfl0s")
timing_scheduler = NodePath("../TimingScheduler")
metadata/_custom_type_script = "uid://cnqgcej10tinn"

Expand Down Expand Up @@ -114,7 +114,6 @@ metadata/_custom_type_script = "uid://b8nclaklcf4uu"
[node name="TSCRepeater" type="Node" parent="TimingScheduler"]
script = ExtResource("13_eg1ye")
duration = 0.017
repeat_count = 1
metadata/_custom_type_script = "uid://sjpvs4m6jk71"

[node name="Camera2D" type="Camera2D" parent="."]
Loading
Loading