It's by my partner who specialised in shading and generative art, made with Line2D and mathematically manipulate the points
'''
func _process(delta):
for i in len(points):
var away:float = i*12.0
var wave:float = sin(-time_accum*10.0+i*0.5)*pow(1.0-abs(i-3.5)/3.5,.5)*8.0
set_point_position(i,Vector2(away, wave).rotated(remap(cat.fullness, 0, 1, 0.35, -0.5)))
var current_i_position: Vector2 = get_point_position(i)
set_point_position(i, Vector2(current_i_position.x * sign(current_i_position.x) * (int(is_facing_right) - 0.5) * 2, current_i_position.y))
time_accum+=delta
if time_accum > 2*PI: time_accum -= 2*PI
'''Full project source code is in open for download