public static SoundEngine Find(SoundEngine.Name name)
        {
            SoundEngineMan pMan = SoundEngineMan.privGetInstance();

            Debug.Assert(pMan != null);

            pMan.poNodeCompare.name = name;

            SoundEngine pData = (SoundEngine)pMan.baseFind(pMan.poNodeCompare);

            return(pData);
        }
        public static SoundEngine Add(SoundEngine.Name name, string pSoundName, float soundVolume)
        {
            SoundEngineMan pMan = SoundEngineMan.privGetInstance();

            Debug.Assert(pMan != null);

            SoundEngine pNode = (SoundEngine)pMan.baseAdd();

            Debug.Assert(pNode != null);

            // Check the data initialization
            Debug.Assert(pSoundName != null);

            pNode.Set(name, pSoundName, soundVolume);
            return(pNode);
        }
        public void Attach(SoundEngine.Name soundName)
        {
            // Get the Sound
            SoundEngine pSound = SoundEngineMan.Find(soundName);

            Debug.Assert(pSound != null);

            // Create a new holder
            SoundHolder pSoundHolder = new SoundHolder(pSound);

            Debug.Assert(pSoundHolder != null);

            // Attach it to the Animation Sprite ( Push to front )
            DLink.AddToEnd(ref this.poFirstSound, pSoundHolder);

            // Set the first one to this Sound
            this.pCurrSound = pSoundHolder;
        }