Explorar o código

In UuidGatherer, gather materials referenced in the prim's TextureEntry

Signed-off-by: dahlia <dahlia@nomail>
Oren Hurvitz %!s(int64=10) %!d(string=hai) anos
pai
achega
abb193ec94
Modificáronse 1 ficheiros con 15 adicións e 2 borrados
  1. 15 2
      OpenSim/Region/Framework/Scenes/UuidGatherer.cs

+ 15 - 2
OpenSim/Region/Framework/Scenes/UuidGatherer.cs

@@ -161,7 +161,7 @@ namespace OpenSim.Region.Framework.Scenes
                     {
                         // Get the prim's default texture.  This will be used for faces which don't have their own texture
                         if (textureEntry.DefaultTexture != null)
-                            assetUuids[textureEntry.DefaultTexture.TextureID] = (sbyte)AssetType.Texture;
+                            GatherTextureEntryAssets(textureEntry.DefaultTexture, assetUuids);
 
                         if (textureEntry.FaceTextures != null)
                         {
@@ -169,7 +169,7 @@ namespace OpenSim.Region.Framework.Scenes
                             foreach (Primitive.TextureEntryFace texture in textureEntry.FaceTextures)
                             {
                                 if (texture != null)
-                                    assetUuids[texture.TextureID] = (sbyte)AssetType.Texture;
+                                    GatherTextureEntryAssets(texture, assetUuids);
                             }
                         }
                     }
@@ -233,6 +233,19 @@ namespace OpenSim.Region.Framework.Scenes
             }
         }
 
+        /// <summary>
+        /// Gather all the asset uuids found in one face of a Texture Entry.
+        /// </summary>
+        private void GatherTextureEntryAssets(Primitive.TextureEntryFace texture, IDictionary<UUID, sbyte> assetUuids)
+        {
+            assetUuids[texture.TextureID] = (sbyte)AssetType.Texture;
+
+            if (texture.MaterialID != UUID.Zero)
+            {
+                GatherAssetUuids(texture.MaterialID, (sbyte)OpenSimAssetType.Material, assetUuids);
+            }
+        }
+
 //        /// <summary>
 //        /// The callback made when we request the asset for an object from the asset service.
 //        /// </summary>