private void HandlePlayerInput(Player player, GameTime gameTime) { // Process user keyboard and gamepad events that relate to the render // state of the the stage currentGamePadState = GamePad.GetState(PlayerIndex.One); if (currentGamePadState.IsConnected) { if (IsButtonPressed(Buttons.A)) nextCamera(); else if (IsButtonPressed(Buttons.B)) Fog = !Fog; else if (IsButtonPressed(Buttons.X)) Exit(); else if (IsButtonPressed(Buttons.Y)) FixedStepRendering = !FixedStepRendering; oldGamePadState = currentGamePadState; } else { currentKeyboardState = Keyboard.GetState(); if (IsKeyPressed(Keys.Escape)) Exit(); else if (IsKeyPressed(Keys.B)) DrawBoundingSpheres = !DrawBoundingSpheres; else if (IsKeyPressed(Keys.C)) nextCamera(); else if (IsKeyPressed(Keys.F)) Fog = !Fog; else if (IsKeyPressed(Keys.H)) { inspector.ShowHelp = !inspector.ShowHelp; inspector.ShowMatrices = false; } else if (IsKeyPressed(Keys.I)) inspector.showInfo(); else if (IsKeyPressed(Keys.M)) { inspector.ShowMatrices = !inspector.ShowMatrices; inspector.ShowHelp = false; } else if (IsKeyPressed(Keys.T)) FixedStepRendering = !FixedStepRendering; else if (IsKeyPressed(Keys.Y)) YonFlag = !YonFlag; oldKeyboardState = currentKeyboardState; // Update saved state. } }
/// <summary> /// Set GraphicDevice display and rendering BasicEffect effect. /// Create SpriteBatch, font, and font positions. /// Creates the traceViewport to display information and the sceneViewport /// to render the environment. /// Create and add all DrawableGameComponents and Cameras. /// </summary> protected override void LoadContent() { display = graphics.GraphicsDevice; effect = new BasicEffect(display); // Set up Inspector display spriteBatch = new SpriteBatch(display); // Create a new SpriteBatch inspectorFont = Content.Load<SpriteFont>("Courier New"); // load font // viewports defaultViewport = GraphicsDevice.Viewport; inspectorViewport = defaultViewport; sceneViewport = defaultViewport; inspectorViewport.Height = InfoPaneSize * inspectorFont.LineSpacing; inspectorProjection = Matrix.CreatePerspectiveFieldOfView((float)Math.PI / 4.0f, inspectorViewport.Width / inspectorViewport.Height, 1.0f, 200.0f); sceneViewport.Height = defaultViewport.Height - inspectorViewport.Height; sceneViewport.Y = inspectorViewport.Height; sceneProjection = Matrix.CreatePerspectiveFieldOfView((float)Math.PI / 4.0f, sceneViewport.Width / sceneViewport.Height, 1.0f, 1000.0f); // create Inspector display Texture2D inspectorBackground = Content.Load<Texture2D>("inspectorBackground"); inspector = new Inspector(display, inspectorViewport, inspectorFont, Color.Black, inspectorBackground); // create information display strings // help strings inspector.setInfo(0, "AGXNASKv4 -- Academic Graphics XNA Starter Kit for CSUN Comp 565 assignments."); inspector.setInfo(1, "Press keyboard for input (not case sensitive 'H' 'h')"); inspector.setInfo(2, "Inspector toggles: 'H' help or info 'M' matrix or info 'I' displays next info pane."); inspector.setInfo(3, "Arrow keys move the player in, out, left, or right. 'R' resets player to initial orientation."); inspector.setInfo(4, "Stage toggles: 'B' bounding spheres, 'C' cameras, 'F' fog, 'T' updates, 'Y' yon"); // initialize empty info strings for (int i = 5; i < 20; i++) inspector.setInfo(i, " "); inspector.setInfo(5, "matrics info pane, initially empty"); inspector.setInfo(10, "first info pane, initially empty"); inspector.setInfo(15, "second info pane, initially empty"); // set blending for bounding sphere drawing blending = new BlendState(); blending.ColorSourceBlend = Blend.SourceAlpha; blending.ColorDestinationBlend = Blend.InverseSourceAlpha; blending.ColorBlendFunction = BlendFunction.Add; notBlending = new BlendState(); notBlending = display.BlendState; // Create and add stage components // Create a top-down "Whole stage" camera view, make it first camera in collection. topDownCamera = new Camera(this, Camera.CameraEnum.TopDownCamera); camera.Add(topDownCamera); boundingSphere3D = Content.Load<Model>("boundingSphereV3"); wayPoint3D = Content.Load<Model>("100x50x100Marker"); //treasure_chest100x50x100Marker // Create required entities: collidable = new List<Object3D>(); terrain = new Terrain(this, "terrain", "heightTexture1", "colorTexture1"); Components.Add(terrain); // Load Avatar mesh objects, Avatar meshes do not have textures player = new Player(this, "Chaser", new Vector3(510 * spacing, terrain.surfaceHeight(510, 507), 507 * spacing), new Vector3(0, 1, 0), 0.80f, "redAvatarV3"); // face looking diagonally across stage Components.Add(player); }