If i use Plugin's UserData i have a problem with releaseing memory.
struct myStruct{
           XSI::CLongArray polyData;
           XSI::CValueArray edgeSegmentsArray;
    }
    SICALLBACK XSILoadPlugin( PluginRegistrar& in_reg ){
          PlugData * pDataPtr = new PlugData ;
          CValue ptrValue = (CValue::siPtrType) pDataPtr;
          in_reg.PutUserData(ptrValue);
    }
    SICALLBACK myOperator_Update( CRef& in_ctxt ){
           OperatorContext ctxt( in_ctxt );
           CValue userData(ctxt.GetUserData());
           update_func(ctxt);
           return CStatus::OK;
    }

2015-12-10 20:47 GMT+03:00 Steven Caron <[email protected]>:

> Could you use the Plugin's UserData to pass the struct between plugin
> types?  I never heard of using the context from one plugin type being used
> in another plugin type.
>
> http://bit.ly/1NILLt7
>
> On Thu, Dec 10, 2015 at 9:01 AM, Andruha Prostrelov <[email protected]>
> wrote:
>
>> I am looking for the way to pass a "struct" from Tool Class to the
>> CustomOperator_Update() callback.
>> I saw two approaches to this in SDK. First one should work via UserData
>> attached to ctxt. You store in this
>> data C++ pointer to allocated memory with your struct. Second one is to
>> create Property and store this pointer in
>> property. I prefer do not create additional Property, so i tried to add
>> UserData to ctxt.
>> But i don't quite sure that i make it right.
>> I tried this piece of code ...
>>
>>     struct myStruct{
>>            XSI::CLongArray polyData;
>>            XSI::CValueArray edgeSegmentsArray;
>>     }
>>     SICALLBACK myCmd_Execute( CRef& in_ctxt ){
>>           PlugData pData;
>>           PlugData * pDataPtr;
>>           pDataPtr = &pData;
>>           ctxt.PutUserData(XSI::CValue(pDataPtr));
>>     }
>>     SICALLBACK myOperator_Update( CRef& in_ctxt ){
>>            OperatorContext ctxt( in_ctxt );
>>            CValue userData(ctxt.GetUserData());
>>            update_func(ctxt);
>>            return CStatus::OK;
>>     }
>>
>> ... but in Update callback i didn't get pointer back.
>>
>> If someone has already faced a similar problem maybe you can share some
>> advices.
>> Or maybe there is a way to pass struct without UserData or Custom
>> Property.
>>
>
>

Reply via email to