Command function doesn't get called [SOLVED]
-
On 23/03/2015 at 09:27, xxxxxxxx wrote:
User Information:
Cinema 4D Version: R16
Platform: Mac OSX ;
Language(s) : C++ ;---------
Hi,I'm working on an object-plugin. I have implemented the method Command, but it seems it doesn't get called. Here is my method:
Bool MyPluginData::Command(Int32 id, const BaseContainer &msg)
{
if (id == HIPNULLPTR_POS_Y)
{
GePrint("The slider is pressed!");
}return true;
}Did I do something wrong here? Or did I simply forget something?
I've looked for hours on the internet, in the SDK, but still found no answer.Thanks for your help and time!
Greetings,
Casimir Smets -
On 23/03/2015 at 11:46, xxxxxxxx wrote:
Mainly only buttons really trigger Command(). For other controls, you need to use Message().
-
On 23/03/2015 at 17:44, xxxxxxxx wrote:
And actually Command() is not a method of the ObjectData class, but GeDialog. If you want to notice
when a value was changed, override Message() and catch the MSG_DESCRIPTION_* message that
matches your needs.Best
Niklas -
On 24/03/2015 at 06:31, xxxxxxxx wrote:
Hi,
Well, that did it, especially the MSG_DESCRIPTION. With my slider I needed the MSG_DESCRIPTION_CHECKUPDATE inside Message.
You can mark this as closed!!
Thanks for your help guys!!Greetings,
Casimir Smets -
On 24/03/2015 at 06:52, xxxxxxxx wrote:
Well, it worked when I had a simple GePrint. Now with some additional methods it doesn't work anymore.
Here is my code in Message:if (type == MSG_DESCRIPTION_CHECKUPDATE)
{
BaseObject* op = (BaseObject* )node;
BaseDocument* doc = (BaseDocument* )data;
EditHipNullptr(op, doc);
GePrint("The slider is pressed! - CheckUpdate");
}And the code from EditHipNullptr:
BaseObject* CharacterCreatorData::EditHipNullptr(BaseObject* op, BaseDocument* doc)
{
BaseObject* hipNullPtr = doc->SearchObject("Hip_Nullptr");
BaseContainer* bb = op->GetDataInstance();
hipNullPtr->SetRelPos(Vector(0, bb->GetInt32(HIPNULLPTR_POS_Y), 0));
hipNullPtr->Message(MSG_UPDATE);
return hipNullPtr;
}When I change the slider in Cinema 4D, the application doesn't respond anymore.
Does somebody have an idea what could be the problem here?Greetings,
Casimir Smets -
On 24/03/2015 at 07:52, xxxxxxxx wrote:
Hello,
the data of MSG_DESCRIPTION_CHECKUPDATE is not a BaseDocument but of the type DescriptionCheckUpdate. In that structure you will find a pointer to the document.
Also, you don't have any nullptr-checks in your code, so when SearchObject() fails it must crash.
Best wishes,
Sebastian -
On 24/03/2015 at 08:10, xxxxxxxx wrote:
Hi Sebastian,
That did it! Thank you very much!
I also changed my method for nullptr-checks.
You can surely mark this as closed now!Greetings,
Casimir Smets