THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED
On 07/06/2009 at 13:45, xxxxxxxx wrote:
Cinema 4D Version: R10-R11
Platform: Windows ; Mac OSX ;
Language(s) : C++ ;
How would one go about having changes on plugin tags attached to input objects of a plugin generator object cause the generator to GetVirtualObjects() while also checking the GetAndCheckHierarchyClone() in GetVirtualObjects()?
I've tried MSG_DESCRIPTION_CHECKUPDATE in Tag::Message() and SetDirty() for the generator. Nothing. op->Touch() for the input object with the tag does nothing also.
Would I be forced to use a button on the generator object to 'Update' after making changes to the tags?
On 07/06/2009 at 14:40, xxxxxxxx wrote:
No, if you use BaseObject::NewDependenceList and BaseObject::AddDependence you can easily react to changes on any objects you want in the document. Just add all your children to the dependency list and check the list afterwards.
Check this thread, it told me everything I needed to know:
On 07/06/2009 at 15:15, xxxxxxxx wrote:
GetAndCheckHierarchyClone() already does this for objects under the generator.
I found the problem was that I was skipping the tag instead of going with it in a tag loop (a missing '!' - eyes going). Now changes to the tag automatically update the generator. Yay!
On 24/12/2010 at 19:08, xxxxxxxx wrote:
It has been a while but thought that I should clarify the problem since it seems to be back (in R12).
The tag ISN'T modifying the object on which it resides. It is modifying it through my generator object. So, a hierarchy like this:
->Object : MyTag.1 MyTag.2
MyTag.1 and .2 do nothing to 'Object'. They are providing separate parameters for polygon selections on Object that are picked up and operated upon by MyGenerator.GetVirtualObjects().
When parameters are changed on MyTag.1, for instance, MyGenerator doesn't notice and doesn't update the view by calling GetVirtualObjects() and rebuilding the output cache. I've tried tag->SetDirty(DIRTYFLAGS_DATA), tag->Message(MSG_CHANGE), tag->GetObject()->Message(MSG_CHANGE) in various places on my plugin tag to no avail. Maybe I need to get MyGenerator object in the plugin tag and somehow force it to rebuild the cache (maybe MyGenerator->SetDirty(DIRTYFLAGS_CACHE))?
On 25/12/2010 at 07:31, xxxxxxxx wrote:
So, getting my generator object under which the tag resides on another object and disabling+enabling the generator's deform mode gets the tag changes updated in the generator (and in the editor view). Nothing else seems to work. Not even MyGenerator->SetDirty(DIRTYFLAGS_CACHE) which should force a cache rebuild!