Exemple #1
0
        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]);
        }
Exemple #3
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);
        }
Exemple #4
0
 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);
        }