public static CollPair GetActiveCollPair()
        {
            CollPairManager pManager = CollPairManager.privGetInstance();

            Debug.Assert(pManager != null);
            return(pManager.pActiveCollPair);
        }
        public static void Print()
        {
            CollPairManager pManager = CollPairManager.privGetInstance();

            Debug.Assert(pManager != null);
            pManager.basePrint();
        }
        public static void Remove(CollPair pNode)
        {
            CollPairManager pManager = CollPairManager.privGetInstance();

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

            // delegate to abstract manager who deals with the DLinks
            pManager.baseRemove(pNode);
        }
        public static CollPair Add(CollPair.Name collpairName, GameObject treeRootA, GameObject treeRootB)
        {
            CollPairManager pManager = CollPairManager.privGetInstance();

            Debug.Assert(pManager != null);

            // Grab off the reserve
            CollPair pCollPair = (CollPair)pManager.baseAdd();

            Debug.Assert(pCollPair != null);

            pCollPair.Set(collpairName, treeRootA, treeRootB);

            return(pCollPair);
        }
        public static CollPair Find(CollPair.Name theName)
        {
            CollPairManager pManager = CollPairManager.privGetInstance();

            Debug.Assert(pManager != null);

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

            //find and return ref
            CollPair pNode = (CollPair)pManager.baseFind(pManager.poNodeCompare);

            Debug.Assert(pNode != null);
            return(pNode);
        }
        public static void Process()
        {
            CollPairManager pManager = CollPairManager.privGetInstance();

            Debug.Assert(pManager != null);

            // Get ref to Active list
            CollPair pCollPair = (CollPair)pManager.baseGetActive();

            while (pCollPair != null)
            {
                //set to active
                pManager.pActiveCollPair = pCollPair;
                // Do it
                pCollPair.Process();
                // Go to next
                pCollPair = (CollPair)pCollPair.pNext;
            }
        }