using System; using UnityEngine; using UnityEngine.Events; [Serializable] public class Interaction { [SerializeField] protected bool active = true; [SerializeField] protected InteractionButton button; [SerializeField] protected GameObject goToPoint; [SerializeField] protected Vector3 rotation; [SerializeField] protected GameObject finishPoint; [SerializeField] protected UnityEvent onAction; public Vector3 Rotation => rotation; public GameObject GoToPoint => goToPoint; public GameObject FinishPoint => finishPoint; public bool Active => active; public void Action() { if (goToPoint) { InteractionManager.LocalPlayer.Movement?.MoveTo(goToPoint.transform.position, PostAction); } else { PostAction(); } } private void PostAction() { onAction?.Invoke(); } public virtual void InitializeButton(Vector3 pos) { button.Initialize(this, pos); } public void SetActive(bool active) { this.active = active; } }