* Implemented the little friendly pop tooltip messages that appear when you hover your mouse over prim with the object name, description, ownerid.. etc.
parent
3ca8eb82a9
commit
179695909a
|
@ -203,6 +203,8 @@ namespace OpenSim.Framework
|
||||||
|
|
||||||
public delegate void ObjectSelect(uint localID, IClientAPI remoteClient);
|
public delegate void ObjectSelect(uint localID, IClientAPI remoteClient);
|
||||||
|
|
||||||
|
public delegate void RequestObjectPropertiesFamily(IClientAPI remoteClient,LLUUID AgentID, uint RequestFlags, LLUUID TaskID);
|
||||||
|
|
||||||
public delegate void ObjectDeselect(uint localID, IClientAPI remoteClient);
|
public delegate void ObjectDeselect(uint localID, IClientAPI remoteClient);
|
||||||
|
|
||||||
public delegate void UpdatePrimFlags(uint localID, Packet packet, IClientAPI remoteClient);
|
public delegate void UpdatePrimFlags(uint localID, Packet packet, IClientAPI remoteClient);
|
||||||
|
@ -320,6 +322,7 @@ namespace OpenSim.Framework
|
||||||
event ObjectDeselect OnObjectDeselect;
|
event ObjectDeselect OnObjectDeselect;
|
||||||
event GenericCall7 OnObjectDescription;
|
event GenericCall7 OnObjectDescription;
|
||||||
event GenericCall7 OnObjectName;
|
event GenericCall7 OnObjectName;
|
||||||
|
event RequestObjectPropertiesFamily OnRequestObjectPropertiesFamily;
|
||||||
event UpdatePrimFlags OnUpdatePrimFlags;
|
event UpdatePrimFlags OnUpdatePrimFlags;
|
||||||
event UpdatePrimTexture OnUpdatePrimTexture;
|
event UpdatePrimTexture OnUpdatePrimTexture;
|
||||||
event UpdateVector OnUpdatePrimGroupPosition;
|
event UpdateVector OnUpdatePrimGroupPosition;
|
||||||
|
|
|
@ -71,6 +71,7 @@ namespace OpenSim.Region.ClientStack
|
||||||
public event ObjectDeselect OnObjectDeselect;
|
public event ObjectDeselect OnObjectDeselect;
|
||||||
public event GenericCall7 OnObjectDescription;
|
public event GenericCall7 OnObjectDescription;
|
||||||
public event GenericCall7 OnObjectName;
|
public event GenericCall7 OnObjectName;
|
||||||
|
public event RequestObjectPropertiesFamily OnRequestObjectPropertiesFamily;
|
||||||
public event UpdatePrimFlags OnUpdatePrimFlags;
|
public event UpdatePrimFlags OnUpdatePrimFlags;
|
||||||
public event UpdatePrimTexture OnUpdatePrimTexture;
|
public event UpdatePrimTexture OnUpdatePrimTexture;
|
||||||
public event UpdateVector OnUpdatePrimGroupPosition;
|
public event UpdateVector OnUpdatePrimGroupPosition;
|
||||||
|
|
|
@ -395,6 +395,22 @@ namespace OpenSim.Region.ClientStack
|
||||||
OpenSim.Framework.Console.MainLog.Instance.Verbose("CLIENT", "unhandled packet " + Pack.ToString());
|
OpenSim.Framework.Console.MainLog.Instance.Verbose("CLIENT", "unhandled packet " + Pack.ToString());
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case PacketType.RequestObjectPropertiesFamily:
|
||||||
|
//This powers the little tooltip that appears when you move your mouse over an object
|
||||||
|
RequestObjectPropertiesFamilyPacket packToolTip = (RequestObjectPropertiesFamilyPacket)Pack;
|
||||||
|
|
||||||
|
|
||||||
|
RequestObjectPropertiesFamilyPacket.ObjectDataBlock packObjBlock = packToolTip.ObjectData;
|
||||||
|
|
||||||
|
if (OnRequestObjectPropertiesFamily != null)
|
||||||
|
{
|
||||||
|
OnRequestObjectPropertiesFamily(this, this.m_agentId, packObjBlock.RequestFlags, packObjBlock.ObjectID);
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
break;
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
#region Inventory/Asset/Other related packets
|
#region Inventory/Asset/Other related packets
|
||||||
|
@ -725,6 +741,7 @@ namespace OpenSim.Region.ClientStack
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case PacketType.ParcelObjectOwnersRequest:
|
case PacketType.ParcelObjectOwnersRequest:
|
||||||
|
//System.Console.WriteLine(Pack.ToString());
|
||||||
ParcelObjectOwnersRequestPacket reqPacket = (ParcelObjectOwnersRequestPacket) Pack;
|
ParcelObjectOwnersRequestPacket reqPacket = (ParcelObjectOwnersRequestPacket) Pack;
|
||||||
if (OnParcelObjectOwnerRequest != null)
|
if (OnParcelObjectOwnerRequest != null)
|
||||||
{
|
{
|
||||||
|
@ -747,7 +764,18 @@ namespace OpenSim.Region.ClientStack
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
#region unimplemented handlers
|
#region unimplemented handlers
|
||||||
|
case PacketType.StartPingCheck:
|
||||||
|
// Send the client the ping response back
|
||||||
|
// Pass the same PingID in the matching packet
|
||||||
|
// Handled In the packet processing
|
||||||
|
OpenSim.Framework.Console.MainLog.Instance.Debug("CLIENT", "possibly unhandled packet " + Pack.ToString());
|
||||||
|
break;
|
||||||
|
case PacketType.CompletePingCheck:
|
||||||
|
// Parhaps this should be processed on the Sim to determine whether or not to drop a dead client
|
||||||
|
// Dumping it to the verbose console until it's handled properly.
|
||||||
|
|
||||||
|
OpenSim.Framework.Console.MainLog.Instance.Verbose("CLIENT", "unhandled packet " + Pack.ToString());
|
||||||
|
break;
|
||||||
case PacketType.AgentIsNowWearing:
|
case PacketType.AgentIsNowWearing:
|
||||||
// AgentIsNowWearingPacket wear = (AgentIsNowWearingPacket)Pack;
|
// AgentIsNowWearingPacket wear = (AgentIsNowWearingPacket)Pack;
|
||||||
OpenSim.Framework.Console.MainLog.Instance.Verbose("CLIENT", "unhandled packet " + Pack.ToString());
|
OpenSim.Framework.Console.MainLog.Instance.Verbose("CLIENT", "unhandled packet " + Pack.ToString());
|
||||||
|
|
|
@ -353,6 +353,23 @@ namespace OpenSim.Region.Environment.Scenes
|
||||||
group.Resize(scale, localID);
|
group.Resize(scale, localID);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// This handles the nifty little tool tip that you get when you drag your mouse over an object
|
||||||
|
/// Send to the Object Group to process. We don't know enough to service the request
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="remoteClient"></param>
|
||||||
|
/// <param name="AgentID"></param>
|
||||||
|
/// <param name="RequestFlags"></param>
|
||||||
|
/// <param name="ObjectID"></param>
|
||||||
|
public void RequestObjectPropertiesFamily(IClientAPI remoteClient, LLUUID AgentID, uint RequestFlags, LLUUID ObjectID)
|
||||||
|
{
|
||||||
|
SceneObjectGroup group = GetGroupByPrim(ObjectID);
|
||||||
|
if (group != null)
|
||||||
|
group.ServiceObjectPropertiesFamilyRequest(remoteClient, AgentID, RequestFlags);
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
///
|
///
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|
|
@ -708,7 +708,7 @@ namespace OpenSim.Region.Environment.Scenes
|
||||||
client.OnDelinkObjects += m_innerScene.DelinkObjects;
|
client.OnDelinkObjects += m_innerScene.DelinkObjects;
|
||||||
client.OnObjectDuplicate += m_innerScene.DuplicateObject;
|
client.OnObjectDuplicate += m_innerScene.DuplicateObject;
|
||||||
client.OnUpdatePrimFlags += m_innerScene.UpdatePrimFlags;
|
client.OnUpdatePrimFlags += m_innerScene.UpdatePrimFlags;
|
||||||
|
client.OnRequestObjectPropertiesFamily += m_innerScene.RequestObjectPropertiesFamily;
|
||||||
client.OnParcelPropertiesRequest += new ParcelPropertiesRequest(m_LandManager.handleParcelPropertiesRequest);
|
client.OnParcelPropertiesRequest += new ParcelPropertiesRequest(m_LandManager.handleParcelPropertiesRequest);
|
||||||
client.OnParcelDivideRequest += new ParcelDivideRequest(m_LandManager.handleParcelDivideRequest);
|
client.OnParcelDivideRequest += new ParcelDivideRequest(m_LandManager.handleParcelDivideRequest);
|
||||||
client.OnParcelJoinRequest += new ParcelJoinRequest(m_LandManager.handleParcelJoinRequest);
|
client.OnParcelJoinRequest += new ParcelJoinRequest(m_LandManager.handleParcelJoinRequest);
|
||||||
|
|
|
@ -462,6 +462,7 @@ namespace OpenSim.Region.Environment.Scenes
|
||||||
dupe.AbsolutePosition = new LLVector3(AbsolutePosition.X, AbsolutePosition.Y, AbsolutePosition.Z);
|
dupe.AbsolutePosition = new LLVector3(AbsolutePosition.X, AbsolutePosition.Y, AbsolutePosition.Z);
|
||||||
dupe.m_scene = m_scene;
|
dupe.m_scene = m_scene;
|
||||||
dupe.m_regionHandle = m_regionHandle;
|
dupe.m_regionHandle = m_regionHandle;
|
||||||
|
|
||||||
dupe.CopyRootPart(m_rootPart, OwnerID, GroupID);
|
dupe.CopyRootPart(m_rootPart, OwnerID, GroupID);
|
||||||
|
|
||||||
|
|
||||||
|
@ -519,6 +520,7 @@ namespace OpenSim.Region.Environment.Scenes
|
||||||
SetPartAsRoot(newPart);
|
SetPartAsRoot(newPart);
|
||||||
}
|
}
|
||||||
public void SetRootPartOwner(SceneObjectPart part, LLUUID cAgentID, LLUUID cGroupID) {
|
public void SetRootPartOwner(SceneObjectPart part, LLUUID cAgentID, LLUUID cGroupID) {
|
||||||
|
part.LastOwnerID = part.OwnerID;
|
||||||
part.OwnerID = cAgentID;
|
part.OwnerID = cAgentID;
|
||||||
part.GroupID = cGroupID;
|
part.GroupID = cGroupID;
|
||||||
part.ScheduleFullUpdate();
|
part.ScheduleFullUpdate();
|
||||||
|
@ -535,6 +537,38 @@ namespace OpenSim.Region.Environment.Scenes
|
||||||
m_parts.Add(newPart.UUID, newPart);
|
m_parts.Add(newPart.UUID, newPart);
|
||||||
SetPartAsNonRoot(newPart);
|
SetPartAsNonRoot(newPart);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
///
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="part"></param>
|
||||||
|
public void ServiceObjectPropertiesFamilyRequest(IClientAPI remoteClient,LLUUID AgentID, uint RequestFlags)
|
||||||
|
{
|
||||||
|
//RootPart.ServiceObjectPropertiesFamilyRequest(remoteClient, AgentID, RequestFlags);
|
||||||
|
ObjectPropertiesFamilyPacket objPropFamilyPack = new ObjectPropertiesFamilyPacket();
|
||||||
|
ObjectPropertiesFamilyPacket.ObjectDataBlock objPropDB = new ObjectPropertiesFamilyPacket.ObjectDataBlock();
|
||||||
|
objPropDB.RequestFlags = RequestFlags;
|
||||||
|
objPropDB.ObjectID = RootPart.UUID;
|
||||||
|
objPropDB.OwnerID = RootPart.ObjectOwner;
|
||||||
|
objPropDB.GroupID = RootPart.GroupID;
|
||||||
|
objPropDB.BaseMask = RootPart.BaseMask;
|
||||||
|
objPropDB.OwnerMask = RootPart.OwnerMask;
|
||||||
|
objPropDB.GroupMask = RootPart.GroupMask;
|
||||||
|
objPropDB.EveryoneMask = RootPart.EveryoneMask;
|
||||||
|
objPropDB.NextOwnerMask = RootPart.NextOwnerMask;
|
||||||
|
|
||||||
|
// TODO: More properties are needed in SceneObjectPart!
|
||||||
|
objPropDB.OwnershipCost = RootPart.OwnershipCost;
|
||||||
|
objPropDB.SaleType = RootPart.ObjectSaleType;
|
||||||
|
objPropDB.SalePrice = RootPart.SalePrice;
|
||||||
|
objPropDB.Category = RootPart.Category;
|
||||||
|
objPropDB.LastOwnerID = RootPart.CreatorID;
|
||||||
|
objPropDB.Name = Helpers.StringToField(RootPart.Name);
|
||||||
|
objPropDB.Description = Helpers.StringToField(RootPart.Description);
|
||||||
|
objPropFamilyPack.ObjectData = objPropDB;
|
||||||
|
remoteClient.OutPacket(objPropFamilyPack);
|
||||||
|
|
||||||
|
}
|
||||||
public void SetPartOwner(SceneObjectPart part, LLUUID cAgentID, LLUUID cGroupID)
|
public void SetPartOwner(SceneObjectPart part, LLUUID cAgentID, LLUUID cGroupID)
|
||||||
{
|
{
|
||||||
part.OwnerID = cAgentID;
|
part.OwnerID = cAgentID;
|
||||||
|
|
|
@ -51,13 +51,18 @@ namespace OpenSim.Region.Environment.Scenes
|
||||||
[XmlIgnore] public PhysicsActor PhysActor = null;
|
[XmlIgnore] public PhysicsActor PhysActor = null;
|
||||||
|
|
||||||
protected Dictionary<LLUUID, TaskInventoryItem> TaskInventory = new Dictionary<LLUUID, TaskInventoryItem>();
|
protected Dictionary<LLUUID, TaskInventoryItem> TaskInventory = new Dictionary<LLUUID, TaskInventoryItem>();
|
||||||
|
public LLUUID LastOwnerID;
|
||||||
public LLUUID OwnerID;
|
public LLUUID OwnerID;
|
||||||
public LLUUID GroupID;
|
public LLUUID GroupID;
|
||||||
public LLUUID LastOwnerID;
|
public int OwnershipCost;
|
||||||
|
public byte ObjectSaleType;
|
||||||
|
public int SalePrice;
|
||||||
|
public uint Category;
|
||||||
|
|
||||||
public Int32 CreationDate;
|
public Int32 CreationDate;
|
||||||
public uint ParentID = 0;
|
public uint ParentID = 0;
|
||||||
|
|
||||||
|
|
||||||
public uint OwnerMask = FULL_MASK_PERMISSIONS;
|
public uint OwnerMask = FULL_MASK_PERMISSIONS;
|
||||||
public uint NextOwnerMask = FULL_MASK_PERMISSIONS;
|
public uint NextOwnerMask = FULL_MASK_PERMISSIONS;
|
||||||
public uint GroupMask = FULL_MASK_PERMISSIONS;
|
public uint GroupMask = FULL_MASK_PERMISSIONS;
|
||||||
|
@ -68,6 +73,7 @@ namespace OpenSim.Region.Environment.Scenes
|
||||||
|
|
||||||
[XmlIgnore] public uint TimeStampFull = 0;
|
[XmlIgnore] public uint TimeStampFull = 0;
|
||||||
[XmlIgnore] public uint TimeStampTerse = 0;
|
[XmlIgnore] public uint TimeStampTerse = 0;
|
||||||
|
[XmlIgnore] public uint TimeStampLastActivity = 0; // Will be used for AutoReturn
|
||||||
|
|
||||||
protected SceneObjectGroup m_parentGroup;
|
protected SceneObjectGroup m_parentGroup;
|
||||||
|
|
||||||
|
@ -418,7 +424,13 @@ namespace OpenSim.Region.Environment.Scenes
|
||||||
UUID = LLUUID.Random();
|
UUID = LLUUID.Random();
|
||||||
LocalID = (uint) (localID);
|
LocalID = (uint) (localID);
|
||||||
Shape = shape;
|
Shape = shape;
|
||||||
|
// Todo: Add More Object Parameter from above!
|
||||||
|
OwnershipCost = 0;
|
||||||
|
ObjectSaleType = (byte)0;
|
||||||
|
SalePrice = 0;
|
||||||
|
Category = (uint)0;
|
||||||
|
LastOwnerID = CreatorID;
|
||||||
|
// End Todo: ///
|
||||||
GroupPosition = groupPosition;
|
GroupPosition = groupPosition;
|
||||||
OffsetPosition = offsetPosition;
|
OffsetPosition = offsetPosition;
|
||||||
RotationOffset = rotationOffset;
|
RotationOffset = rotationOffset;
|
||||||
|
@ -467,8 +479,14 @@ namespace OpenSim.Region.Environment.Scenes
|
||||||
LastOwnerID = lastOwnerID;
|
LastOwnerID = lastOwnerID;
|
||||||
UUID = LLUUID.Random();
|
UUID = LLUUID.Random();
|
||||||
LocalID = (uint) (localID);
|
LocalID = (uint) (localID);
|
||||||
|
// Todo: Add More parameters from above
|
||||||
Shape = shape;
|
Shape = shape;
|
||||||
|
OwnershipCost = 0;
|
||||||
|
ObjectSaleType = (byte)0;
|
||||||
|
SalePrice = 0;
|
||||||
|
Category = (uint)0;
|
||||||
|
// End Todo: ///
|
||||||
|
LastOwnerID = CreatorID;
|
||||||
OffsetPosition = position;
|
OffsetPosition = position;
|
||||||
RotationOffset = rotation;
|
RotationOffset = rotation;
|
||||||
ObjectFlags = flags;
|
ObjectFlags = flags;
|
||||||
|
@ -538,6 +556,14 @@ namespace OpenSim.Region.Environment.Scenes
|
||||||
dupe.AngularVelocity = new LLVector3(0, 0, 0);
|
dupe.AngularVelocity = new LLVector3(0, 0, 0);
|
||||||
dupe.ObjectFlags = ObjectFlags;
|
dupe.ObjectFlags = ObjectFlags;
|
||||||
|
|
||||||
|
dupe.OwnershipCost = OwnershipCost;
|
||||||
|
dupe.ObjectSaleType = ObjectSaleType;
|
||||||
|
dupe.SalePrice = SalePrice;
|
||||||
|
dupe.Category = Category;
|
||||||
|
|
||||||
|
// This may be wrong... it might have to be applied in SceneObjectGroup to the object that's being duplicated.
|
||||||
|
dupe.LastOwnerID = ObjectOwner;
|
||||||
|
|
||||||
byte[] extraP = new byte[Shape.ExtraParams.Length];
|
byte[] extraP = new byte[Shape.ExtraParams.Length];
|
||||||
Array.Copy(Shape.ExtraParams, extraP, extraP.Length);
|
Array.Copy(Shape.ExtraParams, extraP, extraP.Length);
|
||||||
dupe.Shape.ExtraParams = extraP;
|
dupe.Shape.ExtraParams = extraP;
|
||||||
|
|
|
@ -83,6 +83,7 @@ namespace SimpleApp
|
||||||
|
|
||||||
public event UpdateShape OnUpdatePrimShape;
|
public event UpdateShape OnUpdatePrimShape;
|
||||||
public event ObjectExtraParams OnUpdateExtraParams;
|
public event ObjectExtraParams OnUpdateExtraParams;
|
||||||
|
public event RequestObjectPropertiesFamily OnRequestObjectPropertiesFamily;
|
||||||
public event ObjectSelect OnObjectSelect;
|
public event ObjectSelect OnObjectSelect;
|
||||||
public event GenericCall7 OnObjectDescription;
|
public event GenericCall7 OnObjectDescription;
|
||||||
public event GenericCall7 OnObjectName;
|
public event GenericCall7 OnObjectName;
|
||||||
|
|
Loading…
Reference in New Issue