I have some compatibility issue with FOSSIL plugin and MV imported animation with
NRP_DynamicAnimationMV2MZ and
NRP_DynamicAnimationMZ.
When they are used with FOSSIL base I get error 'Cannot find property of 'concat' of undefined'.
Without FOSSIL everything works fine.
odd, I'll look at it. One of the things I've been trying to do is get the animation.frames.length shortcut used by MV plugins to assess the duration of an animation to work on MZ-native animations (which don't have any frames), so it's possible that this has messed up something somewhere. I've been futzing with that recently - do you have the latest version of FOSSIL?
EDIT: figured out the issue. The plugin creates its own $dataAnimationsMV object to store MV animations. I've altered my code to include a fallback to the original behavior so this (and other similar plugins) should work. Fixed in 1.0.03
What's the impact on the performance of the plugin that's being fossilized?
In principle shouldn't be noticeable; you do end up having more code executing but I don't think there's anything that's slow enough to matter.
For instance, if you create a window, normally the call is something like MyCustomWindow->WindowSelectable->WindowScrollable->Window_Base->Window. Fossil will end up checking that a rect is being passed in to define the size between each step, which is a little bit of extra overhead, but checking if it's being passed a rectangle is pretty quick.
There are definitely places where you could make it more complex and more efficient, but to a large extent Fossil is not much different than existing accepted inefficiencies using plugins instead of altering core scripts. (For instance, it's always going to be a little faster to just alter a function by changing the original file instead of aliasing it and injecting code, but ease of use is really important). In theory I could avoid a few evals at startup by turning plugin-specific fixes into dataurls, (or into actual on-disk files), but the current method hasn't shown any issues so far (aside from making it a little harder to set breakpoints before running code), and I believe eval is going to be faster than accessing the hard disk or modifying the DOM.