public void GifStuff(GameTime gameTime) { if (Keyboard.GetState().IsKeyDown(Keys.F4)) { //only send a frame every 250ms lastUpdate += gameTime.ElapsedGameTime.TotalMilliseconds; if (lastUpdate > 30) { gifSaveRequested = true; gif.AddFrame(30); Debug.Log("added frame", Debug.LogType.Warning); lastUpdate = 0; } } else if (gifSaveRequested) { Debug.Log("Saving gif", Debug.LogType.Warning); gifThread = new Thread(() => gif.WriteAllFrames()); if (!gifThread.IsAlive) { gifThread.Start(); } else { gifThread.Join(); Debug.Log("Saved Gif", Debug.LogType.Error); } gifSaveRequested = false; } }
/// <summary> /// Allows the game to run logic such as updating the world, /// checking for collisions, gathering input, and playing audio. /// </summary> /// <param name="gameTime">Provides a snapshot of timing values.</param> protected override void Update(GameTime gameTime) { if (GamePad.GetState(PlayerIndex.One).Buttons.Back == ButtonState.Pressed || Keyboard.GetState().IsKeyDown(Keys.Escape)) { Exit(); } if (Keyboard.GetState().IsKeyDown(Keys.F12)) { //only send a frame every 250ms lastUpdate += gameTime.ElapsedGameTime.TotalMilliseconds; if (lastUpdate > 250) { gifSaveRequested = true; gif.AddFrame(250); lastUpdate = 0; } } else if (gifSaveRequested) { gif.WriteAllFrames(); gifSaveRequested = false; } if (Keyboard.GetState().IsKeyDown(Keys.F9)) { if (!doSingleScreenshot) { ssh.SaveScreenshot(); doSingleScreenshot = true; } } if (Keyboard.GetState().IsKeyUp(Keys.F9)) { doSingleScreenshot = false; } // TODO: Add your update logic here rot += .05f; if (rot > 180) { rot = 0; } base.Update(gameTime); }