diff options
author | UbitUmarov | 2014-10-29 06:35:23 +0000 |
---|---|---|
committer | UbitUmarov | 2014-10-29 06:35:23 +0000 |
commit | afa246695131a578853e78b4b6ad55ff08fc81cc (patch) | |
tree | 09484d7c4f74334dbb56fab0297b9ca2fe2ea506 /OpenSim/Region/CoreModules/Avatar/AvatarFactory/AvatarFactoryModule.cs | |
parent | try to make a avatar usesable if its siting part didn't cross, or crossed (diff) | |
download | opensim-SC_OLD-afa246695131a578853e78b4b6ad55ff08fc81cc.zip opensim-SC_OLD-afa246695131a578853e78b4b6ad55ff08fc81cc.tar.gz opensim-SC_OLD-afa246695131a578853e78b4b6ad55ff08fc81cc.tar.bz2 opensim-SC_OLD-afa246695131a578853e78b4b6ad55ff08fc81cc.tar.xz |
Fix baked textures for regions without external Xbakes adding rebake
requests. Those may also be trigger if for same reason one is missing even
with Xbakes. Later we can let this regions send the assets on teleports,
changing how those are serialized
Diffstat (limited to '')
-rw-r--r-- | OpenSim/Region/CoreModules/Avatar/AvatarFactory/AvatarFactoryModule.cs | 67 |
1 files changed, 35 insertions, 32 deletions
diff --git a/OpenSim/Region/CoreModules/Avatar/AvatarFactory/AvatarFactoryModule.cs b/OpenSim/Region/CoreModules/Avatar/AvatarFactory/AvatarFactoryModule.cs index f8bb435..878d2fa 100644 --- a/OpenSim/Region/CoreModules/Avatar/AvatarFactory/AvatarFactoryModule.cs +++ b/OpenSim/Region/CoreModules/Avatar/AvatarFactory/AvatarFactoryModule.cs | |||
@@ -202,14 +202,6 @@ namespace OpenSim.Region.CoreModules.Avatar.AvatarFactory | |||
202 | 202 | ||
203 | // WriteBakedTexturesReport(sp, m_log.DebugFormat); | 203 | // WriteBakedTexturesReport(sp, m_log.DebugFormat); |
204 | 204 | ||
205 | |||
206 | // If bake textures are missing and this is not an NPC, request a rebake from client | ||
207 | // rebake may messup caching, and should not be needed | ||
208 | |||
209 | |||
210 | // if (!UpdateBakedTextureCache(sp,cacheItems) && (((ScenePresence)sp).PresenceType != PresenceType.Npc)) | ||
211 | // RequestRebake(sp, true); | ||
212 | |||
213 | UpdateBakedTextureCache(sp, cacheItems); | 205 | UpdateBakedTextureCache(sp, cacheItems); |
214 | 206 | ||
215 | // This appears to be set only in the final stage of the appearance | 207 | // This appears to be set only in the final stage of the appearance |
@@ -372,6 +364,7 @@ namespace OpenSim.Region.CoreModules.Avatar.AvatarFactory | |||
372 | 364 | ||
373 | // uploaded baked textures will be in assets local cache | 365 | // uploaded baked textures will be in assets local cache |
374 | IAssetService cache = m_scene.AssetService; | 366 | IAssetService cache = m_scene.AssetService; |
367 | IBakedTextureModule m_BakedTextureModule = m_scene.RequestModuleInterface<IBakedTextureModule>(); | ||
375 | 368 | ||
376 | int validDirtyBakes = 0; | 369 | int validDirtyBakes = 0; |
377 | int hits = 0; | 370 | int hits = 0; |
@@ -384,6 +377,8 @@ namespace OpenSim.Region.CoreModules.Avatar.AvatarFactory | |||
384 | wearableCache = WearableCacheItem.GetDefaultCacheItem(); | 377 | wearableCache = WearableCacheItem.GetDefaultCacheItem(); |
385 | } | 378 | } |
386 | 379 | ||
380 | List<UUID> missing = new List<UUID>(); | ||
381 | |||
387 | // Process received baked textures | 382 | // Process received baked textures |
388 | for (int i = 0; i < cacheItems.Length; i++) | 383 | for (int i = 0; i < cacheItems.Length; i++) |
389 | { | 384 | { |
@@ -411,19 +406,21 @@ namespace OpenSim.Region.CoreModules.Avatar.AvatarFactory | |||
411 | continue; | 406 | continue; |
412 | } | 407 | } |
413 | 408 | ||
414 | if(sp.Appearance.Texture.FaceTextures[idx].TextureID == wearableCache[idx].TextureID) | 409 | /* |
410 | if (face.TextureID == wearableCache[idx].TextureID && m_BakedTextureModule != null) | ||
415 | { | 411 | { |
416 | if(wearableCache[idx].CacheId != cacheItems[i].CacheId) | 412 | if (wearableCache[idx].CacheId != cacheItems[i].CacheId) |
417 | { | 413 | { |
418 | wearableCache[idx].CacheId = cacheItems[i].CacheId; | 414 | wearableCache[idx].CacheId = cacheItems[i].CacheId; |
419 | validDirtyBakes++; | 415 | validDirtyBakes++; |
420 | 416 | ||
421 | //assuming this can only happen if asset is in cache | 417 | //assuming this can only happen if asset is in cache |
422 | } | 418 | } |
423 | hits++; | 419 | hits++; |
424 | continue; | 420 | continue; |
425 | } | 421 | } |
426 | 422 | */ | |
423 | |||
427 | wearableCache[idx].TextureAsset = null; | 424 | wearableCache[idx].TextureAsset = null; |
428 | if (cache != null) | 425 | if (cache != null) |
429 | wearableCache[idx].TextureAsset = cache.GetCached(face.TextureID.ToString()); | 426 | wearableCache[idx].TextureAsset = cache.GetCached(face.TextureID.ToString()); |
@@ -431,7 +428,7 @@ namespace OpenSim.Region.CoreModules.Avatar.AvatarFactory | |||
431 | if (wearableCache[idx].TextureAsset != null) | 428 | if (wearableCache[idx].TextureAsset != null) |
432 | { | 429 | { |
433 | wearableCache[idx].CacheId = cacheItems[i].CacheId; | 430 | wearableCache[idx].CacheId = cacheItems[i].CacheId; |
434 | wearableCache[idx].TextureID = sp.Appearance.Texture.FaceTextures[idx].TextureID; | 431 | wearableCache[idx].TextureID = face.TextureID; |
435 | validDirtyBakes++; | 432 | validDirtyBakes++; |
436 | hits++; | 433 | hits++; |
437 | } | 434 | } |
@@ -440,6 +437,7 @@ namespace OpenSim.Region.CoreModules.Avatar.AvatarFactory | |||
440 | wearableCache[idx].CacheId = UUID.Zero; | 437 | wearableCache[idx].CacheId = UUID.Zero; |
441 | wearableCache[idx].TextureID = UUID.Zero; | 438 | wearableCache[idx].TextureID = UUID.Zero; |
442 | wearableCache[idx].TextureAsset = null; | 439 | wearableCache[idx].TextureAsset = null; |
440 | missing.Add(face.TextureID); | ||
443 | continue; | 441 | continue; |
444 | } | 442 | } |
445 | } | 443 | } |
@@ -451,7 +449,6 @@ namespace OpenSim.Region.CoreModules.Avatar.AvatarFactory | |||
451 | 449 | ||
452 | if (validDirtyBakes > 0 && hits == cacheItems.Length) | 450 | if (validDirtyBakes > 0 && hits == cacheItems.Length) |
453 | { | 451 | { |
454 | IBakedTextureModule m_BakedTextureModule = m_scene.RequestModuleInterface<IBakedTextureModule>(); | ||
455 | if (m_BakedTextureModule != null) | 452 | if (m_BakedTextureModule != null) |
456 | { | 453 | { |
457 | m_log.Debug("[UpdateBakedCache] uploading to bakedModule cache"); | 454 | m_log.Debug("[UpdateBakedCache] uploading to bakedModule cache"); |
@@ -469,8 +466,14 @@ namespace OpenSim.Region.CoreModules.Avatar.AvatarFactory | |||
469 | } | 466 | } |
470 | } | 467 | } |
471 | 468 | ||
469 | if(missing.Count > 0) | ||
470 | { | ||
471 | foreach(UUID id in missing) | ||
472 | sp.ControllingClient.SendRebakeAvatarTextures(id); | ||
473 | } | ||
474 | |||
472 | // debug | 475 | // debug |
473 | m_log.Debug("[UpdateBakedCache] cache hits: " + hits.ToString() + " changed entries: " + validDirtyBakes.ToString()); | 476 | m_log.Debug("[UpdateBakedCache] cache hits: " + hits.ToString() + " changed entries: " + validDirtyBakes.ToString() + " rebakes " + missing.Count); |
474 | /* | 477 | /* |
475 | for (int iter = 0; iter < AvatarAppearance.BAKE_INDICES.Length; iter++) | 478 | for (int iter = 0; iter < AvatarAppearance.BAKE_INDICES.Length; iter++) |
476 | { | 479 | { |
@@ -548,25 +551,26 @@ namespace OpenSim.Region.CoreModules.Avatar.AvatarFactory | |||
548 | { | 551 | { |
549 | int idx = AvatarAppearance.BAKE_INDICES[i]; | 552 | int idx = AvatarAppearance.BAKE_INDICES[i]; |
550 | Primitive.TextureEntryFace face = sp.Appearance.Texture.FaceTextures[idx]; | 553 | Primitive.TextureEntryFace face = sp.Appearance.Texture.FaceTextures[idx]; |
551 | if (face != null && face.TextureID == wearableCache[idx].TextureID) | 554 | if (face != null) |
552 | { | 555 | { |
553 | if (wearableCache[idx].TextureAsset != null) | 556 | if (face.TextureID == wearableCache[idx].TextureID && |
557 | face.TextureID != UUID.Zero) | ||
554 | { | 558 | { |
555 | hits++; | 559 | if (wearableCache[idx].TextureAsset != null) |
556 | wearableCache[idx].TextureAsset.Temporary = true; | 560 | { |
557 | wearableCache[idx].TextureAsset.Local = true; | 561 | hits++; |
558 | cache.Store(wearableCache[idx].TextureAsset); | 562 | wearableCache[idx].TextureAsset.Temporary = true; |
559 | 563 | wearableCache[idx].TextureAsset.Local = true; | |
560 | } | 564 | cache.Store(wearableCache[idx].TextureAsset); |
561 | else if (cache.GetCached((wearableCache[idx].TextureID).ToString()) != null) | 565 | continue; |
562 | { | 566 | } |
563 | hits++; | 567 | if (cache.GetCached((wearableCache[idx].TextureID).ToString()) != null) |
564 | } | 568 | { |
565 | else | 569 | hits++; |
566 | { | 570 | continue; |
567 | wearableCacheValid = false; | 571 | } |
568 | break; | ||
569 | } | 572 | } |
573 | wearableCacheValid = false; | ||
570 | } | 574 | } |
571 | } | 575 | } |
572 | 576 | ||
@@ -623,7 +627,6 @@ namespace OpenSim.Region.CoreModules.Avatar.AvatarFactory | |||
623 | bakedModuleCache[i].TextureAsset.Temporary = true; | 627 | bakedModuleCache[i].TextureAsset.Temporary = true; |
624 | bakedModuleCache[i].TextureAsset.Local = true; | 628 | bakedModuleCache[i].TextureAsset.Local = true; |
625 | cache.Store(bakedModuleCache[i].TextureAsset); | 629 | cache.Store(bakedModuleCache[i].TextureAsset); |
626 | |||
627 | } | 630 | } |
628 | } | 631 | } |
629 | gotbacked = true; | 632 | gotbacked = true; |