Interface Class Reference

Interface Class Referenceabstract
+ Related help topics:

#include <maxapi.h>

Class Description

See also
Class FPStaticInterface, Class ViewExp, Class INode, Class INodeTab, Class CommandMode, Class Interval, Class Renderer, Class Modifier, Class Control, Class Atmospheric, Class Point3, Class Matrix3, Class ModContext, Class ReferenceTarget, Template Class Tab

Description:
This class provides an interface for calling functions that are exported from the 3ds Max executable. All the methods in this class are implemented by 3ds Max itself.

Methods are provided for putting up many standard 3ds Max dialogs, working with command modes, working with viewports, controlling the prompt, toolbar and status areas, and working with selection sets. There are also methods for creating objects and nodes in the scene, setting and getting the current time and animation ranges, working with the standard directories of MAX, and many more. See the Method Groups listed below for a breakdown of the various kinds of methods available. Note: When editing in the command panel, a developer gets passed an interface pointer during BeginEditParams(). This pointer is only valid before EndEditParams() is finished. A developer should not hang on to this pointer and call methods on it after EndEditParams() has returned.
+ Inheritance diagram for Interface:

Classes

class  SuspendSceneRedrawGuard
 Scene redraw guard class. More...
 

Public Member Functions

virtual BOOL SetActiveViewportTransparencyDisplay (int transType)=0
 
virtual BOOL SetSelectionType (BOOL autoWinCross, int winCrossOrAutoDir)=0
 
virtual PickModeCallbackGetCurPickMode ()=0
 
virtual void RealizeParamPanel ()=0
 
virtual BOOL GetToolButtonState (int button)=0
 
virtual void EnableToolButton (int button, BOOL enable=TRUE)=0
 
virtual void EnableUndo (BOOL enable)=0
 
virtual ViewExpGetViewExp (HWND hwnd)=0
 
virtual int GetAssetDirCount (MaxSDK::AssetManagement::AssetType assetType)=0
 Returns the number of permanent user paths associated with a particular type of asset. More...
 
virtual const MCHARGetAssetDir (int i, MaxSDK::AssetManagement::AssetType assetType)=0
 Returns the "ith" permanent user path associated with a particular asset type. More...
 
virtual BOOL AddAssetDir (const MCHAR *dir, MaxSDK::AssetManagement::AssetType assetType)=0
 Adds a permanent user path associated to a particular asset type. More...
 
virtual BOOL AddSessionAssetDir (const MCHAR *dir, MaxSDK::AssetManagement::AssetType assetType, int update=TRUE)=0
 Adds a session user path associated to a particular asset type. More...
 
virtual int GetSessionAssetDirCount (MaxSDK::AssetManagement::AssetType assetType)=0
 Returns the number of session user paths associated with a particular type of asset. More...
 
virtual const MCHARGetSessionAssetDir (int i, MaxSDK::AssetManagement::AssetType assetType)=0
 Returns the "ith" session user path associated with a particular asset type. More...
 
virtual BOOL DeleteSessionAssetDir (int i, MaxSDK::AssetManagement::AssetType assetType, int update=TRUE)=0
 Deletes the "ith" session user path associated with a particular asset type. More...
 
virtual int GetCurAssetDirCount (MaxSDK::AssetManagement::AssetType assetType)=0
 Returns the number of session (temporary) and permanent user paths associated with a particular type of asset. More...
 
virtual const MCHARGetCurAssetDir (int i, MaxSDK::AssetManagement::AssetType assetType)=0
 Returns the "ith" session\permanent user path associated with a particular asset type. More...
 
virtual bool AttachNodesToGroup (INodeTab &nodes, INode &pTargetNode)=0
 
virtual bool DetachNodesFromGroup (INodeTab &nodes)=0
 
virtual void IncrementValidityToken ()=0
 
virtual unsigned int CurrentValidityToken ()=0
 
virtual RendererCreateDefaultRenderer (RenderSettingID renderSettingID)=0
 Creates an instance of the default renderer for the given render setting. More...
 
virtual Class_ID GetDefaultRendererClassID (RenderSettingID renderSettingID)=0
 Gets the class ID of the default renderer for the given render setting. More...
 
virtual void SetDefaultRendererClassID (RenderSettingID renderSettingID, Class_ID classID)=0
 Gets the class ID of the default renderer for the given render setting. More...
 
virtual RendererGetMEditRenderer (bool createRendererIfItDoesntExist=true)=0
 Gets the renderer assigned to the MEdit slot.

. More...
 
virtual void AssignMEditRenderer (Renderer *renderer)=0
 Sets the renderer assigned to the MEdit slot.

. More...
 
virtual RendererGetActualMEditRenderer (bool createRendererIfItDoesntExist=true)=0
 Returns the renderer to be used for MEdit.

. More...
 
virtual bool GetMEditRendererLocked ()=0
 Gets the status of the MEdit renderer lock. More...
 
virtual void SetMEditRendererLocked (bool locked)=0
 Sets the status of the MEdit renderer lock. More...
 
virtual bool GetMEditRendererLocked_DefaultValue ()=0
 
virtual void SetMEditRendererLocked_DefaultValue (bool locked)=0
 
virtual BOOL GetRendSimplifyAreaLights ()=0
 returns the state of the toggle in the render dialog, "Area Lights/Shadows as Points". More...
 
virtual void SetRendSimplifyAreaLights (BOOL onOff)=0
 Sets the toggle in the render dialog, "Area Lights/Shadows as Points". More...
 
virtual IOsnapManagerGetOsnapManager ()=0
 
virtual MouseManagerGetMouseManager ()=0
 
virtual void InvalidateOsnapdraw ()=0
 
virtual bool IsNetworkRenderServer () const =0
 Returns true if the application operates in network render server mode. More...
 
virtual voidGetInterface (DWORD id)=0
 
virtual BaseInterfaceGetInterface (Interface_ID id)=0
 
virtual ShadowTypeGetGlobalShadowGenerator ()=0
 
virtual void SetGlobalShadowGenerator (ShadowType *st)=0
 
virtual MacroRecorderGetMacroRecorder ()=0
 
Fonts/Cursor Related Methods
virtual HFONT GetAppHFont ()=0
 
virtual HCURSOR GetSysCursor (int id)=0
 
virtual void SetCrossHairCur (BOOL onOff)=0
 
virtual BOOL GetCrossHairCur ()=0
 
Viewport Access
virtual void RedrawViews (TimeValue t, DWORD vpFlags=REDRAW_NORMAL, ReferenceTarget *change=NULL)=0
 
virtual BOOL SetActiveViewport (HWND hwnd)=0
 
virtual ViewExpGetActiveViewExp ()=0
 
virtual void ForceCompleteRedraw (BOOL doDisabled=TRUE)=0
 
virtual void DisableSceneRedraw ()=0
 Turns off scene redraws. More...
 
virtual void EnableSceneRedraw ()=0
 Turns on scene redraws. More...
 
virtual int IsSceneRedrawDisabled ()=0
 Tells whether the scene redraw is disabled. More...
 
virtual void MakeExtendedViewportActive (HWND hWnd)=0
 
virtual void PutUpViewMenu (HWND hWnd, POINT pt)=0
 
virtual int IsCPEdgeOnInView ()=0
 
virtual int GetViewportLayout ()=0
 
virtual void SetViewportLayout (int layout)=0
 
virtual BOOL IsViewportMaxed ()=0
 
virtual void SetViewportMax (BOOL max)=0
 
virtual void ViewportZoomExtents (BOOL doAll, BOOL skipPersp=FALSE)=0
 
virtual void ZoomToBounds (BOOL doAll, Box3 box)=0
 
virtual BOOL RegisterViewWindow (ViewWindow *vw)=0
 
virtual BOOL UnRegisterViewWindow (ViewWindow *vw)=0
 
IObjCreate and IObjParam Pointer Casting
 
virtual IObjCreateGetIObjCreate ()=0
 
virtual IObjParamGetIObjParam ()=0
 
3ds Max Main Window Access
 
virtual HWND GetMAXHWnd () const =0
 
virtual MaxSDK::QmaxMainWindowGetQmaxMainWindow () const =0
 Returns the Qt docking main window of 3ds Max. More...
 
Renderer Access
virtual BOOL DisplayActiveCameraViewWithMultiPassEffect ()=0
 
virtual int OpenCurRenderer (INode *camNode, ViewExp *view, RendType t=RENDTYPE_NORMAL, int w=0, int h=0)=0
 
virtual int OpenCurRenderer (ViewParams *vpar, RendType t=RENDTYPE_NORMAL, int w=0, int h=0)=0
 
virtual void CloseCurRenderer ()=0
 
virtual int CurRendererRenderFrame (TimeValue t, Bitmap *bm, RendProgressCallback *prog=NULL, float frameDur=1.0f, ViewParams *vp=NULL, RECT *regionRect=NULL)=0
 
virtual IScanRendererCreateDefaultScanlineRenderer ()=0
 
Callback/Notification Registration
virtual void RegisterRedrawViewsCallback (RedrawViewsCallback *cb)=0
 
virtual void UnRegisterRedrawViewsCallback (RedrawViewsCallback *cb)=0
 
virtual void RegisterSelectFilterCallback (SelectFilterCallback *cb)=0
 
virtual void UnRegisterSelectFilterCallback (SelectFilterCallback *cb)=0
 
virtual void RegisterDisplayFilterCallback (DisplayFilterCallback *cb)=0
 
virtual void UnRegisterDisplayFilterCallback (DisplayFilterCallback *cb)=0
 
virtual void RegisterAxisChangeCallback (AxisChangeCallback *cb)=0
 
virtual void UnRegisterAxisChangeCallback (AxisChangeCallback *cb)=0
 
virtual void RegisterTimeChangeCallback (TimeChangeCallback *tc)=0
 
virtual void UnRegisterTimeChangeCallback (TimeChangeCallback *tc)=0
 
virtual void RegisterCommandModeChangedCallback (CommandModeChangedCallback *cb)=0
 
virtual void UnRegisterCommandModeChangedCallback (CommandModeChangedCallback *cb)=0
 
virtual void RegisterViewportDisplayCallback (BOOL preScene, ViewportDisplayCallback *cb)=0
 
virtual void UnRegisterViewportDisplayCallback (BOOL preScene, ViewportDisplayCallback *cb)=0
 
virtual void NotifyViewportDisplayCallbackChanged (BOOL preScene, ViewportDisplayCallback *cb)=0
 
virtual void RegisterExitMAXCallback (ExitMAXCallback *cb)=0
 
virtual void UnRegisterExitMAXCallback (ExitMAXCallback *cb)=0
 
Methods to Display MAX Dialogs
 
virtual BOOL TrackViewPickDlg (HWND hParent, TrackViewPick *res, TrackViewFilter *filter=NULL, DWORD pickTrackFlags=0)=0
 
virtual BOOL TrackViewPickMultiDlg (HWND hParent, MaxSDK::Array< TrackViewPick > *res, TrackViewFilter *filter=NULL, DWORD pickTrackFlags=0)=0
 
virtual BOOL DoHitByNameDialog (HitByNameDlgCallback *hbncb=NULL)=0
 
virtual void ChooseDirectory (HWND hWnd, const MCHAR *title, MCHAR *dir, MCHAR *desc=NULL)=0
 
virtual int DoExclusionListDialog (ExclList *nl, BOOL doShadows=TRUE)=0
 
virtual void ConvertNameTabToExclList (const NameTab *nt, ExclList *excList)=0
 
virtual MtlBaseDoMaterialBrowseDlg (HWND hParent, DWORD vflags, BOOL &newMat, BOOL &cancel)=0
 
virtual void PutMtlToMtlEditor (MtlBase *mb, int slot=-1)=0
 
virtual BOOL NodeColorPicker (HWND hWnd, DWORD &col)=0
 
virtual int ConfigureBitmapPaths ()=0
 
virtual BOOL DoSpaceArrayDialog (SpaceArrayCallback *sacb=NULL)=0
 
Command Modes
virtual void PushCommandMode (CommandMode *m)=0
 
virtual void SetCommandMode (CommandMode *m)=0
 
virtual void PopCommandMode ()=0
 
virtual CommandModeGetCommandMode ()=0
 
virtual void SetStdCommandMode (int cid)=0
 
virtual void PushStdCommandMode (int cid)=0
 
virtual void RemoveMode (CommandMode *m)=0
 
virtual void DeleteMode (CommandMode *m)=0
 
virtual int GetCommandStackSize ()=0
 
virtual CommandModeGetCommandStackEntry (int entry)=0
 
Status Panel/Prompt Related Methods

Generally prompts are set by the command mode and these are the methods used.

You can use the DisplayTempPrompt() method to temporarily display a prompt to the user independent of a command mode.

virtual void PushPrompt (const MCHAR *s)=0
 
virtual void PopPrompt ()=0
 
virtual void ReplacePrompt (const MCHAR *s)=0
 
virtual void DisplayTempPrompt (const MCHAR *s, int msec=1000)=0
 
virtual void RemoveTempPrompt ()=0
 
virtual void DisableStatusXYZ ()=0
 
virtual void EnableStatusXYZ ()=0
 
virtual void SetStatusXYZ (Point3 xyz, int type)=0
 
virtual void SetStatusXYZ (AngAxis aa)=0
 
Auto Backup Time Related Methods
 
virtual float GetAutoBackupTime ()=0
 
virtual void SetAutoBackupTime (float minutes)=0
 
virtual BOOL AutoBackupEnabled ()=0
 
virtual void EnableAutoBackup (BOOL onOff)=0
 
Progress Bar Methods
virtual BOOL ProgressStart (const MCHAR *title, BOOL dispBar, LPTHREAD_START_ROUTINE fn, LPVOID arg)=0
 
virtual void ProgressUpdate (int pct, BOOL showPct=TRUE, const MCHAR *title=NULL)=0
 
virtual void ProgressEnd ()=0
 
virtual BOOL GetCancel ()=0
 
virtual void SetCancel (BOOL sw)=0
 
Preview Creation
 
virtual void CreatePreview (PreviewParams *pvp=NULL, MSTR *filename=NULL, MSTR *snippet=NULL)=0
 
Grid Related Methods
virtual float GetGridSpacing ()=0
 
virtual int GetGridMajorLines ()=0
 
virtual void AddGridToScene (INode *node)=0
 
virtual void SetActiveGrid (INode *node)=0
 
virtual INodeGetActiveGrid ()=0
 
Extended Display Modes
 
virtual void SetExtendedDisplayMode (int vflags)=0
 
virtual int GetExtendedDisplayMode ()=0
 
User Interface Controls and Properties
virtual void SetFlyOffTime (int msecs)=0
 
virtual int GetFlyOffTime ()=0
 
virtual BOOL GetCrossing ()=0
 
virtual void SetToolButtonState (int button, BOOL state)=0
 
virtual int GetAxisConstraints ()=0
 
virtual void SetAxisConstraints (int c)=0
 
virtual void EnableAxisConstraints (int c, BOOL enabled)=0
 
virtual void PushAxisConstraints (int c)=0
 
virtual void PopAxisConstraints ()=0
 
virtual int GetCoordCenter ()=0
 
virtual void SetCoordCenter (int c)=0
 
virtual void EnableCoordCenter (BOOL enabled)=0
 
virtual int GetRefCoordSys ()=0
 
virtual void SetRefCoordSys (int c)=0
 
virtual void EnableRefCoordSys (BOOL enabled)=0
 
Snap Related Methods
 
virtual float SnapAngle (float angleIn, BOOL fastSnap=TRUE, BOOL forceSnap=FALSE)=0
 
virtual float SnapPercent (float percentIn)=0
 
virtual BOOL GetSnapState ()=0
 
virtual int GetSnapMode ()=0
 
virtual BOOL SetSnapMode (int mode)=0
 
virtual int InitSnapInfo (SnapInfo *info)=0
 
Node Picking (interactive selection in the scene)
 
virtual void SetPickMode (PickModeCallback *pCB)=0
 
virtual void ClearPickMode ()=0
 
virtual INodePickNode (HWND hWnd, IPoint2 pt, PickNodeCallback *filt=NULL)=0
 
virtual void BoxPickNode (ViewExp *vpt, IPoint2 *pt, BOOL crossing, PickNodeCallback *filt=NULL)=0
 
virtual void CirclePickNode (ViewExp *vpt, IPoint2 *pt, BOOL crossing, PickNodeCallback *filt=NULL)=0
 
virtual void FencePickNode (ViewExp *vpt, IPoint2 *pt, BOOL crossing, PickNodeCallback *filt=NULL)=0
 
virtual void FlashNodes (INodeTab *nodes)=0
 
Sub-Object Related Methods
 
virtual void RegisterSubObjectTypes (const MCHAR **types, int count, int startIndex=0)=0
 
virtual int GetSubObjectLevel ()=0
 
virtual void SetSubObjectLevel (int level, BOOL force=FALSE)=0
 
virtual int GetNumSubObjectLevels ()=0
 
virtual void PipeSelLevelChanged ()=0
 
virtual void GetPipelineSubObjLevel (DWORDTab &levels)=0
 
virtual int SubObHitTest (TimeValue t, int type, int crossing, int vflags, IPoint2 *p, ViewExp *vpt)=0
 
Sub-Object Selection Sets (Named)
 
virtual void AppendSubObjectNamedSelSet (const MCHAR *set)=0
 
virtual void ClearSubObjectNamedSelSets ()=0
 
Selection Sets (Named)
 
virtual void ClearCurNamedSelSet ()=0
 
virtual void SetCurNamedSelSet (const MCHAR *setName)=0
 
virtual void NamedSelSetListChanged ()=0
 
Modifier Related Methods
virtual void GetModContexts (ModContextList &list, INodeTab &nodes)=0
 
virtual BaseObjectGetCurEditObject ()=0
 
Node Selection Sets
virtual BOOL SelectionFrozen ()=0
 
virtual void FreezeSelection ()=0
 
virtual void ThawSelection ()=0
 
virtual INodeGetSelNode (int i)=0
 
virtual int GetSelNodeCount ()=0
 
virtual void SelectNode (INode *node, int clearSel=1)=0
 
virtual void DeSelectNode (INode *node)=0
 
virtual void SelectNodeTab (INodeTab &nodes, BOOL sel, BOOL redraw=TRUE)=0
 
virtual void ClearNodeSelection (BOOL redraw=TRUE)=0
 
virtual void GetSelectionWorldBox (TimeValue t, Box3 &box)=0
 
virtual bool CloneNodes (INodeTab &nodes, Point3 &offset, bool expandHierarchies=true, CloneType cloneType=NODE_COPY, INodeTab *resultSource=NULL, INodeTab *resultTarget=NULL)=0
 
virtual void CollapseNode (INode *node, BOOL noWarning=FALSE)=0
 @ More...
 
virtual BOOL CollapseNodeTo (INode *node, int modIndex, BOOL noWarning=FALSE)=0
 
virtual BOOL ConvertNode (INode *node, Class_ID &cid)=0
 
virtual IRenderPresetsManagerGetRenderPresetsManager ()=0
 
virtual DefaultActionSysDefaultActions ()=0
 
virtual BOOL SetQuietMode (BOOL onOff)=0
 Sets internal flag, returns old value. More...
 
virtual BOOL GetQuietMode (BOOL checkServerMode=TRUE)=0
 The return value from this method should be called before displaying any dialogs. More...
 
virtual void SetAutoGridEnable (bool sw=true)=0
 Enables/disables system AutoGrid feature. More...
 
virtual bool GetAutoGridEnable ()=0
 Query system AutoGrid feature enable state. More...
 
virtual bool GetAutoGridState ()=0
 Query system AutoGrid feature state. More...
 
virtual void SetAutoGridState (bool sw=true)=0
 Sets system AutoGrid state. More...
 
Show End Result Related Methods
 
virtual void EnableShowEndResult (BOOL enabled)=0
 
virtual BOOL GetShowEndResult ()=0
 
virtual void SetShowEndResult (BOOL show)=0
 
Command Panel and Rollup Page Methods
 
virtual int GetCommandPanelTaskMode ()=0
 
virtual void SetCommandPanelTaskMode (int mode)=0
 
virtual HWND AddRollupPage (HINSTANCE hInst, const MCHAR *dlgTemplate, DLGPROC dlgProc, const MCHAR *title, LPARAM param=0, DWORD rollUpFlags=0, int category=ROLLUP_CAT_STANDARD)=0
 
virtual void AddRollupPage (QWidget &qtWidget, const MCHAR *title, DWORD rollupFlags=0, int category=ROLLUP_CAT_STANDARD)=0
 Adds a rollup page that hosts a Qt dialog. More...
 
virtual HWND AddRollupPage (HINSTANCE hInst, DLGTEMPLATE *dlgTemplate, DLGPROC dlgProc, const MCHAR *title, LPARAM param=0, DWORD rollUpFlags=0, int category=ROLLUP_CAT_STANDARD)=0
 
virtual void DeleteRollupPage (HWND hRollup)=0
 
virtual void DeleteRollupPage (QWidget &qtWidget)=0
 Removes a rollup page that hosts a Qt dialog. More...
 
virtual HWND ReplaceRollupPage (HWND hOldRollup, HINSTANCE hInst, const MCHAR *dlgTemplate, DLGPROC dlgProc, const MCHAR *title, LPARAM param=0, DWORD rollUpFlags=0, int category=ROLLUP_CAT_STANDARD)=0
 
virtual HWND ReplaceRollupPage (HWND hOldRollup, HINSTANCE hInst, DLGTEMPLATE *dlgTemplate, DLGPROC dlgProc, const MCHAR *title, LPARAM param=0, DWORD rollUpFlags=0, int category=ROLLUP_CAT_STANDARD)=0
 
virtual IRollupWindowGetCommandPanelRollup ()=0
 
virtual void RollupMouseMessage (HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)=0
 
Animation/Time/Playback Related Methods
 
virtual void EnableAnimateButton (BOOL enable)=0
 
virtual BOOL IsAnimateEnabled ()=0
 
virtual void SetAnimateButtonState (BOOL onOff)=0
 
virtual bool InProgressiveMode ()=0
 
virtual void BeginProgressiveMode ()=0
 
virtual void EndProgressiveMode ()=0
 
virtual TimeValue GetTime ()=0
 
virtual void SetTime (TimeValue t, BOOL redraw=TRUE)=0
 
virtual Interval GetAnimRange ()=0
 
virtual void SetAnimRange (Interval range)=0
 
virtual BOOL GetRealTimePlayback ()=0
 
virtual void SetRealTimePlayback (BOOL realTime)=0
 
virtual BOOL GetPlayActiveOnly ()=0
 
virtual void SetPlayActiveOnly (BOOL playActive)=0
 
virtual void StartAnimPlayback (int selOnly=FALSE)=0
 
virtual void EndAnimPlayback ()=0
 
virtual BOOL IsAnimPlaying ()=0
 
virtual int GetPlaybackSpeed ()=0
 
virtual void SetPlaybackSpeed (int s)=0
 
virtual BOOL GetPlaybackLoop ()=0
 
virtual void SetPlaybackLoop (BOOL loop)=0
 
Selection Filter Drop-down Related Methods
virtual int GetSelectFilter ()=0
 
virtual void SetSelectFilter (int c)=0
 
virtual int GetNumberSelectFilters ()=0
 
virtual const MCHARGetSelectFilterName (int index)=0
 
virtual BOOL GetDisplayFilter (int index)=0
 
virtual void SetDisplayFilter (int index, BOOL on)=0
 
virtual int GetNumberDisplayFilters ()=0
 
virtual BOOL DisplayFilterIsNodeVisible (int index, int sid, Class_ID cid, INode *node)=0
 
virtual const MCHARGetDisplayFilterName (int index)=0
 
Axis System Related Methods
virtual Matrix3 GetTransformAxis (INode *node, int subIndex, BOOL *local=NULL)=0
 
virtual int GetNumAxis ()=0
 
virtual void LockAxisTripods (BOOL onOff)=0
 
virtual BOOL AxisTripodLocked ()=0
 
Register Windows
 
virtual void RegisterDlgWnd (HWND hDlg)=0
 
virtual int UnRegisterDlgWnd (HWND hDlg)=0
 
Keyboard Accelerators
virtual void RegisterAccelTable (HWND hWnd, HACCEL hAccel)=0
 
virtual int UnRegisterAccelTable (HWND hWnd, HACCEL hAccel)=0
 
Action Table and Menu Manager Methods
 
virtual IActionManagerGetActionManager ()=0
 
virtual IMenuManagerGetMenuManager ()=0
 
Right Click Menu
 
virtual RightClickMenuManagerGetRightClickMenuManager ()=0
 
Delete Key Notification
virtual void RegisterDeleteUser (EventUser *user)=0
 
virtual void UnRegisterDeleteUser (EventUser *user)=0
 
Creating Unique
virtual void MakeNameUnique (MSTR &name)=0
 
virtual NameMakerNewNameMaker (BOOL initFromScene=TRUE)=0
 
Creation Related Methods
virtual INodeCreateObjectNode (Object *obj)=0
 
virtual GenCameraCreateCameraObject (int type)=0
 Creates a new camera object of the given type. More...
 
virtual ObjectCreateTargetObject ()=0
 
virtual GenLightCreateLightObject (int type)=0
 
virtual voidCreateInstance (SClass_ID superID, Class_ID classID)=0
 
virtual int BindToTarget (INode *laNode, INode *targNode)=0
 
virtual void StopCreating ()=0
 
virtual ObjectNonMouseCreate (Matrix3 tm)=0
 
virtual void NonMouseCreateFinish (Matrix3 tm)=0
 
Node Related Methods
 
virtual unsigned int DeleteNode (INode *node, BOOL redraw=TRUE, BOOL overrideSlaves=FALSE)=0
 Deletes the specified node from the scene. More...
 
virtual INodeGetRootNode ()=0
 
virtual void SetNodeTMRelConstPlane (INode *node, Matrix3 &mat)=0
 
virtual INodeGetINodeByName (const MCHAR *name)=0
 
virtual INodeGetINodeByHandle (ULONG handle)=0
 
Light Related Methods
 
virtual void AddLightToScene (INode *node)=0
 
virtual float GetLightConeConstraint ()=0
 
virtual void AddSFXRollupPage (ULONG vflags=0)=0
 
virtual void DeleteSFXRollupPage ()=0
 
virtual void RefreshSFXRollupPage ()=0
 
Plug-In and Bitmap Paths
 
virtual const MCHARGetDir (int which)=0
 
virtual int GetPlugInEntryCount ()=0
 
virtual const MCHARGetPlugInDesc (int i)=0
 
virtual const MCHARGetPlugInDir (int i)=0
 
Material Related Methods
virtual MtlBaseGetMtlSlot (int slot)=0
 
virtual MtlBaseLibGetSceneMtls ()=0
 
virtual BOOL OkMtlForScene (MtlBase *m)=0
 
virtual MtlBaseLibGetMaterialLibrary ()=0
 
CoreExport void DeActivateTexture (MtlBase *tx, Mtl *mtl, int subNum=-1)
 
CoreExport void ActivateTexture (MtlBase *tx, Mtl *mtl, int subNum=-1)
 
virtual void AssignNewName (Mtl *m)=0
 
virtual void AssignNewName (Texmap *m)=0
 
virtual void UpdateMtlEditorBrackets ()=0
 
virtual void ConvertMtl (TimeValue t, Material &gm, Mtl *mtl, BOOL doTex, int subNum, float vis, BOOL &needDecal, INode *node, BitArray *needTex, GraphicsWindow *gw)=0
 
Filenames and Pathnames
virtual MSTRGetCurFileName ()=0
 
virtual MSTRGetCurFilePath ()=0
 
virtual const MCHARGetMatLibFileName ()=0
 
File Open/Merge/Save/Reset/Hold/Fetch Methods
virtual void FileOpen ()=0
 
virtual BOOL FileSave ()=0
 
virtual BOOL FileSaveAs ()=0
 
virtual void FileSaveSelected ()=0
 
virtual void FileReset (BOOL noPrompt=FALSE)=0
 
virtual void FileMerge ()=0
 
virtual void FileHold ()=0
 
virtual void FileFetch ()=0
 
virtual void FileOpenMatLib (HWND hWnd)=0
 
virtual void FileSaveMatLib (HWND hWnd)=0
 
virtual void FileSaveAsMatLib (HWND hWnd)=0
 
virtual void LoadDefaultMatLib ()=0
 
virtual int LoadFromFile (const MCHAR *name, BOOL refresh=TRUE)=0
 
virtual int SaveToFile (const MCHAR *fname, BOOL clearNeedSaveFlag=TRUE, BOOL useNewFile=TRUE)=0
 
virtual void FileSaveSelected (const MCHAR *fname)=0
 
virtual void FileSaveNodes (INodeTab *nodes, const MCHAR *fname)=0
 
virtual int LoadMaterialLib (const MCHAR *name, MtlBaseLib *lib=NULL)=0
 
virtual int SaveMaterialLib (const MCHAR *name, MtlBaseLib *lib=NULL)=0
 
virtual int MergeFromFile (const MCHAR *name, BOOL mergeAll=FALSE, BOOL selMerged=FALSE, BOOL refresh=TRUE, int dupAction=MERGE_DUPS_PROMPT, NameTab *mrgList=NULL, int dupMtlAction=MERGE_DUP_MTL_PROMPT, int reparentAction=MERGE_REPARENT_PROMPT, BOOL includeFullGroup=FALSE)=0
 
virtual BOOL CheckForSave ()=0
 
virtual void SetMAXFileOpenDlg (MAXFileOpenDialog *dlg)=0
 
virtual void SetMAXFileSaveDlg (MAXFileSaveDialog *dlg)=0
 
virtual bool IsMaxFile (const MCHAR *filename)=0
 
virtual bool IsInternetCachedFile (const MCHAR *filename)=0
 
File Import/Export Related Methods
 
virtual BOOL FileImport ()=0
 
virtual BOOL FileExport ()=0
 
virtual BOOL ImportFromFile (const MCHAR *name, BOOL suppressPrompts=FALSE, Class_ID *importerID=NULL)=0
 
virtual BOOL ExportToFile (const MCHAR *name, BOOL suppressPrompts=FALSE, DWORD options=0, Class_ID *exporterID=NULL)=0
 
virtual BOOL GetImportZoomExtents ()=0
 
virtual void SetImportZoomExtents (BOOL onOff)=0
 
virtual bool CanImportFile (const MCHAR *filename)=0
 
Node Grouping
 
virtual INodeGroupNodes (INodeTab *nodes=NULL, MSTR *name=NULL, BOOL selGroup=TRUE)=0
 
virtual void UngroupNodes (INodeTab *nodes=NULL)=0
 
virtual void ExplodeNodes (INodeTab *nodes=NULL)=0
 
virtual void OpenGroup (INodeTab *nodes=NULL, BOOL clearSel=TRUE)=0
 
virtual void CloseGroup (INodeTab *nodes=NULL, BOOL selGroup=TRUE)=0
 
Windows Messages
virtual void TranslateAndDispatchMAXMessage (MSG &msg)=0
 
virtual BOOL CheckMAXMessages ()=0
 
Viewport Background Properties
 
virtual BOOL setBkgImageAsset (const MaxSDK::AssetManagement::AssetUser &asset)=0
 
virtual const MaxSDK::AssetManagement::AssetUsergetBkgImageAsset (void)=0
 
virtual void setBkgImageAspect (int t)=0
 
virtual int getBkgImageAspect ()=0
 
virtual void setBkgImageAnimate (BOOL onOff)=0
 
virtual int getBkgImageAnimate (void)=0
 
virtual void setBkgFrameRange (int start, int end, int step=1)=0
 
virtual int getBkgFrameRangeVal (int which)=0
 
virtual void setBkgORType (int which, int type)=0
 
virtual int getBkgORType (int which)=0
 
virtual void setBkgStartTime (TimeValue t)=0
 
virtual TimeValue getBkgStartTime ()=0
 
virtual void setBkgSyncFrame (int f)=0
 
virtual int getBkgSyncFrame ()=0
 
virtual int getBkgFrameNum (TimeValue t)=0
 
virtual void SetViewportBGColor (const Point3 &color)=0
 
virtual Point3 GetViewportBGColor ()=0
 
Plug-In Renderer Access
 
virtual int OpenRenderer (Renderer *pRenderer, INode *camNode, ViewExp *view, RendType type=RENDTYPE_NORMAL, int w=0, int h=0)=0
 
virtual int OpenRenderer (Renderer *pRenderer, ViewParams *vpar, RendType type=RENDTYPE_NORMAL, int w=0, int h=0)=0
 
virtual int RendererRenderFrame (Renderer *pRenderer, TimeValue t, Bitmap *bm, RendProgressCallback *prog=NULL, float frameDur=1.0f, ViewParams *vp=NULL, RECT *regionRect=NULL)=0
 
virtual void CloseRenderer (Renderer *pRenderer)=0
 
virtual RendererGetCurrentRenderer (bool createRendererIfItDoesntExist=true)=0
 
virtual RendererGetProductionRenderer (bool createRendererIfItDoesntExist=true)=0
 
virtual RendererGetDraftRenderer (bool createRendererIfItDoesntExist=true)=0
 
virtual RendererGetRenderer (RenderSettingID renderSettingID, bool createRendererIfItDoesntExist=true)=0
 
virtual void AssignCurRenderer (Renderer *rend)=0
 
virtual void AssignProductionRenderer (Renderer *rend)=0
 
virtual void AssignDraftRenderer (Renderer *rend)=0
 
virtual void AssignRenderer (RenderSettingID renderSettingID, Renderer *rend)=0
 
virtual void SetUseDraftRenderer (BOOL b)=0
 
virtual BOOL GetUseDraftRenderer ()=0
 
virtual void ChangeRenderSetting (RenderSettingID renderSettingID)=0
 
virtual RenderSettingID GetCurrentRenderSetting ()=0
 
virtual IRenderElementMgrGetCurRenderElementMgr ()=0
 
virtual IRenderElementMgrGetRenderElementMgr (RenderSettingID renderSettingID)=0
 
virtual void SetupRendParams (RendParams &rp, ViewExp *vpt, RendType t=RENDTYPE_NORMAL)=0
 
virtual void GetViewParamsFromNode (INode *vnode, ViewParams &vp, TimeValue t)=0
 
virtual BOOL CheckForRenderAbort ()=0
 This method may be called during a rendering to check if user has cancelled the render. More...
 
virtual void AbortRender ()=0
 Calling this method during a render will set the flag that indicates that the render is to be aborted. More...
 
virtual int GetRendTimeType ()=0
 
virtual void SetRendTimeType (int type)=0
 
virtual TimeValue GetRendStart ()=0
 
virtual void SetRendStart (TimeValue start)=0
 
virtual TimeValue GetRendEnd ()=0
 
virtual void SetRendEnd (TimeValue end)=0
 
virtual int GetRendNThFrame ()=0
 
virtual void SetRendNThFrame (int n)=0
 
virtual BOOL GetRendShowVFB ()=0
 
virtual void SetRendShowVFB (BOOL onOff)=0
 
virtual BOOL GetRendSaveFile ()=0
 
virtual void SetRendSaveFile (BOOL onOff)=0
 
virtual BOOL GetRendUseDevice ()=0
 
virtual void SetRendUseDevice (BOOL onOff)=0
 
virtual BOOL GetRendUseNet ()=0
 
virtual void SetRendUseNet (BOOL onOff)=0
 
virtual BitmapInfoGetRendFileBI ()=0
 
virtual BitmapInfoGetRendDeviceBI ()=0
 
virtual int GetRendWidth ()=0
 
virtual void SetRendWidth (int w)=0
 
virtual int GetRendHeight ()=0
 
virtual void SetRendHeight (int h)=0
 
virtual float GetRendApect ()=0
 
virtual void SetRendAspect (float a)=0
 
virtual float GetRendImageAspect ()=0
 
virtual float GetRendApertureWidth ()=0
 
virtual void SetRendApertureWidth (float aw)=0
 
virtual BOOL GetRendFieldRender ()=0
 
virtual void SetRendFieldRender (BOOL onOff)=0
 
virtual BOOL GetRendColorCheck ()=0
 
virtual void SetRendColorCheck (BOOL onOff)=0
 
virtual BOOL GetRendSuperBlack ()=0
 
virtual void SetRendSuperBlack (BOOL onOff)=0
 
virtual BOOL GetRendHidden ()=0
 
virtual void SetRendHidden (BOOL onOff)=0
 
virtual BOOL GetRendForce2Side ()=0
 
virtual void SetRendForce2Side (BOOL onOff)=0
 
virtual BOOL GetRendAtmosphere ()=0
 
virtual void SetRendAtmosphere (BOOL onOff)=0
 
virtual BOOL GetRendEffects ()=0
 
virtual void SetRendEffects (BOOL onOff)=0
 
virtual BOOL GetRendDisplacement ()=0
 
virtual void SetRendDisplacement (BOOL onOff)=0
 
virtual MSTRGetRendPickFramesString ()=0
 
virtual BOOL GetRendDitherTrue ()=0
 
virtual void SetRendDitherTrue (BOOL onOff)=0
 
virtual BOOL GetRendDither256 ()=0
 
virtual void SetRendDither256 (BOOL onOff)=0
 
virtual BOOL GetRendMultiThread ()=0
 
virtual void SetRendMultiThread (BOOL onOff)=0
 
virtual BOOL GetRendNThSerial ()=0
 
virtual void SetRendNThSerial (BOOL onOff)=0
 
virtual int GetRendVidCorrectMethod ()=0
 
virtual void SetRendVidCorrectMethod (int m)=0
 
virtual int GetRendFieldOrder ()=0
 
virtual void SetRendFieldOrder (int fo)=0
 
virtual int GetRendNTSC_PAL ()=0
 
virtual void SetRendNTSC_PAL (int np)=0
 
virtual int GetRendSuperBlackThresh ()=0
 
virtual void SetRendSuperBlackThresh (int sb)=0
 
virtual int GetRendFileNumberBase ()=0
 
virtual void SetRendFileNumberBase (int n)=0
 
virtual BOOL GetSkipRenderedFrames ()=0
 
virtual void SetSkipRenderedFrames (BOOL onOff)=0
 
Hide By Category Flags
 
virtual DWORD GetHideByCategoryFlags ()=0
 
virtual void SetHideByCategoryFlags (DWORD f)=0
 
Video Post Related Methods
virtual INodeGetINodeFromRenderID (UWORD id)=0
 
Execute MAX Commands
virtual void ExecuteMAXCommand (int id)=0
 
Environment Access (Ambient/Atmosphere/Background Access)
 
virtual TexmapGetEnvironmentMap ()=0
 
virtual void SetEnvironmentMap (Texmap *map)=0
 
virtual BOOL GetUseEnvironmentMap ()=0
 
virtual void SetUseEnvironmentMap (BOOL onOff)=0
 
virtual Point3 GetAmbient (TimeValue t, Interval &valid)=0
 
virtual void SetAmbient (TimeValue t, Point3 col)=0
 
virtual ControlGetAmbientController ()=0
 
virtual void SetAmbientController (Control *c)=0
 
virtual Point3 GetLightTint (TimeValue t, Interval &valid)=0
 
virtual void SetLightTint (TimeValue t, Point3 col)=0
 
virtual ControlGetLightTintController ()=0
 
virtual void SetLightTintController (Control *c)=0
 
virtual float GetLightLevel (TimeValue t, Interval &valid)=0
 
virtual void SetLightLevel (TimeValue t, float lev)=0
 
virtual ControlGetLightLevelController ()=0
 
virtual void SetLightLevelController (Control *c)=0
 
virtual int NumAtmospheric ()=0
 
virtual AtmosphericGetAtmospheric (int i)=0
 
virtual void SetAtmospheric (int i, Atmospheric *a)=0
 
virtual void AddAtmosphere (Atmospheric *atmos)=0
 
virtual void DeleteAtmosphere (int i)=0
 
virtual void EditAtmosphere (Atmospheric *a, INode *gizmo=NULL)=0
 
virtual Point3 GetBackGround (TimeValue t, Interval &valid)=0
 
virtual void SetBackGround (TimeValue t, Point3 col)=0
 
virtual ControlGetBackGroundController ()=0
 
virtual void SetBackGroundController (Control *c)=0
 
Render Effects Methods
virtual int NumEffects ()=0
 
virtual EffectGetEffect (int i)=0
 
virtual void SetEffect (int i, Effect *e)=0
 
virtual void AddEffect (Effect *eff)=0
 
virtual void DeleteEffect (int i)=0
 
virtual void EditEffect (Effect *e, INode *gizmo=NULL)=0
 
Sound Object Access
 
virtual SoundObjGetSoundObject ()=0
 
virtual void SetSoundObject (SoundObj *snd)=0
 
Error Logging
virtual LogSysLog ()=0
 
DLL Directory Access
virtual DllDirGetDllDir ()=0
 
virtual DllDirGetDllDirectory ()=0
 
General API Expansion Function
virtual INT_PTR Execute (int cmd, ULONG_PTR arg1=0, ULONG_PTR arg2=0, ULONG_PTR arg3=0, ULONG_PTR arg4=0, ULONG_PTR arg5=0, ULONG_PTR arg6=0)=0
 
Scene Access
 
virtual ReferenceTargetGetScenePointer ()=0
 
Track Bar and Track View Related Methods
 
virtual ITrackViewNodeGetTrackViewRootNode ()=0
 
virtual ITrackBarGetTrackBar ()=0
 
virtual ITreeViewCreateTreeViewChild (ReferenceTarget *root, HWND hParent, DWORD style=0, ULONG id=0, int open=OPENTV_SPECIAL)=0
 
Bitmap/Texmap Related Methods
 
virtual void FreeSceneBitmaps ()=0
 
virtual void EnumAuxFiles (AssetEnumCallback &assetEnum, DWORD vflags)=0
 
virtual void RenderTexmap (Texmap *tex, Bitmap *bm, float scale3d=1.0f, BOOL filter=FALSE, BOOL display=FALSE, float z=0.0f, TimeValue t=GetCOREInterface() ->GetTime(), bool bake=false)=0
 
virtual bool CanImportBitmap (const MCHAR *filename)=0
 
virtual bool CaptureSubObjectRegistration (bool OnOff, Class_ID cid)=0
 
virtual bool DownloadUrl (HWND hwnd, const MCHAR *url, const MCHAR *filename, DWORD downloadFlags=0)=0
 
virtual INodeGetImportCtxNode (void)=0
 
Rescale World Units Method
virtual void RescaleWorldUnits (float f, BOOL selected)=0
 
Time Configuration Key Steps Settings Access
virtual BOOL GetKeyStepsSelOnly ()=0
 
virtual void SetKeyStepsSelOnly (BOOL onOff)=0
 
virtual BOOL GetKeyStepsUseTrans ()=0
 
virtual void SetKeyStepsUseTrans (BOOL onOff)=0
 
virtual BOOL GetKeyStepsPos ()=0
 
virtual void SetKeyStepsPos (BOOL onOff)=0
 
virtual BOOL GetKeyStepsRot ()=0
 
virtual void SetKeyStepsRot (BOOL onOff)=0
 
virtual BOOL GetKeyStepsScale ()=0
 
virtual void SetKeyStepsScale (BOOL onOff)=0
 
virtual BOOL GetKeyStepsUseTrackBar ()=0
 
virtual void SetKeyStepsUseTrackBar (BOOL onOff)=0
 
Transform Gizmo Related Methods
 
virtual BOOL GetUseTransformGizmo ()=0
 
virtual void SetUseTransformGizmo (BOOL onOff)=0
 
virtual void SetTransformGizmoRestoreAxis (BOOL bOnOff)=0
 
virtual BOOL GetTransformGizmoRestoreAxis ()=0
 
virtual BOOL GetConstantAxisRestriction ()=0
 
virtual void SetConstantAxisRestriction (BOOL onOff)=0
 
virtual int HitTestTransformGizmo (IPoint2 *p, ViewExp *vpt, int axisFlags)=0
 
virtual void DeactivateTransformGizmo ()=0
 
Add/Delete Class Methods
 
virtual int AddClass (ClassDesc *pCD)=0
 
virtual int DeleteClass (ClassDesc *pCD)=0
 
Property Set Access

The following methods provide access to the property set data stored by MAX.

You can enter this data through the File Properties dialog. There are three tabs in this dialog that correspond to the options which can be specified for the PropertySet parameter used in the methods below. The PROPSPEC and PROPVARIANT structures used below are part of the Windows API.

virtual int GetNumProperties (int PropertySet)=0
 
virtual int FindProperty (int PropertySet, const PROPSPEC *propspec)=0
 
virtual const PROPVARIANT * GetPropertyVariant (int PropertySet, int idx)=0
 
virtual const PROPSPEC * GetPropertySpec (int PropertySet, int idx)=0
 
virtual void AddProperty (int PropertySet, const PROPSPEC *propspec, const PROPVARIANT *propvar)=0
 
virtual void DeleteProperty (int PropertySet, const PROPSPEC *propspec)=0
 
XRef Methods
virtual void SetIncludeXRefsInHierarchy (BOOL onOff)=0
 
virtual BOOL GetIncludeXRefsInHierarchy ()=0
 
virtual BOOL IsXRefAutoUpdateSuspended ()=0
 
virtual void SetXRefAutoUpdateSuspended (BOOL onOff)=0
 
virtual BOOL IsSceneXRefNode (INode *node)=0
 
Licensing Methods
virtual bool IsTrialLicense ()=0
 
virtual bool IsNetworkLicense ()=0
 Returns true if the application is running under a network license. More...
 
RAM Player
 
virtual void RAMPlayer (HWND hWndParent, const MCHAR *szChanA=NULL, const MCHAR *szChanB=NULL)=0
 
Undo/Redo Related Methods
 
virtual void FlushUndoBuffer ()=0
 
Deferred Loading Related Methods
 
virtual bool DeferredPluginLoadingEnabled ()=0
 
virtual void EnableDeferredPluginLoading (bool onOff)=0
 
- Public Member Functions inherited from FPInterfaceDesc
CoreExport FPInterfaceDesc ()
 
CoreExport FPInterfaceDesc (Interface_ID id, const MCHAR *int_name, StringResID descr, ClassDesc *cd, ULONG flag,...)
 
CoreExport ~FPInterfaceDesc ()
 
virtual void Init ()
 
LifetimeType LifetimeControl ()
 
CoreExport void LoadDescriptor (Interface_ID id, const MCHAR *int_name, StringResID descr, ClassDesc *pCD, ULONG flag,...)
 
CoreExport void AppendFunction (int id,...)
 Add a new function to this interface descriptor. More...
 
CoreExport void AppendProperty (int id,...)
 Add a new property to this interface descriptor. More...
 
CoreExport void AppendEnum (int id,...)
 Add a new enum to this interface descriptor. More...
 
CoreExport void SetClassDesc (ClassDesc *i_cd)
 
CoreExport va_list check_fn (va_list ap, int id)
 
CoreExport va_list scan_fn (va_list ap, int id, int index)
 
CoreExport va_list check_prop (va_list ap, int id)
 
CoreExport va_list scan_prop (va_list ap, int id, int index)
 
CoreExport va_list check_enum (va_list ap, EnumID id)
 
CoreExport va_list scan_enum (va_list ap, EnumID id, int index)
 
FPInterfaceDescGetDesc ()
 
Interface_ID GetID ()
 
CoreExport FPFunctionDefGetFnDef (FunctionID fid)
 
ActionTableGetActionTable ()
 
CoreExport void EnableActions (BOOL onOff)
 
virtual CoreExport HINSTANCE HInstance ()
 
virtual CoreExport const MCHARGetRsrcString (StringResID id)
 
- Public Member Functions inherited from FPInterface
virtual CoreExport FPStatus Invoke (FunctionID fid, TimeValue t=0, FPParams *params=NULL)
 
virtual FPStatus Invoke (FunctionID fid, FPParams *params)
 
virtual CoreExport FPStatus Invoke (FunctionID fid, TimeValue t, FPValue &result, FPParams *params=NULL)
 
virtual FPStatus Invoke (FunctionID fid, FPValue &result, FPParams *params=NULL)
 
virtual CoreExport FunctionID FindFn (const MCHAR *name)
 
virtual CoreExport BOOL IsEnabled (FunctionID actionID)
 
virtual CoreExport BOOL IsChecked (FunctionID actionID)
 
virtual CoreExport BOOL IsVisible (FunctionID actionID)
 
virtual CoreExport FunctionID GetIsEnabled (FunctionID actionID)
 
virtual CoreExport FunctionID GetIsChecked (FunctionID actionID)
 
virtual CoreExport FunctionID GetIsVisible (FunctionID actionID)
 
- Public Member Functions inherited from BaseInterface
virtual UtilExport ~BaseInterface ()
 Destructor. More...
 
virtual bool RegisterNotifyCallback (InterfaceNotifyCallback *incb)
 
virtual void UnRegisterNotifyCallback (InterfaceNotifyCallback *incb)
 
virtual BaseInterfaceAcquireInterface ()
 
virtual void ReleaseInterface ()
 
virtual void DeleteInterface ()
 
virtual BaseInterfaceCloneInterface (void *remapDir=NULL)
 
- Public Member Functions inherited from InterfaceServer
virtual UtilExport ~InterfaceServer ()
 Destructor. More...
 

Additional Inherited Members

- Public Types inherited from BaseInterface
enum  LifetimeType { noRelease, immediateRelease, wantsRelease, serverControlled }
 
- 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...
 
- Public Attributes inherited from FPInterfaceDesc
Interface_ID ID
 
MSTR internal_name
 
StringResID description
 
ClassDesccd
 
USHORT flags
 
Tab< FPFunctionDef * > functions
 
Tab< FPPropDef * > props
 
Tab< FPEnum * > enumerations
 
MSPluginClass * pc
 
Rolloutrollout
 
ActionTableaction_table
 
- Static Public Attributes inherited from FPInterface
static CoreExport FPInterfaceDesc nullInterface
 
- Protected Member Functions inherited from FPInterfaceDesc
CoreExport void load_descriptor (Interface_ID id, const MCHAR *int_name, StringResID descr, ClassDesc *cd, USHORT flag, va_list ap)
 
- Protected Member Functions inherited from FPInterface
virtual FPStatus _dispatch_fn (FunctionID fid, TimeValue t, FPValue &result, FPParams *p)
 

Member Function Documentation

virtual HFONT GetAppHFont ( )
pure virtual
Remarks
Returns the handle of the font used by MAX. The default font is the same one returned from GetAppHFont(). So if a developer makes a dialog in the rollup page the correct font will be used automatically.
virtual void RedrawViews ( TimeValue  t,
DWORD  vpFlags = REDRAW_NORMAL,
ReferenceTarget change = NULL 
)
pure virtual
Remarks
This method may be called to cause the viewports to be redrawn.
Parameters:
TimeValue t

The time at which to redraw the viewports.

DWORD vpFlags=REDRAW_NORMAL

You may specify one of the following:

REDRAW_BEGIN

Call this before you redraw.

REDRAW_INTERACTIVE

This allows the view quality to degrade to maintain interactively.

REDRAW_END

If during interactive redraw the state degraded, this will redraw the views in the undegraded state.

REDRAW_NORMAL

This redraws the views in the undegraded state.

ReferenceTarget *change=NULL

This parameter is not used - always let it default to NULL.
Example:
ip->RedrawViews(ip->GetTime(),REDRAW_BEGIN);

// More code ...

ip->RedrawViews(ip->GetTime(),REDRAW_INTERACTIVE);

// More code ...

ip->RedrawViews(ip->GetTime(),REDRAW_END);
virtual BOOL SetActiveViewport ( HWND  hwnd)
pure virtual
Remarks
This allows you to specify the active viewport.
Parameters:
HWND hwnd

The handle of the window to activate.
Returns
TRUE if the viewport was not previously active; otherwise FALSE.
virtual ViewExp& GetActiveViewExp ( )
pure virtual
Remarks
Returns the ViewExp reference of the active MAX viewport. NOTE: if none of the viewports are active, the first viewport of the current view tab is returned
virtual void ForceCompleteRedraw ( BOOL  doDisabled = TRUE)
pure virtual
Remarks
Calling this method will cause all the viewports to be completely redrawn. Note: This method literally forces everything (every object, every screen rectangle, every view) to be marked invalid and then the whole scene is regenerated. (The individual object pipeline caches are not flushed, however.) So this routine is guaranteed to be slow.
Parameters:
BOOL doDisabled=TRUE

If TRUE disabled viewports are redrawn; otherwise they are not.
virtual IObjCreate* GetIObjCreate ( )
pure virtual
Remarks
Returns this interface pointer cast as a IObjCreate pointer.
virtual IObjParam* GetIObjParam ( )
pure virtual
Remarks
Returns this interface pointer cast as a IObjParam pointer.
virtual HWND GetMAXHWnd ( ) const
pure virtual
Remarks
Returns the window handle of 3ds Max.
virtual MaxSDK::QmaxMainWindow* GetQmaxMainWindow ( ) const
pure virtual

Returns the Qt docking main window of 3ds Max.

Use this window to attach your toolbar or dock widget to the 3ds Max main UI. When you create new Qt toolbars or dock widgets, you must use the extended 3ds Max version QmaxToolBar and QmaxDockWidget instead of the Qt standard components.

See also
class QmaxToolBar, class QmaxDockWidget
virtual BOOL DisplayActiveCameraViewWithMultiPassEffect ( )
pure virtual
Remarks
This method will draw the active view (if it is a camera view with a multi-pass effect enabled) with that effect active.
Returns
TRUE if the active view is a camera view with a multi-pass effect enabled, FALSE otherwise.
virtual BOOL SetActiveViewportTransparencyDisplay ( int  transType)
pure virtual
virtual void DisableSceneRedraw ( )
pure virtual

Turns off scene redraws.

In order to increase the speed of certain operations, scene redraw should be turned off temporarily, then once the operation completed, should be turned back on. Scene redraw should be disabled in implementations of the Renderer::Open() method and re-enabled in implementations of Renderer::Close() method.

Note
Calls to DisableSceneRedraw() and EnableSceneRedraw() should be paired up since the system counts the requests for disabling the scene redraw. If several scene disable requests are issued, it takes an equal number of scene enable requests to re-enable the redrawing of the scene.
See also
EnableSceneRedraw, IsSceneRedrawDisabled, class SuspendSceneRedrawGuard
virtual void EnableSceneRedraw ( )
pure virtual

Turns on scene redraws.

In order to increase the speed of certain operations, scene redraw should be turned off temporarily, then once the operation completed, should be turned back on. Scene redraw should be disabled in implementations of the Renderer::Open() method and re-enabled in implementations of Renderer::Close() method.

Note
Calls to DisableSceneRedraw() and EnableSceneRedraw() should be paired up since the system counts the requests for disabling the scene redraw. If several scene disable requests are issued, it takes an equal number of scene enable requests to re-enable the redrawing of the scene.
See also
DisableSceneRedraw, IsSceneRedrawDisabled, class SuspendSceneRedrawGuard
virtual int IsSceneRedrawDisabled ( )
pure virtual

Tells whether the scene redraw is disabled.

Call this method to find out whether the scene redraw is disabled.

Returns
The count of scene redraw disable requests. This will be positive, if the scene redraw is turned off, and zero or negative if it is turned on.
See also
EnableSceneRedraw, DisableSceneredraw, class SuspendSceneRedrawGuard
virtual void RegisterRedrawViewsCallback ( RedrawViewsCallback cb)
pure virtual
Remarks
Registers a call back object that gets called every time the viewports are redrawn. The proc() method is called after the views are finished redrawing.
Parameters:
RedrawViewsCallback *cb

Points to the callback object whose proc() method is called when the viewports are redrawn. See Class RedrawViewsCallback.
virtual void UnRegisterRedrawViewsCallback ( RedrawViewsCallback cb)
pure virtual
Remarks
Un-registers the viewport redraw callback.
Parameters:
RedrawViewsCallback *cb

Points to the callback object to un-register. See Class RedrawViewsCallback.
virtual void RegisterSelectFilterCallback ( SelectFilterCallback cb)
pure virtual
Remarks
Registers a call back object that gets called to filter the selection of nodes.
Parameters:
SelectFilterCallback *cb

Points to the callback object to register. See Class SelectFilterCallback.
virtual void UnRegisterSelectFilterCallback ( SelectFilterCallback cb)
pure virtual
Remarks
Un-registers the select filter callback.
Parameters:
SelectFilterCallback *cb

Points to the callback object to un-register. See Class SelectFilterCallback.
virtual void RegisterDisplayFilterCallback ( DisplayFilterCallback cb)
pure virtual
Remarks
Registers a call back object that gets called to filter the display of nodes.

Parameters:
DisplayFilterCallback *cb

Points to the callback object to register. See Class DisplayFilterCallback.
virtual void UnRegisterDisplayFilterCallback ( DisplayFilterCallback cb)
pure virtual
Remarks
Un-registers the display filter callback.
Parameters:
DisplayFilterCallback *cb

Points to the callback object to un-register. See Class DisplayFilterCallback.
virtual BOOL SetSelectionType ( BOOL  autoWinCross,
int  winCrossOrAutoDir 
)
pure virtual
virtual void MakeExtendedViewportActive ( HWND  hWnd)
pure virtual
Remarks
This method is used with Extended Viewports (see Class ViewWindow). It is called when the extended viewport needs to become active. It should be called whenever the user clicks in the non-3D window (so as to deactivate the current 3D window, and redirect commands like the Min/Max toggle to the non-3D viewport window).
Parameters:
HWND hWnd

The handle of the window which to made active.
virtual void PutUpViewMenu ( HWND  hWnd,
POINT  pt 
)
pure virtual
Remarks
This method is used with Extended Viewports (see Class ViewWindow). It is called to put up the view type popup menu (for example the right-click menu). It should be called when the user right-clicks in a dead region of the non-3D window. This brings up the view selection menu so that the user can choose to replace the current window with a 3D or other non-3D window without having to go to the Views | Viewport Config dialog directly.
Parameters:
HWND hWnd

The handle of the window the menu is to appear in.

POINT pt

The point at which the menu is put up.
Sample Code:
case WM_RBUTTONDOWN:
pt.x = GET_X_LPARAM(lParam);
pt.y = GET_Y_LPARAM(lParam);
virtual BOOL TrackViewPickDlg ( HWND  hParent,
TrackViewPick res,
TrackViewFilter filter = NULL,
DWORD  pickTrackFlags = 0 
)
pure virtual
Remarks
This method brings up the track view pick dialog.

dlgtvp.gif
Parameters:
HWND hParent

The handle of the parent window.

TrackViewPick *res

The item chosen by the user. See Class TrackViewPick

TrackViewFilter *filter=NULL

The call back object to filter selection in the track view. See Class TrackViewFilter.

DWORD pickTrackFlags=0

See Track View Picking Flags IDs for a list of possible flags.
Returns
TRUE if the user selected OK to exit the dialog; otherwise FALSE.
Sample Code:
This code brings up the Track View Pick Dialog and filters the input to MAX's controllers. After the controller is selected GetValue() is called on it.

class MyTVFilter : public TrackViewFilter
{
BOOL proc(Animatable *anim, Animatable *client,int subNum) {
return (c) ? TRUE : FALSE;
}
};
void DoTest()
{
MyTVFilter tvf;
BOOL okay = IP->TrackViewPickDlg(IP->GetMAXHWnd(), &res, &tvf);
if (!okay) return;
Control *c = (Control *)res.anim;
SClass_ID sid = c->SuperClassID();
switch(sid) {
float r;
Interval ivalid;
c->GetValue(IP->GetTime(), &r, ivalid, method);
...
virtual BOOL TrackViewPickMultiDlg ( HWND  hParent,
MaxSDK::Array< TrackViewPick > *  res,
TrackViewFilter filter = NULL,
DWORD  pickTrackFlags = 0 
)
pure virtual
Remarks
This methods brings up a dialog that allows one to select multiple tracks. This method works much like the TrackViewPickDlg method above except it is passed a pointer to a table of a TrackViewPick items instead.

trackvwm.gif
Parameters:
HWND hParent

The handle of the parent window.

MaxSDK::Array<TrackViewPick> *res

This is a table (See Template Class Tab) of items chosen by the user. See Class TrackViewPick.

TrackViewFilter *filter=NULL

The call back object to filter selection in the track view. See Class TrackViewFilter.

DWORD pickTrackFlags=0

See Track View Picking Flags IDs for a list of possible flags.
virtual void PushCommandMode ( CommandMode m)
pure virtual
Remarks
This method pushes the specified command mode on the stack. Typically this is used by developers handling their own creation using ClassDesc::BeginCreate(). See Class ClassDesc for more details.

Note: This method works as documented but a developer may not want to use it. The problem is that other modes can be pushed on the stack (such as viewport transformation modes) and it becomes complicated to track when it is OK to pop your mode. See the methods below for alternatives (such as SetCommandMode).
Parameters:
CommandMode *m

A pointer to the command mode to push.
virtual void SetCommandMode ( CommandMode m)
pure virtual
Remarks
This method sets the top of the stack to the specified command mode. A developer should call DeleteMode() to delete their command mode when done using it.
Parameters:
CommandMode *m

The command mode to set.
virtual void PopCommandMode ( )
pure virtual
Remarks
Pops the command mode off the top of the stack.
virtual CommandMode* GetCommandMode ( )
pure virtual
Remarks
Returns the current mode on the top of the stack.
virtual void SetStdCommandMode ( int  cid)
pure virtual
Remarks
This is the typical method called by the developer to handle mouse interaction. It allows the developer to set the command mode to one of the standard command modes. For example: CID_OBJMOVE, CID_OBJROTATE, CID_OBJSCALE, CID_OBJUSCALE, CID_OBJSQUASH, CID_OBJSELECT, etc.
Parameters:
int cid

The index of the command mode to set. See Standard Command Modes to review the full list.
virtual void PushStdCommandMode ( int  cid)
pure virtual
Remarks
Allows the developer to push one of the standard command modes on the command stack. For example: CID_OBJMOVE, CID_OBJROTATE, CID_OBJSCALE, CID_OBJUSCALE, CID_OBJSQUASH, CID_OBJSELECT, etc.
Parameters:
int cid

The index of the command mode to set. See Standard Command Modes to review the full list.
virtual void RemoveMode ( CommandMode m)
pure virtual
Remarks
Removes the specified command mode from the stack. This method pops items off the command mode stack up to and including the specified mode. The top item in the stack is then set as the active command mode. As usual, ExitMode() is called on the specified mode before it is popped and EnterMode() is called on the newly active mode.
Parameters:
CommandMode *m

Points to the command mode to remove.
virtual void DeleteMode ( CommandMode m)
pure virtual
Remarks
If the developer sets or pushes a command mode, this method should be called when the developer is done with the mode to ensure that it is no longer anywhere in the stack. If the mode is already deleted this method does nothing.

Note: It is normal for a developer to set the 'Select and Move' command mode to be the active one if their mode was at the top of the stack and is being deleted. For instance:

ip->SetStdCommandMode(CID_OBJMOVE);

ip->DeleteMode(&myCMode);
Parameters:
CommandMode *m

The command mode to delete.
virtual PickModeCallback* GetCurPickMode ( )
pure virtual
Remarks
If a Pick Mode is on top of the command stack, then this function will return the PickModeCallback. If the Pick Mode is not on top of the command stack the it returns NULL.
virtual BOOL DoHitByNameDialog ( HitByNameDlgCallback hbncb = NULL)
pure virtual
Remarks
This method is called to put up the standard MAX Hit By Name dialog.

If the callback is NULL this method does a standard select by name. The nodes chosen by the user are selected if the user selects 'Select' from the dialog to exit. Use Interface::GetSelNodeCount() and GetSelNode(i) to retrieve the results.

dlghbn.gif
Parameters:
HitByNameDlgCallback *hbncb=NULL

Points to the callback object. See Class HitByNameDlgCallback. Developers should delete this callback when done.
Returns
TRUE if the user selects 'Select' from the dialog; otherwise FALSE.
virtual void PushPrompt ( const MCHAR s)
pure virtual
Remarks
Pushes a prompt to display on the prompt stack.
Parameters:
MCHAR *s

The string to display.
virtual void PopPrompt ( )
pure virtual
Remarks
Pops a displayed string off the prompt stack. The previous prompt will be restored.
virtual void ReplacePrompt ( const MCHAR s)
pure virtual
Remarks
Replaces the string on the top of the prompt stack.
Parameters:
MCHAR *s

The string to display.
virtual void DisplayTempPrompt ( const MCHAR s,
int  msec = 1000 
)
pure virtual
Remarks
Displays the string passed for the duration passed. After the time elapses, the string is popped from the stack. This may be used to put up a temporary error message for example.
Parameters:
MCHAR *s

The string to display temporarily.

int msec=1000

The duration in milliseconds to display the string.
virtual void RemoveTempPrompt ( )
pure virtual
Remarks
Removes the temporary prompt immediately.
virtual void DisableStatusXYZ ( )
pure virtual
Remarks
Disables mouse tracking and display of coordinates to the X, Y, Z status boxes. Typically a plug-in would disable mouse tracking on mouse down and enable it on mouse up.
virtual void EnableStatusXYZ ( )
pure virtual
Remarks
Enables mouse tracking and display of coordinates to the X, Y, Z status boxes. Typically a plug-in would disable mouse tracking on mouse down and enable it on mouse up.
virtual void SetStatusXYZ ( Point3  xyz,
int  type 
)
pure virtual
Remarks
Displays the point passed using the format passed in the X, Y, Z status boxes.
Parameters:
Point3 xyz

The point to be displayed.

int type

The format of the point:

STATUS_UNIVERSE

Current system units.

STATUS_SCALE

0=0%, 1=100%.

STATUS_ANGLE

Degrees.

STATUS_OTHER

Straight floating point value.
virtual void SetStatusXYZ ( AngAxis  aa)
pure virtual
Remarks
This method will convert the specified angle axis for status display.
Parameters:
AngAxis aa

The angle axis to convert and display.
virtual void ChooseDirectory ( HWND  hWnd,
const MCHAR title,
MCHAR dir,
MCHAR desc = NULL 
)
pure virtual
Remarks
This methods puts up the Choose Directory dialog box to allow the user to select a directory. The chosen directory including the drive and path is stored in dir.

choosdir.gif
Parameters:
HWND hWnd

The parent window handle.

MCHAR *title

The title in the dialog box.

MCHAR *dir

The chosen directory is stored here. This points to an empty string on cancel.

MCHAR *desc=NULL

The string to go into the Label field of the dialog. This string may be changed by the user and is returned here.
virtual float GetAutoBackupTime ( )
pure virtual
Remarks
Returns the auto backup interval in minutes.
virtual void SetAutoBackupTime ( float  minutes)
pure virtual
Remarks
Sets the auto backup time interval.
Parameters:
float minutes

The time to set in minutes.
virtual BOOL AutoBackupEnabled ( )
pure virtual
Remarks
Returns TRUE if auto backup mode is enabled; FALSE if it's disabled.
virtual void EnableAutoBackup ( BOOL  onOff)
pure virtual
Remarks
Enables or Disables the auto backup system.
Parameters:
BOOL onOff

TRUE to turn it on; FALSE to turn it off.
virtual BOOL ProgressStart ( const MCHAR title,
BOOL  dispBar,
LPTHREAD_START_ROUTINE  fn,
LPVOID  arg 
)
pure virtual
Remarks
This method puts up a progress bar in the status panel. The function fn is then called and is passed the argument arg. This function fn does the processing work of the plug-in. See the sample code below.

Note: It is not possible to use the progress bar APIs in the create or modify branches of the command panel. In the create or modify branch of the command panel, EndEditParams() gets called from this method. This is because most of MAX is "shut down" during a progress operation. For example, it is not appropriate for users to be moving objects during an IK calculation, or changing the camera lens while a preview is being created (all these operations use the ProgressStart() API). It is for this same reason that the Transform Type-in, Medit, Track View and Video Post windows are hidden during a progress operation. Since EndEditParams() is called, the Interface pointer a plug-in maintains is no longer valid after the operation is started. This method is useful for Utility plug-ins, and Import/Export plug-ins however.
Parameters:
MCHAR *title

The title string for the progress bar to let the user know what is happening.

BOOL dispBar

If FALSE the progress bar is not displayed; if TRUE the progress bar is displayed.

LPTHREAD_START_ROUTINE fn

This is a pointer to a function that returns a DWORD and takes a single argument. When ProgressStart() is called, this function is called with the argument arg passed. This function should be declared as follows:

DWORD WINAPI fn(LPVOID arg)

LPVOID arg

This is the argument to the function fn.
Returns
TRUE means the progress mode was entered successfully. FALSE means that there was a problem. Currently the return value is always TRUE. When compiled for multi-threading (which is turned off in the 1.0 build), FALSE is returned if the new thread could not be created.
Sample Code:
This code demonstrates the use of the ProgressStart(), ProgressEnd() GetCancel() and SetCancel() APIs. There are two ways to use the APIs. One is to use a dummy function for fn in ProgressStart(). Then just call ProgressUpdate() from whatever function you want to do the processing. The other way is to use fn to do the processing.

In this version, the fn function passed to ProgressStart() performs the work.

DWORD WINAPI fn(LPVOID arg)
{
int i, percent;
Interface *ip = theUtility.ip;
for (i = 0; i < 1000; i++) {
percent = i/10;
ip->ProgressUpdate(percent);
if (ip->GetCancel()) {
switch(MessageBox(ip->GetMAXHWnd(), _M("Really Cancel"), _M("Question"), MB_ICONQUESTION | MB_YESNO)) {
case IDYES:
return(0);
case IDNO:
ip->SetCancel(FALSE);
}
}
}
return(0);
}
void Utility::Test1()
{
Interface *ip = theUtility.ip;
LPVOID arg;
ip->ProgressStart(_M("Title String"), TRUE, fn, arg);
ip->ProgressEnd();
}
/endcode
In this version, the fn function passed to ProgressStart() is a dummy function, and the processing is done outside it.
/code
DWORD WINAPI fn(LPVOID arg)
{
return(0);
}
void Utility::Test1()
{
int i, percent, retval;
Interface *ip = theUtility.ip;
LPVOID arg;
ip->ProgressStart(_M("Title String"), TRUE, fn, arg);
for (i = 0; i < 1000; i++) {
percent = i/10;
ip->ProgressUpdate(percent);
if (ip->GetCancel()) {
retval = MessageBox(ip->GetMAXHWnd(), _M("Really Cancel"), _M("Question"), MB_ICONQUESTION | MB_YESNO);
if (retval == IDYES)
break;
else if (retval == IDNO)
ip->SetCancel(FALSE);
}
}
ip->ProgressEnd();
}
virtual void ProgressUpdate ( int  pct,
BOOL  showPct = TRUE,
const MCHAR title = NULL 
)
pure virtual
Remarks
This method updates the progress bar. As the function fn passed in ProcessStart() above is working it should periodically call this method to report its progress.
Parameters:
int pct

The percentage complete (0 to 99). This is what causes the progress bar to move.

BOOL showPct = TRUE

If TRUE, then the title parameter is ignored, and a percent is displayed to the right of the progress bar. If FALSE, then the title parameter is displayed next to the progress bar. This is for operations that are discrete – the title might change from "extruding" to "capping" to "welding" for example. Note that currently the Cancel button is not shown if showPct is set to FALSE, however the ESC key may be used to cancel.

MCHAR *title = NULL

If showPct is FALSE, this string is displayed next to the progress bar.
virtual void ProgressEnd ( )
pure virtual
Remarks
This method removes the progress bar and frees the memory that was allocated internally to handle the processing.
virtual BOOL GetCancel ( )
pure virtual
Remarks
This method returns the progress bar cancel button status. Also see SetCancel() below.
Returns
TRUE if the user pressed the cancel button; otherwise FALSE.
virtual void SetCancel ( BOOL  sw)
pure virtual
Remarks
Sets the cancelled status returned from GetCancel(). This may be used if you want to give the user a confirmation dialog box asking if they really want to cancel. For example, when a MAX user creates an preview animation this API is used. If the user presses cancel, the preview code reads this via GetCancel(). Then a confirmation dialog is displayed asking the user if they indeed want to cancel. If the user selects that they don't want to cancel, this method is called passing FALSE. This sets the class variable that is returned by GetCancel(). The cancel request is ignored and processing continues.

Note that this will not cancel unless you implement code to process GetCancel(). It merely sets the state returned from GetCancel().
Parameters:
BOOL sw

TRUE to set the cancel flag; FALSE to clear the cancel flag.
virtual void CreatePreview ( PreviewParams pvp = NULL,
MSTR filename = NULL,
MSTR snippet = NULL 
)
pure virtual
Remarks
This method is used to render a preview image (or animation) from the currently active viewport using the real-time (viewport) renderer.

Parameters:
PreviewParams *pvp=NULL

This class defines the way the preview is generated (via its data members). If NULL, the parameters from the preview rendering dialog box are used. See Class PreviewParams

MSTR *filename=NULL

The filename for the preview. If NULL, the filename setting from the preview rendering dialog is used. MSTR *snippet=NULL

The MXS code snippet to execute on each frame. The returned string from snippet is displayed in the rendering output. If this value is NULL, the setting in the preview rendering dialog is used.

virtual float GetGridSpacing ( )
pure virtual
Remarks
This method returns the grid spacing value that the user specifies in the Views / Grid and Snap Settings dialog in the Home Grid tab under Grid Spacing.

Implemented in Interface7.

virtual int GetGridMajorLines ( )
pure virtual
Remarks
This method returns the value that the user specifies in the Views / Grid and Snap Settings dialog in the Home Grid tab under Major Lines every Nth.

Implemented in Interface7.

virtual void SetExtendedDisplayMode ( int  vflags)
pure virtual
Remarks
This method is used internally to set the extended display mode.
Parameters:
int vflags

See Extended Display Modes.
virtual int GetExtendedDisplayMode ( )
pure virtual
Remarks
Returns the extended display mode flags. This method provides a mechanism to retrieve some additional information about an object that is more dependent on MAX than on the particular object. For example, when a spotlight is selected, it can use this method to detect that it is the only item selected, and display its cone. It checks this using and extended display mode EXT_DISP_ONLY_SELECTED. See Extended Display Modes.
virtual void SetFlyOffTime ( int  msecs)
pure virtual
Remarks
This sets the custom control flyoff time to the value passed. This is the number of milliseconds the user must hold down on a flyoff button before the flyoff is activated.
Parameters:
int msecs

The number of milliseconds the user must hold down on the button before the flyoff is activated.
virtual int GetFlyOffTime ( )
pure virtual
Remarks
Returns the number of milliseconds the user must hold down on a flyoff button before the flyoff is activated.
virtual HCURSOR GetSysCursor ( int  id)
pure virtual
Remarks
This method returns the cursor handle for the standard MAX cursors. Use SetCursor() from the Windows API to set the cursor.
Parameters:
int id

One of the following values:

SYSCUR_MOVE, SYSCUR_ROTATE, SYSCUR_USCALE, SYSCUR_NUSCALE,

SYSCUR_SQUASH, SYSCUR_SELECT, SYSCUR_DEFARROW.
Returns
The handle of the cursor.
virtual void SetCrossHairCur ( BOOL  onOff)
pure virtual
Remarks
This method is reserved for future use.
virtual BOOL GetCrossHairCur ( )
pure virtual
Remarks
This method is reserved for future use.
virtual void RealizeParamPanel ( )
pure virtual
virtual float SnapAngle ( float  angleIn,
BOOL  fastSnap = TRUE,
BOOL  forceSnap = FALSE 
)
pure virtual
Remarks
Normally, with angle snap off, interactive rotation of a node uses a rate of 1/2 degree per pixel. With angle snap on, the angles are snapped to the nearest MAX angle snap value.

This method may be used when interactive rotation is taking place with the mouse to snap the angle passed to the nearest MAX angle snap value. In this method, the input value/output value snap correspondence is accelerated as the angle grows. This prevents the user from having to move the mouse too much with larger angle values. This is why this method does not return a linear relationship between the input angle and the snapped output angle.

Note that when angle snap is off, this method just returns the input value unaltered.

Note for R3: This method formerly was set up with a single parameter, the angle to be snapped. If the angle snap toggle was on, snapping occurred. If not, it did nothing. There were two problems with this:

1) A multiplier was applied to the angle input, giving faster interactive results in object rotations, etc. This had a negative effect if you just wanted your input angle snapped to the nearest snap angle.

2) It only snapped if the angle snap toggle was on. Sometimes, you might want to snap something to the angle snap value even if the master toggle was off.

To remedy these shortcomings, the method has had two parameters added (fastSnap and forceSnap).
Parameters:
float angleIn

Angle to snap in radians.

BOOL fastSnap=TRUE

If TRUE the snapping multiplier is used; if FALSE it is not.

BOOL forceSnap=FALSE

If TRUE snapping is used even if the master angle snap toggle is off.
Returns
Angle snapped to the nearest angle snap setting (considering acceleration if specified), in radians, to be used for interactive rotation.
virtual float SnapPercent ( float  percentIn)
pure virtual
Remarks
Given a value in the range 0.0 (0%) to 1.0 (100%) this method snaps the value using the current percentage snap.
Parameters:
float percentIn

The value to snap.
Returns
The snapped value where 0.0 = 0% and 1.0 = 100%.
virtual BOOL GetSnapState ( )
pure virtual
Remarks
Retrieves the snap toggle state.
Returns
TRUE if snap is on; FALSE if snap is off.
virtual int GetSnapMode ( )
pure virtual
Remarks
Retrieves the current snap type.
Returns
One of the following values:

SNAPMODE_RELATIVE

SNAPMODE_ABSOLUTE
virtual BOOL SetSnapMode ( int  mode)
pure virtual
Remarks
Set the current snap mode. Note that setting the mode to SNAPMODE_ABSOLUTE will fail if the reference coordinate system is not in set to Screen.
Parameters:
int mode

One of the following values:

SNAPMODE_RELATIVE

SNAPMODE_ABSOLUTE
Returns
Returns TRUE if succeeded; otherwise FALSE.
virtual void SetPickMode ( PickModeCallback pCB)
pure virtual
Remarks
This will set the command mode to a standard pick mode. The callback implements hit testing and a method that is called when the user actually picks an item. Note that this method, if called a second time, will cancel the pick mode and put the user into 'Select and Move' mode. This can be used to handle the case where a user clicks on a user interface control a second time to cancel to picking.

Sample code using this API is available in /MAXSDK/SAMPLES/OBJECTS/MORPHOBJ.CPP. A utility plug-in that uses this API is /MAXSDK/SAMPLES/UTILITIES/ASCIIOUT.CPP.
Parameters:
PickModeCallback *pCB

A pointer to an instance of the class PickModeCallback.
virtual void ClearPickMode ( )
pure virtual
Remarks
This method is called to make sure there are no pick modes in the command stack.
virtual INode* PickNode ( HWND  hWnd,
IPoint2  pt,
PickNodeCallback filt = NULL 
)
pure virtual
Remarks
This method hit tests the screen position for nodes and returns an INode pointer if one is hit, NULL otherwise.
Parameters:
HWND hWnd

Handle of the window to check.

IPoint2 pt

Point to check in screen coordinates.

PickNodeCallback *filt=NULL

This callback may be used to filter nodes from being picked. See Class PickNodeCallback.
Returns
INode pointer of node that was hit; NULL if no node was found.
virtual void BoxPickNode ( ViewExp vpt,
IPoint2 pt,
BOOL  crossing,
PickNodeCallback filt = NULL 
)
pure virtual
Remarks
This method performs a node level hit test on the specified rectangular region. Use either the ViewExp::GetClosestHit() or ViewExp::GetHit() method to access the result.
Parameters:
ViewExp *vpt

The viewport to perform the hit testing.

IPoint2 *pt

These points specify the box region to hit test. The first point in the array is the lower left. The second point is the upper right.

BOOL crossing

If TRUE Crossing selection is used; otherwise Window selection is used.

PickNodeCallback *filt=NULL

This callback may be used to filter nodes from being picked. See Class PickNodeCallback.
virtual void CirclePickNode ( ViewExp vpt,
IPoint2 pt,
BOOL  crossing,
PickNodeCallback filt = NULL 
)
pure virtual
Remarks
This method performs a node level hit test on the specified circular region. Use either the ViewExp::GetClosestHit() or ViewExp::GetHit(int i) method to access the result.
Parameters:
ViewExp *vpt

The viewport to perform the hit testing.

IPoint2 *pt

These points specify the circular region to hit test. The first point in the array is the center. The second point is a point on the radius.

BOOL crossing

If TRUE Crossing selection is used; otherwise Window selection is used.

PickNodeCallback *filt=NULL

This callback may be used to filter nodes from being picked. See Class PickNodeCallback.
virtual void FencePickNode ( ViewExp vpt,
IPoint2 pt,
BOOL  crossing,
PickNodeCallback filt = NULL 
)
pure virtual
Remarks
This method performs a node level hit test on the specified arbitrary polygonal region. Use either the ViewExp::GetClosestHit() or ViewExp::GetHit() method to access the result.
Parameters:
ViewExp *vpt

The viewport to perform the hit testing.

IPoint2 *pt

These points specify the fence region to hit test. It is assumed the last point is connected to the first point to close the region. The fence knows when it's out of points when it hits a point that has negative x and y values. So, the initializer IPoint2(-1, -1) added to the bottom of this IPoint2 list signals the end.

BOOL crossing

If TRUE Crossing selection is used; otherwise Window selection is used.

PickNodeCallback *filt=NULL

This callback may be used to filter nodes from being picked. See Class PickNodeCallback.
virtual void RegisterSubObjectTypes ( const MCHAR **  types,
int  count,
int  startIndex = 0 
)
pure virtual
Remarks
This method registers the sub-object types for a given plug-in object type. See the Advanced Topics section on sub-object selection for more details.
Parameters:
const MCHAR **types

Array of strings listing the sub object levels. The order the strings appear in the array sets the indices used for the sub-object levels. Level 0 is always object level, the first string corresponds to level 1, and the second string corresponds to level 2, etc. In the sample code below, "Center" is level 1 and "Gizmo" is level 2.

int count

The number of strings in the array.

int startIndex=0

Specifies which string to display initially in the sub-object type combo box. This is needed because the NURBS object computes its sub-object list dynamically, and sometimes it add a new sub-object level while already in a sub-object level. The default value of zero replicates the original behavior.
Sample Code:
const MCHAR *ptype[] = { _M("Center"), _M("Gizmo") };

ip->RegisterSubObjectTypes(ptype, 2);
virtual void AppendSubObjectNamedSelSet ( const MCHAR set)
pure virtual
Remarks
A modifier may call this method to add sub-object named selection sets to the named selection set drop down list in the MAX toolbar. This should be done whenever the selection level changes (in the Modifiers BaseObject::ActivateSubobjSel() method). See Class BaseObject for additional methods associated with sub-object named selection sets.
Parameters:
const MCHAR *set

The named selection set to add to the list.
virtual void ClearSubObjectNamedSelSets ( )
pure virtual
Remarks
This method clears the named sub-object selection sets from the drop down.
virtual void ClearCurNamedSelSet ( )
pure virtual
Remarks
This method clears the current edit field of the named selection set drop down.
virtual void SetCurNamedSelSet ( const MCHAR setName)
pure virtual
Remarks
Sets the edit field of the named selection set drop down to the set whose name is passed.
Parameters:
MCHAR *setName

The name of the selection set to make current.
virtual void NamedSelSetListChanged ( )
pure virtual
Remarks
Calling this method tells the system that the named sub-object selection sets have changed and that the drop down needs to be rebuilt. This will cause BaseObject::SetupNamedSelDropDown() to be called on the current item being edited. This is often called inside restore objects that undo changes to the selection set. This causes the system to check if the current item being edited is in sub-object selection mode, and if so, will cause SetupNamedSelDropDown() to be called. Note that restore objects can be invoked at any time and the user may not be in sub-object selection mode (for instance they might be in the Display panel). Restore objects however can simply call this method and the system will figure out if the drop down needs to be updated.
virtual int GetSubObjectLevel ( )
pure virtual
Remarks
Returns the state of the sub object drop-down.
Returns
0 is object level and >= 1 refers to the levels registered by the object using RegisterSubObjectTypes(). The value refers to the order the item appeared in the list. 1 is the first item, 2 is the second, etc.
virtual void SetSubObjectLevel ( int  level,
BOOL  force = FALSE 
)
pure virtual
Remarks
Sets the sub-object drop down. This will cause the object being edited to receive a notification that the current sub-object level has changed (via BaseObject::ActivateSubobjSel()).
Parameters:
int level

The level registered by the object using RegisterSubObjectTypes(). 0 indicates object level. Values greater than 1 refer to the order the items appeared in the list.

BOOL force = FALSE

If this parameter is TRUE, this method will set the level even if the current level is the same as the level requested. This is to support objects that change sub-object levels on the fly, for instance NURBS.
virtual int GetNumSubObjectLevels ( )
pure virtual
Remarks
This method returns the number of sub object levels that the currently edited object (or modifier) has. Like the other sub-object related methods in this class, this method will only return a valid answer if the modifier panel is displayed.
virtual void PipeSelLevelChanged ( )
pure virtual
Remarks
Plug-ins call this method to notify the system that the selection level in the pipeline has changed. The selection level flows up the pipeline so if you change the selection level you affect things later in the pipeline. For example an edit modifier that changes the sub-object level from vertex to object level must call this method after making the change to notify the system. Note that it is only called for modifiers whose sub-object levels propagate up the pipeline. For example, when entering a sub-object level within the Bend modifier, PipeSelLevelChanged() is not called.

This method should be called from within ActivateSubobjSel() to notify the system that a selection level has changed in the pipeline. Note that calling this method from within ModifyObject() is no good since it involves re-evaluating the pipeline, which will call ModifyObject(), which will the call PipeSelLevelChanged() again, etc.
virtual void GetPipelineSubObjLevel ( DWORDTab levels)
pure virtual
Remarks
Gets the sub-object selection level at the point in the pipeline just before the current place in the history.
Parameters:
DWORDTab &levels

The sub-object level. This value depends on the object. The only level defined is level 0, which means 'object' level selection.
virtual int SubObHitTest ( TimeValue  t,
int  type,
int  crossing,
int  vflags,
IPoint2 p,
ViewExp vpt 
)
pure virtual
Remarks
This method may be called to perform a sub-object hit test. You may access the number of hits using: vpt->NumSubObjHits(); See Class ViewExp for a list of the other methods that may be used to examine the results.
Parameters:
TimeValue t

The time of the hit testing.

int type

The hit test type. See Scene and Node Hit Test Types..

int crossing

Nonzero for crossing selection; 0 for normal (window).

int vflags

The flags for hit testing. See Scene and Node Hit Testing Flags.

IPoint2 *p

Point to check in screen coordinates.

ViewExp *vpt

An interface pointer that may be used to call methods associated with the viewports.
Returns
Nonzero if the item was hit; otherwise 0.
virtual void GetModContexts ( ModContextList list,
INodeTab nodes 
)
pure virtual
Remarks
A modifier may be applied to several objects in the scene. This method retrieves a list of all the ModContexts for the modifier at the current place in the modifier stack. It also gets a list of the nodes the modifier is applied to. For example a modifier may store data into the local data portion of the ModContext for each object affected by the modifier. In order to get at this data it needs to get each ModContext.

Note: this method returns only the ModContext of the currently selected objects, even if the modifier is applied to several objects.
Parameters:
ModContextList& list

A reference to the list of ModContexts. See Class ModContextList.

INodeTab& nodes

A reference to the table of each of the nodes. See Class INodeTab.
Example
void EditFaceDataMod::SelectAll(int selLevel) {
INodeTab nodes;
ip->GetModContexts(list,nodes);
EditFaceDataModData *d;
for (int i=0; i<list.Count(); i++) {
d = (EditFaceDataModData*)list[i]->localData;
if (!d) continue;
if (theHold.Holding() && !d->GetHeld()) theHold.Put(new SelectRestore(this,d));
d->SynchSize();
switch (selLevel) {
case SEL_FACE:
d->GetFaceSel().SetAll ();
break;
}
}
SelectionChanged ();
}
virtual BaseObject* GetCurEditObject ( )
pure virtual
Remarks
Returns a pointer to the object (or modifier) that is currently being edited in the modifier panel. See Class BaseObject.

Implemented in Interface7.

virtual BOOL SelectionFrozen ( )
pure virtual
Remarks
In MAX the space bar freezes the selection set. This keeps the selection set from being inadvertently changed. This method access the status of the selection set frozen state.
Returns
TRUE if the selection set is frozen; otherwise FALSE.
virtual void FreezeSelection ( )
pure virtual
Remarks
Toggles the selection set to the frozen state.
virtual void ThawSelection ( )
pure virtual
Remarks
Toggles the selection set to the thawed state.
virtual INode* GetSelNode ( int  i)
pure virtual
Remarks
Selection sets are handled as a virtual array and accessed using an index starting at 0. This method returns a pointer to the 'i-th' node in the current selection set.
See also
GetSelNodeCount().
Parameters:
int i

Index of the node in the selection set.
Returns
Pointer to the 'i-th' node in the selection set.
virtual int GetSelNodeCount ( )
pure virtual
Remarks
Returns the number of nodes in the selection set.
virtual void EnableShowEndResult ( BOOL  enabled)
pure virtual
Remarks
This method is called if a modifier wants to temporarily disable any modifiers following it. For example the edit mesh modifier does not let you edit a mesh while other modifiers later in the pipeline are affecting the result so it calls this method to disable the others temporarily.
Parameters:
BOOL enabled

TRUE is enabled; FALSE is disabled.
virtual BOOL GetShowEndResult ( )
pure virtual
Remarks
Returns TRUE if the Show End Result button is on (pressed); otherwise FALSE.
virtual void SetShowEndResult ( BOOL  show)
pure virtual
Remarks
Sets the on/off (pressed/unpressed) state of the Show End Result button. Note that calling this method generates a redraw.
Parameters:
BOOL show

TRUE for on; FALSE for off.
virtual BOOL GetCrossing ( )
pure virtual
Remarks
Returns the state of the 'crossing' preference for hit testing.
Returns
TRUE if crossing selection is on; FALSE if off.
virtual void SetToolButtonState ( int  button,
BOOL  state 
)
pure virtual
Remarks
Sets the state of one of the transform tool buttons.
Parameters:
int button

The transform tool buttons:

MOVE_BUTTON

ROTATE_BUTTON

NUSCALE_BUTTON

USCALE_BUTTON

SQUASH_BUTTON

SELECT_BUTTON

PLACE_BUTTON

BOOL state

TRUE indicates pressed, FALSE is not pressed.
virtual BOOL GetToolButtonState ( int  button)
pure virtual
virtual void EnableToolButton ( int  button,
BOOL  enable = TRUE 
)
pure virtual
virtual void EnableUndo ( BOOL  enable)
pure virtual
virtual int GetCommandPanelTaskMode ( )
pure virtual
Remarks
Returns a value to indicate which branch of the command panel is currently active.
Returns
One of the following values:

TASK_MODE_CREATE

TASK_MODE_MODIFY

TASK_MODE_HIERARCHY

TASK_MODE_MOTION

TASK_MODE_DISPLAY

TASK_MODE_UTILITY
virtual void SetCommandPanelTaskMode ( int  mode)
pure virtual
Remarks
This method sets the branch of the command panel that is currently active.
Parameters:
int mode

One of the following values:

TASK_MODE_CREATE

TASK_MODE_MODIFY

TASK_MODE_HIERARCHY

TASK_MODE_MOTION

TASK_MODE_DISPLAY

TASK_MODE_UTILITY
virtual ViewExp& GetViewExp ( HWND  hwnd)
pure virtual
Remarks
This method gets a viewport interface given a window handle. If the input HWND is NULL, the interface of the active viewport will be returned. If the given non-NULL HWND doesn't match any of the viewport, the interface of the default view tab's first viewport will be returned.
Parameters:
HWND hwnd

The window handle of the viewport.
virtual void EnableAnimateButton ( BOOL  enable)
pure virtual
Remarks
Sets the state of the Animate button to enabled or disabled. When disabled the user cannot turn on Animate mode.

Note: Developers have additional functions available for controlling the state of the animate button. These functions are defined in /MAXSDK/INCLUDE/CONTROL.H. These functions can be used to determine if animating is on or off, or toggle it on and off without affecting the appearance of the Animate button in the user interface. In this way, a user will not be aware anything is happening. See Additional Controller Related Functions for documentation.
Parameters:
BOOL enable

Pass TRUE to enable the button; FALSE to disable it.
virtual BOOL IsAnimateEnabled ( )
pure virtual
Remarks
Returns TRUE if the Animate button is enabled; otherwise FALSE. See the note in the method above as well.
virtual void SetAnimateButtonState ( BOOL  onOff)
pure virtual
Remarks
Turns the animate button (and animate mode) on or off.
Parameters:
BOOL onOff

TRUE to turn on; FALSE to turn off.
virtual bool InProgressiveMode ( )
pure virtual
Remarks
Returns TRUE is 3ds Max is in progressive mode. See BeginProgressiveMode().
virtual void BeginProgressiveMode ( )
pure virtual
Remarks
Turns on progressive mode for SetNodeTM().

In certain situations, a time sequence of matrices is computed and sent to the node via INode::SetNodeTM(TimeValue t, Matrix3& tm). If the node employs the standard PRS controller and the rotation is the standard Euler XYZ controller, 3ds Max can achieve better animation results if it computes euler angles at the current frame based on those from the previous frame. Progressive mode tells the Euler controller to derive angles based on the previous frame. It is assumed that in this mode, SetNodeTM() is called in a strictly forward time order.
Usage:
GetCOREInterface()->BeginProgressiveMode();

for (t = start_time, t < end_time; t += time_per_frame) {

node.SetNodeTM(t, tm_at_t);

}

GetCOREInterface()->EndProgressiveMode();

To test whether 3ds Max is currently in progressive mode, use:

if ( GetCOREInterface()->InProgressiveMode() )...
virtual void EndProgressiveMode ( )
pure virtual
Remarks
Turns off progressive mode. See BeginProgressiveMode().
virtual void RegisterAxisChangeCallback ( AxisChangeCallback cb)
pure virtual
Remarks
Registers a callback object that will get called any time the user changes the reference coordinate system by:

Changing the transform coordinate system drop-down menu.

Changing the state of the transform center fly-off.

Changing X, Y, Z, XY, YZ, ZX constraint buttons/fly-off.

Using an accelerator or anything else that changes the above.
Parameters:
AxisChangeCallback *cb

Points to the callback to register. See AxisChangeCallback.
virtual void UnRegisterAxisChangeCallback ( AxisChangeCallback cb)
pure virtual
Remarks
Un-registers the axis change callback.
Parameters:
AxisChangeCallback *cb

Points to the callback to un-register. See AxisChangeCallback.
virtual int GetAxisConstraints ( )
pure virtual
Remarks
Retrieves the state of the axis constraints flyoff.
Returns
One of the following axis constraints:

AXIS_XY

AXIS_ZX

AXIS_YZ

AXIS_X

AXIS_Y

AXIS_Z
virtual void SetAxisConstraints ( int  c)
pure virtual
Remarks
Sets the state of the axis constraints flyoff.
Parameters:
int c

The axis constraint to set. You may pass one of the following:

AXIS_XY

AXIS_ZX

AXIS_YZ

AXIS_X

AXIS_Y

AXIS_Z
virtual void EnableAxisConstraints ( int  c,
BOOL  enabled 
)
pure virtual
Remarks
Enables or disables the specified axis constraint.
Parameters:
int c

The axis constraint. You may pass one of the following:

AXIS_XY

AXIS_ZX

AXIS_YZ

AXIS_X

AXIS_Y

AXIS_Z

BOOL enabled

TRUE to enable; FALSE to disable.
virtual void PushAxisConstraints ( int  c)
pure virtual
Remarks
Pushes the specified axis constraint. This push/pop mechanism is used so that the appropriate axis mode can be restored after the Transform Gizmo has been used. The Gizmo itself calls this Push method is response to the HitTest with certain flags.
Parameters:
int c

The axis constraint. You may pass one of the following:

AXIS_XY

AXIS_ZX

AXIS_YZ

AXIS_X

AXIS_Y

AXIS_Z
virtual void PopAxisConstraints ( )
pure virtual
Remarks
Pops the active constraint. After the Transform Gizmo pushes a constraint a selection processor pops it back again after the manipulators are deactivated.
virtual int GetCoordCenter ( )
pure virtual
Remarks
Retrieves the state of the coordinate system center.
Returns
One of the following values:

ORIGIN_LOCAL

Object's pivot.

ORIGIN_SELECTION

Center of selection set (or center of individual object for local or parent space).

ORIGIN_SYSTEM

Center of the reference coordinate system.
virtual void SetCoordCenter ( int  c)
pure virtual
Remarks
Sets the state of the coordinate system center.
Parameters:
int c

One of the following values (from MAXAPI.H).

ORIGIN_LOCAL

Object's pivot.

ORIGIN_SELECTION

Center of selection set (or center of individual object for local or parent space).

ORIGIN_SYSTEM

Center of the reference coordinate system.
virtual void EnableCoordCenter ( BOOL  enabled)
pure virtual
Remarks
Enables or disables the coordinates system center.
Parameters:
BOOL enabled

TRUE to enable; FALSE to disable.
virtual int GetRefCoordSys ( )
pure virtual
Remarks
Retrieves the reference coordinate system setting.
Returns
One of the following reference coordinate systems:

COORDS_HYBRID

COORDS_SCREEN

COORDS_WORLD

COORDS_PARENT

COORDS_LOCAL

COORDS_OBJECT

COORDS_GIMBAL

COORDS_WORKINGPIVOT COORDS_LOCAL_ALIGNED
virtual void SetRefCoordSys ( int  c)
pure virtual
Remarks
Sets the reference coordinate system used.
Parameters:
int c

Reference coordinate system:

COORDS_HYBRID

COORDS_SCREEN

COORDS_WORLD

COORDS_PARENT

COORDS_LOCAL

COORDS_OBJECT

COORDS_GIMBAL

COORDS_WORKINGPIVOT COORDS_LOCAL_ALIGNED
virtual void EnableRefCoordSys ( BOOL  enabled)
pure virtual
Remarks
Enables or disables the reference coordinates system.
Parameters:
BOOL enabled

TRUE to enable; FALSE to disable.
virtual int GetSelectFilter ( )
pure virtual
Remarks
This method returns your current selected select filter in the toolbar.
virtual void SetSelectFilter ( int  c)
pure virtual
Remarks
This method allows you to set the current selected select filter in the toolbar.
Parameters:
int c

The index of the filter you wish to set.
virtual int GetNumberSelectFilters ( )
pure virtual
Remarks
This method returns the number of select filters in the drop down list.
virtual const MCHAR* GetSelectFilterName ( int  index)
pure virtual
Remarks
This method returns the name that appears in the interface for the specified filter.
Parameters:
int index

The index of the filter.
virtual BOOL GetDisplayFilter ( int  index)
pure virtual
Remarks
This method returns the state of a display filter.
Parameters:
int index

The index of the display filter that you want to check.
virtual void SetDisplayFilter ( int  index,
BOOL  on 
)
pure virtual
Remarks
This method allows you to set the state of a display filter.
Parameters:
int index

The index of the display filter you wish to set.

BOOL on

TRUE for on; FALSE for off.
virtual int GetNumberDisplayFilters ( )
pure virtual
Remarks
This method returns the number of display filters in the display panel.
virtual BOOL DisplayFilterIsNodeVisible ( int  index,
int  sid,
Class_ID  cid,
INode node 
)
pure virtual
Remarks
This method checks the display filter at index, and sees if the node, class id, and super class id fail the filter check or not.
Parameters:
int index

The index of the filter

int sid

The super class id

Class_ID cid

The class ID

INode *node

The node to check.
Returns
TRUE if visible, otherwise FALSE.
virtual const MCHAR* GetDisplayFilterName ( int  index)
pure virtual
Remarks
This method returns the name of the specified filter.
Parameters:
int index

The index of the filter.
virtual Matrix3 GetTransformAxis ( INode node,
int  subIndex,
BOOL *  local = NULL 
)
pure virtual
Remarks
An item that is doing sub-object hit testing gets to specify what their sub-object axes systems are. For example a mesh may have separate coordinate systems for every face or group of selected faces, while, for instance, a bend modifier has its own axes system for the gizmo. This method gets the axes system for a particular node. Each node may have several axes systems identified by an index.

See EDITMESH.CPP for an example of use.
Parameters:
INode *node

The node to get the axis coordinates system of.

int subIndex

The index of the axis system of the node.

BOOL* local = NULL

If 'local' is not NULL, it will be set to TRUE if the center of the axis is the pivot point of the node, FALSE otherwise.
Returns
The axis system of the node.
\remarks Returns the axis which defines the space in which transforms should
take place.
Parameters:
INode *node

The object the axis system should be based on.

int subIndex

The sub object which the axis system should be based on (the thing the user clicked on).

BOOL* local = NULL

If 'local' is not NULL, it will be set to TRUE if the center of the axis is the pivot point of the node, FALSE otherwise.
Returns
A matrix representing the axis system that transforms take place in.
virtual int GetNumAxis ( )
pure virtual
Remarks
This returns the number of axis tripods in the scene. When transforming multiple sub-objects, in some cases each sub-object is transformed in a different space.
Returns
One of the following values:

NUMAXIS_ZERO

Nothing to transform.

NUMAXIS_ALL

Use only one axis.

NUMAXIS_INDIVIDUAL

Do all, one at a time.
virtual void LockAxisTripods ( BOOL  onOff)
pure virtual
Remarks
This method locks axis tripods so that they will not be updated.
Parameters:
BOOL onOff

TRUE to lock; FALSE to unlock.
virtual BOOL AxisTripodLocked ( )
pure virtual
Remarks
This method returns TRUE if axis tripods are locked.
virtual void RegisterDlgWnd ( HWND  hDlg)
pure virtual
Remarks
Registers a dialog window so IsDialogMessage() gets called for it. This is not required if you add rollup pages to the command panel as this is done automatically, however if you create a floating, modeless dialog you must call this method.

Important Note: ALL modeless dialogs in MAX must be registered to the application window with this method so that it, and any sub dialogs, will behave as they should.
Parameters:
HWND hDlg

The window handle of the dialog.
virtual int UnRegisterDlgWnd ( HWND  hDlg)
pure virtual
Remarks
Un-registers a dialog window so IsDialogMessage() is no longer called for it.
Parameters:
HWND hDlg

The window handle of the dialog.
Returns
Nonzero if successful; otherwise 0.
virtual void RegisterAccelTable ( HWND  hWnd,
HACCEL  hAccel 
)
pure virtual
Remarks
Registers a keyboard accelerator table.
Parameters:
HWND hWnd

The window handle.

HACCEL hAccel

The handle of the accelerator table (from the Windows API). See the Windows API for more details on accelerator tables.
virtual int UnRegisterAccelTable ( HWND  hWnd,
HACCEL  hAccel 
)
pure virtual
Remarks
Un-registers a keyboard accelerator table.
Parameters:
HWND hWnd

The window handle.

HACCEL hAccel

The handle of the accelerator table (from the Windows API). See the Windows API for more details on accelerator tables.
Returns
Nonzero if successful; otherwise 0.
virtual IActionManager* GetActionManager ( )
pure virtual
Remarks
Returns a pointer to the Action Manager interface class. The action manager is used to manage ActionTables which plug-ins can use to export operations that can be tied to UI elements like keyboard shortcuts, menus and toolbars. See Class IActionManager.
virtual IMenuManager* GetMenuManager ( )
pure virtual
Remarks
Returns a pointer to the manager for customizable menus. See Class IMenuManager.
virtual HWND AddRollupPage ( HINSTANCE  hInst,
const MCHAR dlgTemplate,
DLGPROC  dlgProc,
const MCHAR title,
LPARAM  param = 0,
DWORD  rollUpFlags = 0,
int  category = ROLLUP_CAT_STANDARD 
)
pure virtual
Remarks
This method is used to add a rollup page to the command panel. It returns the window handle of the rollup page.
Parameters:
HINSTANCE hInst

The DLL instance handle of the plug-in.

MCHAR *dlgTemplate

The dialog template for the rollup page.

DLGPROC dlgProc

The dialog proc to handle the messages sent to the rollup page.

MCHAR *title

The title displayed in the title bar of the rollup page.

LPARAM param=0

Any specific data to pass along may be stored here. This may be later retrieved using the GetWindowLong() call from the Windows API if it was set in the window using SetWindowLong().

For example, at the beginning of the dialog proc do something like:

BOOL CALLBACK MyDlgProc(

HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam) {

MyUtil *u = (MyUtil *)GetWindowLong(hWnd, GWL_USERDATA);

if (!u && message != WM_INITDIALOG ) return FALSE;

. . .

Then inside the code block handling the WM_INITDIALOG message do something like:

switch (message)
{
case WM_INITDIALOG:
u = (MyUtil *)lParam;
SetWindowLong(hWnd, GWL_USERDATA, (LONG)u);
. . .
Then later in the dialog you can access the object passed in – in the case above an instance of MyUtil (using u->).

DWORD rollUpFlags=0

The following flag value may be used:

APPENDROLL_CLOSED

Starts the page in the rolled up (closed) state.

int category = ROLLUP_CAT_STANDARD

The category parameter provides flexibility with regard to where a particular rollup should be displayed in the UI. RollupPanels with lower category fields will be displayed before RollupPanels with higher category fields. For RollupPanels with equal category value the one that was added first will be displayed first. Although it is possible to pass any int value as category there exist currently 5 different category defines: ROLLUP_CAT_SYSTEM, ROLLUP_CAT_STANDARD, and ROLLUP_CAT_CUSTATTRIB.

When using ROLLUP_SAVECAT, the rollup page will make the provided category sticky, meaning it will not read the category from the RollupOrder.cfg file, but rather save the category field that was passed as argument in the CatRegistry and in the RollupOrder.cfg file.

The method will take the category of the replaced rollup in case the rollUpFlags argument contains ROLLUP_USEREPLACEDCAT. This is mainly done, so that this system works with param maps as well.
Sample Code:
hBendParams = ip->AddRollupPage(hInstance, MAKEINTRESOURCE(IDD_BEND_ROLLUP), BendParamDialogProc,_M("Parameters"), (LPARAM)this );
Returns
The window handle of the rollup page.
virtual void AddRollupPage ( QWidget &  qtWidget,
const MCHAR title,
DWORD  rollupFlags = 0,
int  category = ROLLUP_CAT_STANDARD 
)
pure virtual

Adds a rollup page that hosts a Qt dialog.

Parameters
qtWidgetthe Qt widget that will be hosted in the rollup. This QWidget becomes the ownership of the system; it will be deleted by the system once no longer needed.
titleThe title string, displayed at the top of the rollup.l
rollupFlagsOptional rollup flags, such as APPENDROLL_CLOSED, DONTAUTOCLOSE, ROLLUP_SAVECAT, etc.
categoryThe category controls the ordering of the rollups, with lower values being inserted before rollups of higher category.
See also
void DeleteRollupPage(QWidget& qtWidget)
virtual HWND AddRollupPage ( HINSTANCE  hInst,
DLGTEMPLATE *  dlgTemplate,
DLGPROC  dlgProc,
const MCHAR title,
LPARAM  param = 0,
DWORD  rollUpFlags = 0,
int  category = ROLLUP_CAT_STANDARD 
)
pure virtual
Remarks
This method is used to add a rollup page to the command panel. It returns the window handle of the rollup page. This method is currently not being used.
Parameters:
HINSTANCE hInst

The DLL instance handle of the plug-in.

DLGTEMPLATE *dlgTemplate

The dialog template for the rollup page.

DLGPROC dlgProc

The dialog proc to handle the messages sent to the rollup page.

MCHAR *title

The title displayed in the title bar of the rollup page.

LPARAM param=0

Any specific data to pass along may be stored here. This may be later retrieved using the GetWindowLong() call from the Windows API if it was set in the window using SetWindowLong().

DWORD rollUpFlags=0

The following flag value may be used:

APPENDROLL_CLOSED

Starts the page in the rolled up (closed) state.

int category = ROLLUP_CAT_STANDARD

The category parameter provides flexibility with regard to where a particular rollup should be displayed in the UI. RollupPanels with lower category fields will be displayed before RollupPanels with higher category fields. For RollupPanels with equal category value the one that was added first will be displayed first. Although it is possible to pass any int value as category there exist currently 5 different category defines: ROLLUP_CAT_SYSTEM, ROLLUP_CAT_STANDARD, and ROLLUP_CAT_CUSTATTRIB.

When using ROLLUP_SAVECAT, the rollup page will make the provided category sticky, meaning it will not read the category from the RollupOrder.cfg file, but rather save the category field that was passed as argument in the CatRegistry and in the RollupOrder.cfg file.

The method will take the category of the replaced rollup in case the rollUpFlags argument contains ROLLUP_USEREPLACEDCAT. This is mainly done, so that this system works with param maps as well.
Returns
The window handle of the rollup page.
virtual void DeleteRollupPage ( HWND  hRollup)
pure virtual
Remarks
Removes a rollup page and destroys it.
Parameters:
HWND hRollup

The window handle of the rollup window. This is the handle returned from AddRollupPage().
virtual void DeleteRollupPage ( QWidget &  qtWidget)
pure virtual

Removes a rollup page that hosts a Qt dialog.

Remarks
The QWidget will get destroyed as a result of calling this.
See also
void AddRollupPage(QWidget& qtWidget, const MCHAR *title, DWORD rollupFlags, int category)
virtual HWND ReplaceRollupPage ( HWND  hOldRollup,
HINSTANCE  hInst,
const MCHAR dlgTemplate,
DLGPROC  dlgProc,
const MCHAR title,
LPARAM  param = 0,
DWORD  rollUpFlags = 0,
int  category = ROLLUP_CAT_STANDARD 
)
pure virtual
Remarks
This replaces an existing rollup with another one and (deletes the original).
Parameters:
HWND hOldRollup

The window handle of the old rollup.

HINSTANCE hInst

The DLL instance handle of the plug-in.

MCHAR *dlgTemplate

The dialog template for the rollup page.

DLGPROC dlgProc

The dialog proc to handle the messages sent to the rollup page.

MCHAR *title

The title displayed in the title bar of the rollup page.

LPARAM param=0

Any specific data to pass along may be stored here.

DWORD flags=0

The following flag value may be used:

APPENDROLL_CLOSED

Starts the page in the rolled up (closed) state.

int category = ROLLUP_CAT_STANDARD

The category parameter provides flexibility with regard to where a particular rollup should be displayed in the UI. RollupPanels with lower category fields will be displayed before RollupPanels with higher category fields. For RollupPanels with equal category value the one that was added first will be displayed first. Although it is possible to pass any int value as category there exist currently 5 different category defines: ROLLUP_CAT_SYSTEM, ROLLUP_CAT_STANDARD, and ROLLUP_CAT_CUSTATTRIB.

When using ROLLUP_SAVECAT, the rollup page will make the provided category sticky, meaning it will not read the category from the RollupOrder.cfg file, but rather save the category field that was passed as argument in the CatRegistry and in the RollupOrder.cfg file.

The method will take the category of the replaced rollup in case the flags argument contains ROLLUP_USEREPLACEDCAT. This is mainly done, so that this system works with param maps as well.
Returns
The window handle of the rollup.
\remarks This replaces an existing rollup with another one and (deletes the
original). This method is currently not being used.
Parameters:
HWND hOldRollup

The window handle of the old rollup.

HINSTANCE hInst

The DLL instance handle of the plug-in.

DLGTEMPLATE *dlgTemplate

The dialog template for the rollup page.

DLGPROC dlgProc

The dialog proc to handle the messages sent to the rollup page.

MCHAR *title

The title displayed in the title bar of the rollup page.

LPARAM param=0

Any specific data to pass along may be stored here.

DWORD rollUpFlags=0

The following flag value may be used:

APPENDROLL_CLOSED

Starts the page in the rolled up (closed) state.

int category = ROLLUP_CAT_STANDARD

The category parameter provides flexibility with regard to where a particular rollup should be displayed in the UI. RollupPanels with lower category fields will be displayed before RollupPanels with higher category fields. For RollupPanels with equal category value the one that was added first will be displayed first. Although it is possible to pass any int value as category there exist currently 5 different category defines: ROLLUP_CAT_SYSTEM, ROLLUP_CAT_STANDARD, and ROLLUP_CAT_CUSTATTRIB.

When using ROLLUP_SAVECAT, the rollup page will make the provided category sticky, meaning it will not read the category from the RollupOrder.cfg file, but rather save the category field that was passed as argument in the CatRegistry and in the RollupOrder.cfg file.

The method will take the category of the replaced rollup in case the rollUpFlags argument contains ROLLUP_USEREPLACEDCAT. This is mainly done, so that this system works with param maps as well.
Returns
The window handle of the rollup.
virtual HWND ReplaceRollupPage ( HWND  hOldRollup,
HINSTANCE  hInst,
DLGTEMPLATE *  dlgTemplate,
DLGPROC  dlgProc,
const MCHAR title,
LPARAM  param = 0,
DWORD  rollUpFlags = 0,
int  category = ROLLUP_CAT_STANDARD 
)
pure virtual
virtual IRollupWindow* GetCommandPanelRollup ( )
pure virtual
Remarks
This method returns a rollup window interface to the command panel rollup. This interface provides methods for showing and hiding rollups, adding and removing rollup pages, etc. Note: This interface does not need to be released with ReleaseIRollup() as MAX takes care of this when it shuts down.

See Class IRollupWindow.
virtual void RollupMouseMessage ( HWND  hDlg,
UINT  message,
WPARAM  wParam,
LPARAM  lParam 
)
pure virtual
Remarks
This method allows hand cursor scrolling in the command panel when the user clicks and drags the mouse in an unused area of the dialog. When the user mouse-es down in dead area of the command panel, the plug-in should pass mouse messages to this function which will pass them on to the rollup.

Note: This method is obsolete in MAX 2.0 and later. These messages no longer need to be passed along as this is handled internally.
Parameters:
HWND hDlg

The window handle of the dialog.

UINT message

The message sent to the dialog proc.

WPARAM wParam

Passed in to the dialog proc. Pass along to this method.

LPARAM lParam

Passed in to the dialog proc. Pass along to this method.
Sample Code:
case WM_LBUTTONDOWN: case WM_LBUTTONUP: case WM_MOUSEMOVE:
ip->RollupMouseMessage(hDlg,message,wParam,lParam);
virtual TimeValue GetTime ( )
pure virtual
Remarks
Returns the current time, i.e. the frame slider position. See the Advanced Topics section on Time Functions for an overview of time in MAX.
virtual void SetTime ( TimeValue  t,
BOOL  redraw = TRUE 
)
pure virtual
Remarks
Set the current time, updates the frame slider, and optionally redraws the viewports.
Parameters:
TimeValue t

The time to set as current.

BOOL redraw=TRUE

If set to FALSE, the current time will be set to the specified time but the viewports will not be redrawn.
virtual Interval GetAnimRange ( )
pure virtual
Remarks
Returns the current setting of the animation interval. This can be used to get the total number of frames in the animation. Note: The values stored in the interval returned represent ticks not frames.
virtual void SetAnimRange ( Interval  range)
pure virtual
Remarks
Sets the animation interval. Note: The values passed in the interval are ticks not frames.
Parameters:
Interval range

Specifies the new animation range to set.
virtual void RegisterTimeChangeCallback ( TimeChangeCallback tc)
pure virtual
Remarks
Registers a callback object that will get called every time the current animation time is changed.
Parameters:
TimeChangeCallback *tc

Points to the callback object to register. See Class TimeChangeCallback.
virtual void UnRegisterTimeChangeCallback ( TimeChangeCallback tc)
pure virtual
Remarks
This method un-registers the time change callback.
Parameters:
TimeChangeCallback *tc

Points to the callback object to un-register. See Class TimeChangeCallback.
virtual void RegisterCommandModeChangedCallback ( CommandModeChangedCallback cb)
pure virtual
Remarks
Register a callback object that will get called when the user changes the command mode.
Parameters:
CommandModeChangedCallback *cb

Points to the callback object to register. See Class CommandModeChangedCallback.
virtual void UnRegisterCommandModeChangedCallback ( CommandModeChangedCallback cb)
pure virtual
Remarks
Un-registers the command mode change callback object.
Parameters:
CommandModeChangedCallback *cb

Points to the callback object to un-register. See Class CommandModeChangedCallback.
virtual void RegisterViewportDisplayCallback ( BOOL  preScene,
ViewportDisplayCallback cb 
)
pure virtual
Remarks
Registers a ViewportDisplayCallback whose Display() method will be called to allow a plug-in to draw in the MAX viewports.
Parameters:
BOOL preScene

If TRUE the callback will be called before objects are rendered (typically, but not always); if FALSE the callback is called after the objects are rendered.

In some cases redrawing the viewports may take two passes; once to re-render the background plane and once to re-render the foreground plane. In this case the order of events would be:

Call pre callbacks

Render scene

Call post callbacks

Call pre callbacks

Render scene

Call post callbacks

The two calls to callbacks in the middle are neither pre nor post callbacks. However you could also look at this as two separate redraws.

ViewportDisplayCallback *cb

Points to the callback object. See Class ViewportDisplayCallback.
virtual void UnRegisterViewportDisplayCallback ( BOOL  preScene,
ViewportDisplayCallback cb 
)
pure virtual
Remarks
Call this method to un-register the viewport display callback object.
Parameters:
BOOL preScene

If TRUE the callback will be called before object are rendered (typically, but not always); if FALSE the callback is called after the objects are rendered.

ViewportDisplayCallback *cb

Points to the callback object. See Class ViewportDisplayCallback.
virtual void NotifyViewportDisplayCallbackChanged ( BOOL  preScene,
ViewportDisplayCallback cb 
)
pure virtual
Remarks
This method is called to inform MAX that the viewport callback has changed. This is similar to when an object that is part of the reference hierarchy changes and it needs to call NotifyDependents() with the message REFMSG_CHANGE to inform the items that depend on it. In a sense a ViewportDisplayCallback is like an object in the scene in that it has a Display() method that is called. However, the callback is not actually an object that is part of the reference hierarchy so it cannot send a REFMSG_CHANGE message when it changes. So this method provides the equivalent functionality. If the callback changes this method needs to be called.

To understand why this is needed consider that if a plug-in called RedrawViews() five times in a row, the viewports may be redrawn the first time (if something has changed), but the next four calls won't do anything. This is because MAX maintains some flags that indicate if things have changed or not and these flags are reset on the first redraw to indicate that everything is up to date. Therefore, when a ViewportDisplayCallback changes, it needs to call this method to let MAX know that changes have been made and the viewports indeed need to be redrawn the next time RedrawViews() is called.
Parameters:
BOOL preScene

If TRUE the callback will be called before objects are rendered (typically, but not always); if FALSE the callback is called after the objects are rendered.

ViewportDisplayCallback *cb

Points to the callback object. See Class ViewportDisplayCallback.
virtual void RegisterExitMAXCallback ( ExitMAXCallback cb)
pure virtual
Remarks
Registers a ExitMAXCallback whose Exit() method will be called when MAX is about to exit. The return value from the callback allows the plug-in to decide if MAX exits or not.
Parameters:
ExitMAXCallback *cb

Points to the callback object. See Class ExitMAXCallback.
virtual void UnRegisterExitMAXCallback ( ExitMAXCallback cb)
pure virtual
Remarks
Un-registers the exit callback so it's no longer called.
Parameters:
ExitMAXCallback *cb

Points to the callback object. See Class ExitMAXCallback.
virtual RightClickMenuManager* GetRightClickMenuManager ( )
pure virtual
Remarks
Using this pointer a developer can add to the menu that pops ups when the user clicks the right mouse button. Example code is available in: /MAXSDK/SAMPLES/MODIFIERS/EDITSPL.CPP.
See also
Class RightClickMenuManager.
Returns
A pointer to the RightClickMenuManager.
virtual void RegisterDeleteUser ( EventUser user)
pure virtual
Remarks
Registers a callback invoked when the user presses the Delete Key. This allows the developer to override the default processing of the Delete Key.
Parameters:
EventUser *user

Pointer to an instance of the EventUser class.
Sample Code:
See /MAXSDK/SAMPLES/MODIFIERS/EDITSPL.CPP.
virtual void UnRegisterDeleteUser ( EventUser user)
pure virtual
Remarks
Un-registers a Delete Key callback.
Parameters:
EventUser *user

Pointer to an instance of the EventUser class.
virtual void MakeNameUnique ( MSTR name)
pure virtual
Remarks
Generates node names that are unique within the current scene. Given a name, this method will modify it to ensure it's unique. It does this by appending a unique numeric suffix to the end of the name. Notes:
  • Calling this method repeatedly with the same original name that is not used by any node in the scene, it will return each time the same name. So, for a node name to be considered by this method as being in use, the node needs to be in the current scene.
  • Names of scene xrefed nodes are not considered as being part of the current scene.
  • Calling this method after Interface::CreateObjectNode(Object*) can result in the name suffix to be greater than the value expected by the client code. For example, if Box001 already exists in the scene, calling Interface::CreateObjectNode(Object*) to create a new Box object, then calling Interface::MakeNameUnique() to create a unique name for it, will yield Box003 as new unique name, while Box002 should be the correct new name. The solution is to either call Interface::CreateObjectNode(Object*) only, which will create a new name, or first call Interface::MakeNameUnique() with a root name and then call Interface::CreateObjectNode(Object*, const MCHAR*) to create the object with the desired new name. See also class NameMaker for ways to create unique names for other scene entities than nodes, such as layers, materials, etc.
Parameters:
MSTR &name

The name to make unique. Any existent numeric suffix is stripped before the name is made unique.
virtual INode* CreateObjectNode ( Object obj)
pure virtual
Remarks
Creates a new node in the scene with the given object. Normally a developer will use the standard creation methods for procedural objects and this method is not used. However if the developer wants to handle the creation process on their own they may need to use this method.
See also
Object Creation Methods.
Parameters:
Object *obj

Pointer to the Object to create.
Returns
Pointer to the node created. See also Interface::CreateObjectNode(Object*, const MCHAR*)
virtual GenCamera* CreateCameraObject ( int  type)
pure virtual

Creates a new camera object of the given type.

Creates a new camera object of the given type.

Parameters
typeCamera type (FREE_CAMERA, TARGETED_CAMERA or PARALLEL_CAMERA as defined in gencam.h).
Returns
Pointer to the camera object created.
virtual Object* CreateTargetObject ( )
pure virtual
virtual GenLight* CreateLightObject ( int  type)
pure virtual
virtual void* CreateInstance ( SClass_ID  superID,
Class_ID  classID 
)
pure virtual
Remarks
Creates an instance of a registered class. This will call Create() on the class descriptor.
Parameters:
SClass_ID superID

The super class ID of the item to create an instance of.

Class_ID classID

The class ID of the item to create an instance of. See Class Class_ID.
Returns
Pointer to the created instance.
Note:
There is a global method that duplicates the functionality of this class method to let you create an instance of any registered class wherever you are (without the interface pointer):

void *CreateInstance(SClass_ID superID, Class_ID classID);
virtual int BindToTarget ( INode laNode,
INode targNode 
)
pure virtual
Remarks
This method binds a node to a target using a lookat controller.
Parameters:
INode *laNode

Pointer to the node to assign the lookat controller to.

INode *targNode

Pointer to the target node.
Returns
Returns TRUE if the node was bound; otherwise FALSE.
Sample Code:
This method is used in /MAXSDK/SAMPLES/OBJECTS/CAMERA.CPP.
virtual int IsCPEdgeOnInView ( )
pure virtual
Remarks
This method returns nonzero if the construction plane is 'head on' in the current viewport. For example if the construction plane was XY and you were looking from the Front view, this method would return nonzero. This is used for example during object creation because this process doesn't work very well when the view is 'head on'.
Returns
Nonzero if the construction plane is 'head on' in the current viewport; otherwise 0.

For use with extended views: - make the extended viewport active (set on mouse click, for example) -put up the view type popup menu (put up on right-click, for example)
virtual unsigned int DeleteNode ( INode node,
BOOL  redraw = TRUE,
BOOL  overrideSlaves = FALSE 
)
pure virtual

Deletes the specified node from the scene.

Call this method to delete a specific node from the scene.

  • The children of the deleted node will maintain their position.
  • Empty group heads resulting from the deletion of the node will also be deleted.
  • System nodes are not deleted by this method. Use the system's methods to modify its node structure. Use Interface9::DeleteNodes to delete all nodes of a system object.
  • The selection state and deletion of the node will be undo-able after calling this method, provided that the undo system was engaged. For example, to delete the first node in the current selection set, one could use the following code:
    ip->DeleteNode(ip->GetSelNode(0));
    theHold.Accept(_M("Delete"));
    The string used in the Accept() method appears in the undo list.

Note that the object reference of the node is deleted as well if the only item referencing that object is the node. This is because when the node is deleted, it first deletes all its references. Whenever a reference is deleted, if the item is the last reference, then the system deletes the item as well. If the node deletion occurs while the undo system was engaged, RestoreObjs will hold references to the items removed from the node, preventing their immediate deletion.

Parameters
[in]nodeThe node to be deleted
[in]redrawIf FALSE the viewports will not be redrawn after the node is deleted. This allows several nodes to be deleted at once without the viewports having to be redrawn after each one.
[in]overrideSlavesIf TRUE, this method will delete nodes whose TM controllers implement Control::PreventNodeDeletion() to return TRUE. Control::PreventNodeDeletion() controls whether the node can be deleted from the scene. This parameter allows a master controller to easily delete slaves nodes if it needs to.
Returns
The number of nodes that were deleted.
virtual INode* GetRootNode ( )
pure virtual
Remarks
Returns a pointer to the root node. From the root node one can retrieve the children (using INode::NumberOfChildren(), and INode::GetChildNode(i)). This allows a developer enumerated the scene by enumerating the node tree.
virtual void SetNodeTMRelConstPlane ( INode node,
Matrix3 mat 
)
pure virtual
Remarks
Sets the nodes transform relative to the current construction plane. This may be used during creating so you can set the position of the node in terms of the construction plane and not in world units.
Parameters:
INode *node

The node whose transform will be set.

Matrix3& mat

The transformation matrix.
virtual void SelectNode ( INode node,
int  clearSel = 1 
)
pure virtual
Remarks
This selects the specified node, either adding it to the current selection set, or creating a new selection set with the node.

Note: A developer should call theHold.Begin() before this method and theHold.Accept() after this call. Otherwise, MAX may crash if the user selects undo after this call has been issued. See the sample code below. Also see The Undo and Redo System for more details on this system.
Parameters:
INode *node

The node to select.

int clearSel = 1

If zero, the node is added to the current selection set. If nonzero, the node replaces the selection set.
Sample Code:
ip->SelectNode(node);
MSTR undostr; undostr.printf("Select");
theHold.Accept(undostr);
virtual void DeSelectNode ( INode node)
pure virtual
Remarks
This method un-selects the specified node.
Parameters:
INode *node

The node to deselect.
virtual void SelectNodeTab ( INodeTab nodes,
BOOL  sel,
BOOL  redraw = TRUE 
)
pure virtual
Remarks
This method may be used to select or deselect a group of nodes all at once and optionally redraw the viewports when done.
Parameters:
INodeTab &nodes

The Table of nodes to select or deselect.

BOOL sel

If TRUE the nodes are selected; otherwise they are deselected.

BOOL redraw=TRUE

If TRUE the viewports are redrawn when done; otherwise they are not.
virtual void ClearNodeSelection ( BOOL  redraw = TRUE)
pure virtual
Remarks
This method may be used to clear the current selection set and optionally redraw the viewports.
Parameters:
BOOL redraw=TRUE

If TRUE the viewports are redrawn when done; otherwise they are not.
virtual void AddLightToScene ( INode node)
pure virtual
Remarks
Adds a light to the scene and registers the light with the viewports.
Parameters:
INode *node

The light to add.
virtual float GetLightConeConstraint ( )
pure virtual
Remarks
Returns the light cone constraint angle (in radians). This is the hotspot / falloff separation angle.
virtual void AddGridToScene ( INode node)
pure virtual
Remarks
If grid Auto Activation is on, sets the given node as the active grid object. This is used with grid helper objects to allow them to take effect. This method may also be used to activate the home grid.

Parameters:
INode *node

The node to set as the active grid object. To activate the home grid pass NULL.
virtual void SetActiveGrid ( INode node)
pure virtual
Remarks
Sets the given node as the active grid object. This is used with grid helper objects to allow them to take effect. This method may also be used to activate the home grid.

Parameters:
INode *node

The node to set as the active grid object. To activate the home grid pass NULL.
virtual INode* GetActiveGrid ( )
pure virtual
Remarks
Returns the active grid node or NULL if the home grid is in use.
virtual void StopCreating ( )
pure virtual
Remarks
Calling this method will result in ending the currently active object creation mode. The plugin's ClassDesc::EndCreate() method will also be called as a result of calling StopCreating(). Most often this method is called either from custom creation command modes in response to a change in the current object selection, or from functions that need to change the current object selection and could be invoked virtually any time, such as via a hot-key or MAXScript. Note that this method should not be called from within an object's creation callback in order to stop creating the current object. Rather, CREATE_STOP should be returned from the creation callback procedure. For more information, see Object Creation Methods.
virtual Object* NonMouseCreate ( Matrix3  tm)
pure virtual
Remarks
This creates a new object/node without going through the usual create mouse proc sequence. The matrix is relative to the construction plane. This must be called during the creation phase of an object. For example, the procedural sphere uses it when the user clicks on the 'Create' button after they type in the parameters for the sphere. See Object Creation Methods.
Parameters:
Matrix3 tm

The transformation matrix relative to the construction plane.
virtual void NonMouseCreateFinish ( Matrix3  tm)
pure virtual
Remarks
This method is presently only used in the Line object. It's used for repositioning the pivot point of the object at the end of the creation process. You simply pass it the new matrix, and the creation manager sets the TM for the node being created to the given TM * the construction plane TM.
Parameters:
Matrix3 tm

The transformation matrix relative to the construction plane for the node.
virtual const MCHAR* GetDir ( int  which)
pure virtual
Remarks
Returns the pathname of a directory used by 3ds Max.
Parameters:
int which

One of the following directories. See List of Directory Names.
Returns
The pathname of the directory.
virtual int GetPlugInEntryCount ( )
pure virtual
Remarks
This is the number of entries in PLUGIN.INI. PLUGIN.INI contains a list of descriptions and directories used by plug-in DLLs.
See also
Plug-In Directory Search Mechanism.
Returns
The number of entries in PLUGIN.INI.
virtual const MCHAR* GetPlugInDesc ( int  i)
pure virtual
Remarks
Returns the 'i-th' description string from PLUGIN.INI.
See also
Plug-In Directory Search Mechanism.
Parameters:
int i

Specifies which description to return.
Returns
The 'i-th' description string from PLUGIN.INI.
virtual const MCHAR* GetPlugInDir ( int  i)
pure virtual
Remarks
Returns the pathname string for the 'i-th' plug-in directory from PLUGIN.INI.
See also
Plug-In Directory Search Mechanism.
Parameters:
int i

Specifies which directory to return.
Returns
The 'i-th' pathname string from PLUGIN.INI.
virtual int GetAssetDirCount ( MaxSDK::AssetManagement::AssetType  assetType)
pure virtual

Returns the number of permanent user paths associated with a particular type of asset.

Parameters
[in]assetTypeAn enumeration constant representing the asset's type
Returns
A non-negative integer denoting the number of paths
Remarks
Remember that this function gives you the count of permanent user paths, not session user paths. Session user paths are temporary.
virtual const MCHAR* GetAssetDir ( int  i,
MaxSDK::AssetManagement::AssetType  assetType 
)
pure virtual

Returns the "ith" permanent user path associated with a particular asset type.

Parameters
[in]iThe index of the directory you want
[in]assetTypeAn enumeration constant representing the asset's type
Returns
A c-string with an absolute path to the ith asset directory
Remarks
Remember that this function returns a permanent user path, not a session user path. A session user path is temporary.
virtual BOOL AddAssetDir ( const MCHAR dir,
MaxSDK::AssetManagement::AssetType  assetType 
)
pure virtual

Adds a permanent user path associated to a particular asset type.

Parameters
[in]dirAn absolute path
[in]assetTypeAn enumeration constant representing the asset's type
Returns
TRUE if the path was added, FALSE if not
Remarks
Remember that this function is for adding permanent user paths, not session user paths. Session user paths are temporary.
virtual BOOL AddSessionAssetDir ( const MCHAR dir,
MaxSDK::AssetManagement::AssetType  assetType,
int  update = TRUE 
)
pure virtual

Adds a session user path associated to a particular asset type.

Parameters
[in]dirAn absolute path
[in]assetTypeAn enumeration constant representing the asset's type
[in]updatesystem configuration files with the new data
Returns
TRUE if the path was added, FALSE if not
Remarks
Remember that this function is for adding permanent user paths, not session user paths
virtual int GetSessionAssetDirCount ( MaxSDK::AssetManagement::AssetType  assetType)
pure virtual

Returns the number of session user paths associated with a particular type of asset.

Parameters
[in]assetTypeAn enumeration constant representing the asset's type
Returns
A non-negative integer denoting the number of paths
Remarks
Remember that this function gives you the count of session user paths, not permanent user paths. Session user paths are temporary.
virtual const MCHAR* GetSessionAssetDir ( int  i,
MaxSDK::AssetManagement::AssetType  assetType 
)
pure virtual

Returns the "ith" session user path associated with a particular asset type.

Parameters
[in]iThe index of the directory you want
[in]assetTypeAn enumeration constant representing the asset's type
Returns
a c-string with an absolute path to the ith asset directory
Remarks
Remember that this function returns a session user path, not a permanent user path.
virtual BOOL DeleteSessionAssetDir ( int  i,
MaxSDK::AssetManagement::AssetType  assetType,
int  update = TRUE 
)
pure virtual

Deletes the "ith" session user path associated with a particular asset type.

Parameters
[in]iThe index of the directory you want to delete
[in]assetTypeAn enumeration constant representing the asset's type
[in]updatesystem configuration files with the new data
Returns
a c-string with an absolute path to the ith asset directory
Remarks
Remember that this function returns a session user path, not a permanent user path.
virtual int GetCurAssetDirCount ( MaxSDK::AssetManagement::AssetType  assetType)
pure virtual

Returns the number of session (temporary) and permanent user paths associated with a particular type of asset.

Parameters
[in]assetTypeAn enumeration constant representing the asset's type
Returns
A non-negative integer denoting the number of paths
Remarks
Remember that this function gives you the total count of both session(temporary) and permanent user paths.
virtual const MCHAR* GetCurAssetDir ( int  i,
MaxSDK::AssetManagement::AssetType  assetType 
)
pure virtual

Returns the "ith" session\permanent user path associated with a particular asset type.

Session user paths come first in the list

Parameters
[in]iThe index of the directory you want
[in]assetTypeAn enumeration constant representing the asset's type
Returns
a c-string with an absolute path to the ith asset directory
Remarks
Remember that session user paths come before permanent user paths.
virtual int DoExclusionListDialog ( ExclList nl,
BOOL  doShadows = TRUE 
)
pure virtual
Remarks
This brings up the standard Exclude / Include dialog box used for light exclusion / inclusion lists.

dlgexcl.gif
Parameters:
ExclList *nl

If the user selects OK, this is the list of names chosen by the user. See Class ExclList.

BOOL doShadows=TRUE

The shadows switch.
Returns
Nonzero if the user selected OK to exit the dialog; otherwise 0.
virtual void ConvertNameTabToExclList ( const NameTab nt,
ExclList excList 
)
pure virtual
Remarks
This method will convert a NameTab to an ExclList (the new format for Exclusion lists).
Parameters:
const NameTab *nt

A pointer to the name table.

ExclList *excList

A pointer to the resulting exclusion list.
virtual MtlBase* DoMaterialBrowseDlg ( HWND  hParent,
DWORD  vflags,
BOOL &  newMat,
BOOL &  cancel 
)
pure virtual
Remarks
This method brings up the Material / Map Browser dialog box.
dlgbrows.gif
Parameters:
HWND hParent

The parent window handle.

DWORD vflags

See Material Browser Flags.

BOOL &newMat

TRUE if the user has selected a new item; otherwise FALSE. If TRUE it is safe to modify this item. If FALSE the item may be an instance and a developer should not modify this as other materials may be using this same item.

BOOL &cancel

TRUE if the user canceled the dialog; otherwise FALSE.
Returns
If cancel is FALSE, the item chosen by the user is returned. See Class MtlBase.
virtual void PutMtlToMtlEditor ( MtlBase mb,
int  slot = -1 
)
pure virtual
Remarks
Puts the specified material into the material editor. The material is put to the specified slot, or if -1 is passed, a dialog is presented which allows the user to choose a sample slot for the material.

puttomtl.gif
Parameters:
MtlBase *mb

The material to put to the material editor.

int slot=-1

The Materials Editor slot number (a value in the range 0 to 23). If a slot number is specified, then this method will replace that material in the Materials Editor without user interaction. If -1 is passed (the default) then the function brings up the put dialog.
virtual MtlBase* GetMtlSlot ( int  slot)
pure virtual
Remarks
Returns a pointer to the material in the specified slot in the Materials Editor.
Parameters:
int slot

The number of the slot in the Materials Editor (a value in the range 0 to 23).
virtual MtlBaseLib* GetSceneMtls ( )
pure virtual
Remarks
Returns a list of all the materials used in the scene.
Returns
See Class MtlBaseLib.
See also
Interface17::UpdateSceneMaterialLib
virtual BOOL OkMtlForScene ( MtlBase m)
pure virtual
Remarks
Before assigning material to scene, call this to avoid duplicate names. Note that this method may replace any existing scene materials with the same name as the supplied material with that supplied material. If you are calling this method from the UI layer, make sure to call theHold.Begin() before calling this method, and if this method returns FALSE, call theHold.Cancel();
Parameters:
MtlBase *m

The material to get the name from, and the material used to replace any existing scene materials with same name.

Returns
TRUE if it is okay to assign the material; FALSE if not.
virtual MSTR& GetCurFileName ( )
pure virtual
Remarks
Returns the name of the current MAX file (but not the path). For example, if the currently loaded file is "<b>D:\3DSMAX\SCENES\Expgears.max</b>" this method returns " <b>Expgears.max</b>".
virtual MSTR& GetCurFilePath ( )
pure virtual
Remarks
Returns the file and path of the current MAX file. For example, if the currently loaded file is "<b>D:\3DSMAX\SCENES\Expgears.max</b>" this method returns "<b>D:\3DSMAX\SCENES\Expgears.max</b> ".
virtual const MCHAR* GetMatLibFileName ( )
pure virtual
Remarks
Returns the current material library file name.
virtual void FileOpen ( )
pure virtual
Remarks
This brings up the standard MAX file open dialog and allows the user to load a new scene.
virtual BOOL FileSave ( )
pure virtual
Remarks
This saves the current file. If the file has not been saved yet (and is thus unnamed) this brings up the standard MAX file Save As dialog box and allows the user to choose a name.
Returns
TRUE if successful, otherwise FALSE.
virtual BOOL FileSaveAs ( )
pure virtual
Remarks
This brings up the standard MAX file save as dialog box and allows the user to save the current scene to a new file.
Returns
TRUE if successful, otherwise FALSE.
virtual void FileSaveSelected ( )
pure virtual
Remarks
This brings up the standard MAX file save selected dialog box and allows the user to save the selected items from the current scene.
virtual void FileReset ( BOOL  noPrompt = FALSE)
pure virtual
Remarks
This resets MAX to its startup condition after a confirmation prompt. This performs the same operation as choosing File / Reset from the MAX menus.
Parameters:
BOOL noPrompt=FALSE

If TRUE the confirmation prompt is not presented.
virtual void FileMerge ( )
pure virtual
Remarks
This allows the user to merge another MAX file with the current scene. This performs the same operation as choosing File / Merge from the MAX menus.
virtual void FileHold ( )
pure virtual
Remarks
This saves the current state of the scene to a temporary hold buffer (same as Edit / Hold). This state may later be restored using FileFetch() or (Edit / Fetch from MAX).
virtual void FileFetch ( )
pure virtual
Remarks
This restores the current state of the scene from the temporary hold buffer created using FileHold() (or from the MAX menu command Edit / Hold).
virtual void FileOpenMatLib ( HWND  hWnd)
pure virtual
Remarks
This method brings up the File Open dialog box and allows the user to select a material library to load.
Parameters:
HWND hWnd

The parent window handle.
virtual void FileSaveMatLib ( HWND  hWnd)
pure virtual
Remarks
If the current material library has been saved previously (has been named) this method saves the material library to the same file. Otherwise it brings up the standard Save File As dialog box to allow the user to save the current material library.
Parameters:
HWND hWnd

The parent window handle.
virtual void FileSaveAsMatLib ( HWND  hWnd)
pure virtual
Remarks
Brings up the standard Save File As dialog box to allow the user to save the current material library.
Parameters:
HWND hWnd

The parent window handle.
virtual void LoadDefaultMatLib ( )
pure virtual
Remarks
This method loads the default material library 3DSMAX.MAT (if this file exists).
virtual int LoadFromFile ( const MCHAR name,
BOOL  refresh = TRUE 
)
pure virtual
Remarks
Loads the specified MAX file. A developer should normally specify a complete path name. This method does not bring up a file dialog.
Parameters:
const MCHAR *name

The MAX file to load.

BOOL refresh=TRUE

Set this to FALSE to prevent the viewports from automatically being refreshed.
Returns
Nonzero if the file was loaded; otherwise 0.
virtual int SaveToFile ( const MCHAR fname,
BOOL  clearNeedSaveFlag = TRUE,
BOOL  useNewFile = TRUE 
)
pure virtual
Remarks
Saves the current scene to the specified MAX file. This method does not bring up a file dialog.
Parameters:
const MCHAR *name

The MAX file to save.

BOOL clearNeedSaveFlag = TRUE

if clearNeedSaveFlag is false, the scene 'dirty' flag is not cleared.

BOOL useNewFile = TRUE

if it's true, the saved file will become the current scene and the file is added to the MRU list,
Returns
Nonzero if the library was saved; otherwise 0.
virtual void FileSaveSelected ( const MCHAR fname)
pure virtual
Remarks
Saves the selected nodes to the specified file.
Parameters:
MCHAR *fname

The MAX file to save.
virtual void FileSaveNodes ( INodeTab nodes,
const MCHAR fname 
)
pure virtual
Remarks
Saves the specified nodes to the specified file.
Parameters:
INodeTab* nodes

Points to the table of nodes to save. See Class INodeTab.

MCHAR *fname

The MAX file to save.
virtual int LoadMaterialLib ( const MCHAR name,
MtlBaseLib lib = NULL 
)
pure virtual
Remarks
Loads the specified material library. This method does not bring up a file dialog.
Parameters:
const MCHAR *name

The material library to load.

MtlBaseLib *lib=NULL

Points to the material library to load into. If NULL the library is loaded into the current material library. See Class MtlBaseLib.

Note: You need to call MtlBaseLib::DeleteAll() on the library during a MAX reset operation. This will remove all its references to the materials and set its count to zero.
Returns
Nonzero if the library was loaded; otherwise 0.
virtual int SaveMaterialLib ( const MCHAR name,
MtlBaseLib lib = NULL 
)
pure virtual
Remarks
Saves the specified material library to the specified file. This method does not bring up a file dialog.
Parameters:
const MCHAR *name

The material library to save.

Points to the material library to save from. If NULL the library is saved from the current material library. See Class MtlBaseLib.
Returns
Nonzero if the library was saved; otherwise 0.
virtual int MergeFromFile ( const MCHAR name,
BOOL  mergeAll = FALSE,
BOOL  selMerged = FALSE,
BOOL  refresh = TRUE,
int  dupAction = MERGE_DUPS_PROMPT,
NameTab mrgList = NULL,
int  dupMtlAction = MERGE_DUP_MTL_PROMPT,
int  reparentAction = MERGE_REPARENT_PROMPT,
BOOL  includeFullGroup = FALSE 
)
pure virtual
Remarks
Merges the specified MAX file into the current scene. In MAX 2.0 and later additional parameters allow automatic viewport updates to be optionally be turned off, cases of duplicate objects being merged may be handled, a table of names of the merged objects may be generated, and only specific named objects from the file may be merged.
Parameters:
const MCHAR *name

The MAX file to merge.

BOOL mergeAll=FALSE

If TRUE all the items in the file are merged; otherwise the selector dialog appears allowing the user to choose.

selMerged=FALSE

If TRUE the nodes are selected when they are merged.

BOOL refresh=TRUE

Set this to FALSE to prevent the viewports from automatically being refreshed.

int dupAction = MERGE_DUPS_PROMPT

Determines what to do when duplicate named objects are encountered during the merge. See Duplicate Node Name Actions
NameTab* mrgList=NULL

When you specify a pointer to a NameTab for this parameter, and don't set dupAction to MERGE_LIST_NAMES, then this method will merge the nodes whose names are listed in the mrgList.

If dupAction==MERGE_LIST_NAMES, (and mergeAll==TRUE, and mrgList != NULL) then this method puts a list of the nodes in the file into mrgList, and simply returns (no merging is done).

See Class NameTab.

BOOL dupMtlAction=MERGE_DUP_MTL_PROMPT

Determines what to do when duplicate material names are encountered during the merge. Must be one of the Duplicate Material Name Actions
BOOL reparentAction=MERGE_REPARENT_PROMPT

Determines how to re-parent nodes during a merge operation. Must be one of the Node Reparent Actions bool includeFullGroup=FALSE

If TRUE, expand list of nodes to merge to include all group nodes associated with those nodes
Returns
Nonzero if the file was merged; otherwise 0.
virtual BOOL FileImport ( )
pure virtual
Remarks
This method simply brings up the 'Select File to Import' dialog just as if the user picked this option from the File / Import... pulldown menu.
Returns
TRUE if the file was imported successfully; otherwise FALSE.
virtual BOOL FileExport ( )
pure virtual
Remarks
This method simply brings up the 'Select File to Export' dialog just as if the user picked this option from the File / Export... pulldown menu.
Returns
TRUE if the export file was written successfully; otherwise FALSE.
virtual BOOL ImportFromFile ( const MCHAR name,
BOOL  suppressPrompts = FALSE,
Class_ID importerID = NULL 
)
pure virtual
Remarks
This method allows the import of the specified file by any of the supported import formats. This is done by specifying a full filename thus bypassing the file browser. If suppressPrompts is set to TRUE, the import mechanism will not display any prompts requiring user action.

Note: Developers of Import plug-ins need to support the suppressPrompts mechanism for this to work properly. Developers of such plug-ins should see the Class SceneImport for details.
Parameters:
const MCHAR *name

The full file name (including extension – which identifies the importer used) of the input file.

BOOL suppressPrompts=FALSE

If TRUE the default choices in the import plug-in are used and no options dialogs are presented. If FALSE any options dialogs provided by the importer are presented to the user.

Class_ID *importerID=NULL

The parameter specifies the Class_ID of the import module to use. This is for those cases where more than one import module uses the same file extension. Omitting this class ID operates in the pre-R3 mode, i.e. the first importer found is used.
Returns
TRUE if the export file was written successfully; otherwise FALSE.
virtual BOOL ExportToFile ( const MCHAR name,
BOOL  suppressPrompts = FALSE,
DWORD  options = 0,
Class_ID exporterID = NULL 
)
pure virtual
Remarks
This method allows the export of the current MAX file to any of the supported export formats. This is done by specifying a full filename thus bypassing the file browser. If suppressPrompts is set to TRUE, the export mechanism will not display any prompts requiring user action.

Note: Developers of Export plug-ins need to support the suppressPrompts mechanism for this to work properly. Developers of such plug-ins should see the Class SceneExport for details.
Parameters:
const MCHAR *name

The full file name (including extension – which identifies the exporter used) of the output file.

BOOL suppressPrompts=FALSE

If TRUE the default choices in the export plug-in are used and no options dialogs are presented. If FALSE any options dialogs provided by the exporter are presented to the user.

DWORD options

There is currently one option; SCENE_EXPORT_SELECTED which allows you to export only selected nodes.

Class_ID *exporterID=NULL

The parameter specifies the Class_ID of the export module to use. This is for those cases where more than one export module uses the same file extension. Omitting this class ID operates in the pre-R3 mode, i.e. the first exporter found is used.
Returns
TRUE if the export file was written successfully; otherwise FALSE.
virtual BOOL NodeColorPicker ( HWND  hWnd,
DWORD &  col 
)
pure virtual
Remarks
This method brings up the standard MAX object color picker dialog.

dlgnode.gif
Parameters:
HWND hWnd

The parent window handle.

DWORD &col

If the user picks a color then this will be set to the chosen color. This is stored in a 32 bit format, with the high order 8 bits as 0's, the next 8 bits as the Blue amount, the next 8 bits as the Green amount, and the low order 8 bits as the Red amount (0x00BBGGRR). See COLORREF - DWORD Color Format.
Returns
TRUE if the user picks a color and FALSE if the user cancels the dialog.
virtual INode* GroupNodes ( INodeTab nodes = NULL,
MSTR name = NULL,
BOOL  selGroup = TRUE 
)
pure virtual
Remarks
Combines the specified nodes into a MAX group.
Parameters:
INodeTab *nodes=NULL

The table of nodes to combine into a MAX group. If NULL is passed, the current selection set is used.

MSTR *name=NULL

The name of the group to create. If the name is NULL, a dialog box will prompt the user to select a name.

BOOL selGroup=TRUE

If TRUE, the group of nodes will be selected after the operation is completed.
Returns
A pointer to the group of nodes created.
virtual void UngroupNodes ( INodeTab nodes = NULL)
pure virtual
Remarks
Un-groups the specified nodes.
Parameters:
INodeTab *nodes=NULL

The table of nodes to un-group. If NULL is passed, the current selection set is used.
virtual void ExplodeNodes ( INodeTab nodes = NULL)
pure virtual
Remarks
Explodes the grouped nodes. This completely un-groups nested groups.
Parameters:
INodeTab *nodes=NULL

The table of nodes to explode. If NULL is passed, the current selection set is used.
virtual void OpenGroup ( INodeTab nodes = NULL,
BOOL  clearSel = TRUE 
)
pure virtual
Remarks
Opens the grouped nodes. Items in an opened group may be edited individually.
Parameters:
INodeTab *nodes=NULL

The table of nodes comprising a group that will be opened. If NULL is passed, the current selection set is used.

BOOL selGroup=TRUE

If TRUE, the group of nodes will be selected after the operation is completed.
virtual void CloseGroup ( INodeTab nodes = NULL,
BOOL  selGroup = TRUE 
)
pure virtual
Remarks
Closes the specified group of nodes. Items in a closed group cannot be edited individually.
Parameters:
INodeTab *nodes=NULL

The table of nodes to close. If NULL is passed, the current selection set is used.

BOOL selGroup=TRUE

If TRUE, the group of nodes will be selected after the operation is completed.
virtual bool AttachNodesToGroup ( INodeTab nodes,
INode pTargetNode 
)
pure virtual
Remarks
Attach nodes to a group.It behaves just like the attach menu command in 3ds Max's main menu. You can't attach nodes which are already a group member to other groups.
Parameters:
INodeTab& nodes

The table of nodes that you want to attach to a group.

INode& pTargetNode

The target node you want attach the table of nodes to. The node should be a group head node or a group member node. The node can't be a member of nodes.

Returns
true if successful; false otherwise.
virtual bool DetachNodesFromGroup ( INodeTab nodes)
pure virtual
Remarks
Detach nodes from the group to the scene root node. The nodes may belong to different groups. It behaves just like the detach menu command in 3ds Max's main menu.
Parameters:
INodeTab& nodes

The table of nodes that you want to detach from the group they belong to. The nodes must belong to open groups.

Returns
true if successful; false otherwise.
virtual void FlashNodes ( INodeTab nodes)
pure virtual
Remarks
This method is used to 'flash' a group of nodes. This is usually used as a confirmation of some operation (for example as an indication of the completion of a pick node operation.) The nodes are briefly erased and then redrawn in the viewport to flash them.
Parameters:
INodeTab *nodes

Pointer to the table of nodes to 'flash'.
Sample Code:
INodeTab flash;
INode *node;
for (int i=0; i<ip->GetSelNodeCount(); i++)
{
node = ip->GetSelNode(i);
flash.Append(1,&node,10);
}
ip->FlashNodes(&flash);
virtual void TranslateAndDispatchMAXMessage ( MSG &  msg)
pure virtual
Remarks
If a plug-in needs to do a PeekMessage() and wants to actually remove the message from the queue, it can use this method to have the message translated and dispatched.
Parameters:
MSG &msg

The message from PeekMessage().
virtual BOOL CheckMAXMessages ( )
pure virtual
Remarks
This will go into a PeekMessage() loop until there are no more messages left. This is a way a plug-in can relieve control to the system.

There may be certain circumstances where a plug-in wants to give control back to MAX. For example a plug-in may put up a progress bar with a cancel button during a lengthy operation. However the cancel button would not receive any messages if the user was clicking on it because no messages are being dispatched.

This method will relieve control and let any messages that are in the queue get processed. If there are no messages it will return right away. This provides a way for a plug-in to yield control.

Note: A developer must be prepared to handle a lot of different conditions if this is done. For example the user could click on the delete key and delete the object that was being processed. EndEditParams() could be called on the plug-in. So in EndEditParams() there must be some logic to signal the other lengthy process that EndEditParams() was called.
Returns
If this method returns FALSE then the user is attempting to quit MAX and the caller should return.
virtual BOOL setBkgImageAsset ( const MaxSDK::AssetManagement::AssetUser asset)
pure virtual
Remarks
This method is used to specify the background asset used.
Parameters:
AssetUser& asset

The background asset representing the background image.
Returns
TRUE if the asset was set; otherwise FALSE.
virtual const MaxSDK::AssetManagement::AssetUser& getBkgImageAsset ( void  )
pure virtual
Remarks
This method is used to retrieve the asset of the background image used.
virtual void setBkgImageAspect ( int  t)
pure virtual
Remarks
Sets the background image aspect ratio. This may match the viewport, the bitmap, or the rendering output aspect ratio.
Parameters:
int t

One of the following values:

VIEWPORT_BKG_ASPECT_VIEW

VIEWPORT_BKG_ASPECT_BITMAP

VIEWPORT_BKG_ASPECT_OUTPUT
virtual int getBkgImageAspect ( )
pure virtual
Remarks
Retrieves the background image aspect ratio. This will be the viewport, the bitmap, or the rendering output aspect ratio.
Returns
One of the following values:

VIEWPORT_BKG_ASPECT_VIEW

VIEWPORT_BKG_ASPECT_BITMAP

VIEWPORT_BKG_ASPECT_OUTPUT
virtual void setBkgImageAnimate ( BOOL  onOff)
pure virtual
Remarks
This method sets if the background image is animated in the viewports. If TRUE the image updates to reflect the current frame. If FALSE the image remains static regardless of time.
Parameters:
BOOL onOff

TRUE to enable viewport background image animation; FALSE to disable it.
virtual int getBkgImageAnimate ( void  )
pure virtual
Remarks
This method determines if the background image is set to update with the current frame in the viewports.
virtual void setBkgFrameRange ( int  start,
int  end,
int  step = 1 
)
pure virtual
Remarks
This method establishes the range of frames used for an animated background.
Parameters:
int start

The start frame number.

int end

The end frame number.

int step=1

The frame increment.
virtual int getBkgFrameRangeVal ( int  which)
pure virtual
Remarks
This method retrieves either the start or end frame number.
Parameters:
int which

One of the following values:

VIEWPORT_BKG_START

VIEWPORT_BKG_END
virtual void setBkgORType ( int  which,
int  type 
)
pure virtual
Remarks
Sets the background Out of Range Type. This may be the start or end ORT.
Parameters:
int which

One of the following values:

0 : Sets the Start Processing ORT.

1 : Sets the End Processing ORT.

int type

One of the following values:

VIEWPORT_BKG_BLANK

VIEWPORT_BKG_HOLD

VIEWPORT_BKG_LOOP
virtual int getBkgORType ( int  which)
pure virtual
Remarks
Retrieves the background Out of Range Type. This may be the start or end ORT.
Parameters:
int which

One of the following values:

0 : Gets the Start Processing ORT.

1 : Gets the End Processing ORT.
Returns
One of the following values:

VIEWPORT_BKG_BLANK

VIEWPORT_BKG_HOLD

VIEWPORT_BKG_LOOP
virtual void setBkgStartTime ( TimeValue  t)
pure virtual
Remarks
This sets the "Start at" parameter from the Views / Background Image... dialog.
Parameters:
TimeValue t

The time to start.
virtual TimeValue getBkgStartTime ( )
pure virtual
Remarks
This returns the "Start at" parameter from the Views / Background Image... dialog.
virtual void setBkgSyncFrame ( int  f)
pure virtual
Remarks
Sets the background "Sync Start to Frame" setting.
Parameters:
int f

The frame number.
virtual int getBkgSyncFrame ( )
pure virtual
Remarks
Returns the background "Sync Start to Frame" setting.
virtual int getBkgFrameNum ( TimeValue  t)
pure virtual
Remarks
This method will convert the TimeValue passed to a frame number based on the background image settings (ORTs, start/end times, sync frame, etc.).
Parameters:
TimeValue t

The time to convert.
Returns
The frame number corresponding to the time passed.
virtual BOOL GetRealTimePlayback ( )
pure virtual
Remarks
Returns the state of the real-time animation playback toggle.
virtual void SetRealTimePlayback ( BOOL  realTime)
pure virtual
Remarks
Sets the state of the real-time animation playback toggle.
Parameters:
BOOL realTime

TRUE if frames should be dropped if necessary for the animation to play back in real time. FALSE specifies that every frame should be played.
virtual BOOL GetPlayActiveOnly ( )
pure virtual
Remarks
This method returns the flag controlling which viewports are updated when the animation is played.
Returns
TRUE if all the viewports are updated during play; FALSE if only the active viewport is updated.
virtual void SetPlayActiveOnly ( BOOL  playActive)
pure virtual
Remarks
This method sets the flag controlling which viewports are updated when the animation is played. This may be all the viewports, or just the active one.
Parameters:
BOOL playActive

If TRUE, only the active viewport is updated as the animation is played; otherwise all the viewports are updated.
virtual void StartAnimPlayback ( int  selOnly = FALSE)
pure virtual
Remarks
Begins animation playback. The animation may be played for all objects, or just the selected ones.
Parameters:
int selOnly=FALSE

If TRUE only the selected objects are updated as the animation is played; otherwise all objects are.
virtual void EndAnimPlayback ( )
pure virtual
Remarks
Terminates the animation playback.
virtual BOOL IsAnimPlaying ( )
pure virtual
Remarks
Returns TRUE if the animation is currently playing; otherwise FALSE.
virtual int GetPlaybackSpeed ( )
pure virtual
virtual void SetPlaybackSpeed ( int  s)
pure virtual
virtual BOOL GetPlaybackLoop ( )
pure virtual
Remarks
This method returns the state of the "loop" checkbox in the time configuration panel. Note that the loop control is only active when "real time" is selected.
Returns
TRUE if loop is on; FALSE if off.
virtual void SetPlaybackLoop ( BOOL  loop)
pure virtual
Remarks
This method allows you to set the state of the "loop" checkbox in the time configuration panel. Note that the loop control is only active when "real time" is selected.
Parameters:
BOOL loop

TRUE to set the loop to on; FALSE to set it off.
virtual void IncrementValidityToken ( )
pure virtual
virtual unsigned int CurrentValidityToken ( )
pure virtual
virtual int OpenCurRenderer ( INode camNode,
ViewExp view,
RendType  t = RENDTYPE_NORMAL,
int  w = 0,
int  h = 0 
)
pure virtual
Remarks
This method is called to open the current renderer. It must be opened before frames can be rendered. Either camNode or view must be non-NULL, but not both. Remember to close the renderer when you are done (using CloseCurRenderer()).
Parameters:
INode *camNode

A pointer to the camera node to render, or NULL if a viewport should be rendered.

ViewExp *view

A pointer to the view to render, or NULL if the camera should be rendered.

RendType t = RENDTYPE_NORMAL

This provides an optional way to specify the view when opening the renderer. This specifies the type of render.

int w=0

This specifies the width of the rendering.

int h=0

This specifies the height of the rendering.
Returns
Nonzero indicates success; failure is zero.
See also
RendType
virtual int OpenCurRenderer ( ViewParams vpar,
RendType  t = RENDTYPE_NORMAL,
int  w = 0,
int  h = 0 
)
pure virtual
Remarks
This method is called to open the current renderer. It provides an optional way to specify the view when opening.
Parameters:
ViewParams *vpar

This class describes the properties of a view that is being rendered. See Class ViewParams.

RendType t = RENDTYPE_NORMAL

This provides an optional way to specify the view when opening the renderer. This specifies the type of render.

int w=0

This specifies the width of the rendering.

int h=0

This specifies the height of the rendering.
Returns
Nonzero indicates success; failure is 0.
See also
RendType
virtual void CloseCurRenderer ( )
pure virtual
Remarks
This method is called to close the renderer. The renderer must be closed when you are finished with it.
virtual int CurRendererRenderFrame ( TimeValue  t,
Bitmap bm,
RendProgressCallback prog = NULL,
float  frameDur = 1.0f,
ViewParams vp = NULL,
RECT *  regionRect = NULL 
)
pure virtual
Remarks
This method is called to render a frame to the given bitmap. The renderer uses the width, height, and aspect ratio of the specified bitmap to control the size of the rendered image.
Parameters:
TimeValue t

The time to render the image.

Bitmap *bm

The bitmap to render to. This bitmap defines the size and aspect ratio of the render. See Class Bitmap.

RendProgressCallback *prog=NULL

The RendProgressCallback is an optional callback. See Class RendProgressCallback.

float frameDur = 1.0f

This parameter should always be set to 1.0.

ViewParams *vp=NULL

This parameter allows you to specify a different view transformation on each render call. For instance, you can render a given scene at a given time from many different viewpoints, without calling Render::Open() for each one.

RECT *regionRect = NULL

This value, if passed, defines the region to be rendered. This only works for RENDTYPE_REGION and RENDTYPE_REGIONCROP.
Returns
The result of the render - Nonzero if success; otherwise 0.
virtual IScanRenderer* CreateDefaultScanlineRenderer ( )
pure virtual
Remarks
This method creates a default scanline renderer. This renderer must be deleted by calling IScanRenderer::DeleteThis().
Returns
A pointer to a new IScanRenderer object.
virtual Renderer* CreateDefaultRenderer ( RenderSettingID  renderSettingID)
pure virtual

Creates an instance of the default renderer for the given render setting.

Remarks
If the class ID of the default renderer (see SetDefaultRendererClassID()) does not exist, then an instance of the MAX scanline renderer is created. The instance returned must be deleted with Renderer::DeleteThis().
Parameters
renderSettingIDThe render type to create a default renderer of
Returns
The new renderer
virtual Class_ID GetDefaultRendererClassID ( RenderSettingID  renderSettingID)
pure virtual

Gets the class ID of the default renderer for the given render setting.

Remarks
An instance of the default renderer can be created by using CreateDefaultRenderer()
Parameters
renderSettingIDThe render setting to get the default renderer of.
Returns
The Class ID of the current default Renderer for renderSettingID
virtual void SetDefaultRendererClassID ( RenderSettingID  renderSettingID,
Class_ID  classID 
)
pure virtual

Gets the class ID of the default renderer for the given render setting.

Remarks
An instance of the default renderer can be created by using CreateDefaultRenderer()
Parameters
renderSettingIDThe render setting to get the default renderer of.
classIDThe Class ID of a Renderer to set as the new default for renderSettingID
virtual int OpenRenderer ( Renderer pRenderer,
INode camNode,
ViewExp view,
RendType  type = RENDTYPE_NORMAL,
int  w = 0,
int  h = 0 
)
pure virtual
Remarks
This method is called to open the specified renderer. It must be opened before frames can be rendered. Either camNode or view must be non-NULL, but not both. Remember to close the renderer when you are done (using CloseRenderer()).
Parameters:
Renderer *pRenderer

Points to the renderer to open.

INode *camNode

A pointer to the camera node to render, or NULL if a viewport should be rendered.

ViewExp *view

A pointer to the view to render, or NULL if the camera should be rendered.

RendType type = RENDTYPE_NORMAL

This provides an optional way to specify the view when opening the renderer. This specifies the type of render.

int w=0

This specifies the width of the rendering.

int h=0

This specifies the height of the rendering.
Returns
Nonzero indicates success; failure is zero.
See also
RendType
virtual int OpenRenderer ( Renderer pRenderer,
ViewParams vpar,
RendType  type = RENDTYPE_NORMAL,
int  w = 0,
int  h = 0 
)
pure virtual
Remarks
This method is called to open the specified renderer. It provides an optional way to specify the view when opening.
Parameters:
Renderer *pRenderer

Points to the renderer to do the rendering.

ViewParams *vpar

This class describes the properties of a view that is being rendered.

RendType type = RENDTYPE_NORMAL

This provides an optional way to specify the view when opening the renderer. This specifies the type of render.

int w=0

This specifies the width of the rendering.

int h=0

This specifies the height of the rendering.
Returns
Nonzero indicates success; failure is 0.
See also
RendType, Class ViewParams
virtual int RendererRenderFrame ( Renderer pRenderer,
TimeValue  t,
Bitmap bm,
RendProgressCallback prog = NULL,
float  frameDur = 1.0f,
ViewParams vp = NULL,
RECT *  regionRect = NULL 
)
pure virtual
Remarks
This method is called to render a frame with the specified renderer to the given bitmap. The renderer uses the width, height, and aspect ratio of the specified bitmap to control the size of the rendered image.
Parameters:
Renderer *pRenderer

Points to the renderer which will do the rendering.

TimeValue t

The time to render the image.

Bitmap *bm

The bitmap to render to. This bitmap defines the size and aspect ratio of the render. See Class Bitmap.

RendProgressCallback *prog=NULL

The RendProgressCallback is an optional callback. See Class RendProgressCallback.

float frameDur = 1.0f

This parameter should always be set to 1.0.

ViewParams *vp=NULL

This parameter allows you to specify a different view transformation on each render call. For instance, you can render a given scene at a given time from many different viewpoints, without calling Render::Open() for each one.

RECT *regionRect = NULL

This value, if passed, defines the region to be rendered. This only works for RENDTYPE_REGION and RENDTYPE_REGIONCROP.
Returns
The result of the render - Nonzero if success; otherwise 0.
virtual void CloseRenderer ( Renderer pRenderer)
pure virtual
Remarks
Closes the specified renderer.
Parameters:
Renderer *pRenderer

Points to the renderer to close.

To get more control over the renderer, the renderer can be called directly. The following methods give access to the current renderer and the user's current rendering settings. Note: These methods drive the renderer and not video post.
virtual Renderer* GetCurrentRenderer ( bool  createRendererIfItDoesntExist = true)
pure virtual
Remarks
Retrieves a pointer to the renderer currently set as the active renderer. This will be either the production renderer or the draft renderer depending upon which is active. A developer can determine which renderer this is by calling the ClassID() method of the renderer.
Parameters:
bool createRendererIfItDoesntExist

If true, creates an instance of the renderer if one does not currently exist. The core will hold a reference to this renderer instance.
Returns
A pointer to the renderer.
virtual Renderer* GetProductionRenderer ( bool  createRendererIfItDoesntExist = true)
pure virtual
Remarks
Retrieves a pointer to the renderer currently set as the production renderer. A developer can determine which renderer this is by calling the ClassID() method of the renderer.
Parameters:
bool createRendererIfItDoesntExist

If true, creates an instance of the renderer if one does not currently exist. The core will hold a reference to this renderer instance.
Returns
A pointer to the renderer.
virtual Renderer* GetDraftRenderer ( bool  createRendererIfItDoesntExist = true)
pure virtual
Remarks
Retrieves a pointer to the renderer currently set as the draft renderer. A developer can determine which renderer this is by calling the ClassID() method of the renderer.
Parameters:
bool createRendererIfItDoesntExist

If true, creates an instance of the renderer if one does not currently exist. The core will hold a reference to this renderer instance.
Returns
A pointer to the renderer.
virtual Renderer* GetRenderer ( RenderSettingID  renderSettingID,
bool  createRendererIfItDoesntExist = true 
)
pure virtual
Remarks
Returns a pointer to the specified renderer.
Parameters:
RenderSettingID renderSettingID

One of these values: See Render Setting IDs. bool createRendererIfItDoesntExist

If true, creates an instance of the renderer if one does not currently exist. The core will hold a reference to this renderer instance.
Returns
A pointer to the renderer.
virtual void AssignCurRenderer ( Renderer rend)
pure virtual
Remarks
Assigns the renderer passed for use as either the draft renderer or the production renderer depending upon which is active.
Parameters:
Renderer *rend

The renderer to assign.
virtual void AssignProductionRenderer ( Renderer rend)
pure virtual
Remarks
Assigns the renderer passed as the production renderer.
Parameters:
Renderer *rend

The renderer to assign.
virtual void AssignDraftRenderer ( Renderer rend)
pure virtual
Remarks
Assigns the renderer passed as the draft renderer.
Parameters:
Renderer *rend

The renderer to assign.
virtual void AssignRenderer ( RenderSettingID  renderSettingID,
Renderer rend 
)
pure virtual
Remarks
Assigns the renderer passed as one of the standard MAX rendering options (Production, Draft, etc).
Parameters:
RenderSettingID renderSettingID

One of these values: See Render Setting IDs.

Renderer *rend

Points to the renderer to assign.
virtual void SetUseDraftRenderer ( BOOL  b)
pure virtual
Remarks
Specifies which renderer is active – draft or production. Pass TRUE to use the draft renderer and FALSE to get the production renderer.
virtual BOOL GetUseDraftRenderer ( )
pure virtual
Remarks
Determines which renderer is active – draft or production.
Returns
TRUE for the draft renderer and FALSE for the production renderer.
virtual void ChangeRenderSetting ( RenderSettingID  renderSettingID)
pure virtual
Remarks
Sets the specified renderer as active.
Parameters:
RenderSettingID renderSettingID

One of these values: See Render Setting IDs.
virtual RenderSettingID GetCurrentRenderSetting ( )
pure virtual
Remarks
Returns a value which indicates which renderer is current. See Render Setting IDs.
virtual Renderer* GetMEditRenderer ( bool  createRendererIfItDoesntExist = true)
pure virtual

Gets the renderer assigned to the MEdit slot.

.

This ignores the state of the MEdit renderer lock, and will not necessarily get the renderer that is actually used for MEdit.

See also
GetActualMEditRenderer()
Parameters:
bool createRendererIfItDoesntExist

If true, creates an instance of the renderer if one does not currently exist. The core will hold a reference to this renderer instance.
Returns
the Renderer used to create the display for the Material Editor slots
virtual void AssignMEditRenderer ( Renderer renderer)
pure virtual

Sets the renderer assigned to the MEdit slot.

.

This ignores the state of the MEdit renderer lock, and will not necessarily set the renderer that is actually used for the Material Editor.

Parameters
rendererA renderer that will be used to generate the display for the Material Editor slots
virtual Renderer* GetActualMEditRenderer ( bool  createRendererIfItDoesntExist = true)
pure virtual

Returns the renderer to be used for MEdit.

.

This takes the lock into account

See also
GetMEditRenderer()
Parameters:
bool createRendererIfItDoesntExist

If true, creates an instance of the renderer if one does not currently exist. The core will hold a reference to this renderer instance.
Returns
this will return the Current renderer if the MEdit lock is ON. Otherwise, the renderer assigned with AssignMEditRenderer will be returned
virtual bool GetMEditRendererLocked ( )
pure virtual

Gets the status of the MEdit renderer lock.

Returns
true if the Current renderer should be used to render in MEdit, else false to use the assigned renderer
virtual void SetMEditRendererLocked ( bool  locked)
pure virtual

Sets the status of the MEdit renderer lock.

Parameters
lockedif true, the Current renderer should be used to render in MEdit. If false, the assigned renderer should be used.
virtual bool GetMEditRendererLocked_DefaultValue ( )
pure virtual
virtual void SetMEditRendererLocked_DefaultValue ( bool  locked)
pure virtual
virtual IRenderElementMgr* GetCurRenderElementMgr ( )
pure virtual
Remarks
This method returns a pointer to the current render elements manager interface.
virtual IRenderElementMgr* GetRenderElementMgr ( RenderSettingID  renderSettingID)
pure virtual
Remarks
This method returns a pointer to the production or draft render element manager – passing in renderSettingID = RS_IReshade will return NULL.
Parameters:
RenderSettingID renderSettingID

One of these values: See Render Setting IDs.
virtual void SetupRendParams ( RendParams rp,
ViewExp vpt,
RendType  t = RENDTYPE_NORMAL 
)
pure virtual
Remarks
This method is called to fill in a RendParams structure that can be passed to the renderer with the user's current rendering settings. This is whatever was last used, or the default settings.

In MAX 1.x note the following (this needs not be done in MAX 2.0 or later): In order to open a renderer using this method to setup the RendParams class the following code should be used:

RendParams rp;

SetupRendParams(rp, ...);

rp.atmos = NULL;

rp.envMap = NULL;

As shown above, this method does not automatically set the values for envMap and atmos. You must do this manually if you are using the RendParams object to initialize the renderer. Then you can call Renderer::Open(..., rp, ...). In MAX 2.0 and later, atmos and envMap are properly initialized without the above code.
Parameters:
RendParams &rp

This is the class instance whose data is filled in. See Class RendParams.

ViewExp *vpt

This pointer only needs to be passed in if the RendType is RENDTYPE_REGION or RENDTYPE_BLOWUP. In these cases it will set up the RendParams regxmin, regxmax, regymin, regymax from values stored in the viewport.

RendType t = RendType::RENDTYPE_NORMAL

See also
Class ViewExp, RendType
virtual void GetViewParamsFromNode ( INode vnode,
ViewParams vp,
TimeValue  t 
)
pure virtual
Remarks
This method fills in the specified ViewParams structure based on type of node passed (camera or light). It can be used when instantiating a renderer and calling Open(), Render(), and Close() directly on it.
Parameters:
INode* vnode

Points to the node to initialize from.

ViewParams& vp

The ViewParams structure to initialize.

TimeValue t

The time at which to initialize the structure.
virtual BOOL CheckForRenderAbort ( )
pure virtual

This method may be called during a rendering to check if user has cancelled the render.

Returns
TRUE if user has cancelled; otherwise FALSE. If not rendering the method returns FALSE.
virtual void AbortRender ( )
pure virtual

Calling this method during a render will set the flag that indicates that the render is to be aborted.

virtual int GetRendTimeType ( )
pure virtual
Remarks
Retrieves the type of time range to be rendered.
Returns
One of the following values:

REND_TIMESINGLE

A single frame.

REND_TIMESEGMENT

The active time segment.

REND_TIMERANGE

The user specified range.

REND_TIMEPICKUP

The user specified frame pickup string (for example "1,3,5-12").
virtual void SetRendTimeType ( int  type)
pure virtual
Remarks
Sets the type of time range rendered.
Parameters:
int type

One of the following values:

REND_TIMESINGLE

A single frame.

REND_TIMESEGMENT

The active time segment.

REND_TIMERANGE

The user specified range.

REND_TIMEPICKUP

The user specified frame pickup string (for example "1,3,5-12").
virtual TimeValue GetRendStart ( )
pure virtual
Remarks
Retrieves the renderer's start time setting.
virtual void SetRendStart ( TimeValue  start)
pure virtual
Remarks
Sets the renderer's start time setting.
Parameters:
TimeValue start

The time to begin rendering.
virtual TimeValue GetRendEnd ( )
pure virtual
Remarks
Retrieves the renderer's end time setting.
virtual void SetRendEnd ( TimeValue  end)
pure virtual
Remarks
Sets the renderer's end time setting.
Parameters:
TimeValue end

The time to end rendering.
virtual int GetRendNThFrame ( )
pure virtual
Remarks
Returns the renderer's 'n-th' frame setting.
virtual void SetRendNThFrame ( int  n)
pure virtual
Remarks
Sets the renderer's 'n-th' frame setting.
Parameters:
int n

The n-th frame setting.
virtual BOOL GetRendShowVFB ( )
pure virtual
Remarks
Retrieves the state of the renderer's show virtual frame buffer flag. Returns TRUE if on; FALSE if off.
virtual void SetRendShowVFB ( BOOL  onOff)
pure virtual
Remarks
Sets the state of the renderer's show virtual frame buffer flag.
Parameters:
BOOL onOff

TRUE is on; FALSE is off.
virtual BOOL GetRendSaveFile ( )
pure virtual
Remarks
Retrieves the state of the renderer's save file flag.
Returns
Returns TRUE if on; FALSE if off.
virtual void SetRendSaveFile ( BOOL  onOff)
pure virtual
Remarks
Sets the state of the renderer's save file flag.
Parameters:
BOOL onOff

TRUE is on; FALSE is off.
virtual BOOL GetRendUseDevice ( )
pure virtual
Remarks
Retrieves the state of the renderer's use device flag.
Returns
Returns TRUE if on; FALSE if off.
virtual void SetRendUseDevice ( BOOL  onOff)
pure virtual
Remarks
Sets the state of the renderer's use device flag.
Parameters:
BOOL onOff

TRUE is on; FALSE is off.
virtual BOOL GetRendUseNet ( )
pure virtual
Remarks
Retrieves the state of the renderer's use net flag.
Returns
Returns TRUE if on; FALSE if off.
virtual void SetRendUseNet ( BOOL  onOff)
pure virtual
Remarks
Sets the state of the renderer's use net flag.
Parameters:
BOOL onOff

TRUE is on; FALSE is off.
virtual BitmapInfo& GetRendFileBI ( )
pure virtual
Remarks
Retrieves the rendering file BitmapInfo. This class describes the output file. See Class BitmapInfo.
virtual BitmapInfo& GetRendDeviceBI ( )
pure virtual
Remarks
Retrieves the rendering device BitmapInfo. This class describes the output device. See Class BitmapInfo.
virtual int GetRendWidth ( )
pure virtual
Remarks
Retrieves the rendering output width in pixels.
virtual void SetRendWidth ( int  w)
pure virtual
Remarks
Sets the rendering output width.
Parameters:
int w

The width in pixels.
virtual int GetRendHeight ( )
pure virtual
Remarks
Retrieves the rendering output height in pixels.
virtual void SetRendHeight ( int  h)
pure virtual
Remarks
Sets the rendering output height.
Parameters:
int h

The height in pixels.
virtual float GetRendApect ( )
pure virtual
Remarks
Retrieves the renderer's pixel aspect ratio setting. Note for MAX 1.2: To get the 'Image Aspect Ratio' setting use:

float aspectRatio =

((float) ip->GetRendWidth())/((float) ip->GetRendHeight());

In MAX 2.0 or later GetRendImageAspect() may be used:
virtual void SetRendAspect ( float  a)
pure virtual
Remarks
Sets the renderer's pixel aspect ratio setting.
Parameters:
float a

The pixel aspect ratio to set.
virtual float GetRendImageAspect ( )
pure virtual
Remarks
Returns
Returns the image aspect ratio.
virtual float GetRendApertureWidth ( )
pure virtual
Remarks
Returns
Returns the aperture width in millimeters (mm).
virtual void SetRendApertureWidth ( float  aw)
pure virtual
Remarks
Sets the aperture width.
Parameters:
float aw

The width to set in millimeters (mm).
virtual BOOL GetRendFieldRender ( )
pure virtual
Remarks
Retrieves the renderer's field render flag.
Returns
Returns TRUE if on; FALSE if off.
virtual void SetRendFieldRender ( BOOL  onOff)
pure virtual
Remarks
Sets the renderer's field render flag.
Parameters:
BOOL onOff

TRUE for on; FALSE for off.
virtual BOOL GetRendColorCheck ( )
pure virtual
Remarks
Retrieves the renderer's color check flag.
Returns
Returns TRUE if on; FALSE if off.
virtual void SetRendColorCheck ( BOOL  onOff)
pure virtual
Remarks
Sets the renderer's color check flag.
Parameters:
BOOL onOff

TRUE for on; FALSE for off.
virtual BOOL GetRendSuperBlack ( )
pure virtual
Remarks
Retrieves the renderer's super black flag.
Returns
Returns TRUE if on; FALSE if off.
virtual void SetRendSuperBlack ( BOOL  onOff)
pure virtual
Remarks
Sets the renderer's super black flag.
Parameters:
BOOL onOff

TRUE for on; FALSE for off.
virtual BOOL GetRendHidden ( )
pure virtual
Remarks
Retrieves the renderer's render hidden objects flag.
Returns
Returns TRUE if on; FALSE if off.
virtual void SetRendHidden ( BOOL  onOff)
pure virtual
Remarks
Sets the renderer's render hidden objects flag.
Parameters:
BOOL onOff

TRUE for on; FALSE for off.
virtual BOOL GetRendForce2Side ( )
pure virtual
Remarks
Retrieves the renderer's force two-sided flag.
Returns
Returns TRUE if on; FALSE if off.
virtual void SetRendForce2Side ( BOOL  onOff)
pure virtual
Remarks
Sets the renderer's force two-sided flag. TRUE for on; FALSE for off.
virtual BOOL GetRendAtmosphere ( )
pure virtual
Remarks
Retrieves the renderer's uses atmospheric effects flag.
Returns
Returns TRUE if on; FALSE if off.
virtual void SetRendAtmosphere ( BOOL  onOff)
pure virtual
Remarks
Sets if the renderer uses atmospheric effects.
Parameters:
BOOL onOff

TRUE for on; FALSE for off.
virtual BOOL GetRendEffects ( )
pure virtual
Remarks
Returns
Returns TRUE if Rendering Effects will be used; otherwise FALSE.
virtual void SetRendEffects ( BOOL  onOff)
pure virtual
Remarks
Sets if Rendering Effects will be used.
Parameters:
BOOL onOff

TRUE to use (on); FALSE to not use (off).
virtual BOOL GetRendDisplacement ( )
pure virtual
Remarks
Returns
Returns TRUE if rendering displacements is enabled; otherwise FALSE.

Note: Developers should use the flags parameter of the View class which is passed into GetRenderMesh() to determine if Displacement Mapping is being used because the values may not the same (for instance when rendering in the Materials Editor). See Class View.
virtual void SetRendDisplacement ( BOOL  onOff)
pure virtual
Remarks
Sets if rendering displacements are enabled.
Parameters:
BOOL onOff

TRUE for on; FALSE for off.
virtual MSTR& GetRendPickFramesString ( )
pure virtual
Remarks
Retrieves the string holding the frames the user wants to render. For example "1,3,5-12".
virtual BOOL GetRendDitherTrue ( )
pure virtual
Remarks
Retrieves the renderer's dither true color flag.
Returns
Returns TRUE if on; FALSE if off.
virtual void SetRendDitherTrue ( BOOL  onOff)
pure virtual
Remarks
Sets the renderer's dither true color flag.
Parameters:
BOOL onOff

TRUE for on; FALSE for off.
virtual BOOL GetRendDither256 ( )
pure virtual
Remarks
Retrieves the renderer's dither 256 color flag.
Returns
Returns TRUE if on; FALSE if off.
virtual void SetRendDither256 ( BOOL  onOff)
pure virtual
Remarks
Sets the renderer's dither 256 color flag.
Parameters:
BOOL onOff

TRUE for on; FALSE for off.
virtual BOOL GetRendMultiThread ( )
pure virtual
Remarks
Retrieves the renderer's multi-threaded flag.
Returns
Returns TRUE if on; FALSE if off.
virtual void SetRendMultiThread ( BOOL  onOff)
pure virtual
Remarks
Sets the renderer's multi-threaded flag.
Parameters:
BOOL onOff

TRUE for on; FALSE for off.
virtual BOOL GetRendNThSerial ( )
pure virtual
Remarks
This retrieves the output file sequencing nth serial numbering setting.
Returns
Returns TRUE if on; FALSE if off.
virtual void SetRendNThSerial ( BOOL  onOff)
pure virtual
Remarks
This sets the output file sequencing nth serial numbering setting.
Parameters:
BOOL onOff

TRUE for on; FALSE for off.
virtual int GetRendVidCorrectMethod ( )
pure virtual
Remarks
Retrieves the video color check method.
Returns
One of the following values:

0 is FLAG

1 is SCALE_LUMA

2 is SCALE_SAT
virtual void SetRendVidCorrectMethod ( int  m)
pure virtual
Remarks
Sets the video color check method.
Parameters:
int m

One of the following values:

0 is FLAG

1 is SCALE_LUMA

2 is SCALE_SAT
virtual int GetRendFieldOrder ( )
pure virtual
Remarks
Retrieves the rendering field order.
Returns
One of the following values:

0 is Even

1 is Odd
virtual void SetRendFieldOrder ( int  fo)
pure virtual
Remarks
Sets the rendering field order to even or odd.
Parameters:
int fo

One of the following values:

0 sets Even

1 sets Odd
virtual int GetRendNTSC_PAL ( )
pure virtual
Remarks
Retrieves the video color check NTSC or PAL setting.
Returns
One of the following values:

0 is NTSC

1 is PAL
virtual void SetRendNTSC_PAL ( int  np)
pure virtual
Remarks
Sets the video color check NTSC or PAL setting.
Parameters:
int np

One of the following values:

0 sets NTSC

1 sets PAL
virtual int GetRendSuperBlackThresh ( )
pure virtual
Remarks
Returns the super black threshold setting.
virtual void SetRendSuperBlackThresh ( int  sb)
pure virtual
Remarks
Sets the super black threshold setting.
Parameters:
int sb

The super black threshold.
virtual int GetRendFileNumberBase ( )
pure virtual
Remarks
Returns the File Number Base in the 'Common Parameters' rollup of the Render Scene dialog.
virtual void SetRendFileNumberBase ( int  n)
pure virtual
Remarks
Sets the File Number Base in the 'Common Parameters' rollup of the Render Scene dialog.
Parameters:
int n

The number to set.
virtual BOOL GetSkipRenderedFrames ( )
pure virtual
Remarks
Returns TRUE if the skip existing rendered frames state is on; otherwise FALSE.
virtual void SetSkipRenderedFrames ( BOOL  onOff)
pure virtual
Remarks
Sets the skip existing rendered frames state to on or off.
Parameters:
BOOL onOff

TRUE for on; FALSE for off.
virtual BOOL GetRendSimplifyAreaLights ( )
pure virtual

returns the state of the toggle in the render dialog, "Area Lights/Shadows as Points".

Returns
true if area lights should be rendered as point lights.
virtual void SetRendSimplifyAreaLights ( BOOL  onOff)
pure virtual

Sets the toggle in the render dialog, "Area Lights/Shadows as Points".

When set to true, the simplyAreaLights variable in class RenderGlobalContext will be set when rendering

Parameters
[in]onOff- If true, set the toggle to cause area lights to be rendered as point lights.
virtual DWORD GetHideByCategoryFlags ( )
pure virtual
Remarks
Returns the state of the hide by category flags.
Returns
One or more of the following values:

HIDE_OBJECTS

HIDE_SHAPES

HIDE_LIGHTS

HIDE_CAMERAS

HIDE_HELPERS

HIDE_WSMS

HIDE_SYSTEMS

HIDE_ALL

HIDE_NONE
virtual void SetHideByCategoryFlags ( DWORD  f)
pure virtual
Remarks
Sets the state of the hide by category flags.
Parameters:
DWORD f

One or more of the following values:

HIDE_OBJECTS

HIDE_SHAPES

HIDE_LIGHTS

HIDE_CAMERAS

HIDE_HELPERS

HIDE_WSMS

HIDE_SYSTEMS

HIDE_ALL

HIDE_NONE
virtual int GetViewportLayout ( )
pure virtual
Remarks
This method may be called to retrieve a value that describes the configuration of the MAX viewports.
Returns
The viewport layout configuration. The list below uses the following syntax: # is the total number of viewports.
  • V = vertical split
  • H = horizontal split
  • L/R = left/right placement
  • T/B = top/bottom placement

One of the following values. Note: The bottom nibble (4-bits) is the total number of views. You may use the constant VP_NUM_VIEWS_MASK to mask off the 4 bits that contains the total number of viewports.

  • VP_LAYOUT_1
  • VP_LAYOUT_2V
  • VP_LAYOUT_2H
  • VP_LAYOUT_2HT
  • VP_LAYOUT_2HB
  • VP_LAYOUT_3VL
  • VP_LAYOUT_3VR
  • VP_LAYOUT_3HT
  • VP_LAYOUT_3HB
  • VP_LAYOUT_4
  • VP_LAYOUT_4VL
  • VP_LAYOUT_4VR
  • VP_LAYOUT_4HT
  • VP_LAYOUT_4HB
  • VP_LAYOUT_1C
virtual void SetViewportLayout ( int  layout)
pure virtual
Remarks
Sets the viewport configuration layout.
Parameters:
int layout

The layout to use. See the return values of GetViewportLayout() above.
virtual BOOL IsViewportMaxed ( )
pure virtual
Remarks
Returns TRUE if the current viewport is full screen; otherwise FALSE.
virtual void SetViewportMax ( BOOL  max)
pure virtual
Remarks
This method will maximize (set to a single full screen view) or minimize the current viewport.
Parameters:
BOOL max

If TRUE the viewport is maximized; otherwise it is minimized.
virtual void ViewportZoomExtents ( BOOL  doAll,
BOOL  skipPersp = FALSE 
)
pure virtual
Remarks
This method performs a zoom extents on the viewport(s). This fills the viewport(s) with the objects of the scene.
Parameters:
BOOL doAll

If TRUE all the viewports are zoomed to their extents; otherwise just the current viewport is.

BOOL skipPersp=FALSE

If TRUE perspective viewports are not altered; otherwise these views are zoomed to their extents as well.
virtual void ZoomToBounds ( BOOL  doAll,
Box3  box 
)
pure virtual
Remarks
This method allows you to zoom the current or selected viewport to a bounding region.
Parameters:
BOOL doAll

This flag determines whether only the selected or all viewports get zoomed. TRUE for all, FALSE for selected only.

Box3 box

The bounding region to zoom to.
virtual void GetSelectionWorldBox ( TimeValue  t,
Box3 box 
)
pure virtual
Remarks
This method retrieves the world space bounding box of the current selection set.
Parameters:
TimeValue t

The time to retrieve the bounding box.

Box3 &box

The bounding box is returned here.
virtual INode* GetINodeByName ( const MCHAR name)
pure virtual
Remarks
This method may be called to retrieve the INode pointer for the node with the given name.
Parameters:
const MCHAR *name

The name of the node to find.
virtual INode* GetINodeByHandle ( ULONG  handle)
pure virtual
Remarks
Returns a pointer to the node whose handle is specified. In 3ds Max version 4.0 and later each node is assigned a unique handle.
Parameters:
ULONG handle

The handle of the node to find.
virtual INode* GetINodeFromRenderID ( UWORD  id)
pure virtual
Remarks
This method returns the node pointer from the id in the BMM_CHAN_NODE_RENDER_ID G-Buffer channel. The renderer will set the RenderID of all rendered nodes, and will set all non-rendered nodes to 0xffff. See Image (G-Buffer) Channels.
Parameters:
UWORD id

The id from the G Buffer channel.
virtual void ExecuteMAXCommand ( int  id)
pure virtual
Remarks
This method may be used to execute a MAX command. These are the same commands that may be assigned using the MAX Customize/Preferences.../Keyboard Tab key assignment system.

For MAX version 1.1 or later, this method may also be used to set various aspects of the preview display. The id to pass for these options is shown below:

ExecuteMAXCommand(MAXCOM_API_PVW_GRID_OFF)

This turns off the preview grid display.

ExecuteMAXCommand(MAXCOM_API_PVW_GRID_ON)

This turns on the preview grid display.

ExecuteMAXCommand(MAXCOM_API_PVW_SMOOTH_MODE)

This sets the preview rendering mode to "smooth".

ExecuteMAXCommand(MAXCOM_API_PVW_FACET_MODE)

This sets the preview rendering mode to "facet".

ExecuteMAXCommand(MAXCOM_API_PVW_WIRE_MODE)

This sets the preview rendering mode to "wireframe".

Note: In MAX 2.0 and later there is an alternate (better) way to do this. See the method:

virtual void CreatePreview(PreviewParams *pvp=NULL)=0;
Parameters:
int id

The command to execute. See 3ds Max Commands.
virtual NameMaker* NewNameMaker ( BOOL  initFromScene = TRUE)
pure virtual
Remarks
Returns a class used for efficiently creating unique names. To use it, do the following:

for(...) {
nm->MakeUniqueName(nodename);
}
delete nm;
Parameters
initFromSceneif FALSE then the name maker is not seeded with the names of the objects in the current scene; otherwise it is

An instance of class NameMaker initialized at a given time with root node names is best used right after initialization to create several nodes. If the same NameMaker instance is to be used several times, it's best to re-initialize it with the current root node names before it's used again.

Interface::MakeNameUnique is the recommended way for creating unique node names, while class NameMaker is best used to create unique names based on a set of root names used to initialize a NameMaker instance.

virtual void SetViewportBGColor ( const Point3 color)
pure virtual
Remarks
Set the solid viewport background color. In 3ds Max2013, viewport background color can be solid or gradient. This method doesn't affect the background color in gradient mode.
Parameters:
const Point3 &color

The color to set.
virtual Point3 GetViewportBGColor ( )
pure virtual
Remarks
Return the solid background color of the active viewport. In 3ds Max2013, viewport background color can be solid or gradient. This method returns the solid color.
virtual Texmap* GetEnvironmentMap ( )
pure virtual
Remarks
Returns the current environment map.
virtual void SetEnvironmentMap ( Texmap map)
pure virtual
Remarks
Sets the current environment map to the specified map. See /MAXSDK/SAMPLES/UTILITIES/UTILTEST.CPP for sample code.
Parameters:
Texmap *map

The map to set.
virtual BOOL GetUseEnvironmentMap ( )
pure virtual
Remarks
Returns TRUE if the 'Use Map' checkbox is checked in the Environment / Background dialog; otherwise FALSE.
virtual void SetUseEnvironmentMap ( BOOL  onOff)
pure virtual
Remarks
Sets the state of the 'Use Map' checkbox in the Environment / Background dialog.
Parameters:
BOOL onOff

TRUE for checked; FALSE for unchecked.
virtual Point3 GetAmbient ( TimeValue  t,
Interval valid 
)
pure virtual
Remarks
Retrieves the color of the ambient light at the time passed and updates the validity interval passed to reflect the validity of the ambient light.
Parameters
t- The time to retrieve the ambient light color.
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.
Returns
The color as a Point3.
virtual void SetAmbient ( TimeValue  t,
Point3  col 
)
pure virtual
Remarks
Sets the color of the ambient light in the scene to the color passed at the specified time.
Parameters:
TimeValue t

The time to set the color.

Point3 col

The new color for the ambient light.
virtual Control* GetAmbientController ( )
pure virtual
Remarks
Retrieves a pointer to the controller use to animate the ambient light.
virtual void SetAmbientController ( Control c)
pure virtual
Remarks
Sets the controller used for handling the animation of the ambient light.
Parameters:
Control *c

The controller to set.
virtual Point3 GetLightTint ( TimeValue  t,
Interval valid 
)
pure virtual
Remarks
Returns the rendering environment global lighting tint color at the specified time and updates the validity interval passed to reflect the validity of the tint color controller.
Parameters
t- The time at which to return the color.
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.
virtual void SetLightTint ( TimeValue  t,
Point3  col 
)
pure virtual
Remarks
Sets the rendering environment global lighting tint color at the specified time to the color passed.
Parameters:
TimeValue t

The time at which to set the color.

Point3 col

The color to set.
virtual Control* GetLightTintController ( )
pure virtual
Remarks
Returns a pointer to the controller use to animate the tint color.
virtual void SetLightTintController ( Control c)
pure virtual
Remarks
Sets the controller use to animate the tint color.
Parameters:
Control *c

Points to the controller to set.
virtual float GetLightLevel ( TimeValue  t,
Interval valid 
)
pure virtual
Remarks
Returns the rendering environment global lighting level at the specified time and updates the validity interval passed to reflect the validity of the lighting level controller.
Parameters
t- The time at which to return the level.
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.
virtual void SetLightLevel ( TimeValue  t,
float  lev 
)
pure virtual
Remarks
Sets the rendering environment global lighting level at the specified time.
Parameters:
TimeValue t

The time at which to set the lighting level.

float lev

The level to set.
virtual Control* GetLightLevelController ( )
pure virtual
Remarks
Returns a pointer to the controller use to animate the lighting level.
virtual void SetLightLevelController ( Control c)
pure virtual
Remarks
Sets the controller use to animate the lighting level.
Parameters:
Control *c

Points to the controller to set.
virtual int NumAtmospheric ( )
pure virtual
Remarks
Returns the number of atmospheric effects currently assigned.
virtual Atmospheric* GetAtmospheric ( int  i)
pure virtual
Remarks
Returns a pointer to the 'i-th' atmospheric effect.
Parameters:
int i

Specifies which atmospheric effect to retrieve.
virtual void SetAtmospheric ( int  i,
Atmospheric a 
)
pure virtual
Remarks
Sets the 'i-th' atmospheric effect.
Parameters:
int i

Specifies which effect to set.

Atmospheric *a

A pointer to the atmospheric effect.
virtual void AddAtmosphere ( Atmospheric atmos)
pure virtual
Remarks
Adds the specified atmospheric effect to the list of effects.
Parameters:
Atmospheric *a

A pointer to the atmospheric effect to add.
virtual void DeleteAtmosphere ( int  i)
pure virtual
Remarks
Deletes the specified atmospheric effect.
Parameters:
int i

The index of the atmospheric effect to delete.
virtual void EditAtmosphere ( Atmospheric a,
INode gizmo = NULL 
)
pure virtual
Remarks
This method selects the specified atmosphere's gizmo and displays the parameters for it (if any).
Parameters:
Atmospheric *a

Points to the Atmospheric plug-in. See Class Atmospheric.

INode *gizmo=NULL

Points to the gizmo node associated with the plug-in.
virtual Point3 GetBackGround ( TimeValue  t,
Interval valid 
)
pure virtual
Remarks
Retrieves the background color at the specified time and updates the validity interval passed to reflect the validity of the background color.
Parameters
t- The time to retrieve the color.
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.
virtual void SetBackGround ( TimeValue  t,
Point3  col 
)
pure virtual
Remarks
Sets the background color to the specified color at the specified time.
Parameters:
TimeValue t

The time to set the color.

Point3 col

The color to set.
virtual Control* GetBackGroundController ( )
pure virtual
Remarks
Returns a pointer to the controller animating the background color.
virtual void SetBackGroundController ( Control c)
pure virtual
Remarks
Sets the controller used for animating the background color.
Parameters:
Control *c

Specifies which controller to set.
virtual int NumEffects ( )
pure virtual
Remarks
Returns the number of Render Effects currently assigned.
virtual Effect* GetEffect ( int  i)
pure virtual
Remarks
Returns a pointer to the 'i-th' Render Effect. See Class Effect.
Parameters:
int i

The zero based index of the effect to return.
virtual void SetEffect ( int  i,
Effect e 
)
pure virtual
Remarks
Sets the specified Render Effect to the one passed.
Parameters:
int i

The zero based index of the effect to set.

Effect *e

Points to the Renderer Effect to set.
virtual void AddEffect ( Effect eff)
pure virtual
Remarks
Adds the specified Renderer Effect to the existing list of effects.
Parameters:
Effect *eff

Points to the render effect to add. See Class Effect.
virtual void DeleteEffect ( int  i)
pure virtual
Remarks
Deletes the specified Renderer Effect.
Parameters:
int i

The zero based index of the effect to delete.
virtual void EditEffect ( Effect e,
INode gizmo = NULL 
)
pure virtual
Remarks
This method selects the specified gizmo and displays the parameters for it (if any).
Parameters:
Effect *e

Points to the Effect plug-in. See Class Effect.

INode *gizmo=NULL

Points to the gizmo node associated with the effect.
virtual SoundObj* GetSoundObject ( )
pure virtual
Remarks
Returns the current sound object. See the sample code in /MAXSDK/SAMPLES/UTILITIES/UTILTEST.CPP.

See also
Class SoundObj, Class IWaveSound.
virtual void SetSoundObject ( SoundObj snd)
pure virtual
Remarks
Sets the current sound object to the one specified. See Class SoundObj.
Parameters:
SoundObj *snd

The sound object to set as current.
virtual IOsnapManager* GetOsnapManager ( )
pure virtual
Remarks
Returns an interface pointer to the object snap manager. See Class IOsnapManager. Also see the Advanced Topics section on Snapping.
virtual MouseManager* GetMouseManager ( )
pure virtual
Remarks
This is used internally by the Osnap Manager. Plug-Ins don't need to use this method.
virtual void InvalidateOsnapdraw ( )
pure virtual
Remarks
This is used internally to invalidate the osnap drawing mechanism. Plug-Ins don't need to use this method.
virtual MtlBaseLib& GetMaterialLibrary ( )
pure virtual
Remarks
This method provides access to the currently loaded material library.
Returns
See Class MtlBaseLib.
CoreExport void DeActivateTexture ( MtlBase tx,
Mtl mtl,
int  subNum = -1 
)
Remarks
The method deactivates the texture map in the viewports.

Note: In the MAX 2.0 SDK a bug prevents this function from being used – it results in a link error. This is fixed in the 2.5 SDK.
Parameters:
MtlBase *tx

Points to the texmap to deactivate.

Mtl *mtl

The top level material containing the texture map.

int subNum=-1

If mtl above it a Multi-material, this specifies which sub-branch of the material contains tx.
CoreExport void ActivateTexture ( MtlBase tx,
Mtl mtl,
int  subNum = -1 
)
Remarks
The method activates the texture map in the viewports.

Note: In the MAX 2.0 SDK a bug prevents this function from being used – it results in a link error. This is fixed in the 2.5 SDK.
Parameters:
MtlBase *tx

Points to the texmap to activate.

Mtl *mtl

The top level material containing the texture map.

int subNum=-1

If mtl above is a Multi-material, this specifies which sub-branch of the material contains tx.
virtual void AssignNewName ( Mtl m)
pure virtual
Remarks
Modifies the name of the material to make it unique. The name is of the form "<b>Material #1</b>" where the number is incremented as required to make ensure it's unique.
Parameters:
Mtl *m

The material whose name is modified.
virtual void AssignNewName ( Texmap m)
pure virtual
Remarks
Modifies the name of the texture to make it unique. . The name is of the form "<b>Map #1</b>" where the number is incremented as required to make ensure it's unique.
Parameters:
Texmap *m

The texmap whose name is modified.
virtual bool IsNetworkRenderServer ( ) const
pure virtual

Returns true if the application operates in network render server mode.

In this mode the application renders a specified scene and exists without showing its main user interface. This means that when this mode is active some plug-ins can chose not to display their user interface or not load at all. When in this mode, the application is also in quiet mode, see Interface::GetQuietMode().

virtual LogSys* Log ( )
pure virtual
Remarks
Returns a pointer which may be used for calling methods to write information to the system log. See Class LogSys for details.
virtual DllDir& GetDllDir ( )
pure virtual
Remarks
Returns a reference to the central DLL directory. See Class DllDir.
virtual DllDir* GetDllDirectory ( )
pure virtual
Remarks
Returns a pointer to the central DLL directory. See Class DllDir.
virtual INT_PTR Execute ( int  cmd,
ULONG_PTR  arg1 = 0,
ULONG_PTR  arg2 = 0,
ULONG_PTR  arg3 = 0,
ULONG_PTR  arg4 = 0,
ULONG_PTR  arg5 = 0,
ULONG_PTR  arg6 = 0 
)
pure virtual
Remarks
This is a general purpose function that allows the API to be extended in the future. The MAX development team can assign new cmd numbers and continue to add functionality to this class without having to 'break' the API.

Note: In R4 the return value changed from int to INT_PTR

New in R5.1 An additional Command was added to allow the setting of certain directories such as Plugins. It looks like this:

Execute(I_EXEC_SET_DIR, (ULONG_PTR)(int) which, ULONG_PTR)(MCHAR )dir)

where 'which' designates the particular Max directory to be changed (like the corresponding argument of Interface::GetDir()), and 'dir' is the path as a string.
Parameters:
int cmd

The index of the command to execute. See Interface::Execute Command Options .

ULONG arg1=0

Optional argument 1. See the documentation where the cmd option is discussed for more details on these parameters.

ULONG arg2=0

Optional argument 2.

ULONG arg3=0

Optional argument 3.

ULONG arg4=0

Optional argument 4.

ULONG arg5=0

Optional argument 5.

ULONG arg6=0

Optional argument 6.
Returns
An INT_PTR return value. See the documentation where the cmd option is discussed for more details on the meaning of this value.
virtual void* GetInterface ( DWORD  id)
pure virtual
virtual BaseInterface* GetInterface ( Interface_ID  id)
pure virtual
Remarks
Returns a pointer to the interface whose ID is specified.
Parameters:
Interface_ID id

The ID of the interface to return.
Default Implementation:
{ return NULL; }

Reimplemented from FPInterfaceDesc.

virtual ReferenceTarget* GetScenePointer ( )
pure virtual
Remarks
Returns a pointer for direct access to the scene. This is primarily used for hanging AppData off the entire scene as opposed to a certain Animatable.
virtual ITrackViewNode* GetTrackViewRootNode ( )
pure virtual
Remarks
This method returns a pointer to the Track View Root Node. See Class ITrackViewNode.
virtual void FreeSceneBitmaps ( )
pure virtual
Remarks
This method traverses the scene reference hierarchy, calling Animatable::FreeAllBitmaps() on every Animatable. This will free up all the memory used by bitmaps.
virtual void EnumAuxFiles ( AssetEnumCallback assetEnum,
DWORD  vflags 
)
pure virtual
Remarks
This method may be used to enumerate all the bitmap files in the scene. The flags allow control over which files are enumerated.
Parameters:
AssetEnumCallback& assetEnum

The callback, called once for each bitmap. See Class AssetEnumCallback.

DWORD vflags

See Auxiliary File Enumeration Flags. Note: if the FILE_ENUM_CHECK_AWORK1 flag bit is not set when this call is made, and the FILE_ENUM_RENDER flag bit is set, the implementation of this method calls ClearAFlagInAllAnimatables(A_WORK1) and sets the FILE_ENUM_CHECK_AWORK1 flag bit.
virtual void RenderTexmap ( Texmap tex,
Bitmap bm,
float  scale3d = 1.0f,
BOOL  filter = FALSE,
BOOL  display = FALSE,
float  z = 0.0f,
TimeValue  t = GetCOREInterface() ->GetTime(),
bool  bake = false 
)
pure virtual
Remarks
This method renders a textmap (or an entire textmap tree) to the specified bitmap.
Parameters:
Texmap *tex

The Texmap to render to a bitmap.

Bitmap *bm

A pointer to a bitmap to render to. This bitmap must be created at the resolution you wish to render to.

float scale3d=1.0f

This is a scale factor applied to 3D Texmaps. This is the scale of the surface in 3d space that is mapped to UV. This controls how much of the texture appears in the bitmap representation.

BOOL filter=FALSE

If TRUE the bitmap is filtered. It is quite a bit slower to rescale bitmaps with filtering on.

BOOL display=FALSE

If TRUE the resulting bitmap is displayed using the virtual frame buffer; otherwise it is not. TimeValue t

The time at which to render the texmap to the bitmap, defaults to the current frame. bool bake

Used to bake the texture to bitmap without including the effects of scale/rotation etc. If true, the function will render the unit square of 2D texture maps, by effectively disabling the UV Generator during texture rendering, so no settings like scale, rotation, tiling etc. have any effect on the result. This baked 2D representation can then later be scaled, rotated and tiled, for use in a renderer that may not support the particular texture, sent to a game engine, or similar.

virtual void RescaleWorldUnits ( float  f,
BOOL  selected 
)
pure virtual
Remarks
This method is used to rescale the world units of the entire scene, or optionally the current selection set.
Parameters:
float f

The scale factor to apply to the scene.

BOOL selected

TRUE to scale selected objects only; otherwise the entire scene is scaled.
virtual int InitSnapInfo ( SnapInfo info)
pure virtual
Remarks
Initialized the SnapInfo structure passed with the current snap settings.
Parameters:
SnapInfo *info

Points to the SnapInfo structure to initialize. See Structure SnapInfo.
Returns
Returns nonzero if snap is on; zero if off.
virtual BOOL GetKeyStepsSelOnly ( )
pure virtual
Remarks
Returns TRUE if the Time Configuration / Key Steps / Selected Objects Only check box is on; otherwise FALSE.
virtual void SetKeyStepsSelOnly ( BOOL  onOff)
pure virtual
Remarks
Sets the Time Configuration / Key Steps / Selected Objects Only check box to on or off.
Parameters:
BOOL onOff

TRUE for on; FALSE for off.
virtual BOOL GetKeyStepsUseTrans ( )
pure virtual
Remarks
Returns TRUE if the Time Configuration / Key Steps / Use Current Transform check box is on; otherwise FALSE.
virtual void SetKeyStepsUseTrans ( BOOL  onOff)
pure virtual
Remarks
Sets the Time Configuration / Key Steps / Use Current Transform check box to on or off.
Parameters:
BOOL onOff

TRUE for on; FALSE for off.
virtual BOOL GetKeyStepsPos ( )
pure virtual
Remarks
Returns TRUE if the Time Configuration / Key Steps / Position check box is on; otherwise FALSE. This value is only meaningful if Use Current Transform is off.
virtual void SetKeyStepsPos ( BOOL  onOff)
pure virtual
Remarks
Sets the Time Configuration / Key Steps / Position check box is to on or off.
Parameters:
BOOL onOff

TRUE for on; FALSE for off.
virtual BOOL GetKeyStepsRot ( )
pure virtual
Remarks
Returns TRUE if the Time Configuration / Key Steps / Rotation check box is on; otherwise FALSE. This value is only meaningful if Use Current Transform is off.
virtual void SetKeyStepsRot ( BOOL  onOff)
pure virtual
Remarks
Sets the Time Configuration / Key Steps / Rotation check box is to on or off.
Parameters:
BOOL onOff

TRUE for on; FALSE for off.
virtual BOOL GetKeyStepsScale ( )
pure virtual
Remarks
Returns TRUE if the Time Configuration / Key Steps / Scale check box is on; otherwise FALSE. This value is only meaningful if Use Current Transform is off.
virtual void SetKeyStepsScale ( BOOL  onOff)
pure virtual
Remarks
Sets the Time Configuration / Key Steps / Scale check box is to on or off.
Parameters:
BOOL onOff

TRUE for on; FALSE for off.
virtual BOOL GetKeyStepsUseTrackBar ( )
pure virtual
Remarks
Returns the state of the Time Configuration dialog 'Key Steps / Use TrackBar' checkbox. TRUE if checked; FALSE if unchecked.
virtual void SetKeyStepsUseTrackBar ( BOOL  onOff)
pure virtual
Remarks
Sets the state of the Time Configuration dialog 'Key Steps / Use TrackBar' checkbox.
Parameters:
BOOL onOff

TRUE for on; FALSE for off.
virtual BOOL GetUseTransformGizmo ( )
pure virtual
Remarks
Returns the state of the Transform Tools / Gizmo toggle.
Returns
TRUE if on; FALSE if off.
virtual void SetUseTransformGizmo ( BOOL  onOff)
pure virtual
Remarks
This method enables or disables the use of Transform Gizmos.
Parameters:
BOOL onOff

TRUE for on; FALSE for off.
virtual void SetTransformGizmoRestoreAxis ( BOOL  bOnOff)
pure virtual
Remarks
This method sets whether the TransformGizmo should restore the axis constraint when released, or if the axis constraint is permanently changed. The value is saved in the 3DSMAX.INI file for later sessions.
Parameters:
BOOL bOnOff

Enable or disable the restoration of the axis constraint.
virtual BOOL GetTransformGizmoRestoreAxis ( )
pure virtual
Remarks
Indicates if the TransformGizmo will restore the axis constraint when released. Returns TRUE if it will; FALSE if it won't.
virtual BOOL GetConstantAxisRestriction ( )
pure virtual
Remarks
Returns the state of the Transform Tools / Constant Axis toggle.
Returns
TRUE if on; FALSE if off.
virtual void SetConstantAxisRestriction ( BOOL  onOff)
pure virtual
Remarks
Sets the state of the Transform Tools / Constant Axis toggle.
Parameters:
BOOL onOff

TRUE for on; FALSE for off.
virtual int HitTestTransformGizmo ( IPoint2 p,
ViewExp vpt,
int  axisFlags 
)
pure virtual
Remarks
This method is used to hit test gizmos for sub-objects.
Parameters:
IPoint2 *p

Point to check in screen coordinates.

ViewExp *vpt

An interface pointer that may be used to call methods associated with the viewports.

int axisFlags

One or more of the following values:

HIT_TRANSFORMGIZMO

This flag is passed in on a MOUSE_FREEMOVE message so that the axis is hit tested and it highlights if it is hit, but it doesn't actually switch the transform mode.

HIT_SWITCH_GIZMO

In case of a MOUSE_POINT, this flag is used, and if the axis is hit, the 'hit' transform mode will be pushed on the transform mode stack.
Returns
Nonzero if the item was hit; otherwise 0.
virtual void DeactivateTransformGizmo ( )
pure virtual
virtual int ConfigureBitmapPaths ( )
pure virtual
Remarks
This method puts up the dialog to let the user configure the bitmap loading paths.

conbmap.gif
Returns
Nonzero on user selecting OK, zero on Cancel.
virtual BOOL DoSpaceArrayDialog ( SpaceArrayCallback sacb = NULL)
pure virtual
Remarks
Puts up the space array dialog. If the callback is NULL it just does the standard space array tool.

spcarray.gif
Parameters:
SpaceArrayCallback *sacb=NULL

The callback. See Class SpaceArrayCallback.
Returns
Returns TRUE if the user OKs the dialog, otherwise FALSE.
virtual int AddClass ( ClassDesc pCD)
pure virtual
Remarks
This method is used to dynamically add a plug-in class. This method will update the control panel in the Create or Modify branches dynamically.
Parameters:
ClassDesc *pCD

Points to the Class Descriptor to add. See Class ClassDesc.
Returns
Returns -1 if the superclass was unknown, 0 if the class already exists, or 1 if the class was added successfully.
virtual int DeleteClass ( ClassDesc pCD)
pure virtual
Remarks
This method is used to dynamically delete a plug-in class. This method will update the control panel in the Create or Modify branches dynamically.
Parameters:
ClassDesc *pCD

Points to the Class Descriptor to add. See Class ClassDesc.
Returns
Returns -1 if the superclass was unknown, 0 if the class does not exist, or 1 if the class was deleted successfully.
virtual int GetCommandStackSize ( )
pure virtual
Remarks
Returns the number of command modes in the command mode stack.
virtual CommandMode* GetCommandStackEntry ( int  entry)
pure virtual
Remarks
Returns a pointer to the command mode at the specified position in the command mode stack. A developer may use this to determine if their command mode is in the stack.
Parameters:
int entry

The index into the command mode stack of the entry to get. Pass 0 to get the current command mode.
virtual void AddSFXRollupPage ( ULONG  vflags = 0)
pure virtual
Remarks
This method should be called in an light's BeginEditParams() method, after adding rollups to the modify panel: it puts up a rollup containing a list of all Atmospherics and Effects that use the current selected node as a "gizmo".
Parameters:
ULONG vflags=0

These are reserved for future use.
virtual void DeleteSFXRollupPage ( )
pure virtual
Remarks
This is called in a light's EndEditParams() when removing rollups.
virtual void RefreshSFXRollupPage ( )
pure virtual
Remarks
An Atmospheric or Rendering Effect calls this when it adds or removes a "gizmo" reference. This is called to refresh the Special Effects rollup. The Atmospherics and Rendering Effects may also use the REFMSG_SFX_CHANGE message, though calling this method would have the same effect.
virtual int GetNumProperties ( int  PropertySet)
pure virtual
Remarks
Returns the number of properties of the specified property set. See the note at the start of this group of methods above for info on property sets.
Parameters:
int PropertySet

See PropertySet Options.
virtual int FindProperty ( int  PropertySet,
const PROPSPEC *  propspec 
)
pure virtual
Remarks
Return the index of the specified property or -1 if it is not found. See the note at the start of this group of methods above for info on property sets.
Parameters:
int PropertySet

See PropertySet Options.

const PROPSPEC* propspec

Points to a PROPSPEC structure of the property to find. The Windows API PROPSPEC structure is used by many of the methods of IPropertyStorage to specify a property either by its property identifier or the associated string name. See the Windows API for details on this structure.
Returns
The zero based index of the specified property or -1 if not found.
virtual const PROPVARIANT* GetPropertyVariant ( int  PropertySet,
int  idx 
)
pure virtual
Remarks
Return the value of the property at this index, in PROPVARIANT form. See the note at the start of this group of methods above for info on property sets.
Parameters:
int PropertySet

See PropertySet Options.

int idx

The zero based index of the property variant to get.
Returns
Points to a PROPVARIANT structure. This Windows API structure is used in most of the methods of IPropertyStorage to define the type tag and the value of a property in a property set. See the Windows API for details on this structure.
virtual const PROPSPEC* GetPropertySpec ( int  PropertySet,
int  idx 
)
pure virtual
Remarks
Return the name of the property at this index, in PROPSPEC form. See the note at the start of this group of methods above for info on property sets.
Parameters:
int PropertySet

See PropertySet Options.

int idx

The zero based index of the property name to get.
Returns
Points to a PROPSPEC structure. The Windows API PROPSPEC structure is used by many of the methods of IPropertyStorage to specify a property either by its property identifier or the associated string name. See the Windows API for details on this structure.
virtual void AddProperty ( int  PropertySet,
const PROPSPEC *  propspec,
const PROPVARIANT *  propvar 
)
pure virtual
Remarks
This method adds a property to the specified property set. See the sample code in /MAXSDK/SAMPLES/UTILITIES/PROPERTYTEST/PROPERTYTEST.CPP.

See the note at the start of this group of methods above for info on property sets.
Parameters:
int PropertySet

See PropertySet Options.

const PROPSPEC* propspec

Points to a PROPSPEC structure.

const PROPVARIANT* propvar

Points to a PROPVARIANT structure.
virtual void DeleteProperty ( int  PropertySet,
const PROPSPEC *  propspec 
)
pure virtual
Remarks
Deletes the specified property. The property will be removed and the memory freed. See the note at the start of this group of methods above for info on property sets.
Parameters:
int PropertySet

See PropertySet Options.

const PROPSPEC* propspec

Points to a PROPSPEC structure to delete.
virtual BOOL RegisterViewWindow ( ViewWindow vw)
pure virtual
Remarks
This method allows you to register a window that can appear in a viewport.
Parameters:
ViewWindow *vw

The pointer to the view window to register.
Returns
TRUE if successful, otherwise FALSE.
virtual BOOL UnRegisterViewWindow ( ViewWindow vw)
pure virtual
Remarks
This method allows you to unregister a window that can appear in a viewport.
Parameters:
ViewWindow *vw

The pointer to the view window to unregister.
Returns
TRUE if successful, otherwise FALSE.
virtual ShadowType* GetGlobalShadowGenerator ( )
pure virtual
virtual void SetGlobalShadowGenerator ( ShadowType st)
pure virtual
virtual BOOL GetImportZoomExtents ( )
pure virtual
Remarks
This returns the state of the system zoom extents flag. Note that individual SceneImport plug-ins can override this in their ZoomExtents() method. See Class SceneImport.
Returns
TRUE indicates that zoom extents will occur after imports, FALSE indicates that no zoom extents.
virtual void SetImportZoomExtents ( BOOL  onOff)
pure virtual
Remarks
Sets the state of the system zoom extents flag.
Parameters:
BOOL onOff

TRUE indicates that zoom extents will occur after imports, FALSE indicates that no zoom extents.
virtual bool CanImportFile ( const MCHAR filename)
pure virtual
Remarks
This method will check is the specified file can be imported.
Parameters:
const MCHAR* filename

The file name to check.
Returns
TRUE if the specified file can be imported by one of the import plug-ins; otherwise FALSE.
virtual ITrackBar* GetTrackBar ( )
pure virtual
Remarks
This method returns an instance of the ITrackBar class. This class may be used to manipulate the track bar. See Class ITrackBar.
virtual void SetIncludeXRefsInHierarchy ( BOOL  onOff)
pure virtual
Remarks
This method allows a plug-in to specify whether scene XRef objects are hidden from the hierarchy when it is traversed. Normally this parameter is set to FALSE except during rendering. If a plug-in wants access to XRef scene objects then it should set this to TRUE and traverse the scene and then set it back to FALSE when it's done.

Most of the time the XRef trees (whose root node is a child of the client scene's root node) are skipped when traversing the hierarchy. When this option is turned on, all root nodes will include child XRef scene root nodes in any traversal related functions such as NumberOfChildren() and GetChildNode(i).

This option is turned on automatically before rendering and turned off after so that scene XRefs appear in the production renderer. Note: This option should not be left on if it is turned on since it would cause scene XRef objects to be accessible to the user in the client scene.

Note that plug-ins can also access XRef objects using the Class INode XRef methods.
Parameters:
BOOL onOff

TRUE to include XRefs in the hierarchy; FALSE to not include them.
virtual BOOL GetIncludeXRefsInHierarchy ( )
pure virtual
Remarks
Returns TRUE if XRefs are included in the traversal of the scene hierarchy; otherwise FALSE. See the method above for details.
virtual BOOL IsXRefAutoUpdateSuspended ( )
pure virtual
Remarks
Returns TRUE if the automatic updating of XRefs is suspended; otherwise FALSE. When an XRef file is changed and that causes an XRef object to update, the old XRef object gets deleted from memory which can cause problems for some plug-ins. For example, the Dynamics system would have a problem if an update occurred while a solution was solving. This method is used to disable the automatic updating to prevent the problem.
virtual void SetXRefAutoUpdateSuspended ( BOOL  onOff)
pure virtual
Remarks
Sets if the automatic updating of XRefs is suspended or not. See the note in IsXRefAutoUpdateSuspended() for details.
Parameters:
BOOL onOff

TRUE to suspend; FALSE to restore automatic updating.
virtual BOOL IsSceneXRefNode ( INode node)
pure virtual
Remarks
Returns TRUE if the specified node is part of a scene XRef or FALSE if the node is a regular modifiable node in the current scene.
Parameters:
INode *node

The node to check.
virtual MacroRecorder* GetMacroRecorder ( )
pure virtual
virtual void UpdateMtlEditorBrackets ( )
pure virtual
Remarks
This method makes sure the Materials Editor slots correctly reflect which materials are used in the scene, which are used by selected objects, etc. This is used internally for the drag-and-drop of materials to nodes – there is no reason why a plug-in developer should need to call it.
virtual bool IsTrialLicense ( )
pure virtual
Remarks
Returns TRUE if the application is running under a trial license, as opposed to a full, authorized license; otherwise FALSE.
virtual bool IsNetworkLicense ( )
pure virtual

Returns true if the application is running under a network license.

virtual BOOL CheckForSave ( )
pure virtual
Remarks
This method can be used to write out a .MAX file if needed. First it ends animation if it's in progress. Next it determines whether a save operation is required (change marked in scene, or undo operations present).
Returns
If the save is not required, it returns TRUE; otherwise, it puts up a dialog box asking if the user wants to save. If the user picks No, it returns TRUE. If the user picks Cancel it returns FALSE. If the user picks Yes then the method proceeds as for FileSave() above.
virtual void SetMAXFileOpenDlg ( MAXFileOpenDialog dlg)
pure virtual
Remarks
This method allows a custom file open dialog to be registered.
Parameters:
MAXFileOpenDialog* dlg

Points to the file open dialog object to use. See Class MAXFileOpenDialog.
virtual void SetMAXFileSaveDlg ( MAXFileSaveDialog dlg)
pure virtual
Remarks
This method allows a custom file save dialog to be registered.
Parameters:
MAXFileSaveDialog* dlg

Points to the file save dialog object to use. See Class MAXFileSaveDialog.
virtual void RAMPlayer ( HWND  hWndParent,
const MCHAR szChanA = NULL,
const MCHAR szChanB = NULL 
)
pure virtual
Remarks
Brings up the RAMPlayer dialog and optionally loads one, or both channels with the supplied files.

ramplay.gif
Parameters:
HWND hWndParent

The parent window handle.

MCHAR* szChanA=NULL

The file to load for channel A (for example, _M("movie.avi")). If NULL is passed no file is loaded into the channel.

MCHAR* szChanB=NULL

The file to load for channel B. If NULL is passed no file is loaded into the channel.
virtual void FlushUndoBuffer ( )
pure virtual
Remarks
This function will flush the undo buffer. See the Advanced Topics section The Undo and Redo System.
virtual bool DeferredPluginLoadingEnabled ( )
pure virtual
Remarks
In the Preferences dialog / General Tab / Plug-In Loading section there is a checkbox labelled 'Load Plug-Ins when Used'. This method returns the state of this toggle.. See the Advanced Topics section Deferred Loading of Plug-Ins.
Returns
TRUE if on; FALSE if off.
virtual void EnableDeferredPluginLoading ( bool  onOff)
pure virtual
Remarks
In the Preferences dialog / General Tab / Plug-In Loading section there is a checkbox labelled 'Load Plug-Ins when Used'. This method sets the state of this toggle. See the Advanced Topics section Deferred Loading of Plug-Ins.
Parameters:
bool onOff

TRUE for on; FALSE for off.
virtual bool IsMaxFile ( const MCHAR filename)
pure virtual
Remarks
Returns true if the specified file is a valid MAX file; otherwise false.
Parameters:
const MCHAR* filename

The name of the file to check.
virtual bool IsInternetCachedFile ( const MCHAR filename)
pure virtual
Remarks
Returns true if the specified file is an internet cached file; otherwise false.
Parameters:
const MCHAR* filename

The name of the file to check.
virtual bool CanImportBitmap ( const MCHAR filename)
pure virtual
Remarks
This method will check if the system can import the specified bitmap file.
Parameters:
const MCHAR* filename

The file name to check.
Returns
TRUE if the specified file is a bitmap file of a format that is supported by one of the bitmap reader plug-ins; otherwise FALSE.

virtual bool CaptureSubObjectRegistration ( bool  OnOff,
Class_ID  cid 
)
pure virtual
Remarks
This method is used to lock and unlock subobject mode registrations and is primarily used by the FileLink wrapper classes acting as proxies to other classes in 3D Studio VIZ. When a class calls this method with OnOff set to TRUE, then other classes are prevented from registering new subobject modes. This continues until the original class "releases" by calling CaptureSubObjectModes(FALSE, myClassID). The second argument insures that only the class which does the capture can do the release. Note that this is used only by certain VIZ plugins.
Parameters:
bool OnOff

TRUE to prevent other classes from registering new subobject modes.

Class_ID cid

The class ID.
Returns
TRUE is successful, otherwise FALSE.
virtual bool DownloadUrl ( HWND  hwnd,
const MCHAR url,
const MCHAR filename,
DWORD  downloadFlags = 0 
)
pure virtual
Remarks
This method simplifies downloading files from any given URL and displays a floating progress dialog.
Parameters:
HWND hwnd

The window handle for owner window (required for the progress floating dialog).

const MCHAR* url

The string for the resource/file to download.

const MCHAR* filename

The target location and filename for the downloaded file.

DWORD downloadFlags = 0

Additional controls to the download behavior. Currently only one flag is supported, DOWNLOADDLG_NOPLACE, which hides an option in the progress dialog that allows the user to place (move) a dropped object immediately after being dropped.
Returns
TRUE if successful, otherwise FALSE.
virtual INode* GetImportCtxNode ( void  )
pure virtual
Remarks
On drag-and-drop, if the drop type is a file, the drop handler searches for an importer plugin that can handle the file (based on its extension). Some drop operations, such as bitmaps and material XML files, can or must be dropped on to an object in the scene.
Returns
The node that the operation is performed on, if one is "hit" at the drop location. It returns NULL if no nodes were found at the drop location.
virtual ITreeView* CreateTreeViewChild ( ReferenceTarget root,
HWND  hParent,
DWORD  style = 0,
ULONG  id = 0,
int  open = OPENTV_SPECIAL 
)
pure virtual
Remarks
This method will creates a plain treeview window (no title,borders,etc.) as a child window of the given window. To destroy the window, delete the ITreeView pointer.
Parameters:
ReferenceTarget* root

Points to the root node of the hierarchy to display in the Track View.

HWND hParent

The window handle of the parent for the dialog.

DWORD style=0

The style flags;

TVSTYLE_MAXIMIZEBUT

Provide a maximize button.

TVSTYLE_INVIEWPORT

Display in the viewport.

TVSTYLE_NAMEABLE

The treeview is namable.

TVSTYLE_INMOTIONPAN

Used in the motion panel.

ULONG id=0

The ID of the treeview window.

int open=OPENTV_SPECIAL

One of the following values:

OPENTV_NEW

Open a new treeview.

OPENTV_SPECIAL

Open a special treeview.

OPENTV_LAST

Open the last treeview.
virtual void ConvertMtl ( TimeValue  t,
Material gm,
Mtl mtl,
BOOL  doTex,
int  subNum,
float  vis,
BOOL &  needDecal,
INode node,
BitArray needTex,
GraphicsWindow gw 
)
pure virtual
Remarks
This function converts a material (class Mtl) to a viewport material (class Material).
Parameters:
TimeValue t

The time to convert the material.

Material &gm

The viewport material (output). See Class Material.

Mtl *mtl

The material to convert (input). See Class Mtl.

BOOL doTex

Determines whether or not to include textures. TRUE for yes; FALSE for no.

int subNum

If the input material mtl is a sub-material then pass its subnum; otherwise pass 0.

float vis

The visibility value in the range of 0.0 (completely transparent) to 1.0 (fully opaque) for the viewport representation.

BOOL &needDecal

Pass TRUE if the texture needs decal mapping; otherwise FALSE.

INode *node

Points to the node that the material is assigned to. See Class INode.

BitArray *needTex

A BitArray that returns which map channels are needed. The BitArray is enlarged if needed. See Class BitArray.

GraphicsWindow *gw

The GraphicsWindow to do the conversion for. See Class GraphicsWindow.
virtual bool CloneNodes ( INodeTab nodes,
Point3 offset,
bool  expandHierarchies = true,
CloneType  cloneType = NODE_COPY,
INodeTab resultSource = NULL,
INodeTab resultTarget = NULL 
)
pure virtual
Remarks
This method allows you to clone nodes and node hierarchies.
Parameters:
INodeTab& nodes

The node table containing the nodes you wish to clone.

Point3& offset

The position offset you wish to apply to the cloned nodes.

bool expandHierarchies = true

This determines if children will be cloned in hierarchies.

CloneType cloneType = NODE_COPY

The type of cloning you wish to do, which is one of the following; NODE_COPY, NODE_INSTANCE or NODE_REFERENCE.

INodeTab* resultSource = NULL

This node table will be filled in with the original nodes to be cloned. The reason for this is that there can be dependencies between nodes that cause other nodes to be added to the list. For example light/camera targets, nodes part of systems, belonging to groups or expanded hierarchies etc.

INodeTab* resultTarget = NULL

This node table will be filled in with the new cloned nodes. There is a one to one relationship between the nodes in the resultSource and the resultTraget.
Returns
TRUE if the nodes were cloned successfully, otherwise FALSE. Note that with R4.0 the return value will always be TRUE since no actual error checking is undertaken.
virtual void CollapseNode ( INode node,
BOOL  noWarning = FALSE 
)
pure virtual

@

virtual BOOL CollapseNodeTo ( INode node,
int  modIndex,
BOOL  noWarning = FALSE 
)
pure virtual
virtual BOOL ConvertNode ( INode node,
Class_ID cid 
)
pure virtual
virtual IRenderPresetsManager* GetRenderPresetsManager ( )
pure virtual
virtual DefaultActionSys* DefaultActions ( )
pure virtual
virtual BOOL SetQuietMode ( BOOL  onOff)
pure virtual

Sets internal flag, returns old value.

Parameters
onOff- Set to TRUE to indicate that no dialogs should be displayed to user.
Returns
the previous quiet mode state
virtual BOOL GetQuietMode ( BOOL  checkServerMode = TRUE)
pure virtual

The return value from this method should be called before displaying any dialogs.

Returns internal flag set by SetQuietMode.

Parameters
checkServerMode-if TRUE, returns internal flag OR-ed with whether 3ds Max runs in server , i.e. UI-less mode. If client code needs save the current quiet mode's value in order to restore it later via a call to Interface::SetQuietMode(), it should retrieve it using Interface::GetQuietMode(FALSE).
Returns
the current quiet mode.
virtual void SetAutoGridEnable ( bool  sw = true)
pure virtual

Enables/disables system AutoGrid feature.

This allows plugins to use the standard creation manager but disable AutoGrid if desired. Use this call with "false" argument in ClassDesc::BeginCreate to disable AutoGrid; use with "true" argument in ClassDesc::EndCreate to re-enable.

Parameters
sw- true=enable false=disable
virtual bool GetAutoGridEnable ( )
pure virtual

Query system AutoGrid feature enable state.

Returns internal flag set by SetAutoGridEnable.

Returns
the current AutoGrid enable state.
virtual bool GetAutoGridState ( )
pure virtual

Query system AutoGrid feature state.

Returns internal flag set by SetAutoGrid.

Returns
the current AutoGrid state.
virtual void SetAutoGridState ( bool  sw = true)
pure virtual

Sets system AutoGrid state.

This allows plugins to turn AutoGrid on or off.

Parameters
sw- true=Autogrid on false=AutoGrid off