extends Node3D
class_name Body

const LERP_VELOCITY: float = 0.15

@export_category("Objects")
@export var _character: CharacterBody3D = null
@export var animation_player: AnimationPlayer = null
	
func animate(velocity: Vector3) -> void:
	if not _character.is_on_floor():
		if velocity.y < 0:
			animation_player.play("fall")
		else:
			animation_player.play("up")
		return

	# Используем _has_input вместо проверки длины скорости
	if _character._has_input:
		if _character.is_running():
			animation_player.play("run")
		else:
			animation_player.play("walk")
		return
	
	# Плавное переключение на idle при инерции
	if velocity.length() > 0.5:  # Небольшой порог для плавного перехода
		var current_anim = animation_player.current_animation
		if current_anim != "walk" and current_anim != "run":
			animation_player.play("walk", 0.1)  # Плавный переход с blend_time 0.1 сек
	else:
		animation_player.play("idle", 0.2)  # Плавный переход на idle
	
@rpc("any_peer", "reliable")
func sync_player_rotation(rotation_y: float) -> void:
	rotation.y = rotation_y
