I noticed that the Shader Effector always returns true for
IsDirty(DIRTYFLAGS::DATA). Even if it doesn't do anything.
This somehow destroys caching in our plugins that support Effectors.
Test it by simply creating a scene with just a Shader Effector, attaching a Python Tag to the effector, and putting in this code:
import c4d def main(): effectorOp = doc.SearchObject("Shader") dirtyMatrix = effectorOp.IsDirty(c4d.DIRTYFLAGS_MATRIX) dirtyData = effectorOp.IsDirty(c4d.DIRTYFLAGS_DATA) dirtyCache = effectorOp.IsDirty(c4d.DIRTYFLAGS_CACHE) dirtyAll = effectorOp.IsDirty(c4d.DIRTYFLAGS_ALL) print(str(effectorOp)) print("dirtyMatrix: " + str(dirtyMatrix) + ", " + "dirtyData: " + str(dirtyData) + ", " + "dirtyCache: " + str(dirtyCache) + ", " + "dirtyAll: " + str(dirtyAll))
Any time the tag is executed (be it by playing back the animation, changing anything in the scene, or just by wildly waving the mouse around),
Is there any way to know if the Effector is actually dirty?
Thanks & greetings,