Skip to content

Commit 4781851

Browse files
authored
fix: magician wearable (#4348)
1 parent 0d77d7d commit 4781851

6 files changed

Lines changed: 18 additions & 10 deletions

File tree

Explorer/Assets/DCL/AvatarRendering/AvatarShape/Tests/Instantiate/AvatarInstantiatorSystemShould.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -160,7 +160,7 @@ private IWearable GetMockWearable(string materialName, string category)
160160

161161
mockWearable.DTO.Returns(dto);
162162

163-
var rendererInfo = new AttachmentRegularAsset.RendererInfo(skinnedMeshRenderer, fakeABMaterial);
163+
var rendererInfo = new AttachmentRegularAsset.RendererInfo(fakeABMaterial);
164164

165165
var wearableAsset = new AttachmentRegularAsset(avatarGameObject, new List<AttachmentRegularAsset.RendererInfo> { rendererInfo }, null);
166166
wearableAsset.AddReference();

Explorer/Assets/DCL/AvatarRendering/Emotes/EmbeddedEmotesData.cs

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
using DCL.AvatarRendering.Loading.Components;
33
using DCL.AvatarRendering.Loading.DTO;
44
using DCL.AvatarRendering.Wearables.Helpers;
5+
using ECS.StreamableLoading;
56
using ECS.StreamableLoading.AudioClips;
67
using ECS.StreamableLoading.Common.Components;
78
using ECS.StreamableLoading.Textures;
@@ -122,9 +123,9 @@ private static AttachmentRegularAsset CreateAttachmentAsset(GameObject glb)
122123
var rendererInfos = new List<AttachmentRegularAsset.RendererInfo>();
123124

124125
foreach (SkinnedMeshRenderer? renderer in glb.GetComponentsInChildren<SkinnedMeshRenderer>())
125-
rendererInfos.Add(new AttachmentRegularAsset.RendererInfo(renderer, renderer.sharedMaterial));
126+
rendererInfos.Add(new AttachmentRegularAsset.RendererInfo(renderer.sharedMaterial));
126127

127-
return new AttachmentRegularAsset(glb, rendererInfos, ECS.StreamableLoading.IStreamableRefCountData.Null.INSTANCE);
128+
return new AttachmentRegularAsset(glb, rendererInfos, IStreamableRefCountData.Null.INSTANCE);
128129
}
129130
}
130131
}

Explorer/Assets/DCL/AvatarRendering/Loading/Assets/AttachmentAssetBase.cs

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
using DCL.Optimization.Pools;
22
using DCL.Profiling;
33
using ECS.StreamableLoading;
4+
using ECS.StreamableLoading.AssetBundles;
45
using System;
56
using System.Collections.Generic;
67
using UnityEngine;
@@ -61,19 +62,17 @@ protected override void DisposeInternal()
6162

6263
public readonly struct RendererInfo
6364
{
64-
public readonly SkinnedMeshRenderer SkinnedMeshRenderer;
6565
public readonly Material Material;
6666

67-
public RendererInfo(SkinnedMeshRenderer skinnedMeshRenderer, Material material)
67+
public RendererInfo(Material material)
6868
{
69-
SkinnedMeshRenderer = skinnedMeshRenderer;
7069
Material = material != null ? material : DefaultMaterial.New();
7170
}
7271
}
7372

7473
public string GetInstanceName()
7574
{
76-
var assetBundleData = assetData as ECS.StreamableLoading.AssetBundles.AssetBundleData;
75+
var assetBundleData = assetData as AssetBundleData;
7776
return assetBundleData != null ? assetBundleData.GetInstanceName() : $"NOT_AB_{MainAsset.name}";
7877
}
7978
}

Explorer/Assets/DCL/AvatarRendering/Loading/Assets/AttachmentAssetUtility.cs

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,14 @@ public static CachedAttachment InstantiateWearable(this IAttachmentsAssetsCache
2222
else
2323
{
2424
var instantiatedWearable = Object.Instantiate(originalAsset.MainAsset, parent);
25+
26+
using PoolExtensions.Scope<List<MeshRenderer>> meshRenderers = instantiatedWearable.GetComponentsInChildrenIntoPooledList<MeshRenderer>(true);
27+
28+
//A wearable cannot have a MeshRenderer, only SkinnedMeshRenderer.
29+
//We need to destroy it form the source wearable
30+
for (var i = 0; i < meshRenderers.Value.Count; i++)
31+
Object.DestroyImmediate(meshRenderers.Value[i].gameObject);
32+
2533
instantiatedWearable.name = originalAsset.GetInstanceName();
2634
cachedWearable = new CachedAttachment(originalAsset, instantiatedWearable, outlineCompatible);
2735
}

Explorer/Assets/DCL/AvatarRendering/Wearables/Helpers/WearablePolymorphicBehaviour.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -331,7 +331,7 @@ public static AttachmentRegularAsset ToRegularAsset(this StreamableLoadingResult
331331
using PoolExtensions.Scope<List<SkinnedMeshRenderer>> pooledList = go.GetComponentsInChildrenIntoPooledList<SkinnedMeshRenderer>();
332332

333333
foreach (SkinnedMeshRenderer skinnedMeshRenderer in pooledList.Value)
334-
rendererInfos.Add(new AttachmentRegularAsset.RendererInfo(skinnedMeshRenderer, skinnedMeshRenderer.sharedMaterial));
334+
rendererInfos.Add(new AttachmentRegularAsset.RendererInfo(skinnedMeshRenderer.sharedMaterial));
335335

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

348348
foreach (SkinnedMeshRenderer skinnedMeshRenderer in pooledList.Value)
349-
rendererInfos.Add(new AttachmentRegularAsset.RendererInfo(skinnedMeshRenderer, skinnedMeshRenderer.sharedMaterial));
349+
rendererInfos.Add(new AttachmentRegularAsset.RendererInfo(skinnedMeshRenderer.sharedMaterial));
350350

351351
return new AttachmentRegularAsset(go, rendererInfos, result.Asset);
352352
}

Explorer/Assets/DCL/AvatarRendering/Wearables/Systems/Load/LoadDefaultWearablesSystem.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -91,7 +91,7 @@ public override void Initialize()
9191
foreach (var skinnedMeshRenderer in emptyDefaultWearable.GetComponentsInChildren<SkinnedMeshRenderer>())
9292
{
9393
skinnedMeshRenderer.sharedMesh = mesh;
94-
rendererInfos.Add(new AttachmentRegularAsset.RendererInfo(skinnedMeshRenderer, skinnedMeshRenderer.sharedMaterial));
94+
rendererInfos.Add(new AttachmentRegularAsset.RendererInfo(skinnedMeshRenderer.sharedMaterial));
9595
}
9696

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

0 commit comments

Comments
 (0)