diff options
Diffstat (limited to 'OpenSim/Region')
-rw-r--r-- | OpenSim/Region/CoreModules/Avatar/AvatarFactory/AvatarFactoryModule.cs | 62 |
1 files changed, 36 insertions, 26 deletions
diff --git a/OpenSim/Region/CoreModules/Avatar/AvatarFactory/AvatarFactoryModule.cs b/OpenSim/Region/CoreModules/Avatar/AvatarFactory/AvatarFactoryModule.cs index 186d82b..3c626ad 100644 --- a/OpenSim/Region/CoreModules/Avatar/AvatarFactory/AvatarFactoryModule.cs +++ b/OpenSim/Region/CoreModules/Avatar/AvatarFactory/AvatarFactoryModule.cs | |||
@@ -551,44 +551,54 @@ namespace OpenSim.Region.CoreModules.Avatar.AvatarFactory | |||
551 | m_log.Debug("[ValidateBakedCache] have valid local cache"); | 551 | m_log.Debug("[ValidateBakedCache] have valid local cache"); |
552 | } | 552 | } |
553 | 553 | ||
554 | bool checkExternal = false; | ||
555 | |||
554 | if (!wearableCacheValid) | 556 | if (!wearableCacheValid) |
555 | { | 557 | { |
558 | ScenePresence ssp = null; | ||
559 | if (sp is ScenePresence) | ||
560 | { | ||
561 | ssp = (ScenePresence)sp; | ||
562 | checkExternal = (((uint)ssp.TeleportFlags & (uint)TeleportFlags.ViaLogin) != 0) && | ||
563 | bakedModule != null; | ||
564 | } | ||
565 | } | ||
566 | |||
567 | if (checkExternal) | ||
568 | { | ||
556 | hits = 0; | 569 | hits = 0; |
557 | bool gotbacked = false; | 570 | bool gotbacked = false; |
558 | 571 | ||
559 | if (bakedModule != null) | 572 | m_log.Debug("[ValidateBakedCache] local cache invalid, calling bakedModule"); |
573 | try | ||
560 | { | 574 | { |
561 | m_log.Debug("[ValidateBakedCache] local cache invalid, calling bakedModule"); | 575 | bakedModuleCache = bakedModule.Get(sp.UUID); |
562 | try | 576 | } |
563 | { | 577 | catch (Exception) |
564 | bakedModuleCache = bakedModule.Get(sp.UUID); | 578 | { |
565 | } | 579 | bakedModuleCache = null; |
566 | catch (Exception) | 580 | } |
567 | { | 581 | |
568 | bakedModuleCache = null; | 582 | if (bakedModuleCache != null) |
569 | } | 583 | { |
584 | m_log.Debug("[ValidateBakedCache] got bakedModule cache " + bakedModuleCache.Length); | ||
570 | 585 | ||
571 | if (bakedModuleCache != null) | 586 | for (int i = 0; i < bakedModuleCache.Length; i++) |
572 | { | 587 | { |
573 | m_log.Debug("[ValidateBakedCache] got bakedModule cache " + bakedModuleCache.Length); | 588 | int j = (int)bakedModuleCache[i].TextureIndex; |
574 | 589 | ||
575 | for (int i = 0; i < bakedModuleCache.Length; i++) | 590 | if (bakedModuleCache[i].TextureAsset != null) |
576 | { | 591 | { |
577 | int j = (int)bakedModuleCache[i].TextureIndex; | 592 | wearableCache[j].TextureID = bakedModuleCache[i].TextureID; |
578 | 593 | wearableCache[j].CacheId = bakedModuleCache[i].CacheId; | |
579 | if (bakedModuleCache[i].TextureAsset != null) | 594 | wearableCache[j].TextureAsset = bakedModuleCache[i].TextureAsset; |
580 | { | 595 | bakedModuleCache[i].TextureAsset.Temporary = true; |
581 | wearableCache[j].TextureID = bakedModuleCache[i].TextureID; | 596 | bakedModuleCache[i].TextureAsset.Local = true; |
582 | wearableCache[j].CacheId = bakedModuleCache[i].CacheId; | 597 | cache.Store(bakedModuleCache[i].TextureAsset); |
583 | wearableCache[j].TextureAsset = bakedModuleCache[i].TextureAsset; | 598 | |
584 | bakedModuleCache[i].TextureAsset.Temporary = true; | ||
585 | bakedModuleCache[i].TextureAsset.Local = true; | ||
586 | cache.Store(bakedModuleCache[i].TextureAsset); | ||
587 | |||
588 | } | ||
589 | } | 599 | } |
590 | gotbacked = true; | ||
591 | } | 600 | } |
601 | gotbacked = true; | ||
592 | } | 602 | } |
593 | 603 | ||
594 | if (gotbacked) | 604 | if (gotbacked) |