public ResourcePreview(string levelName)
        {
            NEditorEngine eng = NexusEditor.Program.engine;

            m_level = eng.CreateLevel(levelName, "nlevel");
            m_level.Init();

            RenderSetting rs = m_level.GetRenderSetting();

            rs.SkyLightHightColor = new Color4f(0.4f, 0.4f, 0.4f);
            rs.SkyLightLowColor   = new Color4f(0.3f, 0.3f, 0.3f);

            float f = 200;

            m_actorBox = new BoundingBox(
                new Vector3(-f, -f, -f), new Vector3(f, f, f)
                );

            m_lgtTimer = new NGameTimer();
            m_lgtTimer.Reset();

            m_focusLevel = levelName;

            m_draging       = false;
            this.MouseDown += new MouseEventHandler(ResourcePreview_MouseDown);
            this.MouseUp   += new MouseEventHandler(ResourcePreview_MouseUp);
            this.MouseMove += new MouseEventHandler(ResourcePreview_MouseMove);
        }
Example #2
0
        private void NEViewPort_SizeChanged(object sender, EventArgs e)
        {
            m_view.Width  = (uint)this.ClientSize.Width;
            m_view.Height = (uint)this.ClientSize.Height;

            NEngineConfig eng = NEditorEngine.Instance().Config;

            m_view.X      = (uint)(eng.ClientWidth - m_view.Width) / 2;
            m_view.Y      = (uint)(eng.ClientHeight - m_view.Height) / 2;
            m_cameraSight = m_minCameraSight * (1 - m_Sight * m_Sight) + m_maxCameraSight * (m_Sight * m_Sight);
            m_view.Camera.SetPerspective(MathConst.PI / 4, ClientSize.Width, ClientSize.Height, 20, m_cameraSight);
        }
        /// <summary>
        /// 清理所有正在使用的资源。
        /// </summary>
        /// <param name="disposing">如果应释放托管资源,为 true;否则为 false。</param>
        protected override void Dispose(bool disposing)
        {
            if (disposing)
            {
                if (components != null)
                {
                    components.Dispose();
                }
            }
            NEditorEngine eng = NexusEditor.Program.engine;

            eng.DestroyLevel(levelPreview);
            levelPreview.Dispose();
            base.Dispose(disposing);
        }
        public void CreateViewport()
        {
            // initialize Viewport
            int w = NEditorEngine.Instance().Config.ClientWidth;
            int h = NEditorEngine.Instance().Config.ClientHeight;

            m_viewport = new NViewport();
            m_viewport.Camera.SetPerspective(MathConst.PI / 4, w, h, 20, 500000);
            m_viewport.HandleWnd  = this.Handle;
            m_viewport.RenderMode = ERenderMode.Unlit;
            this.NRenderContorl_SizeChanged(null, null);

            // create render element
            NWidgetsRender widgetsRender = new NWidgetsRender();

            m_viewport.WidgetsRender = widgetsRender;
            widgetsRender.AddRenderControl(this);

            // 创建UI系统
            new GUISystem(widgetsRender.UICanvas);
            // 签署事件
            this.KeyDown          += new System.Windows.Forms.KeyEventHandler(NRenderControl_KeyDown);
            this.KeyPress         += new System.Windows.Forms.KeyPressEventHandler(NRenderControl_KeyPress);
            this.KeyUp            += new System.Windows.Forms.KeyEventHandler(NRenderControl_KeyUp);
            this.MouseClick       += new System.Windows.Forms.MouseEventHandler(NRenderControl_MouseClick);
            this.MouseDoubleClick += new System.Windows.Forms.MouseEventHandler(NRenderControl_MouseDoubleClick);
            this.MouseDown        += new System.Windows.Forms.MouseEventHandler(NRenderControl_MouseDown);
            this.MouseUp          += new System.Windows.Forms.MouseEventHandler(NRenderControl_MouseUp);
            this.MouseWheel       += new System.Windows.Forms.MouseEventHandler(NRenderControl_MouseWheel);
            this.MouseMove        += new System.Windows.Forms.MouseEventHandler(NRenderControl_MouseMove);
            //加载程序集,注册内置窗口类型
            Assembly executingAssembly = Assembly.GetExecutingAssembly();

            WindowManager.Instance.LoadAssembly(Path.GetDirectoryName(executingAssembly.Location) + System.IO.Path.DirectorySeparatorChar + @"Nexus.GUI.dll");
            // 加载当前执行文件中窗口类型
            WindowManager.Instance.AttachAssembly(executingAssembly);
            // 创建一个缺省的唯一父窗口
            GUISystem.Instance.RootWindow = WindowManager.Instance.CreateWindow("Nexus.GUI.Widgets.GUISheet", "root", null);


            PostInitialize();

            // create game timer
            m_gameTimer = new NGameTimer();
            m_gameTimer.Reset();
        }
        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 #6
0
        public NEViewport()
        {
            m_view = new NViewport();
            int w = NEditorEngine.Instance().Config.ClientWidth;
            int h = NEditorEngine.Instance().Config.ClientHeight;

            m_minCameraSight = 500;
            m_maxCameraSight = 300000;
            m_Sight          = 0.25f;
            m_cameraSight    = m_minCameraSight * (1 - m_Sight * m_Sight) + m_maxCameraSight * (m_Sight * m_Sight);
            m_view.Camera.SetPerspective(MathConst.PI / 4, w, h, 1.0f, m_cameraSight);
            m_cameraCtrl = new NPerspectiveCameraController();
            InitializeComponent();
            this.Dock = DockStyle.Fill;
            this.SetStyle(ControlStyles.AllPaintingInWmPaint | ControlStyles.UserPaint, true);

            m_view.HandleWnd  = this.Handle;
            m_view.RenderMode = ERenderMode.Unlit;
            this.NEViewPort_SizeChanged(this, null); // set view pos/size

            NEWidgetsRender widgets = CreateWidgetsRender();

            m_view.WidgetsRender = widgets;
            widgets.AddViewport(this);

            //-- context menu
            m_menu = new ContextMenuStrip();
            ToolStripMenuItem viewMenu = new ToolStripMenuItem("Render mode");

            foreach (ERenderMode rm in Enum.GetValues(typeof(ERenderMode)))
            {
                ToolStripItem item = viewMenu.DropDownItems.Add(rm.ToString());
                item.Click += new EventHandler(this.OnMenuClickRenderMode);
            }
            m_menu.Items.Add(viewMenu);

            ToolStripItem cameraItem = m_menu.Items.Add("Reset camera");

            //--
            m_mainTimer = new NGameTimer();
            m_mainTimer.Reset();
        }
        public NGUIRenderControl(UIEditor owner)
            : base()
        {
            InitializeComponent();

            NEditorEngine eng       = NexusEditor.Program.engine;
            string        levelName = "UIPreviewLevel";

            levelPreview = eng.CreateLevel(levelName, "nlevel");
            levelPreview.Init();
            m_focusLevel = levelName;
            SetCameraMode(EditorCameraMode.Top);

            m_owner = owner;

            this.AllowDrop = true;

            // 关联event handle
            this.DragDrop  += new DragEventHandler(NGUIRenderControl_DragDrop);
            this.DragEnter += new DragEventHandler(NGUIRenderControl_DragEnter);
            this.DragOver  += new DragEventHandler(NGUIRenderControl_DragOver);
        }
Example #8
0
        protected virtual void RenderLevel()
        {
            if (m_focusLevel.Length <= 0)
            {
                return;
            }

            m_mainTimer.Tick();
            m_cameraCtrl.UpdateCamera(m_view.Camera);

            NEditorEngine eng = NexusEditor.Program.engine;

            //-- draw level
            eng.UpdateLevel(m_focusLevel, m_mainTimer.DeltaTime, m_view);

            if (m_focusLevel == eng.MainLevelName)
            {
                eng.RenderMainLevel(m_focusLevel, m_view);
            }
            else
            {
                eng.RenderLevel(m_focusLevel, m_view, true);
            }
        }