diff options
author | Melanie | 2010-10-30 19:06:47 +0100 |
---|---|---|
committer | Melanie | 2010-10-30 19:06:47 +0100 |
commit | e98d8d500f5c0dda6e9ef8b9a0e1bddec8510d1d (patch) | |
tree | dcacdefcbe357eadad64d81c48b3bcf3f5efca5e /OpenSim/Region | |
parent | * AbsolutePosition.Get{} returns incorrect result for child prim so switch to... (diff) | |
download | opensim-SC_OLD-e98d8d500f5c0dda6e9ef8b9a0e1bddec8510d1d.zip opensim-SC_OLD-e98d8d500f5c0dda6e9ef8b9a0e1bddec8510d1d.tar.gz opensim-SC_OLD-e98d8d500f5c0dda6e9ef8b9a0e1bddec8510d1d.tar.bz2 opensim-SC_OLD-e98d8d500f5c0dda6e9ef8b9a0e1bddec8510d1d.tar.xz |
Fix logins and avatar appearance. Contains a Migration. May contain nuts.
This will cause visual params to be persisted along with worn items. With
this, alpha and tattoo laters will be saved. Multiple layers MAY work, but
not tested because I don't use Viewer 2.
Diffstat (limited to 'OpenSim/Region')
-rw-r--r-- | OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs | 1 | ||||
-rw-r--r-- | OpenSim/Region/CoreModules/Avatar/AvatarFactory/AvatarFactoryModule.cs | 15 |
2 files changed, 11 insertions, 5 deletions
diff --git a/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs b/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs index d7458b7..4aa19d1 100644 --- a/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs +++ b/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs | |||
@@ -5734,6 +5734,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
5734 | AvatarWearingArgs wearingArgs = new AvatarWearingArgs(); | 5734 | AvatarWearingArgs wearingArgs = new AvatarWearingArgs(); |
5735 | for (int i = 0; i < nowWearing.WearableData.Length; i++) | 5735 | for (int i = 0; i < nowWearing.WearableData.Length; i++) |
5736 | { | 5736 | { |
5737 | m_log.DebugFormat("[XXX]: Wearable type {0} item {1}", nowWearing.WearableData[i].WearableType, nowWearing.WearableData[i].ItemID); | ||
5737 | AvatarWearingArgs.Wearable wearable = | 5738 | AvatarWearingArgs.Wearable wearable = |
5738 | new AvatarWearingArgs.Wearable(nowWearing.WearableData[i].ItemID, | 5739 | new AvatarWearingArgs.Wearable(nowWearing.WearableData[i].ItemID, |
5739 | nowWearing.WearableData[i].WearableType); | 5740 | nowWearing.WearableData[i].WearableType); |
diff --git a/OpenSim/Region/CoreModules/Avatar/AvatarFactory/AvatarFactoryModule.cs b/OpenSim/Region/CoreModules/Avatar/AvatarFactory/AvatarFactoryModule.cs index 6cbd8bd..7f482cb 100644 --- a/OpenSim/Region/CoreModules/Avatar/AvatarFactory/AvatarFactoryModule.cs +++ b/OpenSim/Region/CoreModules/Avatar/AvatarFactory/AvatarFactoryModule.cs | |||
@@ -356,17 +356,16 @@ namespace OpenSim.Region.CoreModules.Avatar.AvatarFactory | |||
356 | 356 | ||
357 | // m_log.WarnFormat("[AVATAR FACTORY MODULE]: AvatarIsWearing called for {0}",client.AgentId); | 357 | // m_log.WarnFormat("[AVATAR FACTORY MODULE]: AvatarIsWearing called for {0}",client.AgentId); |
358 | 358 | ||
359 | AvatarAppearance avatAppearance = new AvatarAppearance(sp.Appearance); | 359 | AvatarAppearance avatAppearance = new AvatarAppearance(sp.Appearance, false); |
360 | 360 | ||
361 | foreach (AvatarWearingArgs.Wearable wear in e.NowWearing) | 361 | foreach (AvatarWearingArgs.Wearable wear in e.NowWearing) |
362 | { | 362 | { |
363 | if (wear.Type < AvatarWearable.MAX_WEARABLES) | 363 | if (wear.Type < AvatarWearable.MAX_WEARABLES) |
364 | { | 364 | avatAppearance.Wearables[wear.Type].Add(wear.ItemID,UUID.Zero); |
365 | AvatarWearable newWearable = new AvatarWearable(wear.ItemID,UUID.Zero); | ||
366 | avatAppearance.SetWearable(wear.Type, newWearable); | ||
367 | } | ||
368 | } | 365 | } |
369 | 366 | ||
367 | avatAppearance.GetAssetsFrom(sp.Appearance); | ||
368 | |||
370 | // This could take awhile since it needs to pull inventory | 369 | // This could take awhile since it needs to pull inventory |
371 | SetAppearanceAssets(sp.UUID, ref avatAppearance); | 370 | SetAppearanceAssets(sp.UUID, ref avatAppearance); |
372 | 371 | ||
@@ -384,6 +383,12 @@ namespace OpenSim.Region.CoreModules.Avatar.AvatarFactory | |||
384 | { | 383 | { |
385 | for (int j = 0 ; j < appearance.Wearables[j].Count ; j ++ ) | 384 | for (int j = 0 ; j < appearance.Wearables[j].Count ; j ++ ) |
386 | { | 385 | { |
386 | if (appearance.Wearables[i][j].ItemID == UUID.Zero) | ||
387 | continue; | ||
388 | |||
389 | // Ignore ruth's assets | ||
390 | if (appearance.Wearables[i][j].ItemID == AvatarWearable.DefaultWearables[i][0].ItemID) | ||
391 | continue; | ||
387 | InventoryItemBase baseItem = new InventoryItemBase(appearance.Wearables[i][j].ItemID, userID); | 392 | InventoryItemBase baseItem = new InventoryItemBase(appearance.Wearables[i][j].ItemID, userID); |
388 | baseItem = invService.GetItem(baseItem); | 393 | baseItem = invService.GetItem(baseItem); |
389 | 394 | ||