public NShapeComponent ShowSphereShapeComponent(float radius, int numRings, int numSections)
        {
            try
            {
                m_level.DestroyAllActors();

                //-- create a actor for mesh
                NActor          meshActor = m_level.CreateActor("StaticMeshActor", "nactor");
                NActorComponent comp      = meshActor.CreateComponent("MeshComp", "nshape_component");
                NShapeComponent meshComp  = comp as NShapeComponent;
                meshComp.CreateSphere(radius, numRings, numSections);
                m_actorBox = meshComp.GetBoundingBox();

                //-- add default light
                AddDefaultLight();

                m_resActorComp = comp;

                return(meshComp);
            }
            catch (System.Exception e)
            {
                NexusEditor.Program.ShowException(e, "Static Mesh Preview Open FAILED!");
                return(null);
            }
        }
Example #2
0
        virtual public void ResetResource(NResourceLoc loc)
        {
            if (TargetActor != null && animMesh == null)
            {
                NActorComponent comp = TargetActor.CreateComponent(animMeshNameGenerator.GetNextUniqueName(), "nanim_mesh_component");
                animMesh = comp as NAnimMeshComponent;
            }

            animMesh.ResetResource(loc);
        }
Example #3
0
        void OnElementPostPropertyEdit(object sender, EventArgs e)
        {
            SFXElement             elemCtrl = sender as SFXElement;
            NActorComponent        comp     = m_preview.ResourceActorComponent;
            NSpecialEffectInstance sfxComp  = comp as NSpecialEffectInstance;

            if (sfxComp != null)
            {
                sfxComp.ResetResource(m_res);
            }
        }
Example #4
0
        void OnRestartInstance(object sender, EventArgs e)
        {
            SFXElement elemCtrl = sender as SFXElement;

            //-- 处理资源和渲染对象
            NActorComponent        comp    = m_preview.ResourceActorComponent;
            NSpecialEffectInstance sfxComp = comp as NSpecialEffectInstance;

            if (sfxComp != null)
            {
                sfxComp.ResetResource(m_res);
            }
        }
Example #5
0
        public override void PostCreateActor(NexusEngine.NActor actor)
        {
            base.PostCreateActor(actor);

            //创建体积雾部件
            actor.CreateComponent("WaterComponent", "nwater_component");

            //创建显示用部件
            NResourceLoc         res      = new NResourceLoc("engine_data", "/editor_res/ball.nmdl");
            NActorComponent      comp     = actor.CreateComponent("WaterSignBoard", "nstatic_editor_mesh_component");
            NStaticMeshComponent meshComp = comp as NStaticMeshComponent;

            meshComp.ResetResource(res);
        }
Example #6
0
        public override void PostCreateActor(NexusEngine.NActor actor)
        {
            base.PostCreateActor(actor);

            //创建光源部件
            actor.CreateComponent("DirectionalLightComponent", "ndirectional_light_component");

            //创建显示用部件
            NResourceLoc         res      = new NResourceLoc("engine_data", "/editor_res/light.nmdl");
            NActorComponent      comp     = actor.CreateComponent("LightSignBoard", "nstatic_editor_mesh_component");
            NStaticMeshComponent meshComp = comp as NStaticMeshComponent;

            meshComp.ResetResource(res);
        }
Example #7
0
        private void newNToolStripMenuItem_Click(object sender, EventArgs e)
        {
            //新建特效
            m_res.Clear();
            m_elementsCtrl.Clear();
            m_Timeline.Clear();
            this.splitContainerV.Panel2.Controls.Clear();
            NActorComponent        comp    = m_preview.ResourceActorComponent;
            NSpecialEffectInstance sfxComp = comp as NSpecialEffectInstance;

            if (sfxComp != null)
            {
                sfxComp.ResetResource(m_res);
            }
            m_preview.Refresh();
        }
Example #8
0
        /// <summary>
        /// 响应引擎的"选中Actor"事件, 更新Actor的树控件和属性控件
        /// </summary>
        private void ActorSelectedHandler(object sender, EventArgs e)
        {
            ActorSelectedArgs ae       = e as ActorSelectedArgs;
            NActor            selActor = ae.SelectedActor;

            this.treeViewActor.BeginUpdate();

            //-- clear old
            this.treeViewActor.Nodes.Clear();
            this.propertyGridActor.SelectedObject = null;

            if (selActor == null)
            {
                TreeNode actorNode = new TreeNode("None");
                this.treeViewActor.Nodes.Add(actorNode);
                this.treeViewActor.SelectedNode = actorNode;
            }
            else
            {
                TreeNode actorNode = new TreeNode(selActor.Name);
                actorNode.Tag = selActor;
                this.treeViewActor.Nodes.Add(actorNode);

                for (int i = 0; i < selActor.NumComponents; i++)
                {
                    NActorComponent comp = selActor.GetComponent(i);

                    if (comp.Editable)
                    {
                        TreeNode compNode = new TreeNode(comp.Name);
                        compNode.Tag = comp;
                        actorNode.Nodes.Add(compNode);
                    }
                }

                this.treeViewActor.SelectedNode = actorNode;
                this.treeViewActor.ExpandAll();

                //--
                this.propertyGridActor.SelectedObject = selActor;
            }


            //--
            this.treeViewActor.EndUpdate();
        }
        internal virtual void AddDefaultLight()
        {
            try
            {
                NActor                     lgtActor = m_level.CreateActor("DefaultDirLgt", "nactor");
                NActorComponent            comp     = lgtActor.CreateComponent("DirLgtComp", "ndirectional_light_component");
                NDirectionalLightComponent lgtComp  = comp as NDirectionalLightComponent;
                lgtComp.bProjectShadow = true;
                lgtActor.Rotation      = new Vector3(45, 45, 0);

                m_lgtActor = lgtActor;
            }
            catch (System.Exception ex)
            {
                NexusEditor.Program.ShowException(ex, "Create Directional Light FAILED!");
            }
        }
Example #10
0
        public override void PostCreateActor(NexusEngine.NActor actor)
        {
            base.PostCreateActor(actor);

            //创建显示用部件
            NResourceLoc        res  = new NResourceLoc("engine_data", "/resource_default/skydome.nmdl");
            NResourceStaticMesh mesh = NResourceManager.Instance.LoadStaticMesh(res, EResourceIOMode.Auto, EResourceIOPriority.Normal);

            if (mesh == null)
            {
                return;
            }
            actor.Frozen = true;
            NActorComponent comp     = actor.CreateComponent("SkyComponent", "nsky_component");
            NSkyComponent   meshComp = comp as NSkyComponent;

            meshComp.ResetResource(res);
        }
        protected override void Dispose(bool disposing)
        {
            NEditorEngine eng = NexusEditor.Program.engine;

            if (m_lgtActor != null)
            {
                m_lgtActor.Dispose();
                m_lgtActor = null;
            }
            if (m_resActorComp != null)
            {
                m_resActorComp.Dispose();
                m_resActorComp = null;
            }
            eng.DestroyLevel(m_level);
            m_level.Dispose();
            base.Dispose(disposing);
        }
Example #12
0
 private void openOToolStripMenuItem_Click(object sender, EventArgs e)
 {
     //打开特效
     using (VirtualFileDialog dlg = new VirtualFileDialog())
     {
         dlg.Text = "加载特效 ...";
         if (dlg.ShowDialog(this) == DialogResult.OK)
         {
             NResourceLoc loc = dlg.GetResourceLocation();
             m_res.Clear();
             m_elementsCtrl.Clear();
             m_Timeline.Clear();
             this.splitContainerV.Panel2.Controls.Clear();
             m_res.LoadFromFile(loc);
             //更新控制器
             for (int i = 0; i < m_res.ElementCount(); ++i)
             {
                 NEffectElement elem    = m_res.GetElement(i);
                 int            numCtrl = m_elementsCtrl.Count;
                 SFXElement     newCtrl = new SFXElement(elem);
                 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);
             }
             NActorComponent        comp    = m_preview.ResourceActorComponent;
             NSpecialEffectInstance sfxComp = comp as NSpecialEffectInstance;
             if (sfxComp != null)
             {
                 sfxComp.ResetResource(m_res);
             }
             m_preview.Refresh();
         }
     }
 }
Example #13
0
        static private void CreateActorComponent(NActor newActor, NResourceLoc res)
        {
            try
            {
                switch (res.FileExtension)
                {
                case "nmdl":
                {
                    NActorComponent comp = newActor.CreateComponent(
                        MakeComponentName("StaticMesh_", res),
                        "nstatic_mesh_component");
                    NStaticMeshComponent meshComp = comp as NStaticMeshComponent;
                    meshComp.ResetResource(res);
                }
                break;

                case "spt":
                {
                    NActorComponent comp = newActor.CreateComponent(
                        MakeComponentName("SPTComp_", res),
                        "nspeed_tree_component");
                    NSpeedTreeComponent sptComp = comp as NSpeedTreeComponent;
                    sptComp.Create(res);
                }
                break;

                case "nam":
                {
                    NActorComponent comp = newActor.CreateComponent(
                        MakeComponentName("AnimMeshComp_", res),
                        "nanim_mesh_component");
                    NAnimMeshComponent meshComp = comp as NAnimMeshComponent;
                    meshComp.ResetResource(res);
                }
                break;
                }// end of switch
            }
            catch (System.Exception e)
            {
                NexusEditor.Program.ShowException(e, "Create Resource Actor Component FAILED!");
            }
        }
        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!");
            }
        }
        public void ShowStaticMesh(NResourceStaticMesh mesh)
        {
            try
            {
                m_level.DestroyAllActors();

                //-- create a actor for mesh
                NActor               meshActor = m_level.CreateActor("StaticMeshActor", "nactor");
                NActorComponent      comp      = meshActor.CreateComponent("MeshComp", "nstatic_mesh_component");
                NStaticMeshComponent meshComp  = comp as NStaticMeshComponent;
                meshComp.ResetResource(mesh);
                m_actorBox = meshComp.GetBoundingBox();

                //-- add default light
                AddDefaultLight();
            }
            catch (System.Exception e)
            {
                NexusEditor.Program.ShowException(e, "Static Mesh Preview Open FAILED!");
            }
        }
Example #16
0
        void OnRemoveElement(object sender, EventArgs e)
        {
            SFXElement elemCtrl = sender as SFXElement;

            //-- 处理资源和渲染对象
            m_res.RemoveElement(elemCtrl.EditElement.Name);
            NActorComponent        comp    = m_preview.ResourceActorComponent;
            NSpecialEffectInstance sfxComp = comp as NSpecialEffectInstance;

            if (sfxComp != null)
            {
                sfxComp.ResetResource(m_res);
            }

            //-- 更新UI
            m_Timeline.Clear();
            this.splitContainerV.Panel2.Controls.Clear();
            m_elementsCtrl.Remove(elemCtrl);
            //更新控制器
            for (int i = 0; i < m_res.ElementCount(); ++i)
            {
                NEffectElement elem    = m_res.GetElement(i);
                int            numCtrl = i;
                SFXElement     newCtrl = new SFXElement(elem);
                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;
                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);
            }
            m_preview.Refresh();
        }
        public void LoadSpeedTree(NResourceLoc loc)
        {
            m_level.DestroyAllActors();

            //--
            try
            {
                NActor sptActor             = m_level.CreateActor("SptPreviewActor", "nactor");
                NSpeedTreeComponent sptComp = sptActor.CreateComponent("SPTComp", "nspeed_tree_component") as NSpeedTreeComponent;
                sptComp.Create(loc);

                sptActor.Scale = new Vector3(50, 50, 50);
                m_actorBox     = sptComp.GetBoundingBox();

                //-- add default light
                AddDefaultLight();

                m_resActorComp = sptComp;
            }
            catch (System.Exception e)
            {
                NexusEditor.Program.ShowException(e, "Speed Tree Load FAILED!");
            }
        }