public ResSFXEditor()
        {
            m_realtimeMode = true;
            m_elementsCtrl = new List <SFXElement>();

            InitializeComponent();

            m_res     = NResourceManager.Instance.NewSpecialEffect("DefaultSFXRes");
            m_preview = new ResourcePreview("ResSFXPreview_LV");
            m_preview.ShowSpecialEffect(m_res);
            this.splitContainerV.Panel1.Controls.Add(m_preview);
            this.splitContainerH.Panel2.Enabled = true;

            NControl.NCurveEditorCtrl curveCtrl = new NexusEditor.NControl.NCurveEditorCtrl();
            this.groupBoxCurve.Controls.Add(curveCtrl);
            curveCtrl.Dock = DockStyle.Fill;

            //-- 根据特效元素子类型,创建菜单内容
            System.Collections.ArrayList nativeClassList = NEffectElement.GetNativeClassNameList();
            foreach (String className in nativeClassList)
            {
                ToolStripItem menuItem = this.contextMenuStripCreate.Items.Add("new " + className);
                menuItem.Tag    = className;
                menuItem.Click += new EventHandler(effectMenuItem_Click);
            }

            //-- 取得所有Distribution相关的class
            m_distributionClasses = new List <Type>();
            Type     baseDistType = typeof(NexusEngine.NDistribution);
            Assembly engineDll    = baseDistType.Assembly;

            foreach (Type t in engineDll.GetTypes())
            {
                if (t.IsSubclassOf(baseDistType) &&
                    !t.IsAbstract)
                {
                    m_distributionClasses.Add(t);
                }
            }

            m_Timeline.TooltipDelegate = this.OnTimelineTooltip;
        }
        public void ShowSpecialEffect(NResourceSpecialEffect sfx)
        {
            try
            {
                m_level.DestroyAllActors();

                //-- create a actor for SFX
                NActor                 sfxActor = m_level.CreateActor("SFXActor", "nactor");
                NActorComponent        comp     = sfxActor.CreateComponent("SFXComp", "nspecial_effect_instance");
                NSpecialEffectInstance sfxComp  = comp as NSpecialEffectInstance;
                sfxComp.ResetResource(sfx);
                sfxComp.Play();

                m_resActorComp = sfxComp;
            }
            catch (System.Exception e)
            {
                NexusEditor.Program.ShowException(e, "SFX Preview Open FAILED!");
            }
        }