Messages
The take system sends two messages to an object's NodeData::Message() method:
{
{
return true;
}
break;
}
#define MSG_DESCRIPTION_ALLOWOVERRIDE
Sent before the Take override is added to allow it or not. The corresponding data is DescriptionAllow...
Definition: c4d_baselist.h:438
Definition: lib_description.h:941
const DescID * _descId
Description ID to be overridden.
Definition: lib_description.h:952
Bool _allow
true if the parameter can be overridden, otherwise false.
Definition: lib_description.h:955
and
{
{
}
break;
}
static String IntToString(Int32 v)
Definition: c4d_string.h:495
maxon::Int32 Int32
Definition: ge_sys_math.h:60
#define MSG_DESCRIPTION_TAKECHANGED
Sent to each overridden node when the user changes the current Take. Sent to both the node storing th...
Definition: c4d_baselist.h:439
#define ApplicationOutput(formatString,...)
Definition: debugdiagnostics.h:210
Definition: lib_description.h:965
const DescID * _descId
The description ID for the message, can be nullptr so is sent at the end of the operation just once.
Definition: lib_description.h:975
- Note
- It is also possible to send MSG_DESCRIPTION_ALLOWOVERRIDE to an object using Message() to check if a certain parameter can be overridden.
Core Message
The Take System sends a core message when the take changed.
{
{
}
return true;
}
Definition: c4d_basecontainer.h:47
maxon::Bool Bool
Definition: ge_sys_math.h:55
#define EVMSG_TAKECHANGED
Sent by the Take System when the current Take ID changed to let all managers react to the new status.
Definition: ge_prepass.h:2783
Custom Tags
If a custom tag should appear in the Take Manager's context menu, it must use the flag TAG_ADDTOTAKEGROUP:
Bool RegisterLookAtCamera(
void)
{
LookAtCamera::Alloc,
"Tlookatcameraexp",
0);
}
const String & GeLoadString(Int32 id)
Bool RegisterTagPlugin(Int32 id, const maxon::String &str, Int32 info, DataAllocator *g, const maxon::String &description, BaseBitmap *icon, Int32 disklevel)
A simple BaseBitmap wrapper created from a filename or resource ID.
Definition: c4d_basebitmap.h:1530
#define TAG_EXPRESSION
The tag is an expression.
Definition: c4d_basetag.h:34
#define TAG_ADDTOTAKEGROUP
The tag is added to the Take override groups system.
Definition: c4d_basetag.h:37
#define TAG_VISIBLE
The tag can be seen in the Object Manager.
Definition: c4d_basetag.h:31
Custom GUIs
It is possible to disable the override functionality for custom GUI elements. This can be useful if the GUI element does not manage data and only displays internal states of a node.
Bool RegisterCustomGuiPlugin(const maxon::String &str, Int32 info, CustomGuiData *dat)
#define CUSTOMGUI_DISALLOW_TAKESOVERRIDE
Disallows Takes override e.g. the GUI does not hold real data but just react to the node changes (e....
Definition: c4d_customguidata.h:76
Description GUI
It is possible to create custom dialogs with the Description GUI element. With a parameter it is possible to disable the Take System for that GUI. This is needed e.g. if the GUI element is used to display a custom node.
void* customGUI = AddCustomGui(GADGET_ID,
CUSTOMGUI_DESCRIPTION,
""_s, guiFlags, 400, 200, customguiSettings);
void SetBool(Int32 id, Bool b)
Definition: c4d_basecontainer.h:498
Definition: customgui_description.h:100
#define CUSTOMGUI_DESCRIPTION
Description custom GUI ID.
Definition: customgui_description.h:21
#define DESCRIPTION_NO_TAKE_OVERRIDES
Bool: If true ignore the overrides enabling/disabling.
Definition: customgui_description.h:38
#define DESCRIPTION_ALLOWFOLDING
Bool Allow folding.
Definition: customgui_description.h:26
@ BFV_SCALEFIT
Scale fit. BFV_SCALE|BFV_FIT.
Definition: gui.h:307
@ BFH_SCALEFIT
Scale fit. BFH_SCALE|BFH_FIT.
Definition: gui.h:315
Bits
These bits are used by the Take System to mark objects and tags changed by it:
BaseTag* tag =
object->GetFirstTag();
while (tag != nullptr)
{
{
}
}
String GetName() const
Definition: c4d_baselist.h:2381
Definition: c4d_basetag.h:48
BaseTag * GetNext()
Definition: c4d_basetag.h:79
Bool GetNBit(NBIT bit) const
Definition: c4d_string.h:39
const char * message
Definition: pyerrors.h:189
@ TAKE_LOCK
A node in an override group cannot be changed.
Take Rendering
It is possible to check if the Take System is currently rendering in the background:
void CallCommand(Int32 id, Int32 subid=0)
Bool IsTakeRenderRunning()
Further Reading