/// <summary> /// A container for keeping track of DrawableHitObjects. /// </summary> /// <param name="customWidth">Whether we want our internal coordinate system to be scaled to a specified width.</param> protected Playfield(float?customWidth = null) { AlwaysReceiveInput = true; // Default height since we force relative size axes Size = Vector2.One; AddInternal(ScaledContent = new ScaledContainer { CustomWidth = customWidth, RelativeSizeAxes = Axes.Both, Children = new[] { content = new Container { AlwaysReceiveInput = true, RelativeSizeAxes = Axes.Both, } } }); HitObjects = new HitObjectContainer <DrawableHitObject <TObject, TJudgement> > { RelativeSizeAxes = Axes.Both, }; }
private void load() { HitObjects = CreateHitObjectContainer(); HitObjects.RelativeSizeAxes = Axes.Both; Add(HitObjects); }
/// <summary> /// Adds a <see cref="HitObjectLifetimeEntry"/> for a pooled <see cref="HitObject"/> to this <see cref="Playfield"/>. /// </summary> /// <param name="hitObject"></param> public virtual void Add(HitObject hitObject) { var entry = CreateLifetimeEntry(hitObject); lifetimeEntryMap[entry.HitObject] = entry; HitObjectContainer.Add(entry); OnHitObjectAdded(entry.HitObject); }
/// <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); }
public virtual void Add(DrawableHitObject h) { if (!h.IsInitialized) { onNewDrawableHitObject(h); } HitObjectContainer.Add(h); OnHitObjectAdded(h.HitObject); }
public GameplaySampleTriggerSource(HitObjectContainer hitObjectContainer) { this.hitObjectContainer = hitObjectContainer; InternalChild = hitSounds = new Container <SkinnableSound> { Name = "concurrent sample pool", ChildrenEnumerable = Enumerable.Range(0, max_concurrent_hitsounds).Select(_ => new PausableSkinnableSound()) }; }
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))); }
/// <summary> /// Adds a DrawableHitObject to this Playfield. /// </summary> /// <param name="h">The DrawableHitObject to add.</param> public virtual void Add(DrawableHitObject h) { if (h.IsInitialized) { throw new InvalidOperationException($"{nameof(Add)} doesn't support {nameof(DrawableHitObject)} reuse. Use pooling instead."); } onNewDrawableHitObject(h); HitObjectContainer.Add(h); OnHitObjectAdded(h.HitObject); }
/// <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); }
/// <summary> /// A container for keeping track of DrawableHitObjects. /// </summary> /// <param name="customWidth">Whether we want our internal coordinate system to be scaled to a specified width.</param> protected Playfield(float?customWidth = null) { // Default height since we force relative size axes Size = Vector2.One; AddInternal(ScaledContent = new ScaledContainer { CustomWidth = customWidth, RelativeSizeAxes = Axes.Both, Children = new[] { content = new Container { RelativeSizeAxes = Axes.Both, } } }); HitObjects = new HitObjectContainer { RelativeSizeAxes = Axes.Both, }; }
/// <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);
/// <summary> /// Adds a DrawableHitObject to this Playfield. /// </summary> /// <param name="h">The DrawableHitObject to add.</param> public virtual void Add(DrawableHitObject h) => HitObjectContainer.Add(h);
/// <summary> /// Adds a DrawableHitObject to this Playfield. /// </summary> /// <param name="h">The DrawableHitObject to add.</param> public virtual void Add(DrawableHitObject h) { HitObjectContainer.Add(h); OnHitObjectAdded(h.HitObject); }