In the current OnDeRezObject event, only a single localID of a prim is passed
at a time.
So if multiple objects are DeRezzed in one action, even though all the ids are
sent in a single packet. We have code in the ClientView that loops through that
list and for each id triggers the OnDeRezObject event.
I propose moving that loop into the Scene handling of the action
(Scene.DeRezObject(...)) so that the event is only triggered once per packet
and if there are multiple prims to derezz in a packet, the scene code can loop
through them and deal with them as required.
So current the delegate of the OnDeRezObject event is :
public delegate void DeRezObject(
IClientAPI remoteClient, uint localID, UUID groupID, DeRezAction
action, UUID destinationID);
I propose changing it to:
public delegate void DeRezObject(
IClientAPI remoteClient, List<uint> localIDs, UUID groupID, DeRezAction
action, UUID destinationID);
It has to be better to have only one event triggering rather than possibly
hundreds for the same user action.
My next step (which I'm currently in the middle of in my local version) is to
handle the taking of those multiple prims into inventory and only making a
single inventory item, rather than the current method of a separate inventory
item for each prim. But that will be detailed in a different proposal..
_______________________________________________
Opensim-dev mailing list
[email protected]
https://lists.berlios.de/mailman/listinfo/opensim-dev