About
A parameter description includes the type of a parameter and some additional information. Such a parameter description is stored in a BaseContainer . The different settings are accessed using the IDs described on this page. These settings define how the parameter behaves and how it is displayed in the Attribute Manager.
Such parameter descriptions are handled in the following situations:
Parameters Types
While certain settings apply to all parameter types, others are specific to certain parameter types. With this utility function one can create a BaseContainer with the correct default settings:
These are the default Cinema 4D parameter and data types. For plugin data types the plugin ID must be used.
Note Do not confuse these types with DA_TYPES (see GeData Manual ).
if (singleid ==
nullptr || cid.
IsPartOf (*singleid,
nullptr ))
{
return ;
}
Other parameter types are
Other data types are defined as custom data types like CUSTOMDATATYPE_BITMAPBUTTON etc.
Groups
Parameters are organized in parameter groups. These groups are used to define the structure and the layout of the parameters.
A parameter is typically part of a group:
The group IDs of specific elements are defined in the corresponding header files like ID_OBJECTPROPERTIES in Obase.h
.
{
const DescID *
const descID = static_cast<const DescID*>(customData);
if (descID == nullptr )
const Int32 id = descID->operator[](-1).
id ;
}
A row of a group can be filled with dummy elements so that the next elements start in a new row:
DESC_NEWLINE : The element in question is used as a "line break". Typically used with a static text element.
Parent Parameters
A parameter can be a parent parameter of another parameter. The child parameter is hidden until the user clicks on a little arrow.
Layout
The parameter description includes settings that define how a group or parameter should be scaled in the Attribute Manager.
Visibility
The parameter description also includes information on how the parameter is displayed:
Note To enable or disable a parameter in the Attribute Manager one must implement NodeData::GetDEnabling() , see NodeData::GetDEnabling() Manual .
The settings of a custom GUI also have to be stored in the BaseContainer .
Name
The name of a parameter is displayed in the Attribute Manager or other contexts:
DESC_NAME : The parameter name for standalone use.
DESC_SHORT_NAME : The short name, displayed in the Attribute Manager.
DESC_IDENT : The resource identifier, e.g. "ID_BASEOBJECT_REL_POSITION". This value is typically read-only.
DESC_IDENT_ORIGIN : The resource identifier, e.g. "ID_BASEOBJECT_REL_POSITION". This value is typically read-only.
Animation
One can enable or disable if a parameter should be animateable:
Values
For specific parameter types certain values can be set:
For DTYPE_REAL , DTYPE_LONG and DTYPE_VECTOR parameters:
DTYPE_REAL and DTYPE_VECTOR can display values with a given unit:
Note These are the same formats as used with GeDialog::SetFloat() .
The values selectable in a drop down parameter (based on DTYPE_LONG ) are stored in sub-containers:
Both DTYPE_BASELISTLINK and CUSTOMDATATYPE_INEXCLUDE_LIST parameter types can reference Cinema 4D elements.
Note The check is done with C4DAtom::IsInstanceOf() , so also category types like Obase etc. can be used.
A DTYPE_BASELISTLINK parameter can also reference and manage a shader:
A DTYPE_SEPARATOR can be displayed with or without a line:
If a DTYPE_VECTOR is used to display a rotation (DESC_UNIT_DEGREE ) it can display this as XYZ or HPB:
DESC_ANGULAR_XYZ : Set to true for XYZ as angular representation, or false for HPB.
Material Editor
Materials can include parameter groups that are presented as "channels" in the Material Editor window. The left column of the Material Editor can include references to these channels or simple parameters:
A DTYPE_BOOL can be used to enable or disable a channel group.
{
}
{
}
{
description->
SetParameter (cid, settings, ID_SETTINGS_GROUP);
}
Further Reading
GV Bool. ID_GV_DATA_TYPE_BOOL.
Definition: lib_description.h:71
const GeData & GetData(Int32 id) const
Definition: c4d_basecontainer.h:258
Bool true for XYZ as angular representation, or false for HPB.
Definition: lib_description.h:142
BaseContainer GetCustomDataTypeDefault(Int32 type)
Bool Align element left.
Definition: lib_description.h:133
Bool true if separators should have a visible line.
Definition: lib_description.h:118
GeData * SetData(Int32 id, const GeData &n)
Definition: c4d_basecontainer.h:251
Separator.
Definition: lib_description.h:59
Int32 Animation mode:
Definition: lib_description.h:100
void SetCustomDataType(Int32 datatype, const CustomDataType &v)
Definition: c4d_gedata.h:636
FORMAT_METER
Definition: lib_description.h:111
#define CUSTOMGUI_LINKBOX
Link box custom GUI ID.
Definition: customgui_linkbox.h:14
Definition: lib_description.h:315
Int32 GetType(void) const
Definition: c4d_gedata.h:391
void SetInt32(Int32 id, Int32 l)
Definition: c4d_basecontainer.h:501
DescID Used in the Material Editor on the boolean tabs to specify which section to open.
Definition: lib_description.h:157
Bool Specifies that this element is a shader link. (Only if datatype==DTYPE_BASELISTLINK....
Definition: lib_description.h:160
void SetString(Int32 id, const maxon::String &s)
Definition: c4d_basecontainer.h:565
Bool No text in Material Editor window.
Definition: lib_description.h:158
BaseLink.
Definition: lib_description.h:70
Bool Instructs the Attribute Manager to not allow expanding inline objects for entry.
Definition: lib_description.h:140
BaseContainer Contains members of cycle as string. (E.g. GetString(10041) == "-X"....
Definition: lib_description.h:114
#define CUSTOMDATATYPE_DESCID
DescID custom data type ID.
Definition: lib_description.h:248
Bool IsPartOf(const DescID &cmp, Int32 *pos) const
#define DATETIME_DATE_CONTROL
Bool true, if it is a calendar.
Definition: customgui_datetime.h:20
#define Ocube
Cube.
Definition: ge_prepass.h:1035
#define MAXON_SOURCE_LOCATION
Definition: memoryallocationbase.h:66
Int32 Number of columns for layout groups (DTYPE_GROUP).
Definition: lib_description.h:123
void SetBool(Int32 id, Bool b)
Definition: c4d_basecontainer.h:494
Bool SetParameter(const DescID &id, const BaseContainer ¶m, const DescID &groupid)
Int32/Float/Vector Maximum value for slider.
Definition: lib_description.h:129
Bool Line break.
Definition: lib_description.h:135
Int32/Float/Vector Minimum value.
Definition: lib_description.h:95
#define CUSTOMGUI_BUTTON
Button.
Definition: lib_description.h:212
#define CUSTOMGUI_REALSLIDER
Float edit field with slider.
Definition: lib_description.h:197
#define BITMAPBUTTON_ICONID1
Int32 Registered icon bitmap ID. On state for toggle buttons.
Definition: customgui_bitmapbutton.h:42
Group.
Definition: lib_description.h:52
#define DATETIME_GUI
DateTime custom GUI ID.
Definition: customgui_datetime.h:11
Bool Prevents auto-scaling of the parameter with the scale tool (for DESC_UNIT_METER).
Definition: lib_description.h:141
#define Osphere
Sphere.
Definition: ge_prepass.h:1036
Definition: c4d_string.h:36
Button.
Definition: lib_description.h:57
static String IntToString(Int32 v)
Definition: c4d_string.h:493
FORMAT_PERCENT
Definition: lib_description.h:109
#define DATETIME_TIME_CONTROL
Bool true, if it is a clock.
Definition: customgui_datetime.h:19
BaseContainer Icon IDs for cycle.
Definition: lib_description.h:137
Parameter is not animatable.
Definition: lib_description.h:101
Vector
Definition: lib_description.h:66
#define IDM_CUT
Cut.
Definition: ge_prepass.h:3496
String Short name, for attributes dialog.
Definition: lib_description.h:88
#define IDM_DELETE
Delete.
Definition: ge_prepass.h:3499
Represents a level within a DescID.
Definition: lib_description.h:274
Int32/Float/Vector Maximum value.
Definition: lib_description.h:96
Int32
Definition: lib_description.h:63
#define NOTOK
Definition: ge_sys_math.h:252
String.
Definition: lib_description.h:68
#define Tbaselist2d
2D list.
Definition: ge_prepass.h:931
Bool Indicates whether the property is hidden or not.
Definition: lib_description.h:115
Definition: c4d_gedata.h:77
maxon::Int32 Int32
Definition: ge_sys_math.h:45
#define ApplicationOutput(formatString,...)
Definition: debugdiagnostics.h:209
const DescID * GetSingleDescID()
Private.
void SetFloat(Int32 id, Float r)
Definition: c4d_basecontainer.h:529
Base class for custom data types.
Definition: c4d_customdatatype.h:46
Bool Disables GUI switching for this description element.
Definition: lib_description.h:161
Bool Scale element horizontally.
Definition: lib_description.h:131
Int32 The ID of the GUI for this element. Either a custom ID or one of: CUSTOMGUI
Definition: lib_description.h:121
BaseContainer Contains the accepted IDs as strings. For C4DAtom::IsInstanceOf() checks....
Definition: lib_description.h:117
#define CUSTOMGUI_SEPARATOR
Separator.
Definition: lib_description.h:214
#define DATETIME_DATA
DateTime custom data ID.
Definition: customgui_datetime.h:14
CustomDataType * GetCustomDataType(Int32 datatype) const
Definition: c4d_gedata.h:485
#define DATETIME_NOW_BUTTON
Bool true, to add "Now" button.
Definition: customgui_datetime.h:21
void SetContainer(Int32 id, const BaseContainer &s)
Definition: c4d_basecontainer.h:593
String Name for standalone use.
Definition: lib_description.h:87
#define BITMAPBUTTON_BUTTON
Definition: customgui_bitmapbutton.h:30
FORMAT_DEGREE
Definition: lib_description.h:110
Int32/Parent ID.
Definition: lib_description.h:113
Int32 Unit for DTYPE_VECTOR:
Definition: lib_description.h:106
Int32/Float/Vector Default numeric value.
Definition: lib_description.h:116
#define CUSTOMGUI_CYCLE
Selection list field.
Definition: lib_description.h:204
Float
Definition: lib_description.h:64
Int32/Float/Vector The step for the edit field arrows.
Definition: lib_description.h:99
#define BOOL_PAGEMODE
Page mode for boolean elements. If set it means that this boolean will have no checkbox....
Definition: lib_description.h:27
Int32 Parent collapse ID.
Definition: lib_description.h:139
Int32/Float/Vector Minimum value for slider.
Definition: lib_description.h:128
#define CUSTOMGUI_TEXBOX
Shader link custom GUI ID.
Definition: customgui_texbox.h:14
#define MAXON_SCOPE
Definition: apibase.h:2575
Definition: c4d_basecontainer.h:42
Static text.
Definition: lib_description.h:60