2020-03-18 16:20:55 +01:00
|
|
|
extends Node2D
|
|
|
|
|
2020-09-22 20:25:45 +02:00
|
|
|
var source: String
|
|
|
|
var target: String
|
|
|
|
|
2020-09-21 20:28:43 +02:00
|
|
|
var repository: Control
|
2020-03-18 16:20:55 +01:00
|
|
|
|
|
|
|
func _ready():
|
2020-08-24 16:48:30 +02:00
|
|
|
pass
|
2020-03-18 16:20:55 +01:00
|
|
|
|
2020-09-08 20:26:14 +02:00
|
|
|
func _process(_delta):
|
2020-09-22 20:25:45 +02:00
|
|
|
position = Vector2(0,0)
|
|
|
|
|
2020-10-13 13:06:22 +02:00
|
|
|
if not (repository and repository.objects.has(source)):
|
|
|
|
return
|
|
|
|
|
2020-10-27 19:44:17 +01:00
|
|
|
if repository.objects[source].type == "head":
|
|
|
|
hide()
|
|
|
|
set_process(false)
|
|
|
|
|
2020-09-22 20:25:45 +02:00
|
|
|
var start = repository.objects[source].position
|
2020-09-24 10:31:41 +02:00
|
|
|
var end = start + Vector2(0, 60)
|
2020-09-22 20:25:45 +02:00
|
|
|
|
2020-09-14 16:03:01 +02:00
|
|
|
if repository and repository.objects.has(target) and repository.objects[target].visible:
|
2020-09-01 19:32:33 +02:00
|
|
|
var t = repository.objects[target]
|
2020-09-22 20:25:45 +02:00
|
|
|
end = t.position
|
2020-09-14 15:35:30 +02:00
|
|
|
$Target.hide()
|
2020-10-26 19:27:53 +01:00
|
|
|
$Line.show()
|
|
|
|
$Tip.show()
|
2020-09-14 15:35:30 +02:00
|
|
|
else:
|
|
|
|
$Target.text = target
|
2020-09-14 16:03:01 +02:00
|
|
|
if $Target.text.substr(0, 5) != "refs/":
|
2020-10-26 18:56:35 +01:00
|
|
|
$Target.text = ""
|
2020-09-14 15:35:30 +02:00
|
|
|
$Target.show()
|
2020-10-23 16:52:03 +02:00
|
|
|
$Line.hide()
|
|
|
|
$Tip.hide()
|
2020-09-22 20:25:45 +02:00
|
|
|
|
|
|
|
$Line.points[1] = end - repository.objects[source].position
|
2020-09-24 10:25:38 +02:00
|
|
|
# Move the tip away from the object a bit.
|
|
|
|
$Line.points[1] -= $Line.points[1].normalized()*30
|
|
|
|
$Tip.position = $Line.points[1]
|
2020-09-14 14:54:30 +02:00
|
|
|
$Tip.rotation = PI+$Line.points[0].angle_to($Line.points[1])
|