public static bool Upgrade(PackageSession session, ILogger log, Package dependentPackage, PackageDependency dependency, Package dependencyPackage, IList <PackageLoadingAssetFile> assetFiles) { var packageSharedProfile = dependentPackage.Profiles.FindSharedProfile(); // Only do something if there is a default scene defined if (packageSharedProfile != null && packageSharedProfile.Properties.ContainsKey(DefaultScene)) { var defaultScene = Get(packageSharedProfile.Properties, DefaultScene); var defaultGraphicsProfile = Get(packageSharedProfile.Properties, DefaultGraphicsProfile); // If available, use graphics profile from Windows platform foreach (var profile in dependentPackage.Profiles) { if (profile.Platform == PlatformType.Windows && profile.Properties.ContainsKey(DefaultGraphicsProfile)) { defaultGraphicsProfile = Get(profile.Properties, DefaultGraphicsProfile); } } // Create asset var gameSettingsAsset = GameSettingsFactory.Create(); gameSettingsAsset.DefaultScene = AttachedReferenceManager.CreateProxyObject <Scene>(defaultScene.Id, defaultScene.Location); var renderingSettings = gameSettingsAsset.Get <RenderingSettings>(); renderingSettings.DisplayOrientation = (RequiredDisplayOrientation)Get(packageSharedProfile.Properties, DisplayOrientation); renderingSettings.ColorSpace = ColorSpace.Linear; renderingSettings.DefaultBackBufferWidth = Get(packageSharedProfile.Properties, BackBufferWidth); renderingSettings.DefaultBackBufferHeight = Get(packageSharedProfile.Properties, BackBufferHeight); renderingSettings.DefaultGraphicsProfile = defaultGraphicsProfile; // Add asset using (var memoryStream = new MemoryStream()) { AssetSerializer.Save(memoryStream, gameSettingsAsset, log); assetFiles.Add(new PackageLoadingAssetFile(dependentPackage, GameSettingsLocation + FileExtension, null) { AssetContent = memoryStream.ToArray() }); } // Clean properties foreach (var profile in dependentPackage.Profiles) { profile.Properties.Remove(DefaultScene.Name); profile.Properties.Remove(BackBufferWidth.Name); profile.Properties.Remove(BackBufferHeight.Name); profile.Properties.Remove(DefaultGraphicsProfile.Name); profile.Properties.Remove(DisplayOrientation.Name); } } return(true); }
public static GameSettingsAsset GetGameSettingsAssetOrDefault(this Package package) { var gameSettings = package.GetGameSettingsAsset(); if (gameSettings == null) { var session = package.Session; var currentPackage = session.CurrentPackage; if (currentPackage != null) { gameSettings = currentPackage.GetGameSettingsAsset(); } } return(gameSettings ?? GameSettingsFactory.Create()); }
/// <summary> /// Retrieves the <see cref="GameSettingsAsset"/> from the <see cref="PackageSession.CurrentPackage"/> of the given session if available, /// or a new default instance otherwise. /// </summary> /// <param name="session">The package session from which to retrieve the game settings.</param> /// <returns>The <see cref="GameSettingsAsset"/> from the given session if available. A new default instance otherwise.</returns> private static GameSettingsAsset GetGameSettingsAssetOrDefault(this PackageSession session) { return(session.CurrentPackage?.GetGameSettingsAsset() ?? GameSettingsFactory.Create()); }