From 5b04426cd3afe24c33ccf4b8dfbf547f34835ac9 Mon Sep 17 00:00:00 2001 From: PopSlime Date: Wed, 17 May 2023 20:43:04 +0800 Subject: [PATCH] Update Cryville.Crtr.Extension. --- .../Crtr/Browsing/LegacyResourceManager.cs | 11 +++++++---- .../Extensions/Umg/ChartResourceImporter.cs | 7 +++---- .../Extensions/Umg/RulesetResourceImporter.cs | 7 +++---- .../Extensions/Umg/SkinResourceImporter.cs | 7 +++---- Assets/Plugins/Cryville.Crtr.Extension.dll | Bin 12800 -> 14336 bytes 5 files changed, 16 insertions(+), 16 deletions(-) diff --git a/Assets/Cryville/Crtr/Browsing/LegacyResourceManager.cs b/Assets/Cryville/Crtr/Browsing/LegacyResourceManager.cs index af18fe8..a3f4298 100644 --- a/Assets/Cryville/Crtr/Browsing/LegacyResourceManager.cs +++ b/Assets/Cryville/Crtr/Browsing/LegacyResourceManager.cs @@ -1,4 +1,4 @@ -using Cryville.Common; +using Cryville.Common; using Cryville.Common.Unity; using Cryville.Crtr.Extension; using Cryville.Crtr.Extensions.Umg; @@ -118,9 +118,12 @@ namespace Cryville.Crtr.Browsing { IEnumerable converters; if (!ExtensionManager.TryGetConverters(file.Extension, out converters)) return false; foreach (var converter in converters) { - IEnumerable resources = null; + var resources = new List(); + var ses = new ConversionSession { + OnResourceAdd = res => resources.Add(res) + }; try { - resources = converter.ConvertFrom(file); + converter.Convert(file, ses); } catch (Exception ex) { LogAndPopupExtra(4, ex, "Failed to import resource: {0}", ex.Message); @@ -271,4 +274,4 @@ namespace Cryville.Crtr.Browsing { }).ToList(); } } -} \ No newline at end of file +} diff --git a/Assets/Cryville/Crtr/Extensions/Umg/ChartResourceImporter.cs b/Assets/Cryville/Crtr/Extensions/Umg/ChartResourceImporter.cs index c30a840..28f8240 100644 --- a/Assets/Cryville/Crtr/Extensions/Umg/ChartResourceImporter.cs +++ b/Assets/Cryville/Crtr/Extensions/Umg/ChartResourceImporter.cs @@ -1,6 +1,5 @@ -using Cryville.Crtr.Extension; +using Cryville.Crtr.Extension; using Newtonsoft.Json; -using System.Collections.Generic; using System.IO; using System.Text; @@ -11,12 +10,12 @@ namespace Cryville.Crtr.Extensions.Umg { return SUPPORTED_FORMATS; } - public override IEnumerable ConvertFrom(FileInfo file) { + public override void Convert(FileInfo file, ConversionSession ses) { var meta = Path.Combine(file.Directory.FullName, "meta.json"); if (!File.Exists(meta)) throw new FileNotFoundException("Meta file for the chart not found"); using (StreamReader reader = new StreamReader(meta, Encoding.UTF8)) { var data = JsonConvert.DeserializeObject(reader.ReadToEnd()); - return new Resource[] { new ChartResource(data.name, file) }; + ses.AddResource(new ChartResource(data.name, file)); } } } diff --git a/Assets/Cryville/Crtr/Extensions/Umg/RulesetResourceImporter.cs b/Assets/Cryville/Crtr/Extensions/Umg/RulesetResourceImporter.cs index 24bf18c..d0e3e13 100644 --- a/Assets/Cryville/Crtr/Extensions/Umg/RulesetResourceImporter.cs +++ b/Assets/Cryville/Crtr/Extensions/Umg/RulesetResourceImporter.cs @@ -1,6 +1,5 @@ -using Cryville.Crtr.Extension; +using Cryville.Crtr.Extension; using Newtonsoft.Json; -using System.Collections.Generic; using System.IO; using System.Text; @@ -11,10 +10,10 @@ namespace Cryville.Crtr.Extensions.Umg { return SUPPORTED_FORMATS; } - public override IEnumerable ConvertFrom(FileInfo file) { + public override void Convert(FileInfo file, ConversionSession ses) { using (StreamReader reader = new StreamReader(file.FullName, Encoding.UTF8)) { var data = JsonConvert.DeserializeObject(reader.ReadToEnd()); - return new Resource[] { new RulesetResource(data.name, file) }; + ses.AddResource(new RulesetResource(data.name, file)); } } } diff --git a/Assets/Cryville/Crtr/Extensions/Umg/SkinResourceImporter.cs b/Assets/Cryville/Crtr/Extensions/Umg/SkinResourceImporter.cs index 5420413..3500c77 100644 --- a/Assets/Cryville/Crtr/Extensions/Umg/SkinResourceImporter.cs +++ b/Assets/Cryville/Crtr/Extensions/Umg/SkinResourceImporter.cs @@ -1,6 +1,5 @@ -using Cryville.Crtr.Extension; +using Cryville.Crtr.Extension; using Newtonsoft.Json; -using System.Collections.Generic; using System.IO; using System.Text; @@ -11,10 +10,10 @@ namespace Cryville.Crtr.Extensions.Umg { return SUPPORTED_FORMATS; } - public override IEnumerable ConvertFrom(FileInfo file) { + public override void Convert(FileInfo file, ConversionSession ses) { using (StreamReader reader = new StreamReader(file.FullName, Encoding.UTF8)) { var data = JsonConvert.DeserializeObject(reader.ReadToEnd()); - return new Resource[] { new SkinResource(data.name, file) }; + ses.AddResource(new SkinResource(data.name, file)); } } } diff --git a/Assets/Plugins/Cryville.Crtr.Extension.dll b/Assets/Plugins/Cryville.Crtr.Extension.dll index cfc4d44237ea7975b17e1d6ba7f6f182c08ff899..95a617fa18192b9054517110590626be6a336f6e 100644 GIT binary patch literal 14336 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