#include "PB2Export.h"
#include "maxheap.h"
#include "iparamb.h"
#include "iparamm.h"
#include "assetmanagement/AssetType.h"
#include "assetmanagement/AssetId.h"
#include "iparamb2Typedefs.h"
#include "TabTypes.h"
#include "paramtype.h"
#include "iparamb2.inline.h"
Classes | |
struct | PB2Value |
struct | ParamAlias |
class | IParamBlock2 |
class | PBValidator |
class | PBAccessor |
class | PBRescaleParamAccessor |
struct | ParamDef |
class | ClassDesc2 |
class | ParamBlockDesc2 |
struct | ParamBlockDesc2::map_spec |
class | ParamBlock2PLCB |
class | IParamBlock2PostLoadInfo |
Informational class about ParamBlock2 objects loaded from file. More... | |
class | IParamBlock2::ParameterIterator |
Provides standard C++ iteration functionality for the parameters stored by an IParamBlock2. More... | |
Namespaces | |
MaxSDK | |
These classes let you define skin weighting using a voxel or height map based algorithm. | |
MaxSDK::AssetManagement | |
Macros | |
#define | P_CLASS_PARAMS 0x0001 |
this block holds class-level parameters, attached to ClassDesc More... | |
#define | P_AUTO_CONSTRUCT 0x0002 |
instructs ClassDesc2 to auto-construct this block & wire it in, requires parameter block reference number More... | |
#define | P_AUTO_UI 0x0004 |
this block support automatic UI rollout managements, requires rollout template res ID, etc. More... | |
#define | P_USE_PARAMS 0x0008 |
this block shares (exactly) the paramdefs from another descriptor, requires address of source descriptor More... | |
#define | P_INCLUDE_PARAMS 0x0010 |
this block loads in a copy the paramdefs from another descriptor, requires address of source descriptor More... | |
#define | P_MULTIMAP 0x0020 |
indicates this block as multiple parameter maps ### move me More... | |
#define | P_CALLSETS_ON_LOAD 0x0040 |
causes CallSets() to be called during load PLCB for this block More... | |
#define | P_HASCATEGORY 0x0080 |
indicates, that category field is defined for rollup (after rollup proc) More... | |
#define | P_TEMPLATE_UI 0x0100 |
indicates that dialog templates will be provided or constructed More... | |
#define | P_VERSION 0x0200 |
Indicates a parameter block version number is specified. More... | |
#define | P_AUTO_UI_QT 0x0400 |
This block supports automatic UI management through Qt. More... | |
#define | P_SCRIPTED_CLASS 0x1000 |
belongs to a scripted plug-in class More... | |
#define | P_TEMPORARY 0x2000 |
temporary descriptor built during scene load to support schema migration More... | |
#define | P_ANIMATABLE 0x00000001 |
animatable parameter More... | |
#define | P_TRANSIENT 0x00000002 |
do not store actual value, PBAccessor-derived More... | |
#define | P_NO_INIT 0x00000004 |
do not initialize More... | |
#define | P_COMPUTED_NAME 0x00000008 |
call compute name fn to get name More... | |
#define | P_INVISIBLE 0x00000010 |
not visible in track view (if an animatable) More... | |
#define | P_RESET_DEFAULT 0x00000020 |
do not make create params sticky, reset to defaults always More... | |
#define | P_SUBANIM 0x00000040 |
non-animatable reference parameter is still a subanim (makes it visible in TV) More... | |
#define | P_TV_SHOW_ALL 0x00000080 |
for Tab<> animatables, show all entries even if no controller assigned More... | |
#define | P_NO_REF 0x00000100 |
for reference target params do not maintain Reference automatically More... | |
#define | P_OWNERS_REF 0x00000200 |
reference parameter maintained by owner, specify owner's reference number via the p_refno tag More... | |
#define | P_CAN_CONVERT 0x00000400 |
indicates the p_classid validator is is in a CanConvertoTo() call, rather than as exact class More... | |
#define | P_SUBTEX 0x00000800 |
indicates texmap parameter is kept by owner using MtlBase::xSubTexmap protocol, give subtex # in p_subtexno More... | |
#define | P_VARIABLE_SIZE 0x00001000 |
Tab<> parameter is variable size allowing scripted changes. More... | |
#define | P_NO_AUTO_LABELS 0x00002000 |
don't auto-set map & mtl names for associated button UI controls More... | |
#define | P_SHORT_LABELS 0x00004000 |
use short auto names for associated button UI controls More... | |
#define | P_READ_ONLY 0x00008000 |
this parameter is not assignable through MAXScript (allows try-and-buy 3rd-party plugins) More... | |
#define | P_OBSOLETE 0x40000000 |
Indicates parameter is obsolete. More... | |
#define | P_READ_SECOND_FLAG_VALUE 0x80000000 |
Indicates that a second per parameter constructor-specifiable flag value follows the first in the ParamBlockDesc2. More... | |
#define | P_USE_ACCESSOR_ONLY 0x00000001 |
Indicates whether or not when doing a get or set on a param2 value that we only go through the accessor if one is available. More... | |
#define | P_USE_ACCESSOR_ONLY_INTERNAL 0x0000000100000000 |
Used internally in ParamDef::flags when P_USE_ACCESSOR_ONLY is specified in the second flag parameter of the ParamDef constructor (see P_READ_SECOND_FLAG_VALUE). More... | |
#define | P_USE_NODE_TM_VALIDITY 0x00000002 |
Indicates that the parameter block's validity interval is intersected with that of the Node parameter's transform. More... | |
#define | P_USE_NODE_TM_VALIDITY_INTERNAL 0x0000000200000000 |
Used internally in ParamDef::flags when P_USE_NODE_TM_VALIDITY is specified in the second flag parameter of the ParamDef constructor (see P_READ_SECOND_FLAG_VALUE). More... | |
#define | P_USE_NODE_OS_VALIDITY 0x00000004 |
Indicates that the parameter block's validity interval is intersected with that of the Node parameter's object state (including the world space modifiers). More... | |
#define | P_USE_NODE_OS_VALIDITY_INTERNAL 0x0000000400000000 |
Used internally in ParamDef::flags when P_USE_NODE_OS_VALIDITY is specified in the second flag parameter of the ParamDef constructor (see P_READ_SECOND_FLAG_VALUE). More... | |
#define | P_NO_MACRO_RECORDER 0x00000008 |
Indicates that changes to this parameter will not be recorded by the macro recorder. More... | |
#define | P_NO_MACRO_RECORDER_INTERNAL 0x0000000800000000 |
Used internally in ParamDef::flags when P_NO_MACRO_RECORDER is specified in the second flag parameter of the ParamDef constructor (see P_READ_SECOND_FLAG_VALUE). More... | |
#define | P_ENUMERATE_AS_ASSET 0x00000010 |
Indicates that the parameter's value will be recognized and treated as an asset without extra code from the plug-in developer. More... | |
#define | P_ENUMERATE_AS_ASSET_INTERNAL 0x0000001000000000 |
Used internally in ParamDef::flags when P_ENUMERATE_AS_ASSET is specified in the second flag parameter of the ParamDef constructor (see P_READ_SECOND_FLAG_VALUE). More... | |
#define | P_READ_ONLY_ASSET 0x00000020 |
Indicates that the parameter's value cannot be changed via asset retargetting operations, or direct editing via Maxscript. More... | |
#define | P_READ_ONLY_ASSET_INTERNAL 0x0000002000000000 |
Used internally in ParamDef::flags when P_READ_ONLY_ASSET is specified in the second flag parameter of the ParamDef constructor (see P_READ_SECOND_FLAG_VALUE). More... | |
#define | P_IS_REF 0x0000000000010000 |
is a reference target parameter More... | |
#define | P_HAS_DEFAULT 0x0000000000020000 |
parameter has a default value More... | |
#define | P_HAS_CUR_DEFAULT 0x0000000000040000 |
has a snapshotted current default value More... | |
#define | P_HAS_MS_DEFAULT 0x0000000000080000 |
has a MAXScript default More... | |
#define | P_HAS_RANGE 0x0000000000100000 |
has a range specified More... | |
#define | P_HAS_CLASS_ID 0x0000000000200000 |
a classID validator was given More... | |
#define | P_HAS_SCLASS_ID 0x0000000000400000 |
an SClassID validator was given More... | |
#define | P_UI_ENABLED 0x0000000000800000 |
indicates whether UI controls are initially enabled or disabled More... | |
#define | P_HAS_PROMPT 0x0000000001000000 |
has status line prompt string res ID for various picker buttons More... | |
#define | P_HAS_CAPTION 0x0000000002000000 |
has caption string res ID for open/save file dialogs More... | |
#define | P_HAS_FILETYPES 0x0000000004000000 |
has file types string res ID for open/save file dialogs (in MAXScript type: form) More... | |
#define | P_HAS_REFNO 0x0000000008000000 |
has reference number supplied More... | |
#define | P_HAS_SUBTEXNO 0x0000000010000000 |
has sub-texture number supplied More... | |
#define | P_INCLUDED 0x0000000020000000 |
[INTERNAL ONLY] Sets a ParamDef as included from another descriptor. More... | |
#define | P_HAS_TOOLTIP 0x0001000000000000 |
has ToolTip string More... | |
#define | P_HAS_ASSETTYPE 0x0002000000000000 |
has asset type More... | |
#define | P_HAS_ASSETTYPENAME 0x0004000000000000 |
has asset type name More... | |
#define | P_DEFAULTS_AND_RANGES_IN_METERS 0x0008000000000000 |
p_defaults_and_ranges_in_meters tag specified More... | |
#define | base_type(t) ((ParamType2)((t) & ~(TYPE_TAB))) |
get base type ignoring Tab flag More... | |
#define | root_type(t) ((ParamType2)((t) & ~(TYPE_TAB | TYPE_BY_VAL | TYPE_BY_REF | TYPE_BY_PTR))) |
get base type ignoring all flags More... | |
#define | root_value_type(t) ((ParamType2)((t) & ~(TYPE_BY_VAL | TYPE_BY_REF | TYPE_BY_PTR))) |
get base type ignoring all flags except Tab More... | |
#define | is_tab(t) ((t) & TYPE_TAB) |
is this parameter a table? More... | |
#define | is_by_val(t) ((t) & TYPE_BY_VAL) |
is this parameter passed by value? (only for function publishing) More... | |
#define | is_by_ref(t) ((t) & TYPE_BY_REF) |
is this parameter passed by reference? (only for function publishing) More... | |
#define | is_by_ptr(t) ((t) & TYPE_BY_PTR) |
is this parameter passed by pointer? (only for function publishing) More... | |
#define | is_ref(d) (((d).flags & (P_IS_REF | P_NO_REF | P_OWNERS_REF)) == P_IS_REF) |
is this parameter a true local reference maker? More... | |
#define | has_ui(d) ((d).ctrl_count > 0) |
this parameter has UI info defined More... | |
#define | reftarg_type(t) |
#define | PB_RESCALE_PARAM_ACCESSOR_INTERFACE Interface_ID(0x195f6f32, 0x5f2126d0) |
This interface should be implemented by PBAccessor-derived classes if it needs to respond differently to Set calls when the system is performing rescaling of parameter block parameters. More... | |
#define | IPARAMBLOCK2POSTLOADINFO_ID Interface_ID(0x6c7b290a, 0x7c56423c) |
Functions | |
PB2Export IParamBlock2 * | CreateParameterBlock2 (ParamBlockDesc2 *pdesc, ReferenceMaker *iowner) |
PB2Export void | SetPB2MacroRecorderInterface (MacroRecorder *mri) |
PB2Export IParamBlock2 * | UpdateParameterBlock2 (ParamBlockDescID *pdescOld, int oldCount, IParamBlock *oldPB, ParamBlockDesc2 *pdescNew, IParamBlock2 *newPB=NULL) |
PB2Export int | CopyParamBlock2ToParamBlock (IParamBlock2 *pb2, IParamBlock *pb1, ParamBlockDescID *pdescPB1, int pb1Count) |
PB2Export bool | IsParamTypeAnimatable (const ParamType2 t) |
#define P_CLASS_PARAMS 0x0001 |
this block holds class-level parameters, attached to ClassDesc
#define P_AUTO_CONSTRUCT 0x0002 |
instructs ClassDesc2 to auto-construct this block & wire it in, requires parameter block reference number
#define P_AUTO_UI 0x0004 |
this block support automatic UI rollout managements, requires rollout template res ID, etc.
#define P_USE_PARAMS 0x0008 |
this block shares (exactly) the paramdefs from another descriptor, requires address of source descriptor
#define P_INCLUDE_PARAMS 0x0010 |
this block loads in a copy the paramdefs from another descriptor, requires address of source descriptor
#define P_MULTIMAP 0x0020 |
indicates this block as multiple parameter maps ### move me
#define P_CALLSETS_ON_LOAD 0x0040 |
causes CallSets() to be called during load PLCB for this block
#define P_HASCATEGORY 0x0080 |
indicates, that category field is defined for rollup (after rollup proc)
#define P_TEMPLATE_UI 0x0100 |
indicates that dialog templates will be provided or constructed
#define P_VERSION 0x0200 |
Indicates a parameter block version number is specified.
When used as a ParamBlockDesc2 flag, a version number is expected immediately after the flags field, before the reference number field. This version number will be stored as ParamBlockDesc2::version and returned as IParamBlock2::GetVersion() indicates a version number is specified (integer value, before the reference number field)
#define P_AUTO_UI_QT 0x0400 |
This block supports automatic UI management through Qt.
Requires the class descriptor, and the implementation of ClassDesc2::CreateQtWidget(). Incompatible with P_AUTO_UI and P_TEMPLATE_UI. See: Qt in Parameter Maps and Parameter Blocks.
#define P_SCRIPTED_CLASS 0x1000 |
belongs to a scripted plug-in class
#define P_TEMPORARY 0x2000 |
temporary descriptor built during scene load to support schema migration
#define P_ANIMATABLE 0x00000001 |
animatable parameter
#define P_TRANSIENT 0x00000002 |
do not store actual value, PBAccessor-derived
#define P_NO_INIT 0x00000004 |
do not initialize
#define P_COMPUTED_NAME 0x00000008 |
call compute name fn to get name
#define P_INVISIBLE 0x00000010 |
not visible in track view (if an animatable)
#define P_RESET_DEFAULT 0x00000020 |
do not make create params sticky, reset to defaults always
#define P_SUBANIM 0x00000040 |
non-animatable reference parameter is still a subanim (makes it visible in TV)
#define P_TV_SHOW_ALL 0x00000080 |
for Tab<> animatables, show all entries even if no controller assigned
#define P_NO_REF 0x00000100 |
for reference target params do not maintain Reference automatically
#define P_OWNERS_REF 0x00000200 |
reference parameter maintained by owner, specify owner's reference number via the p_refno tag
#define P_CAN_CONVERT 0x00000400 |
indicates the p_classid validator is is in a CanConvertoTo() call, rather than as exact class
#define P_SUBTEX 0x00000800 |
indicates texmap parameter is kept by owner using MtlBase::xSubTexmap protocol, give subtex # in p_subtexno
#define P_VARIABLE_SIZE 0x00001000 |
Tab<> parameter is variable size allowing scripted changes.
#define P_NO_AUTO_LABELS 0x00002000 |
don't auto-set map & mtl names for associated button UI controls
#define P_SHORT_LABELS 0x00004000 |
use short auto names for associated button UI controls
#define P_READ_ONLY 0x00008000 |
this parameter is not assignable through MAXScript (allows try-and-buy 3rd-party plugins)
#define P_OBSOLETE 0x40000000 |
Indicates parameter is obsolete.
#define P_READ_SECOND_FLAG_VALUE 0x80000000 |
Indicates that a second per parameter constructor-specifiable flag value follows the first in the ParamBlockDesc2.
#define P_USE_ACCESSOR_ONLY 0x00000001 |
Indicates whether or not when doing a get or set on a param2 value that we only go through the accessor if one is available.
#define P_USE_ACCESSOR_ONLY_INTERNAL 0x0000000100000000 |
Used internally in ParamDef::flags when P_USE_ACCESSOR_ONLY is specified in the second flag parameter of the ParamDef constructor (see P_READ_SECOND_FLAG_VALUE).
#define P_USE_NODE_TM_VALIDITY 0x00000002 |
Indicates that the parameter block's validity interval is intersected with that of the Node parameter's transform.
This flag has no effect for parameters types other than TYPE_INODE and TYPE_INODE_TAB. This flag needs to be specified as the second flag value when declaring ParameterBlock2 parameters (see P_READ_SECOND_FLAG_VALUE).
#define P_USE_NODE_TM_VALIDITY_INTERNAL 0x0000000200000000 |
Used internally in ParamDef::flags when P_USE_NODE_TM_VALIDITY is specified in the second flag parameter of the ParamDef constructor (see P_READ_SECOND_FLAG_VALUE).
#define P_USE_NODE_OS_VALIDITY 0x00000004 |
Indicates that the parameter block's validity interval is intersected with that of the Node parameter's object state (including the world space modifiers).
This flag has no effect for parameters types other than TYPE_INODE and TYPE_INODE_TAB. This flag needs to be specified as the second flag value when declaring ParameterBlock2 parameters (see P_READ_SECOND_FLAG_VALUE).
#define P_USE_NODE_OS_VALIDITY_INTERNAL 0x0000000400000000 |
Used internally in ParamDef::flags when P_USE_NODE_OS_VALIDITY is specified in the second flag parameter of the ParamDef constructor (see P_READ_SECOND_FLAG_VALUE).
#define P_NO_MACRO_RECORDER 0x00000008 |
Indicates that changes to this parameter will not be recorded by the macro recorder.
Useful when using P_USE_ACCESSOR_ONLY entries to control other parameters indirectly. This flag needs to be specified as the second flag value when declaring ParameterBlock2 parameters (see P_READ_SECOND_FLAG_VALUE).
#define P_NO_MACRO_RECORDER_INTERNAL 0x0000000800000000 |
Used internally in ParamDef::flags when P_NO_MACRO_RECORDER is specified in the second flag parameter of the ParamDef constructor (see P_READ_SECOND_FLAG_VALUE).
#define P_ENUMERATE_AS_ASSET 0x00000010 |
Indicates that the parameter's value will be recognized and treated as an asset without extra code from the plug-in developer.
For example, the plugin will not need to override Animatable::EnumAuxFiles() in order for the parameter's value to show up in the Asset Tracker System, to be archived, etc. This flag needs to be specified as the second flag value when declaring ParameterBlock2 parameters (see P_READ_SECOND_FLAG_VALUE).
#define P_ENUMERATE_AS_ASSET_INTERNAL 0x0000001000000000 |
Used internally in ParamDef::flags when P_ENUMERATE_AS_ASSET is specified in the second flag parameter of the ParamDef constructor (see P_READ_SECOND_FLAG_VALUE).
#define P_READ_ONLY_ASSET 0x00000020 |
Indicates that the parameter's value cannot be changed via asset retargetting operations, or direct editing via Maxscript.
By setting this flag, the parameter cannot be retargetted via the Asset Tracking System, and cannot be edited via Maxscript. This flag needs to be specified as the second flag value when declaring ParameterBlock2 parameters (see P_READ_SECOND_FLAG_VALUE).
#define P_READ_ONLY_ASSET_INTERNAL 0x0000002000000000 |
Used internally in ParamDef::flags when P_READ_ONLY_ASSET is specified in the second flag parameter of the ParamDef constructor (see P_READ_SECOND_FLAG_VALUE).
#define P_IS_REF 0x0000000000010000 |
is a reference target parameter
#define P_HAS_DEFAULT 0x0000000000020000 |
parameter has a default value
#define P_HAS_CUR_DEFAULT 0x0000000000040000 |
has a snapshotted current default value
#define P_HAS_MS_DEFAULT 0x0000000000080000 |
has a MAXScript default
#define P_HAS_RANGE 0x0000000000100000 |
has a range specified
#define P_HAS_CLASS_ID 0x0000000000200000 |
a classID validator was given
#define P_HAS_SCLASS_ID 0x0000000000400000 |
an SClassID validator was given
#define P_UI_ENABLED 0x0000000000800000 |
indicates whether UI controls are initially enabled or disabled
#define P_HAS_PROMPT 0x0000000001000000 |
has status line prompt string res ID for various picker buttons
#define P_HAS_CAPTION 0x0000000002000000 |
has caption string res ID for open/save file dialogs
#define P_HAS_FILETYPES 0x0000000004000000 |
has file types string res ID for open/save file dialogs (in MAXScript type: form)
#define P_HAS_REFNO 0x0000000008000000 |
has reference number supplied
#define P_HAS_SUBTEXNO 0x0000000010000000 |
has sub-texture number supplied
#define P_INCLUDED 0x0000000020000000 |
#define P_HAS_TOOLTIP 0x0001000000000000 |
has ToolTip string
#define P_HAS_ASSETTYPE 0x0002000000000000 |
has asset type
#define P_HAS_ASSETTYPENAME 0x0004000000000000 |
has asset type name
#define P_DEFAULTS_AND_RANGES_IN_METERS 0x0008000000000000 |
p_defaults_and_ranges_in_meters tag specified
#define base_type | ( | t | ) | ((ParamType2)((t) & ~(TYPE_TAB))) |
get base type ignoring Tab flag
#define root_type | ( | t | ) | ((ParamType2)((t) & ~(TYPE_TAB | TYPE_BY_VAL | TYPE_BY_REF | TYPE_BY_PTR))) |
get base type ignoring all flags
#define root_value_type | ( | t | ) | ((ParamType2)((t) & ~(TYPE_BY_VAL | TYPE_BY_REF | TYPE_BY_PTR))) |
get base type ignoring all flags except Tab
#define is_tab | ( | t | ) | ((t) & TYPE_TAB) |
is this parameter a table?
#define is_by_val | ( | t | ) | ((t) & TYPE_BY_VAL) |
is this parameter passed by value? (only for function publishing)
#define is_by_ref | ( | t | ) | ((t) & TYPE_BY_REF) |
is this parameter passed by reference? (only for function publishing)
#define is_by_ptr | ( | t | ) | ((t) & TYPE_BY_PTR) |
is this parameter passed by pointer? (only for function publishing)
#define is_ref | ( | d | ) | (((d).flags & (P_IS_REF | P_NO_REF | P_OWNERS_REF)) == P_IS_REF) |
is this parameter a true local reference maker?
#define has_ui | ( | d | ) | ((d).ctrl_count > 0) |
this parameter has UI info defined
#define reftarg_type | ( | t | ) |
#define PB_RESCALE_PARAM_ACCESSOR_INTERFACE Interface_ID(0x195f6f32, 0x5f2126d0) |
This interface should be implemented by PBAccessor-derived classes if it needs to respond differently to Set calls when the system is performing rescaling of parameter block parameters.
See the EggShape sample plugin for an example.
#define IPARAMBLOCK2POSTLOADINFO_ID Interface_ID(0x6c7b290a, 0x7c56423c) |
PB2Export IParamBlock2* CreateParameterBlock2 | ( | ParamBlockDesc2 * | pdesc, |
ReferenceMaker * | iowner | ||
) |
PB2Export void SetPB2MacroRecorderInterface | ( | MacroRecorder * | mri | ) |
PB2Export IParamBlock2* UpdateParameterBlock2 | ( | ParamBlockDescID * | pdescOld, |
int | oldCount, | ||
IParamBlock * | oldPB, | ||
ParamBlockDesc2 * | pdescNew, | ||
IParamBlock2 * | newPB = NULL |
||
) |
PB2Export int CopyParamBlock2ToParamBlock | ( | IParamBlock2 * | pb2, |
IParamBlock * | pb1, | ||
ParamBlockDescID * | pdescPB1, | ||
int | pb1Count | ||
) |
PB2Export bool IsParamTypeAnimatable | ( | const ParamType2 | t | ) |