summaryrefslogtreecommitdiff
path: root/src/entities/actors/snake/body_segment/body_segment.gd
blob: eabede3041c370d45e5c05437343f57be342f8ae (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
extends Node2D

export(NodePath) var PREV_SEGMENT_NP: NodePath

onready var prev_segment: Node2D = get_node(PREV_SEGMENT_NP)
onready var prev_segment_next_pivot: Node2D = prev_segment.get_node("NextPivot")
onready var _prev_pivot: Node2D = $PrevPivot
onready var _next_pivot: Node2D = $NextPivot

var rot_speed: float = Global.SNAKE_SEGMENT_ROT_SPEED

var prev_segment_next_pivot_to_center: Vector2
var _center_to_prev_pivot: Vector2
var _angle_between_segments: float


func _process(delta: float) -> void:
	prev_segment_next_pivot_to_center = prev_segment_next_pivot.global_position - prev_segment.global_position
	_center_to_prev_pivot = _prev_pivot.global_position - global_position

	_angle_between_segments = _center_to_prev_pivot.angle_to(prev_segment_next_pivot_to_center)
	if _angle_between_segments > 0.0:
		rotate(deg2rad(-rot_speed * delta))
	else:
		rotate(deg2rad(rot_speed * delta))

	global_position = prev_segment_next_pivot.global_position - _center_to_prev_pivot