void Awake()
    {
        TunerEventMgr.Instance.addEventCallBack((int)ClientEventId.EnalbeEventDispather, OnEnableEventDispather);

        m_input_mode_map.Add(InputMode.InputMode_NoFinger, new NoFingerInputMode(this));
        m_input_mode_map.Add(InputMode.InputMode_OneFinger, new OneFingerInputMode(this));
        m_input_mode_map.Add(InputMode.InputMode_TwoFinger, new TwoFingerInputMode(this));
        m_cur_mode = m_input_mode_map[m_input_mode_type];
    }
    // Update is called once per frame
    void Update()
    {
        if (m_isEnable)
        {
            if (Application.platform == RuntimePlatform.WindowsEditor ||
                Application.platform == RuntimePlatform.OSXEditor)
            {
                if (Input.GetMouseButtonDown(0))
                {
                    m_cur_mode.leave();
                    m_input_mode_type = InputMode.InputMode_OneFinger;
                    m_cur_mode        = m_input_mode_map[m_input_mode_type];
                    m_cur_mode.enter();
                }

                if (Input.GetMouseButtonUp(0))
                {
                    m_cur_mode.leave();
                    m_input_mode_type = InputMode.InputMode_NoFinger;
                    m_cur_mode        = m_input_mode_map[m_input_mode_type];
                    m_cur_mode.enter();
                }

                m_cur_mode.update();
            }
            else
            {
                if (Input.touches.Length == 1)
                {
                    if (m_input_mode_type != InputMode.InputMode_OneFinger)
                    {
                        m_input_mode_type = InputMode.InputMode_OneFinger;
                        m_cur_mode.leave();
                        m_cur_mode = m_input_mode_map[m_input_mode_type];
                        m_cur_mode.enter();
                    }
                }
                else if (Input.touches.Length == 2)
                {
                    if (m_input_mode_type != InputMode.InputMode_TwoFinger)
                    {
                        m_input_mode_type = InputMode.InputMode_TwoFinger;
                        m_cur_mode.leave();
                        m_cur_mode = m_input_mode_map[m_input_mode_type];
                        m_cur_mode.enter();
                    }
                }
                else
                {
                    if (m_input_mode_type != InputMode.InputMode_NoFinger)
                    {
                        m_input_mode_type = InputMode.InputMode_NoFinger;
                        m_cur_mode.leave();
                        m_cur_mode = m_input_mode_map[m_input_mode_type];
                        m_cur_mode.enter();
                    }
                }

                m_cur_mode.update();
            }
        }
        else
        {
            if (m_input_mode_type != InputMode.InputMode_NoFinger)
            {
                m_input_mode_type = InputMode.InputMode_NoFinger;
                m_cur_mode.leave();
                m_cur_mode = m_input_mode_map[m_input_mode_type];
                m_cur_mode.enter();
            }
        }
    }