Beispiel #1
0
        /// <summary>
        ///		Adds a new subscriber to this Collision Subscription
        /// </summary>
        /// <param name="newSubscriber"></param>
        /// <returns></returns>
        public CollisonSubscriberHolder Register(ICollisionSubscriber newSubscriber)
        {
            CollisonSubscriberHolder newHolder = new CollisonSubscriberHolder(newSubscriber);

            this.listOfSubscribers.PushFront(newHolder);
            return(newHolder);
        }
Beispiel #2
0
        /// <summary>
        ///		Remove a subscriber from this subscription
        /// </summary>
        /// <param name="oldSubscriber"></param>
        /// <returns></returns>
        public bool Unregister(ICollisionSubscriber oldSubscriber)
        {
            CollisonSubscriberHolder oldHolder = this.Search(oldSubscriber);

            Debug.Assert(oldHolder != null);
            oldHolder.Reset();
            this.listOfSubscribers.Pop(oldHolder);
            oldHolder = null;

            return(true);
        }
Beispiel #3
0
        //
        // Private Methods
        //

        /// <summary>
        ///		Return a CollisonSubscriberHolder given an ICollisionScriber
        /// </summary>
        /// <param name="queriedSubscriber"></param>
        /// <returns></returns>
        private CollisonSubscriberHolder Search(ICollisionSubscriber queriedSubscriber)
        {
            CollisonSubscriberHolder itr = this.listOfSubscribers.Head as CollisonSubscriberHolder;

            while (itr != null)
            {
                if (ReferenceEquals(itr.Subscriber, queriedSubscriber))
                {
                    break;                      // Found it
                }

                itr = itr.next as CollisonSubscriberHolder;
            }

            return(itr);
        }
 /// <summary>
 ///		Removes an observer from this collison pair
 /// </summary>
 /// <param name="oldSubscriber"></param>
 /// <returns></returns>
 public bool Unsubscribe(ICollisionSubscriber oldSubscriber)
 {
     return(this.subscription.Unregister(oldSubscriber));
 }
 /// <summary>
 ///		Adds a new observer to this collison pair
 /// </summary>
 /// <param name="newSubscriber"></param>
 public void Subscribe(ICollisionSubscriber newSubscriber)
 {
     this.subscription.Register(newSubscriber);
 }
 /// <summary>
 ///		Removes the subscriber from the subscription
 /// </summary>
 public override void Reset()
 {
     this.subscriber = null;
 }
        //
        // Constructor
        //

        public CollisonSubscriberHolder(ICollisionSubscriber newSubscriber)
            : base()
        {
            this.subscriber = newSubscriber;
        }