private void GameOver()
    {
        m_activeShape.MoveUp();
        m_gameOver = true;

        StartCoroutine(GameOverRotine());

        PlaySound(m_soundManager.m_gameOverSound, 5f);
        PlaySound(m_soundManager.m_gameOverVocalClip, 5f);

        Debug.LogWarning(m_activeShape.name + " is over the limit height!");
    }
    public void DrawGhost(tetris_Shape originalShape, tetris_Board gameBoard)
    {
        if (!m_ghostShape)
        {
            m_ghostShape = Instantiate(originalShape, originalShape.transform.position, originalShape.transform.rotation) as tetris_Shape;
            m_ghostShape.gameObject.name = "GhostShape";

            SpriteRenderer[] allRenders = m_ghostShape.GetComponentsInChildren <SpriteRenderer>();

            foreach (SpriteRenderer r in allRenders)
            {
                r.color = m_color;
            }
        }
        else
        {
            m_ghostShape.transform.position   = originalShape.transform.position;
            m_ghostShape.transform.rotation   = originalShape.transform.rotation;
            m_ghostShape.transform.localScale = Vector3.one;
        }

        m_hitBottom = false;

        while (!m_hitBottom)
        {
            m_ghostShape.MoveDown();
            if (!gameBoard.IsValidPosition(m_ghostShape))
            {
                m_ghostShape.MoveUp();
                m_hitBottom = true;
            }
        }
    }