diff options
author | Dr Scofield | 2009-05-27 18:01:06 +0000 |
---|---|---|
committer | Dr Scofield | 2009-05-27 18:01:06 +0000 |
commit | 901fdca13b8b6617ceabc4766c684799f4f8739b (patch) | |
tree | c99e087ce03c0e56520a94de48e2c706c0e53a45 /OpenSim/Region/Framework/Scenes | |
parent | making TarArchiveReader more resilient when faced with OARs created by (diff) | |
download | opensim-SC_OLD-901fdca13b8b6617ceabc4766c684799f4f8739b.zip opensim-SC_OLD-901fdca13b8b6617ceabc4766c684799f4f8739b.tar.gz opensim-SC_OLD-901fdca13b8b6617ceabc4766c684799f4f8739b.tar.bz2 opensim-SC_OLD-901fdca13b8b6617ceabc4766c684799f4f8739b.tar.xz |
From: Chris Yeoh <cyeoh@au1.ibm.com>
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.
Diffstat (limited to '')
-rw-r--r-- | OpenSim/Region/Framework/Scenes/Scene.PacketHandlers.cs | 10 | ||||
-rw-r--r-- | OpenSim/Region/Framework/Scenes/SceneObjectPart.cs | 15 |
2 files changed, 22 insertions, 3 deletions
diff --git a/OpenSim/Region/Framework/Scenes/Scene.PacketHandlers.cs b/OpenSim/Region/Framework/Scenes/Scene.PacketHandlers.cs index 4c99873..8bf47e7 100644 --- a/OpenSim/Region/Framework/Scenes/Scene.PacketHandlers.cs +++ b/OpenSim/Region/Framework/Scenes/Scene.PacketHandlers.cs | |||
@@ -251,10 +251,16 @@ namespace OpenSim.Region.Framework.Scenes | |||
251 | 251 | ||
252 | // If the touched prim handles touches, deliver it | 252 | // If the touched prim handles touches, deliver it |
253 | // If not, deliver to root prim | 253 | // If not, deliver to root prim |
254 | if ((part.ScriptEvents & scriptEvents.touch_start) != 0) | 254 | if ((part.ScriptEvents & scriptEvents.touch_start) != 0) |
255 | EventManager.TriggerObjectGrab(part.LocalId, 0, part.OffsetPosition, remoteClient, surfaceArg); | 255 | EventManager.TriggerObjectGrab(part.LocalId, 0, part.OffsetPosition, remoteClient, surfaceArg); |
256 | else | 256 | // Deliver to the root prim if the touched prim doesn't handle touches |
257 | // or if we're meant to pass on touches anyway. Don't send to root prim | ||
258 | // if prim touched is the root prim as we just did it | ||
259 | if (((part.ScriptEvents & scriptEvents.touch_start) == 0) || | ||
260 | (part.PassTouches && (part.LocalId != obj.RootPart.LocalId))) | ||
261 | { | ||
257 | EventManager.TriggerObjectGrab(obj.RootPart.LocalId, part.LocalId, part.OffsetPosition, remoteClient, surfaceArg); | 262 | EventManager.TriggerObjectGrab(obj.RootPart.LocalId, part.LocalId, part.OffsetPosition, remoteClient, surfaceArg); |
263 | } | ||
258 | 264 | ||
259 | return; | 265 | return; |
260 | } | 266 | } |
diff --git a/OpenSim/Region/Framework/Scenes/SceneObjectPart.cs b/OpenSim/Region/Framework/Scenes/SceneObjectPart.cs index 9a455ae..719b028 100644 --- a/OpenSim/Region/Framework/Scenes/SceneObjectPart.cs +++ b/OpenSim/Region/Framework/Scenes/SceneObjectPart.cs | |||
@@ -102,7 +102,6 @@ namespace OpenSim.Region.Framework.Scenes | |||
102 | 102 | ||
103 | #region Fields | 103 | #region Fields |
104 | 104 | ||
105 | [XmlIgnore] | ||
106 | public bool AllowedDrop = false; | 105 | public bool AllowedDrop = false; |
107 | 106 | ||
108 | [XmlIgnore] | 107 | [XmlIgnore] |
@@ -216,6 +215,9 @@ namespace OpenSim.Region.Framework.Scenes | |||
216 | private readonly UndoStack<UndoState> m_undo = new UndoStack<UndoState>(5); | 215 | private readonly UndoStack<UndoState> m_undo = new UndoStack<UndoState>(5); |
217 | private UUID _creatorID; | 216 | private UUID _creatorID; |
218 | 217 | ||
218 | |||
219 | private bool m_passTouches = false; | ||
220 | |||
219 | /// <summary> | 221 | /// <summary> |
220 | /// Only used internally to schedule client updates. | 222 | /// Only used internally to schedule client updates. |
221 | /// 0 - no update is scheduled | 223 | /// 0 - no update is scheduled |
@@ -431,6 +433,17 @@ namespace OpenSim.Region.Framework.Scenes | |||
431 | } | 433 | } |
432 | } | 434 | } |
433 | 435 | ||
436 | public bool PassTouches | ||
437 | { | ||
438 | get { return m_passTouches; } | ||
439 | set | ||
440 | { | ||
441 | m_passTouches = value; | ||
442 | if (ParentGroup != null) | ||
443 | ParentGroup.HasGroupChanged = true; | ||
444 | } | ||
445 | } | ||
446 | |||
434 | public ulong RegionHandle | 447 | public ulong RegionHandle |
435 | { | 448 | { |
436 | get { return m_regionHandle; } | 449 | get { return m_regionHandle; } |