41 lines
1.2 KiB
GDScript
41 lines
1.2 KiB
GDScript
@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)
|