I think I can work with this, but I’m not sure why you tried to replicate the Game_Picture/Sprite_Picture API, i.e. the new
get _pictureName() { ... }
set _pictureName(value) {}
picture() {}
that you added to Sprite_UIPicture. These aren’t useful as extension points since they aren’t used internally by your plugin at all.
You also exposed the classes on window directly, which increases the risk of collisions with other plugins. (Letting third-party plugin devs replace classes entirely in not very helpful, as it makes for very brittle integrations that risk crashes as plugins are updated.)
I’ll probably postpone this for the time being, since you also started to mix in other features. I don’t think that’s the sort of clean single-purpose plugin I was looking for.