using UnityEngine; using Unheimlich.Interactions.Core; namespace Unheimlich.Gameplay.Environment { public class DoorInteractable : InteractableBase { [Header("Door Settings")] public bool IsOpen = false; [SerializeField] private float _openAngle = 90f; [SerializeField] private float _animationDuration = 0.5f; [SerializeField] private LeanTweenType _easeType = LeanTweenType.easeInOutQuad; private Quaternion _closedRotation; private Quaternion _openRotation; protected virtual void Start() { _closedRotation = transform.rotation; _openRotation = _closedRotation * Quaternion.Euler(0, _openAngle, 0); InteractionText = IsOpen ? "Close" : "Open"; } public override void Interact(GameObject interactor) { ToggleDoor(); } public void ToggleDoor() { LeanTween.cancel(gameObject); if (!IsOpen) { LeanTween.rotate(gameObject, _openRotation.eulerAngles, _animationDuration) .setEase(_easeType); IsOpen = true; InteractionText = "Close"; } else { LeanTween.rotate(gameObject, _closedRotation.eulerAngles, _animationDuration) .setEase(_easeType); IsOpen = false; InteractionText = "Open"; } } } }