public DrawableHoldNote(HoldNote hitObject, ManiaAction action) : base(hitObject, action) { RelativeSizeAxes = Axes.Both; Height = (float)HitObject.Duration; AddRange(new Drawable[] { // The hit object itself cannot be used for various elements because the tail overshoots it // So a specialized container that is updated to contain the tail height is used fullHeightContainer = new Container { RelativeSizeAxes = Axes.X, Child = glowPiece = new GlowPiece() }, bodyPiece = new BodyPiece { Anchor = Anchor.TopCentre, Origin = Anchor.TopCentre, RelativeSizeAxes = Axes.X, }, tickContainer = new Container <DrawableHoldNoteTick> { RelativeSizeAxes = Axes.Both, RelativeChildOffset = new Vector2(0, (float)HitObject.StartTime), RelativeChildSize = new Vector2(1, (float)HitObject.Duration) }, head = new DrawableHeadNote(this, action) { Anchor = Anchor.TopCentre, Origin = Anchor.TopCentre }, tail = new DrawableTailNote(this, action) { Anchor = Anchor.BottomCentre, Origin = Anchor.TopCentre } }); foreach (var tick in HitObject.NestedHitObjects.OfType <HoldNoteTick>()) { var drawableTick = new DrawableHoldNoteTick(tick) { HoldStartTime = () => holdStartTime }; tickContainer.Add(drawableTick); AddNested(drawableTick); } AddNested(head); AddNested(tail); }
public DrawableHoldNote(HoldNote hitObject, Bindable <Key> key = null) : base(hitObject, key) { RelativeSizeAxes = Axes.Both; Height = (float)HitObject.Duration; Add(new Drawable[] { // For now the body piece covers the entire height of the container // whereas possibly in the future we don't want to extend under the head/tail. // This will be fixed when new designs are given or the current design is finalized. bodyPiece = new BodyPiece { Anchor = Anchor.TopCentre, Origin = Anchor.TopCentre, }, tickContainer = new Container <DrawableHoldNoteTick> { RelativeSizeAxes = Axes.Both, RelativeChildSize = new Vector2(1, (float)HitObject.Duration) }, head = new DrawableHeadNote(this, key) { Anchor = Anchor.TopCentre, Origin = Anchor.TopCentre }, tail = new DrawableTailNote(this, key) { Anchor = Anchor.BottomCentre, Origin = Anchor.TopCentre } }); foreach (var tick in HitObject.Ticks) { var drawableTick = new DrawableHoldNoteTick(tick) { HoldStartTime = () => holdStartTime }; // To make the ticks relative to ourselves we need to offset them backwards drawableTick.Y -= (float)HitObject.StartTime; tickContainer.Add(drawableTick); AddNested(drawableTick); } AddNested(head); AddNested(tail); }
public DrawableHoldNote(HoldNote hitObject, ManiaAction action) : base(hitObject, action) { RelativeSizeAxes = Axes.Both; Height = (float)HitObject.Duration; AddRange(new Drawable[] { // For now the body piece covers the entire height of the container // whereas possibly in the future we don't want to extend under the head/tail. // This will be fixed when new designs are given or the current design is finalized. bodyPiece = new BodyPiece { Anchor = Anchor.TopCentre, Origin = Anchor.TopCentre, }, tickContainer = new Container <DrawableHoldNoteTick> { RelativeSizeAxes = Axes.Both, RelativeChildOffset = new Vector2(0, (float)HitObject.StartTime), RelativeChildSize = new Vector2(1, (float)HitObject.Duration) }, head = new DrawableHeadNote(this, action) { Anchor = Anchor.TopCentre, Origin = Anchor.TopCentre }, tail = new DrawableTailNote(this, action) { Anchor = Anchor.BottomCentre, Origin = Anchor.TopCentre } }); foreach (var tick in HitObject.Ticks) { var drawableTick = new DrawableHoldNoteTick(tick) { HoldStartTime = () => holdStartTime }; tickContainer.Add(drawableTick); AddNested(drawableTick); } AddNested(head); AddNested(tail); }