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 12/05/2015 at 05:18, xxxxxxxx wrote:
User Information: Cinema 4D Version: R16 Platform: Mac OSX ; Language(s) : C++ ;
--------- Hi,
I want to call MCOMMAND_CURRENTSTATETOOBJECT when a button is pressed. I should do this inside Message()'s MSG_DESCRIPTION_COMMAND, I guess, but if I try it my program crashes. Is this not possible inside Message?
Here is my code:
if (type == MSG_DESCRIPTION_COMMAND) { DescriptionCommand* dc = (DescriptionCommand* )data; if (dc->id[0].id == MY_BUTTON) { BaseDocument* doc = static_cast<BaseDocument*>(data); if (!doc) return false; BaseObject* myObject = doc->GetFirstObject(); if (!myObject) return false; ModelingCommandData cd; cd.doc = doc; cd.op = myObject; SendModelingCommand(MCOMMAND_CURRENTSTATETOOBJECT, cd); } }
Thanks in advance for your help and time! Greetings, Casimir Smets
On 12/05/2015 at 06:03, xxxxxxxx wrote:
It is valid and safe. But you cannot simply cast data (which is a DescriptionCommand) into a basedocument coz it does not hold a basedocument pointer.
You should use node->GetDocument() instead (or GetActiveDocument() which should be valid due to a button click most of the time only being triggered interactively..though this is no guarantee so node->GetDocument() is the better alternative).
Also you might need to do this on a copy of the scene.
On 12/05/2015 at 06:22, xxxxxxxx wrote:
Hi,
If I change that, I get no error, and my program doesn't quit. The only problem is, it is not making it editable..
Greetings, Casimir Smets
On 12/05/2015 at 06:32, xxxxxxxx wrote:
Ignore my previous post I forgot to cast it and add it to the scene, feeling stupid now yeeeuy
On 12/05/2015 at 07:50, xxxxxxxx wrote:
Hi Casimir,
Katachi is right with his answer. I sense some problems with the concept of casting datatypes here. It is certainly one of the more advanced concepts of C and C++ and probably one which is cause for many (if not most) bugs. As casts are needed in several places in the C4D SDK, I'd recommend to have a read on this topic. For example here or here or here. Especially the parts about casting pointers are crucial.
On 13/05/2015 at 08:17, xxxxxxxx wrote:
Hi Andreas,
Thanks for your answer! I shall definately look more into casting!