Hello @Thodos,
thank you for reaching out to us. I would suggest to have a look at our message system manual.
There are no dedicated messages associated with render data changes. If you want to track render data changes in a document, you will have to cache its state. With the help of a MessageData::CoreMessage
method (or the GeDialog
method of the same name) you can then listen for c4d.EVMSG_CHANGE
and then compare the current state of the render data against your cache. You can of course also use the dirty counters in case that information is enough for you, i.e., when you only want to know that the render data are data container dirty, but do not care what changed in the data container.
Document loading and unloading events are conveyed by the node message c4d.MSG_DOCUMENTINFO. Due to being a node message, you will need a NodeData::Message
method to receive it, i.e., you need to implement some kind of (document bound)[1] node. For anything else, you will have to use c4d.EVMSG_CHANGE
too.
Cheers,
Ferdinand
[1] PreferenceData
is technically a node, but it will not be included in the MSG_DOCUMENTINFO
stream.