mv TextureSetImporter TextureDescriptorGenerator

This commit is contained in:
Masataka SUMI 2021-05-27 15:36:52 +09:00
parent 157c7091f7
commit a4a5b1d0cb
25 changed files with 36 additions and 36 deletions

View File

@ -33,14 +33,14 @@ namespace UniGLTF
static bool s_foldMaterials = true;
static bool s_foldTextures = true;
public static void OnGUI(ScriptedImporter importer, GltfParser parser, ITextureSetImporter textureSetImporter, Func<string, string> textureDir, Func<string, string> materialDir)
public static void OnGUI(ScriptedImporter importer, GltfParser parser, ITextureDescriptorGenerator textureDescriptorGenerator, Func<string, string> textureDir, Func<string, string> materialDir)
{
var hasExternal = importer.GetExternalObjectMap().Any(x => x.Value is Material || x.Value is Texture2D);
using (new TmpGuiEnable(!hasExternal))
{
if (GUILayout.Button("Extract Materials And Textures ..."))
{
ExtractMaterialsAndTextures(importer, parser, textureSetImporter, textureDir, materialDir);
ExtractMaterialsAndTextures(importer, parser, textureDescriptorGenerator, textureDir, materialDir);
}
}
@ -56,7 +56,7 @@ namespace UniGLTF
s_foldTextures = EditorGUILayout.Foldout(s_foldTextures, "Remapped Textures");
if (s_foldTextures)
{
importer.DrawRemapGUI<UnityEngine.Texture>(textureSetImporter.GetTextureImportParamSet().GetEnumerable().Select(x => x.SubAssetKey));
importer.DrawRemapGUI<UnityEngine.Texture>(textureDescriptorGenerator.GetTextureImportParamSet().GetEnumerable().Select(x => x.SubAssetKey));
}
if (GUILayout.Button("Clear"))
@ -74,7 +74,7 @@ namespace UniGLTF
AssetDatabase.ImportAsset(self.assetPath, ImportAssetOptions.ForceUpdate);
}
static void ExtractMaterialsAndTextures(ScriptedImporter self, GltfParser parser, ITextureSetImporter textureSetImporter, Func<string, string> textureDir, Func<string, string> materialDir)
static void ExtractMaterialsAndTextures(ScriptedImporter self, GltfParser parser, ITextureDescriptorGenerator textureDescriptorGenerator, Func<string, string> textureDir, Func<string, string> materialDir)
{
if (string.IsNullOrEmpty(self.assetPath))
{
@ -97,7 +97,7 @@ namespace UniGLTF
TextureExtractor.ExtractTextures(
parser,
assetPath.Parent.Child(dirName),
textureSetImporter,
textureDescriptorGenerator,
self.GetSubAssets<Texture>(self.assetPath).ToDictionary(kv => kv.Item1, kv => kv.Item2),
addRemap,
onCompleted

View File

@ -49,7 +49,7 @@ namespace UniGLTF
break;
case Tabs.Materials:
EditorMaterial.OnGUI(m_importer, m_parser, new GltfTextureSetImporter(m_parser),
EditorMaterial.OnGUI(m_importer, m_parser, new GltfTextureDescriptorGenerator(m_parser),
assetPath => $"{Path.GetFileNameWithoutExtension(assetPath)}.Textures",
assetPath => $"{Path.GetFileNameWithoutExtension(assetPath)}.Materials");
break;

View File

@ -49,7 +49,7 @@ namespace UniGLTF
break;
case Tabs.Materials:
EditorMaterial.OnGUI(m_importer, m_parser, new GltfTextureSetImporter(m_parser),
EditorMaterial.OnGUI(m_importer, m_parser, new GltfTextureDescriptorGenerator(m_parser),
assetPath => $"{Path.GetFileNameWithoutExtension(assetPath)}.Textures",
assetPath => $"{Path.GetFileNameWithoutExtension(assetPath)}.Materials");
break;

View File

@ -44,7 +44,7 @@ namespace UniGLTF
using (var loader = new ImporterContext(parser, extractedObjects))
{
// Configure TextureImporter to Extracted Textures.
foreach (var textureInfo in loader.TextureSetImporter.GetTextureImportParamSet().GetEnumerable())
foreach (var textureInfo in loader.TextureDescriptorGenerator.GetTextureImportParamSet().GetEnumerable())
{
TextureImporterConfigurator.Configure(textureInfo, loader.TextureFactory.ExternalTextures);
}

View File

@ -75,12 +75,12 @@ namespace UniGLTF
/// <param name="dirName"></param>
/// <param name="onCompleted"></param>
public static void ExtractTextures(GltfParser parser, UnityPath textureDirectory,
ITextureSetImporter textureSetImporter, IReadOnlyDictionary<SubAssetKey, Texture> subAssets,
ITextureDescriptorGenerator textureDescriptorGenerator, IReadOnlyDictionary<SubAssetKey, Texture> subAssets,
Action<SubAssetKey, Texture2D> addRemap,
Action<IEnumerable<UnityPath>> onCompleted = null)
{
var extractor = new TextureExtractor(parser, textureDirectory, subAssets);
foreach (var param in textureSetImporter.GetTextureImportParamSet().GetEnumerable())
foreach (var param in textureDescriptorGenerator.GetTextureImportParamSet().GetEnumerable())
{
extractor.Extract(param.SubAssetKey, param);
}

View File

@ -32,7 +32,7 @@ namespace UniGLTF
#endregion
public ITextureSetImporter TextureSetImporter { get; protected set; }
public ITextureDescriptorGenerator TextureDescriptorGenerator { get; protected set; }
public IMaterialImporter MaterialImporter { get; protected set; }
public TextureFactory TextureFactory { get; }
public MaterialFactory MaterialFactory { get; }
@ -40,7 +40,7 @@ namespace UniGLTF
public ImporterContext(GltfParser parser, IReadOnlyDictionary<SubAssetKey, UnityEngine.Object> externalObjectMap = null)
{
Parser = parser;
TextureSetImporter = new GltfTextureSetImporter(Parser);
TextureDescriptorGenerator = new GltfTextureDescriptorGenerator(Parser);
MaterialImporter = new GltfMaterialImporter();
externalObjectMap = externalObjectMap ?? new Dictionary<SubAssetKey, UnityEngine.Object>();
@ -183,7 +183,7 @@ namespace UniGLTF
public async Task LoadTexturesAsync()
{
var textures = TextureSetImporter.GetTextureImportParamSet().GetEnumerable();
var textures = TextureDescriptorGenerator.GetTextureImportParamSet().GetEnumerable();
foreach (var param in textures)
{
var tex = await TextureFactory.GetTextureAsync(param);

View File

@ -25,12 +25,12 @@ namespace UniGLTF
/// * normal 外部ライルをそのまま使うので SubAsset にしない(normalとしてロードするためにAssetImporterの設定は必用)
/// * metallicRoughnessOcclusion 変換結果を SubAsset 化する
/// </summary>
public sealed class GltfTextureSetImporter : ITextureSetImporter
public sealed class GltfTextureDescriptorGenerator : ITextureDescriptorGenerator
{
private readonly GltfParser m_parser;
private TextureImportParamSet _textureImportParamSet;
public GltfTextureSetImporter(GltfParser parser)
public GltfTextureDescriptorGenerator(GltfParser parser)
{
m_parser = parser;
}

View File

@ -7,7 +7,7 @@ namespace UniGLTF
///
/// glTF Texture と Unity Texture の対応関係は N:M である。
/// </summary>
public interface ITextureSetImporter
public interface ITextureDescriptorGenerator
{
TextureImportParamSet GetTextureImportParamSet();
}

View File

@ -136,7 +136,7 @@ namespace UniGLTF
}
// should unique
var gltfTextures = new GltfTextureSetImporter(parser).GetTextureImportParamSet().GetEnumerable()
var gltfTextures = new GltfTextureDescriptorGenerator(parser).GetTextureImportParamSet().GetEnumerable()
.Select(x => x.SubAssetKey)
.ToArray();
var distinct = gltfTextures.Distinct().ToArray();

View File

@ -207,7 +207,7 @@ namespace UniGLTF
{
GLTF = TwoTexture(),
};
var items = new GltfTextureSetImporter(parser).GetTextureImportParamSet().GetEnumerable().ToArray();
var items = new GltfTextureDescriptorGenerator(parser).GetTextureImportParamSet().GetEnumerable().ToArray();
Assert.AreEqual(2, items.Length);
}
@ -216,7 +216,7 @@ namespace UniGLTF
{
GLTF = TwoTextureOneUri(),
};
var items = new GltfTextureSetImporter(parser).GetTextureImportParamSet().GetEnumerable().ToArray();
var items = new GltfTextureDescriptorGenerator(parser).GetTextureImportParamSet().GetEnumerable().ToArray();
Assert.AreEqual(1, items.Length);
}
@ -225,7 +225,7 @@ namespace UniGLTF
{
GLTF = TwoTextureOneImage(),
};
var items = new GltfTextureSetImporter(parser).GetTextureImportParamSet().GetEnumerable().ToArray();
var items = new GltfTextureDescriptorGenerator(parser).GetTextureImportParamSet().GetEnumerable().ToArray();
Assert.AreEqual(1, items.Length);
}
@ -234,7 +234,7 @@ namespace UniGLTF
{
GLTF = CombineMetallicSmoothOcclusion(),
};
var items = new GltfTextureSetImporter(parser).GetTextureImportParamSet().GetEnumerable().ToArray();
var items = new GltfTextureDescriptorGenerator(parser).GetTextureImportParamSet().GetEnumerable().ToArray();
Assert.AreEqual(1, items.Length);
}
}

View File

@ -96,7 +96,7 @@ namespace UniGLTF
// extractor
var extractor = new TextureExtractor(parser, UnityPath.FromUnityPath(""), context.TextureFactory.ConvertedTextures);
var m = context.TextureSetImporter.GetTextureImportParamSet().GetEnumerable()
var m = context.TextureDescriptorGenerator.GetTextureImportParamSet().GetEnumerable()
.FirstOrDefault(x => x.SubAssetKey.Name == "texture_1.standard");
Assert.Catch<NotImplementedException>(() => extractor.Extract(m.SubAssetKey, m));

View File

@ -14,7 +14,7 @@ namespace VRM
UnityPath m_prefabPath;
List<UnityPath> m_paths = new List<UnityPath>();
public ITextureSetImporter TextureSetImporter => m_context.TextureSetImporter;
public ITextureDescriptorGenerator TextureDescriptorGenerator => m_context.TextureDescriptorGenerator;
public VRMEditorImporterContext(VRMImporterContext context, UnityPath prefabPath)
{
@ -105,7 +105,7 @@ namespace VRM
var subAssets = m_context.TextureFactory.ConvertedTextures;
var vrmTextures = new VRMMaterialImporter(m_context.VRM);
var dirName = $"{m_prefabPath.FileNameWithoutExtension}.Textures";
TextureExtractor.ExtractTextures(m_context.Parser, m_prefabPath.Parent.Child(dirName), m_context.TextureSetImporter, subAssets, (_x, _y) => { }, onTextureReloaded);
TextureExtractor.ExtractTextures(m_context.Parser, m_prefabPath.Parent.Child(dirName), m_context.TextureDescriptorGenerator, subAssets, (_x, _y) => { }, onTextureReloaded);
}
bool SaveAsAsset(UnityEngine.Object o)

View File

@ -84,7 +84,7 @@ namespace VRM
using (var context = new VRMImporterContext(parser, map))
{
var editor = new VRMEditorImporterContext(context, prefabPath);
foreach (var textureInfo in editor.TextureSetImporter.GetTextureImportParamSet().GetEnumerable())
foreach (var textureInfo in editor.TextureDescriptorGenerator.GetTextureImportParamSet().GetEnumerable())
{
VRMShaders.TextureImporterConfigurator.Configure(textureInfo, context.TextureFactory.ExternalTextures);
}

View File

@ -59,7 +59,7 @@ namespace VRM
using (var context = new VRMImporterContext(parser, map))
{
var editor = new VRMEditorImporterContext(context, prefabPath);
foreach (var textureInfo in context.TextureSetImporter.GetTextureImportParamSet().GetEnumerable())
foreach (var textureInfo in context.TextureDescriptorGenerator.GetTextureImportParamSet().GetEnumerable())
{
VRMShaders.TextureImporterConfigurator.Configure(textureInfo, context.TextureFactory.ExternalTextures);
}

View File

@ -27,7 +27,7 @@ namespace VRM
if (glTF_VRM_extensions.TryDeserialize(GLTF.extensions, out glTF_VRM_extensions vrm))
{
VRM = vrm;
TextureSetImporter = new VRMTextureSetImporter(Parser, VRM);
TextureDescriptorGenerator = new VrmTextureDescriptorGenerator(Parser, VRM);
MaterialImporter = new VRMMaterialImporter(VRM);
}
else

View File

@ -6,13 +6,13 @@ using VRMShaders;
namespace VRM
{
public sealed class VRMTextureSetImporter : ITextureSetImporter
public sealed class VrmTextureDescriptorGenerator : ITextureDescriptorGenerator
{
private readonly GltfParser m_parser;
private readonly glTF_VRM_extensions m_vrm;
private TextureImportParamSet _textureImportParamSet;
public VRMTextureSetImporter(GltfParser parser, glTF_VRM_extensions vrm)
public VrmTextureDescriptorGenerator(GltfParser parser, glTF_VRM_extensions vrm)
{
m_parser = parser;
m_vrm = vrm;

View File

@ -72,7 +72,7 @@ namespace VRM
},
}
};
var items = new VRMTextureSetImporter(parser, vrm).GetTextureImportParamSet().GetEnumerable().ToArray();
var items = new VrmTextureDescriptorGenerator(parser, vrm).GetTextureImportParamSet().GetEnumerable().ToArray();
Assert.AreEqual(1, items.Length);
}
}

View File

@ -69,7 +69,7 @@ namespace UniVRM10
case Tabs.Materials:
if (m_parser != null && m_vrm != null)
{
EditorMaterial.OnGUI(m_importer, m_parser, new Vrm10TextureSetImporter(m_parser),
EditorMaterial.OnGUI(m_importer, m_parser, new Vrm10TextureDescriptorGenerator(m_parser),
assetPath => $"{Path.GetFileNameWithoutExtension(assetPath)}.vrm1.Textures",
assetPath => $"{Path.GetFileNameWithoutExtension(assetPath)}.vrm1.Materials");
}

View File

@ -101,7 +101,7 @@ namespace UniVRM10
using (var loader = new Vrm10Importer(parser, extractedObjects))
{
// settings TextureImporters
foreach (var textureInfo in loader.TextureSetImporter.GetTextureImportParamSet().GetEnumerable())
foreach (var textureInfo in loader.TextureDescriptorGenerator.GetTextureImportParamSet().GetEnumerable())
{
VRMShaders.TextureImporterConfigurator.Configure(textureInfo, loader.TextureFactory.ExternalTextures);
}

View File

@ -7,12 +7,12 @@ using VRMShaders;
namespace UniVRM10
{
public sealed class Vrm10TextureSetImporter : ITextureSetImporter
public sealed class Vrm10TextureDescriptorGenerator : ITextureDescriptorGenerator
{
private readonly GltfParser m_parser;
private TextureImportParamSet _textureImportParamSet;
public Vrm10TextureSetImporter(GltfParser parser)
public Vrm10TextureDescriptorGenerator(GltfParser parser)
{
m_parser = parser;
}

View File

@ -24,7 +24,7 @@ namespace UniVRM10
public Vrm10Importer(UniGLTF.GltfParser parser, IReadOnlyDictionary<SubAssetKey, UnityEngine.Object> externalObjectMap = null)
: base(parser, externalObjectMap)
{
TextureSetImporter = new Vrm10TextureSetImporter(parser);
TextureDescriptorGenerator = new Vrm10TextureDescriptorGenerator(parser);
MaterialImporter = new Vrm10MaterialImporter();
m_externalMap = externalObjectMap;
@ -281,7 +281,7 @@ namespace UniVRM10
{
m_meta.Authors.AddRange(src.Authors);
}
if (Vrm10TextureSetImporter.TryGetMetaThumbnailTextureImportParam(Parser, vrm, out (SubAssetKey, VRMShaders.TextureImportParam Param) kv))
if (Vrm10TextureDescriptorGenerator.TryGetMetaThumbnailTextureImportParam(Parser, vrm, out (SubAssetKey, VRMShaders.TextureImportParam Param) kv))
{
var texture = await TextureFactory.GetTextureAsync(kv.Param);
if (texture is Texture2D tex2D)