示例#1
0
        public override bool Upgrade(PackageLoadParameters loadParameters, PackageSession session, ILogger log, Package dependentPackage, PackageDependency dependency, Package dependencyPackage, IList <PackageLoadingAssetFile> assetFiles)
        {
            if (dependency.Version.MinVersion < new PackageVersion("3.1.0.2-beta01"))
            {
                foreach (var assetFile in assetFiles)
                {
                    try
                    {
                        // Add new generic parameter to ShadowMapReceiverDirectional in effect log
                        if (assetFile.OriginalFilePath.GetFileExtension() == ".xkeffectlog")
                        {
                            var assetContent          = assetFile.AssetContent ?? File.ReadAllBytes(assetFile.OriginalFilePath.FullPath);
                            var assetContentString    = System.Text.Encoding.UTF8.GetString(assetContent);
                            var newAssetContentString = System.Text.RegularExpressions.Regex.Replace(assetContentString, @"([ ]*)-   ClassName:", "$1- !ShaderClassSource\r\n$1    ClassName:");
                            if (assetContentString != newAssetContentString)
                            {
                                // Need replacement, update with replaced text
                                // Save file (usually we shouldn't do that, but since we have the renaming in 4.0 we force everything to be on disk before moving on
                                File.WriteAllBytes(assetFile.OriginalFilePath.FullPath, System.Text.Encoding.UTF8.GetBytes(newAssetContentString));
                            }
                        }
                    }
                    catch (Exception e)
                    {
                        log.Warning($"Could not upgrade asset [{assetFile.AssetLocation}] to ShaderClassSource", e);
                    }
                }
            }

            if (dependency.Version.MinVersion < new PackageVersion("4.0.0.0"))
            {
                foreach (var assetFile in assetFiles)
                {
                    try
                    {
                        // Note: usually we shouldn't replace files directly (file might be already moved/modified in-memory)
                        // but since we're currently the first/only upgrader to run, that's fine and later (4.1) we can get rid of this upgrade path
                        assetFile.OriginalFilePath = assetFile.FilePath = XenkoToStrideRenameHelper.RenameStrideFile(assetFile.OriginalFilePath.FullPath, XenkoToStrideRenameHelper.StrideContentType.Asset);
                    }
                    catch (Exception e)
                    {
                        log.Warning($"Could not upgrade asset [{assetFile.AssetLocation}] to Stride", e);
                    }
                }
            }

            return(true);
        }
示例#2
0
        private void UpgradeStrideCode(Package dependentPackage, ILogger log)
        {
            if (dependentPackage == null)
            {
                throw new ArgumentNullException(nameof(dependentPackage));
            }

            var projectFullPath = (dependentPackage.Container as SolutionProject)?.FullPath;

            if (projectFullPath != null)
            {
                Task.Run(async() =>
                {
                    var allFiles = Directory.GetFiles(Path.GetDirectoryName(projectFullPath), "*.*", SearchOption.AllDirectories);
                    // Search for all source files in project directory
                    foreach (var extension in new[] { new { Extension = ".csproj", Type = XenkoToStrideRenameHelper.StrideContentType.Project }, new { Extension = ".cs", Type = XenkoToStrideRenameHelper.StrideContentType.Code } })
                    {
                        var files = allFiles.Where(file => file.ToLower().EndsWith(extension.Extension));
                        foreach (var file in files)
                        {
                            XenkoToStrideRenameHelper.RenameStrideFile(file, extension.Type);
                        }
                    }

                    /*var files = allFiles.Where(file => file.ToLower().EndsWith(extension.Extension));
                     * foreach (var file in files)
                     * {
                     *  var extension = Path.GetExtension(file).ToLower();
                     *  switch (extension)
                     *  {
                     *      case ".cs":
                     *          XenkoToStrideRenameHelper.RenameStrideFile(file, XenkoToStrideRenameHelper.StrideContentType.Code);
                     *          break;
                     *      case ".csproj":
                     *          XenkoToStrideRenameHelper.RenameStrideFile(file, XenkoToStrideRenameHelper.StrideContentType.Project);
                     *          break;
                     *      case ".xksl":
                     *      case ".xkfx":
                     *          XenkoToStrideRenameHelper.RenameStrideFile(file, XenkoToStrideRenameHelper.StrideContentType.Asset);
                     *          break;
                     *  }
                     * }*/
                }).Wait();
            }
        }