Skip to content
This repository was archived by the owner on Dec 30, 2024. It is now read-only.

Commit ec0873a

Browse files
committed
🚑️ Fix sprites using their cached textures' names
1 parent 8023b19 commit ec0873a

File tree

1 file changed

+15
-5
lines changed

1 file changed

+15
-5
lines changed

RogueLibsCore/Sprites/RogueSprite.cs

Lines changed: 15 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -74,7 +74,6 @@ public string Name
7474
if (defined && value is null) throw new ArgumentNullException(nameof(value));
7575
Undefine();
7676
name = value;
77-
if (Texture != null) Texture.name = value;
7877
if (Sprite != null) Sprite.name = value;
7978
if (defined) Define();
8079
}
@@ -192,15 +191,26 @@ internal static void DefinePrepared(tk2dSpriteCollectionData collection, SpriteS
192191

193192
private static readonly Dictionary<byte[], Texture2D> loadedTextures = new Dictionary<byte[], Texture2D>();
194193

195-
internal RogueSprite(string spriteName, SpriteScope spriteScope, byte[] rawData, Rect? spriteRegion, float ppu = 64f)
194+
/// <summary>
195+
/// <para>Loads a texture from the specified <paramref name="rawData"/>, and if one wasn't created earlier, sets its name to <paramref name="textureName"/>.<br/>Can be used before any sprite initializations to define the texture's name (the first sprite's name is used by default).</para>
196+
/// </summary>
197+
/// <param name="rawData">The byte array containing a raw PNG- or JPEG-encoded image.</param>
198+
/// <param name="textureName">The texture name to set, if the texture hasn't been loaded before.</param>
199+
/// <returns>The loaded texture.</returns>
200+
public static Texture2D LoadTexture(byte[] rawData, string textureName)
196201
{
197202
if (!loadedTextures.TryGetValue(rawData, out Texture2D? tex))
198203
{
199-
tex = new Texture2D(13, 6) { name = spriteName, filterMode = FilterMode.Point };
204+
tex = new Texture2D(13, 6) { name = textureName, filterMode = FilterMode.Point };
200205
tex.LoadImage(rawData);
201206
loadedTextures.Add(rawData, tex);
202207
}
203-
texture = tex;
208+
return tex;
209+
}
210+
211+
internal RogueSprite(string spriteName, SpriteScope spriteScope, byte[] rawData, Rect? spriteRegion, float ppu = 64f)
212+
{
213+
texture = LoadTexture(rawData, spriteName);
204214
name = spriteName;
205215
scope = spriteScope;
206216
pixelsPerUnit = ppu;
@@ -257,6 +267,7 @@ internal void DefineInternal(tk2dSpriteCollectionData? coll, SpriteScope targetS
257267
if (coll != null)
258268
{
259269
tk2dSpriteDefinition def = CreateDefinition(texture!, region, 64f / PixelsPerUnit / coll.invOrthoSize / coll.halfTargetHeight);
270+
def.name = name;
260271
AddDefinition(coll, def);
261272
def.__RogueLibsCustom = this;
262273
definitions!.Add(new CustomTk2dDefinition(coll, def, targetScope));
@@ -390,7 +401,6 @@ public static tk2dSpriteDefinition CreateDefinition(Texture2D texture, Rect? uvR
390401
materialInst = mat,
391402
flipped = tk2dSpriteDefinition.FlipMode.None,
392403
extractRegion = false,
393-
name = texture.name,
394404
colliderType = tk2dSpriteDefinition.ColliderType.Unset,
395405
positions = new Vector3[]
396406
{

0 commit comments

Comments
 (0)