public void Upgrade(AssetMigrationContext context, string dependencyName, PackageVersion currentVersion, PackageVersion targetVersion, YamlMappingNode yamlAssetNode, PackageLoadingAssetFile assetFile) { dynamic asset = new DynamicYamlMapping(yamlAssetNode); // upgrade the asset UpgradeAsset(context, currentVersion, targetVersion, asset, assetFile); SetSerializableVersion(asset, dependencyName, targetVersion); // upgrade its base var baseBranch = asset[Asset.BaseProperty]; if (baseBranch != null) { UpgradeBase(context, dependencyName, currentVersion, targetVersion, baseBranch, assetFile); } // upgrade base parts var basePartsBranch = asset[Asset.BasePartsProperty] as DynamicYamlArray; if (basePartsBranch != null) { foreach (dynamic assetBase in basePartsBranch) { UpgradeBase(context, dependencyName, currentVersion, targetVersion, assetBase, assetFile); } } }
protected override void UpgradeAsset(AssetMigrationContext context, PackageVersion currentVersion, PackageVersion targetVersion, dynamic asset, PackageLoadingAssetFile assetFile, OverrideUpgraderHint overrideHint) { dynamic settings = new DynamicYamlMapping(new YamlMappingNode { Tag = "!Xenko.Navigation.NavigationSettings,Xenko.Navigation" }); // Default build settings dynamic buildSettings = new DynamicYamlMapping(new YamlMappingNode()); buildSettings.CellHeight = 0.2f; buildSettings.CellSize = 0.3f; buildSettings.TileSize = 32; buildSettings.MinRegionArea = 2; buildSettings.RegionMergeArea = 20; buildSettings.MaxEdgeLen = 12.0f; buildSettings.MaxEdgeError = 1.3f; buildSettings.DetailSamplingDistance = 6.0f; buildSettings.MaxDetailSamplingError = 1.0f; settings.BuildSettings = buildSettings; var groups = new DynamicYamlArray(new YamlSequenceNode()); // Agent settings array settings.Groups = groups; asset.Defaults.Add(settings); }
private void RemoveComponent(dynamic componentsNode, dynamic componentsEntry) { // New format (1.9) DynamicYamlMapping mapping = (DynamicYamlMapping)componentsNode; mapping.RemoveChild(componentsEntry.Key); }
public void Upgrade(AssetMigrationContext context, string dependencyName, PackageVersion currentVersion, PackageVersion targetVersion, YamlMappingNode yamlAssetNode, PackageLoadingAssetFile assetFile) { dynamic asset = new DynamicYamlMapping(yamlAssetNode); // upgrade the asset var baseBranch = asset[Asset.BaseProperty]; var basePartsBranch = asset[Asset.BasePartsProperty] as DynamicYamlArray; // Detect in what kind of override context we are var overrideHint = (baseBranch != null || (basePartsBranch != null && basePartsBranch.Node.Children.Count > 0)) ? OverrideUpgraderHint.Derived : OverrideUpgraderHint.Unknown; // Upgrade the asset UpgradeAsset(context, currentVersion, targetVersion, asset, assetFile, overrideHint); SetSerializableVersion(asset, dependencyName, targetVersion); // Upgrade its base if (baseBranch != null) { UpgradeBase(context, dependencyName, currentVersion, targetVersion, baseBranch, assetFile); } // Upgrade base parts if (basePartsBranch != null) { foreach (dynamic assetBase in basePartsBranch) { UpgradeBase(context, dependencyName, currentVersion, targetVersion, assetBase, assetFile); } } }
protected override void UpgradeAsset(AssetMigrationContext context, PackageVersion currentVersion, PackageVersion targetVersion, dynamic asset, PackageLoadingAssetFile assetFile, OverrideUpgraderHint overrideHint) { var addRendering = true; var addEditor = true; var addPhysics = true; var addTexture = true; foreach (DynamicYamlMapping mapping in asset.Defaults) { if (mapping.Node.Tag == "!SiliconStudio.Xenko.Graphics.RenderingSettings,SiliconStudio.Xenko.Graphics") { addRendering = false; } if (mapping.Node.Tag == "!SiliconStudio.Xenko.Assets.EditorSettings,SiliconStudio.Xenko.Assets") { addEditor = false; } if (mapping.Node.Tag == "!SiliconStudio.Xenko.Assets.Textures.TextureSettings,SiliconStudio.Xenko.Assets") { addTexture = false; } if (mapping.Node.Tag == "!SiliconStudio.Xenko.Physics.PhysicsSettings,SiliconStudio.Xenko.Physics") { addPhysics = false; } } if (addRendering) { dynamic setting = new DynamicYamlMapping(new YamlMappingNode { Tag = "!SiliconStudio.Xenko.Graphics.RenderingSettings,SiliconStudio.Xenko.Graphics" }); asset.Defaults.Add(setting); } if (addEditor) { dynamic setting = new DynamicYamlMapping(new YamlMappingNode { Tag = "!SiliconStudio.Xenko.Assets.EditorSettings,SiliconStudio.Xenko.Assets" }); asset.Defaults.Add(setting); } if (addPhysics) { dynamic setting = new DynamicYamlMapping(new YamlMappingNode { Tag = "!SiliconStudio.Xenko.Physics.PhysicsSettings,SiliconStudio.Xenko.Physics" }); asset.Defaults.Add(setting); } if (addTexture) { dynamic setting = new DynamicYamlMapping(new YamlMappingNode { Tag = "!SiliconStudio.Xenko.Assets.Textures.TextureSettings,SiliconStudio.Xenko.Assets" }); asset.Defaults.Add(setting); } }
private void AddComponent(dynamic componentsNode, YamlMappingNode node, Guid id) { // New format (1.9) DynamicYamlMapping mapping = (DynamicYamlMapping)componentsNode; mapping.AddChild(new YamlScalarNode(Guid.NewGuid().ToString("N")), node); node.Add("Id", id.ToString("D")); }
public static Version GetPackageVersion(string fullPath) { try { foreach (var packageFullPath in EnumeratePackageFullPaths(fullPath)) { // Load the package as a Yaml dynamic node, so that we can check Xenko version from dependencies var input = new StringReader(File.ReadAllText(packageFullPath)); var yamlStream = new YamlStream(); yamlStream.Load(input); dynamic yamlRootNode = new DynamicYamlMapping((YamlMappingNode)yamlStream.Documents[0].RootNode); SemanticVersion dependencyVersion = null; foreach (var dependency in yamlRootNode.Meta.Dependencies) { // Support paradox legacy projects if ((string)dependency.Name == "Xenko" || (string)dependency.Name == "Paradox") { dependencyVersion = new SemanticVersion((string)dependency.Version); // Paradox 1.1 was having incorrect version set (1.0), read it from .props file if (dependencyVersion.Version.Major == 1 && dependencyVersion.Version.Minor == 0) { var propsFilePath = Path.Combine(Path.GetDirectoryName(packageFullPath) ?? "", Path.GetFileNameWithoutExtension(packageFullPath) + ".props"); if (File.Exists(propsFilePath)) { using (XmlReader propsReader = XmlReader.Create(propsFilePath)) { propsReader.MoveToContent(); if (propsReader.ReadToDescendant("SiliconStudioPackageParadoxVersion")) { if (propsReader.Read()) { dependencyVersion = new SemanticVersion(propsReader.Value); } } } } } break; } } // Stop after first version if (dependencyVersion != null) { return(new Version(dependencyVersion.Version.Major, dependencyVersion.Version.Minor)); } } } catch (Exception) { } return(null); }
protected override void UpgradeAsset(AssetMigrationContext context, PackageVersion currentVersion, PackageVersion targetVersion, dynamic asset, PackageLoadingAssetFile assetFile, OverrideUpgraderHint overrideHint) { dynamic setting = new DynamicYamlMapping(new YamlMappingNode { Tag = "!SiliconStudio.Xenko.Audio.AudioEngineSettings,SiliconStudio.Xenko.Audio" }); asset.Defaults.Add(setting); }
protected override void UpgradeAsset(AssetMigrationContext context, PackageVersion currentVersion, PackageVersion targetVersion, dynamic asset, PackageLoadingAssetFile assetFile, OverrideUpgraderHint overrideHint) { dynamic settings = new DynamicYamlMapping(new YamlMappingNode { Tag = "!Xenko.Streaming.StreamingSettings,Xenko.Engine" }); asset.Defaults.Add(settings); }
public void Upgrade(AssetMigrationContext context, int currentVersion, int targetVersion, YamlMappingNode yamlAssetNode, PackageLoadingAssetFile assetFile) { dynamic asset = new DynamicYamlMapping(yamlAssetNode); asset.SerializedVersion = targetVersion; // Move Test4 to Test5 asset.Test5 = asset.Test4; asset.Test4 = DynamicYamlEmpty.Default; }
public void Upgrade(AssetMigrationContext context, int currentVersion, int targetVersion, YamlMappingNode yamlAssetNode, PackageLoadingAssetFile assetFile) { dynamic asset = new DynamicYamlMapping(yamlAssetNode); asset.SerializedVersion = AssetRegistry.GetCurrentFormatVersion(typeof(MyUpgradedAsset)); // Move Test1 to Test2 asset.Test2 = asset.Test1; asset.Test1 = DynamicYamlEmpty.Default; }
public void Upgrade(ILogger log, YamlMappingNode yamlAssetNode) { dynamic asset = new DynamicYamlMapping(yamlAssetNode); asset.SerializedVersion = AssetFormatVersion; // Move Test2 to Test3 asset.Test3 = asset.Test2; asset.Test2 = DynamicYamlEmpty.Default; }
public void Upgrade(AssetMigrationContext context, string dependencyName, PackageVersion currentVersion, PackageVersion targetVersion, YamlMappingNode yamlAssetNode, PackageLoadingAssetFile assetFile) { dynamic asset = new DynamicYamlMapping(yamlAssetNode); AssetUpgraderBase.SetSerializableVersion(asset, dependencyName, targetVersion); // Move Test4 to Test5 asset.Test5 = asset.Test4; asset.Test4 = DynamicYamlEmpty.Default; }
public void Upgrade(int currentVersion, int targetVersion, ILogger log, YamlMappingNode yamlAssetNode) { dynamic asset = new DynamicYamlMapping(yamlAssetNode); asset.SerializedVersion = AssetRegistry.GetCurrentFormatVersion(typeof(MyUpgradedAsset)); // Move Test1 to Test2 asset.Test2 = asset.Test1; asset.Test1 = DynamicYamlEmpty.Default; }
public void Upgrade(int currentVersion, int targetVersion, ILogger log, YamlMappingNode yamlAssetNode) { dynamic asset = new DynamicYamlMapping(yamlAssetNode); asset.SerializedVersion = targetVersion; // Move Test4 to Test5 asset.Test5 = asset.Test4; asset.Test4 = DynamicYamlEmpty.Default; }
public void Upgrade(int currentVersion, int targetVersion, ILogger log, YamlMappingNode yamlAssetNode) { dynamic asset = new DynamicYamlMapping(yamlAssetNode); var baseBranch = asset["~Base"]; if (baseBranch != null) { asset["~Base"] = DynamicYamlEmpty.Default; } SetSerializableVersion(asset, targetVersion); }
public void Upgrade(AssetMigrationContext context, string dependencyName, PackageVersion currentVersion, PackageVersion targetVersion, YamlMappingNode yamlAssetNode, PackageLoadingAssetFile assetFile) { dynamic asset = new DynamicYamlMapping(yamlAssetNode); var baseBranch = asset["~Base"]; if (baseBranch != null) { asset["~Base"] = DynamicYamlEmpty.Default; } AssetUpgraderBase.SetSerializableVersion(asset, dependencyName, targetVersion); }
public void Upgrade(AssetMigrationContext context, string dependencyName, PackageVersion currentVersion, PackageVersion targetVersion, YamlMappingNode yamlAssetNode, PackageLoadingAssetFile assetFile) { dynamic asset = new DynamicYamlMapping(yamlAssetNode); // Note: seems little bit strange, but original test was not using targetVersion... var serializedVersion = AssetRegistry.GetCurrentFormatVersions(typeof(MyUpgradedAsset))[dependencyName]; AssetUpgraderBase.SetSerializableVersion(asset, dependencyName, serializedVersion); // Move Test1 to Test2 asset.Test2 = asset.Test1; asset.Test1 = DynamicYamlEmpty.Default; }
protected override void UpgradeAsset(AssetMigrationContext context, PackageVersion currentVersion, PackageVersion targetVersion, dynamic asset, PackageLoadingAssetFile assetFile) { var entities = asset.Hierarchy.Entities; var designEntities = new YamlSequenceNode(); asset.Hierarchy.Entities = designEntities; foreach (var entity in entities) { var designEntity = new YamlMappingNode(); dynamic dynamicDesignEntity = new DynamicYamlMapping(designEntity); dynamicDesignEntity.Entity = entity; designEntities.Add(designEntity); } }
protected override void UpgradeAsset(AssetMigrationContext context, PackageVersion currentVersion, PackageVersion targetVersion, dynamic asset, PackageLoadingAssetFile assetFile, OverrideUpgraderHint overrideHint) { // SerializedVersion format changed during renaming upgrade. However, before this was merged back in master, some asset upgrader still with older version numbers were developed. var proceduralType = asset.Type; if (proceduralType.Node.Tag == "!ConeProceduralModel" && currentVersion != PackageVersion.Parse("0.0.6")) { if (proceduralType.LocalOffset == null) { dynamic offset = new DynamicYamlMapping(new YamlMappingNode()); offset.AddChild("X", 0.0f); offset.AddChild("Y", 0.5f); offset.AddChild("Z", 0.0f); proceduralType.AddChild("LocalOffset", offset); } } }
public void Upgrade(AssetMigrationContext context, int currentVersion, int targetVersion, YamlMappingNode yamlAssetNode, PackageLoadingAssetFile assetFile) { dynamic asset = new DynamicYamlMapping(yamlAssetNode); asset.SerializedVersion = targetVersion; // Move Test2 to Test4 if (currentVersion == 2) { asset.Test4 = asset.Test2; asset.Test2 = DynamicYamlEmpty.Default; } // Move Test3 to Test4 else if (currentVersion == 3) { asset.Test4 = asset.Test3; asset.Test3 = DynamicYamlEmpty.Default; } }
public void Upgrade(int currentVersion, int targetVersion, ILogger log, YamlMappingNode yamlAssetNode) { dynamic asset = new DynamicYamlMapping(yamlAssetNode); asset.SerializedVersion = targetVersion; // Move Test2 to Test4 if (currentVersion == 2) { asset.Test4 = asset.Test2; asset.Test2 = DynamicYamlEmpty.Default; } // Move Test3 to Test4 else if (currentVersion == 3) { asset.Test4 = asset.Test3; asset.Test3 = DynamicYamlEmpty.Default; } }
public void Upgrade(AssetMigrationContext context, string dependencyName, PackageVersion currentVersion, PackageVersion targetVersion, YamlMappingNode yamlAssetNode, PackageLoadingAssetFile assetFile) { dynamic asset = new DynamicYamlMapping(yamlAssetNode); AssetUpgraderBase.SetSerializableVersion(asset, dependencyName, targetVersion); // Move Test2 to Test4 if (currentVersion == PackageVersion.Parse("0.0.2")) { asset.Test4 = asset.Test2; asset.Test2 = DynamicYamlEmpty.Default; } // Move Test3 to Test4 else if (currentVersion == PackageVersion.Parse("0.0.3")) { asset.Test4 = asset.Test3; asset.Test3 = DynamicYamlEmpty.Default; } }
public void Upgrade(ILogger log, YamlMappingNode yamlAssetNode) { dynamic asset = new DynamicYamlMapping(yamlAssetNode); // upgrade the asset UpgradeAsset(log, asset); // upgrade its base var baseBranch = asset["~Base"]; if (baseBranch != null) { var baseAsset = baseBranch["Asset"]; if (baseAsset != null) { UpgradeAsset(log, baseAsset); } } }
public void Upgrade(int currentVersion, int targetVersion, ILogger log, YamlMappingNode yamlAssetNode) { dynamic asset = new DynamicYamlMapping(yamlAssetNode); // upgrade the asset UpgradeAsset(currentVersion, targetVersion, log, asset); SetSerializableVersion(asset, targetVersion); // upgrade its base var baseBranch = asset["~Base"]; if (baseBranch != null) { var baseAsset = baseBranch["Asset"]; if (baseAsset != null) { UpgradeAsset(currentVersion, targetVersion, log, baseAsset); } SetSerializableVersion(baseAsset, targetVersion); } }
public void Upgrade(AssetMigrationContext context, string dependencyName, PackageVersion currentVersion, PackageVersion targetVersion, YamlMappingNode yamlAssetNode, PackageLoadingAssetFile assetFile) { dynamic asset = new DynamicYamlMapping(yamlAssetNode); // upgrade the asset UpgradeAsset(context, currentVersion, targetVersion, asset, assetFile); SetSerializableVersion(asset, dependencyName, targetVersion); // upgrade its base var baseBranch = asset["~Base"]; if (baseBranch != null) { var baseAsset = baseBranch["Asset"]; if (baseAsset != null) { UpgradeAsset(context, currentVersion, targetVersion, baseAsset, assetFile); SetSerializableVersion(baseAsset, dependencyName, targetVersion); } } }
protected override void UpgradeAsset(AssetMigrationContext context, PackageVersion currentVersion, PackageVersion targetVersion, dynamic asset, PackageLoadingAssetFile assetFile, OverrideUpgraderHint overrideHint) { var hierarchy = asset.Hierarchy; var entities = (DynamicYamlArray)hierarchy.Parts; foreach (dynamic entityDesign in entities) { var entity = entityDesign.Entity; foreach (var component in entity.Components) { var componentTag = component.Node.Tag; if (componentTag == "!CharacterComponent") { var rads = component.MaxSlope; var angle = new DynamicYamlMapping(new YamlMappingNode()); angle.AddChild("Radians", rads); component.MaxSlope = angle; } } } }
public void Upgrade(int currentVersion, int targetVersion, ILogger log, YamlMappingNode yamlAssetNode) { dynamic asset = new DynamicYamlMapping(yamlAssetNode); // Get the EntityData, and generate an Id var oldEntityData = asset.Data; oldEntityData.Id = Guid.NewGuid().ToString().ToLowerInvariant(); // Create a new EntityDataHierarchy object asset.Hierarchy = new YamlMappingNode(); asset.Hierarchy.Entities = new YamlSequenceNode(); asset.Hierarchy.Entities.Add(oldEntityData); asset["~Base"] = DynamicYamlEmpty.Default; // Bump asset version -- make sure it is stored right after Id asset.SerializedVersion = AssetFormatVersion; asset.MoveChild("SerializedVersion", asset.IndexOf("Id") + 1); // Currently not final, so enable at your own risk throw new NotImplementedException(); }
public static Version GetPackageVersion(string fullPath) { try { foreach (var packageFullPath in EnumeratePackageFullPaths(fullPath)) { // Load the package as a Yaml dynamic node, so that we can check Xenko version from dependencies var input = new StringReader(File.ReadAllText(packageFullPath)); var yamlStream = new YamlStream(); yamlStream.Load(input); dynamic yamlRootNode = new DynamicYamlMapping((YamlMappingNode)yamlStream.Documents[0].RootNode); PackageVersion dependencyVersion = null; foreach (var dependency in yamlRootNode.Meta.Dependencies) { if ((string)dependency.Name == "Xenko") { dependencyVersion = new PackageVersion((string)dependency.Version); break; } } // Stop after first version if (dependencyVersion != null) { return(new Version(dependencyVersion.Version.Major, dependencyVersion.Version.Minor)); } } } catch (Exception e) { e.Ignore(); } return(null); }
private void ConvertAdditiveAnimationToAnimation(IList <PackageLoadingAssetFile> assetFiles) { //var animAssets = assetFiles.Where(f => f.FilePath.GetFileExtension() == ".xkanim").Select(x => x.AsYamlAsset()).ToArray(); var animAssets = assetFiles.Where(f => f.FilePath.GetFileExtension() == ".xkanim"); foreach (var assetFile in animAssets) { if (!IsYamlAsset(assetFile)) { continue; } // This upgrader will also mark every yaml asset as dirty. We want to re-save everything with the new serialization system using (var yamlAsset = assetFile.AsYamlAsset()) { dynamic asset = yamlAsset.DynamicRootNode; var assetTag = asset.Node.Tag; if (assetTag != "!AdditiveAnimation") { continue; } asset.Node.Tag = "!Animation"; dynamic newType = new DynamicYamlMapping(new YamlMappingNode()); newType.Node.Tag = "!DifferenceAnimationAssetType"; newType["BaseSource"] = asset["BaseSource"]; newType["Mode"] = asset["Mode"]; asset.RemoveChild("BaseSource"); asset.RemoveChild("Mode"); asset.RemoveChild("Type"); asset.AddChild("Type", newType); } } }