Example #1
0
            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);
            }
Example #2
0
        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());
 }