protected override void Update(GameTime gameTime) { networkHelper.Update(); KeyboardState keyboardState = Keyboard.GetState(); if (keyboardState.IsKeyDown(Keys.Escape)) // If ESC is pressed { this.Exit(); // Exit the game } if (!networkHelper.gameStart) { if (keyboardState.IsKeyDown(Keys.F1)) { networkHelper.SignInGamer(); } if (keyboardState.IsKeyDown(Keys.F2)) { networkHelper.CreateSession(); Host = true; camera = new Camera(this, hostPos); Components.Add(camera); // Add camera to components Player2 = new Vector3(100, 100, 100); playerModel = new BasicModel(Content.Load <Model>("spaceship")); } if (keyboardState.IsKeyDown(Keys.F3)) { networkHelper.FindSession(); Guest = true; camera = new Camera(this, guestPos); Components.Add(camera); // Add camera to components Player2 = new Vector3(100, 100, 100); playerModel = new BasicModel(Content.Load <Model>("spaceship")); } if (keyboardState.IsKeyDown(Keys.F4)) { networkHelper.AsyncFindSession(); Guest = true; camera = new Camera(this, guestPos); Components.Add(camera); // Add camera to components Player2 = new Vector3(100, 100, 100); playerModel = new BasicModel(Content.Load <Model>("spaceship")); } if (Mouse.GetState().LeftButton == ButtonState.Pressed && (gameTime.TotalGameTime.TotalSeconds - shotTimer) >= 1) { shotTimer = gameTime.TotalGameTime.TotalSeconds; bulletPos.Add(camera.cameraPosition); bulletVel.Add(camera.forward); x = true; } if (bulletPos.Count > 0) { bulletModel.Update(bulletPos[0]); } playerModel.Update(Player2); jumpPadModel1.Update(jumpPadLocation1); if (camera.angle != pAngle) { Vector3 newgunPosition = gunPosition - camera.cameraPosition; newgunPosition = Vector3.Transform(newgunPosition, Matrix.CreateRotationY(pAngle.Y - camera.angle.Y)); gunPosition = newgunPosition + camera.cameraPosition; } if (pAngle.X != camera.angle.X) { float dotprod, angle, degree; Vector3 tempAngle = gunPosition - camera.cameraPosition; tempAngle = Vector3.Transform(tempAngle, Matrix.CreateRotationY(0 - camera.angle.Y)); dotprod = Vector3.Dot(camera.angle, tempAngle); angle = (float)Math.Acos(dotprod); degree = angle * 180 / MathHelper.Pi; Console.WriteLine(degree); tempAngle = Vector3.Transform(tempAngle, Matrix.CreateRotationX(pAngle.X - camera.angle.X)); tempAngle = Vector3.Transform(tempAngle, Matrix.CreateRotationY(camera.angle.Y - 0)); tempAngle = tempAngle + camera.cameraPosition; } /*gunPosition = camera.cameraPosition; * gunPosition.Z -= 11; * gunPosition.X += 6; * gunPosition.Y -= 2;*/ gunPosition.Y = camera.cameraPosition.Y - 2; //gunPosition.X = camera.cameraPosition.X + 6; //gunPosition.Z = camera.cameraPosition.Z - 11; gun.Update(gunPosition); pAngle = camera.angle; } else { if (Mouse.GetState().LeftButton == ButtonState.Pressed && (gameTime.TotalGameTime.TotalSeconds - shotTimer) >= 1) { shotTimer = gameTime.TotalGameTime.TotalSeconds; bulletPos.Add(camera.cameraPosition); bulletVel.Add(camera.forward); x = true; } if (bulletPos.Count > 0) { bulletModel.Update(bulletPos[0]); } jumpPadModel1.Update(jumpPadLocation1); if (networkHelper.p2hit) { ++p2kills; ++p1deaths; if (Host) { camera.cameraPosition = hostPos; } else { camera.cameraPosition = guestPos; } } } if (networkHelper.SessionState == NetworkSessionState.Playing) { // Send any key pressed to the remote player networkHelper.SendMessage(camera.cameraPosition); // Recieve the keys from the remote player networkHelper.ReceiveMessage(); Player2 = networkHelper.Player2; playerModel.rot = networkHelper.rot; playerModel.Update(Player2); } bulletMove(gameTime); BulletCollision(); //check collision PlayerCollision(); if (camera.gameStart != networkHelper.gameStart) { camera.gameStart = networkHelper.gameStart; } base.Update(gameTime); }