3ds Max C++ API Reference
INodeExposure Class Referenceabstract

class INodeExposure: public FPMixinInterface More...

#include <INodeExposure.h>

+ Inheritance diagram for INodeExposure:

Public Types

enum  {
  kSelectObjects , kSchematicView , kMaxscript , kMerge ,
  kMergeAnimation , kReplace , kKeyEditor , kCurveEditor ,
  kRangeEditor , kUpdates , kUI_num
}
 
enum  FuncID { kIsExposed , kSetExposedInAll , kSetExposed , kBakeExposure }
 
- Public Types inherited from BaseInterface
enum  LifetimeType { noRelease , immediateRelease , wantsRelease , serverControlled }
 

Public Member Functions

virtual bool IsExposed (int ui) const =0
 
virtual void SetExposed (bool state)=0
 
virtual void SetExposed (bool state, int ui)=0
 
bool IsExposedInSelectObjects () const
 
bool IsExposedInSchematicView () const
 
bool IsExposedInMaxscript () const
 
bool IsExposedInMerge () const
 
bool IsExposedInMergeAnimation () const
 
bool IsExposedInReplace () const
 
bool IsExposedInTrackView () const
 
bool IsExposedInKeyEditor () const
 
bool IsExposedInCurveEditor () const
 
bool IsExposedInRangeEditor () const
 
void SetExposedInSelectObjects (bool state)
 
void SetExposedInSchematicView (bool state)
 
void SetExposedInMaxscript (bool state)
 
void SetExposedInMerge (bool state)
 
void SetExposedInMergeAnimation (bool state)
 
void SetExposedInReplace (bool state)
 
void SetExposedInTrackView (bool state)
 
void SetExposedInKeyEditor (bool state)
 
void SetExposedInCurveEditor (bool state)
 
void SetExposedInRangeEditor (bool state)
 
virtual IOResult Save (ISave *) const =0
 
virtual IOResult Load (ILoad *)=0
 
virtual void Copy (INodeExposure *)=0
 
virtual void BakeExposure ()=0
 
virtual bool IsExposureBaked ()=0
 
virtual const voidObjectOf (void *) const =0
 
virtual voidObjectOf (void *)=0
 
FPInterfaceDescGetDesc ()
 
 FN_1 (kIsExposed, TYPE_bool, IsExposed, TYPE_INT)
 
 VFN_1 (kSetExposedInAll, SetExposed, TYPE_bool)
 
 VFN_2 (kSetExposed, SetExposed, TYPE_bool, TYPE_INT)
 
 VFN_0 (kBakeExposure, BakeExposure)
 
- Public Member Functions inherited from FPMixinInterface
 FPMixinInterface ()
 
virtual LifetimeType LifetimeControl ()
 
virtual CoreExport bool RegisterNotifyCallback (InterfaceNotifyCallback *incb)
 
virtual void UnRegisterNotifyCallback (InterfaceNotifyCallback *incb)
 
CoreExport ~FPMixinInterface ()
 
virtual BaseInterfaceGetInterface (Interface_ID id)
 
virtual FPInterfaceDescGetDescByID (Interface_ID id)
 
virtual Interface_ID GetID ()
 
- 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)
 
virtual ActionTableGetActionTable ()
 
virtual void EnableActions (BOOL onOff)
 
- Public Member Functions inherited from BaseInterface
virtual UtilExport ~BaseInterface ()
 Destructor. More...
 
virtual BaseInterfaceAcquireInterface ()
 
virtual void ReleaseInterface ()
 
virtual void DeleteInterface ()
 
virtual BaseInterfaceCloneInterface (void *remapDir=nullptr)
 
- Public Member Functions inherited from InterfaceServer
virtual UtilExport ~InterfaceServer ()
 Destructor. More...
 
template<class InterfaceType >
InterfaceType * GetTypedInterface ()
 

Static Public Member Functions

static INodeExposureGetINodeExposure (INode &n)
 
static INodeExposureAppendINodeExposure (INode &n)
 
- 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...
 

Additional Inherited Members

- Static Public Attributes inherited from FPInterface
static CoreExport FPInterfaceDesc nullInterface
 
- Protected Member Functions inherited from FPMixinInterface
 FPMixinInterface (const FPMixinInterface &rhs)
 
FPMixinInterfaceoperator= (const FPMixinInterface &rhs)
 
- Protected Member Functions inherited from FPInterface
virtual FPStatus _dispatch_fn (FunctionID fid, TimeValue t, FPValue &result, FPParams *p)
 
- Protected Attributes inherited from FPMixinInterface
Tab< InterfaceNotifyCallback * > * interfaceNotifyCBs
 

Detailed Description

class INodeExposure: public FPMixinInterface

Description:
This class is only available in release 5 or later.

This interface provides the ability for a node to define whether it is visible in any of max's dialog boxes. This interface will be extended and used by more of 3ds Max's core utilities, but currently ONLY TrackView and the Select Object/HideObject dialog box use this interface. By default this interface is not available through the default nodes, it needs to be added.

To get a pointer to this interface from a node the following code can be used.
#define NODEEXPOSURE_INTERFACE_TOAPPEND
Definition: INodeExposure.h:22
virtual BaseInterface * GetInterface(Interface_ID id)
Definition: ifnpub.h:595
class INodeExposure: public FPMixinInterface
Definition: INodeExposure.h:57

This will add a new INodeExposure interface to the node if it is not present. The next time you use this technique it will only return the interface and not create another new interface.

Data Members:
enum {

kSelectObjects, kSchematicView, kMaxscript,

kMerge, kMergeAnimation, kReplace,

kKeyEditor, kCurveEditor, kRangeEditor,

kUpdates

};

This enum provides access to the different supported UI elements. It is used with various methods of the class to get/set the UI flags. kUpdates is used when you want to temporarily remove a ref from updating the scene graph. This is for performance reason for instance if you wanted to cache a bunch nodes for display purposes after you built the cache you could turn off this flag and these not will not participate in scene updates.

Member Enumeration Documentation

◆ anonymous enum

anonymous enum
Enumerator
kSelectObjects 
kSchematicView 
kMaxscript 
kMerge 
kMergeAnimation 
kReplace 
kKeyEditor 
kCurveEditor 
kRangeEditor 
kUpdates 
kUI_num 
60  {
63  kKeyEditor, kCurveEditor, kRangeEditor, // three components for TrackView editors
64  kUpdates, // when off this suspend the node from updating BaseNode::Update, BaseNode::InvalidateTreeTM,
65  // NodeEventManager, and the NotifyDependents(tmValid, PART_TM, REFMSG_TM_CHANGE, AXIS_DISPLAY_CLASS_ID, FALSE); in Node::UpdateTM
66  // NOTE Node::UpdateTM(TimeValue t) is still processed due to the amount bone specific updates in it (might change)
67  kUI_num // always last in the enum
68  };
@ kMerge
Definition: INodeExposure.h:62
@ kMaxscript
Definition: INodeExposure.h:61
@ kRangeEditor
Definition: INodeExposure.h:63
@ kMergeAnimation
Definition: INodeExposure.h:62
@ kUpdates
Definition: INodeExposure.h:64
@ kCurveEditor
Definition: INodeExposure.h:63
@ kReplace
Definition: INodeExposure.h:62
@ kKeyEditor
Definition: INodeExposure.h:63
@ kSchematicView
Definition: INodeExposure.h:61
@ kUI_num
Definition: INodeExposure.h:67
@ kSelectObjects
Definition: INodeExposure.h:61

◆ FuncID

enum FuncID
Enumerator
kIsExposed 
kSetExposedInAll 
kSetExposed 
kBakeExposure 
182  {
184  };
@ kIsExposed
Definition: INodeExposure.h:183
@ kBakeExposure
Definition: INodeExposure.h:183
@ kSetExposed
Definition: INodeExposure.h:183
@ kSetExposedInAll
Definition: INodeExposure.h:183

Member Function Documentation

◆ GetINodeExposure()

static INodeExposure* GetINodeExposure ( INode n)
inlinestatic
71  {
72  return static_cast<INodeExposure*>(n.GetInterface(NODEEXPOSURE_INTERFACE)); }
#define NODEEXPOSURE_INTERFACE
Definition: INodeExposure.h:21
BaseInterface * GetInterface(Interface_ID id)
Definition: inode.h:1710

◆ AppendINodeExposure()

static INodeExposure* AppendINodeExposure ( INode n)
inlinestatic
74  {

◆ IsExposed()

virtual bool IsExposed ( int  ui) const
pure virtual
Remarks
This will return the exposure state of the UI element being queried

Parameters:
int ui

The UI flag to query. This should be a value from the UI enum - See data members section

◆ SetExposed() [1/2]

virtual void SetExposed ( bool  state)
pure virtual
Remarks
This will set the state of all the UI elements to the state passed into the method

NOTE kUpdates is not set or cleared by this. You have to individually set/unset that flag
Parameters:
bool state

The state to set the nodes UI exposure

◆ SetExposed() [2/2]

virtual void SetExposed ( bool  state,
int  ui 
)
pure virtual
Remarks
This will set the state of the individual UI element to the state passed into the method

Parameters:
bool state

The state to set the nodes UI exposure

int ui

The UI element to set

◆ IsExposedInSelectObjects()

bool IsExposedInSelectObjects ( ) const
inline
Remarks
This will return true if it is visible in Selected Objects/HideObjects Dialog box otherwise false

198 {
199  return IsExposed(kSelectObjects);
200 }
virtual bool IsExposed(int ui) const =0

◆ IsExposedInSchematicView()

bool IsExposedInSchematicView ( ) const
inline
203 {
204  return IsExposed(kSchematicView);
205 }

◆ IsExposedInMaxscript()

bool IsExposedInMaxscript ( ) const
inline
208 {
209  return IsExposed(kMaxscript);
210 }

◆ IsExposedInMerge()

bool IsExposedInMerge ( ) const
inline
213 {
214  return IsExposed(kMerge);
215 }

◆ IsExposedInMergeAnimation()

bool IsExposedInMergeAnimation ( ) const
inline
218 {
219  return IsExposed(kMergeAnimation);
220 }

◆ IsExposedInReplace()

bool IsExposedInReplace ( ) const
inline
223 {
224  return IsExposed(kReplace);
225 }

◆ IsExposedInTrackView()

bool IsExposedInTrackView ( ) const
inline
Remarks
This will return true if it is visible in TrackView or false if it is not. This will return TRUE is the node is exposed in ANY of the TrackView states, kKeyEditor, kCurveEditor and kRangeEditor. It will return FALSE if ALL are set to false.

228 {
230 }

◆ IsExposedInKeyEditor()

bool IsExposedInKeyEditor ( ) const
inline
Remarks
Specifies whether the node is visible in the Key Editor of TrackView
233 {
234  return IsExposed(kKeyEditor);
235 }

◆ IsExposedInCurveEditor()

bool IsExposedInCurveEditor ( ) const
inline
Remarks
Specifies whether the node is visible in the Function Curve Editor of Track View
238 {
239  return IsExposed(kCurveEditor);
240 }

◆ IsExposedInRangeEditor()

bool IsExposedInRangeEditor ( ) const
inline
Remarks
Specifies whether the node is visible in the Key Range Editor of Track View
243 {
244  return IsExposed(kRangeEditor);
245 }

◆ SetExposedInSelectObjects()

void SetExposedInSelectObjects ( bool  state)
inline
Remarks
This will set the flag for the exposure in Selected Objects/HideObjects dialog box

Parameters:
bool state

The value to set the flag

248 {
249  SetExposed(state, kSelectObjects);
250 }
virtual void SetExposed(bool state)=0

◆ SetExposedInSchematicView()

void SetExposedInSchematicView ( bool  state)
inline
253 {
254  SetExposed(state, kSchematicView);
255 }

◆ SetExposedInMaxscript()

void SetExposedInMaxscript ( bool  state)
inline
258 {
259  SetExposed(state, kMaxscript);
260 }

◆ SetExposedInMerge()

void SetExposedInMerge ( bool  state)
inline
263 {
264  SetExposed(state, kMerge);
265 }

◆ SetExposedInMergeAnimation()

void SetExposedInMergeAnimation ( bool  state)
inline
268 {
269  SetExposed(state, kMergeAnimation);
270 }

◆ SetExposedInReplace()

void SetExposedInReplace ( bool  state)
inline
273 {
274  SetExposed(state, kReplace);
275 }

◆ SetExposedInTrackView()

void SetExposedInTrackView ( bool  state)
inline
Remarks
This allows the state of the TrackView exposure flag to be set by the user. This will set the flag for all three TrackView flags. See comment in IsExposedInTrackView().

278 {
279  SetExposed(state, kKeyEditor);
280  SetExposed(state, kCurveEditor);
281  SetExposed(state, kRangeEditor);
282 }

◆ SetExposedInKeyEditor()

void SetExposedInKeyEditor ( bool  state)
inline
Remarks
This allows the state of the Key Editor of Trackview exposure flag to be set by the user.

285 {
286  SetExposed(state, kKeyEditor);
287 }

◆ SetExposedInCurveEditor()

void SetExposedInCurveEditor ( bool  state)
inline
Remarks
This allows the state of the Function Curve Editor of Track view exposure flag to be set by the user.

290 {
291  SetExposed(state, kCurveEditor);
292 }

◆ SetExposedInRangeEditor()

void SetExposedInRangeEditor ( bool  state)
inline
Remarks
This allows the state of the Key Range Editor of Track view exposure flag to be set by the user.
295 {
296  SetExposed(state, kRangeEditor);
297 }

◆ Save()

virtual IOResult Save ( ISave ) const
pure virtual

◆ Load()

virtual IOResult Load ( ILoad )
pure virtual

◆ Copy()

virtual void Copy ( INodeExposure )
pure virtual

◆ BakeExposure()

virtual void BakeExposure ( )
pure virtual

◆ IsExposureBaked()

virtual bool IsExposureBaked ( )
pure virtual

◆ ObjectOf() [1/2]

virtual const void* ObjectOf ( void ) const
pure virtual

◆ ObjectOf() [2/2]

virtual void* ObjectOf ( void )
pure virtual

◆ GetDesc()

FPInterfaceDesc* GetDesc ( )
inlinevirtual
Remarks
Returns a pointer to the class which contains the interface metadata.

Implements FPInterface.

virtual FPInterfaceDesc * GetDescByID(Interface_ID id)
Definition: ifnpub.h:613

◆ FN_1()

FN_1 ( kIsExposed  ,
TYPE_bool  ,
IsExposed  ,
TYPE_INT   
)

◆ VFN_1()

VFN_1 ( kSetExposedInAll  ,
SetExposed  ,
TYPE_bool   
)

◆ VFN_2()

VFN_2 ( kSetExposed  ,
SetExposed  ,
TYPE_bool  ,
TYPE_INT   
)

◆ VFN_0()

VFN_0 ( kBakeExposure  ,
BakeExposure   
)