THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED
On 18/05/2006 at 11:45, xxxxxxxx wrote:
Cinema 4D Version: 9.102
Platform: Windows ; Mac ; Mac OSX ;
Language(s) : C++ ;
I'm having difficulty in 'mirroring' a process. Here's how it works:
There is a plugin object which has dynamic Real sliders displayed in the Attribute Manager. Each slider has an animation BaseTrack associated with it. When the user interactively changes the slider value, these things occur (in order) :
1. MSG_DESCRIPTION_INITUNDO: Add an UNDO_CHANGE for the plugin object as well as a root PolygonObject.
2. SetDParameter() : Act on the slider value by passing it to be processed and update with respect to the change.
3. MSG_DESCRIPTION_CHECKUPDATE: Update/create BaseTrack BaseKey with new slider value. Note: I would do this in MSG_DESCRIPTION_USERINTERACTION_END except that this plugin also supports R8.2 and R8.5 which do not have this support (!).
Now, I want to mirror these sliders on a plugin tag (on the PolygonObject) that has a drop-down list to select any of these children plugin objects. These are basically virtual sliders and do not (and MUST not) contain the animation tracks. Changes to these sliders should simply (ehem) be passed to the plugin object for full processing.
Attempts at performing each step in the plugin tag in the same locations, passing to the plugin object (calling PluginObject::SetDParameter() within PluginTag::SetDParameter(), for instance), have resulted in odd behavior and crashes. Definitely not the correct approach. What is needed is a way to signal the plugin object in a way that is analogous to the three-step process that occurs as noted above automatically when the user changes the plugin object slider.
On 19/05/2006 at 10:56, xxxxxxxx wrote:
It appears that the best approach was to mirror the same procedures as those in the object in the tag. Now it works without weirdness or crashing.