3ds Max C++ API Reference
DataClassDesc Class Reference

A proxy for a class descriptor. More...

#include <DataClassDesc.h>

+ Inheritance diagram for DataClassDesc:

Public Member Functions

virtual CoreExport int IsPublic ()
 Whether to use only the internalName for scripter exposure. More...
 
virtual CoreExport voidCreate (BOOL loading=FALSE)
 3ds Max calls this method when it needs a pointer to a new instance of the plug-in class. More...
 
virtual CoreExport int BeginCreate (Interface *i)
 The custom creation process of the plug-in object is handled by this method. More...
 
virtual CoreExport int EndCreate (Interface *i)
 The termination of the custom creation process is managed by the implementation of this method. More...
 
virtual CoreExport const MCHARClassName ()
 Returns the class name for the plug-in (DataClassDesc::className). More...
 
virtual CoreExport const MCHARNonLocalizedClassName ()
 Returns the non-localized class name for the plug-in (DataClassDesc::nonLocalizedClassName). More...
 
virtual CoreExport SClass_ID SuperClassID ()
 Returns the SuperClassID (superClassID). More...
 
virtual CoreExport Class_ID ClassID ()
 Returns the Class_ID. More...
 
virtual CoreExport const MCHARCategory ()
 Returns the category string. More...
 
virtual CoreExport BOOL OkToCreate (Interface *i)
 Returns the okToCreate state. More...
 
virtual CoreExport BOOL HasClassParams ()
 If a plug-in class has default parameters that it needs to allow the user to edit, TRUE should be returned and EditClassParams() and ResetClassParams() should be implemented. More...
 
virtual CoreExport void EditClassParams (HWND hParent)
 If the user picks the class from the list this method is called. More...
 
virtual CoreExport void ResetClassParams (BOOL fileReset=FALSE)
 When the user executes File / Reset or presses the 'Reset to Factory Settings...' button in the File / Preferences... More...
 
virtual CoreExport int NumActionTables ()
 These functions return keyboard action tables that plug-ins can use. More...
 
virtual CoreExport ActionTableGetActionTable (int i)
 Returns a pointer to the specified action table. More...
 
virtual CoreExport BOOL IsManipulator ()
 Returns TRUE if the class implements a manipulator object; otherwise FALSE. More...
 
virtual CoreExport BOOL CanManipulate (ReferenceTarget *hTarget)
 The method returns true if the class is a manipulator and it manipulates the given base object, modifier or controller. More...
 
virtual CoreExport BOOL CanManipulateNode (INode *pNode)
 Returns TRUE if the manipulator applies to the given node; otherwise FALSE. More...
 
virtual CoreExport ManipulatorCreateManipulator (ReferenceTarget *hTarget, INode *pNode)
 Creates a manipulator object When a manipulator returns TRUE to CanManipulate(ReferenceTarget* hTarget), the system calls this version of CreateManipulator() to create an instance of the manipulator. More...
 
virtual CoreExport ManipulatorCreateManipulator (INode *pNode)
 Creates a manipulator object. More...
 
virtual CoreExport BOOL NeedsToSave ()
 Returns TRUE if there is data associated with the class that needs to be saved in the 3ds Max file. More...
 
virtual CoreExport IOResult Save (ISave *isave)
 If NeedsToSave() returns TRUE then this method should be implemented to save the data associated with the class. More...
 
virtual CoreExport IOResult Load (ILoad *iload)
 If NeedsToSave() returns TRUE then this method should be implemented to load the data associated with the class. More...
 
virtual CoreExport DWORD InitialRollupPageState ()
 This method returns a DWORD which is used to initialize the rollup state in both the create branch and the modify branch. More...
 
virtual CoreExport const MCHARInternalName ()
 Returns a string which provides a fixed, machine parsable internal name for the plug-in. More...
 
virtual CoreExport HINSTANCE HInstance ()
 Returns the DLL instance handle of the plug-in. More...
 
virtual CoreExport bool UseOnlyInternalNameForMAXScriptExposure ()
 Returns true if only the InternalName is to be used for MAXScript exposure. More...
 
virtual CoreExport int NumParamBlockDescs ()
 access parameter block descriptors for this class More...
 
virtual CoreExport ParamBlockDesc2GetParamBlockDesc (int i)
 Returns a pointer to the 'i-th' parameter block 2 descriptor. More...
 
virtual CoreExport ParamBlockDesc2GetParamBlockDescByID (BlockID id)
 
virtual CoreExport void AddParamBlockDesc (ParamBlockDesc2 *pbd)
 
virtual CoreExport void BeginEditParams (IObjParam *ip, ReferenceMaker *obj, ULONG flags, Animatable *prev)
 automatic UI management More...
 
virtual CoreExport void EndEditParams (IObjParam *ip, ReferenceMaker *obj, ULONG flags, Animatable *prev)
 This method is called to handle the ending of the automatic command panel user interface management provided by the param map 2 system. More...
 
virtual CoreExport void InvalidateUI (ParamBlockDesc2 *pbd)
 Invalidates the user interface for the rollup or dialog managed by the specified descriptor. More...
 
virtual CoreExport const MCHARGetRsrcString (INT_PTR id)
 Returns a pointer to the string from the resource string table. More...
 
virtual CoreExport void MakeAutoParamBlocks (ReferenceMaker *owner)
 automatic ParamBlock construction More...
 
virtual CoreExport int NumParamMaps ()
 access automatically-maintained ParamMaps, by simple index or by associated ParamBlockDesc More...
 
virtual CoreExport IParamMap2GetParamMap (int i)
 Returns a pointer to the nth parameter map2. More...
 
virtual CoreExport IParamMap2GetParamMap (ParamBlockDesc2 *pbd)
 Returns a pointer to the parameter map2 whose descriptor is passed. More...
 
virtual CoreExport bool SetUserDlgProc (ParamBlockDesc2 *pbd, ParamMap2UserDlgProc *proc=NULL)
 maintain user dialog procs on automatically-maintained ParamMaps More...
 
virtual CoreExport ParamMap2UserDlgProcGetUserDlgProc (ParamBlockDesc2 *pbd)
 Returns a pointer to the parameter map 2 user dialog proc (if any) for the specified descriptor. More...
 
virtual CoreExport bool DrawRepresentation (COLORREF bkColor, HDC hDC, Rect &rect)
 Class can draw an image to represent itself graphically... More...
 
virtual CoreExport int NumInterfaces ()
 Returns the number of function publishing interfaces maintained by the class descriptor. More...
 
virtual CoreExport FPInterfaceGetInterfaceAt (int i)
 Returns the nth function publishing interface. More...
 
virtual CoreExport FPInterfaceGetInterface (Interface_ID id)
 Returns a pointer to the function publishing interface whose ID is specified. More...
 
virtual CoreExport FPInterfaceGetInterface (const MCHAR *name)
 Returns a pointer to the function publishing interface whose name is specified. More...
 
virtual CoreExport void AddInterface (FPInterface *fpi)
 Adds the specified interface to the list maintained by this class descriptor. More...
 
virtual CoreExport void ClearInterfaces ()
 Deletes all the interfaces maintained by the class descriptor. More...
 
virtual CoreExport Class_ID SubClassID ()
 This method can be used for further categorizing plugins. More...
 
virtual CoreExport INT_PTR Execute (int cmd, ULONG_PTR arg1=0, ULONG_PTR arg2=0, ULONG_PTR arg3=0)
 This function is maintained so the 3ds Max SDK can be extended without breaking backwards compatibility. More...
 
Internal methods <br>
 DataClassDesc (SClass_ID superClassId, const Class_ID &classId, const Class_ID &subClassId, int isClassPublic, BOOL isClassOkToCreate, const MCHAR *classNameStr, const MCHAR *nonLocalizedClassNameStr, const MCHAR *categoryStr, BOOL hasClassParams, BOOL isManipulator, BOOL needsToSave, DWORD initialRollupPageState)
 
 ~DataClassDesc ()
 
void SetInternalName (const MSTR &theInternalName)
 
- Public Member Functions inherited from ClassDesc
virtual ~ClassDesc ()
 

Public Attributes

MSTR category
 
DWORD classIDA
 The category string. More...
 
DWORD classIDB
 The first ulong of the Class_ID. More...
 
SClass_ID superClassID
 The second ulong of the Class_ID. More...
 
MSTR className
 The SuperClassID of the class. More...
 
MSTR nonLocalizedClassName
 The class name. More...
 
DWORD isPublic
 The non-localized class name. More...
 
DWORD okToCreate
 If this plugin is public or not. More...
 
DWORD extCount
 If it is OK to create. More...
 
MSTR ext
 Returns the number of file name extensions supported if this class descriptor represents a import or export plug-in. More...
 
MSTR shortDesc
 The file name extension. More...
 
MSTR longDesc
 The short ASCII description. More...
 
DWORD supportsOptions
 The long ASCII description. More...
 
DWORD capability
 The export options. More...
 
DWORD inputTypeA
 The BitmapIO module capability flags. More...
 
DWORD inputTypeB
 For Modifiers. The first ulong of theModifier::InputType() Class_ID. More...
 
MSTR internalName
 For Modifiers. The second ulong of the Modifier::InputType() Class_ID. More...
 
const MCHARinternalNamePtr
 The scripter exposed non-localized internal name. More...
 
bool useOnlyInternalNameForMAXScriptExposure
 

Additional Inherited Members

- 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...
 
- Protected Member Functions inherited from Noncopyable
 Noncopyable ()
 
 ~Noncopyable ()
 

Detailed Description

A proxy for a class descriptor.

Plug-ins do not need to work directly with this class. When a plug-in DLL is defer loaded, the plug-in classes it exposes are represented by instances of this class. When the DataClassDesc instance does not have enough information to query out a request from client code, it will load the plug-in DLL which exposes the actual ClassDesc the DataClassDesc is a proxy for. From that point on, the actual ClassDesc instance is used. When a DataClassDesc instance is replaced by a full class descriptor, inside of ClassDirectory::AddClass then a notification is sent:

#define NOTIFY_CLASSDESC_REPLACED
Provides a notification that a ClassDesc is being replaced by another one.
Definition: notify.h:548
CoreExport void BroadcastNotification(int code)
See also
Class ClassDesc, Class ClassEntry, Class BitmapIO, Class SceneImport, Class SceneExport.

Constructor & Destructor Documentation

◆ DataClassDesc()

DataClassDesc ( SClass_ID  superClassId,
const Class_ID classId,
const Class_ID subClassId,
int  isClassPublic,
BOOL  isClassOkToCreate,
const MCHAR classNameStr,
const MCHAR nonLocalizedClassNameStr,
const MCHAR categoryStr,
BOOL  hasClassParams,
BOOL  isManipulator,
BOOL  needsToSave,
DWORD  initialRollupPageState 
)

◆ ~DataClassDesc()

Member Function Documentation

◆ IsPublic()

virtual CoreExport int IsPublic ( )
virtual

Whether to use only the internalName for scripter exposure.

Overwrites ClassDesc::IsPublic()

Implements ClassDesc.

◆ Create()

virtual CoreExport void* Create ( BOOL  loading = FALSE)
virtual

3ds Max calls this method when it needs a pointer to a new instance of the plug-in class.

For example, if 3ds Max is loading a file from disk containing a previously used plug-in (procedural object, modifier, controller, etc...), it will call the plug-in's Animatable::Create() method. The plug-in responds by allocating a new instance of its plug-in class. See the Advanced Topic section on Memory Management for more details.

Parameters
loadingThis parameter is a flag indicating if the class being created is going to be loaded from a disk file. If the flag is TRUE, the plug-in may not have to perform any initialization of the object because the loading process will take care of it. See the Advanced Topics section on Loading and Saving Plug-in Data for more information.

Note: If this parameter is TRUE, developers must initialize their references to NULL. Otherwise 3ds Max may crash.

3ds Max provides a default plug-in object creation process. Many plug-ins fit this form. When the system is about to create an instance of the plug-in object it calls a method BaseObject::GetCreateMouseCallBack().This method returns a callback object whose proc() method handles the mouse input during its creation phase. Most of the work is then handled by the system. The procedural sphere is an example of this type of plug-in. Certain plug-ins may have special creation needs however. The target camera is an example of such a plug-in. Because it needs to create two nodes in the scene (the camera and the target) it requires a custom creation process. To support these plug-ins the following two methods are provided. They allow the plug-in to manage the creation process themselves. See Object Creation Methods for more details.

Implements ClassDesc.

◆ BeginCreate()

virtual CoreExport int BeginCreate ( Interface i)
virtual

The custom creation process of the plug-in object is handled by this method.

For example, a plug-in can create a custom command mode and push it on the command stack to handle the creation process.

Important Note: A plug-in that doesn't want to participate in the standard object creation mechanism using CreateMouseCallBack must push a CommandMode on the stack in this method and remove it in EndCreate(). This is true even if the plug-in doesn't do anything inside the mode. A mode has to be pushed on the stack and then later popped off otherwise a crash will occur (if the default implementation of this method is not used). For more details on object creation see the Advanced Topics section Object Creation Methods.

Parameters
iAn interface pointer the plug-in may use to call functions in 3ds Max.
Returns
To use the default creation process (the system implementation for this method) return 0; Return nonzero if the plug-in implements this method.

Reimplemented from ClassDesc.

◆ EndCreate()

virtual CoreExport int EndCreate ( Interface i)
virtual

The termination of the custom creation process is managed by the implementation of this method.

For example, the plug-in could remove a custom command mode from the command stack. See the Advanced Topics section on Object Creation Methods for more details.

Parameters
iAn interface pointer the plug-in may use to call functions in 3ds Max.
Returns
To use the system implementation for this method return 0; Return nonzero if the plug-in implements this method.

Reimplemented from ClassDesc.

◆ ClassName()

virtual CoreExport const MCHAR* ClassName ( )
virtual

Returns the class name for the plug-in (DataClassDesc::className).

Implements ClassDesc.

◆ NonLocalizedClassName()

virtual CoreExport const MCHAR* NonLocalizedClassName ( )
virtual

Returns the non-localized class name for the plug-in (DataClassDesc::nonLocalizedClassName).

Implements ClassDesc.

◆ SuperClassID()

virtual CoreExport SClass_ID SuperClassID ( )
virtual

Returns the SuperClassID (superClassID).

Note: typedef ulong SClass_ID;

Implements ClassDesc.

◆ ClassID()

virtual CoreExport Class_ID ClassID ( )
virtual

Returns the Class_ID.

Implements ClassDesc.

◆ Category()

virtual CoreExport const MCHAR* Category ( )
virtual

Returns the category string.

Implements ClassDesc.

◆ OkToCreate()

virtual CoreExport BOOL OkToCreate ( Interface i)
virtual

Returns the okToCreate state.

Reimplemented from ClassDesc.

◆ HasClassParams()

virtual CoreExport BOOL HasClassParams ( )
virtual

If a plug-in class has default parameters that it needs to allow the user to edit, TRUE should be returned and EditClassParams() and ResetClassParams() should be implemented.

Otherwise return FALSE (the default).

Reimplemented from ClassDesc.

◆ EditClassParams()

virtual CoreExport void EditClassParams ( HWND  hParent)
virtual

If the user picks the class from the list this method is called.

The plug-in should put up a modal dialog that allows the user to edit the plug-ins default parameters. The plug-in should not return until the user has finished editing the parameters.

Parameters
hParentThe parent window handle.

Reimplemented from ClassDesc.

◆ ResetClassParams()

virtual CoreExport void ResetClassParams ( BOOL  fileReset = FALSE)
virtual

When the user executes File / Reset or presses the 'Reset to Factory Settings...' button in the File / Preferences...

/ Animation tab / Controller Defaults section this method is called. The plug-in can respond by resetting itself to use its default values.

Parameters
fileResetWhen TRUE, the user has performed a File / Reset operation. When FALSE, the user is in the Preferences... dialog doing a reset controller defaults operation.

Reimplemented from ClassDesc.

◆ NumActionTables()

virtual CoreExport int NumActionTables ( )
virtual

These functions return keyboard action tables that plug-ins can use.

Reimplemented from ClassDesc.

◆ GetActionTable()

virtual CoreExport ActionTable* GetActionTable ( int  i)
virtual

Returns a pointer to the specified action table.

Note
Ownership of the ActionTable is transferred to 3ds Max when this function is called, and it should not be deleted by the plug-in.
Parameters
iThe zero based index of the table to return.
See also
ActionTable

Reimplemented from ClassDesc.

◆ IsManipulator()

virtual CoreExport BOOL IsManipulator ( )
virtual

Returns TRUE if the class implements a manipulator object; otherwise FALSE.

Reimplemented from ClassDesc.

◆ CanManipulate()

virtual CoreExport BOOL CanManipulate ( ReferenceTarget hTarget)
virtual

The method returns true if the class is a manipulator and it manipulates the given base object, modifier or controller.

When starting "Manipulate" mode, this is called on selected nodes for the base object, all modifiers, the TM controller and the position, rotation and scale controllers, if the TM controller is a PRSController.

Parameters
hTargetA pointer to a reference target.

Reimplemented from ClassDesc.

◆ CanManipulateNode()

virtual CoreExport BOOL CanManipulateNode ( INode pNode)
virtual

Returns TRUE if the manipulator applies to the given node; otherwise FALSE.

This method can be used to indicate that the manipulator works on a part of an object that is not covered by BOOL CanManipulate(ReferenceTarget* hTarget) such as the visibility controller of a node.

Parameters
pNodeThe INode to check.

Reimplemented from ClassDesc.

◆ CreateManipulator() [1/2]

virtual CoreExport Manipulator* CreateManipulator ( ReferenceTarget hTarget,
INode pNode 
)
virtual

Creates a manipulator object When a manipulator returns TRUE to CanManipulate(ReferenceTarget* hTarget), the system calls this version of CreateManipulator() to create an instance of the manipulator.

Parameters
hTarget- The ReferenceTarget for which a manipulator is requested
pNode- The node that the manipulator needs to manipulate (know about)
Returns
- Pointer to the newly created manipulator, or NULL if the creation failed.
Manipulator* BendManipClassDesc::CreateManipulator(ReferenceTarget* hTarget, INode* node) {
if (hTarget->ClassID() != Class_ID(BENDOSM_CLASS_ID, 0))
return NULL;
return (new BendManip((SimpleMod2*)hTarget, node));
}
#define NULL
Definition: autoptr.h:18
virtual CoreExport Class_ID ClassID()
Retrieves a constant that uniquely identifies the plugin class.
Definition: maxtypes.h:67
Definition: inode.h:55
Definition: manipulator.h:356
A scene entity that is being owned and listened to by other scene entities.
Definition: ref.h:1844
Base class for parameter block 2 (PB2) based object space modifiers.
Definition: simpmod.h:324
#define BENDOSM_CLASS_ID
Definition: plugapi.h:836

Reimplemented from ClassDesc.

◆ CreateManipulator() [2/2]

virtual CoreExport Manipulator* CreateManipulator ( INode pNode)
virtual

Creates a manipulator object.

When a manipulator returns TRUE to CanManipulateNode(INode* pNode), the system calls this version of CreateManipulator() to create an instance of the manipulator.

Parameters
pNode- The node that the manipulator needs to manipulate (know about)
Returns
- Pointer to the newly created manipulator, or NULL if the creation failed.

Reimplemented from ClassDesc.

◆ NeedsToSave()

virtual CoreExport BOOL NeedsToSave ( )
virtual

Returns TRUE if there is data associated with the class that needs to be saved in the 3ds Max file.

If this is so, implement the Save() and Load() methods below. If there is no class data to save return FALSE.

Reimplemented from ClassDesc.

◆ Save()

virtual CoreExport IOResult Save ( ISave isave)
virtual

If NeedsToSave() returns TRUE then this method should be implemented to save the data associated with the class.

Parameters
isaveA pointer that may be used to call methods to save data to disk.
Returns
IO_OK if the save was successful; otherwise IO_ERROR.

Reimplemented from ClassDesc.

◆ Load()

virtual CoreExport IOResult Load ( ILoad iload)
virtual

If NeedsToSave() returns TRUE then this method should be implemented to load the data associated with the class.

Parameters
iloadA pointer that may be used to load data from a file.
Returns
IO_OK if the load was successful; otherwise IO_ERROR.

Reimplemented from ClassDesc.

◆ InitialRollupPageState()

virtual CoreExport DWORD InitialRollupPageState ( )
virtual

This method returns a DWORD which is used to initialize the rollup state in both the create branch and the modify branch.

The semantics are different, however for these two cases. Whenever the rollups are created in the create branch, their state will be that specified by this method. In the modify branch, the first time an object of this type is modified the state will be that of this method, but after that it will remain what it was last set to.

Returns
The bits of this DWORD set indicate the corrresponding rollup page is closed. The zero bit corresponds to the plug-ins first rollup, the first bit is the second rollup, etc. The value 0x7fffffff is returned by the default implementation so the command panel can detect this method is not being overridden, and just leave the rollups as is.

Reimplemented from ClassDesc.

◆ InternalName()

virtual CoreExport const MCHAR* InternalName ( )
virtual

Returns a string which provides a fixed, machine parsable internal name for the plug-in.

This name is used by Scripting Engines. MAXScript uses this name (if not null) as (one of) the global variable name(s) holding the MAXClass value which exposes this class.

Reimplemented from ClassDesc.

◆ HInstance()

virtual CoreExport HINSTANCE HInstance ( )
virtual

Returns the DLL instance handle of the plug-in.

This is used so that string resources can be loaded by the ParamBlock2 system.

Reimplemented from ClassDesc.

◆ UseOnlyInternalNameForMAXScriptExposure()

virtual CoreExport bool UseOnlyInternalNameForMAXScriptExposure ( )
virtual

Returns true if only the InternalName is to be used for MAXScript exposure.

For older plugins that did not previously implement InternalName but now do, MAXScript still needs to expose the plugin using the ClassName. But new plugins can be exposed using only the InternalName.

Reimplemented from ClassDesc.

◆ NumParamBlockDescs()

virtual CoreExport int NumParamBlockDescs ( )
virtual

access parameter block descriptors for this class

Reimplemented from ClassDesc.

◆ GetParamBlockDesc()

virtual CoreExport ParamBlockDesc2* GetParamBlockDesc ( int  i)
virtual

Returns a pointer to the 'i-th' parameter block 2 descriptor.

Parameters
iThe zero based index of the descriptor to return.

Reimplemented from ClassDesc.

◆ GetParamBlockDescByID()

virtual CoreExport ParamBlockDesc2* GetParamBlockDescByID ( BlockID  id)
virtual
Remarks
Implemented by the System.

Returns a pointer to the specified parameter block 2 descriptor.
Parameters
idThe ID of the parameter block.

Reimplemented from ClassDesc.

◆ AddParamBlockDesc()

virtual CoreExport void AddParamBlockDesc ( ParamBlockDesc2 pbd)
virtual
Remarks
Implemented by the System.

Adds the specified parameter block 2 descriptor to the list of those maintained by the class.
Parameters
pbdPoints to the parameter block 2 descriptor to add.

Reimplemented from ClassDesc.

◆ BeginEditParams()

virtual CoreExport void BeginEditParams ( IObjParam ip,
ReferenceMaker obj,
ULONG  flags,
Animatable prev 
)
virtual

automatic UI management

Reimplemented from ClassDesc.

◆ EndEditParams()

virtual CoreExport void EndEditParams ( IObjParam ip,
ReferenceMaker obj,
ULONG  flags,
Animatable prev 
)
virtual

This method is called to handle the ending of the automatic command panel user interface management provided by the param map 2 system.

This method is called by the plug-in from its Animatable::EndEditParams() method. The parameters passed to that method are simply passed along to this method.

Parameters
ipThe interface pointer passed to the plug-in.
objPoints to the plug-in class calling this method.
flagsThe flags passed along to the plug-in in Animatable::EndEditParams().
prevThe pointer passed to the plug-in in Animatable::EndEditParams().

Reimplemented from ClassDesc.

◆ InvalidateUI()

virtual CoreExport void InvalidateUI ( ParamBlockDesc2 pbd)
virtual

Invalidates the user interface for the rollup or dialog managed by the specified descriptor.

This will cause the controls in that rollup to be redrawn.

Parameters
pbdPoints to the parameter block 2 descriptor whose corresponding UI is invalidated.

Reimplemented from ClassDesc.

◆ GetRsrcString()

virtual CoreExport const MCHAR* GetRsrcString ( INT_PTR  id)
virtual

Returns a pointer to the string from the resource string table.

Parameters
idThe resource ID.
Note
if the resource ID value is 0, a blank string is returned. If the resource ID value cannot be found, the string ">>> @!&*# <<<" is returned.

Reimplemented from ClassDesc.

◆ MakeAutoParamBlocks()

virtual CoreExport void MakeAutoParamBlocks ( ReferenceMaker owner)
virtual

automatic ParamBlock construction

Reimplemented from ClassDesc.

◆ NumParamMaps()

virtual CoreExport int NumParamMaps ( )
virtual

access automatically-maintained ParamMaps, by simple index or by associated ParamBlockDesc

Reimplemented from ClassDesc.

◆ GetParamMap() [1/2]

virtual CoreExport IParamMap2* GetParamMap ( int  i)
virtual

Returns a pointer to the nth parameter map2.

Parameters
iThe zero based index of the parameter map2 to return.

Reimplemented from ClassDesc.

◆ GetParamMap() [2/2]

virtual CoreExport IParamMap2* GetParamMap ( ParamBlockDesc2 pbd)
virtual

Returns a pointer to the parameter map2 whose descriptor is passed.

Parameters
pbdPoints to the parameter block2 descriptor.

Reimplemented from ClassDesc.

◆ SetUserDlgProc()

virtual CoreExport bool SetUserDlgProc ( ParamBlockDesc2 pbd,
ParamMap2UserDlgProc proc = NULL 
)
virtual

maintain user dialog procs on automatically-maintained ParamMaps

Reimplemented from ClassDesc.

◆ GetUserDlgProc()

virtual CoreExport ParamMap2UserDlgProc* GetUserDlgProc ( ParamBlockDesc2 pbd)
virtual

Returns a pointer to the parameter map 2 user dialog proc (if any) for the specified descriptor.

Parameters
pbdPoints to the parameter block 2 descriptor.
Returns
See Class ParamMap2UserDlgProc.

Reimplemented from ClassDesc.

◆ DrawRepresentation()

virtual CoreExport bool DrawRepresentation ( COLORREF  bkColor,
HDC  hDC,
Rect rect 
)
virtual

Class can draw an image to represent itself graphically...

Reimplemented from ClassDesc.

◆ NumInterfaces()

virtual CoreExport int NumInterfaces ( )
virtual

Returns the number of function publishing interfaces maintained by the class descriptor.

Reimplemented from ClassDesc.

◆ GetInterfaceAt()

virtual CoreExport FPInterface* GetInterfaceAt ( int  i)
virtual

Returns the nth function publishing interface.

Reimplemented from ClassDesc.

◆ GetInterface() [1/2]

virtual CoreExport FPInterface* GetInterface ( Interface_ID  id)
virtual

Returns a pointer to the function publishing interface whose ID is specified.

Parameters
idThe inteface ID.

Reimplemented from ClassDesc.

◆ GetInterface() [2/2]

virtual CoreExport FPInterface* GetInterface ( const MCHAR name)
virtual

Returns a pointer to the function publishing interface whose name is specified.

Parameters
nameThe name of the interface.

Reimplemented from ClassDesc.

◆ AddInterface()

virtual CoreExport void AddInterface ( FPInterface fpi)
virtual

Adds the specified interface to the list maintained by this class descriptor.

Parameters
fpiPoints to the interface to add.

Reimplemented from ClassDesc.

◆ ClearInterfaces()

virtual CoreExport void ClearInterfaces ( )
virtual

Deletes all the interfaces maintained by the class descriptor.

Reimplemented from ClassDesc.

◆ SubClassID()

virtual CoreExport Class_ID SubClassID ( )
virtual

This method can be used for further categorizing plugins.

If a plugin has sub-plugins (like light > shadows, particles > operators), this method can be used to differentiate them. sub-plugins can be derived from ReferenceTarget but return a particular class ID published by the parent plugins SDK headers. Then parent plugin can get a list of all reference targets whose SubClassID matches the published SubClassID.

Reimplemented from ClassDesc.

◆ Execute()

virtual CoreExport INT_PTR Execute ( int  cmd,
ULONG_PTR  arg1 = 0,
ULONG_PTR  arg2 = 0,
ULONG_PTR  arg3 = 0 
)
virtual

This function is maintained so the 3ds Max SDK can be extended without breaking backwards compatibility.

The behavior of this function depends on the cmd parameter:

  • I_EXEC_CTRL_BYPASS_TREE_VIEW - Returning 1 will hide a controller in track view.
  • I_EXEC_GET_SOA_STATE - The arg1 parameter is expected to be a bool*. The bool gets set to true or false depending whether sub-obj anim is or not enabled for that object type. Returns TRUE if the arg1 is set successfully, otherwise FALSE.
  • I_EXEC_EVAL_SOA_TIME - The arg1 parameter is expected to be a TimeValue* The TimeValue gets set appropriately, depending on whether sub-obj animation is allowed of not for that object type. Returns TRUE if the arg1 is set successfully, otherwise FALSE.

Reimplemented from ClassDesc.

◆ SetInternalName()

void SetInternalName ( const MSTR theInternalName)

Member Data Documentation

◆ category

MSTR category

◆ classIDA

DWORD classIDA

The category string.

◆ classIDB

DWORD classIDB

The first ulong of the Class_ID.

◆ superClassID

SClass_ID superClassID

The second ulong of the Class_ID.

◆ className

MSTR className

The SuperClassID of the class.

◆ nonLocalizedClassName

MSTR nonLocalizedClassName

The class name.

◆ isPublic

DWORD isPublic

The non-localized class name.

◆ okToCreate

DWORD okToCreate

If this plugin is public or not.

◆ extCount

DWORD extCount

If it is OK to create.

◆ ext

MSTR ext

Returns the number of file name extensions supported if this class descriptor represents a import or export plug-in.

◆ shortDesc

MSTR shortDesc

The file name extension.

◆ longDesc

MSTR longDesc

The short ASCII description.

◆ supportsOptions

DWORD supportsOptions

The long ASCII description.

◆ capability

DWORD capability

The export options.

◆ inputTypeA

DWORD inputTypeA

The BitmapIO module capability flags.

◆ inputTypeB

DWORD inputTypeB

For Modifiers. The first ulong of theModifier::InputType() Class_ID.

◆ internalName

MSTR internalName

For Modifiers. The second ulong of the Modifier::InputType() Class_ID.

◆ internalNamePtr

const MCHAR* internalNamePtr

The scripter exposed non-localized internal name.

◆ useOnlyInternalNameForMAXScriptExposure

bool useOnlyInternalNameForMAXScriptExposure