void SetCurveAni(GameObject selCurveAniObj)
    {
        NcCurveAnimation ncCurveAni = selCurveAniObj.GetComponent <NcCurveAnimation>();

        m_SelCurveAniObject = selCurveAniObj;
        // copy
//      ncCurveAni.CopyTo(m_CurrentCurveAnimation, false);
        // append
        m_OriCurveAnimation.CopyTo(m_CurrentCurveAnimation, false);
        ncCurveAni.AppendTo(m_CurrentCurveAnimation, false);
    }
    // Property -------------------------------------------------------------------------
    public override bool ShowPopupWindow(Object selObj, bool bSaveDialog)
    {
        m_CurrentCurveAnimation = selObj as NcCurveAnimation;

        if (m_CurrentCurveAnimation == null)
        {
            Debug.LogError("(selObj as NcCurveAnimation) is null");
            return(false);
        }

        // Save Hint Box
        m_bDrawRedProject = bSaveDialog;
        m_bDrawRedGroup   = bSaveDialog;
        m_bDrawRedBottom  = bSaveDialog;

        // SaveDialog - Disable m_bOptionRecursively
        if (bSaveDialog)
        {
            m_SaveFilename            = "Save FileName";
            m_bFixedOptionRecursively = true;
            m_bOptionRecursively      = false;
        }
        else
        {
            m_bFixedOptionRecursively = false;
        }

        // create backup component
        m_OriCurveAnimation = gameObject.GetComponent <NcCurveAnimation>();
        if (m_OriCurveAnimation == null)
        {
            m_OriCurveAnimation         = gameObject.AddComponent <NcCurveAnimation>();
            m_OriCurveAnimation.enabled = false;
        }

        // backup
        m_CurrentCurveAnimation.CopyTo(m_OriCurveAnimation, false);

        m_nOriMaxObjectColumn  = 3;
        m_fButtonAspect        = FXMakerLayout.m_fScrollButtonAspect;
        m_SelectedTransform    = m_CurrentCurveAnimation.transform;
        m_PrefsName            = "NcCurveAnimation";
        m_BaseDefaultGroupName = m_DefaultGroupName;
        m_SelCurveAniObject    = null;
        return(base.ShowPopupWindow(selObj, bSaveDialog));
    }
	// Property -------------------------------------------------------------------------
	public override bool ShowPopupWindow(Object selObj, bool bSaveDialog)
	{
		m_CurrentCurveAnimation = selObj as NcCurveAnimation;

		if (m_CurrentCurveAnimation == null)
		{
			Debug.LogError("(selObj as NcCurveAnimation) is null");
			return false;
		}

		// Save Hint Box
		m_bDrawRedProject		= bSaveDialog;
		m_bDrawRedGroup			= bSaveDialog;
		m_bDrawRedBottom		= bSaveDialog;

		// SaveDialog - Disable m_bOptionRecursively
		if (bSaveDialog)
		{
			m_SaveFilename				= "Save FileName";
			m_bFixedOptionRecursively	= true;
			m_bOptionRecursively		= false;
		} else m_bFixedOptionRecursively = false;

		// create backup component
		m_OriCurveAnimation = gameObject.GetComponent<NcCurveAnimation>();
		if (m_OriCurveAnimation == null)
		{
			m_OriCurveAnimation = gameObject.AddComponent<NcCurveAnimation>();
			m_OriCurveAnimation.enabled = false;
		}

		// backup
		m_CurrentCurveAnimation.CopyTo(m_OriCurveAnimation, false);

		m_nOriMaxObjectColumn		= 3;
		m_fButtonAspect				= FXMakerLayout.m_fScrollButtonAspect;
		m_SelectedTransform			= m_CurrentCurveAnimation.transform;
		m_PrefsName					= "NcCurveAnimation";
		m_BaseDefaultGroupName		= m_DefaultGroupName;
		m_SelCurveAniObject			= null;
		return base.ShowPopupWindow(selObj, bSaveDialog);
	}
    void SaveCurveAniToPrefabFile()
    {
        if (m_nProjectIndex < 0)
        {
            return;
        }

        if (m_DefaultSavePrefab == null)
        {
            Debug.LogError("FxmFolderPopup_NcCurveAnimation.m_DefaultSavePrefab is null");
            return;
        }

        string dstPath = NgFile.CombinePath(m_LoadDirectory, m_NcCurveAni_FileKeyword + m_SaveFilename + ".prefab");

        dstPath = NgAsset.CreateDefaultUniquePrefab(m_DefaultSavePrefab, dstPath);

        GameObject       newPrefab = NgAsset.LoadPrefab(dstPath);
        NcCurveAnimation newCom    = newPrefab.AddComponent <NcCurveAnimation>();

        m_CurrentCurveAnimation.CopyTo(newCom, false);
        FXMakerAsset.AssetDatabaseSaveAssets();
    }