3ds Max C++ API Reference
MSPluginPBAccessor Class Reference

#include <mxsPlugin.h>

+ Inheritance diagram for MSPluginPBAccessor:

Public Member Functions

 MSPluginPBAccessor (MSPluginClass *ipc, BlockID id)
 
void Set (PB2Value &v, ReferenceMaker *owner, ParamID id, int tabIndex, TimeValue t) override
 
void PreSet (PB2Value &v, ReferenceMaker *owner, ParamID id, int tabIndex, TimeValue t) override
 
void PostSet (const PB2Value &v, ReferenceMaker *owner, ParamID id, int tabIndex, TimeValue t) override
 
void Get (PB2Value &v, ReferenceMaker *owner, ParamID id, int tabIndex, TimeValue t, Interval &valid) override
 
BOOL KeyFrameAtTime (ReferenceMaker *owner, ParamID id, int tabIndex, TimeValue t) override
 
void TabChanged (tab_changes changeCode, Tab< PB2Value > *tab, ReferenceMaker *owner, ParamID id, int tabIndex, int count) override
 
void DeleteThis () override
 
- Public Member Functions inherited from PBAccessor
void Get (PB2Value &v, ReferenceMaker *owner, ParamID id, int tabIndex, TimeValue t)
 
virtual MSTR GetLocalName (ReferenceMaker *owner, ParamID id, int tabIndex) MAX_SEALED
 
virtual MSTR GetLocalName (ReferenceMaker *owner, ParamID id, int tabIndex, bool localized)
 
- Public Member Functions inherited from InterfaceServer
virtual UtilExport ~InterfaceServer ()
 Destructor. More...
 
virtual UtilExport BaseInterfaceGetInterface (Interface_ID id)
 
template<class InterfaceType >
InterfaceType * GetTypedInterface ()
 

Additional Inherited Members

- Public Types inherited from PBAccessor
enum  tab_changes {
  tab_insert , tab_append , tab_delete , tab_ref_deleted ,
  tab_setcount , tab_sort
}
 
- Static Public Member Functions inherited from MaxHeapOperators
static UtilExport voidoperator new (size_t size)
 Standard new operator used to allocate objects If there is insufficient memory, an exception will be thrown. More...
 
static UtilExport voidoperator new (size_t size, const std::nothrow_t &e)
 Standard new operator used to allocate objects if there is insufficient memory, NULL will be returned. More...
 
static UtilExport voidoperator new (size_t size, const char *filename, int line)
 New operator used to allocate objects that takes the filename and line number where the new was called If there is insufficient memory, an exception will be thrown. More...
 
static UtilExport voidoperator new (size_t size, int block_type, const char *filename, int line)
 New operator used to allocate objects that takes the type of memory, filename and line number where the new was called If there is insufficient memory, an exception will be thrown. More...
 
static UtilExport voidoperator new (size_t size, const std::nothrow_t &e, const char *filename, int line)
 New operator used to allocate objects that takes the filename and line number where the new was called If there is insufficient memory, NULL will be returned. More...
 
static UtilExport voidoperator new (size_t size, unsigned long flags)
 New operator used to allocate objects that takes extra flags to specify special operations If there is insufficient memory, an exception will be thrown. More...
 
static UtilExport voidoperator new (size_t size, const std::nothrow_t &e, unsigned long flags)
 New operator used to allocate objects that takes extra flags to specify special operations If there is insufficient memory, NULL will be returned. More...
 
static UtilExport voidoperator new[] (size_t size)
 New operator used to allocate arrays of objects If there is insufficient memory, an exception will be thrown. More...
 
static UtilExport voidoperator new[] (size_t size, const std::nothrow_t &e)
 New operator used to allocate arrays of objects If there is insufficient memory, NULL will be returned. More...
 
static UtilExport voidoperator new[] (size_t size, const char *filename, int line)
 New operator used to allocate arrays of objects If there is insufficient memory, an exception will be thrown. More...
 
static UtilExport voidoperator new[] (size_t size, int block_type, const char *filename, int line)
 New operator used to allocate arrays of objects. More...
 
static UtilExport voidoperator new[] (size_t size, const std::nothrow_t &e, const char *filename, int line)
 New operator used to allocate arrays of objects If there is insufficient memory, NULL will be returned. More...
 
static UtilExport voidoperator new[] (size_t size, unsigned long flags)
 New operator used to allocate arrays of objects If there is insufficient memory, an exception will be thrown. More...
 
static UtilExport voidoperator new[] (size_t size, const std::nothrow_t &e, unsigned long flags)
 New operator used to allocate arrays of objects If there is insufficient memory, NULL will be returned. More...
 
static UtilExport void operator delete (void *ptr)
 Standard delete operator used to deallocate an object If the pointer is invalid, an exception will be thrown. More...
 
static UtilExport void operator delete (void *ptr, const std::nothrow_t &e)
 Standard delete operator used to deallocate an object If the pointer is invalid, nothing will happen. More...
 
static UtilExport void operator delete (void *ptr, const char *filename, int line)
 Delete operator used to deallocate an object that takes the filename and line number where the delete was called If the pointer is invalid, an exception will be thrown. More...
 
static UtilExport void operator delete (void *ptr, int block_type, const char *filename, int line)
 Delete operator used to deallocate an object that takes the type of memory, filename and line number where the delete was called If the pointer is invalid, an exception will be thrown. More...
 
static UtilExport void operator delete (void *ptr, const std::nothrow_t &e, const char *filename, int line)
 Delete operator used to deallocate an object that takes the filename and line number where the delete was called If the pointer is invalid, nothing will happen. More...
 
static UtilExport void operator delete (void *ptr, unsigned long flags)
 Delete operator used to deallocate an object that takes extra flags to specify special operations If the pointer is invalid, an exception will be thrown. More...
 
static UtilExport void operator delete (void *ptr, const std::nothrow_t &e, unsigned long flags)
 Delete operator used to deallocate an object that takes extra flags to specify special operations If the pointer is invalid, nothing will happen. More...
 
static UtilExport void operator delete[] (void *ptr)
 Standard delete operator used to deallocate an array of objects If the pointer is invalid, an exception will be thrown. More...
 
static UtilExport void operator delete[] (void *ptr, const std::nothrow_t &e)
 Standard delete operator used to deallocate an array of objects If the pointer is invalid, nothing will happen. More...
 
static UtilExport void operator delete[] (void *ptr, const char *filename, int line)
 Delete operator used to deallocate an array of objects that takes the filename and line number where the delete was called If the pointer is invalid, an exception will be thrown. More...
 
static UtilExport void operator delete[] (void *ptr, int block_type, const char *filename, int line)
 Delete operator used to deallocate an array of objects that takes the type of memory, filename and line number where the delete was called If the pointer is invalid, an exception will be thrown. More...
 
static UtilExport void operator delete[] (void *ptr, const std::nothrow_t &e, const char *filename, int line)
 Delete operator used to deallocate an array of objects that takes the filename and line number where the delete was called If the pointer is invalid, nothing will happen. More...
 
static UtilExport void operator delete[] (void *ptr, unsigned long flags)
 Delete operator used to deallocate an array of objects that takes extra flags to specify special operations If the pointer is invalid, an exception will be thrown. More...
 
static UtilExport void operator delete[] (void *ptr, const std::nothrow_t &e, unsigned long flags)
 Delete operator used to deallocate an array of objects that takes extra flags to specify special operations If the pointer is invalid, an exception will be thrown. More...
 
static UtilExport voidoperator new (size_t size, void *placement_ptr)
 Placement new operator. More...
 
static UtilExport void operator delete (void *ptr, void *placement_ptr)
 Placement delete operator. More...
 
static UtilExport voidaligned_malloc (size_t size, size_t alignment)
 Allocates memory on a specified alignment boundary. More...
 
static UtilExport voidaligned_realloc (void *ptr, size_t size, size_t alignment)
 Reallocates memory on a specified alignment boundary. More...
 
static UtilExport void aligned_free (void *ptr)
 Frees a block of memory that was allocated with aligned_malloc/aligned_realloc. More...
 

Constructor & Destructor Documentation

◆ MSPluginPBAccessor()

Member Function Documentation

◆ Set()

void Set ( PB2Value v,
ReferenceMaker owner,
ParamID  id,
int  tabIndex,
TimeValue  t 
)
overridevirtual
Remarks
This method is called when IParamBlock2::SetValue is called on parameter 'id', and the parameter value being set is v. This is called just before calling SetValue() on the parameter's controller, so it can take note of the value going in and change it if desired.
Parameters:
PB2Value& v

The value being set.

ReferenceMaker* owner

Points to the owner of the parameter block.

ParamID id

The permanent ID of the parameter.

int tabIndex

If the parameter is a Tab<> this is the zero based index of the parameter in the table.

TimeValue t

The current time the set is taking place.
Default Implementation:
{} Notes: The content of 'v' is the value being set on the IParamBlock2 parameter, and can be changed by this Set method. If you get the value of the parameter from the parameter block from within the Set method, whether the value returned will be the existing value or the new value varies by parameter type and whether the parameter is animatable. For parameter types that correspond to data types such as float, integer, and point3, the Set method is called before the parameter block parameter is set unless the parameter block parameter is already animated or setting the value would cause it to be animated. If the parameter block parameter would remain constant after the set, the Set method is called after the parameter block parameter is set. If the parameter type is such that the parameter value is a data value held by a pointer (v.p, v.p4, v.m, v.p2) that pointer is guaranteed to be non-null, and the Set method must not set it to null. Either the existing data value must be updated in-place (pointer unchanged), or the existing data value must be deleted (typically using PB2Value::Free) and a new pointer assigned. The PB2Value will free this pointer when it is done using the data. If the parameter type is TYPE_STRING or TYPE_FILENAME, v.s contains a pointer to a copy of the string, and owns this copy. v.s may be null. The string can be modified in place, or can be replaced with a new string using the PB2Value's ReplaceString method. The PB2Value will free this pointer when it is done using the data. If the parameter type is TYPE_BITMAP, v.bm contains a pointer to a PBBitmap, and owns this pointer. v.bm may be null. The PBBitmap can be modified in place, or the existing PBBitmap must be deleted (typically using PB2Value::Free) and a new pointer assigned (typically by cloning a PBBitmap. The PB2Value will free this pointer when it is done using the data.

Reimplemented from PBAccessor.

◆ PreSet()

void PreSet ( PB2Value v,
ReferenceMaker owner,
ParamID  id,
int  tabIndex,
TimeValue  t 
)
overridevirtual
Remarks
This method is called when IParamBlock2::SetValue is called on parameter 'id', and the parameter value being set is v. This is called before setting the parameter's value or calling SetValue() on the parameter's controller, so it can take note of the value going in and change it if desired.
Parameters:
PB2Value& v

The value being set.

ReferenceMaker* owner

Points to the owner of the parameter block.

ParamID id

The permanent ID of the parameter.

int tabIndex

If the parameter is a Tab<> this is the zero based index of the parameter in the table.

TimeValue t

The current time the set is taking place.
Default Implementation:
{} Notes: The content of 'v' is the value being set, and can be changed by the PreSet method. If you get the value of the parameter from the parameter block from within the PreSet method, the value returned will be the existing value. If the parameter type is such that the parameter value is a data value held by a pointer (v.p, v.p4, v.m, v.p2) that pointer is guaranteed to be non-null, and the PreSet method must not set it to null. Either the existing data value must be updated in-place (pointer unchanged), or the existing data value must be deleted (typically using PB2Value::Free) and a new pointer assigned. The PB2Value will free this pointer when it is done using the data. If the parameter type is TYPE_STRING or TYPE_FILENAME, v.s contains a pointer to a copy of the string, and owns this copy. v.s may be null. The string can be modified in place, or can be replaced with a new string using the PB2Value's ReplaceString method. The PB2Value will free this pointer when it is done using the data. If the parameter type is TYPE_BITMAP, v.bm contains a pointer to a PBBitmap, and owns this pointer. v.bm may be null. The PBBitmap can be modified in place, or the existing PBBitmap must be deleted (typically using PB2Value::Free) and a new pointer assigned (typically by cloning a PBBitmap. The PB2Value will free this pointer when it is done using the data.

Reimplemented from PBAccessor.

◆ PostSet()

void PostSet ( const PB2Value v,
ReferenceMaker owner,
ParamID  id,
int  tabIndex,
TimeValue  t 
)
overridevirtual
Remarks
This method is called when IParamBlock2::SetValue is called on parameter 'id', and the parameter value being set is v. This is called after setting the parameter's value or calling SetValue() on the parameter's controller.
Parameters:
const PB2Value& v

The value that was set.

ReferenceMaker* owner

Points to the owner of the parameter block.

ParamID id

The permanent ID of the parameter.

int tabIndex

If the parameter is a Tab<> this is the zero based index of the parameter in the table.

TimeValue t

The current time the set is taking place.
Default Implementation:
{} Notes: The content of 'v' is the value that was set, and cannot be changed by the PostSet method. If you get the value of the parameter from the parameter block from within the PostSet method, the value returned will be the new value. If the parameter type is such that the parameter value is a data value held by a pointer (v.p, v.p4, v.m, v.p2) that pointer is guaranteed to be non-null.

Reimplemented from PBAccessor.

◆ Get()

void Get ( PB2Value v,
ReferenceMaker owner,
ParamID  id,
int  tabIndex,
TimeValue  t,
Interval valid 
)
overridevirtual
Remarks
This method is called when IParamBlock2::GetValue is called on parameter 'id', and the parameter value is v. This method is called after the controller is accessed, so the current controller value is seen and can be optionally overridden in this method. Note that the controller is accessed whenever the 3ds Max time is changed (such as a slider move) and so this method will be called each frame as this happens.
Parameters
v- The value being accessed.
owner- Points to the owner of the parameter block.
id- The permanent ID of the parameter.
tabIndex- If the parameter is a Tab<> this is the zero based index of the parameter in the table.
t- The current time the get is taking place.

valid- The validity interval to update.
The intersection of the provided "valid" interval with the interval for the provided TimeValue and returned as the updated interval value.
Default Implementation:
{} Notes: The content of 'v' is the value from the IParamBlock2 parameter, and can be changed by this Get method. If the parameter type is such that the parameter value is a data value held by a pointer (v.p, v.p4, v.m, v.p2) that pointer is guaranteed to be non-null, and the Get method must not set it to null. Either the existing data value must be updated in-place (pointer unchanged), or the existing data value must be deleted (typically using PB2Value::Free) and a new pointer assigned. The PB2Value will free this pointer when it is done using the data. If the parameter type is TYPE_STRING or TYPE_FILENAME, v.s contains a pointer to a copy of the string, and owns this copy. v.s may be null. The string can be modified in place, or can be replaced with a new string using the PB2Value's ReplaceString method. The PB2Value will free this pointer when it is done using the data. If the parameter type is TYPE_BITMAP, v.bm contains a pointer to a PBBitmap, and owns this pointer. v.bm may be null. The PBBitmap can be modified in place, or the existing PBBitmap must be deleted (typically using PB2Value::Free) and a new pointer assigned (typically by cloning a PBBitmap. The PB2Value will free this pointer when it is done using the data.

Reimplemented from PBAccessor.

◆ KeyFrameAtTime()

BOOL KeyFrameAtTime ( ReferenceMaker owner,
ParamID  id,
int  tabIndex,
TimeValue  t 
)
overridevirtual
Remarks
Checks to see if a keyframe exists for the given parameter at the given time. Returns TRUE if a keyframe exists at the specified time; otherwise FALSE. For parameters not directly hosted in the parameter block that are internally animatable, this provides a keyframe query callback so that any ParamMap2 spinners associated with these 'virtual' parameters can show keyframe status for the underlying parameter. In these cases, developers should implement this method for the parameter usually asking the underlying parameter for its keyframe state.
Parameters:
ReferenceMaker* owner

Points to the owner of the parameter block.

ParamID id

The permanent ID of the parameter.

int tabIndex

TimeValue t

The current time.
Default Implementation:
{ return FALSE; }

Reimplemented from PBAccessor.

◆ TabChanged()

void TabChanged ( tab_changes  changeCode,
Tab< PB2Value > *  tab,
ReferenceMaker owner,
ParamID  id,
int  tabIndex,
int  count 
)
overridevirtual
Remarks
This method is called when a Tab<> parameter has a change made to its table structure.
Parameters:
tab_changes changeCode

Describes the change that has just occurred to the Tab<> parameter. One of the following enumerations:

enum tab_changes { tab_insert, tab_append, tab_delete, tab_ref_deleted, tab_setcount, tab_sort };

Tab<PB2Value>* tab

Points to the actual Tab<> in the pblock parameter.

ReferenceMaker* owner

Points to the owner of the parameter block.

ParamID id

The permanent ID of the parameter.

int tabIndex

The start index of the change (for tab_insert, tab_append, tab_delete, tab_ref_deleted)

int count

The number of elements changed (for tab_insert, tab_append, tab_delete).

Reimplemented from PBAccessor.

◆ DeleteThis()

void DeleteThis ( )
overridevirtual
Remarks
This method that can be used to destroy dynamically allocated instances of this class.
Default Implementation:
{ }

Reimplemented from PBAccessor.