Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -160,7 +160,7 @@ private IWearable GetMockWearable(string materialName, string category)

mockWearable.DTO.Returns(dto);

var rendererInfo = new AttachmentRegularAsset.RendererInfo(skinnedMeshRenderer, fakeABMaterial);
var rendererInfo = new AttachmentRegularAsset.RendererInfo(fakeABMaterial);

var wearableAsset = new AttachmentRegularAsset(avatarGameObject, new List<AttachmentRegularAsset.RendererInfo> { rendererInfo }, null);
wearableAsset.AddReference();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
using DCL.AvatarRendering.Loading.Components;
using DCL.AvatarRendering.Loading.DTO;
using DCL.AvatarRendering.Wearables.Helpers;
using ECS.StreamableLoading;
using ECS.StreamableLoading.AudioClips;
using ECS.StreamableLoading.Common.Components;
using ECS.StreamableLoading.Textures;
Expand Down Expand Up @@ -122,9 +123,9 @@ private static AttachmentRegularAsset CreateAttachmentAsset(GameObject glb)
var rendererInfos = new List<AttachmentRegularAsset.RendererInfo>();

foreach (SkinnedMeshRenderer? renderer in glb.GetComponentsInChildren<SkinnedMeshRenderer>())
rendererInfos.Add(new AttachmentRegularAsset.RendererInfo(renderer, renderer.sharedMaterial));
rendererInfos.Add(new AttachmentRegularAsset.RendererInfo(renderer.sharedMaterial));

return new AttachmentRegularAsset(glb, rendererInfos, ECS.StreamableLoading.IStreamableRefCountData.Null.INSTANCE);
return new AttachmentRegularAsset(glb, rendererInfos, IStreamableRefCountData.Null.INSTANCE);
}
}
}
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
using DCL.Optimization.Pools;
using DCL.Profiling;
using ECS.StreamableLoading;
using ECS.StreamableLoading.AssetBundles;
using System;
using System.Collections.Generic;
using UnityEngine;
Expand Down Expand Up @@ -61,19 +62,17 @@ protected override void DisposeInternal()

public readonly struct RendererInfo
{
public readonly SkinnedMeshRenderer SkinnedMeshRenderer;
public readonly Material Material;

public RendererInfo(SkinnedMeshRenderer skinnedMeshRenderer, Material material)
public RendererInfo(Material material)
{
SkinnedMeshRenderer = skinnedMeshRenderer;
Material = material != null ? material : DefaultMaterial.New();
}
}

public string GetInstanceName()
{
var assetBundleData = assetData as ECS.StreamableLoading.AssetBundles.AssetBundleData;
var assetBundleData = assetData as AssetBundleData;
return assetBundleData != null ? assetBundleData.GetInstanceName() : $"NOT_AB_{MainAsset.name}";
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,14 @@ public static CachedAttachment InstantiateWearable(this IAttachmentsAssetsCache
else
{
var instantiatedWearable = Object.Instantiate(originalAsset.MainAsset, parent);

using PoolExtensions.Scope<List<MeshRenderer>> meshRenderers = instantiatedWearable.GetComponentsInChildrenIntoPooledList<MeshRenderer>(true);

//A wearable cannot have a MeshRenderer, only SkinnedMeshRenderer.
//We need to destroy it form the source wearable
for (var i = 0; i < meshRenderers.Value.Count; i++)
Object.DestroyImmediate(meshRenderers.Value[i].gameObject);

instantiatedWearable.name = originalAsset.GetInstanceName();
cachedWearable = new CachedAttachment(originalAsset, instantiatedWearable, outlineCompatible);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -331,7 +331,7 @@ public static AttachmentRegularAsset ToRegularAsset(this StreamableLoadingResult
using PoolExtensions.Scope<List<SkinnedMeshRenderer>> pooledList = go.GetComponentsInChildrenIntoPooledList<SkinnedMeshRenderer>();

foreach (SkinnedMeshRenderer skinnedMeshRenderer in pooledList.Value)
rendererInfos.Add(new AttachmentRegularAsset.RendererInfo(skinnedMeshRenderer, skinnedMeshRenderer.sharedMaterial));
rendererInfos.Add(new AttachmentRegularAsset.RendererInfo(skinnedMeshRenderer.sharedMaterial));

return new AttachmentRegularAsset(go, rendererInfos, result.Asset);
}
Expand All @@ -346,7 +346,7 @@ public static AttachmentRegularAsset ToRegularAsset(this StreamableLoadingResult
using PoolExtensions.Scope<List<SkinnedMeshRenderer>> pooledList = go.GetComponentsInChildrenIntoPooledList<SkinnedMeshRenderer>();

foreach (SkinnedMeshRenderer skinnedMeshRenderer in pooledList.Value)
rendererInfos.Add(new AttachmentRegularAsset.RendererInfo(skinnedMeshRenderer, skinnedMeshRenderer.sharedMaterial));
rendererInfos.Add(new AttachmentRegularAsset.RendererInfo(skinnedMeshRenderer.sharedMaterial));

return new AttachmentRegularAsset(go, rendererInfos, result.Asset);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -91,7 +91,7 @@ public override void Initialize()
foreach (var skinnedMeshRenderer in emptyDefaultWearable.GetComponentsInChildren<SkinnedMeshRenderer>())
{
skinnedMeshRenderer.sharedMesh = mesh;
rendererInfos.Add(new AttachmentRegularAsset.RendererInfo(skinnedMeshRenderer, skinnedMeshRenderer.sharedMaterial));
rendererInfos.Add(new AttachmentRegularAsset.RendererInfo(skinnedMeshRenderer.sharedMaterial));
}

IWearable emptyWearable = wearableStorage.GetOrAddByDTO(wearableDTO, false);
Expand Down