public static void Remove(ProxySprite pNode)
        {
            ProxySpriteManager pMan = ProxySpriteManager.privGetInstance();

            Debug.Assert(pMan != null);

            Debug.Assert(pNode != null);
            pMan.baseRemoveNode(pNode);
        }
        public static void DumpLists()
        {
            ProxySpriteManager pMan = ProxySpriteManager.privGetInstance();

            Debug.Assert(pMan != null);

            Debug.WriteLine("------ ProxySprite Manager Lists ------");
            pMan.baseDumpLists();
        }
        public static void Remove(ProxySprite pSprite)
        {
            ProxySpriteManager pManager = ProxySpriteManager.privGetInstance();

            Debug.Assert(pManager != null);
            Debug.Assert(pSprite != null);

            // delegate to abstract manager who deals with the DLinks
            pManager.baseRemove(pSprite);
        }
        public static ProxySprite Find(ProxySprite.Name theName)
        {
            ProxySpriteManager pSpriteManager = ProxySpriteManager.privGetInstance();

            Debug.Assert(pSpriteManager != null);

            // set common compare node, static object ref
            pSpriteManager.poNodeCompare.SetName(theName);

            //find and return ref
            ProxySprite pSprite = (ProxySprite)pSpriteManager.baseFind(pSpriteManager.poNodeCompare);

            return(pSprite);
        }
        //----------------------------------------------------------------------
        // Methods
        //----------------------------------------------------------------------

        public static ProxySprite Add(GameSprite.Name name)
        {
            ProxySpriteManager pMan = ProxySpriteManager.privGetInstance();

            Debug.Assert(pMan != null);
            //todo look into edge case for null game sprite name - create a null game sprite to add?
            ProxySprite pNode = (ProxySprite)pMan.baseAddToFront();

            Debug.Assert(pNode != null);

            pNode.Set(name);

            return(pNode);
        }
        public static void Destroy()
        {
            // Get the instance
            ProxySpriteManager pMan = ProxySpriteManager.privGetInstance();

            Debug.WriteLine("--->ProxySpriteManager.Destroy()");
            pMan.baseDestroy();

            #if (TRACK_DESTRUCTOR)
            Debug.WriteLine("     {0} ({1})", ProxySpriteManager.pSpriteRef, ProxySpriteManager.pSpriteRef.GetHashCode());
            Debug.WriteLine("     {0} ({1})", ProxySpriteManager.pInstance, ProxySpriteManager.pInstance.GetHashCode());
            #endif
            ProxySpriteManager.pSpriteRef = null;
            ProxySpriteManager.pInstance  = null;
        }
        public static ProxySprite Add(GameSprite.Name theName)
        {
            ProxySpriteManager pManager = ProxySpriteManager.privGetInstance();

            Debug.Assert(pManager != null);

            //grab a DLink
            ProxySprite pSprite = (ProxySprite)pManager.baseAdd();

            Debug.Assert(pSprite != null);

            //initialize
            pSprite.Set(theName);

            return(pSprite);
        }
        public static ProxySprite Find(ProxySprite.Name name)
        {
            ProxySpriteManager pMan = ProxySpriteManager.privGetInstance();

            Debug.Assert(pMan != null);
            // Compare functions only compares two Nodes

            // So:  Use a reference node
            //      fill in the needed data
            //      use in the Compare() function
            Debug.Assert(pSpriteRef != null);
            pSpriteRef.SetName(name);

            ProxySprite pData = (ProxySprite)pMan.baseFindNode(pSpriteRef);

            return(pData);
        }
        public static void Print()
        {
            ProxySpriteManager pManager = ProxySpriteManager.privGetInstance();

            pManager.basePrint();
        }