ItemLabel optimization: textBlock is drawn using an offset relative to the position of the item instead of modifying textBlock.Rect each frame (causing the text position/wrapping to be recalculated each frame)
This commit is contained in:
@@ -231,6 +231,11 @@ namespace Barotrauma
|
|||||||
}
|
}
|
||||||
|
|
||||||
public override void Draw(SpriteBatch spriteBatch)
|
public override void Draw(SpriteBatch spriteBatch)
|
||||||
|
{
|
||||||
|
Draw(spriteBatch, Vector2.Zero);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void Draw(SpriteBatch spriteBatch, Vector2 offset)
|
||||||
{
|
{
|
||||||
if (!Visible) return;
|
if (!Visible) return;
|
||||||
|
|
||||||
@@ -238,6 +243,9 @@ namespace Barotrauma
|
|||||||
if (state == ComponentState.Hover) currColor = hoverColor;
|
if (state == ComponentState.Hover) currColor = hoverColor;
|
||||||
if (state == ComponentState.Selected) currColor = selectedColor;
|
if (state == ComponentState.Selected) currColor = selectedColor;
|
||||||
|
|
||||||
|
Rectangle drawRect = rect;
|
||||||
|
if (offset != Vector2.Zero) drawRect.Location += offset.ToPoint();
|
||||||
|
|
||||||
if (currColor.A * currColor.A > 0.0f) GUI.DrawRectangle(spriteBatch, rect, currColor * (currColor.A / 255.0f), true);
|
if (currColor.A * currColor.A > 0.0f) GUI.DrawRectangle(spriteBatch, rect, currColor * (currColor.A / 255.0f), true);
|
||||||
|
|
||||||
base.Draw(spriteBatch);
|
base.Draw(spriteBatch);
|
||||||
@@ -248,7 +256,7 @@ namespace Barotrauma
|
|||||||
{
|
{
|
||||||
spriteBatch.DrawString(Font,
|
spriteBatch.DrawString(Font,
|
||||||
text,
|
text,
|
||||||
new Vector2(rect.X, rect.Y) + textPos,
|
new Vector2(rect.X, rect.Y) + textPos + offset,
|
||||||
textColor * (textColor.A / 255.0f),
|
textColor * (textColor.A / 255.0f),
|
||||||
0.0f, origin, 1.0f,
|
0.0f, origin, 1.0f,
|
||||||
SpriteEffects.None, textDepth);
|
SpriteEffects.None, textDepth);
|
||||||
@@ -257,7 +265,6 @@ namespace Barotrauma
|
|||||||
DrawChildren(spriteBatch);
|
DrawChildren(spriteBatch);
|
||||||
|
|
||||||
if (OutlineColor.A * currColor.A > 0.0f) GUI.DrawRectangle(spriteBatch, rect, OutlineColor * (currColor.A / 255.0f), false);
|
if (OutlineColor.A * currColor.A > 0.0f) GUI.DrawRectangle(spriteBatch, rect, OutlineColor * (currColor.A / 255.0f), false);
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -62,8 +62,11 @@ namespace Barotrauma.Items.Components
|
|||||||
{
|
{
|
||||||
base.Draw(spriteBatch, editing);
|
base.Draw(spriteBatch, editing);
|
||||||
|
|
||||||
textBlock.Rect = new Rectangle((int)item.DrawPosition.X - item.Rect.Width/2, -(int)(item.DrawPosition.Y + item.Rect.Height/2), item.Rect.Width, item.Rect.Height);
|
var drawPos = new Vector2(
|
||||||
textBlock.Draw(spriteBatch);
|
item.DrawPosition.X - item.Rect.Width/2.0f,
|
||||||
|
-(item.DrawPosition.Y + item.Rect.Height/2.0f));
|
||||||
|
|
||||||
|
textBlock.Draw(spriteBatch, drawPos - textBlock.Rect.Location.ToVector2());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Reference in New Issue
Block a user