From f8ddf7429eaeae3a3aae88d4560473c3516d20fd Mon Sep 17 00:00:00 2001
From: lbsa71
Date: Fri, 14 Sep 2007 13:46:05 +0000
Subject: * Wired up chat so that channel goes into OnChatFromViewer. However:
* There's no libsl reply packet field for it, I guess other channels than 0
makes no sense sending back to clients. * We do not currently support
objects listening, so there's really no way of actually using this feature.
So; somebody please wire chat all the way to the scripts.
---
OpenSim/Region/Environment/Interfaces/ISimChat.cs | 2 +-
OpenSim/Region/Environment/Modules/ChatModule.cs | 106 ++++++++++++---------
.../Environment/Scenes/Scene.PacketHandlers.cs | 4 +-
3 files changed, 63 insertions(+), 49 deletions(-)
(limited to 'OpenSim/Region/Environment')
diff --git a/OpenSim/Region/Environment/Interfaces/ISimChat.cs b/OpenSim/Region/Environment/Interfaces/ISimChat.cs
index 0b83b34..73ef476 100644
--- a/OpenSim/Region/Environment/Interfaces/ISimChat.cs
+++ b/OpenSim/Region/Environment/Interfaces/ISimChat.cs
@@ -7,6 +7,6 @@ namespace OpenSim.Region.Environment.Interfaces
{
public interface ISimChat
{
- void SimChat(byte[] message, byte type, LLVector3 fromPos, string fromName, LLUUID fromAgentID);
+ void SimChat(byte[] message, byte type, int channel, LLVector3 fromPos, string fromName, LLUUID fromAgentID);
}
}
diff --git a/OpenSim/Region/Environment/Modules/ChatModule.cs b/OpenSim/Region/Environment/Modules/ChatModule.cs
index b38665d..a46343b 100644
--- a/OpenSim/Region/Environment/Modules/ChatModule.cs
+++ b/OpenSim/Region/Environment/Modules/ChatModule.cs
@@ -136,7 +136,7 @@ namespace OpenSim.Region.Environment.Modules
}
}
- public void SimChat(byte[] message, byte type, LLVector3 fromPos, string fromName, LLUUID fromAgentID)
+ public void SimChat(byte[] message, byte type, int channel, LLVector3 fromPos, string fromName, LLUUID fromAgentID)
{
ScenePresence avatar = null;
avatar = m_scene.RequestAvatar(fromAgentID);
@@ -149,54 +149,68 @@ namespace OpenSim.Region.Environment.Modules
if (connected)
{
- m_ircWriter.WriteLine("PRIVMSG " + m_channel + " :" + "<" + fromName + ">: " + Util.FieldToString(message));
+ m_ircWriter.WriteLine("PRIVMSG " + m_channel + " :" + "<" + fromName + ">: " +
+ Util.FieldToString(message));
m_ircWriter.Flush();
}
- m_scene.ForEachScenePresence(delegate(ScenePresence presence)
- {
- int dis = -1000;
-
- //err ??? the following code seems to be request a scenePresence when it already has a ref to it
- avatar = m_scene.RequestAvatar(presence.ControllingClient.AgentId);
- if (avatar != null)
- {
- dis = (int)avatar.AbsolutePosition.GetDistanceTo(fromPos);
- }
-
- switch (type)
- {
- case 0: // Whisper
- if ((dis < 10) && (dis > -10))
- {
- //should change so the message is sent through the avatar rather than direct to the ClientView
- presence.ControllingClient.SendChatMessage(message, type, fromPos, fromName,
- fromAgentID);
- }
- break;
- case 1: // Say
- if ((dis < 30) && (dis > -30))
- {
- //Console.WriteLine("sending chat");
- presence.ControllingClient.SendChatMessage(message, type, fromPos, fromName,
- fromAgentID);
- }
- break;
- case 2: // Shout
- if ((dis < 100) && (dis > -100))
- {
- presence.ControllingClient.SendChatMessage(message, type, fromPos, fromName,
- fromAgentID);
- }
- break;
-
- case 0xff: // Broadcast
- presence.ControllingClient.SendChatMessage(message, type, fromPos, fromName,
- fromAgentID);
- break;
- }
- });
+ if (channel == 0)
+ {
+ m_scene.ForEachScenePresence(delegate(ScenePresence presence)
+ {
+ int dis = -1000;
+
+ //err ??? the following code seems to be request a scenePresence when it already has a ref to it
+ avatar = m_scene.RequestAvatar(presence.ControllingClient.AgentId);
+ if (avatar != null)
+ {
+ dis = (int) avatar.AbsolutePosition.GetDistanceTo(fromPos);
+ }
+
+ switch (type)
+ {
+ case 0: // Whisper
+ if ((dis < 10) && (dis > -10))
+ {
+ //should change so the message is sent through the avatar rather than direct to the ClientView
+ presence.ControllingClient.SendChatMessage(message,
+ type,
+ fromPos,
+ fromName,
+ fromAgentID);
+ }
+ break;
+ case 1: // Say
+ if ((dis < 30) && (dis > -30))
+ {
+ //Console.WriteLine("sending chat");
+ presence.ControllingClient.SendChatMessage(message,
+ type,
+ fromPos,
+ fromName,
+ fromAgentID);
+ }
+ break;
+ case 2: // Shout
+ if ((dis < 100) && (dis > -100))
+ {
+ presence.ControllingClient.SendChatMessage(message,
+ type,
+ fromPos,
+ fromName,
+ fromAgentID);
+ }
+ break;
+
+ case 0xff: // Broadcast
+ presence.ControllingClient.SendChatMessage(message, type,
+ fromPos,
+ fromName,
+ fromAgentID);
+ break;
+ }
+ });
+ }
}
-
}
}
diff --git a/OpenSim/Region/Environment/Scenes/Scene.PacketHandlers.cs b/OpenSim/Region/Environment/Scenes/Scene.PacketHandlers.cs
index ab65e36..881b4a1 100644
--- a/OpenSim/Region/Environment/Scenes/Scene.PacketHandlers.cs
+++ b/OpenSim/Region/Environment/Scenes/Scene.PacketHandlers.cs
@@ -102,11 +102,11 @@ namespace OpenSim.Region.Environment.Scenes
///
///
///
- public void SimChat(byte[] message, byte type, LLVector3 fromPos, string fromName, LLUUID fromAgentID)
+ public void SimChat(byte[] message, byte type, int channel, LLVector3 fromPos, string fromName, LLUUID fromAgentID)
{
if (m_simChatModule != null)
{
- m_simChatModule.SimChat(message, type, fromPos, fromName, fromAgentID);
+ m_simChatModule.SimChat(message, type, channel, fromPos, fromName, fromAgentID);
}
}
--
cgit v1.1