mirror of
https://github.com/opensim/opensim.git
synced 2026-08-06 01:06:30 +08:00
* Added instant message support for the local region. Grid support forthcoming.
This commit is contained in:
@@ -40,6 +40,7 @@ namespace OpenSim.Region.ClientStack
|
||||
{
|
||||
partial class ClientView
|
||||
{
|
||||
public event ImprovedInstantMessage OnInstantMessage;
|
||||
public event ChatFromViewer OnChatFromViewer;
|
||||
public event RezObject OnRezObject;
|
||||
public event GenericCall4 OnDeRezObject;
|
||||
@@ -236,6 +237,30 @@ namespace OpenSim.Region.ClientStack
|
||||
this.OutPacket(reply);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
/// <remarks>TODO</remarks>
|
||||
/// <param name="message"></param>
|
||||
/// <param name="target"></param>
|
||||
public void SendInstantMessage(string message, LLUUID target)
|
||||
{
|
||||
ImprovedInstantMessagePacket msg = new ImprovedInstantMessagePacket();
|
||||
msg.AgentData.AgentID = this.AgentID;
|
||||
msg.AgentData.SessionID = this.SessionID;
|
||||
|
||||
msg.MessageBlock.Dialog = 0;
|
||||
msg.MessageBlock.FromGroup = false;
|
||||
msg.MessageBlock.ID = target.Combine(this.AgentID);
|
||||
msg.MessageBlock.Offline = 0;
|
||||
msg.MessageBlock.ParentEstateID = 0;
|
||||
msg.MessageBlock.Position = new LLVector3();
|
||||
msg.MessageBlock.RegionID = new LLUUID();
|
||||
msg.MessageBlock.Timestamp = 0;
|
||||
msg.MessageBlock.ToAgentID = target;
|
||||
|
||||
this.OutPacket(msg);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Send the region heightmap to the client
|
||||
|
||||
@@ -92,6 +92,20 @@ namespace OpenSim.Region.ClientStack
|
||||
this.OnChatFromViewer(message, type, fromPos, fromName, fromAgentID);
|
||||
}
|
||||
break;
|
||||
case PacketType.ImprovedInstantMessage:
|
||||
ImprovedInstantMessagePacket msgpack = (ImprovedInstantMessagePacket)Pack;
|
||||
|
||||
string IMfromName = Util.FieldToString(msgpack.MessageBlock.FromAgentName);
|
||||
string IMmessage = Util.FieldToString(msgpack.MessageBlock.Message);
|
||||
|
||||
if (OnInstantMessage != null)
|
||||
{
|
||||
this.OnInstantMessage(msgpack.AgentData.AgentID, msgpack.MessageBlock.ToAgentID,
|
||||
msgpack.MessageBlock.Timestamp, IMfromName, IMmessage);
|
||||
}
|
||||
|
||||
break;
|
||||
|
||||
case PacketType.RezObject:
|
||||
RezObjectPacket rezPacket = (RezObjectPacket)Pack;
|
||||
AgentInventory inven = this.m_inventoryCache.GetAgentsInventory(this.AgentID);
|
||||
|
||||
@@ -97,6 +97,30 @@ namespace OpenSim.Region.Environment.Scenes
|
||||
return;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
/// <remarks>Inefficient. TODO: Fixme</remarks>
|
||||
/// <param name="fromAgentID"></param>
|
||||
/// <param name="toAgentID"></param>
|
||||
/// <param name="timestamp"></param>
|
||||
/// <param name="fromAgentName"></param>
|
||||
/// <param name="message"></param>
|
||||
public void InstantMessage(LLUUID fromAgentID, LLUUID toAgentID, uint timestamp, string fromAgentName, string message)
|
||||
{
|
||||
if (this.Avatars.ContainsKey(toAgentID))
|
||||
{
|
||||
// Local sim message
|
||||
ScenePresence avatar = this.Avatars[toAgentID];
|
||||
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
// Grid message
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
|
||||
@@ -450,6 +450,7 @@ namespace OpenSim.Region.Environment.Scenes
|
||||
client.OnRegionHandShakeReply += this.SendLayerData;
|
||||
//remoteClient.OnRequestWearables += new GenericCall(this.GetInitialPrims);
|
||||
client.OnChatFromViewer += this.SimChat;
|
||||
client.OnInstantMessage += this.InstantMessage;
|
||||
client.OnRequestWearables += this.InformClientOfNeighbours;
|
||||
client.OnAddPrim += this.AddNewPrim;
|
||||
client.OnUpdatePrimPosition += this.UpdatePrimPosition;
|
||||
|
||||
Reference in New Issue
Block a user