a few changes on chat and dialog from udp/client

This commit is contained in:
UbitUmarov
2022-06-19 16:03:38 +01:00
parent 2d1e5eb5ac
commit 9af568307e
5 changed files with 57 additions and 64 deletions

View File

@@ -162,20 +162,8 @@ namespace OpenSim.Region.CoreModules.Avatar.Chat
client.OnChatFromClient += OnChatFromClient;
}
protected virtual OSChatMessage FixPositionOfChatMessage(OSChatMessage c)
{
ScenePresence avatar;
Scene scene = (Scene)c.Scene;
if ((avatar = scene.GetScenePresence(c.Sender.AgentId)) != null)
c.Position = avatar.AbsolutePosition;
return c;
}
public virtual void OnChatFromClient(Object sender, OSChatMessage c)
{
c = FixPositionOfChatMessage(c);
// redistribute to interested subscribers
Scene scene = (Scene)c.Scene;
scene.EventManager.TriggerOnChatFromClient(sender, c);

View File

@@ -305,11 +305,6 @@ namespace OpenSim.Region.CoreModules.Scripting.WorldComm
{
// m_log.DebugFormat("[WorldComm] got[2] type {0}, channel {1}, name {2}, id {3}, msg {4}",
// type, channel, name, id, msg);
if (type == ChatTypeEnum.Region)
{
m_listenerManager.TryEnqueueMessage(channel, name, id, msg);
return;
}
// validate type and set range
float maxDistanceSQ;
@@ -327,6 +322,10 @@ namespace OpenSim.Region.CoreModules.Scripting.WorldComm
maxDistanceSQ = m_shoutdistance;
break;
case ChatTypeEnum.Region:
m_listenerManager.TryEnqueueMessage(channel, name, id, msg);
return;
default:
return;
}
@@ -430,19 +429,39 @@ namespace OpenSim.Region.CoreModules.Scripting.WorldComm
* Listener Stuff
*
* *****************************************************************/
private void DeliverClientMessage(Object sender, OSChatMessage e)
{
if (null != e.Sender)
// validate type and set range
float maxDistanceSQ;
switch (e.Type)
{
DeliverMessage(e.Type, e.Channel, e.Sender.Name,
e.Sender.AgentId, e.Message, e.Position);
case ChatTypeEnum.Whisper:
maxDistanceSQ = m_whisperdistance;
break;
case ChatTypeEnum.Say:
maxDistanceSQ = m_saydistance;
break;
case ChatTypeEnum.Shout:
maxDistanceSQ = m_shoutdistance;
break;
case ChatTypeEnum.Region:
if (e.Sender == null)
m_listenerManager.TryEnqueueMessage(e.Channel, e.From, UUID.Zero, e.Message);
else
m_listenerManager.TryEnqueueMessage(e.Channel, e.Sender.Name, e.Sender.AgentId, e.Message);
return;
default:
return;
}
if (e.Sender == null)
m_listenerManager.TryEnqueueMessage(e.Channel, e.Position, maxDistanceSQ, e.From, UUID.Zero, e.Message);
else
{
DeliverMessage(e.Type, e.Channel, e.From, UUID.Zero,
e.Message, e.Position);
}
m_listenerManager.TryEnqueueMessage(e.Channel, e.Position, maxDistanceSQ, e.Sender.Name, e.Sender.AgentId, e.Message);
}
public Object[] GetSerializationData(UUID itemID)