diff --git a/OpenSim/Region/Framework/Scenes/SceneObjectPart.cs b/OpenSim/Region/Framework/Scenes/SceneObjectPart.cs index ee00032f3a..88fb708332 100644 --- a/OpenSim/Region/Framework/Scenes/SceneObjectPart.cs +++ b/OpenSim/Region/Framework/Scenes/SceneObjectPart.cs @@ -2199,9 +2199,18 @@ namespace OpenSim.Region.Framework.Scenes dupe.RezzerID = RezzerID; - byte[] extraP = new byte[Shape.ExtraParams.Length]; - Array.Copy(Shape.ExtraParams, extraP, extraP.Length); + byte[] oldextrap = Shape.ExtraParams; + byte[] extraP = new byte[oldextrap.Length]; + Array.Copy(oldextrap, extraP, extraP.Length); dupe.Shape.ExtraParams = extraP; + if(Shape.RenderMaterials is not null && Shape.RenderMaterials.overrides is not null && + Shape.RenderMaterials.overrides.Length > 0) + { + if(dupe.Shape.RenderMaterials == null) + dupe.Shape.RenderMaterials = new Primitive.RenderMaterials(); + dupe.Shape.RenderMaterials.overrides = new Primitive.RenderMaterials.RenderMaterialOverrideEntry[Shape.RenderMaterials.overrides.Length]; + Shape.RenderMaterials.overrides.CopyTo(dupe.Shape.RenderMaterials.overrides,0); + } dupe.m_sittingAvatars = new HashSet(); dupe.SitTargetAvatar = UUID.Zero; diff --git a/OpenSim/Region/Framework/Scenes/UuidGatherer.cs b/OpenSim/Region/Framework/Scenes/UuidGatherer.cs index 6734605b67..c0c4875440 100644 --- a/OpenSim/Region/Framework/Scenes/UuidGatherer.cs +++ b/OpenSim/Region/Framework/Scenes/UuidGatherer.cs @@ -1060,6 +1060,12 @@ namespace OpenSim.Region.Framework.Scenes { GatheredUuids[teid] = (sbyte)AssetType.Texture; } + if(ps.RenderMaterials is not null && ps.RenderMaterials.entries is not null && + ps.RenderMaterials.entries.Length > 0) + { + foreach(Primitive.RenderMaterials.RenderMaterialEntry re in ps.RenderMaterials.entries) + AddForInspection(re.id, (sbyte)AssetType.Material); + } /* multiple store teid = ps.SculptTexture; //?? if (teid != UUID.Zero &&