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); } }
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); }
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); } }
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); } }
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); }
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); }
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(); }
/// <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!"); } }
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); }
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(); } } }
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!"); } }
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!"); } }