void OnMouseDown()
        {
            if (!base.CanGoPlayerSlot())
            {
                return;
            }

            if (AddToPlateBeforeServed)
            {
                var plate = GameObject.Instantiate(platePrefab, transform.position, Quaternion.identity);
                plate.transform.SetParent(transform);
                if (plateOffset.magnitude > 0)
                {
                    plate.transform.localPosition = plateOffset;
                }
                plate.transform.SetAsFirstSibling();//so we know what to delete later
            }
            if (RegenerateProduct)
            {
                //Remove the plate first
                if (AddToPlateBeforeServed)
                {
                    Destroy(transform.GetChild(0).gameObject);
                }
                BasicGameEvents.RaiseInstantiatePlaceHolder(transform.parent, transform.position, gameObject);
            }
            StartCoroutine(AnimateGoingToSlot());
        }
        public override IEnumerator AnimateGoingToSlot()
        {
            if (RegenerateProduct)
            {
                BasicGameEvents.RaiseInstantiatePlaceHolder(transform.parent, initialPosition, gameObject);
            }
            yield return(new WaitForSeconds(cookingObject.doorAnimTime));

            yield return(base.AnimateGoingToSlot());

            gameObject.SetActive(false);
        }
        public override IEnumerator AnimateGoingToSlot()
        {
            if (RegenerateProduct)
            {
                //Remove the plate first
                if (AddToPlateBeforeServed)
                {
                    Destroy(transform.GetChild(0).gameObject);
                }
                else if (serveAsDifferentGameObject != null)
                {
                    //Remove the served as Different gameobject first
                    Destroy(transform.GetChild(0).gameObject);
                }
                BasicGameEvents.RaiseInstantiatePlaceHolder(transform.parent, initialPosition, gameObject);
            }
            yield return(base.AnimateGoingToSlot());

            gameObject.SetActive(false);
        }