def is_point_inside_object(obj, obj_BVHtree, point):
    """ Checks whether the given point is inside the given object.

    This only works if the given object is watertight and has correct normals

    :param obj: The object
    :param obj_BVHtree: A bvh tree of the object
    :param point: The point to check
    :return: True, if the point is inside the object
    """
    # Look for closest point on object
    nearest, normal, _, _ = obj_BVHtree.find_nearest(point)
    # Compute direction
    p2 = nearest - point
    # Compute dot product between direction and normal vector
    a = p2.normalized().dot((obj.rotation_euler.to_matrix() @ normal).normalized())
    return a >= 0.0