private void addActorTypeMenu_Click(object sender, EventArgs e) { ToolStripMenuItem item = sender as ToolStripMenuItem; ObjectCreator creator = item.Tag as ObjectCreator; if (creator != null) { try { NCheckResult hit; NEMainViewport activeViewport = this.ActiveViewport; if (activeViewport != null) { activeViewport.MouseRayCheck(out hit, activeViewport.RightMouseButtenDownPosition, 512 * 1024, LineCheckType.All); Point pt = activeViewport.Viewport.Camera.WorldToScreen(hit.location); ActorFactory factory = creator.CreateInstance() as ActorFactory; factory.CreateActor(NLevelEditorEngine.Instance.MainLevel, hit.location, Vector3.Zero); } } catch (System.Exception ex) { Program.ShowException(ex, "ActorFactory Create Error!"); } } }
private void viewport_MouseClick(object sender, MouseEventArgs e) { if (e.Button == MouseButtons.Right) { NEMainViewport activeViewport = this.ActiveViewport; if (activeViewport != null && NLevelEditorEngine.Instance.Command != EditorCommand.TerrainMode && NLevelEditorEngine.Instance.Command != EditorCommand.NavigateMapMode && activeViewport.RightMouseButtenDownPosition == e.Location) { this.contextMenuStripViewport.Show(activeViewport, e.Location); } } }
/// <summary> /// play from here /// </summary> private void playFromHereToolStripMenuItem_Click(object sender, EventArgs e) { // 检测鼠标射线 NCheckResult hit; hit.location = Vector3.Zero; NEMainViewport activeViewport = this.ActiveViewport; if (activeViewport != null) { activeViewport.MouseRayCheck(out hit, activeViewport.RightMouseButtenDownPosition, 1024 * 1024, LineCheckType.All); } PlayInEditor(hit.location); }
/// <summary> /// 创建viewport窗口,因为创建窗口即刻需要渲染(Paint事件),所以独立成一个函数,在引擎和level创建后才调用。 /// </summary> public void CreateViewport() { AutoViewportSize(); List <NEMainViewport> vpList = new List <NEMainViewport>(); NEMainViewport vp1 = new NEMainViewport(); vp1.SetCameraMode(EditorCameraMode.Top); this.splitContainerViewUp.Panel1.Controls.Add(vp1); vpList.Add(vp1); NEMainViewport vp2 = new NEMainViewport(); vp2.SetCameraMode(EditorCameraMode.Front); this.splitContainerViewUp.Panel2.Controls.Add(vp2); vpList.Add(vp2); NEMainViewport vp3 = new NEMainViewport(); vp3.SetCameraMode(EditorCameraMode.Side); this.splitContainerViewDown.Panel1.Controls.Add(vp3); vpList.Add(vp3); NEMainViewport vp4 = new NEMainViewport(); vp4.SetCameraMode(EditorCameraMode.Perspective); this.splitContainerViewDown.Panel2.Controls.Add(vp4); vpList.Add(vp4); NLevelEditorEngine.Instance.ActorEd.ActorSelected += new EventHandler(this.ActorSelectedHandler); //-- m_viewports = vpList; foreach (NEMainViewport vp in m_viewports) { vp.DoubleClick += new EventHandler(viewport_DoubleClick); vp.MouseClick += this.viewport_MouseClick; vp.CameraOperateFactorChangeEvent += this.OnCameraOperateFactorChange; } if (m_viewports.Count > 0) { statusMainForm.Items[2].Text = "摄像机正常速度"; } }
private void toolBtnCamera_MouseUp(object sender, MouseEventArgs e) { if (e.Button == MouseButtons.Right) { NEMainViewport activeVp = ActiveViewport; if (activeVp == null) { NexusEditor.Program.ShowError("Not active viewport found."); return; } using (EditorMain.CameraCtrlSettingDlg dlg = new CameraCtrlSettingDlg()) { dlg.SetCameraCtrl(activeVp.CameraCtrl); dlg.ShowDialog(this); } } }