/////////////////////////////////////////////////////// // // Private Methods // /////////////////////////////////////////////////////// /////////////////////////////////////////////////////// // // Contracts // /////////////////////////////////////////////////////// protected override void FillReserve(int fillSize) { for (int i = fillSize; i > 0; i--) { CollisionPairEvaluator newNode = new CollisionPairEvaluator(); this.reservedList.PushFront(newNode); } }
/////////////////////////////////////////////////////// // // Methods // /////////////////////////////////////////////////////// /// <summary> /// Creates a new collison pair to be evaluated /// </summary> /// <param name="newName"></param> /// <returns></returns> public CollisionPairEvaluator Create(CollisionPairEvaluator.Name newName, int numOfChecks = 1) { Debug.Assert(newName != CollisionPairEvaluator.Name.UNINITIALIZED); CollisionPairEvaluator newCollison = this.BaseCreate() as CollisionPairEvaluator; newCollison.SetName(newName); newCollison.SetNumberOfChecks(numOfChecks); return(newCollison); }
/// <summary> /// Check all collisions in every collison pair /// </summary> public void Update() { CollisionPairEvaluator collisionPair = this.activeList.Head as CollisionPairEvaluator; // Loop through all collision pairs while (collisionPair != null) { collisionPair.Update(); collisionPair = collisionPair.next as CollisionPairEvaluator; } }
/// <summary> /// Recycles the given collison pair into the object pool /// </summary> /// <param name="oldName"></param> /// <returns></returns> public bool Recycle(CollisionPairEvaluator.Name oldName) { Debug.Assert(oldName != CollisionPairEvaluator.Name.UNINITIALIZED); CollisionPairEvaluator oldCollison = this.BaseRecycle(oldName) as CollisionPairEvaluator; if (oldCollison == null) { return(false); } oldCollison.Reset(); return(true); }