@@ -13,6 +13,7 @@ public static class T2DHandler
1313 public static string T2DDumpPath { get { return Path . Combine ( SpriteDumper . DumpPath , "T2D" ) ; } }
1414
1515 private static readonly Dictionary < string , Sprite > LoadedT2DSprites = new ( ) ;
16+ private static readonly Dictionary < string , HashSet < string > > SpriteAtlasMap = new ( ) ;
1617
1718 [ HarmonyPostfix ]
1819 [ HarmonyPatch ( typeof ( SpriteRenderer ) , nameof ( SpriteRenderer . sprite ) , MethodType . Setter ) ]
@@ -28,6 +29,21 @@ public static void SetSpritePostfix(SpriteRenderer __instance, Sprite value)
2829 HandleLoad ( __instance , value ) ;
2930 }
3031
32+ public static void InvalidateCache ( string spriteName )
33+ {
34+ if ( LoadedT2DSprites . Remove ( spriteName ) )
35+ Plugin . Logger . LogDebug ( $ "Invalidated T2D sprite cache for { spriteName } ") ;
36+ if ( SpriteAtlasMap . ContainsKey ( spriteName ) )
37+ {
38+ foreach ( var sprName in SpriteAtlasMap [ spriteName ] )
39+ {
40+ if ( LoadedT2DSprites . Remove ( sprName ) )
41+ Plugin . Logger . LogDebug ( $ "Invalidated T2D sprite cache for { sprName } due to atlas change { spriteName } ") ;
42+ }
43+ SpriteAtlasMap . Remove ( spriteName ) ;
44+ }
45+ }
46+
3147 private static void HandleLoad ( SpriteRenderer spriteRenderer , Sprite sprite )
3248 {
3349 if ( LoadedT2DSprites . ContainsKey ( sprite . name ) )
@@ -47,6 +63,10 @@ private static void HandleLoad(SpriteRenderer spriteRenderer, Sprite sprite)
4763 spriteRenderer . sprite = newSprite ;
4864 if ( Plugin . Config . LogSpriteLoading )
4965 Plugin . Logger . LogInfo ( $ "Loaded T2D sprite { sprite . name } (Atlas texture { sprite . texture . name } )") ;
66+
67+ if ( ! SpriteAtlasMap . ContainsKey ( sprite . texture . name ) )
68+ SpriteAtlasMap [ sprite . texture . name ] = new HashSet < string > ( ) ;
69+ SpriteAtlasMap [ sprite . texture . name ] . Add ( sprite . name ) ;
5070 }
5171 else
5272 {
0 commit comments