//----------------------------------Unity Messages----------------------------------
        void OnTriggerEnter(Collider other)
        {
            if (other.CompareTag("Ingredient") && other.GetType() == typeof(MeshCollider))
            {
                IngredientController addedIngredient = other.GetComponent <IngredientController>();
                _ingredientAddedSignal.IngredientController = addedIngredient;
                _signalBus.Fire(_ingredientAddedSignal);
                IngredientController desirableIngredient = _remainingIngredients.FirstOrDefault(i => i.name == addedIngredient.name.RemoveCloneSuffix());

                if (desirableIngredient == null)
                {
                    _signalBus.Fire <UndesirableIngredientAddedSignal>();
                    return;
                }

                _remainingIngredients.Remove(desirableIngredient);
                _addedIngredients.Add(desirableIngredient);

                if (_remainingIngredients.Count == 0)
                {
                    _recipeCompletedSignal.Recipe = _recipe;
                    _signalBus.Fire(_recipeCompletedSignal);
                }
                else
                {
                    _desirableIngredientAddedSignal.IngredientController = addedIngredient;
                    _signalBus.Fire(_desirableIngredientAddedSignal);
                }
            }
        }
        IEnumerator despawnIngredientCtrlWithDelay(IngredientController ingredientController)
        {
            yield return(new WaitForSeconds(4.0f));

            _ingredientPools[ingredientController.name.RemoveCloneSuffix()].Despawn(ingredientController);
        }