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).
const DescID*
const singleid = description->GetSingleDescID();
if (singleid ==
nullptr || cid.
IsPartOf(*singleid,
nullptr))
{
return;
}
BaseContainer GetCustomDataTypeDefault(Int32 type)
Definition: c4d_basecontainer.h:48
void SetString(Int32 id, const maxon::String &s)
Definition: c4d_basecontainer.h:643
Definition: lib_description.h:355
Bool IsPartOf(const DescID &cmp, Int32 *pos) const
@ DESC_NAME
String Name for standalone use.
Definition: lib_description.h:91
@ DTYPE_BOOL
GV Bool. ID_GV_DATA_TYPE_BOOL.
Definition: lib_description.h:75
#define ConstDescID(...)
Definition: lib_description.h:594
@ ID_OBJECTPROPERTIES
Definition: obase.h:56
Represents a level within a DescID.
Definition: lib_description.h:298
Other parameter types are
Other data types are defined as custom data types like CUSTOMDATATYPE_BITMAPBUTTON etc.
{
}
{
}
void SetInt32(Int32 id, Int32 l)
Definition: c4d_basecontainer.h:579
#define BITMAPBUTTON_BUTTON
Definition: customgui_bitmapbutton.h:35
#define BITMAPBUTTON_ICONID1
Int32 Registered icon bitmap ID. On state for toggle buttons.
Definition: customgui_bitmapbutton.h:47
#define CUSTOMGUI_BUTTON
Button.
Definition: lib_description.h:223
#define MAXON_SCOPE
Definition: apibase.h:2898
@ DESC_ALIGNLEFT
Bool Align element left.
Definition: lib_description.h:137
@ DESC_CUSTOMGUI
Int32 The ID of the GUI for this element. Either a custom ID or one of: CUSTOMGUI
Definition: lib_description.h:125
@ DTYPE_BUTTON
Button.
Definition: lib_description.h:61
#define IDM_DELETE
Delete.
Definition: ge_prepass.h:3834
Groups
Parameters are organized in parameter groups. These groups are used to define the structure and the layout of the parameters.
{
}
{
}
{
}
}
@ DESC_DEFAULT
Int32/Float/Vector Default numeric value.
Definition: lib_description.h:120
@ DESC_SCALEH
Bool Scale element horizontally.
Definition: lib_description.h:135
@ DESC_COLUMNS
Int32 Number of columns for layout groups (DTYPE_GROUP).
Definition: lib_description.h:127
@ DTYPE_STRING
String.
Definition: lib_description.h:72
@ DTYPE_GROUP
Group.
Definition: lib_description.h:56
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
.
{
if (descID == nullptr)
const Int32 id = descID->operator[](-1).
id;
}
Definition: c4d_gedata.h:83
const DATATYPE * GetCustomDataType() const
Definition: c4d_gedata.h:542
Int32 GetType() const
Definition: c4d_gedata.h:436
const maxon::Data & GetData() const
Definition: c4d_gedata.h:535
static String IntToString(Int32 v)
Definition: c4d_string.h:495
maxon::Int32 Int32
Definition: ge_sys_math.h:60
@ DESC_PARENTGROUP
Int32/Parent ID.
Definition: lib_description.h:117
#define MAXON_SOURCE_LOCATION
Definition: memoryallocationbase.h:67
#define ApplicationOutput(formatString,...)
Definition: debugdiagnostics.h:210
#define CUSTOMDATATYPE_DESCID
DescID custom data type ID.
Definition: lib_description.h:272
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.
void SetBool(Int32 id, Bool b)
Definition: c4d_basecontainer.h:572
@ DESC_NEWLINE
Bool Line break.
Definition: lib_description.h:139
@ DTYPE_STATICTEXT
Static text.
Definition: lib_description.h:64
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.
{
}
{
}
Bool SetData(Int32 id, const GeData &n)
Definition: c4d_basecontainer.h:274
void SetCustomDataType(const DATATYPE &v)
Definition: c4d_gedata.h:747
#define NOTOK
Definition: ge_sys_math.h:267
@ DESC_PARENT_COLLAPSE
Int32 Parent collapse ID.
Definition: lib_description.h:143
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.
#define CUSTOMGUI_REALSLIDER
Float edit field with slider.
Definition: lib_description.h:208
@ DESC_NOGUISWITCH
Bool Disables GUI switching for this description element.
Definition: lib_description.h:166
@ DTYPE_REAL
Float
Definition: lib_description.h:68
#define CUSTOMGUI_TEXBOX
Shader link custom GUI ID.
Definition: customgui_texbox.h:18
@ DESC_FORBID_INLINE_FOLDING
Bool Instructs the Attribute Manager to not allow expanding inline objects for entry.
Definition: lib_description.h:144
@ DESC_SHADERLINKFLAG
Bool Specifies that this element is a shader link. (Only if datatype==DTYPE_BASELISTLINK....
Definition: lib_description.h:165
@ DTYPE_BASELISTLINK
BaseLink.
Definition: lib_description.h:74
The settings of a custom GUI also have to be stored in the BaseContainer.
#define DATETIME_DATA
DateTime custom data ID.
Definition: customgui_datetime.h:23
#define DATETIME_GUI
DateTime custom GUI ID.
Definition: customgui_datetime.h:20
#define DATETIME_DATE_CONTROL
Bool true, if it is a calendar.
Definition: customgui_datetime.h:29
#define DATETIME_TIME_CONTROL
Bool true, if it is a clock.
Definition: customgui_datetime.h:28
#define DATETIME_NOW_BUTTON
Bool true, to add "Now" button.
Definition: customgui_datetime.h:30
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.
@ DESC_SHORT_NAME
String Short name, for attributes dialog.
Definition: lib_description.h:92
Animation
One can enable or disable if a parameter should be animateable:
@ DESC_ANIMATE
Int32 Animation mode:
Definition: lib_description.h:104
@ DESC_ANIMATE_OFF
Parameter is not animatable.
Definition: lib_description.h:105
Values
For specific parameter types certain values can be set:
For DTYPE_REAL, DTYPE_LONG and DTYPE_VECTOR parameters:
void SetFloat(Int32 id, Float r)
Definition: c4d_basecontainer.h:607
@ DESC_MAXSLIDER
Int32/Float/Vector Maximum value for slider.
Definition: lib_description.h:133
@ DESC_MINSLIDER
Int32/Float/Vector Minimum value for slider.
Definition: lib_description.h:132
@ DESC_STEP
Int32/Float/Vector The step for the edit field arrows.
Definition: lib_description.h:103
@ DESC_MIN
Int32/Float/Vector Minimum value.
Definition: lib_description.h:99
@ DESC_UNIT
Int32 Unit for DTYPE_VECTOR:
Definition: lib_description.h:110
@ DESC_UNIT_PERCENT
FORMAT_PERCENT
Definition: lib_description.h:113
@ DESC_MAX
Int32/Float/Vector Maximum value.
Definition: lib_description.h:100
DTYPE_REAL and DTYPE_VECTOR can display values with a given unit:
- Note
- These are the same formats as used with GeDialog::SetFloat().
@ DESC_UNIT_METER
FORMAT_METER
Definition: lib_description.h:115
@ DESC_FORBID_SCALING
Bool Prevents auto-scaling of the parameter with the scale tool (for DESC_UNIT_METER).
Definition: lib_description.h:145
The values selectable in a drop down parameter (based on DTYPE_LONG) are stored in sub-containers:
items.SetString(0,
"Item 1"_s);
items.SetString(1,
"Item 2"_s);
items.SetString(2,
"Item 3"_s);
void SetContainer(Int32 id, const BaseContainer &s)
Definition: c4d_basecontainer.h:671
#define CUSTOMGUI_CYCLE
Selection list field.
Definition: lib_description.h:215
@ DESC_CYCLEICONS
BaseContainer Icon IDs for cycle.
Definition: lib_description.h:141
@ DESC_CYCLE
BaseContainer Contains members of cycle as string. (E.g. GetString(10041) == "-X"....
Definition: lib_description.h:118
@ DTYPE_LONG
Int32
Definition: lib_description.h:67
#define IDM_CUT
Cut.
Definition: ge_prepass.h:3831
PyWideStringList Py_ssize_t wchar_t ** items
Definition: initconfig.h:448
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.
#define CUSTOMGUI_LINKBOX
Link box custom GUI ID.
Definition: customgui_linkbox.h:18
@ DESC_ACCEPT
BaseContainer Contains the accepted IDs as strings. For C4DAtom::IsInstanceOf() checks....
Definition: lib_description.h:121
#define Ocube
Cube.
Definition: ge_prepass.h:1110
#define Osphere
Sphere.
Definition: ge_prepass.h:1111
A DTYPE_BASELISTLINK parameter can also reference and manage a shader:
A DTYPE_SEPARATOR can be displayed with or without a line:
Definition: c4d_string.h:39
#define CUSTOMGUI_SEPARATOR
Separator.
Definition: lib_description.h:225
@ DESC_SEPARATORLINE
Bool true if separators should have a visible line.
Definition: lib_description.h:122
@ DTYPE_SEPARATOR
Separator.
Definition: lib_description.h:63
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.
@ DESC_UNIT_DEGREE
FORMAT_DEGREE
Definition: lib_description.h:114
@ DESC_ANGULAR_XYZ
Bool true for XYZ as angular representation, or false for HPB.
Definition: lib_description.h:146
@ DTYPE_VECTOR
Vector
Definition: lib_description.h:70
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:
@ DESC_MATEDNOTEXT
Bool No text in Material Editor window.
Definition: lib_description.h:163
#define Tbaselist2d
2D list.
Definition: ge_prepass.h:992
A DTYPE_BOOL can be used to enable or disable a channel group.
{
}
{
}
{
}
@ DESC_HIDE
Bool Indicates whether the property is hidden or not.
Definition: lib_description.h:119
@ DESC_PARENTMSG
DescID Used in the Material Editor on the boolean tabs to specify which section to open.
Definition: lib_description.h:162
#define BOOL_PAGEMODE
Page mode for boolean elements. If set it means that this boolean will have no checkbox....
Definition: lib_description.h:31
Further Reading