aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Region/Environment/Modules
diff options
context:
space:
mode:
Diffstat (limited to 'OpenSim/Region/Environment/Modules')
-rw-r--r--OpenSim/Region/Environment/Modules/ChatModule.cs106
1 files changed, 60 insertions, 46 deletions
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
136 } 136 }
137 } 137 }
138 138
139 public void SimChat(byte[] message, byte type, LLVector3 fromPos, string fromName, LLUUID fromAgentID) 139 public void SimChat(byte[] message, byte type, int channel, LLVector3 fromPos, string fromName, LLUUID fromAgentID)
140 { 140 {
141 ScenePresence avatar = null; 141 ScenePresence avatar = null;
142 avatar = m_scene.RequestAvatar(fromAgentID); 142 avatar = m_scene.RequestAvatar(fromAgentID);
@@ -149,54 +149,68 @@ namespace OpenSim.Region.Environment.Modules
149 149
150 if (connected) 150 if (connected)
151 { 151 {
152 m_ircWriter.WriteLine("PRIVMSG " + m_channel + " :" + "<" + fromName + ">: " + Util.FieldToString(message)); 152 m_ircWriter.WriteLine("PRIVMSG " + m_channel + " :" + "<" + fromName + ">: " +
153 Util.FieldToString(message));
153 m_ircWriter.Flush(); 154 m_ircWriter.Flush();
154 } 155 }
155 156
156 m_scene.ForEachScenePresence(delegate(ScenePresence presence) 157 if (channel == 0)
157 { 158 {
158 int dis = -1000; 159 m_scene.ForEachScenePresence(delegate(ScenePresence presence)
159 160 {
160 //err ??? the following code seems to be request a scenePresence when it already has a ref to it 161 int dis = -1000;
161 avatar = m_scene.RequestAvatar(presence.ControllingClient.AgentId); 162
162 if (avatar != null) 163 //err ??? the following code seems to be request a scenePresence when it already has a ref to it
163 { 164 avatar = m_scene.RequestAvatar(presence.ControllingClient.AgentId);
164 dis = (int)avatar.AbsolutePosition.GetDistanceTo(fromPos); 165 if (avatar != null)
165 } 166 {
166 167 dis = (int) avatar.AbsolutePosition.GetDistanceTo(fromPos);
167 switch (type) 168 }
168 { 169
169 case 0: // Whisper 170 switch (type)
170 if ((dis < 10) && (dis > -10)) 171 {
171 { 172 case 0: // Whisper
172 //should change so the message is sent through the avatar rather than direct to the ClientView 173 if ((dis < 10) && (dis > -10))
173 presence.ControllingClient.SendChatMessage(message, type, fromPos, fromName, 174 {
174 fromAgentID); 175 //should change so the message is sent through the avatar rather than direct to the ClientView
175 } 176 presence.ControllingClient.SendChatMessage(message,
176 break; 177 type,
177 case 1: // Say 178 fromPos,
178 if ((dis < 30) && (dis > -30)) 179 fromName,
179 { 180 fromAgentID);
180 //Console.WriteLine("sending chat"); 181 }
181 presence.ControllingClient.SendChatMessage(message, type, fromPos, fromName, 182 break;
182 fromAgentID); 183 case 1: // Say
183 } 184 if ((dis < 30) && (dis > -30))
184 break; 185 {
185 case 2: // Shout 186 //Console.WriteLine("sending chat");
186 if ((dis < 100) && (dis > -100)) 187 presence.ControllingClient.SendChatMessage(message,
187 { 188 type,
188 presence.ControllingClient.SendChatMessage(message, type, fromPos, fromName, 189 fromPos,
189 fromAgentID); 190 fromName,
190 } 191 fromAgentID);
191 break; 192 }
192 193 break;
193 case 0xff: // Broadcast 194 case 2: // Shout
194 presence.ControllingClient.SendChatMessage(message, type, fromPos, fromName, 195 if ((dis < 100) && (dis > -100))
195 fromAgentID); 196 {
196 break; 197 presence.ControllingClient.SendChatMessage(message,
197 } 198 type,
198 }); 199 fromPos,
200 fromName,
201 fromAgentID);
202 }
203 break;
204
205 case 0xff: // Broadcast
206 presence.ControllingClient.SendChatMessage(message, type,
207 fromPos,
208 fromName,
209 fromAgentID);
210 break;
211 }
212 });
213 }
199 } 214 }
200
201 } 215 }
202} 216}