Kan-Ed fix series. Fix llTakeControls to behave as documented.

XEngine fixes: prevent queue overruns, prevent spamming when no key
is down. Release controls when conflicting permissions are requested
or permissions are refused later. Release when prim or script are deleted.
Fixes Scene script instance deletion semantics.
This commit is contained in:
Melanie Thielker
2008-09-17 22:00:56 +00:00
parent 0ad5d8c0e7
commit 7e8320bada
8 changed files with 75 additions and 7 deletions

View File

@@ -879,12 +879,13 @@ namespace OpenSim.Region.Environment.Scenes
SceneObjectGroup group = part.ParentGroup;
if (group != null)
{
int type = group.RemoveInventoryItem(localID, itemID);
part.GetProperties(remoteClient);
if (type == 10)
TaskInventoryItem item = group.GetInventoryItem(localID, itemID);
if (item.Type == 10)
{
EventManager.TriggerRemoveScript(localID, itemID);
}
group.RemoveInventoryItem(localID, itemID);
part.GetProperties(remoteClient);
}
else
{

View File

@@ -1742,6 +1742,8 @@ namespace OpenSim.Region.Environment.Scenes
{
//SceneObjectPart rootPart = group.GetChildPart(group.UUID);
group.RemoveScriptInstances();
foreach (SceneObjectPart part in group.Children.Values)
{
if (part.PhysActor != null)

View File

@@ -958,7 +958,7 @@ namespace OpenSim.Region.Environment.Scenes
{
foreach (SceneObjectPart part in m_parts.Values)
{
part.RemoveScriptInstances();
// part.RemoveScriptInstances();
List<ScenePresence> avatars = Scene.GetScenePresences();
for (int i = 0; i < avatars.Count; i++)