Beispiel #1
0
 public void OpenWindow(float fTotalTime, float fTime, EActionFrameType eType, ActionFrameData data)
 {
     ClearHintPoint();
     m_Instance.SetBaseInfo(fTotalTime, fTime, eType, data);
     m_Instance.Init();
     Repaint();
 }
 protected void SetBaseInfo(float fTotalTime, float fTime, EActionFrameType eType, ActionFrameData data)
 {
     m_fTime = fTime;
     m_fTotalTime = fTotalTime;
     m_eFrameType = eType;
     m_ActionFrameData = data;
     if (data == null)
     {
         //m_ActionFrameData = new ActionFrameData();
         return;
     }
     if (data.TargetIDs != null)
     {
         m_lstTargetIDs = data.TargetIDs;
         m_nTargetObjectNum = m_lstTargetIDs.Count;
         m_nTargetObjectLastNum = m_lstTargetIDs.Count;
     }
     this.Focus();
 }
 protected void SetBaseInfo(float fTotalTime, float fTime, EActionFrameType eType, ActionFrameData data)
 {
     m_fTime           = fTime;
     m_fTotalTime      = fTotalTime;
     m_eFrameType      = eType;
     m_ActionFrameData = data;
     if (data == null)
     {
         //m_ActionFrameData = new ActionFrameData();
         return;
     }
     if (data.TargetIDs != null)
     {
         m_lstTargetIDs         = data.TargetIDs;
         m_nTargetObjectNum     = m_lstTargetIDs.Count;
         m_nTargetObjectLastNum = m_lstTargetIDs.Count;
     }
     this.Focus();
 }
    private void OnGUI()
    {
        GUILayout.Space(WINDOW_SPACE);
        EditorGUILayout.LabelField("<color=#00FFFF>方案:</color>", titleStyle);
        if (GUI.Button(new Rect(Screen.width - 20, 0, 20, 20), "X", titleStyle))
        {
            var option = EditorUtility.DisplayDialog("关闭编辑器", "未保存的数据将会丢失", "确定", "取消");
            if (option)
            {
                CloseWindow();
            }
        }
        #region 方案
        GUILayout.Space(WINDOW_SPACE);
        EditorGUILayout.BeginHorizontal();
        {
            if (GUILayout.Button("选择方案", GUILayout.Width(100f)))
            {
                ActionListWindow.Instance.OpenWindow();
            }
            if (GUILayout.Button("创建方案", GUILayout.Width(100f)))
            {
                m_bIsCreateNew = true;
            }
            if (GUILayout.Button("重置面板", GUILayout.Width(100f)))
            {
                var option = EditorUtility.DisplayDialog("警告", "重置面板将清除本地数据", "确定", "取消");
                if (option)
                {
                    ClearData();
                }
            }
            if (GUILayout.Button("取代方案", GUILayout.Width(100f)))
            {
                OnReplaceFile();
            }
            if (GUILayout.Button("同步方案", GUILayout.Width(100f)))
            {
                OnSyncFile();
            }
            if (GUILayout.Button("合并方案", GUILayout.Width(100f)))
            {
                OnMergeFile();
            }
            if (GUILayout.Button("备份方案", GUILayout.Width(100f)))
            {
                OnBackupFile();
            }
        }
        EditorGUILayout.EndHorizontal();
        #endregion

        if (m_bIsCreateNew)
        {
            GUILayout.Space(WINDOW_VETICAL_SPACE);
            EditorGUILayout.LabelField("编辑:", titleStyle);
            #region 编辑
            GUILayout.Space(WINDOW_SPACE);
            EditorGUILayout.BeginHorizontal();
            {
                if (m_bIsPaused)
                {
                    if (GUILayout.Button("播放", GUILayout.Width(100f)))
                    {
                        OnPlay();
                    }
                }
                else
                {
                    if (GUILayout.Button("暂停", GUILayout.Width(100f)))
                    {
                        OnPaused();
                    }
                }
                if (GUILayout.Button("停止", GUILayout.Width(100f)))
                {
                    OnStop();
                }
                string save = m_FileData == null ? "初始化" : "保存";
                if (GUILayout.Button(save, GUILayout.Width(100f)))
                {
                    OnSave();
                }
            }
            EditorGUILayout.EndHorizontal();
            #endregion

            GUILayout.Space(WINDOW_VETICAL_SPACE);
            EditorGUILayout.LabelField("场景:", titleStyle);
            #region 场景
            GUILayout.Space(WINDOW_SPACE);
            EditorGUILayout.BeginHorizontal();
            {
                EditorGUILayout.LabelField("地图选择:", GUILayout.Width(60f));
                m_ObjMap = (GameObject)EditorGUILayout.ObjectField(m_ObjMap, typeof(GameObject), true, GUILayout.Width(200f));
                if (null != m_ObjMap && !FileUtils.IsEndof(m_ObjMap.name, "_map"))
                {
                    m_ObjMap = null;
                }
                EditorGUILayout.LabelField("剧情名称:", GUILayout.Width(60f));
                m_CurrentActionName = EditorGUILayout.TextField(m_CurrentActionName, GUILayout.Width(100f));

                EditorGUILayout.LabelField("剧情ID:", GUILayout.Width(60f));
                m_MapIDInputBuffer = EditorGUILayout.TextField(m_MapIDInputBuffer, GUILayout.Width(50f));

                EditorGUILayout.LabelField("地形ID:", GUILayout.Width(60f));
                m_TerrainID = EditorGUILayout.IntField(m_TerrainID, GUILayout.Width(50f));

                if (GUILayout.Button("刷新地形", GUILayout.Width(100f)))
                {
                    CloseTerrain();
                    OpenTerrain();
                }

                int id = m_CurrentEditiongMapId;

                if (int.TryParse(m_MapIDInputBuffer, out id))
                {
                    m_CurrentEditiongMapId = id;
                }


                CheckMap();

                CheckCamera();
            }
            EditorGUILayout.EndHorizontal();
            #endregion

            if (m_FileData == null)
            {
                return;
            }

            GUILayout.Space(WINDOW_VETICAL_SPACE);
            EditorGUILayout.LabelField("时间轴:", titleStyle);
            #region 时间轴
            GUILayout.Space(WINDOW_SPACE);
            EditorGUILayout.BeginHorizontal();
            {
                GUILayout.Space(WINDOW_SPACE);

                m_DurationInputBuffer = EditorGUILayout.TextArea(m_DurationInputBuffer, GUILayout.Width(50f));
                float duration = m_fActionDuration;
                if (float.TryParse(m_DurationInputBuffer, out duration))
                {
                    m_fActionDuration = duration;
                }

                if (GUILayout.Button("<", GUILayout.Width(20f)))
                {
                    m_fAniTimeValue -= ANIM_PERFRAME_LENGTH;
                    if (m_fAniTimeValue < 0f)
                    {
                        m_fAniTimeValue = 0f;
                    }
                    OnChangePlayerTimeLine(m_fAniTimeValue);
                }

                if (GUILayout.Button(">", GUILayout.Width(20f)))
                {
                    m_fAniTimeValue += ANIM_PERFRAME_LENGTH;
                    if (m_fAniTimeValue > m_fActionDuration)
                    {
                        m_fAniTimeValue = m_fActionDuration;
                    }
                    OnChangePlayerTimeLine(m_fAniTimeValue);
                }
                m_fAniTimeValue = EditorGUILayout.Slider(m_fAniTimeValue, 0, m_fActionDuration, GUILayout.Width(ANIM_BAR_LENGTH));
                if (!m_bPlay && m_fAniTimeValue != m_fAniTimeLastValue)
                {
                    OnChangePlayerTimeLine(m_fAniTimeValue);
                }
            }
            EditorGUILayout.EndHorizontal();
            #endregion

            #region 时间轴节点
            if (m_KeyFrameDataDict != null)
            {
                int iIndex = 0;
                foreach (KeyValuePair <float, KeyframeData> unit in m_KeyFrameDataDict)
                {
                    float fTime = 0f;
                    float.TryParse(unit.Key.ToString("f2"), out fTime);
                    float fPercent = (float)unit.Key / m_fActionDuration;
                    if (null != unit.Value)
                    {
                        Rect    rctA   = new Rect(TIMELINE_START_X + ANIM_BAR_REAL_LENGTH * fPercent, TIMELINE_START_Y + (iIndex % 2 == 0 ? TIMELINE_OFFSET_UP : TIMELINE_OFFSET_DOWN), TIMELINE_WIDTH, TIMELINE_HIGHT);
                        bool    bPress = GUI.Button(rctA, "aaaa");
                        Texture tex    = unit.Value.isSelected == true ? m_KeyframeTexRed : m_KeyframeTexBlue;
                        GUI.DrawTexture(rctA, tex);
                        if (Event.current.type == EventType.used && rctA.Contains(Event.current.mousePosition))
                        {
                            //Debug.Log("asdsd" + iIndex.ToString());
                        }

                        if (bPress)
                        {
                            ResetKeyFrameTex();
                            OnClickTimeFrameTex(unit);
                            //Debug.Log(Event.current.mousePosition.ToString());
                            //Debug.Log(rctA.ToString());
                            if (Event.current.button == 1)
                            {
                                GenericMenu menu = new GenericMenu();
                                menu.AddItem(new GUIContent("设置当前节点时间"), false, OnChangeFrameTime, unit.Value);
                                menu.ShowAsContext();
                                Event.current.Use();
                            }
                        }
                    }
                    ++iIndex;
                }
            }
            #endregion

            GUILayout.Space(WINDOW_VETICAL_SPACE);
            //EditorGUILayout.LabelField("使用对象:", titleStyle);
            if (NGUIEditorTools.DrawHeader("使用对象"))
            {
                #region 使用对象
                GUILayout.Space(WINDOW_SPACE);
                EditorGUILayout.BeginHorizontal();
                {
                    EditorGUILayout.LabelField("对象数量: ", GUILayout.Width(60f));
                    m_nAffectedObjectNum = EditorGUILayout.IntField(m_nAffectedObjectNum, GUILayout.Width(60f));
                    if (!m_bPlay && m_nAffectedObjectNum != m_nAffectedObjectLastNum)
                    {
                        m_AffectedObjects = new GameObject[m_nAffectedObjectNum];
                    }
                    EditorGUILayout.BeginVertical();
                    {
                        for (int i = 0; i < m_AffectedObjects.Length; i++)
                        {
                            m_AffectedObjects[i] = (GameObject)EditorGUILayout.ObjectField(m_AffectedObjects[i], typeof(GameObject), true, GUILayout.Width(200f));
                        }
                    }
                    EditorGUILayout.EndVertical();
                }
                EditorGUILayout.EndHorizontal();
                #endregion
                GUILayout.Space(WINDOW_VETICAL_SPACE);
            }

            #region runtime param
            GUILayout.Space(WINDOW_VETICAL_SPACE);
            if (NGUIEditorTools.DrawHeader("运行时数据"))
            {
                EditorGUILayout.BeginHorizontal();
                {
                    if (GUILayout.Button("运行时数据编辑", GUILayout.Width(200f)))
                    {
                        AERuntimeParamEditorWindow.OpenWndow(m_RuntimeParam);
                    }
                }
                EditorGUILayout.EndHorizontal();
            }
            #endregion

            GUILayout.Space(WINDOW_VETICAL_SPACE);
            if (NGUIEditorTools.DrawHeader("节点"))
            {
                #region 创建节点
                GUILayout.Space(WINDOW_SPACE);
                EditorGUILayout.BeginHorizontal();
                {
                    m_eActionFrameType = (EActionFrameType)EditorGUILayout.Popup((int)m_eActionFrameType, m_szActionFrameName, GUILayout.Width(150f));
                    if (m_eActionFrameType != EActionFrameType.Max)
                    {
                        if (GUILayout.Button("创建节点", GUILayout.Width(100f)))
                        {
                            if (Event.current.button == 0)
                            {
                                InsertFrame(m_eActionFrameType, null);
                            }
                            else if (Event.current.button == 1 && m_lstCopyedData != null && m_lstCopyedData.Count > 0)
                            {
                                GenericMenu menu = new GenericMenu();
                                menu.AddItem(new GUIContent("粘贴节点"), false, OnPasteFrameData);
                                menu.ShowAsContext();
                                Event.current.Use();
                            }
                        }
                    }
                    else
                    {
                        if (m_lstCopyedData != null && m_lstCopyedData.Count > 0)
                        {
                            if (GUILayout.Button("粘贴节点", GUILayout.Width(100f)))
                            {
                                OnPasteFrameData();
                            }
                        }
                    }
                }
                EditorGUILayout.EndHorizontal();
                #endregion
                //EditorGUILayout.LabelField("节点列表:", titleStyle);
                #region 节点列表
                GUILayout.Space(WINDOW_SPACE);
                GUILayout.Box("", new GUILayoutOption[] { GUILayout.ExpandWidth(true), GUILayout.Height(1) }); //draw line
                m_EventScorllPos = EditorGUILayout.BeginScrollView(m_EventScorllPos);
                {
                    if (m_FileData != null && m_FileData.FrameDatalist != null)
                    {
                        List <ActionFrameData> lstTemp = m_FileData.FrameDatalist;
                        GUILayout.Box("", new GUILayoutOption[] { GUILayout.ExpandWidth(true), GUILayout.Height(1) }); //draw line
                        // whether has selected frame
                        bool  wetherSelected = false;
                        float selectedTime   = 0f;
                        foreach (KeyframeData data in m_KeyFrameDataDict.Values)
                        {
                            if (data.isSelected)
                            {
                                wetherSelected = true;
                                selectedTime   = (float)data.framedatalist[0].Time;
                            }
                        }
                        //
                        for (int i = 0; i < lstTemp.Count; i++)
                        {
                            if (null == lstTemp[i])
                            {
                                continue;
                            }
                            if (wetherSelected)
                            {
                                if (lstTemp[i].Time != selectedTime)
                                {
                                    continue;
                                }
                            }
                            else if (m_eActionFrameType != EActionFrameType.Max)
                            {
                                if ((EActionFrameType)lstTemp[i].Type != m_eActionFrameType)
                                {
                                    continue;
                                }
                            }
                            GUILayout.Space(5);
                            EditorGUILayout.BeginHorizontal();
                            {
                                GUIStyle textColor = new GUIStyle();
                                textColor.normal.textColor = GetFrameTypeColor(m_szActionFrameName[lstTemp[i].Type]);
                                if (m_lstSelectedFrameData != null && m_lstSelectedFrameData.Count > 0)
                                {
                                    if (m_lstSelectedFrameData.Contains(lstTemp[i]))
                                    {
                                        textColor.normal.textColor = Color.magenta;
                                    }
                                }
                                textColor.alignment = TextAnchor.MiddleLeft;

                                GUILayout.Space(5);
                                if (GUILayout.Button("X", GUILayout.Width(20f)))
                                {
                                    var option = EditorUtility.DisplayDialog("确定要删除节点吗?",
                                                                             "确定吗?确定吗?确定吗?确定吗?确定吗?",
                                                                             "确定", "取消");
                                    if (option)
                                    {
                                        OnStop();
                                        DelFrame(lstTemp[i]);
                                        Repaint();
                                        break;
                                    }
                                    else
                                    {
                                        OnStop();
                                    }
                                }
                                GUILayout.Space(5);
                                if (GUILayout.Button("编辑节点", GUILayout.Width(100f)))
                                {
                                    OnStop();
                                    InsertFrame((EActionFrameType)lstTemp[i].Type, lstTemp[i]);
                                    break;
                                }
                                GUILayout.Space(15);

                                if (GUILayout.Button((i + 1).ToString() + ". 时间: " + lstTemp[i].Time.ToString("f2"), textColor, GUILayout.Width(100f), GUILayout.Height(20f)))
                                {
                                    if (Event.current.button == 0)
                                    {
                                        OnClickFrame(lstTemp[i]);
                                    }
                                    else if (Event.current.button == 1)
                                    {
                                        GenericMenu menu = new GenericMenu();
                                        menu.AddItem(new GUIContent("复制节点"), false, OnCopyFrameData, lstTemp[i]);
                                        if (m_lstSelectedFrameData != null && m_lstSelectedFrameData.Count > 0)
                                        {
                                            menu.AddItem(new GUIContent("复制选择的节点"), false, OnCopySelectedAction);
                                            menu.AddItem(new GUIContent("平移选择的节点"), false, OnChangeSelectedActionTime);
                                            menu.AddItem(new GUIContent("取消选择的节点"), false, OnCancelSelectedAction);
                                        }
                                        if (m_lstCopyedData != null && m_lstCopyedData.Count > 0)
                                        {
                                            menu.AddItem(new GUIContent("粘贴节点在此时间位置"), false, OnPasteFrameData, (float)lstTemp[i].Time);
                                        }
                                        menu.ShowAsContext();
                                        Event.current.Use();
                                    }
                                    else if (Event.current.button == 2)
                                    {
                                        if (m_lstSelectedFrameData == null)
                                        {
                                            m_lstSelectedFrameData = new List <ActionFrameData>();
                                        }
                                        m_lstSelectedFrameData.Add(lstTemp[i]);
                                        Debug.Log(lstTemp[i].ToString() + " added into SelectedFrameData");
                                    }
                                }
                                GUILayout.Space(15f);

                                if (GUILayout.Button("类型: " + m_szActionFrameName[lstTemp[i].Type], textColor, GUILayout.Width(150f), GUILayout.Height(20f)))
                                {
                                    if (Event.current.button == 0)
                                    {
                                        OnClickFrame(lstTemp[i]);
                                    }
                                    else if (Event.current.button == 1)
                                    {
                                        GenericMenu menu = new GenericMenu();
                                        menu.AddItem(new GUIContent("复制节点"), false, OnCopyFrameData, lstTemp[i]);
                                        if (m_lstSelectedFrameData != null && m_lstSelectedFrameData.Count > 0)
                                        {
                                            menu.AddItem(new GUIContent("复制选择的节点"), false, OnCopySelectedAction);
                                            menu.AddItem(new GUIContent("平移选择的节点"), false, OnChangeSelectedActionTime);
                                            menu.AddItem(new GUIContent("取消选择的节点"), false, OnCancelSelectedAction);
                                        }
                                        if (m_lstCopyedData != null && m_lstCopyedData.Count > 0)
                                        {
                                            menu.AddItem(new GUIContent("粘贴节点在此时间位置"), false, OnPasteFrameData, (float)lstTemp[i].Time);
                                        }
                                        menu.ShowAsContext();
                                        Event.current.Use();
                                    }
                                    else if (Event.current.button == 2)
                                    {
                                        if (m_lstSelectedFrameData == null)
                                        {
                                            m_lstSelectedFrameData = new List <ActionFrameData>();
                                        }
                                        m_lstSelectedFrameData.Add(lstTemp[i]);
                                        Debug.Log(lstTemp[i].ToString() + " added into SelectedFrameData");
                                    }
                                }
                                GUILayout.Space(15f);

                                if (GUILayout.Button("使用对象ID: ", textColor, GUILayout.Width(70f), GUILayout.Height(20f)))
                                {
                                    if (Event.current.button == 0)
                                    {
                                        OnClickFrame(lstTemp[i]);
                                    }
                                    else if (Event.current.button == 1)
                                    {
                                        GenericMenu menu = new GenericMenu();
                                        menu.AddItem(new GUIContent("复制节点"), false, OnCopyFrameData, lstTemp[i]);
                                        if (m_lstSelectedFrameData != null && m_lstSelectedFrameData.Count > 0)
                                        {
                                            menu.AddItem(new GUIContent("复制选择的节点"), false, OnCopySelectedAction);
                                            menu.AddItem(new GUIContent("平移选择的节点"), false, OnChangeSelectedActionTime);
                                            menu.AddItem(new GUIContent("取消选择的节点"), false, OnCancelSelectedAction);
                                        }
                                        if (m_lstCopyedData != null && m_lstCopyedData.Count > 0)
                                        {
                                            menu.AddItem(new GUIContent("粘贴节点在此时间位置"), false, OnPasteFrameData, (float)lstTemp[i].Time);
                                        }
                                        menu.ShowAsContext();
                                        Event.current.Use();
                                    }
                                    else if (Event.current.button == 2)
                                    {
                                        if (m_lstSelectedFrameData == null)
                                        {
                                            m_lstSelectedFrameData = new List <ActionFrameData>();
                                        }
                                        m_lstSelectedFrameData.Add(lstTemp[i]);
                                        Debug.Log(lstTemp[i].ToString() + " added into SelectedFrameData");
                                    }
                                }
                                if (lstTemp[i].TargetIDs != null && lstTemp[i].TargetIDs.Count > 0)
                                {
                                    System.Text.StringBuilder str = new System.Text.StringBuilder();
                                    List <int> tempList           = lstTemp[i].TargetIDs;
                                    for (int index = 0; index < tempList.Count; index++)
                                    {
                                        str.Append(tempList[index].ToString());
                                        str.Append("  ");
                                    }
                                    EditorGUILayout.LabelField(str.ToString(), textColor, GUILayout.Height(20f));
                                }
                                GUILayout.FlexibleSpace();
                            }
                            EditorGUILayout.EndHorizontal();
                            GUILayout.Space(5);
                            GUILayout.Box("", new GUILayoutOption[] { GUILayout.ExpandWidth(true), GUILayout.Height(1) }); //draw line
                        }
                    }
                }
                EditorGUILayout.EndScrollView();
                #endregion
            }
        }
        m_fAniTimeLastValue      = m_fAniTimeValue;
        m_nAffectedObjectLastNum = m_nAffectedObjectNum;

        if (Event.current.type == EventType.mouseUp && EditorWindow.mouseOverWindow == this)
        {
            OnClickWindow();
        }
    }
    public void InsertFrame(EActionFrameType eType, ActionFrameData frameData)
    {
        if (null != frameData)
        {
            m_fAniTimeValue = (float)frameData.Time;
            OnChangePlayerTimeLine(m_fAniTimeValue);
        }

        switch (eType)
        {
        case EActionFrameType.ShakeCamera:
            ShakeCameraFrameEdit.Instance.OpenWindow(m_fActionDuration, m_fAniTimeValue, eType, frameData);
            break;

        case EActionFrameType.MoveCamera:
            MoveCameraFrameEdit.Instance.OpenWindow(m_fActionDuration, m_fAniTimeValue, eType, frameData);
            break;

        case EActionFrameType.PlayAudio:
            PlayAudioFrameEdit.Instance.OpenWindow(m_fActionDuration, m_fAniTimeValue, eType, frameData);
            break;

        case EActionFrameType.StopAudio:
            StopAudioFrameEdit.Instance.OpenWindow(m_fActionDuration, m_fAniTimeValue, eType, frameData);
            break;

        case EActionFrameType.AddNpc:
            AddNpcFrameEdit.Instance.OpenWindow(m_fActionDuration, m_fAniTimeValue, eType, frameData);
            break;

        case EActionFrameType.AnimChar:
            AnimCharFrameEdit.Instance.OpenWindow(m_fActionDuration, m_fAniTimeValue, eType, frameData);
            break;

        case EActionFrameType.MoveObject:
            MoveFrameEdit.Instance.OpenWindow(m_fActionDuration, m_fAniTimeValue, eType, frameData);
            break;

        case EActionFrameType.EnableObject:
            EnableObjFrameEidt.Instance.OpenWindow(m_fActionDuration, m_fAniTimeValue, eType, frameData);
            break;

        case EActionFrameType.EnableMeshRender:
            EnableMeshRenderFrameEdit.Instance.OpenWindow(m_fActionDuration, m_fAniTimeValue, eType, frameData);
            break;

        case EActionFrameType.ChangeColor:
            ChangeColorFrameEdit.Instance.OpenWindow(m_fActionDuration, m_fAniTimeValue, eType, frameData);
            break;

        case EActionFrameType.Runtime_CreateEffect:
            Runtime_CreateEffectFrameEdit.Instance.OpenWindow(m_fActionDuration, m_fAniTimeValue, eType, frameData);
            break;

        case EActionFrameType.Runtime_MoveEffect:
            Runtime_MoveEffectFrameEdit.Instance.OpenWindow(m_fActionDuration, m_fAniTimeValue, eType, frameData);
            break;

        case EActionFrameType.Runtime_AttackExec:
            Runtime_AttackExecFrameEdit.Instance.OpenWindow(m_fActionDuration, m_fAniTimeValue, eType, frameData);
            break;

        case EActionFrameType.Runtime_RemoveEffect:
            Runtime_RemoveEffectFrameEdit.Instance.OpenWindow(m_fActionDuration, m_fAniTimeValue, eType, frameData);
            break;

        case EActionFrameType.AddStateEffect:
            AddStateEffectFrameEdit.Instance.OpenWindow(m_fActionDuration, m_fAniTimeValue, eType, frameData);
            break;

        case EActionFrameType.Runtime_AddUI:
            AddUIFrameEdit.Instance.OpenWindow(m_fActionDuration, m_fAniTimeValue, eType, frameData);
            break;

        case EActionFrameType.Runtime_RemoveUI:
            RemoveUIFrameEdit.Instance.OpenWindow(m_fActionDuration, m_fAniTimeValue, eType, frameData);
            break;

        case EActionFrameType.MoveChar:
            MoveCharFrameEdit.Instance.OpenWindow(m_fActionDuration, m_fAniTimeValue, eType, frameData);
            break;

        case EActionFrameType.EntityPlayAnimation:
            EntityPlayAnimFrameEdit.Instance.OpenWindow(m_fActionDuration, m_fAniTimeValue, eType, frameData);
            break;

        case EActionFrameType.RotateChar:
            RotateCharFrameEdit.Instance.OpenWindow(m_fActionDuration, m_fAniTimeValue, eType, frameData);
            break;

        case EActionFrameType.RotateCamera:
            RotateCameraFrameEdit.Instance.OpenWindow(m_fActionDuration, m_fAniTimeValue, eType, frameData);
            break;

        case EActionFrameType.ObjTransform:
            ObjectTransformFrameEdit.Instance.OpenWindow(m_fActionDuration, m_fAniTimeValue, eType, frameData);
            break;

        case EActionFrameType.FuncMethod:
            FuncMethodFrameEdit.Instance.OpenWindow(m_fActionDuration, m_fAniTimeValue, eType, frameData);
            break;
        }
    }
 public void OpenWindow(float fTotalTime, float fTime, EActionFrameType eType, ActionFrameData data)
 {
     m_Instance.SetBaseInfo(fTotalTime, fTime, eType, data);
     m_Instance.Init();
     Repaint();
 }
    private void OnGUI()
    {
        GUILayout.Space(WINDOW_SPACE);
        EditorGUILayout.LabelField("<color=#00FFFF>方案:</color>", titleStyle);
        if (GUI.Button(new Rect(Screen.width - 20, 0, 20, 20), "X", titleStyle))
        {
            var option = EditorUtility.DisplayDialog("关闭编辑器", "未保存的数据将会丢失", "确定", "取消");
            if (option)
            {
                CloseWindow();
            }
        }
        #region 方案
        GUILayout.Space(WINDOW_SPACE);
        EditorGUILayout.BeginHorizontal();
        {
            if (GUILayout.Button("选择方案", GUILayout.Width(100f)))
            {
                ActionListWindow.Instance.OpenWindow();
            }
            if (GUILayout.Button("创建方案", GUILayout.Width(100f)))
            {
                m_bIsCreateNew = true;
            }
            if (GUILayout.Button("重置面板", GUILayout.Width(100f)))
            {
                var option = EditorUtility.DisplayDialog("警告", "重置面板将清除本地数据", "确定", "取消");
                if (option)
                {
                    ClearData();
                }
            }
            if (GUILayout.Button("取代方案", GUILayout.Width(100f)))
            {
                OnReplaceFile();
            }
            if (GUILayout.Button("同步方案", GUILayout.Width(100f)))
            {
                OnSyncFile();
            }
            if (GUILayout.Button("合并方案", GUILayout.Width(100f)))
            {
                OnMergeFile();
            }
            if (GUILayout.Button("备份方案", GUILayout.Width(100f)))
            {
                OnBackupFile();
            }
        }
        EditorGUILayout.EndHorizontal();
        #endregion

        if (m_bIsCreateNew)
        {
            GUILayout.Space(WINDOW_VETICAL_SPACE);
            EditorGUILayout.LabelField("编辑:", titleStyle);
            #region 编辑
            GUILayout.Space(WINDOW_SPACE);
            EditorGUILayout.BeginHorizontal();
            {
                if (m_bIsPaused)
                {
                    if (GUILayout.Button("播放", GUILayout.Width(100f)))
                    {
                        OnPlay();
                    }
                }
                else
                {
                    if (GUILayout.Button("暂停", GUILayout.Width(100f)))
                    {
                        OnPaused();
                    }
                }
                if (GUILayout.Button("停止", GUILayout.Width(100f)))
                {
                    OnStop();
                }
                string save = m_FileData == null ? "初始化" : "保存";
                if (GUILayout.Button(save, GUILayout.Width(100f)))
                {
                    OnSave();
                }
            }
            EditorGUILayout.EndHorizontal();
            #endregion

            GUILayout.Space(WINDOW_VETICAL_SPACE);
            EditorGUILayout.LabelField("场景:", titleStyle);
            #region 场景
            GUILayout.Space(WINDOW_SPACE);
            EditorGUILayout.BeginHorizontal();
            {
                EditorGUILayout.LabelField("地图选择:", GUILayout.Width(60f));
                m_ObjMap = (GameObject)EditorGUILayout.ObjectField(m_ObjMap, typeof(GameObject), true, GUILayout.Width(200f));
                if (null != m_ObjMap && !FileUtils.IsEndof(m_ObjMap.name, "_map"))
                {
                    m_ObjMap = null;
                }
                EditorGUILayout.LabelField("剧情名称:", GUILayout.Width(60f));
                m_CurrentActionName = EditorGUILayout.TextField(m_CurrentActionName, GUILayout.Width(100f));

                EditorGUILayout.LabelField("剧情ID:", GUILayout.Width(60f));
                m_MapIDInputBuffer = EditorGUILayout.TextField(m_MapIDInputBuffer, GUILayout.Width(50f));

                EditorGUILayout.LabelField("地形ID:", GUILayout.Width(60f));
                m_TerrainID = EditorGUILayout.IntField(m_TerrainID, GUILayout.Width(50f));

                if (GUILayout.Button("刷新地形", GUILayout.Width(100f)))
                {
                    CloseTerrain();
                    OpenTerrain();
                }

                int id = m_CurrentEditiongMapId;

                if (int.TryParse(m_MapIDInputBuffer, out id))
                {
                    m_CurrentEditiongMapId = id;
                }


                CheckMap();

                CheckCamera();
            }
            EditorGUILayout.EndHorizontal();
            #endregion

            if (m_FileData == null)
                return;

            GUILayout.Space(WINDOW_VETICAL_SPACE);
            EditorGUILayout.LabelField("时间轴:", titleStyle);
            #region 时间轴
            GUILayout.Space(WINDOW_SPACE);
            EditorGUILayout.BeginHorizontal();
            {
                GUILayout.Space(WINDOW_SPACE);

                m_DurationInputBuffer = EditorGUILayout.TextArea(m_DurationInputBuffer, GUILayout.Width(50f));
                float duration = m_fActionDuration;
                if (float.TryParse(m_DurationInputBuffer, out duration))
                {
                    m_fActionDuration = duration;
                }

                if (GUILayout.Button("<", GUILayout.Width(20f)))
                {
                    m_fAniTimeValue -= ANIM_PERFRAME_LENGTH;
                    if (m_fAniTimeValue < 0f)
                    {
                        m_fAniTimeValue = 0f;
                    }
                    OnChangePlayerTimeLine(m_fAniTimeValue);
                }

                if (GUILayout.Button(">", GUILayout.Width(20f)))
                {
                    m_fAniTimeValue += ANIM_PERFRAME_LENGTH;
                    if (m_fAniTimeValue > m_fActionDuration)
                    {
                        m_fAniTimeValue = m_fActionDuration;
                    }
                    OnChangePlayerTimeLine(m_fAniTimeValue);
                }
                m_fAniTimeValue = EditorGUILayout.Slider(m_fAniTimeValue, 0, m_fActionDuration, GUILayout.Width(ANIM_BAR_LENGTH));
                if (!m_bPlay && m_fAniTimeValue != m_fAniTimeLastValue)
                {
                    OnChangePlayerTimeLine(m_fAniTimeValue);
                }
            }
            EditorGUILayout.EndHorizontal();
            #endregion

            #region 时间轴节点
            if (m_KeyFrameDataDict != null)
            {
                int iIndex = 0;
                foreach (KeyValuePair<float, KeyframeData> unit in m_KeyFrameDataDict)
                {
                    float fTime = 0f;
                    float.TryParse(unit.Key.ToString("f2"), out fTime);
                    float fPercent = (float)unit.Key / m_fActionDuration;
                    if (null != unit.Value)
                    {
                        Rect rctA = new Rect(TIMELINE_START_X + ANIM_BAR_REAL_LENGTH * fPercent, TIMELINE_START_Y + (iIndex % 2 == 0 ? TIMELINE_OFFSET_UP : TIMELINE_OFFSET_DOWN), TIMELINE_WIDTH, TIMELINE_HIGHT);
                        bool bPress = GUI.Button(rctA, "aaaa");
                        Texture tex = unit.Value.isSelected == true ? m_KeyframeTexRed : m_KeyframeTexBlue;
                        GUI.DrawTexture(rctA, tex);
                        if (Event.current.type == EventType.used && rctA.Contains(Event.current.mousePosition))
                        {
                            //Debug.Log("asdsd" + iIndex.ToString());
                        }

                        if (bPress)
                        {
                            ResetKeyFrameTex();
                            OnClickTimeFrameTex(unit);
                            //Debug.Log(Event.current.mousePosition.ToString());
                            //Debug.Log(rctA.ToString());
                            if (Event.current.button == 1)
                            {
                                GenericMenu menu = new GenericMenu();
                                menu.AddItem(new GUIContent("设置当前节点时间"), false, OnChangeFrameTime, unit.Value);
                                menu.ShowAsContext();
                                Event.current.Use();
                            }
                        }

                    }
                    ++iIndex;
                }
            }
            #endregion

            GUILayout.Space(WINDOW_VETICAL_SPACE);
            //EditorGUILayout.LabelField("使用对象:", titleStyle);
            if (NGUIEditorTools.DrawHeader("使用对象"))
            {
                #region 使用对象
                GUILayout.Space(WINDOW_SPACE);
                EditorGUILayout.BeginHorizontal();
                {
                    EditorGUILayout.LabelField("对象数量: ", GUILayout.Width(60f));
                    m_nAffectedObjectNum = EditorGUILayout.IntField(m_nAffectedObjectNum, GUILayout.Width(60f));
                    if (!m_bPlay && m_nAffectedObjectNum != m_nAffectedObjectLastNum)
                    {
                        m_AffectedObjects = new GameObject[m_nAffectedObjectNum];
                    }
                    EditorGUILayout.BeginVertical();
                    {
                        for (int i = 0; i < m_AffectedObjects.Length; i++)
                        {
                            m_AffectedObjects[i] = (GameObject)EditorGUILayout.ObjectField(m_AffectedObjects[i], typeof(GameObject), true, GUILayout.Width(200f));
                        }
                    }
                    EditorGUILayout.EndVertical();
                }
                EditorGUILayout.EndHorizontal();
                #endregion
                GUILayout.Space(WINDOW_VETICAL_SPACE);
            }

            #region runtime param
            GUILayout.Space(WINDOW_VETICAL_SPACE);
            if (NGUIEditorTools.DrawHeader("运行时数据"))
            {
                EditorGUILayout.BeginHorizontal();
                {
                    if (GUILayout.Button("运行时数据编辑", GUILayout.Width(200f)))
                    {
                        AERuntimeParamEditorWindow.OpenWndow(m_RuntimeParam);
                    }
                }
                EditorGUILayout.EndHorizontal();
            }
            #endregion

            GUILayout.Space(WINDOW_VETICAL_SPACE);
            if (NGUIEditorTools.DrawHeader("节点"))
            {
                #region 创建节点
                GUILayout.Space(WINDOW_SPACE);
                EditorGUILayout.BeginHorizontal();
                {
                    m_eActionFrameType = (EActionFrameType)EditorGUILayout.Popup((int)m_eActionFrameType, m_szActionFrameName, GUILayout.Width(150f));
                    if (m_eActionFrameType != EActionFrameType.Max)
                    {
                        if (GUILayout.Button("创建节点", GUILayout.Width(100f)))
                        {
                            if (Event.current.button == 0)
                            {
                                InsertFrame(m_eActionFrameType, null);
                            }
                            else if (Event.current.button == 1 && m_lstCopyedData != null && m_lstCopyedData.Count > 0)
                            {
                                GenericMenu menu = new GenericMenu();
                                menu.AddItem(new GUIContent("粘贴节点"), false, OnPasteFrameData);
                                menu.ShowAsContext();
                                Event.current.Use();
                            }
                        }
                    }
                    else
                    {
                        if (m_lstCopyedData != null && m_lstCopyedData.Count > 0)
                        {
                            if (GUILayout.Button("粘贴节点", GUILayout.Width(100f)))
                            {
                                OnPasteFrameData();
                            }
                        }
                    }
                }
                EditorGUILayout.EndHorizontal();
                #endregion
                //EditorGUILayout.LabelField("节点列表:", titleStyle);
                #region 节点列表
                GUILayout.Space(WINDOW_SPACE);
                GUILayout.Box("", new GUILayoutOption[] { GUILayout.ExpandWidth(true), GUILayout.Height(1) }); //draw line
                m_EventScorllPos = EditorGUILayout.BeginScrollView(m_EventScorllPos);
                {
                    if (m_FileData != null && m_FileData.FrameDatalist != null)
                    {
                        List<ActionFrameData> lstTemp = m_FileData.FrameDatalist;
                        GUILayout.Box("", new GUILayoutOption[] { GUILayout.ExpandWidth(true), GUILayout.Height(1) }); //draw line
                        // whether has selected frame
                        bool wetherSelected = false;
                        float selectedTime = 0f;
                        foreach (KeyframeData data in m_KeyFrameDataDict.Values)
                        {
                            if (data.isSelected)
                            {
                                wetherSelected = true;
                                selectedTime = (float)data.framedatalist[0].Time;
                            }
                        }
                        //
                        for (int i = 0; i < lstTemp.Count; i++)
                        {
                            if (null == lstTemp[i])
                            {
                                continue;
                            }
                            if (wetherSelected)
                            {
                                if (lstTemp[i].Time != selectedTime)
                                {
                                    continue;
                                }
                            }
                            else if (m_eActionFrameType != EActionFrameType.Max)
                            {
                                if ((EActionFrameType)lstTemp[i].Type != m_eActionFrameType)
                                {
                                    continue;
                                }
                            }
                            GUILayout.Space(5);
                            EditorGUILayout.BeginHorizontal();
                            {
                                GUIStyle textColor = new GUIStyle();
                                textColor.normal.textColor = GetFrameTypeColor(m_szActionFrameName[lstTemp[i].Type]);
                                if (m_lstSelectedFrameData != null && m_lstSelectedFrameData.Count > 0)
                                {
                                    if (m_lstSelectedFrameData.Contains(lstTemp[i]))
                                    {
                                        textColor.normal.textColor = Color.magenta;
                                    }
                                }
                                textColor.alignment = TextAnchor.MiddleLeft;

                                GUILayout.Space(5);
                                if (GUILayout.Button("X", GUILayout.Width(20f)))
                                {
                                    var option = EditorUtility.DisplayDialog("确定要删除节点吗?",
                                                                             "确定吗?确定吗?确定吗?确定吗?确定吗?",
                                                                             "确定", "取消");
                                    if (option)
                                    {
                                        OnStop();
                                        DelFrame(lstTemp[i]);
                                        Repaint();
                                        break;
                                    }
                                    else
                                    {
                                        OnStop();
                                    }

                                }
                                GUILayout.Space(5);
                                if (GUILayout.Button("编辑节点", GUILayout.Width(100f)))
                                {
                                    OnStop();
                                    InsertFrame((EActionFrameType)lstTemp[i].Type, lstTemp[i]);
                                    break;
                                }
                                GUILayout.Space(15);

                                if (GUILayout.Button((i + 1).ToString() + ". 时间: " + lstTemp[i].Time.ToString("f2"), textColor, GUILayout.Width(100f), GUILayout.Height(20f)))
                                {
                                    if (Event.current.button == 0)
                                    {
                                        OnClickFrame(lstTemp[i]);
                                    }
                                    else if (Event.current.button == 1)
                                    {
                                        GenericMenu menu = new GenericMenu();
                                        menu.AddItem(new GUIContent("复制节点"), false, OnCopyFrameData, lstTemp[i]);
                                        if (m_lstSelectedFrameData != null && m_lstSelectedFrameData.Count > 0)
                                        {
                                            menu.AddItem(new GUIContent("复制选择的节点"), false, OnCopySelectedAction);
                                            menu.AddItem(new GUIContent("平移选择的节点"), false, OnChangeSelectedActionTime);
                                            menu.AddItem(new GUIContent("取消选择的节点"), false, OnCancelSelectedAction);
                                        }
                                        if (m_lstCopyedData != null && m_lstCopyedData.Count > 0)
                                            menu.AddItem(new GUIContent("粘贴节点在此时间位置"), false, OnPasteFrameData, (float)lstTemp[i].Time);
                                        menu.ShowAsContext();
                                        Event.current.Use();
                                    }
                                    else if (Event.current.button == 2)
                                    {
                                        if (m_lstSelectedFrameData == null)
                                            m_lstSelectedFrameData = new List<ActionFrameData>();
                                        m_lstSelectedFrameData.Add(lstTemp[i]);
                                        Debug.Log(lstTemp[i].ToString() + " added into SelectedFrameData");
                                    }
                                }
                                GUILayout.Space(15f);

                                if (GUILayout.Button("类型: " + m_szActionFrameName[lstTemp[i].Type], textColor, GUILayout.Width(150f), GUILayout.Height(20f)))
                                {
                                    if (Event.current.button == 0)
                                    {
                                        OnClickFrame(lstTemp[i]);
                                    }
                                    else if (Event.current.button == 1)
                                    {
                                        GenericMenu menu = new GenericMenu();
                                        menu.AddItem(new GUIContent("复制节点"), false, OnCopyFrameData, lstTemp[i]);
                                        if (m_lstSelectedFrameData != null && m_lstSelectedFrameData.Count > 0)
                                        {
                                            menu.AddItem(new GUIContent("复制选择的节点"), false, OnCopySelectedAction);
                                            menu.AddItem(new GUIContent("平移选择的节点"), false, OnChangeSelectedActionTime);
                                            menu.AddItem(new GUIContent("取消选择的节点"), false, OnCancelSelectedAction);
                                        }
                                        if (m_lstCopyedData != null && m_lstCopyedData.Count > 0)
                                            menu.AddItem(new GUIContent("粘贴节点在此时间位置"), false, OnPasteFrameData, (float)lstTemp[i].Time);
                                        menu.ShowAsContext();
                                        Event.current.Use();
                                    }
                                    else if (Event.current.button == 2)
                                    {
                                        if (m_lstSelectedFrameData == null)
                                            m_lstSelectedFrameData = new List<ActionFrameData>();
                                        m_lstSelectedFrameData.Add(lstTemp[i]);
                                        Debug.Log(lstTemp[i].ToString() + " added into SelectedFrameData");
                                    }
                                }
                                GUILayout.Space(15f);

                                if (GUILayout.Button("使用对象ID: ", textColor, GUILayout.Width(70f), GUILayout.Height(20f)))
                                {
                                    if (Event.current.button == 0)
                                    {
                                        OnClickFrame(lstTemp[i]);
                                    }
                                    else if (Event.current.button == 1)
                                    {
                                        GenericMenu menu = new GenericMenu();
                                        menu.AddItem(new GUIContent("复制节点"), false, OnCopyFrameData, lstTemp[i]);
                                        if (m_lstSelectedFrameData != null && m_lstSelectedFrameData.Count > 0)
                                        {
                                            menu.AddItem(new GUIContent("复制选择的节点"), false, OnCopySelectedAction);
                                            menu.AddItem(new GUIContent("平移选择的节点"), false, OnChangeSelectedActionTime);
                                            menu.AddItem(new GUIContent("取消选择的节点"), false, OnCancelSelectedAction);
                                        }
                                        if (m_lstCopyedData != null && m_lstCopyedData.Count > 0)
                                            menu.AddItem(new GUIContent("粘贴节点在此时间位置"), false, OnPasteFrameData, (float)lstTemp[i].Time);
                                        menu.ShowAsContext();
                                        Event.current.Use();
                                    }
                                    else if (Event.current.button == 2)
                                    {
                                        if (m_lstSelectedFrameData == null)
                                            m_lstSelectedFrameData = new List<ActionFrameData>();
                                        m_lstSelectedFrameData.Add(lstTemp[i]);
                                        Debug.Log(lstTemp[i].ToString() + " added into SelectedFrameData");
                                    }
                                }
                                if (lstTemp[i].TargetIDs != null && lstTemp[i].TargetIDs.Count > 0)
                                {
                                    System.Text.StringBuilder str = new System.Text.StringBuilder();
                                    List<int> tempList = lstTemp[i].TargetIDs;
                                    for (int index = 0; index < tempList.Count; index++)
                                    {
                                        str.Append(tempList[index].ToString());
                                        str.Append("  ");
                                    }
                                    EditorGUILayout.LabelField(str.ToString(), textColor, GUILayout.Height(20f));
                                }
                                GUILayout.FlexibleSpace();


                            }
                            EditorGUILayout.EndHorizontal();
                            GUILayout.Space(5);
                            GUILayout.Box("", new GUILayoutOption[] { GUILayout.ExpandWidth(true), GUILayout.Height(1) }); //draw line
                        }
                    }
                }
                EditorGUILayout.EndScrollView();
                #endregion
            }

        }
        m_fAniTimeLastValue = m_fAniTimeValue;
        m_nAffectedObjectLastNum = m_nAffectedObjectNum;

        if (Event.current.type == EventType.mouseUp && EditorWindow.mouseOverWindow == this)
        {
            OnClickWindow();
        }
    }
    public void InsertFrame(EActionFrameType eType, ActionFrameData frameData)
    {
        if (null != frameData)
        {
            m_fAniTimeValue = (float)frameData.Time;
            OnChangePlayerTimeLine(m_fAniTimeValue);
        }

        switch (eType)
        {
            case EActionFrameType.ShakeCamera:
                ShakeCameraFrameEdit.Instance.OpenWindow(m_fActionDuration, m_fAniTimeValue, eType, frameData);
                break;
            case EActionFrameType.MoveCamera:
                MoveCameraFrameEdit.Instance.OpenWindow(m_fActionDuration, m_fAniTimeValue, eType, frameData);
                break;
            case EActionFrameType.PlayAudio:
                PlayAudioFrameEdit.Instance.OpenWindow(m_fActionDuration, m_fAniTimeValue, eType, frameData);
                break;
            case EActionFrameType.StopAudio:
                StopAudioFrameEdit.Instance.OpenWindow(m_fActionDuration, m_fAniTimeValue, eType, frameData);
                break;
            case EActionFrameType.AddNpc:
                AddNpcFrameEdit.Instance.OpenWindow(m_fActionDuration, m_fAniTimeValue, eType, frameData);
                break;
            case EActionFrameType.AnimChar:
                AnimCharFrameEdit.Instance.OpenWindow(m_fActionDuration, m_fAniTimeValue, eType, frameData);
                break;
            case EActionFrameType.MoveObject:
                MoveFrameEdit.Instance.OpenWindow(m_fActionDuration, m_fAniTimeValue, eType, frameData);
                break;
            case EActionFrameType.EnableObject:
                EnableObjFrameEidt.Instance.OpenWindow(m_fActionDuration, m_fAniTimeValue, eType, frameData);
                break;
            case EActionFrameType.EnableMeshRender:
                EnableMeshRenderFrameEdit.Instance.OpenWindow(m_fActionDuration, m_fAniTimeValue, eType, frameData);
                break;
            case EActionFrameType.ChangeColor:
                ChangeColorFrameEdit.Instance.OpenWindow(m_fActionDuration, m_fAniTimeValue, eType, frameData);
                break;
            case EActionFrameType.Runtime_CreateEffect:
                Runtime_CreateEffectFrameEdit.Instance.OpenWindow(m_fActionDuration, m_fAniTimeValue, eType, frameData);
                break;
            case EActionFrameType.Runtime_MoveEffect:
                Runtime_MoveEffectFrameEdit.Instance.OpenWindow(m_fActionDuration, m_fAniTimeValue, eType, frameData);
                break;
            case EActionFrameType.Runtime_AttackExec:
                Runtime_AttackExecFrameEdit.Instance.OpenWindow(m_fActionDuration, m_fAniTimeValue, eType, frameData);
                break;
            case EActionFrameType.Runtime_RemoveEffect:
                Runtime_RemoveEffectFrameEdit.Instance.OpenWindow(m_fActionDuration, m_fAniTimeValue, eType, frameData);
                break;
            case EActionFrameType.AddStateEffect:
                AddStateEffectFrameEdit.Instance.OpenWindow(m_fActionDuration, m_fAniTimeValue, eType, frameData);
                break;
            case EActionFrameType.Runtime_AddUI:
                AddUIFrameEdit.Instance.OpenWindow(m_fActionDuration, m_fAniTimeValue, eType, frameData);
                break;
            case EActionFrameType.Runtime_RemoveUI:
                RemoveUIFrameEdit.Instance.OpenWindow(m_fActionDuration, m_fAniTimeValue, eType, frameData);
                break;
            case EActionFrameType.MoveChar:
                MoveCharFrameEdit.Instance.OpenWindow(m_fActionDuration, m_fAniTimeValue, eType, frameData);
                break;
            case EActionFrameType.EntityPlayAnimation:
                EntityPlayAnimFrameEdit.Instance.OpenWindow(m_fActionDuration, m_fAniTimeValue, eType, frameData);
                break;
            case EActionFrameType.RotateChar:
                RotateCharFrameEdit.Instance.OpenWindow(m_fActionDuration, m_fAniTimeValue, eType, frameData);
                break;
            case EActionFrameType.RotateCamera:
                RotateCameraFrameEdit.Instance.OpenWindow(m_fActionDuration, m_fAniTimeValue, eType, frameData);
                break;
            case EActionFrameType.ObjTransform:
                ObjectTransformFrameEdit.Instance.OpenWindow(m_fActionDuration, m_fAniTimeValue, eType, frameData);
                break;
            case EActionFrameType.FuncMethod:
                FuncMethodFrameEdit.Instance.OpenWindow(m_fActionDuration, m_fAniTimeValue, eType, frameData);
                break;
        }
    }