Files
MovementTests/tools/generate_collisions.gd
Minimata 63ea62ff74
Some checks failed
Create tag and build when new code gets to main / BumpTag (push) Successful in 8s
Create tag and build when new code gets to main / Export (push) Failing after 3h13m16s
some greyboxing attempt
2025-09-15 17:33:48 +02:00

33 lines
1.1 KiB
GDScript

@tool
extends Node3D
@export_tool_button("Clear collisions", "Callable") var clear_col_action = clear_collisions
@export_tool_button("Generate collisions", "Callable") var generate_col_action = generate_collisions
func get_all_children_of_type(node, type) -> Array:
var nodes : Array = []
for child in node.get_children():
if is_instance_of(child, type):
nodes.append(child)
if child.get_child_count() > 0:
nodes.append_array(get_all_children_of_type(child, type))
return nodes
func clear_collisions_on_meshes(meshes: Array):
for mesh_instance: MeshInstance3D in meshes:
for child in mesh_instance.get_children():
child.queue_free()
func generate_collisions_on_meshes(meshes: Array):
for mesh_instance: MeshInstance3D in meshes:
mesh_instance.create_trimesh_collision()
func generate_collisions():
var mesh_instances = get_all_children_of_type(self, MeshInstance3D)
clear_collisions_on_meshes(mesh_instances)
generate_collisions_on_meshes(mesh_instances)
func clear_collisions():
var mesh_instances = get_all_children_of_type(self, MeshInstance3D)
clear_collisions_on_meshes(mesh_instances)