/// <summary>
        /// Initializes and starts the game
        /// </summary>
        /// <param name="gameWindow">Game window instance</param>
        public static void Run(GameWindow gameWindow)
        {
            try
            {
                if (SystemEnvironment.LaunchArguments.Contains("--disableLogging") || SystemEnvironment.LaunchArguments.Contains("-dl"))
                {
                    Console.WriteLine("craftersmine EtherEngine (c) craftersmine 2018-2019");
                    Debugging.Logger = null;
                    Console.WriteLine("Game Logging capability is disabled! To enable logging please remove \"--disableLogging\" or \"-dl\" argument from shortcut or start line");
                }
                else
                {
                    Debugging.Logger = new Logger(SystemEnvironment.TemporaryDirectory, "craftersmine.EtherEngine");
                }
                Debugging.Log(LogEntryType.Info, "craftersmine EtherEngine (c) craftersmine 2018-2019");

                Debugging.Log(LogEntryType.Info, "Enabling visual styles...");
                Application.EnableVisualStyles();

                GameWindow     = gameWindow;
                GameWndPointer = GameWindow.Handle;

                Debugging.Log(LogEntryType.Info, "Initializing DirectInput keyboard...");
                KeyboardInstance = new Keyboard();
                Debugging.Log(LogEntryType.Info, "Initializing XInput gamepad...");
                GamepadInstance = new Gamepad();

                Debugging.Log(LogEntryType.Info, "Creating GameUpdater...");
                GameUpdater               = new UpdateTimer(60);
                GameUpdater.FixedUpdate  += GameUpdateHandlers.FixedUpdateHandler;
                GameUpdater.Update       += GameUpdateHandlers.UpdateHandler;
                GameUpdater.PausedUpdate += GameUpdateHandlers.PausedUpdateHandler;

                // TODO: Game initialization logic goes below here
                Debugging.Log(LogEntryType.Info, "Creating Renderer...");
                Renderer = new Renderer.Renderer(GameWndPointer);
                Debugging.Log(LogEntryType.Info, "Loading default scene...");
                SceneManager.LoadScene(new Scene {
                    BackgroundColor = new Color(0f)
                });

                Renderer.SetFullscreenState(GameWindow.WindowParameters.IsFullscreen);

                Debugging.Log(LogEntryType.Done, "Game initialized!");
                GameInitialized += Initialized;
                RenderLoop.Run(GameWindow, new RenderLoop.RenderCallback(Renderer.Render));
            }
            catch (Exception ex)
            {
                CrashHandler.Handle(ex);
            }
        }
Example #2
0
        public void Run(Configuration config)
        {
            configuration = config ?? new Configuration();
            form          = CreateForm(config);
            Initialize(configuration);

            bool isFormClosed   = false;
            bool formIsResizing = false;

            form.MouseClick += HandleMouseClick;
            form.KeyDown    += HandleKeyDown;
            form.KeyUp      += HandleKeyUp;
            form.MouseMove  += HandleMouseMove;
            form.Resize     += (o, args) => {
                if (form.WindowState != currentFormWindowState)
                {
                    HandleResize(o, args);
                }

                currentFormWindowState = form.WindowState;
            };

            form.ResizeBegin += (o, args) => { formIsResizing = true; };
            form.ResizeEnd   += (o, args) => {
                formIsResizing = false;
                HandleResize(o, args);
            };

            form.Closed += (o, args) => { isFormClosed = true; };

            LoadContent();

            time.Start();
            BeginRun();
            RenderLoop.Run(form, () => {
                if (isFormClosed)
                {
                    return;
                }

                OnUpdate();
                if (!formIsResizing)
                {
                    Render();
                }
            });

            UnloadContent();
            EndRun();

            Dispose();
        }
Example #3
0
        public Form1()
        {
            InitializeComponent();

            SetStyle(ControlStyles.AllPaintingInWmPaint | ControlStyles.UserPaint, true);

            form.Width  = 600;
            form.Height = 600;
            test();
            callback = new RenderLoop.RenderCallback(Render);

            RenderLoop.Run(form, callback);
        }
Example #4
0
        public void Run()
        {
            if (this.IsInitialised == false)
            {
                throw new InvalidOperationException("Engine not initialised.");
            }

            RenderLoop.Run(GraphicsServices.GetService <RenderForm>(), () =>
            {
                this.Update();
                this.Render();
            });
        }
Example #5
0
        static void Main()
        {
            FarseerPhysics.Settings.VelocityThreshold = 0;
            ShapeSettings.DeafultRestitution          = 0.9f;
            ShapeSettings.DefaultFriction             = 0.1f;
            ImageUtil.ProcessImages();

            IEUtil.UsingLatestIE();
            using (var form = new Form1())
            {
                RenderLoop.Run(form, () => form.Render(1, 0));
            }
        }
Example #6
0
        public void Draw(RenderLoop.RenderCallback cb)
        {
            RenderLoop.Run(Window, () =>
            {
                _device.BeginDraw();
                _device.Clear(null);

                cb.Invoke();

                _device.Flush();
                _device.EndDraw();
            });
        }
        private void RunRenderForm()
        {
            RenderForm.KeyDown += (s, e) => Input.KeyDown(e.KeyCode);
            RenderForm.KeyUp   += (s, e) => Input.KeyUp(e.KeyCode);

            RenderLoop.Run(RenderForm, () =>
            {
                if (!Frame())
                {
                    ShutDown();
                }
            });
        }
Example #8
0
        static void Main()
        {
            bool initialized = false;
            bool resize      = false;

            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);

            DXConfig = new DXConfigClass("");
            Renderer = new DXRendererClass(DXConfig);

            form        = new ArbaroMainForm();
            form.Width  = DXConfig.FormDefaultWidth;
            form.Height = DXConfig.FormDefaultHeight;

            // Setup handler on resize form
            (form.renderCtrl as Control).Resize += (sender, args) =>
            {
                resize = true;
            };

            DXShaderManager = new DXShadersManager();

            CS_PreciseTimer preciseTimer = new CS_PreciseTimer(10);
            DateTime        tStart       = preciseTimer.Now;

            RenderLoop.Run(form, () =>
            {
                if (!initialized)
                {
                    Rectangle r = form.renderCtrl.ClientRectangle;
                    Renderer.Initialize(r.Width, r.Height, form.renderCtrl.Handle, form, DXConfig);
                    initialized = true;
                    form.RendererInitialized();
                }
                if (resize)
                {
                    resize      = false;
                    Rectangle r = form.renderCtrl.ClientRectangle;
                    Renderer.Resize(r.Width, r.Height, DXConfig);
                }

                DateTime tEnd = preciseTimer.Now;
                float elapsed = (float)(tEnd.Subtract(tStart)).TotalMilliseconds;
                tStart        = tEnd;

                Renderer.Frame();
            });

            Renderer.Dispose();
        }
Example #9
0
        static void Main(string[] args)
        {
            using (var renderForm = new RenderForm("DirectReact sample"))
            {
                renderForm.ClientSize = new System.Drawing.Size(1280, 720);
                var bounds      = new Bounds(x: 0, y: 0, width: renderForm.ClientSize.Width, height: renderForm.ClientSize.Height);
                var first       = true;
                var eventSource = new RawInputEventSource(() => {
                    if (first)
                    {
                        first = false;
                        return(renderForm.PointToClient(Cursor.Position));
                    }
                    if (renderForm.Focused)
                    {
                        return(renderForm.PointToClient(Cursor.Position));
                    }
                    return(null);
                });

                using (var renderer = new Renderer(renderForm.Handle, bounds))
                {
                    var store = new Store <StoreState, StoreState>(
                        new StoreState {
                        Clicked = false, Selection = new TextSelection[] { new TextSelection(2, 2) }
                    },
                        (state, action) => action);

                    var rootElement       = new ReduxProviderElement <StoreState, StoreState>(store, RootComponent.CreateElement(null));
                    var backgroundUpdater = new BackgroundUpdateContext(rootElement, renderer, null, bounds);
                    store.StateChanged   += (existing, newState) => backgroundUpdater.OnNextUpdate(new ChangeEvent <StoreState>(existing, newState));
                    eventSource.Mouse    += (ChangeEvent <MouseState> mouseEvent) => backgroundUpdater.OnNextUpdate(mouseEvent);
                    eventSource.Keyboard += (ChangeEvent <KeyboardState> keyboardEvent) => backgroundUpdater.OnNextUpdate(keyboardEvent);
                    renderForm.Resize    += (sender, _args) =>
                    {
                        var newbounds   = new Bounds(x: 0, y: 0, width: renderForm.ClientSize.Width, height: renderForm.ClientSize.Height);
                        var resizeEvent = new ChangeEvent <ResizeState>(new ResizeState(bounds.Width, bounds.Height), new ResizeState(newbounds.Width, newbounds.Height));
                        bounds = newbounds;
                        backgroundUpdater.OnNextUpdate(resizeEvent);
                    };

                    // Get the ball rolling
                    backgroundUpdater.OnNextUpdate(() => { });

                    RenderLoop.Run(renderForm, () =>
                    {
                        backgroundUpdater.EnsureRenderedOneFrame();
                    });
                }
            }
        }
Example #10
0
        static void Main()
        {
            if (!SharpDevice.IsDirectX11Supported())
            {
                System.Windows.Forms.MessageBox.Show("DirectX11 Not Supported");
                return;
            }

            //render form
            RenderForm form = new RenderForm();

            form.Text = "Tutorial 3: Font";


            //main loop
            using (SharpDevice device = new SharpDevice(form))
            {
                //create font from file (generated with tkfont.exe)
                SharpBatch font = new SharpBatch(device, "textfont.dds");

                RenderLoop.Run(form, () =>
                {
                    //resize if form was resized
                    if (device.MustResize)
                    {
                        device.Resize();
                        font.Resize();
                    }

                    //clear color
                    device.Clear(Color.CornflowerBlue);

                    //begin drawing text
                    font.Begin();

                    //draw string
                    font.DrawString("Hello SharpDX", 0, 0, Color.White);

                    font.DrawString("Current Time " + DateTime.Now.ToString(), 0, 32, Color.White);

                    //flush text to view
                    font.End();

                    //present
                    device.Present();
                });

                font.Dispose();
            }
        }
Example #11
0
 public override void Run()
 {
     RenderLoop.Run(Form, () =>
     {
         Demo.OnUpdate();
         if (Form.WindowState == FormWindowState.Minimized)
         {
             return;
         }
         Demo.Clock.StartRender();
         Render();
         Demo.Clock.StopRender();
     });
 }
Example #12
0
 protected override void Show()
 {
     RenderLoop.Run(renderForm, () => {
         timer.Frame();
         if (!graphics.Frame(timer.FrameTime))
         {
             throw new InvalidOperationException();
         }
         if (!graphics.Render())
         {
             throw new InvalidOperationException();
         }
     });
 }
Example #13
0
        /// <summary>
        /// Runs the demo.
        /// </summary>
        public void Run()
        {
            bool formIsResizing = false;
            bool isFormClosed   = false;

            // bool formIsResizing = false;

            _form.MouseClick += HandleMouseClick;
            _form.KeyDown    += HandleKeyDown;
            _form.KeyUp      += HandleKeyUp;
            _form.Resize     += (o, args) =>
            {
                if (_form.WindowState != _currentFormWindowState)
                {
                    HandleResize(o, args);
                }

                _currentFormWindowState = _form.WindowState;
            };

            _form.ResizeBegin += (o, args) => { formIsResizing = true; };
            _form.ResizeEnd   += (o, args) =>
            {
                formIsResizing = false;
                HandleResize(o, args);
            };
            _form.Closed += (o, args) => { isFormClosed = true; };


            LoadContent();

            _clock.Start();



            RenderLoop.Run(_form, () =>
            {
                if (isFormClosed)
                {
                    return;
                }

                OnUpdate();
                if (!formIsResizing)
                {
                    Render();
                }
            });
        }
        public void Run()
        {
            RenderLoop.Run(DXManager.Instance.renderForm, delegate()
            {
                Update();

                DXManager.Instance.d3dDevice.Clear(ClearFlags.Target | ClearFlags.ZBuffer, new Color(100, 100, 255, 255), 1f, 0);
                DXManager.Instance.d3dDevice.BeginScene();

                ObjectManager.Instance.Render();

                DXManager.Instance.d3dDevice.EndScene();
                DXManager.Instance.d3dDevice.Present();
            });
        }
Example #15
0
        // Render DX
        public void RenderDX()
        {
            // Main rendering loop
            RenderLoop.Run(form, () =>
            {
                devCon.ClearDepthStencilView(depthStencilView, DepthStencilClearFlags.Depth | DepthStencilClearFlags.Stencil, 1.0f, 0);
                devCon.ClearRenderTargetView(renderView, new Color4(0.0f, 0.0675f, 0.1325f, 1.0f));
                RenderComponents();

                swapChain.Present(0, PresentFlags.None);

                UpdateDX();
                UpdateComponents();
            });
        }
Example #16
0
        public static void Main(string[] args)
        {
            int hmod = Environment.Is64BitProcess ? LoadLibrary("x64\\d3dcompiler_47.dll") : LoadLibrary("x86\\d3dcompiler_47.dll");

            Debug.Assert(hmod != 0);

            using (Program program = new Program())
            {
                program.renderForm.KeyDown += (s, e) => program.KeyDownCallback(e.KeyCode);

                RenderLoop.Run(program.renderForm, program.RenderCallback);
            }

            FreeLibrary(hmod);
        }
Example #17
0
        /// <summary>
        /// Sets up and starts the Render Loop
        /// </summary>
        public void StartDraw()
        {
            sw.Start();
            RenderLoop.Run(form, () => {
                D2DRenderTarget.BeginDraw();
                D2DRenderTarget.Clear(Window.BackgroundColor);
                Draw();

                D2DRenderTarget.EndDraw();
                swapChain.Present(0, PresentFlags.None);
                FrameCount++;
            });

            Dispose();
        }
Example #18
0
        public void Run()
        {
            Initialize();

            var isFormClosed   = false;
            var formIsResizing = false;

            MainForm.Closed += (o, args) => { isFormClosed = true; };
            //MainForm.MouseEnter += (o, args) => { Cursor.Hide(); };
            //MainForm.MouseLeave += (o, args) => { Cursor.Show(); };
            MainForm.Resize += (o, args) =>
            {
                if (MainForm.WindowState != CurrentFormWindowState)
                {
                    HandleResize(o, args);
                }

                CurrentFormWindowState = MainForm.WindowState;
            };

            MainForm.ResizeBegin += (o, args) => { formIsResizing = true; };
            MainForm.ResizeEnd   += (o, args) =>
            {
                formIsResizing = false;
                HandleResize(o, args);
            };

            RenderLoop.Run(MainForm, () =>
            {
                if (isFormClosed)
                {
                    return;
                }

                var result = Frame();
                if (!result)
                {
                    MessageBox.Show("Frame Processing Failed");
                    Exit();
                }

                // Check if the user pressed escape and wants to quit.
                if (Input.IsEscapePressed())
                {
                    Exit();
                }
            });
        }
Example #19
0
        public void EnterRunloop()
        {
            RenderLoop.Run(m_windowForm, () =>
            {
                EditorModuleManager.Instance.Update();

                EditorGraphicsManager.Instance.Render(() =>
                {
                });
            });

            EditorModuleManager.Instance.Dispose();
            EditorGraphicsManager.Instance.Dispose();

            m_windowForm.Dispose();
        }
Example #20
0
        private void StartRenderLoop()
        {
            var renderMethodInfo = _coreType.GetMethod("Render");

            RenderLoop.Run(_form, () =>
            {
                try
                {
                    renderMethodInfo.Invoke(_coreTypeInstance, null);
                }
                catch (Exception e)
                {
                    LogError(e);
                }
            });
        }
Example #21
0
 public void Run()
 {
     try
     {
         _overlayForm.Show();
         RenderLoop.Run(_dxForm, RenderCallback);
     }
     catch (System.ArgumentException ex)
     {
         MessageBox.Show(string.Format("Exception running DirectX host window.\r\n{0}", ex.Message), "DirectX Host", MessageBoxButtons.OK, MessageBoxIcon.Error);
     }
     catch (Exception ex)
     {
         MessageBox.Show(string.Format("Exception running DirectX host window.\r\n{0}", ex.Message), "DirectX Host", MessageBoxButtons.OK, MessageBoxIcon.Error);
     }
 }
Example #22
0
        public void Run()
        {
            Clock.Start();
            RenderLoop.Run(Mainform, () =>
            {
                D2dRenderTarget.BeginDraw();
                D2dRenderTarget.Clear(Color.Gray);

                OnUpDate();
                Render();
                Draw();


                D2dRenderTarget.EndDraw();
                SwapChain.Present(0, PresentFlags.None);
            });
        }
Example #23
0
        public void Run()
        {
            Setup();
            Logger.Log("--- Game Init ---");
            Initialize();
            Logger.Log("Game initializing done.");
            Global.IsRunning = true;
            Global.Timer.Start();

            RenderLoop.Run(Form, InternalUpdate);

            Logger.Log("Loop ended.");
            Dispose();
            Exit();
            Logger.Log("All disposed.");
            Logger.Log("Game successfully exited");
        }
Example #24
0
        /// <summary>
        /// Runs the demo.
        /// </summary>
        public void Run(DemoConfiguration demoConfiguration)
        {
            Config = demoConfiguration ?? new DemoConfiguration();
            _form  = CreateForm(Config);

            // disable resizing and center on screen
            _form.FormBorderStyle = FormBorderStyle.FixedSingle;
            _form.MaximizeBox     = false;
            _form.StartPosition   = FormStartPosition.CenterScreen;

            Initialize(Config);

            var isFormClosed = false;

            _form.MouseClick += HandleMouseClick;
            _form.KeyDown    += HandleKeyDown;
            _form.KeyUp      += HandleKeyUp;
            _form.Resize     += (o, args) =>
            {
                _currentFormWindowState = _form.WindowState;
            };

            // ReSharper disable once ImplicitlyCapturedClosure
            _form.Closed += (o, args) => isFormClosed = true;

            LoadContent();

            _clock.Start();
            BeginRun();
            RenderLoop.Run(_form, () =>
            {
                if (isFormClosed)
                {
                    return;
                }

                OnUpdate();
                Render();
            });

            UnloadContent();
            EndRun();

            // Dispose explicity
            Dispose();
        }
Example #25
0
        protected override void Show()
        {
            RenderLoop.Run(renderForm, () => {
                timer.Frame();
                fps.Frame();
                cpu.Frame();

                if (!graphics.Frame(fps.FPS, cpu.CpuPercentage, timer.FrameTime))
                {
                    throw new InvalidOperationException();
                }
                if (!graphics.Render())
                {
                    throw new InvalidOperationException();
                }
            });
        }
 public void Run()
 {
     RenderLoop.Run(this, () =>
     {
         // Another option is not use RenderLoop at all and call Render when needed, and call here every tick for animations
         if (bRender)
         {
             Render();
         }
         if (mouseMoved)
         {
             OnMouseMove(lastEvent);
             mouseMoved = false;
         }
         // Application.DoEvents();
     });
 }
Example #27
0
        public void Run()
        {
            InitialiseForm();
            InitialiseComponents();
            Show();

            RenderLoop.Run(this, () => {
                if (isResizing || device == null)
                {
                    return;
                }

                BeginDraw();
                Draw();
                EndDraw();
            });
        }
Example #28
0
        /// <summary>
        /// Runs the program.
        /// </summary>
        private void Run()
        {
            _form.Show();

            RenderLoop.Run(_form, () =>
            {
                _game.Step(false);

                _renderer.Render();

                if (_stopping)
                {
                    _game.StopLevel();
                    _stopping = false;
                }
            });
        }
Example #29
0
        public static void Initiate()
        {
            var form = new RenderForm("SharpDX - MiniCube Direct3D9 Sample");
            // Creates the Device
            var direct3D = new Direct3D();
            var device   = new SharpDX.Direct3D9.Device(direct3D, 0, DeviceType.Hardware, form.Handle, CreateFlags.HardwareVertexProcessing, new PresentParameters(form.ClientSize.Width, form.ClientSize.Height));

            // Prepare matrices
            var view     = Matrix.LookAtLH(new Vector3(0, 0, -5), new Vector3(0, 0, 0), Vector3.UnitY);
            var proj     = Matrix.PerspectiveFovLH((float)Math.PI / 4.0f, form.ClientSize.Width / (float)form.ClientSize.Height, 0.1f, 100.0f);
            var viewProj = Matrix.Multiply(view, proj);

            // Use clock
            var clock = new Stopwatch();

            clock.Start();

            string Game = "WOT";

            switch (Game)
            {
            case "WOT":
                _list.Add(new DrawTextureAndCatchIt(SharpDX.Direct3D9.Texture.FromFile(device, "Resources/error_enter.png"), SharpDX.Direct3D9.Texture.FromFile(device, "Resources/error_6473.png"), new SharpDX.Mathematics.Interop.RawRectangle(1, 1, 100, 100), new SharpDX.Vector3(100, 100, 0)));
                _list.Add(new DrawTextureAndCatchIt(SharpDX.Direct3D9.Texture.FromFile(device, "Resources/edit-addenter.png"), SharpDX.Direct3D9.Texture.FromFile(device, "Resources/edit-add.png"), new SharpDX.Mathematics.Interop.RawRectangle(1, 1, 100, 100), new SharpDX.Vector3(100, 400, 0)));
                break;
            }
            //choose game


            RenderLoop.Run(form, () =>
            {
                device.Clear(ClearFlags.Target | ClearFlags.ZBuffer, Color.Black, 1.0f, 0);
                device.BeginScene();
                foreach (DrawTextureAndCatchIt dr in _list)
                {
                    dr.CheckCursorPosition();
                    dr.DrawTexture(device);
                }

                device.EndScene();
                device.Present();
            });

            device.Dispose();
            direct3D.Dispose();
        }
Example #30
0
        static void Main()
        {
            using (var window = new LayeredRenderWindow()
            {
                Text = "Hello World", DragMoveEnabled = true
            })
            {
                var bottomRightFont = new DWrite.TextFormat(window.XResource.DWriteFactory, "Consolas", 16.0f)
                {
                    FlowDirection = DWrite.FlowDirection.BottomToTop,
                    TextAlignment = DWrite.TextAlignment.Trailing,
                };
                var bottomLeftFont = new DWrite.TextFormat(window.XResource.DWriteFactory, "Consolas",
                                                           DWrite.FontWeight.Normal, DWrite.FontStyle.Italic, 24.0f)
                {
                    FlowDirection = DWrite.FlowDirection.BottomToTop,
                    TextAlignment = DWrite.TextAlignment.Leading,
                };

                window.Draw += Draw;
                RenderLoop.Run(window, () => window.Render(1, 0));

                void Draw(RenderWindow _, Direct2D.DeviceContext target)
                {
                    XResource res = window.XResource;

                    target.Clear(Color.Transparent);
                    RectangleF rectangle = new RectangleF(0, 0, target.Size.Width, target.Size.Height);

                    target.DrawRectangle(
                        rectangle,
                        res.GetColor(Color.Blue));

                    target.DrawText("😀😁😂🤣😃😄😅😆😉😊😋😎",
                                    res.TextFormats[36], rectangle, res.GetColor(Color.Blue),
                                    Direct2D.DrawTextOptions.EnableColorFont);

                    target.DrawText($"{window.XResource.DurationSinceStart:mm':'ss'.'ff}\nFPS: {window.RenderTimer.FramesPerSecond:F1}",
                                    bottomRightFont, rectangle, res.GetColor(Color.Red));

                    target.DrawText("Hello World",
                                    bottomLeftFont, rectangle, res.GetColor(Color.Purple));
                }
            }
        }