Optimize memory allocation when using Sprite size during 2D rendering
This commit is contained in:
@@ -47,10 +47,16 @@ int32 SpriteAtlas::GetSpritesCount() const
|
||||
|
||||
Sprite SpriteAtlas::GetSprite(int32 index) const
|
||||
{
|
||||
CHECK_RETURN(index >= 0 && index < Sprites.Count(), Sprite())
|
||||
CHECK_RETURN(index >= 0 && index < Sprites.Count(), Sprite());
|
||||
return Sprites.Get()[index];
|
||||
}
|
||||
|
||||
void SpriteAtlas::GetSpriteArea(int32 index, Rectangle& result) const
|
||||
{
|
||||
CHECK(index >= 0 && index < Sprites.Count());
|
||||
result = Sprites.Get()[index].Area;
|
||||
}
|
||||
|
||||
void SpriteAtlas::SetSprite(int32 index, const Sprite& value)
|
||||
{
|
||||
CHECK(index >= 0 && index < Sprites.Count());
|
||||
|
||||
@@ -70,7 +70,13 @@ namespace FlaxEngine
|
||||
[NoSerialize]
|
||||
public Float2 Size
|
||||
{
|
||||
get => Area.Size * Atlas.Size;
|
||||
get
|
||||
{
|
||||
if (Atlas == null)
|
||||
throw new InvalidOperationException("Cannot use invalid sprite.");
|
||||
Atlas.GetSpriteArea(Index, out var area);
|
||||
return area.Size * Atlas.Size;
|
||||
}
|
||||
set
|
||||
{
|
||||
var area = Area;
|
||||
@@ -89,7 +95,8 @@ namespace FlaxEngine
|
||||
{
|
||||
if (Atlas == null)
|
||||
throw new InvalidOperationException("Cannot use invalid sprite.");
|
||||
return Atlas.GetSprite(Index).Area;
|
||||
Atlas.GetSpriteArea(Index, out var area);
|
||||
return area;
|
||||
}
|
||||
set
|
||||
{
|
||||
|
||||
@@ -120,6 +120,14 @@ public:
|
||||
/// <returns>The sprite data.</returns>
|
||||
API_FUNCTION() Sprite GetSprite(int32 index) const;
|
||||
|
||||
/// <summary>
|
||||
/// Gets the sprite area.
|
||||
/// </summary>
|
||||
/// <param name="index">The index.</param>
|
||||
/// <param name="result">The output sprite area.</param>
|
||||
/// <returns>The sprite data.</returns>
|
||||
API_FUNCTION() void GetSpriteArea(int32 index, API_PARAM(Out) Rectangle& result) const;
|
||||
|
||||
/// <summary>
|
||||
/// Sets the sprite data.
|
||||
/// </summary>
|
||||
|
||||
Reference in New Issue
Block a user