void EnterOnCross()
    {
        Debug.Log("EnterOnCross");
        if (null == currentToken)
        {
            return;
        }

        if (Gameplay == GameplayType.ObstacleAvoidance)
        {
            BonusCross bc = token2bonusCross[currentToken];
            bc.bonus.SendMessage("ColorCross", bc.cross.gameObject);
            bc.bonus.SendMessage("Collect");
        }
    }
    void InitializeBonuses()
    {
        token2bonusCross = new Dictionary <Token, BonusCross>();

        for (int i = 0; i < envManager.Crosses.Count; i++)
        {
            int        rndIndex = Random.Range(0, 100000) % bonusSourceList.Count;
            Vector3    position = envManager.Crosses[i].position + Vector3.up * 1.0f;
            GameObject bonus    = GameObject.Instantiate(bonusSourceList[rndIndex], position, Quaternion.identity) as GameObject;
            bonus.transform.parent = bonusParent;

            BonusCross bc = new BonusCross();
            bc.bonus = bonus;
            bc.cross = envManager.Crosses[i];
            token2bonusCross.Add(envManager.Crosses[i].token, bc);
        }
    }