class_name Ball extends "gear.gd"

func gear_name():
	return "Ball"
func gear_id():
	return 1
func continuous():
	return false
	
func kill_ball(ball):
	ball.queue_free()

func make_ball(player):
	var ball = RigidBody3D.new()
	var cs = CollisionShape3D.new()
	var timer = Timer.new()
	cs.shape = SphereShape3D.new()
	ball.name = "Ball"
	ball.mass = 4
	ball.position = Vector3.ZERO
	ball.global_transform = Transform3D(
		player.get_node("Pivot/Container").global_transform)

	ball.set_collision_layer_value(1, false)
	ball.set_collision_layer_value(3, true)
	ball.set_collision_mask_value(3, true)
	timer.one_shot = true
	timer.autostart = true
	timer.wait_time = 5
	timer.timeout.connect(kill_ball.bind(ball))

	var mesh = $GearMesh.duplicate()
	mesh.position = Vector3.ZERO
	ball.add_child(mesh)
	ball.add_child(cs)
	ball.add_child(timer)

	return ball

func on_use(player):
	var ball = make_ball(player)
	var impulse = player.get_node("CameraGimbal").basis.z * -64
	impulse.y = 4
	ball.apply_central_impulse(impulse)
	player.add_sibling(ball)
