protected override void OnPaint(PaintEventArgs pe)
        {
            //base.OnPaint(pe);
            // do self render
            m_gameTimer.Tick();

            NGameEngine gameEngine = Program.g_GameEngine;

            if (gameEngine != null)
            {
                gameEngine.FrameTick(m_gameTimer.DeltaTime, m_viewport);
            }
        }
        protected virtual void NRenderContorl_SizeChanged(object sender, EventArgs e)
        {
            if (m_HWND == 0)
            {
                return;
            }

            m_viewport.Width  = (uint)this.ClientSize.Width;
            m_viewport.Height = (uint)this.ClientSize.Height;
            NEngineConfig cfg = NGameEngine.Instance().Config;

            m_viewport.Camera.SetPerspective(MathConst.PI / 4, ClientSize.Width, ClientSize.Height, 20, 500000);
        }
Exemple #3
0
        static void Main()
        {
            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);

            try
            {
                g_GameEngine = new NGameEngine();
                g_GameEngine.InitCore();

                form = GUITesterMainForm.App;

                //-- create engine config
                NEngineConfig engineCfg = new NEngineConfig();
                engineCfg.RenderWndHandle = form.RenderPanelHandle;
                engineCfg.ClientWidth     = Screen.PrimaryScreen.Bounds.Width;
                engineCfg.ClientHeight    = Screen.PrimaryScreen.Bounds.Height;
                engineCfg.ColorBits       = 32;
                engineCfg.FullScreen      = false;
                engineCfg.EnableHDR       = false;
                engineCfg.RenderClass     = "nrenderer_d3d9";
                engineCfg.FileSystemClass = "nstd_file_system";
                engineCfg.EngineDataPkg   = "engine_data";
                // 设置File System根目录为包含EngineDataPkg的目录
                //engineCfg.FileSystemRoot = "/work/nexus_engine";
                DirectoryInfo DirInfo = new DirectoryInfo(".");
                DirectoryInfo DirIter = DirInfo.Parent;
                while (DirIter != null && engineCfg.FileSystemRoot == null)
                {
                    foreach (DirectoryInfo SubDir in DirIter.GetDirectories())
                    {
                        if (SubDir.Name == engineCfg.EngineDataPkg)
                        {
                            // 如果该目录的子目录中包含EngineDataPkg,则取该目录为FileSystemRoot
                            engineCfg.FileSystemRoot = DirIter.FullName;
                            break;
                        }
                    }
                    DirIter = DirIter.Parent;
                }
                if (engineCfg.FileSystemRoot == null)
                {
                    // 如果没有找到则设置缺省的目录
                    engineCfg.FileSystemRoot = DirInfo.Parent.FullName;
                }

                //--
                g_GameEngine.InitModules(engineCfg);

                //-- create Viewport
                form.CreateViewport();

                Application.Run(form);
            }
            catch (System.Exception e)
            {
                MessageBox.Show(e.Message, e.GetType().ToString(), MessageBoxButtons.OK, MessageBoxIcon.Warning);
            }


            //-- close
            g_GameEngine.Close();
            g_GameEngine.Dispose();
        }