some greyboxing attempt
This commit is contained in:
32
tools/generate_collisions.gd
Normal file
32
tools/generate_collisions.gd
Normal file
@@ -0,0 +1,32 @@
|
||||
@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)
|
||||
Reference in New Issue
Block a user