31 lines
879 B
GDScript
31 lines
879 B
GDScript
extends Node2D
|
|
|
|
var gas_phase: float = 0.0
|
|
|
|
|
|
func configure(_shape_seed: int) -> void:
|
|
queue_redraw()
|
|
|
|
|
|
func extractor_anchor() -> Vector2:
|
|
return Vector2(0.0, -118.0)
|
|
|
|
|
|
func _process(delta: float) -> void:
|
|
gas_phase += delta
|
|
queue_redraw()
|
|
|
|
|
|
func _draw() -> void:
|
|
var rim := PackedVector2Array()
|
|
for i in range(32):
|
|
var angle := TAU * float(i) / 32.0
|
|
rim.append(Vector2(cos(angle) * 118.0, sin(angle) * 118.0))
|
|
NeonDraw.draw_glowing_polygon(self, rim, Color(0.4, 0.78, 1.0), 0.9)
|
|
for row in [-62.0, -28.0, 8.0, 43.0, 73.0]:
|
|
var band := PackedVector2Array()
|
|
var half_width: float = sqrt(maxf(0.0, 118.0 * 118.0 - row * row))
|
|
for i in range(15):
|
|
var x := lerpf(-half_width, half_width, float(i) / 14.0)
|
|
band.append(Vector2(x, row + sin(x * 0.045 + gas_phase * 1.6 + row) * 7.0))
|
|
NeonDraw.draw_glowing_path(self, band, Color(0.85, 0.52, 1.0), 0.75, 0.65)
|