Beispiel #1
0
        /// <summary>
        /// Remove a DrawableHitObject from this Playfield.
        /// </summary>
        /// <param name="h">The DrawableHitObject to remove.</param>
        public virtual bool Remove(DrawableHitObject h)
        {
            if (!HitObjectContainer.Remove(h))
            {
                return(false);
            }

            OnHitObjectRemoved(h.HitObject);
            return(false);
        }
Beispiel #2
0
        public virtual bool Remove(HitObject hitObject)
        {
            if (lifetimeEntryMap.Remove(hitObject, out var entry))
            {
                HitObjectContainer.Remove(entry);
                OnHitObjectRemoved(hitObject);
                return(true);
            }

            return(nestedPlayfields.Any(p => p.Remove(hitObject)));
        }
Beispiel #3
0
        /// <summary>
        /// Removes a <see cref="HitObjectLifetimeEntry"/> for a pooled <see cref="HitObject"/> from this <see cref="Playfield"/>.
        /// </summary>
        /// <param name="hitObject"></param>
        /// <returns>Whether the <see cref="HitObject"/> was successfully removed.</returns>
        public virtual bool Remove(HitObject hitObject)
        {
            if (lifetimeEntryMap.Remove(hitObject, out var entry))
            {
                HitObjectContainer.Remove(entry);
                OnHitObjectRemoved(hitObject);
                return(true);
            }

            bool removedFromNested = false;

            if (nestedPlayfields.IsValueCreated)
            {
                removedFromNested = nestedPlayfields.Value.Any(p => p.Remove(hitObject));
            }

            return(removedFromNested);
        }
Beispiel #4
0
 /// <summary>
 /// Remove a DrawableHitObject from this Playfield.
 /// </summary>
 /// <param name="h">The DrawableHitObject to remove.</param>
 public virtual bool Remove(DrawableHitObject h) => HitObjectContainer.Remove(h);