Esempio n. 1
0
        /// <summary>
        /// Send the message from the prim to the avatars in the regions
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="c"></param>
        public virtual void OnChatFromWorld(Object sender, OSChatMessage c)
        {
            // early return if not on public or debug channel
            if (c.Channel != 0 && c.Channel != DEBUG_CHANNEL) return;

            bool Sent = false;

            if(c.Range > m_maxChatDistance) //Check for max distance
                c.Range = m_maxChatDistance;

            //Send the message into neighboring regions if possible

            if (c.Type == ChatTypeEnum.Say ||
                c.Type == ChatTypeEnum.Whisper ||
                c.Type == ChatTypeEnum.Shout ||
                c.Type == ChatTypeEnum.Custom)
            {
                int distance = c.Type == ChatTypeEnum.Say ? m_saydistance :
                    (c.Type == ChatTypeEnum.Whisper) ? m_whisperdistance :
                    (c.Type == ChatTypeEnum.Custom) ? (int)c.Range : m_shoutdistance;

                if (((Scene)c.Scene).TestBorderCross(new Vector3(c.Position.X + distance,
                    c.Position.Y,
                    c.Position.Z), Cardinals.E))
                {
                    Scene scene = FindScene(c.Scene.RegionInfo.RegionLocX + 1, c.Scene.RegionInfo.RegionLocY);
                    if (scene != null)
                    {
                        OSChatMessage newC = c.Copy();
                        newC.Scene = scene;
                        Vector3 Position = newC.Position;
                        Position.X -= Constants.RegionSize;
                        newC.Position = Position;
                        DeliverChatToAvatars(ChatSourceType.Object, newC);
                        Sent = true;
                    }
                }
                if (((Scene)c.Scene).TestBorderCross(new Vector3(c.Position.X,
                    c.Position.Y + distance,
                    c.Position.Z), Cardinals.N))
                {
                    Scene scene = FindScene(c.Scene.RegionInfo.RegionLocX, c.Scene.RegionInfo.RegionLocY + 1);
                    if (scene != null)
                    {
                        OSChatMessage newC = c.Copy();
                        newC.Scene = scene;
                        Vector3 Position = newC.Position;
                        Position.Y -= Constants.RegionSize;
                        newC.Position = Position;
                        DeliverChatToAvatars(ChatSourceType.Object, newC);
                        Sent = true;
                    }
                }
                if (((Scene)c.Scene).TestBorderCross(new Vector3(c.Position.X + distance,
                    c.Position.Y + distance,
                    c.Position.Z), Cardinals.E) &&
                    ((Scene)c.Scene).TestBorderCross(new Vector3(c.Position.X + distance,
                    c.Position.Y + distance,
                    c.Position.Z), Cardinals.N))
                {
                    Scene scene = FindScene(c.Scene.RegionInfo.RegionLocX + 1, c.Scene.RegionInfo.RegionLocY + 1);
                    if (scene != null)
                    {
                        OSChatMessage newC = c.Copy();
                        newC.Scene = scene;
                        Vector3 Position = newC.Position;
                        Position.X -= Constants.RegionSize;
                        Position.Y -= Constants.RegionSize;
                        newC.Position = Position;
                        DeliverChatToAvatars(ChatSourceType.Object, newC);
                        Sent = true;
                    }
                }
                if (((Scene)c.Scene).TestBorderCross(new Vector3(c.Position.X + distance,
                    c.Position.Y,
                    c.Position.Z), Cardinals.E) && c.Position.Y - distance < 0)
                {
                    Scene scene = FindScene(c.Scene.RegionInfo.RegionLocX + 1, c.Scene.RegionInfo.RegionLocY - 1);
                    if (scene != null)
                    {
                        OSChatMessage newC = c.Copy();
                        newC.Scene = scene;
                        Vector3 Position = newC.Position;
                        Position.X -= Constants.RegionSize;
                        Position.Y += Constants.RegionSize;
                        newC.Position = Position;
                        DeliverChatToAvatars(ChatSourceType.Object, newC);
                        Sent = true;
                    }
                }
                if (c.Position.Y - distance < 0)
                {
                    Scene scene = FindScene(c.Scene.RegionInfo.RegionLocX, c.Scene.RegionInfo.RegionLocY - 1);
                    if (scene != null)
                    {
                        OSChatMessage newC = c.Copy();
                        newC.Scene = scene;
                        Vector3 Position = newC.Position;
                        Position.Y += Constants.RegionSize;
                        newC.Position = Position;
                        DeliverChatToAvatars(ChatSourceType.Object, newC);
                        Sent = true;
                    }
                }
                if (c.Position.X - distance < 0 && c.Position.Y - distance < 0)
                {
                    Scene scene = FindScene(c.Scene.RegionInfo.RegionLocX - 1, c.Scene.RegionInfo.RegionLocY - 1);
                    if (scene != null)
                    {
                        OSChatMessage newC = c.Copy();
                        newC.Scene = scene;
                        Vector3 Position = newC.Position;
                        Position.X += Constants.RegionSize;
                        Position.Y += Constants.RegionSize;
                        newC.Position = Position;
                        DeliverChatToAvatars(ChatSourceType.Object, newC);
                        Sent = true;
                    }
                }
                if (c.Position.X - distance < 0)
                {
                    Scene scene = FindScene(c.Scene.RegionInfo.RegionLocX - 1, c.Scene.RegionInfo.RegionLocY);
                    if (scene != null)
                    {
                        OSChatMessage newC = c.Copy();
                        newC.Scene = scene;
                        Vector3 Position = newC.Position;
                        Position.X += Constants.RegionSize;
                        newC.Position = Position;
                        DeliverChatToAvatars(ChatSourceType.Object, newC);
                        Sent = true;
                    }
                }
                if (c.Position.X - distance < 0 && ((Scene)c.Scene).TestBorderCross(new Vector3(c.Position.X,
                    c.Position.Y + distance,
                    c.Position.Z), Cardinals.N))
                {
                    Scene scene = FindScene(c.Scene.RegionInfo.RegionLocX - 1, c.Scene.RegionInfo.RegionLocY + 1);
                    if (scene != null)
                    {
                        OSChatMessage newC = c.Copy();
                        newC.Scene = scene;
                        Vector3 Position = newC.Position;
                        Position.X += Constants.RegionSize;
                        Position.Y -= Constants.RegionSize;
                        newC.Position = Position;
                        DeliverChatToAvatars(ChatSourceType.Object, newC);
                        Sent = true;
                    }
                }
            }
            if(!Sent)
                DeliverChatToAvatars(ChatSourceType.Object, c);
        }
Esempio n. 2
0
        public virtual void OnChatFromWorld(Object sender, OSChatMessage c)
        {
            // early return if not on public or debug channel
            if (c.Channel != 0 && c.Channel != DEBUG_CHANNEL) return;

            bool Sent = false;

            if(c.Range > m_maxChatDistance)
                c.Range = m_maxChatDistance;

            if (c.Type == ChatTypeEnum.Say)
            {
                if (c.Position.X + m_saydistance > 256)
                {
                    Scene scene = FindScene(c.Scene.RegionInfo.RegionLocX + 1, c.Scene.RegionInfo.RegionLocY);
                    if (scene != null)
                    {
                        OSChatMessage newC = c.Copy();
                        newC.Scene = scene;
                        Vector3 Position = newC.Position;
                        Position.X -= Constants.RegionSize;
                        newC.Position = Position;
                        DeliverChatToAvatars(ChatSourceType.Object, newC);
                        Sent = true;
                    }
                }
                if (c.Position.Y + m_saydistance > 256)
                {
                    Scene scene = FindScene(c.Scene.RegionInfo.RegionLocX, c.Scene.RegionInfo.RegionLocY + 1);
                    if (scene != null)
                    {
                        OSChatMessage newC = c.Copy();
                        newC.Scene = scene;
                        Vector3 Position = newC.Position;
                        Position.Y -= Constants.RegionSize;
                        newC.Position = Position;
                        DeliverChatToAvatars(ChatSourceType.Object, newC);
                        Sent = true;
                    }
                }
                if (c.Position.X + m_saydistance > 256 && c.Position.Y + m_saydistance > 256)
                {
                    Scene scene = FindScene(c.Scene.RegionInfo.RegionLocX + 1, c.Scene.RegionInfo.RegionLocY + 1);
                    if (scene != null)
                    {
                        OSChatMessage newC = c.Copy();
                        newC.Scene = scene;
                        Vector3 Position = newC.Position;
                        Position.X -= Constants.RegionSize;
                        Position.Y -= Constants.RegionSize;
                        newC.Position = Position;
                        DeliverChatToAvatars(ChatSourceType.Object, newC);
                        Sent = true;
                    }
                }
                if (c.Position.X + m_saydistance > 256 && c.Position.Y - m_saydistance < 0)
                {
                    Scene scene = FindScene(c.Scene.RegionInfo.RegionLocX + 1, c.Scene.RegionInfo.RegionLocY - 1);
                    if (scene != null)
                    {
                        OSChatMessage newC = c.Copy();
                        newC.Scene = scene;
                        Vector3 Position = newC.Position;
                        Position.X -= Constants.RegionSize;
                        Position.Y += Constants.RegionSize;
                        newC.Position = Position;
                        DeliverChatToAvatars(ChatSourceType.Object, newC);
                        Sent = true;
                    }
                }
                if (c.Position.Y - m_saydistance < 0)
                {
                    Scene scene = FindScene(c.Scene.RegionInfo.RegionLocX, c.Scene.RegionInfo.RegionLocY - 1);
                    if (scene != null)
                    {
                        OSChatMessage newC = c.Copy();
                        newC.Scene = scene;
                        Vector3 Position = newC.Position;
                        Position.Y += Constants.RegionSize;
                        newC.Position = Position;
                        DeliverChatToAvatars(ChatSourceType.Object, newC);
                        Sent = true;
                    }
                }
                if (c.Position.X - m_saydistance < 0 && c.Position.Y - m_saydistance < 0)
                {
                    Scene scene = FindScene(c.Scene.RegionInfo.RegionLocX - 1, c.Scene.RegionInfo.RegionLocY - 1);
                    if (scene != null)
                    {
                        OSChatMessage newC = c.Copy();
                        newC.Scene = scene;
                        Vector3 Position = newC.Position;
                        Position.X += Constants.RegionSize;
                        Position.Y += Constants.RegionSize;
                        newC.Position = Position;
                        DeliverChatToAvatars(ChatSourceType.Object, newC);
                        Sent = true;
                    }
                }
                if (c.Position.X - m_saydistance < 0)
                {
                    Scene scene = FindScene(c.Scene.RegionInfo.RegionLocX - 1, c.Scene.RegionInfo.RegionLocY);
                    if (scene != null)
                    {
                        OSChatMessage newC = c.Copy();
                        newC.Scene = scene;
                        Vector3 Position = newC.Position;
                        Position.X += Constants.RegionSize;
                        newC.Position = Position;
                        DeliverChatToAvatars(ChatSourceType.Object, newC);
                        Sent = true;
                    }
                }
                if (c.Position.X - m_saydistance < 0 && c.Position.Y + m_saydistance > 256)
                {
                    Scene scene = FindScene(c.Scene.RegionInfo.RegionLocX - 1, c.Scene.RegionInfo.RegionLocY + 1);
                    if (scene != null)
                    {
                        OSChatMessage newC = c.Copy();
                        newC.Scene = scene;
                        Vector3 Position = newC.Position;
                        Position.X += Constants.RegionSize;
                        Position.Y -= Constants.RegionSize;
                        newC.Position = Position;
                        DeliverChatToAvatars(ChatSourceType.Object, newC);
                        Sent = true;
                    }
                }
            }
            if (c.Type == ChatTypeEnum.Whisper)
            {
                if (c.Position.X + m_whisperdistance > 256)
                {
                    Scene scene = FindScene(c.Scene.RegionInfo.RegionLocX + 1, c.Scene.RegionInfo.RegionLocY);
                    if (scene != null)
                    {
                        OSChatMessage newC = c.Copy();
                        newC.Scene = scene;
                        Vector3 Position = newC.Position;
                        Position.X -= Constants.RegionSize;
                        newC.Position = Position;
                        DeliverChatToAvatars(ChatSourceType.Object, newC);
                        Sent = true;
                    }
                }
                if (c.Position.Y + m_whisperdistance > 256)
                {
                    Scene scene = FindScene(c.Scene.RegionInfo.RegionLocX, c.Scene.RegionInfo.RegionLocY + 1);
                    if (scene != null)
                    {
                        OSChatMessage newC = c.Copy();
                        newC.Scene = scene;
                        Vector3 Position = newC.Position;
                        Position.Y -= Constants.RegionSize;
                        newC.Position = Position;
                        DeliverChatToAvatars(ChatSourceType.Object, newC);
                        Sent = true;
                    }
                }
                if (c.Position.X + m_whisperdistance > 256 && c.Position.Y + m_whisperdistance > 256)
                {
                    Scene scene = FindScene(c.Scene.RegionInfo.RegionLocX + 1, c.Scene.RegionInfo.RegionLocY + 1);
                    if (scene != null)
                    {
                        OSChatMessage newC = c.Copy();
                        newC.Scene = scene;
                        Vector3 Position = newC.Position;
                        Position.X -= Constants.RegionSize;
                        Position.Y -= Constants.RegionSize;
                        newC.Position = Position;
                        DeliverChatToAvatars(ChatSourceType.Object, newC);
                        Sent = true;
                    }
                }
                if (c.Position.X + m_whisperdistance > 256 && c.Position.Y - m_whisperdistance < 0)
                {
                    Scene scene = FindScene(c.Scene.RegionInfo.RegionLocX + 1, c.Scene.RegionInfo.RegionLocY - 1);
                    if (scene != null)
                    {
                        OSChatMessage newC = c.Copy();
                        newC.Scene = scene;
                        Vector3 Position = newC.Position;
                        Position.X -= Constants.RegionSize;
                        Position.Y += Constants.RegionSize;
                        newC.Position = Position;
                        DeliverChatToAvatars(ChatSourceType.Object, newC);
                        Sent = true;
                    }
                }
                if (c.Position.Y - m_whisperdistance < 0)
                {
                    Scene scene = FindScene(c.Scene.RegionInfo.RegionLocX, c.Scene.RegionInfo.RegionLocY - 1);
                    if (scene != null)
                    {
                        OSChatMessage newC = c.Copy();
                        newC.Scene = scene;
                        Vector3 Position = newC.Position;
                        Position.Y += Constants.RegionSize;
                        newC.Position = Position;
                        DeliverChatToAvatars(ChatSourceType.Object, newC);
                        Sent = true;
                    }
                }
                if (c.Position.X - m_whisperdistance < 0 && c.Position.Y - m_whisperdistance < 0)
                {
                    Scene scene = FindScene(c.Scene.RegionInfo.RegionLocX - 1, c.Scene.RegionInfo.RegionLocY - 1);
                    if (scene != null)
                    {
                        OSChatMessage newC = c.Copy();
                        newC.Scene = scene;
                        Vector3 Position = newC.Position;
                        Position.X += Constants.RegionSize;
                        Position.Y += Constants.RegionSize;
                        newC.Position = Position;
                        DeliverChatToAvatars(ChatSourceType.Object, newC);
                        Sent = true;
                    }
                }
                if (c.Position.X - m_whisperdistance < 0)
                {
                    Scene scene = FindScene(c.Scene.RegionInfo.RegionLocX - 1, c.Scene.RegionInfo.RegionLocY);
                    if (scene != null)
                    {
                        OSChatMessage newC = c.Copy();
                        newC.Scene = scene;
                        Vector3 Position = newC.Position;
                        Position.X += Constants.RegionSize;
                        newC.Position = Position;
                        DeliverChatToAvatars(ChatSourceType.Object, newC);
                        Sent = true;
                    }
                }
                if (c.Position.X - m_whisperdistance < 0 && c.Position.Y + m_whisperdistance > 256)
                {
                    Scene scene = FindScene(c.Scene.RegionInfo.RegionLocX - 1, c.Scene.RegionInfo.RegionLocY + 1);
                    if (scene != null)
                    {
                        OSChatMessage newC = c.Copy();
                        newC.Scene = scene;
                        Vector3 Position = newC.Position;
                        Position.X += Constants.RegionSize;
                        Position.Y -= Constants.RegionSize;
                        newC.Position = Position;
                        DeliverChatToAvatars(ChatSourceType.Object, newC);
                        Sent = true;
                    }
                }
            }
            if (c.Type == ChatTypeEnum.Shout)
            {
                if (c.Position.X + m_shoutdistance > 256)
                {
                    Scene scene = FindScene(c.Scene.RegionInfo.RegionLocX + 1, c.Scene.RegionInfo.RegionLocY);
                    if (scene != null)
                    {
                        OSChatMessage newC = c.Copy();
                        newC.Scene = scene;
                        Vector3 Position = newC.Position;
                        Position.X -= Constants.RegionSize;
                        newC.Position = Position;
                        DeliverChatToAvatars(ChatSourceType.Object, newC);
                        Sent = true;
                    }
                }
                if (c.Position.Y + m_shoutdistance > 256)
                {
                    Scene scene = FindScene(c.Scene.RegionInfo.RegionLocX, c.Scene.RegionInfo.RegionLocY + 1);
                    if (scene != null)
                    {
                        OSChatMessage newC = c.Copy();
                        newC.Scene = scene;
                        Vector3 Position = newC.Position;
                        Position.Y -= Constants.RegionSize;
                        newC.Position = Position;
                        DeliverChatToAvatars(ChatSourceType.Object, newC);
                        Sent = true;
                    }
                }
                if (c.Position.X + m_shoutdistance > 256 && c.Position.Y + m_shoutdistance > 256)
                {
                    Scene scene = FindScene(c.Scene.RegionInfo.RegionLocX + 1, c.Scene.RegionInfo.RegionLocY + 1);
                    if (scene != null)
                    {
                        OSChatMessage newC = c.Copy();
                        newC.Scene = scene;
                        Vector3 Position = newC.Position;
                        Position.X -= Constants.RegionSize;
                        Position.Y -= Constants.RegionSize;
                        newC.Position = Position;
                        DeliverChatToAvatars(ChatSourceType.Object, newC);
                        Sent = true;
                    }
                }
                if (c.Position.X + m_shoutdistance > 256 && c.Position.Y - m_shoutdistance < 0)
                {
                    Scene scene = FindScene(c.Scene.RegionInfo.RegionLocX + 1, c.Scene.RegionInfo.RegionLocY - 1);
                    if (scene != null)
                    {
                        OSChatMessage newC = c.Copy();
                        newC.Scene = scene;
                        Vector3 Position = newC.Position;
                        Position.X -= Constants.RegionSize;
                        Position.Y += Constants.RegionSize;
                        newC.Position = Position;
                        DeliverChatToAvatars(ChatSourceType.Object, newC);
                        Sent = true;
                    }
                }
                if (c.Position.Y - m_shoutdistance < 0)
                {
                    Scene scene = FindScene(c.Scene.RegionInfo.RegionLocX, c.Scene.RegionInfo.RegionLocY - 1);
                    if (scene != null)
                    {
                        OSChatMessage newC = c.Copy();
                        newC.Scene = scene;
                        Vector3 Position = newC.Position;
                        Position.Y += Constants.RegionSize;
                        newC.Position = Position;
                        DeliverChatToAvatars(ChatSourceType.Object, newC);
                        Sent = true;
                    }
                }
                if (c.Position.X - m_shoutdistance < 0 && c.Position.Y - m_shoutdistance < 0)
                {
                    Scene scene = FindScene(c.Scene.RegionInfo.RegionLocX - 1, c.Scene.RegionInfo.RegionLocY - 1);
                    if (scene != null)
                    {
                        OSChatMessage newC = c.Copy();
                        newC.Scene = scene;
                        Vector3 Position = newC.Position;
                        Position.X += Constants.RegionSize;
                        Position.Y += Constants.RegionSize;
                        newC.Position = Position;
                        DeliverChatToAvatars(ChatSourceType.Object, newC);
                        Sent = true;
                    }
                }
                if (c.Position.X - m_shoutdistance < 0)
                {
                    Scene scene = FindScene(c.Scene.RegionInfo.RegionLocX - 1, c.Scene.RegionInfo.RegionLocY);
                    if (scene != null)
                    {
                        OSChatMessage newC = c.Copy();
                        newC.Scene = scene;
                        Vector3 Position = newC.Position;
                        Position.X += Constants.RegionSize;
                        newC.Position = Position;
                        DeliverChatToAvatars(ChatSourceType.Object, newC);
                        Sent = true;
                    }
                }
                if (c.Position.X - m_shoutdistance < 0 && c.Position.Y + m_shoutdistance > 256)
                {
                    Scene scene = FindScene(c.Scene.RegionInfo.RegionLocX - 1, c.Scene.RegionInfo.RegionLocY + 1);
                    if (scene != null)
                    {
                        OSChatMessage newC = c.Copy();
                        newC.Scene = scene;
                        Vector3 Position = newC.Position;
                        Position.X += Constants.RegionSize;
                        Position.Y -= Constants.RegionSize;
                        newC.Position = Position;
                        DeliverChatToAvatars(ChatSourceType.Object, newC);
                        Sent = true;
                    }
                }
            }
            if (c.Type == ChatTypeEnum.Custom)
            {
                if (c.Position.X + c.Range > 256)
                {
                    Scene scene = FindScene(c.Scene.RegionInfo.RegionLocX + 1, c.Scene.RegionInfo.RegionLocY);
                    if (scene != null)
                    {
                        OSChatMessage newC = c.Copy();
                        newC.Scene = scene;
                        Vector3 Position = newC.Position;
                        Position.X -= Constants.RegionSize;
                        newC.Position = Position;
                        DeliverChatToAvatars(ChatSourceType.Object, newC);
                        Sent = true;
                    }
                }
                if (c.Position.Y + c.Range > 256)
                {
                    Scene scene = FindScene(c.Scene.RegionInfo.RegionLocX, c.Scene.RegionInfo.RegionLocY + 1);
                    if (scene != null)
                    {
                        OSChatMessage newC = c.Copy();
                        newC.Scene = scene;
                        Vector3 Position = newC.Position;
                        Position.Y -= Constants.RegionSize;
                        newC.Position = Position;
                        DeliverChatToAvatars(ChatSourceType.Object, newC);
                        Sent = true;
                    }
                }
                if (c.Position.X + c.Range > 256 && c.Position.Y + c.Range > 256)
                {
                    Scene scene = FindScene(c.Scene.RegionInfo.RegionLocX + 1, c.Scene.RegionInfo.RegionLocY + 1);
                    if (scene != null)
                    {
                        OSChatMessage newC = c.Copy();
                        newC.Scene = scene;
                        Vector3 Position = newC.Position;
                        Position.X -= Constants.RegionSize;
                        Position.Y -= Constants.RegionSize;
                        newC.Position = Position;
                        DeliverChatToAvatars(ChatSourceType.Object, newC);
                        Sent = true;
                    }
                }
                if (c.Position.X + c.Range > 256 && c.Position.Y - c.Range < 0)
                {
                    Scene scene = FindScene(c.Scene.RegionInfo.RegionLocX + 1, c.Scene.RegionInfo.RegionLocY - 1);
                    if (scene != null)
                    {
                        OSChatMessage newC = c.Copy();
                        newC.Scene = scene;
                        Vector3 Position = newC.Position;
                        Position.X -= Constants.RegionSize;
                        Position.Y += Constants.RegionSize;
                        newC.Position = Position;
                        DeliverChatToAvatars(ChatSourceType.Object, newC);
                        Sent = true;
                    }
                }
                if (c.Position.Y - c.Range < 0)
                {
                    Scene scene = FindScene(c.Scene.RegionInfo.RegionLocX, c.Scene.RegionInfo.RegionLocY - 1);
                    if (scene != null)
                    {
                        OSChatMessage newC = c.Copy();
                        newC.Scene = scene;
                        Vector3 Position = newC.Position;
                        Position.Y += Constants.RegionSize;
                        newC.Position = Position;
                        DeliverChatToAvatars(ChatSourceType.Object, newC);
                        Sent = true;
                    }
                }
                if (c.Position.X - c.Range < 0 && c.Position.Y - c.Range < 0)
                {
                    Scene scene = FindScene(c.Scene.RegionInfo.RegionLocX - 1, c.Scene.RegionInfo.RegionLocY - 1);
                    if (scene != null)
                    {
                        OSChatMessage newC = c.Copy();
                        newC.Scene = scene;
                        Vector3 Position = newC.Position;
                        Position.X += Constants.RegionSize;
                        Position.Y += Constants.RegionSize;
                        newC.Position = Position;
                        DeliverChatToAvatars(ChatSourceType.Object, newC);
                        Sent = true;
                    }
                }
                if (c.Position.X - c.Range < 0)
                {
                    Scene scene = FindScene(c.Scene.RegionInfo.RegionLocX - 1, c.Scene.RegionInfo.RegionLocY);
                    if (scene != null)
                    {
                        OSChatMessage newC = c.Copy();
                        newC.Scene = scene;
                        Vector3 Position = newC.Position;
                        Position.X += Constants.RegionSize;
                        newC.Position = Position;
                        DeliverChatToAvatars(ChatSourceType.Object, newC);
                        Sent = true;
                    }
                }
                if (c.Position.X - c.Range < 0 && c.Position.Y + c.Range > 256)
                {
                    Scene scene = FindScene(c.Scene.RegionInfo.RegionLocX - 1, c.Scene.RegionInfo.RegionLocY + 1);
                    if (scene != null)
                    {
                        OSChatMessage newC = c.Copy();
                        newC.Scene = scene;
                        Vector3 Position = newC.Position;
                        Position.X += Constants.RegionSize;
                        Position.Y -= Constants.RegionSize;
                        newC.Position = Position;
                        DeliverChatToAvatars(ChatSourceType.Object, newC);
                        Sent = true;
                    }
                }
            }
            if(!Sent)
            DeliverChatToAvatars(ChatSourceType.Object, c);
        }