* Cross-border region chat should now work as long as both regions are part of the same simulator.
parent
f427433c85
commit
f364a084f1
|
@ -196,7 +196,8 @@ namespace OpenSim.Region.Environment.Modules
|
||||||
scene = m_scenes[0];
|
scene = m_scenes[0];
|
||||||
|
|
||||||
// Filled in since it's easier than rewriting right now.
|
// Filled in since it's easier than rewriting right now.
|
||||||
LLVector3 fromPos = e.Position;
|
LLVector3 fromPos = e.Position;
|
||||||
|
LLVector3 fromRegionPos = e.Position + new LLVector3(e.Scene.RegionInfo.RegionLocX * 256, e.Scene.RegionInfo.RegionLocY * 256, 0);
|
||||||
string fromName = e.From;
|
string fromName = e.From;
|
||||||
string message = e.Message;
|
string message = e.Message;
|
||||||
byte type = (byte)e.Type;
|
byte type = (byte)e.Type;
|
||||||
|
@ -240,64 +241,63 @@ namespace OpenSim.Region.Environment.Modules
|
||||||
m_ircWriter.WriteLine("PRIVMSG " + m_channel + " :" + "<" + fromName + " in " + scene.RegionInfo.RegionName + ">: " +
|
m_ircWriter.WriteLine("PRIVMSG " + m_channel + " :" + "<" + fromName + " in " + scene.RegionInfo.RegionName + ">: " +
|
||||||
e.Message);
|
e.Message);
|
||||||
m_ircWriter.Flush();
|
m_ircWriter.Flush();
|
||||||
}
|
}
|
||||||
|
|
||||||
if (e.Channel == 0)
|
if (e.Channel == 0)
|
||||||
{
|
{
|
||||||
scene.ForEachScenePresence(delegate(ScenePresence presence)
|
foreach (Scene m_scene in m_scenes)
|
||||||
{
|
{
|
||||||
int dis = -1000;
|
m_scene.ForEachScenePresence(delegate(ScenePresence presence)
|
||||||
|
{
|
||||||
//err ??? the following code seems to be request a scenePresence when it already has a ref to it
|
int dis = -100000;
|
||||||
avatar = scene.GetScenePresence(presence.ControllingClient.AgentId);
|
|
||||||
if (avatar != null)
|
LLVector3 avatarRegionPos = presence.AbsolutePosition + new LLVector3(scene.RegionInfo.RegionLocX * 256, scene.RegionInfo.RegionLocY * 256, 0);
|
||||||
{
|
dis = (int)avatarRegionPos.GetDistanceTo(fromRegionPos);
|
||||||
dis = (int) avatar.AbsolutePosition.GetDistanceTo(fromPos);
|
|
||||||
}
|
switch (e.Type)
|
||||||
|
{
|
||||||
switch (e.Type)
|
case ChatTypeEnum.Whisper:
|
||||||
{
|
if ((dis < 10) && (dis > -10))
|
||||||
case ChatTypeEnum.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,
|
||||||
//should change so the message is sent through the avatar rather than direct to the ClientView
|
type,
|
||||||
presence.ControllingClient.SendChatMessage(message,
|
fromPos,
|
||||||
type,
|
fromName,
|
||||||
fromPos,
|
fromAgentID);
|
||||||
fromName,
|
}
|
||||||
fromAgentID);
|
break;
|
||||||
}
|
case ChatTypeEnum.Say:
|
||||||
break;
|
if ((dis < 30) && (dis > -30))
|
||||||
case ChatTypeEnum.Say:
|
{
|
||||||
if ((dis < 30) && (dis > -30))
|
//Console.WriteLine("sending chat");
|
||||||
{
|
presence.ControllingClient.SendChatMessage(message,
|
||||||
//Console.WriteLine("sending chat");
|
type,
|
||||||
presence.ControllingClient.SendChatMessage(message,
|
fromPos,
|
||||||
type,
|
fromName,
|
||||||
fromPos,
|
fromAgentID);
|
||||||
fromName,
|
}
|
||||||
fromAgentID);
|
break;
|
||||||
}
|
case ChatTypeEnum.Shout:
|
||||||
break;
|
if ((dis < 100) && (dis > -100))
|
||||||
case ChatTypeEnum.Shout:
|
{
|
||||||
if ((dis < 100) && (dis > -100))
|
presence.ControllingClient.SendChatMessage(message,
|
||||||
{
|
type,
|
||||||
presence.ControllingClient.SendChatMessage(message,
|
fromPos,
|
||||||
type,
|
fromName,
|
||||||
fromPos,
|
fromAgentID);
|
||||||
fromName,
|
}
|
||||||
fromAgentID);
|
break;
|
||||||
}
|
|
||||||
break;
|
case ChatTypeEnum.Broadcast:
|
||||||
|
presence.ControllingClient.SendChatMessage(message, type,
|
||||||
case ChatTypeEnum.Broadcast:
|
fromPos,
|
||||||
presence.ControllingClient.SendChatMessage(message, type,
|
fromName,
|
||||||
fromPos,
|
fromAgentID);
|
||||||
fromName,
|
break;
|
||||||
fromAgentID);
|
}
|
||||||
break;
|
});
|
||||||
}
|
}
|
||||||
});
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue