From 0644977819c1704c9d7417984a6366ceefe04c4c Mon Sep 17 00:00:00 2001 From: MW Date: Fri, 10 Oct 2008 17:05:43 +0000 Subject: added a list of SurfaceTouchEventArgs to the IClientAPI.OnGrab event, for the new surface touch parameters in 1.21 viewers. --- .../Region/ClientStack/LindenUDP/LLClientView.cs | 21 ++++++++++++++++++--- 1 file changed, 18 insertions(+), 3 deletions(-) (limited to 'OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs') diff --git a/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs b/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs index d82b0cc..7eda272 100644 --- a/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs +++ b/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs @@ -166,7 +166,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP private ObjectIncludeInSearch handlerObjectIncludeInSearch = null; private UpdatePrimFlags handlerUpdatePrimFlags = null; //OnUpdatePrimFlags; private UpdatePrimTexture handlerUpdatePrimTexture = null; - private UpdateVector handlerGrabObject = null; //OnGrabObject; + private GrabObject handlerGrabObject = null; //OnGrabObject; private MoveObject handlerGrabUpdate = null; //OnGrabUpdate; private ObjectSelect handlerDeGrabObject = null; //OnDeGrabObject; private GenericCall7 handlerObjectDescription = null; @@ -866,7 +866,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP public event Action OnRequestAvatarsData; public event LinkObjects OnLinkObjects; public event DelinkObjects OnDelinkObjects; - public event UpdateVector OnGrabObject; + public event GrabObject OnGrabObject; public event ObjectSelect OnDeGrabObject; public event ObjectDuplicate OnObjectDuplicate; public event ObjectDuplicateOnRay OnObjectDuplicateOnRay; @@ -4715,7 +4715,22 @@ namespace OpenSim.Region.ClientStack.LindenUDP if (handlerGrabObject != null) { - handlerGrabObject(grab.ObjectData.LocalID, grab.ObjectData.GrabOffset, this); + List touchArgs = new List(); + if ((grab.SurfaceInfo != null) && (grab.SurfaceInfo.Length > 0)) + { + foreach (ObjectGrabPacket.SurfaceInfoBlock surfaceInfo in grab.SurfaceInfo) + { + SurfaceTouchEventArgs arg = new SurfaceTouchEventArgs(); + arg.Binormal = surfaceInfo.Binormal; + arg.FaceIndex = surfaceInfo.FaceIndex; + arg.Normal = surfaceInfo.Normal; + arg.Position = surfaceInfo.Position; + arg.STCoord = surfaceInfo.STCoord; + arg.UVCoord = surfaceInfo.UVCoord; + touchArgs.Add(arg); + } + } + handlerGrabObject(grab.ObjectData.LocalID, grab.ObjectData.GrabOffset, this, touchArgs); } break; case PacketType.ObjectGrabUpdate: -- cgit v1.1