private void ClearData()
    {
        OnStop();
        // editor state
        m_bPlay             = false;
        m_bIsCreateNew      = false;
        m_bInitSceneCamera  = false;
        m_fAniTimeLastValue = 0f;
        m_ActionId          = -1;

        // editor data
        m_ObjMap = null;
        if (null != m_ObjMapInstance)
        {
            UnityEngine.Object.Destroy(m_ObjMapInstance);

            // clear terrain
            CloseTerrain();
        }
        m_ObjMapInstance      = null;
        m_DurationInputBuffer = null;
        m_MapIDInputBuffer    = null;

        // action data
        m_fAniTimeValue     = 0f;
        m_CurrentActionName = null;;
        m_CurrentMapName    = "";
        m_FileData          = null;
        m_KeyFrameDataDict  = null;


        //Close Windows
        var subTypeQuery = from t in Assembly.GetExecutingAssembly().GetTypes()
                           where IsSubClassOf(t, typeof(AbstractFrameEdit))
                           select t;

        foreach (var type in subTypeQuery)
        {
            MethodInfo method = type.GetMethod("CloseWindow");
            method.Invoke(null, null);
        }
        m_RuntimeParam.ClearData();
        AERuntimeParamEditorWindow.CloseWindow();
        ActionKeyframeWindow.CloseWindow();
        ActionTimeChangeWindow.CloseWindow();
        ActionListWindow.CloseWindow();
        ConflictSolveWindow.CloseWindow();
    }