Merge pull request #1545 from ousttrue/fix/new_immediatecaller

remove `awaitCaller ?? new ImmediateCaller()`
This commit is contained in:
ousttrue 2022-02-22 18:20:20 +09:00 committed by GitHub
commit bd97a4f47f
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
9 changed files with 37 additions and 29 deletions

View File

@ -143,15 +143,9 @@ namespace UniGLTF.MeshUtility
{
if (awaitCaller == null)
{
awaitCaller = new ImmediateCaller();
throw new ArgumentNullException();
}
/*
Debug.LogFormat("{0} exclude: {1}",
src.name,
String.Join(", ", eraseBoneIndices.Select(x => x.ToString()).ToArray())
);
*/
var mesh = new Mesh();
mesh.name = src.name + "(erased)";

View File

@ -75,11 +75,11 @@ namespace UniGLTF
};
#region Load. Build unity objects
public virtual async Task<RuntimeGltfInstance> LoadAsync(IAwaitCaller awaitCaller = null, Func<string, IDisposable> MeasureTime = null)
public virtual async Task<RuntimeGltfInstance> LoadAsync(IAwaitCaller awaitCaller, Func<string, IDisposable> MeasureTime = null)
{
if (awaitCaller == null)
{
awaitCaller = new ImmediateCaller();
throw new ArgumentNullException();
}
if (MeasureTime == null)
@ -248,9 +248,12 @@ namespace UniGLTF
await awaitCaller.NextFrame();
}
public async Task LoadTexturesAsync(IAwaitCaller awaitCaller = null)
public async Task LoadTexturesAsync(IAwaitCaller awaitCaller)
{
awaitCaller = awaitCaller ?? new ImmediateCaller();
if (awaitCaller == null)
{
throw new ArgumentNullException();
}
var textures = TextureDescriptorGenerator.Get().GetEnumerable();
foreach (var param in textures)
@ -259,9 +262,12 @@ namespace UniGLTF
}
}
public async Task LoadMaterialsAsync(IAwaitCaller awaitCaller = null)
public async Task LoadMaterialsAsync(IAwaitCaller awaitCaller)
{
awaitCaller = awaitCaller ?? new ImmediateCaller();
if (awaitCaller == null)
{
throw new ArgumentNullException();
}
if (Data.GLTF.materials == null || Data.GLTF.materials.Count == 0)
{

View File

@ -75,7 +75,7 @@ namespace VRM
//
// convert images(metallic roughness, occlusion map)
//
var task = m_context.LoadMaterialsAsync();
var task = m_context.LoadMaterialsAsync(new ImmediateCaller());
if (!task.IsCompleted)
{
throw new Exception();
@ -93,7 +93,7 @@ namespace VRM
}
// Convert thumbnail image
var task2 = m_context.ReadMetaAsync();
var task2 = m_context.ReadMetaAsync(new ImmediateCaller());
if (!task2.IsCompleted || task2.IsCanceled || task2.IsFaulted)
{
throw new Exception();

View File

@ -39,7 +39,7 @@ namespace VRM
using (MeasureTime("VRM LoadMeta"))
{
await LoadMetaAsync();
await LoadMetaAsync(awaitCaller);
}
await awaitCaller.NextFrame();
@ -68,9 +68,13 @@ namespace VRM
}
}
async Task LoadMetaAsync()
async Task LoadMetaAsync(IAwaitCaller awaitCaller)
{
var meta = await ReadMetaAsync();
if (awaitCaller == null)
{
throw new ArgumentNullException();
}
var meta = await ReadMetaAsync(awaitCaller);
var _meta = Root.AddComponent<VRMMeta>();
_meta.Meta = meta;
Meta = meta;
@ -276,9 +280,12 @@ namespace VRM
public BlendShapeAvatar BlendShapeAvatar;
public VRMMetaObject Meta;
public async Task<VRMMetaObject> ReadMetaAsync(IAwaitCaller awaitCaller = null, bool createThumbnail = false)
public async Task<VRMMetaObject> ReadMetaAsync(IAwaitCaller awaitCaller, bool createThumbnail = false)
{
awaitCaller = awaitCaller ?? new ImmediateCaller();
if (awaitCaller == null)
{
throw new ArgumentNullException();
}
var meta = ScriptableObject.CreateInstance<VRMMetaObject>();
meta.name = "Meta";

View File

@ -36,7 +36,7 @@ namespace VRM
{
if (metaCallback != null)
{
var meta = await loader.ReadMetaAsync(new ImmediateCaller(), true);
var meta = await loader.ReadMetaAsync(awaitCaller, true);
metaCallback(meta);
}
return await loader.LoadAsync(awaitCaller);

View File

@ -136,11 +136,11 @@ namespace UniVRM10
/// <param name="thirdPersonOnlyLayer">layer VRMThirdPersonOnly ir 10</param>
/// <param name="awaitCaller">Headless mesh creation task scheduler. By default, creation is immediate</param>
/// <returns></returns>
public async Task SetupAsync(GameObject go, bool isSelf = true, int? firstPersonOnlyLayer = default, int? thirdPersonOnlyLayer = default, IAwaitCaller awaitCaller = default)
public async Task SetupAsync(GameObject go, IAwaitCaller awaitCaller, bool isSelf = true, int? firstPersonOnlyLayer = default, int? thirdPersonOnlyLayer = default)
{
if (awaitCaller == null)
{
awaitCaller = new ImmediateCaller();
throw new ArgumentNullException();
}
var layer = (

View File

@ -108,9 +108,7 @@ namespace UniVRM10
if (awaitCaller == null)
{
awaitCaller = Application.isPlaying
? (IAwaitCaller) new RuntimeOnlyAwaitCaller()
: (IAwaitCaller) new ImmediateCaller();
throw new ArgumentNullException();
}
using (var gltfData = new GlbLowLevelParser(name, bytes).Parse())

View File

@ -79,9 +79,12 @@ namespace UniVRM10
}
}
public override async Task<RuntimeGltfInstance> LoadAsync(IAwaitCaller awaitCaller = null, Func<string, IDisposable> MeasureTime = null)
public override async Task<RuntimeGltfInstance> LoadAsync(IAwaitCaller awaitCaller, Func<string, IDisposable> MeasureTime = null)
{
awaitCaller = awaitCaller ?? new ImmediateCaller();
if (awaitCaller == null)
{
throw new ArgumentNullException();
}
// NOTE: VRM データに対して、Load 前に必要なヘビーな変換処理を行う.
// ヘビーなため、別スレッドで Run する.

View File

@ -114,7 +114,7 @@ namespace VRM.FirstPersonSample
var loaded = default(RuntimeGltfInstance);
if (m_loadAsync)
{
loaded = await context.LoadAsync();
loaded = await context.LoadAsync(new VRMShaders.RuntimeOnlyAwaitCaller());
}
else
{