Files
Billiards/import_manager.gd

41 lines
1.2 KiB
GDScript3
Raw Permalink Normal View History

2026-08-07 02:50:54 -05:00
@tool class_name BilliardsImporter extends EditorScenePostImport
func _post_import(scene: Node) -> Object:
if scene.name == "balls":
scene.name = "bodies"
setup_balls_scene(scene)
return scene
func setup_balls_scene(scene: Node) -> void:
for node in scene.get_children():
if is_instance_of(node, RigidBody3D):
node.name = node.name.replace("-rigid", "")
node.set_collision_layer_value(1, true)
node.set_collision_layer_value(2, true)
node.set_collision_mask_value(1, true)
node.set_collision_mask_value(2, true)
elif is_instance_of(node, MeshInstance3D):
node.name = "mesh"
elif is_instance_of(node, CollisionShape3D):
node.name = "shape"
if node.name == "white_ball":
node.get_parent().move_child(node, 0)
node.set_collision_layer_value(1, true)
node.set_collision_layer_value(2, true)
node.set_collision_layer_value(3, true)
node.set_collision_mask_value(1, true)
node.set_collision_mask_value(2, true)
node.set_collision_mask_value(3, true)
node.axis_lock_linear_y = true
#var marker = Marker3D.new()
#marker.name = "white_ball_marker"
#node.get_parent().get_parent().add_child(marker)
#node.get_parent().get_parent().move_child(marker, 0)
setup_balls_scene(node)