protected override void Update(GameTime gameTime) { Time.Update(gameTime); InputManager.Update(); if (GamePad.GetState(PlayerIndex.One).Buttons.Back == ButtonState.Pressed || Keyboard.GetState().IsKeyDown(Keys.Escape)) Exit(); if (InputManager.IsKeyDown(Keys.W)) camera.Transform.LocalPosition += camera.Transform.Forward * Time.ElapsedGameTime; if (InputManager.IsKeyDown(Keys.S)) camera.Transform.LocalPosition += camera.Transform.Backward * Time.ElapsedGameTime; if (InputManager.IsKeyDown(Keys.A)) camera.Transform.Rotate(camera.Transform.Up, Time.ElapsedGameTime); if (InputManager.IsKeyDown(Keys.D)) camera.Transform.Rotate(camera.Transform.Down, Time.ElapsedGameTime); if (InputManager.IsKeyDown(Keys.Q)) // look up camera.Transform.Rotate(Vector3.Right, Time.ElapsedGameTime); if (InputManager.IsKeyDown(Keys.E)) // look down camera.Transform.Rotate(Vector3.Left, Time.ElapsedGameTime); camera.Transform.LocalPosition = new Vector3( camera.Transform.LocalPosition.X, terrain.GetAltitude(camera.Transform.LocalPosition), camera.Transform.LocalPosition.Z) + Vector3.Up; base.Update(gameTime); }
public Agent(TerrainRenderer terrain, ContentManager Content, Camera camera, GraphicsDevice graphicsDevice, Light light) : base() { Terrain = terrain; this.Content = Content; path = null; //... Potentially need to add more here // *** Adding GameObject Elements *** Rigidbody rigidbody = new Rigidbody(); rigidbody.Transform = Transform; rigidbody.Mass = 1; rigidbody.Transform.LocalScale = new Vector3(3.0f, 3.0f, 3.0f); Add <Rigidbody>(rigidbody); model = Content.Load <Model>("Box"); (model.Meshes[0].Effects[0] as BasicEffect).DiffuseColor = Color.Black.ToVector3(); Renderer renderer = new Renderer(model, rigidbody.Transform, camera, Content, graphicsDevice, light, 1, null, 20f, null); Add <Renderer>(renderer); SphereCollider sphereCollider = new SphereCollider(); sphereCollider.Radius = renderer.ObjectModel.Meshes[0].BoundingSphere.Radius; sphereCollider.Transform = Transform; Add <Collider>(sphereCollider); search = new AStarSearch(gridSize, gridSize); float gridW = Terrain.size.X / gridSize; float gridH = Terrain.size.Y / gridSize; for (int i = 0; i < gridSize; i++) { for (int j = 0; j < gridSize; j++) { Vector3 pos = new Vector3(gridW * j + gridW / 2 - terrain.size.X / 2, 0.0f, gridH * i + gridH / 2 - terrain.size.Y / 2f); if (Terrain.GetAltitude(pos) > 1.0) { search.Nodes[i, j].Passable = false; } } } //Sets first path node RandomPathFinding(); rigidbody.Transform.LocalPosition = GetGridPosition(path[0]); }
// Static method for creating new enemies public static GameObject3d createEnemy(GameObject3d player) { GameObject3d g = GameObject3d.Initialize(); Enemy e = new Enemy(player); g.addBehavior(e); g.mesh = enemyModel; g.material = new StandardLightingMaterial(); (g.material as StandardLightingMaterial).diffuseColor = Vector3.Up; //SETUPSEARCH int size = 100; e.search = new AStarSearch(size, size); // size of grid // use heightmap foreach (AStarNode node in e.search.Nodes) { node.Passable = (terrain.GetAltitude(node.Position) < 0.5); } //****** GameObject3d child = GameObject3d.Initialize(); child.transform.LocalPosition = g.transform.LocalPosition; child.transform.LocalPosition += Vector3.Forward; child.transform.LocalScale *= 0.5f; child.transform.Parent = g.transform; e.heldObject = child; child.mesh = enemyModel; StandardLightingMaterial s = new StandardLightingMaterial(); s.ambientColor = Vector3.Down; child.material = s; g.transform.LocalScale = Vector3.One * 2; e.reposition(); return(g); }
protected override void Update(GameTime gameTime) { Time.Update(gameTime); InputManager.Update(); if (InputManager.IsKeyDown(Keys.Escape)) { Exit(); } // Control the camera if (InputManager.IsKeyDown(Keys.W)) // move forward { camera.Transform.LocalPosition += camera.Transform.Forward * Time.ElapsedGameTime; } if (InputManager.IsKeyDown(Keys.S)) // move backwars { camera.Transform.LocalPosition += camera.Transform.Backward * Time.ElapsedGameTime; } if (InputManager.IsKeyDown(Keys.A)) // rotate left { camera.Transform.Rotate(Vector3.Up, Time.ElapsedGameTime); } if (InputManager.IsKeyDown(Keys.D)) // rotate right { camera.Transform.Rotate(Vector3.Down, Time.ElapsedGameTime); } if (InputManager.IsKeyDown(Keys.Q)) // look up { camera.Transform.Rotate(Vector3.Right, Time.ElapsedGameTime); } if (InputManager.IsKeyDown(Keys.E)) // look down { camera.Transform.Rotate(Vector3.Left, Time.ElapsedGameTime); } camera.Transform.LocalPosition = new Vector3( camera.Transform.LocalPosition.X, // **** Lab 10 ************************************************** terrain.GetAltitude(camera.Transform.LocalPosition), //*************************************************************** camera.Transform.LocalPosition.Z) + Vector3.Up; base.Update(gameTime); }
/// <summary> /// Allows the game to perform any initialization it needs to before starting to run. /// This is where it can query for any required services and load any non-graphic /// related content. Calling base.Initialize will enumerate through any components /// and initialize them as well. /// </summary> protected override void Initialize() { Time.Initialize(); InputManager.Initialize(); ScreenManager.Initialize(graphics); cameras = new List <Camera>(); for (int i = 0; i < 2; i++) { cameras.Add(new Camera()); cameras[i].Transform = new Transform(); } cameras[0].Transform.LocalPosition = Vector3.Up * 60; cameras[0].Transform.Rotate(Vector3.Left, MathHelper.PiOver2); terrain = new TerrainRenderer( Content.Load <Texture2D>("mazeH2"), Vector2.One * 100, Vector2.One * 200); terrain.NormalMap = Content.Load <Texture2D>("mazeN2"); terrain.Transform = new Transform(); terrain.Transform.LocalScale *= new Vector3(1, 5, 1); agents = new List <Agent>(); effect = Content.Load <Effect>("TerrainShader"); effect.Parameters["AmbientColor"].SetValue(new Vector3(0.1f, 0.1f, 0.1f)); effect.Parameters["DiffuseColor"].SetValue(new Vector3(0.3f, 0.1f, 0.1f)); effect.Parameters["SpecularColor"].SetValue(new Vector3(0, 0, 0.2f)); effect.Parameters["Shininess"].SetValue(20f); search = new AStarSearch(gridSize, gridSize); foreach (AStarNode node in search.Nodes) { if (terrain.GetAltitude(node.Position) > 0) { node.Passable = false; } } light = new Light(); light.Transform = new Transform(); texture = Content.Load <Texture2D>("Square"); cube = Content.Load <Model>("Box2"); sphere = Content.Load <Model>("Sphere"); player = new Player(terrain, Content, cameras[0], GraphicsDevice, light); player.Add <BoxCollider>(); Renderer playerRenderer = new Renderer(cube, player.Rigidbody.Transform, cameras[0], Content, GraphicsDevice, light, 1, "SimpleShading", 20f, texture); player.Add <Renderer>(playerRenderer); for (int i = 0; i < 3; i++) { agents.Add(new Agent(terrain, Content, cameras[0], GraphicsDevice, light)); agents[i].Add <Rigidbody>(); Renderer agentRenderer = new Renderer(sphere, agents[i].Rigidbody.Transform, cameras[0], Content, GraphicsDevice, light, 1, "SimpleShading", 20f, texture); agents[i].Add <Renderer>(agentRenderer); while (!(agents[i].search.Start = agents[i].search.Nodes[random.Next(agents[i].search.Cols), random.Next(agents[i].search.Rows)]).Passable) { ; } } bomb = new Bomb(terrain, Content, cameras[0], graphics.GraphicsDevice, light, player); bomb.Add <Rigidbody>(); Renderer bombRenderer = new Renderer(cube, bomb.Rigidbody.Transform, cameras[0], Content, graphics.GraphicsDevice, light, 1, "SimpleShading", 20f, texture); bomb.Add <Renderer>(bombRenderer); int randomPos2 = (int)random.Next(0, 19); while (!(bomb.search.Start = bomb.search.Nodes[random.Next(bomb.search.Cols), random.Next(bomb.search.Rows)]).Passable) { ; } base.Initialize(); }
protected override void Update(GameTime gameTime) { if (GamePad.GetState(PlayerIndex.One).Buttons.Back == ButtonState.Pressed || Keyboard.GetState().IsKeyDown(Keys.Escape)) { Exit(); } time.Update(gameTime); InputManager.Update(); if (InputManager.IsKeyDown(Keys.W)) { camera.Transform.LocalPosition += camera.Transform.Forward * time.ElapsedGameTime; } if (InputManager.IsKeyDown(Keys.S)) { camera.Transform.LocalPosition += camera.Transform.Backward * time.ElapsedGameTime; } if (InputManager.IsKeyDown(Keys.A)) { camera.Transform.Rotate(Vector3.Up, time.ElapsedGameTime); } if (InputManager.IsKeyDown(Keys.D)) { camera.Transform.Rotate(Vector3.Down, time.ElapsedGameTime); } camera.Transform.LocalPosition = new Vector3(camera.Transform.LocalPosition.X, terrain.GetAltitude(camera.Transform.LocalPosition), camera.Transform.LocalPosition.Z); base.Update(gameTime); }