List of ParamTags Choices

These are the parameter definition optional information tags. These tags are used in the ParamBlockDesc2 main constructor as part of the <optional_tagged_param_specs>. The typical format is:

<tag>, <optional_param_spec>,

The following options are available. The hyperlinks take you to the start of each tag description.

  • p_default
  • p_ms_default
  • p_range
  • p_ui
  • p_uix
  • p_validator
  • p_accessor
  • p_vals
  • p_refno
  • p_subtexno
  • p_submtlno
  • p_dim
  • p_classID
  • p_sclassID
  • p_enabled
  • p_enable_ctrls
  • p_prompt
  • p_caption
  • p_init_file
  • p_file_types
  • p_toolti

  • end

Option Descriptions:

p_default

The default value assigned when a block is first created. It must be of the correct type to match the ParamType of the parameter (for example float for TYPE_FLOATs, int for TYPE_INTs, Color(x,y,z) for TYPE_RGBA, Point3(x,y,z) for TYPE_POINT3s, etc.) Defaults can only be supplied for the following base types:TYPE_ANGLE, TYPE_PCNT_FRAC, TYPE_COLOR_CHANNEL, TYPE_FLOAT, TYPE_TIMEVALUE, TYPE_INT, TYPE_BOOL, TYPE_RADIOBTN_INDEX, TYPE_POINT3, TYPE_RGBA, TYPE_STRING, TYPE_FILENAME, TYPE_MATRIX3Examples:p_default, FALSE,p_default, 1,p_default, Point3(0,0,0),p_default, 25.0,

p_ms_default

This establishes the default value used during MAXScript creation. For example the MAXScript command sphere.radius defaults to 25.0 when created by the scripter, but p_default is set to 0.0 so interactive creation starts out with a point-sized sphere when the first mouse click is made.Example:p_ms_default, 25.0,

p_range

This establishes allowable ranges used in MAXScript validation and spinner setup. Supplied as two values of the correct type (as described in p_default, above). Ranges can only be supplied for the following types:TYPE_ANGLE, TYPE_PCNT_FRAC, TYPE_COLOR_CHANNEL, TYPE_FLOAT, TYPE_TIMEVALUE, TYPE_INT, TYPE_RADIOBTN_INDEX, TYPE_POINT3, TYPE_RGBAExample:p_range, -99999999.0, 99999999.0,

p_ui

This is the user interface control specification.This optional tag takes a variable list of arguments depending on the type of UI control specified. This sequence of arguments is similar in form to the ParamDescUI class constructors in the pre-release 3 ParamMap system.Following the p_ui tag, one of the following control types should be specified. Following that are further specs as defined in each type.Note: If a p_ui is supplied for a Tab<> parameter type and the control is *not* of on the ListBox types, the table size should be fixed and supplied in the <required_param_specs> table_size field, and you should supply a set of dialog item ID's for each element in the table. See the example in TYPE_SPINNER below.Control Types LinksSingle Controls
  • TYPE_SPINNER
  • TYPE_SLIDER
  • TYPE_RADIO
  • TYPE_CHECKBUTTON
  • TYPE_SINGLECHEKBOX
  • TYPE_MULTICHEKBOX
  • TYPE_COLORSWATCH
  • TYPE_EDITBOX
  • TYPE_PICKNODEBUTTON
  • TYPE_TEXMAPBUTTON
  • TYPE_BITMAPBUTTON
  • TYPE_MTLBUTTON
  • TYPE_FILEOPENBUTTON
  • TYPE_FILESAVEBUTTON

List Box Controls
  • TYPE_NODELISTBOX
  • TYPE_INTLISTBOX
  • TYPE_FLOATLISTBOX
  • TYPE_STRINGLISTBOX
  • TYPE_POINT3LISTBOX
  • TYPE_INT_COMBOBOX

TYPE_SPINNER:This is a standard MAX spinner control. It requires a spinner type, list of dialog item resource IDs and a display scale. The spinner type can be one of the EditSpinnerType values described below:EDITTYPE_INT - Any integer value.EDITTYPE_FLOAT - Any floating point value.EDITTYPE_UNIVERSE - This is a value in world space units. It respects the system's unit settings (for example feet and inches).EDITTYPE_POS_INT - Any integer >= 0EDITTYPE_POS_FLOAT - Any floating point value >= 0.0EDITTYPE_POS_UNIVERSE - This is a positive value in world space units. It respects the system's unit settings (for example feet and inches) .EDITTYPE_TIME - This is a time value. It respects the system time settings (SMPTE for example).The list of dialog item IDs depends on the ParamType of the parameter. For TYPE_POINT3 and TYPE_RGBA, you supply 3 pairs of IDs, one for each coordinate, each pair specifying the editbox and spinner IDs. For the other you specify one editbox/spinner pair of IDs. The display scale can be a floating point value or the special value SPIN_AUTOSCALE.Eg:p_ui, TYPE_SPINNER, EDITTYPE_UNIVERSE, IDC_RADIUS, IDC_RADSPINNER, SPIN_AUTOSCALE,If the parameter is a table type then, as with all other control types, you must specify a fixed table size and supply a list of dialog item IDs, one set for each element in the tab. Eg, for a 3 element table:p_ui, TYPE_SPINNER, EDITTYPE_UNIVERSE,IDC_RADIUS1, IDC_RADSPINNER1,IDC_RADIUS2, IDC_RADSPINNER2,IDC_RADIUS3, IDC_RADSPINNER3,SPIN_AUTOSCALE,This control type an be used with any of the following ParamTypes:TYPE_ANGLE, TYPE_PCNT_FRAC, TYPE_COLOR_CHANNEL, TYPE_FLOAT, TYPE_TIMEVALUE, TYPE_INT, TYPE_POINT3, TYPE_RGBATYPE_SLIDER:This is a standard 3ds Max slider control. It requires a type, list of dialog item resource IDs and a number of ticks. The slider type can be one of the EditSpinnerType values described below:EDITTYPE_INT - Any integer value.EDITTYPE_FLOAT - Any floating point value.EDITTYPE_UNIVERSE - This is a value in world space units. It respects the system's unit settings (for example feet and inches).EDITTYPE_POS_INT - Any integer >= 0EDITTYPE_POS_FLOAT - Any floating point value >= 0.0EDITTYPE_POS_UNIVERSE - This is a positive value in world space units. It respects the system's unit settings (for example feet and inches) .EDITTYPE_TIME - This is a time value. It respects the system time settings (SMPTE for example). The list of dialog item IDs depends on the ParamType of the parameter. For TYPE_POINT3 and TYPE_RGBA, you supply 3 pairs of IDs, one for each coordinate, each pair specifying the editbox and slider IDs. For the other you specify one editbox/slider pair of IDs. The segment count is the number of ticks in the slider.Eg:p_ui, TYPE_SPINNER, EDITTYPE_UNIVERSE, IDC_EDITBOX, IDC_SLIDER, numSegsFor Point3 you can do the following:p_ui, TYPE_SPINNER, EDITTYPE_UNIVERSE, IDC_EDITBOX1, IDC_SLIDER1,IDC_EDITBOX2, IDC_SLIDER2, IDC_EDITBOX3, IDC_SLIDER3, numSegsThis control type an be used with any of the following ParamTypes:TYPE_ANGLE, TYPE_PCNT_FRAC, TYPE_COLOR_CHANNEL, TYPE_FLOAT, TYPE_TIMEVALUE, TYPE_INT, TYPE_POINT3, TYPE_RGBATYPE_RADIO:This is the standard Win32 radio button control. Following the TYPE_RADIO, supply an int count of the number of radiobuttons in this group and then a list of dialog item IDs for each button. This can only be used with TYPE_INT parameters. The value of the parameter defaults to the ordinal number of the radio button, starting at 0. You can optionally supply a p_vals tag immediately following the TYPE_RADIOp_ui, which should be followed by a list of numbers, one for each radio button. These numbers will become the (non-ordinal) parameter value corresponding to which button is set.TYPE_CHECKBUTTON:This control functions just like TYPE_SINGLECHEKBOX documented below but is represented by a button in either a pressed in or un-pressed state.TYPE_SINGLECHEKBOX:This is the standard Win32 checkbox. Follow the TYPE_SINGLECHEKBOX with the dialog item ID of the checkbox. This can only be used with TYPE_INT or TYPE_BOOL parameters.TYPE_MULTICHEKBOX:This control type is not currently supported.TYPE_COLORSWATCH:This is a 3ds Max color-picker swatch. Follow the TYPE_COLORSWATCH with the dialog item ID of the swatch custom control. This can only be used with TYPE_POINT3 or TYPE_RGBA parameters.TYPE_EDITBOX:This is a 3ds Max custom editbox control. Follow the TYPE_EDITBOX with the dialog item ID of the EditBox custom control. This can only be used with TYPE_STRING and TYPE_FILENAMAE parameters.TYPE_PICKNODEBUTTON:This is a 3ds Max CustButton control used in a CBT_CHECK mode with GREEN_WASH highlight color, as per node picking button conventions. Follow the control type with the dialog item ID of the CustButton custom control. When the user presses this button a PickModeCallback command mode is entered and the user can pick a scene node under the filtering of any validation supplied (see tags p_validator, p_classID and p_sclassID). This can only be used with TYPE_INODE parameters. Use the p_prompt tag to supply a status line prompt.TYPE_TEXMAPBUTTON:This is a 3ds Max CustButton control used in a CBT_PUSH mode. Follow the control type with the dialog item ID of the CustButton custom control. This button throws up a Map selector dialog when pressed and is Map drag-and-drop sensitive. This can only be used with TYPE_TEXMAP parameters. Use the p_prompt tag to supply a status line prompt.TYPE_MTLBUTTON:3ds Max CustButton control used in a CBT_PUSH mode. Follow the control type with the dialog item ID of the CustButton custom control. This button throws up a Material selector dialog when pressed and is Material drag-n-drop sensitive. This can only be used with TYPE_MTL parameters. Use the p_prompt tag to supply a status line prompt.TYPE_BITMAPBUTTON:This is a 3ds Max CustButton control used in a CBT_PUSH mode. Follow the control type with the dialog item ID of the CustButton custom control. This button throws up a standard 3ds Max Bitmap browser when pressed and is Bitmap drag-and-drop sensitive. Can only be used with TYPE_BITMAP parameters. Use the p_prompt tag to supply a status line prompt.TYPE_FILEOPENBUTTON:This is a 3ds Max CustButton control used in a CBT_PUSH mode. Follow the control type with the dialog item ID of the CustButton custom control. This button throws up a standard Windows Open File dialg for selecting a file name. Can only be used with TYPE_STRING and TYPE_FILENAME parameters. Use any of the p_caption, p_init_file and p_file_types tagsto further control the dialog.TYPE_FILESAVEBUTTON:This is a 3ds Max CustButton control used in a CBT_PUSH mode. Follow control type with the dialog item ID of the CustButton custom control. This button throws up a standard Windows Save File dialog for selecting a file name. Can only be used with TYPE_STRING and TYPE_FILENAME parameters. Use any of the p_caption, p_init_file and p_file_types tags to further control the dialog.TYPE_INTLISTBOX:TYPE_FLOATLISTBOX:This specifies a series of controls for displaying and managing a ListBox control containing an int or float Tab<> parameter. The setup consists of a ListBox control, 3 buttons for adding, replacing and deleting items in the list and a 3ds Max spinner to supply source values for Add & Replace. After the control type, you supply 4 dialog item IDs. The first is the ListBox control, then dialog item IDs for 3 CustButton controls for an Add, Replace and Delete button, respectively. Follow these with a spinner type, editbox/spinner dialog item ID pair and a display scale, exactly as for TYPE_SPINNER above. You can supply the value 0 for any of the Add, Replace, or Delete buttons if you don't need them in the dialog. This can only be used with the following parameter types:For TYPE_INTLISTBOX:TYPE_TIMEVALUE_TAB, TYPE_INT, TYPE_INT_TABFor TYPE_FLOATLISTBOX:TYPE_ANGLE_TAB, TYPE_PCNT_FRAC_TAB, TYPE_COLOR_CHANNEL_TAB, TYPE_FLOAT_TABThe Add/Replace/Delete buttons automatically keep the Tab<> parameter in step with the list.The TYPE_INT parameter type and TYPE_INTLISTBOX control type combination is recognized specially and is used to allow a dropdown list to be associated with an int parameter such that the selection index in the dropdown becomes the integer parameter value. In this mode, after the control type you supply the ListBox control ID, then a count followed by that many string resource IDs. These strings are used to populate the dropdown.Eg:p_ui, TYPE_INTLISTBOX, <list_ctrl_id>, <num_items>, [ <item1_str_id>, <item2_str_id>, ... ]These are the list control res ID, followed by a list of initial string items to load up given as a count (which can be 0 -- you can load them up dynamically in the dialog proc), and then a list of string resource IDs. See the std2_shader_type parameter in .CPP for an example.TYPE_STRINGLISTBOX:A series a controls for displaying and managing a ListBox control containing an string Tab<> parameter. The setup consists of a ListBox control, 3 buttons for adding, replacing and deleting items in the list and a 3ds Max CustEdit box to supply source strings for Add & Replace. After the control type, you supply 4 dialog item IDs. The first is the ListBox control, then dialog item IDs for 3 CustButton controls for an Add, Replace and Delete button, respectively. Follow these with the CustEdit control dialog item ID. You can supply the value 0 for any of the Add, Replace, Delete buttons or CustEdit control IDs if you don't need them in the dialog. Can only use with TYPE_STRING_TAB parameters.The Add/Replace/Delete buttons automatically keep the Tab<> parameter in step with the list.TYPE_NODELISTBOX:A series a controls for displaying and managing a ListBox control containing an INode Tab<> parameter. The setup consists of a ListBox control, 3 buttons for picking, replacing and deleting items in the list. After the control type, you supply 4 dialog item IDs. The first is the ListBox control, then dialog item IDs for 3 CustButton controls for a Pick, Replace and Delete button, respectively. THe Pick and Replace buttons act exactly as TYPE_PICKNODEBUTTONS to get nodes to add-to or replace-in the list. You can supply the value 0 for any of the Add, Replace, Delete buttons IDs if you don't need them in the dialog. Can only use with TYPE_INODE_TAB parameters.The Pick/Replace/Delete buttons automatically keep the Tab<> parameter in step with the list, including managing References as needed.TYPE_POINT3LISTBOX:A series a controls for displaying and managing a ListBox control containing an Point3 Tab<> parameter. The setup consists of a ListBox control, 3 buttons for adding, replacing and deleting items in the list, a source spinner type, three pairs of editboxes and spinners, and a display scale. After the control type, you supply 4 dialog item IDs. The first is the ListBox control, then dialog item IDs for 3 CustButton controls for an Add, Replace and Delete button, respectively. Follow this with the source spinner type, the editbox and spinner for the first item, the editbox and spinner for the second item, the editbox and spinner for the third item, and finally the display scale. Note that you can only use this with TYPE_POINT3_TAB parameters.TYPE_INT_COMBOBOX:This UI widget type can be used with parameters of type TYPE_INT and TYPE_INT_TAB. When used with parameters of type TYPE_INT, it needs to be followed by a series of controls for displaying and managing a combo-box control, as shown below:p_ui, TYPE_INT_COMBOBOX, <ctrl_id>, <num_items>, [ <item1_str_id>, <item2_str_id>, ... ]where:<ctrl_id>: is the resource id of the combo-box control<num_items>: is the number of items in the combo-box. If zero, no resource string ids need to be provided<item1_str_id>, <item2_str_id>, ...: optional string resource ids for the user visible names of the combo-box items.Example:pb_int_combobox1, _T("TYPE_INT_COMBOBOX1"),TYPE_INT, // parameter typeP_RESET_DEFAULT+P_ANIMATABLE, IDS_INT_COMBOBOX,p_ui, TYPE_INT_COMBOBOX,IDC_INT_COMBOBOX, // resource id of combo box ui widget4, // number of items in the comboboxIDS_COMBOBOX_ITEM1, IDS_COMBOBOX_ITEM2, IDS_COMBOBOX_ITEM3, IDS_COMBOBOX_ITEM4, // string resource ids representing the "human readable" names of the combobox itemsp_vals, 10, 50, 30, 20,p_default, 10,p_tooltip, IDS_INT_COMBOBOX,endWhen TYPE_INT_COMBOBOX is used with parameters of type TYPE_INT_TAB, it needs to be followed by a series of controls for displaying and managing one combo-box control per tab element, as in:p_ui, TYPE_INT_COMBOBOX, <ctrl_id1>,<ctrl_id2>,... <ctrl_idn>, <num_items>, [ <item1_str_id>, <item2_str_id>, ... ]where:<ctrl_idn>: resource ids of the combo-box control, 1 <= n <= number of tab elements<num_items>: is the number of items in each combo-box. If zero, no resource string ids need to be provided<item1_str_id>, <item2_str_id>, ...: optional string resource ids for the user visible names of the combo-box items.Example:pb_int_combobox2, _T("TYPE_INT_COMBOBOX2"),TYPE_INT_TAB, 2, // parameter type and number of elements in the tabP_RESET_DEFAULT+P_ANIMATABLE, IDS_LISTBOX,p_ui, TYPE_INT_COMBOBOX,IDC_INT_COMBOBOX2_1, IDC_INT_COMBOBOX2_2, // one combo-box resource id per tab element4, IDS_COMBOBOX_ITEM1, IDS_COMBOBOX_ITEM2, IDS_COMBOBOX_ITEM3, IDS_COMBOBOX_ITEM4, // string resource ids representing the "human readable" names of the combobox itemsp_vals, 10, 50, 30, 20,p_default, 10,p_tooltip, IDS_INT_COMBOBOX,endThe p_vals flag may follow a combo-box ui specification:p_vals, <list_of_integers>If p_vals is specified, the list of integer values that follows represents the values associated with each combo-box item. These values don't have to be consecutive or in order (increasing or decreasing). See TYPE_RADIO.If p_vals is not following p_ui, TYPE_INT_COMBOBOX, each combo-box item is mapped to an integer value starting with zero and up to the number of items in the combo-box.See examples above.

p_uix

This option is available in release 4.0 and later only.This specifies which additional rollup/map the parameter is supposed to appear in.

p_validator

Specifies a validator object (see Class PBValidator). You supply a pointer to an instance of a class derived from PBValidator. This class has a Validate() method which can return TRUE if the PB2Value passed to it is valid and FALSE otherwise. This can be used for instance by a node pick button to check if a choosen node is acceptable.Example:p_validator, &fOutValidator,

p_accessor

Specifies an accessor object (see Class PBAccessor). You supply a pointer to an instance of a class derived from PBAccessor. This class is used to provide a parameter Get/SetValue callback. The callback can be used to monitor parameter value changes, or to implement dynamically-computed virtual parameters. The class has two virtual methods, Get() and Set(), each given a PB2Value&, parameter ID, etc. In the case of a Get() you can modify the value in the PB2Value& to implement a virtual get.Example:p_accessor, &cmap_accessor,

p_vals

This defines radio button values in button order if button settings need to correspond to non-ordinal numbers. The value of the parameter defaults to the ordinal number of the radio button, starting at 0. You can optionally supply this tag immediately following the TYPE_RADIOp_ui. This tag should be followed by a list of numbers, one for each radio button. These numbers will become the (non-ordinal) parameter value corresponding to which button is set.Example:p_vals, 0,1,2,4,3 ,

p_refno

This is used if the flag value in a <required_param_specs> includes P_OWNERS_REF. For these reftarg parameters this specifies the reference number in the block's owner for this reference. If the parameter is a Tab<>, then the reference number supplied is the base reference number of the 0'th element, with sequential reference numbers for the following elements.Example:p_refno, UVGEN_REF,

p_subtexno

For Texmap items in Mtls this defines the integer SubTexmap index for this Texmap in the owner Mtl. This is used by TYPE_TEXMAPBUTTON ParamMap2 control types to give to the Material Edtor for automatic button and Drag And Drop handling.Example:p_subtexno, 0,

p_submtlno

Defines the sub-material integer index for this Mtl in an owner Mtl. This is used by TYPE_MTLBUTTON ParamMap2 control types to give to the Material Edtor for automatic button and Drag And Drop handling.Example:p_submtlno, 1,

p_dim

This allows you to supply a dimension for this parameter. You specify a ParamDimension* as the argument. Certain parameter types have an implied dimensions (see List of ParamType Choices for details). Defaults to defaultDim.Example:p_dim, stdWorldDim,

p_classID

This specifies the class ID used as a validator for the various reftarg parameters. This is used by the scripter, picknode filter, etc. For example, if you supply this in a TYPE_INODE parameter and use a TYPE_PICKNODE parammap control, the picker uses this class ID in the picking filter. If you set P_CAN_CONVERT in the parameter's flag, it applies an Object::CanConvertTo() test to the node's world state using the Class_ID supplied to perform the filter test.

p_sclassID

This specifies the super class ID used as a validator for the various reftarg parameters. For example, if you supply this in a TYPE_INODE parameter and use a TYPE_PICKNODE parammap control, the picker uses this super class ID in the picking filter.Example:p_sclassID, SHAPE_CLASS_ID,

p_enabled

The associated UI controls are enabled by default.supply TRUE or FALSE to indicate whether associated UI controls are enabled or disabled when the rollout dialog is first opened. If not supplied, defaults to enabled. Can be overridden by p_enable_ctrls below.Example:p_enabled, FALSE,

p_enable_ctrls

for TYPE_BOOLs, lists which other params would be automatically UI enabled/disabled by this paramfor TYPE_BOOL parametes, lists which other params should be automatically UI enabled/disabled by changes in state of this parameter. This allows you to easily set up conditional enabling of other UI controls based on the state of the controlling parameter.Example:p_enable_ctrls, 3, sel_falloff, sel_pinch, sel_bubble,

p_prompt

This sets the status line prompt string resource ID for various picker buttons.Example:p_prompt, IDS_PICK_CAM_PROMPT,

p_caption

This is a caption string resource ID for TYPE_FILEOPENBUTTON or TYPE_FILESAVEBUTTON open/save file dialogs.

p_init_file

This establishes the initial filename for open/save file dlgs. Use a direct string for the argument, not a resource ID. The filename can be changed at runtime; do this by setting the init_file member of the ParamDef for the parameter, e.g.: pbdesc->GetParamDef(file_param).init_file = new_file_name;

p_file_types

This is used by open/save file dialogs. The argument is a string resource ID. This string sets up the file type drop-down in the open/save dialog. It is in the following form:"<description1>|<pattern1>|<description2>|<pattern2>|...|"In other words, it is a sequence of file type descriptions and file type patterns each separated by a '|' vertical bar and terminated by a '|' vertical bar. For example:"Data(*.dat)|*.dat|Excel(*.csv)|*.csv|All|*.*|"specifies 3 types in the file type dropdown, the first reading "Data(*.dat)" and matching *.dat and the second reading "Excel(*.csv)" and matching *.csv and the third reading "All" and matching any file.

p_tooltip

This lets you specify a tooltip string to be displayed for the user interface control associated with a parameter described in a parameter block. The p_tooltip flag needs to be followed by the resource id of the string representing the tooltip.Example:p_tooltip, <tooltip_str_id>

end

Signals the end of the <required_param_specs> entry.

See Also