diff options
Diffstat (limited to 'OpenSim/Region')
3 files changed, 22 insertions, 16 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 | ||
diff --git a/OpenSim/Region/Framework/Scenes/ScenePresence.cs b/OpenSim/Region/Framework/Scenes/ScenePresence.cs index 52e7462..8defe68 100644 --- a/OpenSim/Region/Framework/Scenes/ScenePresence.cs +++ b/OpenSim/Region/Framework/Scenes/ScenePresence.cs | |||
@@ -858,17 +858,6 @@ namespace OpenSim.Region.Framework.Scenes | |||
858 | } | 858 | } |
859 | AbsolutePosition = pos; | 859 | AbsolutePosition = pos; |
860 | 860 | ||
861 | AddToPhysicalScene(isFlying); | ||
862 | |||
863 | if (m_forceFly) | ||
864 | { | ||
865 | m_physicsActor.Flying = true; | ||
866 | } | ||
867 | else if (m_flyDisabled) | ||
868 | { | ||
869 | m_physicsActor.Flying = false; | ||
870 | } | ||
871 | |||
872 | if (m_appearance != null) | 861 | if (m_appearance != null) |
873 | { | 862 | { |
874 | if (m_appearance.AvatarHeight > 0) | 863 | if (m_appearance.AvatarHeight > 0) |
@@ -881,6 +870,17 @@ namespace OpenSim.Region.Framework.Scenes | |||
881 | m_appearance = new AvatarAppearance(UUID); | 870 | m_appearance = new AvatarAppearance(UUID); |
882 | } | 871 | } |
883 | 872 | ||
873 | AddToPhysicalScene(isFlying); | ||
874 | |||
875 | if (m_forceFly) | ||
876 | { | ||
877 | m_physicsActor.Flying = true; | ||
878 | } | ||
879 | else if (m_flyDisabled) | ||
880 | { | ||
881 | m_physicsActor.Flying = false; | ||
882 | } | ||
883 | |||
884 | // Don't send an animation pack here, since on a region crossing this will sometimes cause a flying | 884 | // Don't send an animation pack here, since on a region crossing this will sometimes cause a flying |
885 | // avatar to return to the standing position in mid-air. On login it looks like this is being sent | 885 | // avatar to return to the standing position in mid-air. On login it looks like this is being sent |
886 | // elsewhere anyway | 886 | // elsewhere anyway |