diff --git a/CHANGELOG.md b/CHANGELOG.md
index 2cf498a..d055aff 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -29,6 +29,7 @@ Additions
- Added the ability to display tooltips using the auto-nav style even when using the mouse
Improvements
+- **Include the SpriteBatchContext in OnDrawn, OnElementDrawn and OnSelectedElementDrawn**
- Allow scrolling panels to set height based on children by setting TreatSizeAsMaximum
Fixes
diff --git a/MLEM.Ui/Elements/Element.cs b/MLEM.Ui/Elements/Element.cs
index 45eb7cf..08d0245 100644
--- a/MLEM.Ui/Elements/Element.cs
+++ b/MLEM.Ui/Elements/Element.cs
@@ -1148,9 +1148,9 @@ namespace MLEM.Ui.Elements {
/// The alpha to draw this element and its children with
/// The sprite batch context to use for drawing
public virtual void Draw(GameTime time, SpriteBatch batch, float alpha, SpriteBatchContext context) {
- this.System.InvokeOnElementDrawn(this, time, batch, alpha);
+ this.System.InvokeOnElementDrawn(this, time, batch, alpha, context);
if (this.IsSelected)
- this.System.InvokeOnSelectedElementDrawn(this, time, batch, alpha);
+ this.System.InvokeOnSelectedElementDrawn(this, time, batch, alpha, context);
foreach (var child in this.GetRelevantChildren()) {
if (!child.IsHidden) {
@@ -1387,7 +1387,7 @@ namespace MLEM.Ui.Elements {
/// The game's time
/// The sprite batch used for drawing
/// The alpha this element is drawn with
- public delegate void DrawCallback(Element element, GameTime time, SpriteBatch batch, float alpha);
+ public delegate void DrawCallback(Element element, GameTime time, SpriteBatch batch, float alpha, SpriteBatchContext context);
///
/// A generic delegate used inside of
diff --git a/MLEM.Ui/UiSystem.cs b/MLEM.Ui/UiSystem.cs
index 2e80d72..6f4b791 100644
--- a/MLEM.Ui/UiSystem.cs
+++ b/MLEM.Ui/UiSystem.cs
@@ -215,7 +215,7 @@ namespace MLEM.Ui {
this.Controls = new UiControls(this, inputHandler);
this.style = style;
- this.OnElementDrawn += (e, time, batch, alpha) => e.OnDrawn?.Invoke(e, time, batch, alpha);
+ this.OnElementDrawn += (e, time, batch, alpha, context) => e.OnDrawn?.Invoke(e, time, batch, alpha, context);
this.OnElementUpdated += (e, time) => e.OnUpdated?.Invoke(e, time);
this.OnElementPressed += e => e.OnPressed?.Invoke(e);
this.OnElementSecondaryPressed += e => e.OnSecondaryPressed?.Invoke(e);
@@ -230,7 +230,7 @@ namespace MLEM.Ui {
this.OnMousedElementChanged += e => this.ApplyToAll(t => t.OnMousedElementChanged?.Invoke(t, e));
this.OnTouchedElementChanged += e => this.ApplyToAll(t => t.OnTouchedElementChanged?.Invoke(t, e));
this.OnSelectedElementChanged += e => this.ApplyToAll(t => t.OnSelectedElementChanged?.Invoke(t, e));
- this.OnSelectedElementDrawn += (element, time, batch, alpha) => {
+ this.OnSelectedElementDrawn += (element, time, batch, alpha, context) => {
if (this.Controls.IsAutoNavMode && element.SelectionIndicator.HasValue())
batch.Draw(element.SelectionIndicator, element.DisplayArea, Color.White * alpha, element.Scale / 2);
};
@@ -427,12 +427,12 @@ namespace MLEM.Ui {
}
}
- internal void InvokeOnElementDrawn(Element element, GameTime time, SpriteBatch batch, float alpha) {
- this.OnElementDrawn?.Invoke(element, time, batch, alpha);
+ internal void InvokeOnElementDrawn(Element element, GameTime time, SpriteBatch batch, float alpha, SpriteBatchContext context) {
+ this.OnElementDrawn?.Invoke(element, time, batch, alpha, context);
}
- internal void InvokeOnSelectedElementDrawn(Element element, GameTime time, SpriteBatch batch, float alpha) {
- this.OnSelectedElementDrawn?.Invoke(element, time, batch, alpha);
+ internal void InvokeOnSelectedElementDrawn(Element element, GameTime time, SpriteBatch batch, float alpha, SpriteBatchContext context) {
+ this.OnSelectedElementDrawn?.Invoke(element, time, batch, alpha, context);
}
internal void InvokeOnElementUpdated(Element element, GameTime time) {