if IsAssetImport, Prevent runtime resource allocation.

Or temporary object when export.
This commit is contained in:
ousttrue 2024-10-23 15:38:44 +09:00
parent 675bb7be41
commit a4af90c978
4 changed files with 17 additions and 5 deletions

View File

@ -12,6 +12,7 @@ namespace UniGLTF
/// </summary>
public class ImporterContext : IResponsibilityForDestroyObjects
{
public readonly bool IsAssetImport;
private readonly ImporterContextSettings _settings;
public ITextureDescriptorGenerator TextureDescriptorGenerator { get; protected set; }
@ -37,8 +38,10 @@ namespace UniGLTF
IReadOnlyDictionary<SubAssetKey, UnityEngine.Object> externalObjectMap = null,
ITextureDeserializer textureDeserializer = null,
IMaterialDescriptorGenerator materialGenerator = null,
ImporterContextSettings settings = null)
ImporterContextSettings settings = null,
bool isAssetImport = false)
{
IsAssetImport = isAssetImport;
_settings = settings ?? new ImporterContextSettings();
Data = data;
TextureDescriptorGenerator = new GltfTextureDescriptorGenerator(Data);

View File

@ -48,7 +48,10 @@ namespace UniVRM10
var materialGenerator = GetMaterialDescriptorGenerator(renderPipeline);
using (var loader = new Vrm10Importer(result, externalObjectMap: extractedObjects, materialGenerator: materialGenerator))
using (var loader = new Vrm10Importer(result,
externalObjectMap: extractedObjects,
materialGenerator: materialGenerator,
isAssetImport: true))
{
// settings TextureImporters
foreach (var textureInfo in loader.TextureDescriptorGenerator.Get().GetEnumerable())

View File

@ -290,6 +290,7 @@ namespace UniVRM10
{
Debug.Log("vrm-1.0 FreezeMesh");
var copy = GameObject.Instantiate(root);
copy.GetComponent<Vrm10Instance>().UpdateType = Vrm10Instance.UpdateTypes.None;
disposer.Push(copy);
root = copy;

View File

@ -33,9 +33,10 @@ namespace UniVRM10
IMaterialDescriptorGenerator materialGenerator = null,
bool useControlRig = false,
ImporterContextSettings settings = null,
IVrm10SpringBoneRuntime springboneRuntime = null
IVrm10SpringBoneRuntime springboneRuntime = null,
bool isAssetImport = false
)
: base(vrm.Data, externalObjectMap, textureDeserializer, settings: settings)
: base(vrm.Data, externalObjectMap, textureDeserializer, settings: settings, isAssetImport: isAssetImport)
{
if (vrm == null)
{
@ -288,7 +289,11 @@ namespace UniVRM10
await LoadSpringBoneAsync(awaitCaller, controller, springBone);
}
if (Application.isPlaying)
if (IsAssetImport)
{
controller.UpdateType = Vrm10Instance.UpdateTypes.None;
}
else
{
// EditorImport では呼ばない
// Vrm10Runtime で初期化していたが、 async にするためこちらに移動 v0.127