/// <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 (!DataLogger.Initialized && collectingData) { DataLogger.Initialize(username, accessDirectory, this, gameTime); } if (kAccess != null) { kAccess.Update(gameTime); } if (wAccess != null) { wAccess.Update(gameTime); } #region Damper /* * float damper = 1f; * if (Keyboard.GetState().IsKeyDown(Keys.LeftShift)) * { * damper = 0.5f; * } * else if (Keyboard.GetState().IsKeyDown(Keys.LeftControl)) * { * damper = 0.25f; * }*/ #endregion #region Door stuff /** * if (Keyboard.GetState().IsKeyDown(Keys.Enter) && lastState.IsKeyUp(Keys.Enter)) * { * Ghost ghost = new Ghost(this, new Vector3(camera.Position.X + (3 * (float)Math.Sin(camrotation)), * baseY, camera.Position.Z + (3 * (float)Math.Cos(camrotation))), camera); * * ghost.scale = 10; * ghostList.Add(ghost); * } * if (Keyboard.GetState().IsKeyDown(Keys.R) && doorList.Count > 0) * { * Door d = doorList[selDoor]; * d.rotation += 0.015f * damper; * d.rotation %= MathHelper.TwoPi; * } * else if (Keyboard.GetState().IsKeyDown(Keys.T) && doorList.Count > 0) * { * Door d = doorList[selDoor]; * d.rotation -= 0.015f * damper; * d.rotation %= MathHelper.TwoPi; * } * if (Keyboard.GetState().IsKeyDown(Keys.W) && doorList.Count > 0) * { * Door d = doorList[selDoor]; * d.position = new Vector3(d.position.X, d.position.Y, d.position.Z + speed/2 * damper); * * } * else if (Keyboard.GetState().IsKeyDown(Keys.S) && doorList.Count > 0) * { * Door d = doorList[selDoor]; * d.position = new Vector3(d.position.X, d.position.Y, d.position.Z - speed/2 * damper); * * } * if (Keyboard.GetState().IsKeyDown(Keys.A) && doorList.Count > 0) * { * Door d = doorList[selDoor]; * d.position = new Vector3(d.position.X + speed/2 * damper, d.position.Y, d.position.Z); * * } * else if (Keyboard.GetState().IsKeyDown(Keys.D) && doorList.Count > 0) * { * Door d = doorList[selDoor]; * d.position = new Vector3(d.position.X - speed/2 * damper, d.position.Y, d.position.Z); * * } * if (Keyboard.GetState().IsKeyDown(Keys.Z) && doorList.Count > 0) * { * Door d = doorList[selDoor]; * d.position = new Vector3(d.position.X, d.position.Y - speed/2 * damper, d.position.Z); * * } * else if (Keyboard.GetState().IsKeyDown(Keys.X) && doorList.Count > 0) * { * Door d = doorList[selDoor]; * d.position = new Vector3(d.position.X, d.position.Y + speed/2 * damper, d.position.Z); * * } * if (Keyboard.GetState().IsKeyDown(Keys.F) && doorList.Count > 0) * { * Door d = doorList[selDoor]; * d.scale += 0.01f * damper; * * } * else if (Keyboard.GetState().IsKeyDown(Keys.G) && doorList.Count > 0) * { * Door d = doorList[selDoor]; * d.scale -= 0.01f * damper; * * } * if (Keyboard.GetState().IsKeyDown(Keys.Q) && lastState.IsKeyUp(Keys.Q) && doorList.Count > 0) * { * Door d = doorList[selDoor]; * d.initRotation += MathHelper.PiOver2; * * } * else if (Keyboard.GetState().IsKeyDown(Keys.E) && lastState.IsKeyUp(Keys.E) && doorList.Count > 0) * { * Door d = doorList[doorList.Count - 1]; * d.initRotation -= MathHelper.PiOver2; * } * * if (Keyboard.GetState().IsKeyDown(Keys.OemPeriod) && lastState.IsKeyUp(Keys.OemPeriod) && selDoor < doorList.Count-1) * { * selDoor++; * } * else if (Keyboard.GetState().IsKeyDown(Keys.OemComma) && lastState.IsKeyUp(Keys.OemComma) && selDoor > 0) * { * selDoor--; * }**/ #endregion #region Movement Stuff (commented) /* * if (Keyboard.GetState().IsKeyDown(Keys.Left)) * { * camrotation += 0.035f * damper; * camrotation %= MathHelper.TwoPi; * camera.YRotation = camrotation; * } * else if (Keyboard.GetState().IsKeyDown(Keys.Right)) * { * camrotation -= 0.035f * damper; * camrotation %= MathHelper.TwoPi; * camera.YRotation = camrotation; * } * if (Keyboard.GetState().IsKeyDown(Keys.Up)) * { * camBobDuration += (float)gameTime.ElapsedGameTime.TotalSeconds*10; * * camera.Position = new Vector3(camera.Position.X + (speed * damper * (float)Math.Sin(camrotation)), * baseY + (float)Math.Sin(camBobDuration)/2f, * camera.Position.Z + (speed * damper * (float)Math.Cos(camrotation))); * } * else if (Keyboard.GetState().IsKeyDown(Keys.Down)) * { * camBobDuration += (float)gameTime.ElapsedGameTime.TotalSeconds * 10; * camera.Position = new Vector3(camera.Position.X - (speed * damper * (float)Math.Sin(camrotation)), * baseY + (float)Math.Sin(camBobDuration)/2f, * camera.Position.Z - (speed * damper * (float)Math.Cos(camrotation))); * } * * if (Keyboard.GetState().IsKeyDown(Keys.P)) * { * baseY += speed * damper / 2f; * camera.Position = new Vector3(camera.Position.X, baseY + (float)Math.Sin(camBobDuration), camera.Position.Z); * } * else if (Keyboard.GetState().IsKeyDown(Keys.L)) * { * baseY -= speed * damper / 2f; * camera.Position = new Vector3(camera.Position.X, baseY + (float)Math.Sin(camBobDuration), camera.Position.Z); * }*/ #endregion #region RenderDebug /* * if (Keyboard.GetState().IsKeyDown(Keys.M) && lastState.IsKeyUp(Keys.M) && fcrList.Count > 0) * { * displayingFCR = !displayingFCR; * }*/ #endregion if (Mouse.GetState().RightButton == Microsoft.Xna.Framework.Input.ButtonState.Pressed && inSeq && seqIt == -1) { seqIt = 0; StartTrial(Type.GetType("HarryPotterGame.Trials." + trialSequences[seqIt])); } if (Keyboard.GetState().IsKeyDown(Microsoft.Xna.Framework.Input.Keys.D0) && lastState.IsKeyUp(Microsoft.Xna.Framework.Input.Keys.D0)) { StartTrial(Type.GetType("HarryPotterGame.Trials.KCalibration")); } if (Keyboard.GetState().IsKeyDown(Microsoft.Xna.Framework.Input.Keys.D1) && lastState.IsKeyUp(Microsoft.Xna.Framework.Input.Keys.D1)) { StartTrial(Type.GetType("HarryPotterGame.Trials.P1")); } if (Keyboard.GetState().IsKeyDown(Microsoft.Xna.Framework.Input.Keys.D2) && lastState.IsKeyUp(Microsoft.Xna.Framework.Input.Keys.D2)) { StartTrial(Type.GetType("HarryPotterGame.Trials.G1")); } if (Keyboard.GetState().IsKeyDown(Microsoft.Xna.Framework.Input.Keys.D3) && lastState.IsKeyUp(Microsoft.Xna.Framework.Input.Keys.D3)) { StartTrial(Type.GetType("HarryPotterGame.Trials.D1")); } if (Keyboard.GetState().IsKeyDown(Microsoft.Xna.Framework.Input.Keys.D4) && lastState.IsKeyUp(Microsoft.Xna.Framework.Input.Keys.D4)) { StartTrial(Type.GetType("HarryPotterGame.Trials.P2")); } if (Keyboard.GetState().IsKeyDown(Microsoft.Xna.Framework.Input.Keys.D7) && lastState.IsKeyUp(Microsoft.Xna.Framework.Input.Keys.D7)) { StartTrial(Type.GetType("HarryPotterGame.Trials.P3")); } if (Keyboard.GetState().IsKeyDown(Microsoft.Xna.Framework.Input.Keys.D8) && lastState.IsKeyUp(Microsoft.Xna.Framework.Input.Keys.D8)) { StartTrial(Type.GetType("HarryPotterGame.Trials.D3")); } if (Keyboard.GetState().IsKeyDown(Microsoft.Xna.Framework.Input.Keys.Escape)) { this.Exit(); } if (Mouse.GetState().X < 20) { Mouse.SetPosition(20, Mouse.GetState().Y); } if (Mouse.GetState().X > GraphicsDevice.Viewport.Width - 20) { Mouse.SetPosition(GraphicsDevice.Viewport.Width - 20, Mouse.GetState().Y); } if (Mouse.GetState().Y < 20) { Mouse.SetPosition(Mouse.GetState().X, 20); } if (Mouse.GetState().Y > GraphicsDevice.Viewport.Height - 20) { Mouse.SetPosition(Mouse.GetState().X, GraphicsDevice.Viewport.Height - 20); } if (trial != null) { UpdateTrial(gameTime); } if (collectingData) { DataLogger.Update(gameTime); } if (wandCursor != null) { wandCursor.Update(gameTime); } /* * Input modes and gesture styles are defined and specified within this portion of the code */ switch (inputMode) { case InputMode.MOUSE: averagePoints.Insert(0, new Vector2(Mouse.GetState().X, Mouse.GetState().Y)); if (averagePoints.Count > pointCapacity) { averagePoints.RemoveAt(averagePoints.Count - 1); } cursorPos = Vector2.Zero; foreach (Vector2 pastPoint in averagePoints) { cursorPos += pastPoint; } cursorPos /= averagePoints.Count; if (Mouse.GetState().LeftButton == Microsoft.Xna.Framework.Input.ButtonState.Pressed) { if (Mouse.GetState().RightButton == Microsoft.Xna.Framework.Input.ButtonState.Pressed) { gesture = ManipMode.SELECTGRAB; } else { gesture = ManipMode.SELECT; } } else if (Mouse.GetState().RightButton == Microsoft.Xna.Framework.Input.ButtonState.Pressed) { gesture = ManipMode.GRAB; } else { gesture = ManipMode.NONE; } if (Mouse.GetState().MiddleButton == Microsoft.Xna.Framework.Input.ButtonState.Pressed) { gesture = ManipMode.SELECT; cursorPos = new Vector2(GraphicsDevice.Viewport.Width / 2, GraphicsDevice.Viewport.Height / 2); Mouse.SetPosition(GraphicsDevice.Viewport.Width / 2, GraphicsDevice.Viewport.Height / 2); } break; case InputMode.KINECT: averagePoints.Insert(0, kAccess.CursorPos); if (averagePoints.Count > pointCapacity) { averagePoints.RemoveAt(averagePoints.Count - 1); } cursorPos = Vector2.Zero; foreach (Vector2 pastPoint in averagePoints) { cursorPos += pastPoint; } cursorPos /= averagePoints.Count; if (Mouse.GetState().LeftButton == Microsoft.Xna.Framework.Input.ButtonState.Pressed) { if (Mouse.GetState().RightButton == Microsoft.Xna.Framework.Input.ButtonState.Pressed) { gesture = ManipMode.GRAB; } else { gesture = ManipMode.SELECT; } } else { gesture = ManipMode.NONE; } break; case InputMode.WAND: averagePoints.Insert(0, kAccess.CursorPos); if (averagePoints.Count > pointCapacity) { averagePoints.RemoveAt(averagePoints.Count - 1); } cursorPos = Vector2.Zero; foreach (Vector2 pastPoint in averagePoints) { cursorPos += pastPoint; } cursorPos /= averagePoints.Count; if (wAccess.SelectDetected) { gesture = ManipMode.SELECT; } else if (wAccess.GrabDetected) { gesture = ManipMode.GRAB; } else { gesture = ManipMode.NONE; } break; } lastState = Keyboard.GetState(); lastMouseState = Mouse.GetState(); if (wAccess != null) { lastWMState = wAccess.GetState(); } base.Update(gameTime); }