Up ! ^^
I went to write a small SOP node that show my issue. It should be ok to compile it with hcustom. This SOP simply has a button (Button1), that when clicked create a new button (Button2, as a SpareParm) with a callback method to create a new buton (button3). But Button3 is never created.
void
newSopOperator(OP_OperatorTable* table)
{
table->addOperator(new OP_Operator(
"testSpareParm",
"TestSpareParm",
SOP_TestSpareParm::myConstructor,
SOP_TestSpareParm::myTemplateList,
1,
1,
NULL));
}
static int buttonCallBack2(void* data, int index, fpreal t, const PRM_Template*)
{
SOP_TestSpareParm* me = static_cast<SOP_TestSpareParm*>(data);
if (!me)
return 0;
OP_Director* director = OPgetDirector();
PRM_Name bn = PRM_Name("button3", "Button3");
PRM_Template button = PRM_Template(PRM_CALLBACK, 1, &bn, 0, 0, 0);
director->addNodeSpareParm(me, &button);
return 1;
}
static int buttonCallBack(void* data, int index, fpreal t, const PRM_Template*)
{
SOP_TestSpareParm* me = static_cast<SOP_TestSpareParm*>(data);
if (!me)
return 0;
OP_Director* director = OPgetDirector();
PRM_Name bn = PRM_Name("button2", "Button2");
PRM_Template button = PRM_Template(PRM_CALLBACK, 1, &bn, 0, 0, 0, buttonCallBack2);
director->addNodeSpareParm(me, &button);
return 1;
}
static PRM_Name names[] = {
PRM_Name("button1", "Button1"),
};
PRM_Template SOP_TestSpareParm::myTemplateList[] = {
PRM_Template(PRM_CALLBACK, 1, &names[0], 0, 0, 0, buttonCallBack),
PRM_Template(),
};
OP_Node* SOP_TestSpareParm::myConstructor(OP_Network* net, const char* name, OP_Operator* op)
{
return new SOP_TestSpareParm(net, name, op);
}
SOP_TestSpareParm::SOP_TestSpareParm(OP_Network* net, const char* name, OP_Operator* op) : SOP_Node(net, name, op)
{
mySopFlags.setManagesDataIDs(true);
}
SOP_TestSpareParm::~SOP_TestSpareParm() {}
OP_ERROR SOP_TestSpareParm::cookMySop(OP_Context& context)
{
OP_AutoLockInputs inputs(this);
if (inputs.lock(context) >= UT_ERROR_ABORT)
return error();
fpreal now = context.getTime();
return error();
}
Do you see something wrong with theses few lines ?
Cheers !
SOP_TestSpareParm.C
SOP_TestSpareParm.h