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(); }
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; }