private void DoGameLoop() { if (!HasInitted) { return; } GlobalUIManager.fps.Start(); GraphicsRenderer.DeviceContext.ClearRenderTargetView( GraphicsRenderer.RenderTarget, new Color4(0.0f, .4f, 0.0f)); GraphicsRenderer.DeviceContext.ClearDepthStencilView( GraphicsRenderer.DepthView, DepthStencilClearFlags.Depth, 1.0f, 0); if (NetworkClient.PendingReset) { HasInitted = false; hasConnected = false; NetworkClient.PendingReset = false; GraphicsRenderer.panel1.Visible = true; GraphicsRenderer.panel1.Show(); GraphicsRenderer.panel1.Focus(); return; } // Receive any packets from the server. ReceivePackets(); // If there's an active player right now. if (ActivePlayer != null) { // Update input events. InputManager.Update(); //If enough time has passed since the last packet, send. if (sendTimer.ElapsedMilliseconds > sendDelay) { // Send any packets to the server. SendRequest(); sendTimer.Restart(); } } // Update all objects. Update(); // Draw everythhing. Render(); GlobalUIManager.Update(); UIManagerSpriteRenderer.Update(); UIManagerSpriteRenderer.SpriteRenderer.Flush(); UIManagerSpriteRenderer.SpriteRenderer.ClearReorderBuffer(); GraphicsRenderer.SwapChain.Present(0, PresentFlags.None); GlobalUIManager.fps.StopAndCalculateFps(); AudioManager.Update(); }
/// <summary> /// Initialize the graphics manager /// </summary> public static void Init(Camera activeCamera) { ActiveCamera = activeCamera; ParticleSystemManager.Init(); UIManagerSpriteRenderer.Init(); // initialize with 20 lights; to change the number of lights, need to change it in the shader manually too ActiveLightSystem = new Light(20); { LightParameters light0 = ActiveLightSystem.GetLightParameters(0); light0.UseDirectionalPreset(); light0.intensities = new Vector4(1.3f, 1.2f, 1.0f, 0); light0.status = LightParameters.STATUS_ON; light0.position = Vector4.Normalize(new Vector4(-1, 1, 0, 0)); } { LightParameters light1 = ActiveLightSystem.GetLightParameters(1); light1.UseDirectionalPreset(); light1.status = LightParameters.STATUS_ON; light1.intensities = new Vector4(0.8f, 0.8f, 0.8f, 0); light1.position = Vector4.Normalize(new Vector4(1, -1, 0, 0)); } { LightParameters light2 = ActiveLightSystem.GetLightParameters(2); light2.UseDirectionalPreset(); light2.status = LightParameters.STATUS_ON; light2.intensities = new Vector4(1.2f, 1.2f, 1.2f, 0); light2.position = Vector4.Normalize(new Vector4(-1, 0, 1, 0)); } { LightParameters light3 = ActiveLightSystem.GetLightParameters(3); light3.UseDirectionalPreset(); light3.status = LightParameters.STATUS_ON; light3.intensities = new Vector4(1.3f, 1.3f, 1.3f, 0); light3.position = Vector4.Normalize(new Vector4(1, 0, -1, 0)); } LoadAllShaders(); ParticleSystems = new List <BaseParticleSystem>(); }