3ds Max C++ API Reference
IXTCAccess Class Referenceabstract

Provides an interface to access Extension Channels. More...

#include <object.h>

+ Inheritance diagram for IXTCAccess:

Public Member Functions

virtual Interface_ID GetID () override
 This method returns the IXTCAccess interface ID. More...
 
virtual LifetimeType LifetimeControl ()
 This method allows inquiries into the actual lifetime policy of a client and provide a server-controlled delete notify callback. More...
 
virtual void AddXTCObject (XTCObject *pObj, int priority=0, int branchID=-1)=0
 This method adds an extension object into the pipeline. More...
 
virtual int NumXTCObjects ()=0
 This method returns the number of extension objects. More...
 
virtual XTCObjectGetXTCObject (int index)=0
 This method returns the I-th extension object. More...
 
virtual void RemoveXTCObject (int index)=0
 This method allows you to remove the I-th extension object. More...
 
virtual void SetXTCObjectPriority (int index, int priority)=0
 This method allows you to set the priority for the I-th extension object. More...
 
virtual int GetXTCObjectPriority (int index)=0
 This method returns the priority for the I-th extension object. More...
 
virtual void SetXTCObjectBranchID (int index, int branchID)=0
 This method allows you to set the branch identifier for the I-th extension object. More...
 
virtual int GetXTCObjectBranchID (int index)=0
 This method returns the branch identifier for the I-th extension object. More...
 
virtual void MergeAdditionalChannels (Object *from, int branchID)=0
 This method has to be called whenever the CompoundObject updates a branch (calling Eval on it). More...
 
virtual void BranchDeleted (int branchID, bool reorderChannels)=0
 This method has to be called on the CompoundObject, so it can delete the XTCObjects for the specific branch. More...
 
virtual void CopyAdditionalChannels (Object *from, bool deleteOld=true, bool bShallowCopy=false)=0
 This method copies all extension objects from the "from" objects into the current object. More...
 
virtual void DeleteAllAdditionalChannels ()=0
 This method allows you to delete all additional channels. More...
 
- Public Member Functions inherited from BaseInterface
virtual UtilExport ~BaseInterface ()
 Destructor. More...
 
UtilExport BaseInterfaceGetInterface (Interface_ID id) override
 
virtual bool RegisterNotifyCallback (InterfaceNotifyCallback *incb)
 
virtual void UnRegisterNotifyCallback (InterfaceNotifyCallback *incb)
 
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 ()
 

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...
 

Detailed Description

Provides an interface to access Extension Channels.


See also
Class Object, Class XTCObject

Member Function Documentation

◆ GetID()

virtual Interface_ID GetID ( )
inlineoverridevirtual

This method returns the IXTCAccess interface ID.

Reimplemented from BaseInterface.

1312 { return IXTCACCESS_INTERFACE_ID; }
#define IXTCACCESS_INTERFACE_ID
Definition: object.h:1303

◆ LifetimeControl()

virtual LifetimeType LifetimeControl ( )
inlinevirtual

This method allows inquiries into the actual lifetime policy of a client and provide a server-controlled delete notify callback.

Returns
One of the following LifetimeTypes:
  • noRelease Do not call release, use interface as long as you like.
  • immediateRelease The interface is only good for one calls. The release is implied so a call to release is not required.
  • wantsRelease The clients are controlling the lifetime, so the interface needs a Release() when the client has finished. This is the default.
  • serverControlled The server controls the lifetime and will use the InterfaceNotifyCallback to inform the code when it is gone.

Reimplemented from BaseInterface.

1328 { return noRelease; }
@ noRelease
Definition: baseinterface.h:104

◆ AddXTCObject()

virtual void AddXTCObject ( XTCObject pObj,
int  priority = 0,
int  branchID = -1 
)
pure virtual

This method adds an extension object into the pipeline.

Parameters
pObjThe extension object you wish to add.
priorityThe priority to set.
branchIDThe branch identifier to set.

◆ NumXTCObjects()

virtual int NumXTCObjects ( )
pure virtual

This method returns the number of extension objects.

◆ GetXTCObject()

virtual XTCObject* GetXTCObject ( int  index)
pure virtual

This method returns the I-th extension object.

Parameters
indexThe index of the extension object to return.

◆ RemoveXTCObject()

virtual void RemoveXTCObject ( int  index)
pure virtual

This method allows you to remove the I-th extension object.

Parameters
indexThe index of the extension object you wish to remove.

◆ SetXTCObjectPriority()

virtual void SetXTCObjectPriority ( int  index,
int  priority 
)
pure virtual

This method allows you to set the priority for the I-th extension object.

Parameters
indexThe index of the extension object for which to set the priority.
priorityThe priority to set.

◆ GetXTCObjectPriority()

virtual int GetXTCObjectPriority ( int  index)
pure virtual

This method returns the priority for the I-th extension object.

Parameters
indexThe index of the extension object.

◆ SetXTCObjectBranchID()

virtual void SetXTCObjectBranchID ( int  index,
int  branchID 
)
pure virtual

This method allows you to set the branch identifier for the I-th extension object.

Parameters
indexThe index of the extension object.
branchIDThe branch identifier to set.

◆ GetXTCObjectBranchID()

virtual int GetXTCObjectBranchID ( int  index)
pure virtual

This method returns the branch identifier for the I-th extension object.

Parameters
indexThe index of the extension object.

◆ MergeAdditionalChannels()

virtual void MergeAdditionalChannels ( Object from,
int  branchID 
)
pure virtual

This method has to be called whenever the CompoundObject updates a branch (calling Eval on it).

Object *from is the object returned from Eval (os.obj); branchID is an int, that specifies that branch. The extension channel will get a callback to RemoveXTCObjectOnMergeBranches() and MergeXTCObject(). By default it returns true to RemoveXTCObjectOnMergeBranches(), which means, that the existing XTCObjects with that branchID will be deleted. The method MergeXTCObject() simply copies the XTCObjects from the incoming branch into the compound object.

Parameters
fromThe object from which to merge additional channels
branchIDThe branch identifier.

◆ BranchDeleted()

virtual void BranchDeleted ( int  branchID,
bool  reorderChannels 
)
pure virtual

This method has to be called on the CompoundObject, so it can delete the XTCObjects for the specific branch.

The XTCObject will have again the final decision if the XTCObject gets really deleted or not in a callback to RemoveXTCObjectOnBranchDeleted(), which will return true, if the XTCObject should be removed.

Parameters
branchIDThe branch identifier.
reorderChannelsTRUE to reorder the channels, otherwise FALSE.

◆ CopyAdditionalChannels()

virtual void CopyAdditionalChannels ( Object from,
bool  deleteOld = true,
bool  bShallowCopy = false 
)
pure virtual

This method copies all extension objects from the "from" objects into the current object.

In case deleteOld is false, the objects will be appended. In case it is true, the old XTCObjects will be deleted.

Parameters
fromThe object to copy from.
deleteOldTRUE to delete the old channel, FALSE to append the channels.
bShallowCopyTRUE to create a shallow copy, FALSE to create a deep copy.

◆ DeleteAllAdditionalChannels()

virtual void DeleteAllAdditionalChannels ( )
pure virtual

This method allows you to delete all additional channels.