protected override void UpgradeAsset(AssetMigrationContext context, PackageVersion currentVersion, PackageVersion targetVersion, dynamic asset, PackageLoadingAssetFile assetFile, OverrideUpgraderHint overrideHint) { var hierarchy = asset.Hierarchy; var entities = hierarchy.Entities; foreach (var entityAndDesign in entities) { var entity = entityAndDesign.Entity; foreach (var component in entity.Components) { var componentTag = component.Node.Tag; if (componentTag != "!UIComponent") { continue; } // VirtualResolution component.RenameChild("VirtualResolution", "Resolution"); // VirtualResolutionMode component.RenameChild("VirtualResolutionMode", "ResolutionStretch"); } } }
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); }
protected override void UpgradeAsset(AssetMigrationContext context, PackageVersion currentVersion, PackageVersion targetVersion, dynamic asset, PackageLoadingAssetFile assetFile, OverrideUpgraderHint overrideHint) { if (asset.Source != null) asset.Source = DynamicYamlEmpty.Default; if (asset.SourceHash != null) asset.SourceHash = DynamicYamlEmpty.Default; }
protected override void UpgradeAsset(AssetMigrationContext context, PackageVersion currentVersion, PackageVersion targetVersion, dynamic asset, PackageLoadingAssetFile assetFile, OverrideUpgraderHint overrideHint) { var hierarchy = asset.Hierarchy; var entities = hierarchy.Entities; foreach (var entityAndDesign in entities) { var entity = entityAndDesign.Entity; foreach (var component in entity.Components) { var componentTag = component.Node.Tag; if (componentTag != "!SpriteComponent") { continue; } var provider = component.SpriteProvider; if (provider == null || provider.Node.Tag != "!SpriteFromSheet") { continue; } component.TransferChild("CurrentFrame", provider, "CurrentFrame"); } } }
protected override void UpgradeAsset(AssetMigrationContext context, PackageVersion currentVersion, PackageVersion targetVersion, dynamic asset, PackageLoadingAssetFile assetFile, OverrideUpgraderHint overrideHint) { // Introduction of MaterialInstance var material = asset.Type.Material; if (material != null) { asset.Type.MaterialInstance = new YamlMappingNode(); asset.Type.MaterialInstance.Material = material; asset.Type.Material = DynamicYamlEmpty.Default; } var type = asset.Type.Node as YamlMappingNode; if (type != null && type.Tag == "!CubeProceduralModel") { // Size changed from scalar to vector3 var size = asset.Type.Size as DynamicYamlScalar; if (size != null) { var vecSize = new YamlMappingNode { { new YamlScalarNode("X"), new YamlScalarNode(size.Node.Value) }, { new YamlScalarNode("Y"), new YamlScalarNode(size.Node.Value) }, { new YamlScalarNode("Z"), new YamlScalarNode(size.Node.Value) } }; vecSize.Style = DataStyle.Compact; asset.Type.Size = vecSize; } } }
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); }
protected override void UpgradeAsset(AssetMigrationContext context, PackageVersion currentVersion, PackageVersion targetVersion, dynamic asset, PackageLoadingAssetFile assetFile, OverrideUpgraderHint overrideHint) { var hierarchy = asset.Hierarchy; var entities = (DynamicYamlArray)hierarchy.Entities; foreach (dynamic entity in entities) { var components = entity.Components; var modelComponent = components["ModelComponent.Key"]; if (modelComponent != null) modelComponent.RemoveChild("DrawOrder"); } }
protected override void UpgradeAsset(AssetMigrationContext context, PackageVersion currentVersion, PackageVersion targetVersion, dynamic asset, PackageLoadingAssetFile assetFile, OverrideUpgraderHint overrideHint) { if (asset.IsDynamic != null) { var isDynamic = (bool)asset.IsDynamic; // There is also SDF type, but old assets don't have it yet asset.AddChild("FontType", isDynamic ? "Dynamic" : "Static"); asset.RemoveChild("IsDynamic"); } }
protected override void UpgradeAsset(AssetMigrationContext context, PackageVersion currentVersion, PackageVersion targetVersion, dynamic asset, PackageLoadingAssetFile assetFile, OverrideUpgraderHint overrideHint) { asset.Hierarchy.RootPartIds = asset.Hierarchy.RootEntities; asset.Hierarchy.Parts = asset.Hierarchy.Entities; asset.Hierarchy.RootEntities = DynamicYamlEmpty.Default; asset.Hierarchy.Entities = DynamicYamlEmpty.Default; foreach (var entityDesign in asset.Hierarchy.Parts) { entityDesign.Folder = entityDesign.Design.Folder; entityDesign.BaseId = entityDesign.Design.BaseId; entityDesign.BasePartInstanceId = entityDesign.Design.BasePartInstanceId; entityDesign.Design = DynamicYamlEmpty.Default; } }
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) { component.Id = component["~Id"]; component["~Id"] = DynamicYamlEmpty.Default; } } }
protected override void UpgradeAsset(AssetMigrationContext context, PackageVersion currentVersion, PackageVersion targetVersion, dynamic asset, PackageLoadingAssetFile assetFile, OverrideUpgraderHint overrideHint) { if (asset.ColliderShapes == null) return; foreach (var colliderShape in asset.ColliderShapes) { if (colliderShape.Node.Tag == "!Box2DColliderShapeDesc") { var size = 2f * DynamicYamlExtensions.ConvertTo<Vector2>(colliderShape.HalfExtent); colliderShape.Size = DynamicYamlExtensions.ConvertFrom(size); colliderShape.HalfExtent = DynamicYamlEmpty.Default; } if (colliderShape.Node.Tag == "!BoxColliderShapeDesc") { var size = 2f * DynamicYamlExtensions.ConvertTo<Vector3>(colliderShape.HalfExtents); colliderShape.Size = DynamicYamlExtensions.ConvertFrom(size); colliderShape.HalfExtents = DynamicYamlEmpty.Default; } if (colliderShape.Node.Tag == "!CapsuleColliderShapeDesc" || colliderShape.Node.Tag == "!CylinderColliderShapeDesc") { var upVector = DynamicYamlExtensions.ConvertTo<Vector3>(colliderShape.UpAxis); if (upVector == Vector3.UnitX) colliderShape.Orientation = ShapeOrientation.UpX; if (upVector == Vector3.UnitZ) colliderShape.Orientation = ShapeOrientation.UpZ; colliderShape.UpAxis = DynamicYamlEmpty.Default; } if (colliderShape.Node.Tag == "!CapsuleColliderShapeDesc" && colliderShape.Height != null) { colliderShape.Length = 2f * (float)colliderShape.Height; colliderShape.Height = DynamicYamlEmpty.Default; } if (colliderShape.Node.Tag == "!CylinderColliderShapeDesc") { colliderShape.Radius = (float)colliderShape.HalfExtents.X; colliderShape.Height = 2f * (float)colliderShape.HalfExtents.Y; colliderShape.HalfExtents = DynamicYamlEmpty.Default; } } }
protected override void UpgradeAsset(AssetMigrationContext context, PackageVersion currentVersion, PackageVersion targetVersion, dynamic asset, PackageLoadingAssetFile assetFile, OverrideUpgraderHint overrideHint) { if (asset.FontType == null) { return; } if (asset.FontType.Size == null) { // It is possible our font type has the default size of 16, which translates to 21.33333 in pixel size asset.FontType.AddChild("Size", 21.33333); return; } var newSize = ((float)asset.FontType.Size) * 1.3333333f; asset.FontType.RemoveChild("Size"); asset.FontType.AddChild("Size", newSize); }
protected override void UpgradeAsset(AssetMigrationContext context, PackageVersion currentVersion, PackageVersion targetVersion, dynamic asset, PackageLoadingAssetFile assetFile, OverrideUpgraderHint overrideHint) { var hierarchy = asset.Hierarchy; var entities = (DynamicYamlArray)hierarchy.Entities; foreach (dynamic entity in entities) { var components = entity.Components; var spriteComponent = components["SpriteComponent.Key"]; if (spriteComponent != null) { var provider = spriteComponent.SpriteProvider; var providerAsMap = provider as DynamicYamlMapping; if (providerAsMap != null && providerAsMap.Node.Tag == "!SpriteFromSpriteGroup") { provider.Sheet = provider.SpriteGroup; provider.SpriteGroup = DynamicYamlEmpty.Default; providerAsMap.Node.Tag = "!SpriteFromSheet"; } } } }
protected override void UpgradeAsset(AssetMigrationContext context, PackageVersion currentVersion, PackageVersion targetVersion, dynamic asset, PackageLoadingAssetFile assetFile, OverrideUpgraderHint overrideHint) { var hierarchy = asset.Hierarchy; var entities = hierarchy.Entities; foreach (var entityAndDesign in entities) { var entity = entityAndDesign.Entity; foreach (var component in entity.Components) { var componentTag = component.Node.Tag; if (componentTag != "!UIComponent") continue; // VirtualResolution component.RenameChild("VirtualResolution", "Resolution"); // VirtualResolutionMode component.RenameChild("VirtualResolutionMode", "ResolutionStretch"); } } }
protected override void UpgradeAsset(AssetMigrationContext context, PackageVersion currentVersion, PackageVersion targetVersion, dynamic asset, PackageLoadingAssetFile assetFile, OverrideUpgraderHint overrideHint) { var hierarchy = asset.Hierarchy; var entities = hierarchy.Entities; foreach (var entityAndDesign in entities) { var entity = entityAndDesign.Entity; foreach (var component in entity.Components) { var componentTag = component.Node.Tag; if (componentTag != "!SpriteComponent") continue; var provider = component.SpriteProvider; if (provider == null || provider.Node.Tag != "!SpriteFromSheet") continue; component.TransferChild("CurrentFrame", provider, "CurrentFrame"); } } }
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; } } } }
protected override void UpgradeAsset(AssetMigrationContext context, PackageVersion currentVersion, PackageVersion targetVersion, dynamic asset, PackageLoadingAssetFile assetFile, OverrideUpgraderHint overrideHint) { var proceduralType = asset.Type; if (proceduralType.Diameter != null) { proceduralType.Radius = 0.5f * (float)proceduralType.Diameter; proceduralType.Diameter = DynamicYamlEmpty.Default; } if (proceduralType.Node.Tag == "!TorusProceduralModel" && proceduralType.Thickness != null) { proceduralType.Thickness = 0.5f * (float)proceduralType.Thickness; } }
protected override void UpgradeAsset(AssetMigrationContext context, PackageVersion currentVersion, PackageVersion targetVersion, dynamic asset, PackageLoadingAssetFile assetFile, OverrideUpgraderHint overrideHint) { int backBufferWidth = asset.BackBufferWidth ?? 1280; asset.RemoveChild("BackBufferWidth"); int backBufferHeight = asset.BackBufferHeight ?? 720; asset.RemoveChild("BackBufferHeight"); GraphicsProfile profile = asset.DefaultGraphicsProfile ?? GraphicsProfile.Level_9_1; asset.RemoveChild("DefaultGraphicsProfile"); ColorSpace colorSpace = asset.ColorSpace ?? ColorSpace.Linear; asset.RemoveChild("ColorSpace"); DisplayOrientation displayOrientation = asset.DisplayOrientation ?? DisplayOrientation.Default; asset.RemoveChild("DisplayOrientation"); TextureQuality textureQuality = asset.TextureQuality ?? TextureQuality.Fast; asset.RemoveChild("TextureQuality"); var renderingMode = RenderingMode.HDR; if (asset.RenderingMode != null) { if (asset.RenderingMode == "LDR") { renderingMode = RenderingMode.LDR; } } asset.RemoveChild("RenderingMode"); var configurations = new DynamicYamlArray(new YamlSequenceNode()); asset.Defaults = configurations; dynamic renderingSettings = new DynamicYamlMapping(new YamlMappingNode { Tag = "!SiliconStudio.Xenko.Graphics.RenderingSettings,SiliconStudio.Xenko.Graphics" }); renderingSettings.DefaultBackBufferWidth = backBufferWidth; renderingSettings.DefaultBackBufferHeight = backBufferHeight; renderingSettings.DefaultGraphicsProfile = profile; renderingSettings.ColorSpace = colorSpace; renderingSettings.DisplayOrientation = displayOrientation; asset.Defaults.Add(renderingSettings); dynamic editorSettings = new DynamicYamlMapping(new YamlMappingNode { Tag = "!SiliconStudio.Xenko.Assets.EditorSettings,SiliconStudio.Xenko.Assets" }); editorSettings.RenderingMode = renderingMode; asset.Defaults.Add(editorSettings); dynamic textSettings = new DynamicYamlMapping(new YamlMappingNode { Tag = "!SiliconStudio.Xenko.Assets.Textures.TextureSettings,SiliconStudio.Xenko.Assets" }); textSettings.TextureQuality = textureQuality; asset.Defaults.Add(textSettings); dynamic physicsSettings = new DynamicYamlMapping(new YamlMappingNode { Tag = "!SiliconStudio.Xenko.Physics.PhysicsSettings,SiliconStudio.Xenko.Physics" }); asset.Defaults.Add(physicsSettings); var defaultFilters = new DynamicYamlArray(new YamlSequenceNode()); asset.PlatformFilters = defaultFilters; asset.PlatformFilters.Add("PowerVR SGX 54[0-9]"); asset.PlatformFilters.Add("Adreno \\(TM\\) 2[0-9][0-9]"); asset.PlatformFilters.Add("Adreno (TM) 320"); asset.PlatformFilters.Add("Adreno (TM) 330"); asset.PlatformFilters.Add("Adreno \\(TM\\) 4[0-9][0-9]"); asset.PlatformFilters.Add("NVIDIA Tegra"); asset.PlatformFilters.Add("Intel(R) HD Graphics"); asset.PlatformFilters.Add("^Mali\\-4"); asset.PlatformFilters.Add("^Mali\\-T6"); asset.PlatformFilters.Add("^Mali\\-T7"); }
/// <inheritdoc/> protected override void UpgradeAsset(AssetMigrationContext context, PackageVersion currentVersion, PackageVersion targetVersion, dynamic asset, PackageLoadingAssetFile assetFile, OverrideUpgraderHint overrideHint) { }
protected override void UpgradeAsset(AssetMigrationContext context, PackageVersion currentVersion, PackageVersion targetVersion, dynamic asset, PackageLoadingAssetFile assetFile, OverrideUpgraderHint overrideHint) { YamlNode assetNode = asset.Node; foreach (var node in assetNode.AllNodes) { if (node.Tag != null && node.Tag.EndsWith(",Stride.Engine") // Several types are still in Stride.Engine && node.Tag != "!Stride.Rendering.Compositing.ForwardRenderer,Stride.Engine" && node.Tag != "!Stride.Rendering.Compositing.SceneCameraRenderer,Stride.Engine") { node.Tag = node.Tag.Replace(",Stride.Engine", ",Stride.Rendering"); } } }
protected override void UpgradeAsset(AssetMigrationContext context, PackageVersion currentVersion, PackageVersion targetVersion, dynamic asset, PackageLoadingAssetFile assetFile, OverrideUpgraderHint overrideHint) { var basePartMapping = new Dictionary<string, string>(); if (asset["~BaseParts"] != null) { foreach (dynamic basePart in asset["~BaseParts"]) { try { var location = ((YamlScalarNode)basePart.Location.Node).Value; var id = ((YamlScalarNode)basePart.Asset.Id.Node).Value; var assetUrl = $"{id}:{location}"; foreach (dynamic part in basePart.Asset.Hierarchy.Parts) { try { var partId = ((YamlScalarNode)part.Entity.Id.Node).Value; basePartMapping[partId] = assetUrl; } catch (Exception e) { e.Ignore(); } } } catch (Exception e) { e.Ignore(); } } asset["~BaseParts"] = DynamicYamlEmpty.Default; } var entities = (DynamicYamlArray)asset.Hierarchy.Parts; foreach (dynamic entityDesign in entities) { if (entityDesign.BaseId != null) { try { var baseId = ((YamlScalarNode)entityDesign.BaseId.Node).Value; var baseInstanceId = ((YamlScalarNode)entityDesign.BasePartInstanceId.Node).Value; string assetUrl; if (basePartMapping.TryGetValue(baseId, out assetUrl)) { var baseNode = (dynamic)(new DynamicYamlMapping(new YamlMappingNode())); baseNode.BasePartAsset = assetUrl; baseNode.BasePartId = baseId; baseNode.InstanceId = baseInstanceId; entityDesign.Base = baseNode; } entityDesign.BaseId = DynamicYamlEmpty.Default; entityDesign.BasePartInstanceId = DynamicYamlEmpty.Default; } catch (Exception e) { e.Ignore(); } } } }
protected override void UpgradeAsset(AssetMigrationContext context, PackageVersion currentVersion, PackageVersion targetVersion, dynamic asset, PackageLoadingAssetFile assetFile, OverrideUpgraderHint overrideHint) { // Replace ComputeCurveSamplerVector4 with ComputeCurveSamplerColor4. // Replace ComputeAnimationCurveVector4 with ComputeAnimationCurveColor4. // Replace Vector4 with Color4. Action<dynamic> updateSampler = sampler => { if (sampler == null || sampler.Node.Tag != "!ComputeCurveSamplerVector4") return; sampler.Node.Tag = "!ComputeCurveSamplerColor4"; var curve = sampler.Curve; curve.Node.Tag = "!ComputeAnimationCurveColor4"; foreach (var kf in curve.KeyFrames) { var colorValue = new DynamicYamlMapping(new YamlMappingNode()); colorValue.AddChild("R", kf.Value.X); colorValue.AddChild("G", kf.Value.Y); colorValue.AddChild("B", kf.Value.Z); colorValue.AddChild("A", kf.Value.W); kf.Value = colorValue; } }; var hierarchy = asset.Hierarchy; var entities = hierarchy.Entities; foreach (var entityAndDesign in entities) { var entity = entityAndDesign.Entity; foreach (var component in entity.Components) { var componentTag = component.Node.Tag; if (componentTag != "!ParticleSystemComponent") continue; var particleSystem = component.ParticleSystem; if (particleSystem == null) continue; foreach (var emitter in particleSystem.Emitters) { // Updaters foreach (var updater in emitter.Updaters) { var updaterTag = updater.Node.Tag; if (updaterTag != "!UpdaterColorOverTime") continue; // Update the samplers updateSampler(updater.SamplerMain); updateSampler(updater.SamplerOptional); } } } } }
protected override void UpgradeAsset(AssetMigrationContext context, PackageVersion currentVersion, PackageVersion targetVersion, dynamic asset, PackageLoadingAssetFile assetFile, OverrideUpgraderHint overrideHint) { asset.RemoveChild("SceneSettings"); }
protected override void UpgradeAsset(AssetMigrationContext context, PackageVersion currentVersion, PackageVersion targetVersion, dynamic asset, PackageLoadingAssetFile assetFile, OverrideUpgraderHint overrideHint) { var dependencies = asset.Meta?.Dependencies; if (dependencies != null) { foreach (var dependency in dependencies) { if (dependency.Name == "Paradox") dependency.Name = "Xenko"; } } }
protected override void UpgradeAsset(AssetMigrationContext context, PackageVersion currentVersion, PackageVersion targetVersion, dynamic asset, PackageLoadingAssetFile assetFile, OverrideUpgraderHint overrideHint) { if (asset.Profiles != null) { var profiles = asset.Profiles; foreach (var profile in profiles) { var folders = profile.AssetFolders; if (folders != null) { foreach (var folder in folders) { if (folder.RawImports != null) { folder.RemoveChild("RawImports"); } } } } } }
protected override void UpgradeAsset(AssetMigrationContext context, PackageVersion currentVersion, PackageVersion targetVersion, dynamic asset, PackageLoadingAssetFile assetFile, OverrideUpgraderHint overrideHint) { if (asset.IsNotPremultiplied != null) { asset.IsPremultiplied = !(bool)asset.IsNotPremultiplied; asset.IsNotPremultiplied = DynamicYamlEmpty.Default; } }
protected override void UpgradeAsset(AssetMigrationContext context, PackageVersion currentVersion, PackageVersion targetVersion, dynamic asset, PackageLoadingAssetFile assetFile, OverrideUpgraderHint overrideHint) { if (asset.ScaleImport != null && (float)asset.ScaleImport == 0.0f) { asset.RemoveChild("ScaleImport"); } }
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. // However since this upgrader can be reapplied, it is not a problem var proceduralType = asset.Type; if (proceduralType.Node.Tag == "!CapsuleProceduralModel" && currentVersion != PackageVersion.Parse("0.0.6")) { if (proceduralType.Radius == null) { proceduralType.Radius = 0.25f; } } }
protected override void UpgradeAsset(AssetMigrationContext context, PackageVersion currentVersion, PackageVersion targetVersion, dynamic asset, PackageLoadingAssetFile assetFile, OverrideUpgraderHint overrideHint) { if (asset.NoPremultiply != null) { asset.IsPremultiplied = !(bool)asset.NoPremultiply; asset.NoPremultiply = DynamicYamlEmpty.Default; } if (asset.IsNotPremultiply != null) { asset.IsPremultiplied = !(bool)asset.IsNotPremultiply; asset.IsNotPremultiply = DynamicYamlEmpty.Default; } }
protected override void UpgradeAsset(AssetMigrationContext context, PackageVersion currentVersion, PackageVersion targetVersion, dynamic asset, PackageLoadingAssetFile assetFile, OverrideUpgraderHint overrideHint) { if (asset.SRgb != null) { // By default transform to auto asset.ColorSpace = TextureColorSpace.Auto; asset.RemoveChild("SRgb"); } }
/// <inheritdoc/> protected override void UpgradeAsset(AssetMigrationContext context, PackageVersion currentVersion, PackageVersion targetVersion, dynamic asset, PackageLoadingAssetFile assetFile, OverrideUpgraderHint overrideHint) { asset.AnimationTimeMinimum = "0:00:00:00.0000000"; asset.AnimationTimeMaximum = "0:00:30:00.0000000"; // Tentatively set this to 30 minutes }
protected override void UpgradeAsset(AssetMigrationContext context, PackageVersion currentVersion, PackageVersion targetVersion, dynamic asset, PackageLoadingAssetFile assetFile, OverrideUpgraderHint overrideHint) { asset.Parameters = DynamicYamlEmpty.Default; }
protected override void UpgradeAsset(AssetMigrationContext context, PackageVersion currentVersion, PackageVersion targetVersion, dynamic asset, PackageLoadingAssetFile assetFile, OverrideUpgraderHint overrideHint) { var images = asset.Images; if (images != null) { asset.Sprites = images; asset.Images = DynamicYamlEmpty.Default; } }
protected override void UpgradeAsset(AssetMigrationContext context, PackageVersion currentVersion, PackageVersion targetVersion, dynamic asset, PackageLoadingAssetFile assetFile, OverrideUpgraderHint overrideHint) { var packing = asset.Packing; if (packing != null) { packing.AtlasMaximumSize = DynamicYamlEmpty.Default; } }
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) { try { var componentTag = component.Value.Node.Tag; if (componentTag == "!ModelComponent") { var materials = component.Value.Materials; var node = ((DynamicYamlMapping)materials).Node; var i = -1; foreach (var material in node.Children.ToList()) { ++i; node.Children.Remove(material.Key); if (((YamlScalarNode)material.Value).Value == "null") continue; node.Children.Add(new YamlScalarNode(((YamlScalarNode)material.Key).Value + '~' + i), material.Value); } } } catch (Exception) { try { // Component list serialized with the old version (as a sequence with ~Id in each item) var componentTag = component.Node.Tag; if (componentTag == "!ModelComponent") { var materials = component.Materials; var node = ((DynamicYamlArray)materials).Node; var i = -1; dynamic newMaterial = new DynamicYamlMapping(new YamlMappingNode()); foreach (var material in node.Children.ToList()) { ++i; var reference = (YamlScalarNode)material; if (reference.Value == "null") // Skip null continue; UFile location; Guid referenceId; AssetId assetReference; if (AssetReference.TryParse(reference.Value, out assetReference, out location, out referenceId) && referenceId != Guid.Empty) { var itemId = new ItemId(referenceId.ToByteArray()); newMaterial[itemId + "~" + i] = new AssetReference(assetReference, location); } } component["Materials"] = newMaterial; } } catch (Exception e) { e.Ignore(); } } } } }
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. // As a result, upgrade is not needed for version 3 var sprites = asset.Sprites; if (sprites == null || currentVersion == PackageVersion.Parse("0.0.3")) return; foreach (var sprite in asset.Sprites) { if (sprite.Borders == null) { continue; } var y = sprite.Borders.Y ?? 0.0f; sprite.Borders.Y = sprite.Borders.Z ?? 0.0f; sprite.Borders.Z = y; } }
protected override void UpgradeAsset(AssetMigrationContext context, PackageVersion currentVersion, PackageVersion targetVersion, dynamic asset, PackageLoadingAssetFile assetFile, OverrideUpgraderHint overrideHint) { if (asset.ColliderShapes == null) { return; } foreach (dynamic shape in asset.ColliderShapes) { var tag = shape.Node.Tag; if (tag != "!Box2DColliderShapeDesc") { continue; } shape.Node.Tag = "!BoxColliderShapeDesc"; shape.Is2D = true; shape.Size.X = shape.Size.X; shape.Size.Y = shape.Size.Y; shape.Size.Z = 0.01f; } }
protected override void UpgradeAsset(AssetMigrationContext context, PackageVersion currentVersion, PackageVersion targetVersion, dynamic asset, PackageLoadingAssetFile assetFile, OverrideUpgraderHint overrideHint) { foreach (var modelMaterial in asset.Materials) { var material = modelMaterial.Material; if (material != null) { modelMaterial.MaterialInstance = new YamlMappingNode(); modelMaterial.MaterialInstance.Material = material; modelMaterial.Material = DynamicYamlEmpty.Default; } } }
protected override void UpgradeAsset(AssetMigrationContext context, PackageVersion currentVersion, PackageVersion targetVersion, dynamic asset, PackageLoadingAssetFile assetFile, OverrideUpgraderHint overrideHint) { foreach (var profile in asset["Profiles"]) { profile["Properties"] = DynamicYamlEmpty.Default; } }
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); } }
protected override void UpgradeAsset(AssetMigrationContext context, PackageVersion currentVersion, PackageVersion targetVersion, dynamic asset, PackageLoadingAssetFile assetFile, OverrideUpgraderHint overrideHint) { if (asset.Profiles != null) { var profiles = asset.Profiles; for (int i = 0; i < profiles.Count; ++i) { var profile = profiles[i]; if (profile.Platform == "WindowsStore" || profile.Platform == "WindowsPhone") { profiles.RemoveAt(i--); context.Log.Warning($"Platform [{profile.Platform}] is not supported anymore, it will be removed from your package (but kept in solution as a backup). Please use Windows 10 (UWP) instead."); } else if (profile.Platform == nameof(PlatformType.Windows10)) { profile.Platform = nameof(PlatformType.UWP); } } } }
protected override void UpgradeAsset(AssetMigrationContext context, PackageVersion currentVersion, PackageVersion targetVersion, dynamic asset, PackageLoadingAssetFile assetFile, OverrideUpgraderHint overrideHint) { var proceduralType = asset.Type; if (proceduralType.ScaleUV != null) { var currentScale = (float)proceduralType.ScaleUV; var vecSize = new YamlMappingNode { { new YamlScalarNode("X"), new YamlScalarNode(currentScale.ToString(CultureInfo.InvariantCulture)) }, { new YamlScalarNode("Y"), new YamlScalarNode(currentScale.ToString(CultureInfo.InvariantCulture)) } }; vecSize.Style = DataStyle.Compact; proceduralType.RemoveChild("ScaleUV"); proceduralType.UvScale = vecSize; } else if (proceduralType.UVScales != null) { var x = (float)proceduralType.UVScales.X; var y = (float)proceduralType.UVScales.Y; var vecSize = new YamlMappingNode { { new YamlScalarNode("X"), new YamlScalarNode(x.ToString(CultureInfo.InvariantCulture)) }, { new YamlScalarNode("Y"), new YamlScalarNode(y.ToString(CultureInfo.InvariantCulture)) } }; vecSize.Style = DataStyle.Compact; proceduralType.RemoveChild("UVScales"); proceduralType.UvScale = vecSize; } else { var vecSize = new YamlMappingNode { { new YamlScalarNode("X"), new YamlScalarNode("1") }, { new YamlScalarNode("Y"), new YamlScalarNode("1") } }; vecSize.Style = DataStyle.Compact; proceduralType.UvScale = vecSize; } }
protected override void UpgradeAsset(AssetMigrationContext context, PackageVersion currentVersion, PackageVersion targetVersion, dynamic asset, PackageLoadingAssetFile assetFile, OverrideUpgraderHint overrideHint) { YamlNode assetNode = asset.Node; foreach (var node in assetNode.AllNodes) { if (node.Tag == "!Xenko.Streaming.StreamingSettings,Xenko.Engine") { node.Tag = node.Tag.Replace(",Xenko.Engine", ",Xenko.Rendering"); } } }
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); } } }
protected override void UpgradeAsset(AssetMigrationContext context, PackageVersion currentVersion, PackageVersion targetVersion, dynamic asset, PackageLoadingAssetFile assetFile, OverrideUpgraderHint overrideHint) { var hierarchy = asset.Hierarchy; var entities = (DynamicYamlArray)hierarchy.Entities; foreach (dynamic entityAndDesign in entities) { var entity = entityAndDesign.Entity; foreach (var component in entity.Components) { var componentTag = component.Node.Tag; if (componentTag == "!ParticleSystemComponent") { dynamic particleSystem = component.ParticleSystem; if (particleSystem != null) { foreach (dynamic emitter in particleSystem.Emitters) { // Lifetime changed from: float (ParticleMinLifetime), float (ParticleMaxLifetime) -> Vector2 (ParticleLifetime) dynamic lifetime = new DynamicYamlMapping(new YamlMappingNode()); lifetime.AddChild("X", emitter.ParticleMinLifetime); lifetime.AddChild("Y", emitter.ParticleMaxLifetime); emitter.AddChild("ParticleLifetime", lifetime); emitter.RemoveChild("ParticleMinLifetime"); emitter.RemoveChild("ParticleMaxLifetime"); // Initializers foreach (dynamic initializer in emitter.Initializers) { var initializerTag = initializer.Node.Tag; if (initializerTag == "!InitialRotationSeed") { dynamic angle = new DynamicYamlMapping(new YamlMappingNode()); angle.AddChild("X", initializer.AngularRotationMin); angle.AddChild("Y", initializer.AngularRotationMax); initializer.AddChild("AngularRotation", angle); initializer.RemoveChild("AngularRotationMin"); initializer.RemoveChild("AngularRotationMax"); } } // Updaters foreach (dynamic updater in emitter.Updaters) { var updaterTag = updater.Node.Tag; if (updaterTag == "!UpdaterCollider") { var isSolid = (bool)updater.IsSolid; updater.AddChild("IsHollow", !isSolid); updater.RemoveChild("IsSolid"); } } } } } } } }
protected override void UpgradeAsset(AssetMigrationContext context, PackageVersion currentVersion, PackageVersion targetVersion, dynamic asset, PackageLoadingAssetFile assetFile, OverrideUpgraderHint overrideHint) { var proceduralType = asset.Type; if (proceduralType.Node.Tag == "!CapsuleProceduralModel" && proceduralType.Height != null) { proceduralType.Length = 2f * (float)proceduralType.Height; proceduralType.Height = DynamicYamlEmpty.Default; } }
protected override void UpgradeAsset(AssetMigrationContext context, PackageVersion currentVersion, PackageVersion targetVersion, dynamic asset, PackageLoadingAssetFile assetFile, OverrideUpgraderHint overrideHint) { dynamic newSource = new DynamicYamlMapping(new YamlMappingNode()); var assetName = (asset.FontName != null) ? (string)asset.FontName : null; var assetSource = (asset.Source != null) ? (string)asset.Source : null; // First check if the asset has a valid source if (assetSource != null && !assetSource.IsNullOrEmpty() && !assetSource.Equals("null")) { newSource.Node.Tag = "!FileFontProvider"; newSource.AddChild("Source", assetSource); } // Only if the asset doesn't have a valid source can it be a system font else if (assetName != null && !assetName.IsNullOrEmpty() && !assetName.Equals("null")) { newSource.Node.Tag = "!SystemFontProvider"; newSource.AddChild("FontName", assetName); if (asset.Style != null) { newSource.AddChild("Style", asset.Style); } } asset.RemoveChild("FontName"); asset.RemoveChild("Source"); asset.RemoveChild("Style"); asset.AddChild("FontSource", newSource); if (asset.FontType != null) { var fontType = (string)asset.FontType; asset.RemoveChild("FontType"); dynamic newType = new DynamicYamlMapping(new YamlMappingNode()); if (fontType.Equals("Dynamic")) { newType.Node.Tag = "!RuntimeRasterizedSpriteFontType"; if (asset.Size != null) newType.AddChild("Size", asset.Size); if (asset.AntiAlias != null) newType.AddChild("AntiAlias", asset.AntiAlias); } else if (fontType.Equals("SDF")) { newType.Node.Tag = "!SignedDistanceFieldSpriteFontType"; if (asset.Size != null) newType.AddChild("Size", asset.Size); if (asset.CharacterSet != null) newType.AddChild("CharacterSet", asset.CharacterSet); if (asset.CharacterRegions != null) newType.AddChild("CharacterRegions", asset.CharacterRegions); } else { newType.Node.Tag = "!OfflineRasterizedSpriteFontType"; if (asset.Size != null) newType.AddChild("Size", asset.Size); if (asset.CharacterSet != null) newType.AddChild("CharacterSet", asset.CharacterSet); if (asset.CharacterRegions != null) newType.AddChild("CharacterRegions", asset.CharacterRegions); if (asset.AntiAlias != null) newType.AddChild("AntiAlias", asset.AntiAlias); if (asset.IsPremultiplied != null) newType.AddChild("IsPremultiplied", asset.IsPremultiplied); } asset.AddChild("FontType", newType); } asset.RemoveChild("IsPremultiplied"); asset.RemoveChild("AntiAlias"); asset.RemoveChild("UseKerning"); asset.RemoveChild("Size"); asset.RemoveChild("CharacterSet"); asset.RemoveChild("CharacterRegions"); }
protected override void UpgradeAsset(AssetMigrationContext context, PackageVersion currentVersion, PackageVersion targetVersion, dynamic asset, PackageLoadingAssetFile assetFile, OverrideUpgraderHint overrideHint) { var basePartMapping = new Dictionary <string, string>(); if (asset["~BaseParts"] != null) { foreach (dynamic basePart in asset["~BaseParts"]) { try { var location = ((YamlScalarNode)basePart.Location.Node).Value; var id = ((YamlScalarNode)basePart.Asset.Id.Node).Value; var assetUrl = $"{id}:{location}"; foreach (dynamic part in basePart.Asset.Hierarchy.Parts) { try { var partId = ((YamlScalarNode)part.UIElement.Id.Node).Value; basePartMapping[partId] = assetUrl; } catch (Exception e) { e.Ignore(); } } } catch (Exception e) { e.Ignore(); } } asset["~BaseParts"] = DynamicYamlEmpty.Default; } var uiElements = (DynamicYamlArray)asset.Hierarchy.Parts; foreach (dynamic uiDesign in uiElements) { if (uiDesign.BaseId != null) { try { var baseId = ((YamlScalarNode)uiDesign.BaseId.Node).Value; var baseInstanceId = ((YamlScalarNode)uiDesign.BasePartInstanceId.Node).Value; string assetUrl; if (basePartMapping.TryGetValue(baseId, out assetUrl)) { var baseNode = (dynamic)(new DynamicYamlMapping(new YamlMappingNode())); baseNode.BasePartAsset = assetUrl; baseNode.BasePartId = baseId; baseNode.InstanceId = baseInstanceId; uiDesign.Base = baseNode; } uiDesign.BaseId = DynamicYamlEmpty.Default; uiDesign.BasePartInstanceId = DynamicYamlEmpty.Default; } catch (Exception e) { e.Ignore(); } } } }
protected override void UpgradeAsset(AssetMigrationContext context, PackageVersion currentVersion, PackageVersion targetVersion, dynamic asset, PackageLoadingAssetFile assetFile, OverrideUpgraderHint overrideHint) { // TODO: Asset upgraders are called for BaseParts too, which might not be of the same type. Upgraders should be aware of this. if (asset.Node.Tag != "!SceneAsset") return; var graphicsCompositor = asset.SceneSettings.GraphicsCompositor; if (graphicsCompositor != null && graphicsCompositor.Node.Tag == "!SceneGraphicsCompositorLayers") { string modelEffect = null; if (graphicsCompositor.Layers != null) { foreach (var layer in graphicsCompositor.Layers) { var layerModelEffect = RemoveModelEffectsFromLayer(layer); if (modelEffect == null) { modelEffect = layerModelEffect; } } } if (graphicsCompositor.Master != null) { var layerModelEffect = RemoveModelEffectsFromLayer(graphicsCompositor.Master); if (modelEffect == null) { modelEffect = layerModelEffect; } } if (modelEffect != null) { graphicsCompositor.ModelEffect = modelEffect; } } }
protected override void UpgradeAsset(AssetMigrationContext context, PackageVersion currentVersion, PackageVersion targetVersion, dynamic asset, PackageLoadingAssetFile assetFile, OverrideUpgraderHint overrideHint) { if (asset.ColliderShapes == null) { return; } foreach (var colliderShape in asset.ColliderShapes) { if (colliderShape.Node.Tag == "!Box2DColliderShapeDesc") { var size = 2f * DynamicYamlExtensions.ConvertTo <Vector2>(colliderShape.HalfExtent); colliderShape.Size = DynamicYamlExtensions.ConvertFrom(size); colliderShape.HalfExtent = DynamicYamlEmpty.Default; } if (colliderShape.Node.Tag == "!BoxColliderShapeDesc") { var size = 2f * DynamicYamlExtensions.ConvertTo <Vector3>(colliderShape.HalfExtents); colliderShape.Size = DynamicYamlExtensions.ConvertFrom(size); colliderShape.HalfExtents = DynamicYamlEmpty.Default; } if (colliderShape.Node.Tag == "!CapsuleColliderShapeDesc" || colliderShape.Node.Tag == "!CylinderColliderShapeDesc") { var upVector = DynamicYamlExtensions.ConvertTo <Vector3>(colliderShape.UpAxis); if (upVector == Vector3.UnitX) { colliderShape.Orientation = ShapeOrientation.UpX; } if (upVector == Vector3.UnitZ) { colliderShape.Orientation = ShapeOrientation.UpZ; } colliderShape.UpAxis = DynamicYamlEmpty.Default; } if (colliderShape.Node.Tag == "!CapsuleColliderShapeDesc" && colliderShape.Height != null) { colliderShape.Length = 2f * (float)colliderShape.Height; colliderShape.Height = DynamicYamlEmpty.Default; } if (colliderShape.Node.Tag == "!CylinderColliderShapeDesc") { colliderShape.Radius = (float)colliderShape.HalfExtents.X; colliderShape.Height = 2f * (float)colliderShape.HalfExtents.Y; colliderShape.HalfExtents = DynamicYamlEmpty.Default; } } }
protected override void UpgradeAsset(AssetMigrationContext context, PackageVersion currentVersion, PackageVersion targetVersion, dynamic asset, PackageLoadingAssetFile assetFile, OverrideUpgraderHint overrideHint) { if (asset.FontType == null) return; if (asset.FontType.Size == null) { // It is possible our font type has the default size of 16, which translates to 21.33333 in pixel size asset.FontType.AddChild("Size", 21.33333); return; } var newSize = ((float)asset.FontType.Size) * 1.3333333f; asset.FontType.RemoveChild("Size"); asset.FontType.AddChild("Size", newSize); }