internal Scene3D( Game game, MapFile mapFile, string mapPath, int randomSeed, Data.Map.Player[] mapPlayers, Data.Map.Team[] mapTeams, ScriptList[] mapScriptLists, GameType gameType) : this(game, () => game.Viewport, game.InputMessageBuffer, randomSeed, false, mapFile, mapPath) { var contentManager = game.ContentManager; PlayerManager.OnNewGame(mapPlayers, game, gameType); TeamFactory = new TeamFactory(); TeamFactory.Initialize(mapTeams, PlayerManager); 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, out var waypoints, out var roads, out var bridges, out var cameras); Roads = roads; Bridges = bridges; Waypoints = waypoints; Cameras = cameras; PlayerScripts = new PlayerScriptsList { ScriptLists = mapScriptLists }; CameraController = new RtsCameraController(game.AssetStore.GameData.Current, Camera, Terrain.HeightMap) { TerrainPosition = Terrain.HeightMap.GetPosition( Terrain.HeightMap.Width / 2, Terrain.HeightMap.Height / 2) }; contentManager.GraphicsDevice.WaitForIdle(); }