Пример #1
0
        public override void Initialize()
        {
            float aspectRatio = game.GraphicsDevice.Viewport.AspectRatio;

            #region Load Models
            //Load Models

            Vector3 initPlayerPosition = new Vector3(-500, 550, 500);
            player = new Player(game, initPlayerPosition, 5f);
            terrain = new Terrain(game);

            game.Components.Add(player);
            game.Components.Add(terrain);

            #endregion

            #region Load Cameras
            //Load Cameras
            thirdPersonCam = new _3rdPersonCam(game, (player.getPosition()), player, Vector3.Up, aspectRatio);
            flyByCam = new StaticCam(game, player, Vector3.Up, aspectRatio);
            firstPersonCam = new FirstPersonCam(game, player.getPosition(), Vector3.Up, aspectRatio);
            availableCameras = new Queue<Camera>();
            availableCameras.Enqueue(thirdPersonCam);
            availableCameras.Enqueue(flyByCam);

            currentCam = availableCameras.Dequeue();
            #endregion

            #region setup game objects cameras and draw order

            player.setCamera(currentCam);
            player.DrawOrder = 3;

            terrain.setCamera(currentCam);
            terrain.DrawOrder = 2;

            skybox = new Skybox(game, currentCam, "Space");
            skybox.DrawOrder = 1;
            game.Components.Add(skybox);
            #endregion

            #region initialize controls
            input = new Control(game, player, thirdPersonCam, false);
            game.Components.Add(input);
            #endregion

            collisionDetector = new Collision(game);
            game.Components.Add(collisionDetector);

            terrainCollisionDetector = new TerrainCollision(game, terrain);
            game.Components.Add(terrainCollisionDetector);

            #region Records
            //places records on the land scape randomly
            Random rand = new Random();
            for (int i = 0; i < 10; i++)
            {
                Vector3 pos = new Vector3(rand.Next(-255*30, 0), 0, rand.Next(0, 255*30 ));
                pos.Y = terrain.getTerrainHeight(pos) + 30;
                Record newRecord = new Record(game, pos);
                recordList.Add(newRecord);
                newRecord.setCamera(currentCam);
                newRecord.DrawOrder = 3;
                game.Components.Add(newRecord);
            }
            #endregion

            optionsHaveChanged();
        }