private void DoAnimation(TransitionComponent caller, Action callWhenFinished, bool isVisible)
    {
        if (caller == null)
        {
            gameObject.SetActive(isVisible);
            callWhenFinished?.Invoke();
        }
        else
        {
            if (isVisible && !gameObject.activeSelf)
            {
                gameObject.SetActive(true);
            }

            caller.Animate(this.transform, callWhenFinished);
        }
    }
 void Start()
 {
     component = transitionGameObject.GetComponent <TransitionComponent>();
 }