added a list of SurfaceTouchEventArgs to the IClientAPI.OnGrab event, for the new surface touch parameters in 1.21 viewers.

0.6.0-stable
MW 2008-10-10 17:05:43 +00:00
parent 5be7442736
commit 0644977819
5 changed files with 24 additions and 7 deletions

View File

@ -144,6 +144,8 @@ namespace OpenSim.Framework
public delegate void AvatarPickerRequest(IClientAPI remoteClient, UUID agentdata, UUID queryID, string UserQuery public delegate void AvatarPickerRequest(IClientAPI remoteClient, UUID agentdata, UUID queryID, string UserQuery
); );
public delegate void GrabObject(uint localID, Vector3 pos, IClientAPI remoteClient, List<SurfaceTouchEventArgs> surfaceArgs);
public delegate void MoveObject(UUID objectID, Vector3 offset, Vector3 grapPos, IClientAPI remoteClient, List<SurfaceTouchEventArgs> surfaceArgs); public delegate void MoveObject(UUID objectID, Vector3 offset, Vector3 grapPos, IClientAPI remoteClient, List<SurfaceTouchEventArgs> surfaceArgs);
public delegate void ParcelAccessListRequest( public delegate void ParcelAccessListRequest(
@ -426,7 +428,7 @@ namespace OpenSim.Framework
event ObjectDuplicate OnObjectDuplicate; event ObjectDuplicate OnObjectDuplicate;
event ObjectDuplicateOnRay OnObjectDuplicateOnRay; event ObjectDuplicateOnRay OnObjectDuplicateOnRay;
event UpdateVector OnGrabObject; event GrabObject OnGrabObject;
event ObjectSelect OnDeGrabObject; event ObjectSelect OnDeGrabObject;
event MoveObject OnGrabUpdate; event MoveObject OnGrabUpdate;

View File

@ -166,7 +166,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP
private ObjectIncludeInSearch handlerObjectIncludeInSearch = null; private ObjectIncludeInSearch handlerObjectIncludeInSearch = null;
private UpdatePrimFlags handlerUpdatePrimFlags = null; //OnUpdatePrimFlags; private UpdatePrimFlags handlerUpdatePrimFlags = null; //OnUpdatePrimFlags;
private UpdatePrimTexture handlerUpdatePrimTexture = null; private UpdatePrimTexture handlerUpdatePrimTexture = null;
private UpdateVector handlerGrabObject = null; //OnGrabObject; private GrabObject handlerGrabObject = null; //OnGrabObject;
private MoveObject handlerGrabUpdate = null; //OnGrabUpdate; private MoveObject handlerGrabUpdate = null; //OnGrabUpdate;
private ObjectSelect handlerDeGrabObject = null; //OnDeGrabObject; private ObjectSelect handlerDeGrabObject = null; //OnDeGrabObject;
private GenericCall7 handlerObjectDescription = null; private GenericCall7 handlerObjectDescription = null;
@ -866,7 +866,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP
public event Action<IClientAPI> OnRequestAvatarsData; public event Action<IClientAPI> OnRequestAvatarsData;
public event LinkObjects OnLinkObjects; public event LinkObjects OnLinkObjects;
public event DelinkObjects OnDelinkObjects; public event DelinkObjects OnDelinkObjects;
public event UpdateVector OnGrabObject; public event GrabObject OnGrabObject;
public event ObjectSelect OnDeGrabObject; public event ObjectSelect OnDeGrabObject;
public event ObjectDuplicate OnObjectDuplicate; public event ObjectDuplicate OnObjectDuplicate;
public event ObjectDuplicateOnRay OnObjectDuplicateOnRay; public event ObjectDuplicateOnRay OnObjectDuplicateOnRay;
@ -4715,7 +4715,22 @@ namespace OpenSim.Region.ClientStack.LindenUDP
if (handlerGrabObject != null) if (handlerGrabObject != null)
{ {
handlerGrabObject(grab.ObjectData.LocalID, grab.ObjectData.GrabOffset, this); List<SurfaceTouchEventArgs> touchArgs = new List<SurfaceTouchEventArgs>();
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; break;
case PacketType.ObjectGrabUpdate: case PacketType.ObjectGrabUpdate:

View File

@ -197,7 +197,7 @@ namespace OpenSim.Region.Environment.Modules.World.NPC
public event RequestGodlikePowers OnRequestGodlikePowers; public event RequestGodlikePowers OnRequestGodlikePowers;
public event GodKickUser OnGodKickUser; public event GodKickUser OnGodKickUser;
public event ObjectDuplicate OnObjectDuplicate; public event ObjectDuplicate OnObjectDuplicate;
public event UpdateVector OnGrabObject; public event GrabObject OnGrabObject;
public event ObjectSelect OnDeGrabObject; public event ObjectSelect OnDeGrabObject;
public event MoveObject OnGrabUpdate; public event MoveObject OnGrabUpdate;
public event ViewerEffectEventHandler OnViewerEffect; public event ViewerEffectEventHandler OnViewerEffect;

View File

@ -212,7 +212,7 @@ namespace OpenSim.Region.Environment.Scenes
m_eventManager.TriggerLandBuy(this, args); m_eventManager.TriggerLandBuy(this, args);
} }
public virtual void ProcessObjectGrab(uint localID, Vector3 offsetPos, IClientAPI remoteClient) public virtual void ProcessObjectGrab(uint localID, Vector3 offsetPos, IClientAPI remoteClient, List<SurfaceTouchEventArgs> surfaceArgs)
{ {
List<EntityBase> EntityList = GetEntities(); List<EntityBase> EntityList = GetEntities();

View File

@ -92,7 +92,7 @@ namespace OpenSim.Region.Examples.SimpleModule
public event RequestGodlikePowers OnRequestGodlikePowers; public event RequestGodlikePowers OnRequestGodlikePowers;
public event GodKickUser OnGodKickUser; public event GodKickUser OnGodKickUser;
public event ObjectDuplicate OnObjectDuplicate; public event ObjectDuplicate OnObjectDuplicate;
public event UpdateVector OnGrabObject; public event GrabObject OnGrabObject;
public event ObjectSelect OnDeGrabObject; public event ObjectSelect OnDeGrabObject;
public event MoveObject OnGrabUpdate; public event MoveObject OnGrabUpdate;
public event ViewerEffectEventHandler OnViewerEffect; public event ViewerEffectEventHandler OnViewerEffect;