/*
     * \brief Called when this first collides with something
     */
    void OnCollisionEnter(Collision collision)
    {
        // spin through all the points of contact
        foreach (ContactPoint contact in collision.contacts)
        {
            m_physics.CallOnCollisionContactEnter(contact);

            if (contact.normal.y >= 0.2)
            {
                m_playerState = PlayerState.Standing;
                m_wallJump.Reset();
            }
        }

        m_wallJump.CallOnCollisionEnter(this, collision, ref m_playerState);

        m_physics.CanJump = true;
    }