Fix issue where loading a new appearance onto an NPC would not remove the previous attachments from the scene.
Addresses http://opensimulator.org/mantis/view.php?id=5636bulletsim
parent
bd5d35ee32
commit
acfdca34fd
|
@ -101,7 +101,7 @@ namespace OpenSim.Region.CoreModules.Avatar.Attachments
|
|||
/// <param name="silent"></param>
|
||||
public void AttachObject(IClientAPI remoteClient, uint objectLocalID, uint AttachmentPt, bool silent)
|
||||
{
|
||||
m_log.Debug("[ATTACHMENTS MODULE]: Invoking AttachObject");
|
||||
// m_log.Debug("[ATTACHMENTS MODULE]: Invoking AttachObject");
|
||||
|
||||
try
|
||||
{
|
||||
|
@ -466,7 +466,7 @@ namespace OpenSim.Region.CoreModules.Avatar.Attachments
|
|||
{
|
||||
m_scene.EventManager.TriggerOnAttach(group.LocalId, itemID, UUID.Zero);
|
||||
group.DetachToInventoryPrep();
|
||||
m_log.Debug("[ATTACHMENTS MODULE]: Saving attachpoint: " + ((uint)group.GetAttachmentPoint()).ToString());
|
||||
// m_log.Debug("[ATTACHMENTS MODULE]: Saving attachpoint: " + ((uint)group.GetAttachmentPoint()).ToString());
|
||||
|
||||
// If an item contains scripts, it's always changed.
|
||||
// This ensures script state is saved on detach
|
||||
|
|
|
@ -96,9 +96,10 @@ namespace OpenSim.Region.Framework.Interfaces
|
|||
/// <summary>
|
||||
/// Detach an object from the avatar.
|
||||
/// </summary>
|
||||
///
|
||||
/// <remarks>
|
||||
/// This method is called in response to a client's detach request, so we only update the information in
|
||||
/// inventory
|
||||
/// </remarks>
|
||||
/// <param name="objectLocalID"></param>
|
||||
/// <param name="remoteClient"></param>
|
||||
void DetachObject(uint objectLocalID, IClientAPI remoteClient);
|
||||
|
|
|
@ -143,6 +143,16 @@ namespace OpenSim.Region.OptionalModules.World.NPC
|
|||
if (!m_avatars.ContainsKey(agentId))
|
||||
return false;
|
||||
|
||||
// FIXME: An extremely bad bit of code that reaches directly into the attachments list and manipulates it
|
||||
List<SceneObjectGroup> attachments = sp.Attachments;
|
||||
lock (attachments)
|
||||
{
|
||||
foreach (SceneObjectGroup att in attachments)
|
||||
scene.DeleteSceneObject(att, false);
|
||||
|
||||
attachments.Clear();
|
||||
}
|
||||
|
||||
AvatarAppearance npcAppearance = new AvatarAppearance(appearance, true);
|
||||
sp.Appearance = npcAppearance;
|
||||
sp.RezAttachments();
|
||||
|
|
Loading…
Reference in New Issue