Esempio n. 1
0
 public SoundParam(SoundParam src)
 {
     SoundID = src.SoundID;
     Gain    = src.Gain;
     Radius  = src.Radius;
     Flags   = src.Flags;
 }
        public void SendAttachedSound(ObjectPart objpart, UUID sound, double gain, double soundradius, PrimitiveSoundFlags flags)
        {
            var req = new AttachedSound
            {
                OwnerID  = objpart.ObjectGroup.Owner.ID,
                SoundID  = sound,
                ObjectID = objpart.ID,
                Flags    = flags
            };

            if (gain < 0)
            {
                gain = 0;
            }
            else if (gain > 1)
            {
                gain = 1;
            }

            req.Gain = gain;

            if (objpart.ObjectGroup.IsAttachedToPrivate)
            {
                IAgent agent;
                if (Agents.TryGetValue(objpart.ObjectGroup.Owner.ID, out agent) &&
                    (agent.GlobalPosition - objpart.GlobalPosition).Length <= soundradius)
                {
                    agent.SendMessageAlways(req, ID);
                }
            }
            else
            {
                foreach (IAgent agent in Agents)
                {
                    if ((agent.GlobalPosition - objpart.GlobalPosition).Length <= soundradius)
                    {
                        agent.SendMessageAlways(req, ID);
                    }
                }
            }
        }