コード例 #1
0
        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();
        }
コード例 #2
0
        /// <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>();
        }