Example #1
0
        internal Scene3D(Game game, MapFile mapFile, int randomSeed)
            : this(game, () => game.Viewport, game.InputMessageBuffer, randomSeed, false, mapFile)
        {
            var contentManager = game.ContentManager;

            _players = Player.FromMapData(mapFile.SidesList.Players, game.AssetStore).ToList();

            // TODO: This is completely wrong.
            LocalPlayer = _players.FirstOrDefault();

            _teams = (mapFile.SidesList.Teams ?? mapFile.Teams.Items)
                     .Select(team => Team.FromMapData(team, _players))
                     .ToList();

            Audio            = game.Audio;
            AssetLoadContext = game.AssetStore.LoadContext;

            Lighting = new WorldLighting(
                mapFile.GlobalLighting.LightingConfigurations.ToLightSettingsDictionary(),
                mapFile.GlobalLighting.Time);

            LoadObjects(
                game.AssetStore.LoadContext,
                Terrain.HeightMap,
                mapFile.ObjectsList.Objects,
                MapFile.NamedCameras,
                _teams,
                out var waypoints,
                out var roads,
                out var bridges,
                out var cameras);

            Roads     = roads;
            Bridges   = bridges;
            Waypoints = waypoints;
            Cameras   = cameras;

            PlayerScripts = mapFile
                            .GetPlayerScriptsList()
                            .ScriptLists
                            .Select(s => new MapScriptCollection(s))
                            .ToArray();

            KeyBindingController = new KeyBindingController(contentManager);

            CameraController = new RtsCameraController(game.AssetStore.GameData.Current, KeyBindingController)
            {
                TerrainPosition = Terrain.HeightMap.GetPosition(
                    Terrain.HeightMap.Width / 2,
                    Terrain.HeightMap.Height / 2)
            };

            contentManager.GraphicsDevice.WaitForIdle();
        }
Example #2
0
        public RtsCameraController(GameData gameData, KeyBindingController keyBindingController)
        {
            _defaultHeight = gameData.DefaultCameraMaxHeight > 0
                ? gameData.DefaultCameraMaxHeight
                : gameData.CameraHeight;
            _pitchAngle = MathUtility.ToRadians(90 - gameData.CameraPitch);

            var yaw = gameData.CameraYaw;

            SetLookDirection(new Vector3(
                                 MathUtility.Sin(yaw),
                                 MathUtility.Cos(yaw),
                                 0));

            _keyBindingController = keyBindingController;
        }