59 lines
1.5 KiB
GDScript
59 lines
1.5 KiB
GDScript
extends Node2D
|
|
|
|
var time = 0.0
|
|
|
|
export var n_lines = 5
|
|
export var x_offset_spd = 0.1
|
|
export var field_angle = 170.0
|
|
export var start_y = 0
|
|
export var growth = 0.1
|
|
export var alpha = 1.0
|
|
|
|
var end_y = ProjectSettings.get_setting("display/window/size/height")
|
|
var start_point
|
|
var start_x
|
|
var end_x
|
|
var draw_width
|
|
var x_increment
|
|
var y_dist
|
|
var x_offset = 0
|
|
|
|
|
|
func _ready():
|
|
start_point = Vector2(ProjectSettings.get_setting("display/window/size/width")/2, start_y)
|
|
y_dist = end_y - start_point.y
|
|
|
|
var half_width = y_dist/tan(deg2rad((180-field_angle)/2))
|
|
start_x = start_point.x - half_width
|
|
end_x = start_point.x + half_width
|
|
draw_width = 2*half_width
|
|
x_increment = draw_width / (n_lines + 1)
|
|
#set_physics_process(false)
|
|
|
|
func _physics_process(delta):
|
|
x_offset += x_offset_spd * delta
|
|
update()
|
|
|
|
func _draw():
|
|
var draw_x = start_x + x_offset
|
|
for i in range(n_lines+2):
|
|
draw_line(start_point, Vector2(draw_x,end_y), Color(1,1,1,alpha), 1.0, true)
|
|
draw_x += x_increment
|
|
if draw_x > end_x:
|
|
draw_x -= draw_width
|
|
if draw_x < start_x:
|
|
draw_x += draw_width
|
|
|
|
var i = 0
|
|
while true:
|
|
var draw_dist = prespective_transform(i)
|
|
if draw_dist > ProjectSettings.get_setting("display/window/size/height"):
|
|
break
|
|
draw_line(Vector2(0,draw_dist), Vector2(ProjectSettings.get_setting("display/window/size/width"),draw_dist),
|
|
Color(1,1,1,alpha), 1.0, true)
|
|
i+= 1
|
|
|
|
func prespective_transform(y):
|
|
#return A*y*y + B*y + start_point.y
|
|
return start_point.y + exp(y * growth)
|