/////////////////////////////////////////////////////// // // Methods // /////////////////////////////////////////////////////// /// <summary> /// Attaches an already created GameObject to the manager /// </summary> /// <param name="newGameObject"></param> public void Attach(GameObject newGameObject) { GameObjectHolder newGoHolder = this.BaseCreate(newGameObject.Id) as GameObjectHolder; newGoHolder.SetGameObject(newGameObject); newGameObject.Start(); }
/// <summary> /// Updates every single GameObject in the loop /// </summary> public void Update() { GameObjectHolder itr = this.activeList.Head as GameObjectHolder; while (itr != null) { // Update a GameObject bool keepGameObject = itr.Update(); if (keepGameObject == false) { // Begin removing this object GameObjectHolder oldHolder = itr; itr = itr.next as GameObjectHolder; this.Recycle(oldHolder.GameObjectRef); oldHolder = null; } else { // Keep updating the object itr.UpdateInternalSpriteData(); // Next node itr = itr.next as GameObjectHolder; } } }
/////////////////////////////////////////////////////// // // Private Methods // /////////////////////////////////////////////////////// /////////////////////////////////////////////////////// // // Contracts // /////////////////////////////////////////////////////// protected override void FillReserve(int fillSize) { for (int i = fillSize; i > 0; i--) { GameObjectHolder newNode = new GameObjectHolder(); this.reservedList.PushFront(newNode); } }
/// <summary> /// Finds a GameObject with a name and ID and returns it /// </summary> /// <param name="name"></param> /// <param name="id"></param> /// <returns></returns> public GameObject Find(GameObject.Name name, uint id = 0u) { GameObjectHolder goHolder = this.BaseFind(name, id, this.activeList) as GameObjectHolder; if (goHolder != null) { return(goHolder.GameObjectRef); } return(null); }
/// <summary> /// Removes the given GameObject to be used again from the pool /// </summary> /// <param name="oldGameObject"></param> /// <returns></returns> public bool Recycle(GameObject oldGameObject) { GameObjectHolder oldGoHolder = this.BaseRecycle(oldGameObject.ObjectName, oldGameObject.Id) as GameObjectHolder; if (oldGoHolder == null) { return(false); } oldGoHolder.Reset(); return(true); }
/// <summary> /// Removes the given GameObject to be used again from the pool /// </summary> /// <param name="name"></param> /// <param name="id"></param> /// <returns></returns> public bool Recycle(GameObject.Name name, uint id = 0u) { GameObjectHolder oldGoHolder = this.BaseRecycle(name, id) as GameObjectHolder; if (oldGoHolder == null) { return(false); } oldGoHolder.Reset(); return(true); }