This reference page is linked to from the following overview topics: ParamBlockDesc2 Flags, General Best Practices, Parameter Block UI, Creating a Parameter Block, Parameter Block Flags, Parameter Block UI Specification Arguments, Parameter Flags, Parameter Tags, Sub-Texture Map Parameters, Using Multiple Roll-ups, Parameter/Result Types, Creating Parameter Blocks, Adding and Deleting Parameters, Supporting Save to Previous.
#include "PB2Export.h"#include "maxheap.h"#include "iparamb.h"#include "iparamm.h"#include "assetmanagement\AssetType.h"#include "assetmanagement\AssetId.h"#include "strbasic.h"#include "iparamb2Typedefs.h"#include "TabTypes.h"#include "paramtype.h"Go to the source code of this file.
Classes |
|
| struct | PB2Value |
| struct | ParamAlias |
| class | IParamBlock2 |
| class | PBValidator |
| class | PBAccessor |
| struct | ParamDef |
| class | ClassDesc2 |
| class | ParamBlockDesc2 |
| struct | ParamBlockDesc2::map_spec |
| class | ParamBlock2PLCB |
| class | IParamBlock2PostLoadInfo |
| Informational class about ParamBlock2
objects loaded from file. More... |
|
Namespaces |
|
| namespace | MaxSDK |
| namespace | MaxSDK::AssetManagement |
Defines |
|
| #define | P_CLASS_PARAMS 0x0001 |
| this block holds class-level parameters,
attached to
ClassDesc |
|
| #define | P_AUTO_CONSTRUCT 0x0002 |
| instructs ClassDesc2 to autoconstuct this block
& wire it in, requires pblock refno |
|
| #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 mulitple 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 rollupproc) |
|
| #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. |
|
| #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 param |
|
| #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 param 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 reftarg params do not maintain Reference
automatically |
|
| #define | P_OWNERS_REF 0x00000200 |
| reference param 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 param is kept by owner
using MtlBase::xSubTexmap protocol, give subtex # in p_subtexno
|
|
| #define | P_VARIABLE_SIZE 0x00001000 |
| Tab<> param 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 param
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_IS_REF 0x0000000000010000 |
| is a reftarget param |
|
| #define | P_HAS_DEFAULT 0x0000000000020000 |
| has accessor function => a virtual param
|
|
| #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 diabled |
|
| #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
dlgs |
|
| #define | P_HAS_FILETYPES 0x0000000004000000 |
| has file types string res ID for open/save
file dlgs (in MAXScript type: form) |
|
| #define | P_HAS_REFNO 0x0000000008000000 |
| has refno supplied |
|
| #define | P_HAS_SUBTEXNO 0x0000000010000000 |
| has subtexno supplied |
|
| #define | P_INCLUDED 0x0000000020000000 |
| [INTERNAL ONLY] Sets a ParamDef as included from another
descriptor. |
|
| #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 | 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 | is_tab(t) ((t) & TYPE_TAB) |
| is this param a table? |
|
| #define | is_by_val(t) ((t) & TYPE_BY_VAL) |
| is this param passed by value? (only for
FnPub) |
|
| #define | is_by_ref(t) ((t) & TYPE_BY_REF) |
| is this param passed by reference? (only for
FnPub) |
|
| #define | is_by_ptr(t) ((t) & TYPE_BY_PTR) |
| is this param passed by pointer? (only for
FnPub) |
|
| #define | is_ref(d) (((d).flags & (P_IS_REF | P_NO_REF | P_OWNERS_REF)) == P_IS_REF) |
| is this param a true local refmaker?
|
|
| #define | has_ui(d) ((d).ctrl_count > 0) |
| this param has UI info defined |
|
| #define | reftarg_type(t) |
| #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
Definition at line 38 of file iparamb2.h.
| #define P_AUTO_CONSTRUCT 0x0002 |
instructs ClassDesc2 to autoconstuct this block & wire it in, requires pblock refno
Definition at line 39 of file iparamb2.h.
| #define P_AUTO_UI 0x0004 |
this block support automatic UI rollout managements, requires rollout template res ID, etc.
Definition at line 40 of file iparamb2.h.
| #define P_USE_PARAMS 0x0008 |
this block shares (exactly) the paramdefs from another descriptor, requires address of source descriptor
Definition at line 41 of file iparamb2.h.
| #define P_INCLUDE_PARAMS 0x0010 |
this block loads in a copy the paramdefs from another descriptor, requires address of source descriptor
Definition at line 42 of file iparamb2.h.
| #define P_MULTIMAP 0x0020 |
indicates this block as mulitple parameter maps ### move me
Definition at line 43 of file iparamb2.h.
| #define P_CALLSETS_ON_LOAD 0x0040 |
causes CallSets() to be called during load PLCB for this block
Definition at line 44 of file iparamb2.h.
| #define P_HASCATEGORY 0x0080 |
indicates, that category field is defined for rollup (after rollupproc)
Definition at line 45 of file iparamb2.h.
| #define P_TEMPLATE_UI 0x0100 |
indicates that dialog templates will be provided or constructed
Definition at line 46 of file iparamb2.h.
| #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 pblock refno)
Definition at line 50 of file iparamb2.h.
| #define P_SCRIPTED_CLASS 0x1000 |
belongs to a scripted plug-in class
Definition at line 53 of file iparamb2.h.
| #define P_TEMPORARY 0x2000 |
temporary descriptor built during scene load to support schema migration
Definition at line 54 of file iparamb2.h.
| #define P_ANIMATABLE 0x00000001 |
| #define P_TRANSIENT 0x00000002 |
do not store actual value, PBAccessor-derived
Definition at line 58 of file iparamb2.h.
| #define P_NO_INIT 0x00000004 |
| #define P_COMPUTED_NAME 0x00000008 |
call compute name fn to get name
Definition at line 60 of file iparamb2.h.
| #define P_INVISIBLE 0x00000010 |
not visible in track view (if an animatable)
Definition at line 61 of file iparamb2.h.
| #define P_RESET_DEFAULT 0x00000020 |
do not make create params sticky, reset to defaults always
Definition at line 62 of file iparamb2.h.
| #define P_SUBANIM 0x00000040 |
non-animatable reference param is still a subanim (makes it visible in TV)
Definition at line 63 of file iparamb2.h.
| #define P_TV_SHOW_ALL 0x00000080 |
for Tab<> animatables, show all entries even if no controller assigned
Definition at line 64 of file iparamb2.h.
| #define P_NO_REF 0x00000100 |
for reftarg params do not maintain Reference automatically
Definition at line 65 of file iparamb2.h.
| #define P_OWNERS_REF 0x00000200 |
reference param maintained by owner, specify owner's reference number via the p_refno tag
Definition at line 66 of file iparamb2.h.
| #define P_CAN_CONVERT 0x00000400 |
indicates the p_classid validator is is in a CanConvertoTo() call, rather than as exact class
Definition at line 67 of file iparamb2.h.
| #define P_SUBTEX 0x00000800 |
indicates texmap param is kept by owner using MtlBase::xSubTexmap protocol, give subtex # in p_subtexno
Definition at line 68 of file iparamb2.h.
| #define P_VARIABLE_SIZE 0x00001000 |
Tab<> param is variable size allowing scripted changes.
Definition at line 69 of file iparamb2.h.
| #define P_NO_AUTO_LABELS 0x00002000 |
don't auto-set map & mtl names for associated button UI controls
Definition at line 70 of file iparamb2.h.
| #define P_SHORT_LABELS 0x00004000 |
use short auto names for associated button UI controls
Definition at line 71 of file iparamb2.h.
| #define P_READ_ONLY 0x00008000 |
this parameter is not assignable through MAXScript (allows try-and-buy 3rd-party plugins)
Definition at line 72 of file iparamb2.h.
| #define P_OBSOLETE 0x40000000 |
Indicates parameter is obsolete.
Definition at line 77 of file iparamb2.h.
| #define P_READ_SECOND_FLAG_VALUE 0x80000000 |
Indicates that a second per param constructor-specifiable flag value follows the first in the ParamBlockDesc2.
Definition at line 83 of file iparamb2.h.
| #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.
Definition at line 90 of file iparamb2.h.
| #define P_IS_REF 0x0000000000010000 |
| #define P_HAS_DEFAULT 0x0000000000020000 |
has accessor function => a virtual param
Definition at line 95 of file iparamb2.h.
| #define P_HAS_CUR_DEFAULT 0x0000000000040000 |
has a snapshotted current default value
Definition at line 96 of file iparamb2.h.
| #define P_HAS_MS_DEFAULT 0x0000000000080000 |
| #define P_HAS_RANGE 0x0000000000100000 |
| #define P_HAS_CLASS_ID 0x0000000000200000 |
| #define P_HAS_SCLASS_ID 0x0000000000400000 |
an SClassID validator was given
Definition at line 100 of file iparamb2.h.
| #define P_UI_ENABLED 0x0000000000800000 |
indicates whether UI controls are initially enabled or diabled
Definition at line 101 of file iparamb2.h.
| #define P_HAS_PROMPT 0x0000000001000000 |
has status line prompt string res ID for various picker buttons
Definition at line 102 of file iparamb2.h.
| #define P_HAS_CAPTION 0x0000000002000000 |
has caption string res ID for open/save file dlgs
Definition at line 103 of file iparamb2.h.
| #define P_HAS_FILETYPES 0x0000000004000000 |
has file types string res ID for open/save file dlgs (in MAXScript type: form)
Definition at line 104 of file iparamb2.h.
| #define P_HAS_REFNO 0x0000000008000000 |
| #define P_HAS_SUBTEXNO 0x0000000010000000 |
| #define P_INCLUDED 0x0000000020000000 |
[INTERNAL ONLY] Sets a ParamDef as included from another descriptor.
If this is set on a ParamDef, its member ptrs have been copied from another descriptor, and will not be released
Definition at line 110 of file iparamb2.h.
| #define P_HAS_TOOLTIP 0x0001000000000000 |
| #define P_HAS_ASSETTYPE 0x0002000000000000 |
| #define P_HAS_ASSETTYPENAME 0x0004000000000000 |
| #define base_type | ( | t | ) | ((ParamType2)((t) & ~(TYPE_TAB))) |
get base type ignoring Tab flag
Definition at line 118 of file iparamb2.h.
| #define root_type | ( | t | ) | ((ParamType2)((t) & ~(TYPE_TAB | TYPE_BY_VAL | TYPE_BY_REF | TYPE_BY_PTR))) |
get base type ignoring all flags
Definition at line 119 of file iparamb2.h.
| #define is_tab | ( | t | ) | ((t) & TYPE_TAB) |
| #define is_by_val | ( | t | ) | ((t) & TYPE_BY_VAL) |
is this param passed by value? (only for FnPub)
Definition at line 121 of file iparamb2.h.
| #define is_by_ref | ( | t | ) | ((t) & TYPE_BY_REF) |
is this param passed by reference? (only for FnPub)
Definition at line 122 of file iparamb2.h.
| #define is_by_ptr | ( | t | ) | ((t) & TYPE_BY_PTR) |
is this param passed by pointer? (only for FnPub)
Definition at line 123 of file iparamb2.h.
| #define is_ref | ( | d | ) | (((d).flags & (P_IS_REF | P_NO_REF | P_OWNERS_REF)) == P_IS_REF) |
is this param a true local refmaker?
Definition at line 124 of file iparamb2.h.
| #define has_ui | ( | d | ) | ((d).ctrl_count > 0) |
this param has UI info defined
Definition at line 125 of file iparamb2.h.
| #define reftarg_type | ( | t | ) |
(base_type(t) == TYPE_MTL || base_type(t) == TYPE_TEXMAP || base_type(t) == TYPE_INODE || \ base_type(t) == TYPE_REFTARG || base_type(t) == TYPE_PBLOCK2 || base_type(t) == TYPE_OBJECT || base_type(t) == TYPE_CONTROL)
Definition at line 126 of file iparamb2.h.
| #define IPARAMBLOCK2POSTLOADINFO_ID Interface_ID(0x6c7b290a, 0x7c56423c) |
Definition at line 3435 of file iparamb2.h.
| 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 | ||
| ) |
bool Swirl::SpecifySaveReferences(ReferenceSaveManager& referenceSaveManager)
{
// if saving to previous version that used pb1 instead of pb2...
DWORD saveVersion = GetSavingVersion();
if (saveVersion != 0 && saveVersion <= MAX_RELEASE_R13)
{
// create the pb1 instance
IParamBlock* paramBlock1 = CreateParameterBlock( pbdesc,swirl_num_params_ver1,1);
DbgAssert(paramBlock1 != NULL);
if (paramBlock1)
{
// copy data from the pb2 to the pb1
int numParamsCopied = CopyParamBlock2ToParamBlock(pblock,paramBlock1,pbdesc,swirl_num_params_ver1);
DbgAssert(numParamsCopied == swirl_num_params_ver1);
// register the reference slot replacement
referenceSaveManager.ReplaceReferenceSlot(PBLOCK_REF,paramBlock1);
}
}
return Texmap::SpecifySaveReferences(referenceSaveManager);
}
| PB2Export bool IsParamTypeAnimatable | ( | const ParamType2 | t | ) |