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
|
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];
|
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)
|
void SpriteAtlas::SetSprite(int32 index, const Sprite& value)
|
||||||
{
|
{
|
||||||
CHECK(index >= 0 && index < Sprites.Count());
|
CHECK(index >= 0 && index < Sprites.Count());
|
||||||
|
|||||||
@@ -70,7 +70,13 @@ namespace FlaxEngine
|
|||||||
[NoSerialize]
|
[NoSerialize]
|
||||||
public Float2 Size
|
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
|
set
|
||||||
{
|
{
|
||||||
var area = Area;
|
var area = Area;
|
||||||
@@ -89,7 +95,8 @@ namespace FlaxEngine
|
|||||||
{
|
{
|
||||||
if (Atlas == null)
|
if (Atlas == null)
|
||||||
throw new InvalidOperationException("Cannot use invalid sprite.");
|
throw new InvalidOperationException("Cannot use invalid sprite.");
|
||||||
return Atlas.GetSprite(Index).Area;
|
Atlas.GetSpriteArea(Index, out var area);
|
||||||
|
return area;
|
||||||
}
|
}
|
||||||
set
|
set
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -120,6 +120,14 @@ public:
|
|||||||
/// <returns>The sprite data.</returns>
|
/// <returns>The sprite data.</returns>
|
||||||
API_FUNCTION() Sprite GetSprite(int32 index) const;
|
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>
|
/// <summary>
|
||||||
/// Sets the sprite data.
|
/// Sets the sprite data.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|||||||
Reference in New Issue
Block a user