* Fixes cases where Last Attachment Point gets overwritten with 0 when it shouldn't

* Fixes cases where Last Attachment Point doesn't get written when it should.
* Fixes Null Reference in BaseHttpServer when shutting down, null path provided.
* Drop then Wear retains Last Attachment Point
avinationmerge
teravus 2013-10-05 17:36:58 -05:00
parent 28d704599e
commit ece2d24077
4 changed files with 12 additions and 4 deletions

View File

@ -1967,6 +1967,7 @@ namespace OpenSim.Framework.Servers.HttpServer
public void RemoveHTTPHandler(string httpMethod, string path) public void RemoveHTTPHandler(string httpMethod, string path)
{ {
if (path == null) return; // Caps module isn't loaded, tries to remove handler where path = null
lock (m_HTTPHandlers) lock (m_HTTPHandlers)
{ {
if (httpMethod != null && httpMethod.Length == 0) if (httpMethod != null && httpMethod.Length == 0)

View File

@ -685,6 +685,8 @@ namespace OpenSim.Region.CoreModules.Avatar.Attachments
if (changed && m_scene.AvatarFactory != null) if (changed && m_scene.AvatarFactory != null)
m_scene.AvatarFactory.QueueAppearanceSave(sp.UUID); m_scene.AvatarFactory.QueueAppearanceSave(sp.UUID);
so.RootPart.Shape.LastAttachPoint = (byte)so.AttachmentPoint;
sp.RemoveAttachment(so); sp.RemoveAttachment(so);
so.FromItemID = UUID.Zero; so.FromItemID = UUID.Zero;
@ -699,7 +701,6 @@ namespace OpenSim.Region.CoreModules.Avatar.Attachments
so.ClearPartAttachmentData(); so.ClearPartAttachmentData();
rootPart.ApplyPhysics(rootPart.GetEffectiveObjectFlags(), rootPart.VolumeDetectActive,false); rootPart.ApplyPhysics(rootPart.GetEffectiveObjectFlags(), rootPart.VolumeDetectActive,false);
so.HasGroupChanged = true; so.HasGroupChanged = true;
so.RootPart.Shape.LastAttachPoint = (byte)so.AttachmentPoint;
rootPart.Rezzed = DateTime.Now; rootPart.Rezzed = DateTime.Now;
rootPart.RemFlag(PrimFlags.TemporaryOnRez); rootPart.RemFlag(PrimFlags.TemporaryOnRez);
so.AttachToBackup(); so.AttachToBackup();

View File

@ -390,9 +390,13 @@ namespace OpenSim.Region.CoreModules.Framework.InventoryAccess
// Trees could be attached and it's been done, but it makes // Trees could be attached and it's been done, but it makes
// no sense. State must be preserved because it's the tree type // no sense. State must be preserved because it's the tree type
if (objectGroup.RootPart.Shape.PCode != (byte)PCode.Tree && if (objectGroup.RootPart.Shape.PCode != (byte) PCode.Tree &&
objectGroup.RootPart.Shape.PCode != (byte)PCode.NewTree) objectGroup.RootPart.Shape.PCode != (byte) PCode.NewTree)
{
objectGroup.RootPart.Shape.State = objectGroup.RootPart.AttachPoint; objectGroup.RootPart.Shape.State = objectGroup.RootPart.AttachPoint;
if (objectGroup.RootPart.AttachPoint > 0)
objectGroup.RootPart.Shape.LastAttachPoint = objectGroup.RootPart.AttachPoint;
}
objectGroup.AbsolutePosition = inventoryStoredPosition; objectGroup.AbsolutePosition = inventoryStoredPosition;
objectGroup.RootPart.RotationOffset = inventoryStoredRotation; objectGroup.RootPart.RotationOffset = inventoryStoredRotation;

View File

@ -1667,7 +1667,8 @@ namespace OpenSim.Region.Framework.Scenes
ScenePresence avatar = m_scene.GetScenePresence(AttachedAvatar); ScenePresence avatar = m_scene.GetScenePresence(AttachedAvatar);
if (avatar == null) if (avatar == null)
return; return;
m_rootPart.Shape.LastAttachPoint = m_rootPart.Shape.State;
m_rootPart.AttachedPos = m_rootPart.OffsetPosition;
avatar.RemoveAttachment(this); avatar.RemoveAttachment(this);
Vector3 detachedpos = new Vector3(127f,127f,127f); Vector3 detachedpos = new Vector3(127f,127f,127f);
@ -2107,6 +2108,7 @@ namespace OpenSim.Region.Framework.Scenes
if (RootPart.Shape.PCode == 9 && RootPart.Shape.State != 0) if (RootPart.Shape.PCode == 9 && RootPart.Shape.State != 0)
{ {
RootPart.Shape.LastAttachPoint = RootPart.Shape.State;
RootPart.Shape.State = 0; RootPart.Shape.State = 0;
ScheduleGroupForFullUpdate(); ScheduleGroupForFullUpdate();
} }