don't overlap Select and Deselect, fix deselect prims account

LSLKeyTest
UbitUmarov 2016-07-13 15:56:01 +01:00
parent 981980150c
commit acebfeb5c9
1 changed files with 29 additions and 14 deletions

View File

@ -7681,15 +7681,23 @@ namespace OpenSim.Region.ClientStack.LindenUDP
#endregion #endregion
ObjectSelect handlerObjectSelect = null; ObjectSelect handlerObjectSelect = null;
uint objID;
lock(SelectedObjects)
{
for (int i = 0; i < incomingselect.ObjectData.Length; i++) for (int i = 0; i < incomingselect.ObjectData.Length; i++)
{ {
if (!SelectedObjects.Contains(incomingselect.ObjectData[i].ObjectLocalID)) objID = incomingselect.ObjectData[i].ObjectLocalID;
SelectedObjects.Add(incomingselect.ObjectData[i].ObjectLocalID);
if (!SelectedObjects.Contains(objID))
{
SelectedObjects.Add(objID);
handlerObjectSelect = OnObjectSelect; handlerObjectSelect = OnObjectSelect;
if (handlerObjectSelect != null) if (handlerObjectSelect != null)
{ {
handlerObjectSelect(incomingselect.ObjectData[i].ObjectLocalID, this); handlerObjectSelect(objID, this);
}
}
} }
} }
return true; return true;
@ -7709,15 +7717,22 @@ namespace OpenSim.Region.ClientStack.LindenUDP
#endregion #endregion
ObjectDeselect handlerObjectDeselect = null; ObjectDeselect handlerObjectDeselect = null;
uint objID;
lock(SelectedObjects)
{
for (int i = 0; i < incomingdeselect.ObjectData.Length; i++) for (int i = 0; i < incomingdeselect.ObjectData.Length; i++)
{ {
if (!SelectedObjects.Contains(incomingdeselect.ObjectData[i].ObjectLocalID)) objID = incomingdeselect.ObjectData[i].ObjectLocalID;
SelectedObjects.Add(incomingdeselect.ObjectData[i].ObjectLocalID); if (SelectedObjects.Contains(objID))
{
SelectedObjects.Remove(objID);
handlerObjectDeselect = OnObjectDeselect; handlerObjectDeselect = OnObjectDeselect;
if (handlerObjectDeselect != null) if (handlerObjectDeselect != null)
{ {
OnObjectDeselect(incomingdeselect.ObjectData[i].ObjectLocalID, this); OnObjectDeselect(objID, this);
}
}
} }
} }
return true; return true;