The attached patch implements llPassTouches. It has been added
to the export/import XML along with the flag for AllowedInventoryDrop.

The MySQL backend has been updated as well, though I haven't
done one of those before so could do with a check. I added
the migration mysql file as well.

The other data backends need updating as well.
This commit is contained in:
Dr Scofield
2009-05-25 11:26:36 +00:00
parent d4d9d8ed8f
commit 0bff818d39
4 changed files with 38 additions and 6 deletions

View File

@@ -251,10 +251,16 @@ namespace OpenSim.Region.Framework.Scenes
// If the touched prim handles touches, deliver it
// If not, deliver to root prim
if ((part.ScriptEvents & scriptEvents.touch_start) != 0)
if ((part.ScriptEvents & scriptEvents.touch_start) != 0)
EventManager.TriggerObjectGrab(part.LocalId, 0, part.OffsetPosition, remoteClient, surfaceArg);
else
// Deliver to the root prim if the touched prim doesn't handle touches
// or if we're meant to pass on touches anyway. Don't send to root prim
// if prim touched is the root prim as we just did it
if (((part.ScriptEvents & scriptEvents.touch_start) == 0) ||
(part.PassTouches && (part.LocalId != obj.RootPart.LocalId)))
{
EventManager.TriggerObjectGrab(obj.RootPart.LocalId, part.LocalId, part.OffsetPosition, remoteClient, surfaceArg);
}
return;
}

View File

@@ -102,7 +102,6 @@ namespace OpenSim.Region.Framework.Scenes
#region Fields
[XmlIgnore]
public bool AllowedDrop = false;
[XmlIgnore]
@@ -216,6 +215,9 @@ namespace OpenSim.Region.Framework.Scenes
private readonly UndoStack<UndoState> m_undo = new UndoStack<UndoState>(5);
private UUID _creatorID;
private bool m_passTouches = false;
/// <summary>
/// Only used internally to schedule client updates.
/// 0 - no update is scheduled
@@ -431,6 +433,17 @@ namespace OpenSim.Region.Framework.Scenes
}
}
public bool PassTouches
{
get { return m_passTouches; }
set
{
m_passTouches = value;
if (ParentGroup != null)
ParentGroup.HasGroupChanged = true;
}
}
public ulong RegionHandle
{
get { return m_regionHandle; }