summaryrefslogtreecommitdiff
path: root/godot/scenes/environment/Ladder.gd
blob: af31c3f1a41143a97223f5d3d79977443a6d1d21 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
extends Spatial

onready var top = $Top
onready var bottom = $Bottom

func _ready():
	if !OS.is_debug_build():
		$DebugVisMesh.visible = false

#point at which a player should enter the ladder given their current location
func get_nearest_point_to_route(point_global: Vector3) -> Vector3:
	var t : Vector3 = top.global_transform.origin
	var b : Vector3 = bottom.global_transform.origin
	return b + clamp(get_climb_scalar(point_global), 0.0, 1.0)*(t-b)

#ladder climb "progress"
func get_climb_scalar(point_global: Vector3) -> float:
	var t : Vector3 = top.global_transform.origin
	var b : Vector3 = bottom.global_transform.origin
	#(T−B)⋅(P-B) / (T−B)⋅(T−B)
	return (t-b).dot(point_global-b) / (t-b).dot(t-b)