private bool HearMusic(List <Filter> filters)
        {
            bool musicHeard = false;
            bool invert     = false;

            foreach (Filter f in filters)
            {
                /// This inversion is ugly, but we don't have a sensorTarget to add to the
                /// list, so a Count==Zero filter would always come up true. An alternative
                /// might be to pretend the GameActor is making the music, so there always
                /// would be a direct object. Going to go with that, leaving this code
                /// here in case something goes wrong, will try to delete after checkin.
                //CountFilter countFilter = f as CountFilter;
                //if (countFilter != null)
                //{
                //    if ((countFilter.count1 == 0) && (countFilter.operand1 == Operand.Equal))
                //    {
                //        invert = true;
                //    }
                //}
                SoundFilter soundFilter = f as SoundFilter;
                if (soundFilter != null)
                {
                    if (BokuGame.Audio.IsPlaying(null, soundFilter.sound))
                    {
                        musicHeard = true;
                    }
                }
            }
            if (invert)
            {
                musicHeard = !musicHeard;
            }
            return(musicHeard);
        }
        public override ProgrammingElement Clone()
        {
            SoundFilter clone = new SoundFilter();

            CopyTo(clone);
            return(clone);
        }
        private bool ListeningForMusic(List <Filter> filters)
        {
            bool listenForMusic = false;

            foreach (Filter f in filters)
            {
                ClassificationFilter classFilter = f as ClassificationFilter;
                if (classFilter != null)
                {
                    /// Don't mess around, a class filter disqualifies the whole process.
                    return(false);
                }
                SoundFilter soundFilter = f as SoundFilter;
                if (soundFilter != null)
                {
                    if (!BokuGame.Audio.IsSpatial(soundFilter.sound))
                    {
                        listenForMusic = true;
                    }
                }
            }
            return(listenForMusic);
        }
 protected void CopyTo(SoundFilter clone)
 {
     base.CopyTo(clone);
     clone.sound         = this.sound;
     clone.previewLength = this.previewLength;
 }