Your browser does not seem to support JavaScript. As a result, your viewing experience will be diminished, and you have been placed in read-only mode.
Please download a browser that supports JavaScript, or enable it if it's disabled (i.e. NoScript).
On 15/08/2014 at 04:40, xxxxxxxx wrote:
User Information: Cinema 4D Version: R14 Platform: Windows ; Language(s) : C++ ;
--------- Hi,
Im trying to figure out how to insert a Description element to my objectdata plugin via code. I already have various plugin options showing up via the res files etc and so am trying to basically grab the nodedatas Description container and insert a new Real parameter into it ( in such a way that it will show up in the attributes along with everything else when the plugin is launched ).
m trying to figure out how to insert a Description element to my objectdata plugin via code. I already have various plugin options showing up via the res files etc and so am trying to basically grab the nodedata
At the moment i am using Description->SetParameter() to achieve this by inserting a new BaseContainer that has been given test values for DESC_NAME, DESC_SHORT_NAME and DESC_UNIT but it isn`t showing up in the attributes manager.
I think it may be something to do with creating proper DESC_IDs or something. Either that or i am going about this in completely the wrong way! Which is possible as its a bit like wandering around in the dark trying to figure this stuff out without proper examples..
s or something. Either that or i am going about this in completely the wrong way! Which is possible as it
Heres the code i have which although the if statement is returning it is done, it isnt displaying the parameters as mentioned:
s the code i have which although the if statement is returning
, it isn
Bool MyPlugin::Init(GeListNode *node) { AutoAlloc<Description> desc; node->GetDescription(desc, DESCFLAGS_DESC_0); BaseContainer *descBC = desc->GetParameterI(MYPLUGIN_OBJECTWIDTH, NULL); // This returns an existing parameter successfully BaseContainer newBC = BaseContainer(); newBC.SetString(DESC_NAME, "My Description Param"); newBC.SetString(DESC_SHORT_NAME, "My Description Param"); newBC.SetLong(DESC_UNIT, DESC_UNIT_REAL); if (desc->SetParameter(MYPLUGIN_NEWPARAMETER, newBC, DESCID_ROOT)) { GePrint("it is done"); } else { GePrint("it is not done"); } return TRUE; }
On 15/08/2014 at 05:45, xxxxxxxx wrote:
Howdy,
You need to do that in the NodeData::GetDDescription() function. Do a search for GetDDescription here on plugin cafe and you'll find plenty of examples.
Adios, Cactus Dan
On 15/08/2014 at 06:09, xxxxxxxx wrote:
Also, it is necessary that you include the Datatype ID in the Description ID you use for SetParameter().
On 15/08/2014 at 07:38, xxxxxxxx wrote:
Very much appreciated guys, thank you.
RE the Datatype ID Niklas - do you mean i`d create a DescID with my parameter ID, then insert the Datatype ID into that - using say DescID->PushId() ?
Maybe like this?
DescID MYPLUGIN_NEWPARAMETER = DescID(MYPLUGIN_NEWPARAMETER); MYPLUGIN_NEWPARAMETER.PushId(DESC_UNIT_REAL); desc->SetParameter(MYPLUGIN_NEWPARAMETER, newBC, DESCID_ROOT);
I`m probably confusing things for myself
On 15/08/2014 at 07:55, xxxxxxxx wrote:
Nope, like this
DescID descId(DescLevel(MYPLUGIN_NEWPARAMETER, DA_REAL, 0));
DESC_UNIT_REAL is not a datatype ID. If you create a Floating-point parameter, use DA_REAL, for an Integer parameter DA_LONG, for SplineData CUSTOMDATATYPE_SPLINE, etc.
Best, -NIKLAS
On 15/08/2014 at 10:05, xxxxxxxx wrote:
Okay - thanks for that, much appreciated.