public virtual void FromNodeToGame(GameNodeBase gn)
        {
            if (gameNode != null)
            {
                Debug.LogError("Exit previous Game Node");
                FromGameToNode();
            }

            if (loopLockEnt.Unlocked)
            {
                using (loopLockEnt.Lock())
                {
                    //Debug.Log("From node to game");

                    if (CurrentNode != null)
                    {
                        if (CurrentNode != null)
                        {
                            preGameNode = CurrentNode;
                        }
                        else
                        {
                            Debug.LogError("Current Node {0}: {1} is not a Node".F(CurrentNode.GetNameForInspector(),
                                                                                   CurrentNode.GetType().ToPegiStringType()));
                            preGameNode = gn.parentNode;
                        }
                    }
                    else
                    {
                        preGameNode = gn.parentNode;
                    }

                    Shortcuts.CurrentNode = null;

                    HideAllBackgrounds();

                    gn.Enter();

                    gameNode = gn;
                }
            }
        }
        public virtual void FromGameToNode(bool failed = false)
        {
            if (loopLockExit.Unlocked)
            {
                using (loopLockExit.Lock())
                {
                    if (gameNode != null)
                    {
                        if (failed)
                        {
                            gameNode.FailExit();
                        }
                        else
                        {
                            gameNode.Exit();
                        }
                    }

                    gameNode = null;

                    if (failed)
                    {
                        Shortcuts.users.current.ReturnToBookMark();
                    }
                    else
                    {
                        if (preGameNode != null)
                        {
                            Shortcuts.CurrentNode = preGameNode;
                        }
                        else
                        {
                            Debug.LogError("Pre Game Node was null");
                        }
                    }
                }
            }
        }
 public bool IsCurrentGameNode(GameNodeBase gb) => (gameNode != null && gameNode == gb);