THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED
On 23/05/2012 at 11:49, xxxxxxxx wrote:
User Information:
Cinema 4D Version: 12
Platform: Windows ;
Language(s) : C++ ;
---------
Hey guys,
I'm having trouble getting my tag's GUI's to delete using the right click menu.
Nothing happens when I select "Remove Entry".
Here's an updated version(R12++) of an old example that Matthias posted using the LookAt Camera SDK tag example:
#include "c4d.h"
#include "c4d_symbols.h"
#include "tlookatcameraexp.h"
#include "lib_noise.h"
// be sure to use a unique ID obtained from www.plugincafe.com
#define ID_LOOKATCAMERATAG 1001165
enum
{
MY_NOISE = 6000
};
class LookAtCamera : public TagData
{
public:
virtual Bool Init(GeListNode *node);
virtual EXECUTIONRESULT Execute(BaseTag *tag, BaseDocument *doc, BaseObject *op, BaseThread *bt, LONG priority, EXECUTIONFLAGS flags);
virtual Bool GetDDescription(GeListNode *node, Description *description, DESCFLAGS_DESC &flags);
static NodeData *Alloc(void) { return gNew LookAtCamera; }
};
Bool LookAtCamera::Init(GeListNode *node)
{
BaseTag *tag = (BaseTag* )node;
BaseContainer *data = tag->GetDataInstance();
data->SetLong(MY_NOISE, NOISE_BOX_NOISE);
return TRUE;
}
Bool LookAtCamera::GetDDescription(GeListNode *node, Description *description,DESCFLAGS_DESC &flags)
{
if (!description->LoadDescription(ID_LOOKATCAMERATAG)) return FALSE;
const DescID *singleid = description->GetSingleDescID();
DescID cid = DescLevel(MY_NOISE,DTYPE_LONG,0);
if (!singleid || cid.IsPartOf(*singleid,NULL)) // important to check for speedup c4d!
{
BaseContainer bc = GetCustomDataTypeDefault(DTYPE_LONG);
bc.SetContainer(DESC_CYCLE,C4DNoise::CreateMenuContainer(FALSE));
bc.SetLong(DESC_ANIMATE,DESC_ANIMATE_ON);
bc.SetBool(DESC_REMOVEABLE,TRUE); //<-------------This entry will not delete itself when right clicking it!!?
bc.SetString(DESC_NAME,"Noises");
bc.SetString(DESC_SHORT_NAME,"Noises");
if (!description->SetParameter(cid,bc,DescLevel(ID_TAGPROPERTIES))) return TRUE;
}
flags |= DESCFLAGS_DESC_LOADED;
return TRUE;
}
EXECUTIONRESULT LookAtCamera::Execute(BaseTag *tag, BaseDocument *doc, BaseObject *op, BaseThread *bt, LONG priority, EXECUTIONFLAGS flags)
{
return EXECUTIONRESULT_OK;
}
Bool RegisterLookAtCamera(void)
{
// decide by name if the plugin shall be registered - just for user convenience
String name=GeLoadString(IDS_LOOKATCAMERA); if (!name.Content()) return TRUE;
return RegisterTagPlugin(ID_LOOKATCAMERATAG,GeLoadString(IDS_LOOKATCAMERA),TAG_EXPRESSION|TAG_VISIBLE,LookAtCamera::Alloc,"Tlookatcameraexp",AutoBitmap("lookatcamera.tif"),0);
}
The plugin itself works fine.
But the "Noises" gui won't remove itself like it supposed to.
What am I doing wrong?
-ScottA