Think I discovered a problem. If I explicitly create all data as local variables within the custom operator's _Update() callback, it works as expected, but runs slow.
When I use the custom operator's UserData to store and retrieve data between calls to _Update(), inputs connected to a geometry primitive evaluate with a one cycle lag. As in, user moves some points but the output object doesn't update until the user performs a 2nd operation on the geometry. Basically, geometry updates are one step behind everything else. All other inputs/outputs update as expected. If a subcomponent on the geometry is transformed, then followed with a call to Undo(), Softimage stops incrementing the ID returned by ProjectItem::GetEvaluationID(). All other inputs (kinematics, clusters, clusterproperties, ...) continue to work as expected. Is this a known bug? Using Softimage 2013 SP1 (32-bit) Matt -----Original Message----- From: softimage-boun...@listproc.autodesk.com [mailto:softimage-boun...@listproc.autodesk.com] On Behalf Of Matt Lind Sent: Wednesday, April 16, 2014 7:41 PM To: softimage@listproc.autodesk.com Subject: RE: SDK: detecting changes in Custom Operator (C++) Thanks, Luc-Eric. That does help a bit. Unfortunately for this particular operator I need more granular information to have significant impact. What I'm discovering is any changes to the input polygon mesh triggers a cascade of updates on the output clone (duh) which negate checking for evaluation of updates on the weightmaps for the clone. Eg; translating a vertex on the input mesh triggers weightmap data getting pushed onto the clone and dirtying the operator inputs connected to the clone's weightmaps. One problem I've been experiencing is update lags with the plugin userdata context. Some inputs are evaluated every time, but others seem to skip updates. For example, transforming the input polygon mesh or either of the 2 NURBS surfaces updates correctly every time. But if I translate a vertex on the input mesh, that only gets pushed to the clone every other update of the operator. Not sure what I have to kick to get that to be more consistent. I tried force the operator to 'always evaluate', but that didn't make any difference. Thanks, Matt -----Original Message----- From: softimage-boun...@listproc.autodesk.com [mailto:softimage-boun...@listproc.autodesk.com] On Behalf Of Luc-Eric Rousseau Sent: Wednesday, April 16, 2014 12:41 PM To: softimage@listproc.autodesk.com Subject: Re: SDK: detecting changes in Custom Operator (C++) I've never written an SDK operator in XSI, but I think I know the answer to this one.. Get the input object, and call ProjectItem::GetEvaluationID() on it this is a LONG value that changes every time an object is evaluated. If the value hasn't changed since last time, then that input did not change.