Storing data between different plug-ins

Say I have a plug-in (A) that does something simple like just inverting the face normals and stores them as a vector (or some other data structure)

Is there a way one can use this later on in Plug-in (B) run later that uses those pre-calculated values to do some fancy shading operations?

Essentially I am not sure how to store the data so plug-in (B) can use what plug-in (A) calculated.

I know in other programs there are notions of ‘nodes’ vs ‘commands’ and you can plug a nodes output into another’s to get this value, but not sure if Rhino has this DAG notion underneath?

Would “user data” do it for you? Plugins can store their own data in the 3dm document.

Have a read of this thread if UserData appeals:

There is a way to share plug-in user data between other plug-ins. Just keep in mind that one and only one plug-in is responsible for reading and writing the user data to 3DM files.

You will need to create a shared assembly that is referenced by all plug-ins that need access to the data.

I can work you up a sample if needed…

I don’t really ever want to write the data, I mostly want to have it around to do calculations in steps
so a user can constantly be modifying a mesh, and it caculates the new data

then when they want to render it … it is there for plugin 2

I did not see an example for an shared assembly did I miss it?

See if this sample is helpful (or not)…

https://github.com/dalefugier/SampleCsSharedData