示例#1
0
        //----------------------------------------------------------------------
        // Override Abstract methods
        //----------------------------------------------------------------------
        override protected DLink DerivedCreateNode()
        {
            DLink pNode = new GameObjectRef();

            Debug.Assert(pNode != null);

            return(pNode);
        }
示例#2
0
        public GameObjectRef Attach(GameObject pGameObject)
        {
            GameObjectRef pNode = (GameObjectRef)BaseAdd();

            Debug.Assert(pNode != null);

            pNode.Set(pGameObject);
            return(pNode);
        }
示例#3
0
        //----------------------------------------------------------------------
        // Constructor / Destructor
        //----------------------------------------------------------------------
        public GameObjectManager(int reserveNum = 3, int reserveGrow = 1)
            : base(reserveNum, reserveGrow)
        {
            // make sure values are ressonable
            Debug.Assert(reserveNum > 0);
            Debug.Assert(reserveGrow > 0);

            this.pGameObjectCompare = new GameObjectRef();

            this.pNullGameObject = new NullGameObject();
            this.pGameObjectCompare.SetGameObject(this.pNullGameObject);
        }
示例#4
0
        public void Update()
        {
            GameObjectRef pNode = (GameObjectRef)BaseGetActive();

            while (pNode != null)
            {
                if (pNode.GetGameObject() != null)
                {
                    // Update the node
                    pNode.GetGameObject().Update();
                }
                pNode = (GameObjectRef)pNode.GetNext();
            }
        }
示例#5
0
        public GameObject Find(GameObject.Name name)
        {
            // Compare functions only compares two Nodes
            pGameObjectCompare.GetGameObject().SetName(name);

            GameObjectRef pNode = (GameObjectRef)BaseFind(pGameObjectCompare);

            if (pNode != null)
            {
                return(pNode.GetGameObject());
            }

            return(null);
        }
示例#6
0
        // Currently necessary for Detach() since GameObject.Name is not unique
        private Boolean HashCodeCompare(DLink pLinkA, DLink pLinkB)
        {
            Debug.Assert(pLinkA != null);
            Debug.Assert(pLinkB != null);

            GameObjectRef pDataA = (GameObjectRef)pLinkA;
            GameObjectRef pDataB = (GameObjectRef)pLinkB;

            Boolean status = false;

            if (pDataA.GetGameObject().GetHashCode() == pDataB.GetGameObject().GetHashCode())
            {
                status = true;
            }

            return(status);
        }
示例#7
0
        override protected Boolean DerivedCompare(DLink pLinkA, DLink pLinkB)
        {
            // This is used in baseFind()
            Debug.Assert(pLinkA != null);
            Debug.Assert(pLinkB != null);

            GameObjectRef pDataA = (GameObjectRef)pLinkA;
            GameObjectRef pDataB = (GameObjectRef)pLinkB;

            Boolean status = false;

            if (pDataA.GetGameObject().GetName() == pDataB.GetGameObject().GetName())
            {
                status = true;
            }

            return(status);
        }
示例#8
0
        protected override void DerivedDestroyNode(DLink pLink)
        {
            GameObjectRef pGameObjectRef = (GameObjectRef)pLink;

            pGameObjectRef.SetGameObject(null);
        }