public void Read(TProtocol iprot)
        {
            TField field;

            iprot.ReadStructBegin();
            while (true)
            {
                field = iprot.ReadFieldBegin();
                if (field.Type == TType.Stop)
                {
                    break;
                }
                switch (field.ID)
                {
                case 1:
                    if (field.Type == TType.I32)
                    {
                        CharType = (ECharType)iprot.ReadI32();
                    }
                    else
                    {
                        TProtocolUtil.Skip(iprot, field.Type);
                    }
                    break;

                case 10:
                    if (field.Type == TType.List)
                    {
                        {
                            LstSpeedMove = new List <CharSpeedMove>();
                            TList _list4 = iprot.ReadListBegin();
                            for (int _i5 = 0; _i5 < _list4.Count; ++_i5)
                            {
                                CharSpeedMove _elem6 = new CharSpeedMove();
                                _elem6 = new CharSpeedMove();
                                _elem6.Read(iprot);
                                LstSpeedMove.Add(_elem6);
                            }
                            iprot.ReadListEnd();
                        }
                    }
                    else
                    {
                        TProtocolUtil.Skip(iprot, field.Type);
                    }
                    break;

                default:
                    TProtocolUtil.Skip(iprot, field.Type);
                    break;
                }
                iprot.ReadFieldEnd();
            }
            iprot.ReadStructEnd();
        }
 public void Read (TProtocol iprot)
 {
   TField field;
   iprot.ReadStructBegin();
   while (true)
   {
     field = iprot.ReadFieldBegin();
     if (field.Type == TType.Stop) { 
       break;
     }
     switch (field.ID)
     {
       case 1:
         if (field.Type == TType.I32) {
           CharType = (ECharType)iprot.ReadI32();
         } else { 
           TProtocolUtil.Skip(iprot, field.Type);
         }
         break;
       case 10:
         if (field.Type == TType.List) {
           {
             LstSpeedMove = new List<CharSpeedMove>();
             TList _list4 = iprot.ReadListBegin();
             for( int _i5 = 0; _i5 < _list4.Count; ++_i5)
             {
               CharSpeedMove _elem6 = new CharSpeedMove();
               _elem6 = new CharSpeedMove();
               _elem6.Read(iprot);
               LstSpeedMove.Add(_elem6);
             }
             iprot.ReadListEnd();
           }
         } else { 
           TProtocolUtil.Skip(iprot, field.Type);
         }
         break;
       default: 
         TProtocolUtil.Skip(iprot, field.Type);
         break;
     }
     iprot.ReadFieldEnd();
   }
   iprot.ReadStructEnd();
 }
    private void DrawCharMove()
    {
        GUILayout.Space(5f);
        if (NGUIEditorTools.DrawHeader("路径节点"))
        {
            GUILayout.Space(5f);
            EditorGUILayout.BeginHorizontal();
            {
                GUILayout.Space(5f);
                EditorGUILayout.LabelField("节点数量:", GUILayout.Width(80f));
                GUILayout.Space(5f);
                m_nTargetNum = EditorGUILayout.IntField(m_nTargetNum, GUILayout.Width(50f));
                GUILayout.Space(15f);
                if (m_nTargetNum != m_nTargetLastNum)
                {
                    m_lstSpeedMoveList = new List<CharSpeedMove>();
                    m_lstLastTimePos = new List<Vector3>();
                    ClearHintPoint();
                    m_lstHintPointList = new List<GameObject>();
                    for (int i = 0; i < m_nTargetNum; i++)
                    {
                        // data
                        ThriftVector3 pos = new ThriftVector3();
                        pos.SetVector3(new Vector3(0, 0, 0));
                        CharSpeedMove point = new CharSpeedMove();
                        point.Target = pos;
                        point.Speed = 5;
                        m_lstSpeedMoveList.Add(point);
                        // state
                        m_lstLastTimePos.Add(new Vector3(0, 0, 0));
                        GameObject instance = GameObject.Instantiate(m_HintPointSource);
                        GameObject root = GameObject.Find("Canvas");
                        if (root)
                        {
                            ComponentTool.Attach(root.transform, instance.transform);
                            Text txtComp = instance.GetComponentInChildren<Text>();
                            if (txtComp)
                            {
                                txtComp.text = (i+1).ToString();
                            }
                        }
                        m_lstHintPointList.Add(instance);
                    }
                }
                EditorGUILayout.BeginVertical();
                {
                    if (m_lstSpeedMoveList != null && m_lstSpeedMoveList.Count > 0)
                    {
                        for (int i = 0; i < m_lstSpeedMoveList.Count; i++)
                        {
                            EditorGUILayout.BeginHorizontal();
                            {
                                GUILayout.Label("节点 " + (i + 1).ToString() + " : ", GUILayout.Width(80f));
                                Vector3 tmpPos = new Vector3(0, 0, 0);
                                if (m_lstSpeedMoveList[i].Target != null)
                                {
                                    tmpPos = m_lstSpeedMoveList[i].Target.GetVector3();
                                }

                                GUILayout.Label("x", GUILayout.Width(20f));
                                tmpPos.x = EditorGUILayout.FloatField(tmpPos.x);
                                GUILayout.Label("y", GUILayout.Width(20f));
                                tmpPos.y = EditorGUILayout.FloatField(tmpPos.y);
                                GUILayout.Label("z", GUILayout.Width(20f));
                                tmpPos.z = EditorGUILayout.FloatField(tmpPos.z);

                                if (m_lstLastTimePos[i] != tmpPos)
                                {
                                    m_lstSpeedMoveList[i].Target.SetVector3(tmpPos);
                                    //m_Config.LstTargets = m_lstTargetList;
                                }
                                GUILayout.Space(5f);
                                if (GUILayout.Button("调整位置", GUILayout.Width(100f)))
                                {
                                    m_nCurrentSettingPosTriggerIndex = i;
                                    ActionEditorRuntime.Instance.SetRaycastCallBack(SetTargetPos);
                                }
                                m_lstLastTimePos[i] = tmpPos;
                                GUILayout.Space(5f);
                                m_lstSpeedMoveList[i].Speed = EditorGUILayout.FloatField("速度:", (float)m_lstSpeedMoveList[i].Speed);

                            }
                            EditorGUILayout.EndHorizontal();
                        }
                    }
                }
                EditorGUILayout.EndVertical();
            }
            EditorGUILayout.EndHorizontal();
        }
        m_nTargetLastNum = m_nTargetNum;
    }