I have created my own iCustomGUI, and it is fully functional except for that when I update the value i get a critical stop message and a debugbreak. However the data is actually correctly set and stored. So im not sure what is going on.
atom.cpp(439): CRITICAL: Stop
A breakpoint instruction (__debugbreak() statement or a similar call) was executed in Cinema 4D.exe.
This is how the data is set in the Init() function of my ShaderData
// In MyData::Init(GeListNode* node, Bool isCloneInit)
BaseContainer ociodata;
ociodata.SetString(SOME_STRING_ID, String("initial text"));
ociodata.SetInt32(SOME_INT_ID, 19);
base->SetParameter(c4dId, ociodata);
Here is how i create the UI
// in MyData::GetDDescription()
BaseContainer bc = GetCustomDataTypeDefault(DA_CONTAINER);
bc.SetInt32(DESC_CUSTOMGUI, CUSTOMGUI_OCIOCYCLE);
bc.SetString(DESC_NAME, String(pinInfo->mStaticLabel));
bc.SetBool(DESC_SCALEH, TRUE);
description->SetParameter(IDCopy, bc, groupID);
Here is how i send the update from the iCustomGUI class
// in My_iCustomGui::Command()
BaseContainer _data;
_data.SetString(SOME_STRING_ID, String("some text"));
_data.SetInt32(SOME_INT_ID, 14);
BaseContainer m(BFM_ACTION);
m.SetInt32(BFM_ACTION_ID, GetId());
m.RemoveData(BFM_ACTION_VALUE);
m.SetContainer(BFM_ACTION_VALUE, _data);
SendParentMessage(m);
I have the same setup with a different iCustomGUI and it works fine, but there is something about this specific case where it is doing this debug break and complaining about a critical stop. Could it be because it im using a basecontainer here in not a simple type like int/float/vector?