コード例 #1
0
        private void effectMenuItem_Click(object sender, EventArgs e)
        {
            ToolStripItem menuItem        = sender as ToolStripMenuItem;
            string        nativeClassName = menuItem.Tag as String;

            //-- 创建特效元素并添加到资源对象中
            string         elemName = ("SFX_" + DateTime.Now.ToFileTime());
            NEffectElement newElem  = NEffectElement.CreateEffectElement(nativeClassName, elemName);

            if (newElem == null)
            {
                return;
            }
            m_res.AddElement(newElem);
            m_preview.ShowSpecialEffect(m_res);
            m_preview.Refresh();

            //-- 创建对应的控件
            int        numCtrl = m_elementsCtrl.Count;
            SFXElement newCtrl = new SFXElement(newElem);

            this.splitContainerV.Panel2.Controls.Add(newCtrl);
            newCtrl.Location = new Point(2 + numCtrl * (newCtrl.Width + 2), 2);
            int h = this.splitContainerV.Panel2.Height - 20;

            newCtrl.Height = h;
            m_elementsCtrl.Add(newCtrl);
            newCtrl.SetActive(true);
            newCtrl.RemoveElement    += new EventHandler(OnRemoveElement);
            newCtrl.PropertySelected += new EventHandler(OnElementPropertySelected);
            newCtrl.PostPropertyEdit += new EventHandler(OnElementPostPropertyEdit);
            newCtrl.ActiveElement    += new EventHandler(OnActiveElement);
            newCtrl.RestartInstance  += new EventHandler(OnRestartInstance);
        }
コード例 #2
0
        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;
        }