3ds Max C++ API Reference
List of interface IDs supported by different plugin types

List of interface IDs to be used with void* Animatable::GetInterface(ULONG id) Checking whether an animatable implements a certain interface is the recommended way for determining if that animatable can be used as the type represented by that interface. More...

Macros

#define I_CONTROL   0x00001010
 An Animatable supporting this interface is a Control. More...
 
#define I_IKCONTROL   0x00001020
 An Animatable supporting this interface is an IIKControl. More...
 
#define I_IKCHAINCONTROL   0x00001030
 An Animatable supporting this interface is an IIKChainControl. More...
 
#define I_WIRECONTROL   0x00001040
 An Animatable supporting this interface is an IBaseWireControl. More...
 
#define I_SCRIPTCONTROL   0x00001050
 An Animatable supporting this interface is an IBaseScriptControl. More...
 
#define I_MASTER   0x00001060
 An Animatable supporting this interface is a ReferenceTarget. More...
 
#define I_DRIVER   0x00001060
 An Animatable supporting this interface is a ReferenceTarget. More...
 
#define I_EASELIST   0x00001070
 An Animatable supporting this interface is an EaseCurveList. More...
 
#define I_MULTLIST   0x00001080
 An Animatable supporting this interface is a MultCurveList. More...
 
#define I_BASEOBJECT   0x00001090
 An Animatable supporting this interface is a BaseObject. More...
 
#define I_WSMOBJECT   0x000010a0
 An Animatable supporting this interface is a WSMObject. More...
 
#define I_DERIVEDOBJECT   0x000010b0
 An Animatable supporting this interface is an IDerivedObject. More...
 
#define I_OBJECT   0x000010c0
 An Animatable supporting this interface is an Object. More...
 
#define I_PARTICLEOBJ   0x000010d0
 An Animatable supporting this interface is a ParticleObject. More...
 
#define I_LIGHTOBJ   0x000010e0
 An Animatable supporting this interface is a LightObject. More...
 
#define I_SIMPLEPARTICLEOBJ   0x000010f0
 An Animatable supporting this interface is a SimpleParticle. More...
 
#define I_KEYCONTROL   0x00001100
 An Animatable supporting this interface is an IKeyControl. More...
 
#define I_KEYCONTROL2   0x00001110
 An Animatable supporting this interface is an IKeyControl2. More...
 
#define I_SETKEYCONTROL   0x00001120
 An Animatable supporting this interface is an ISetKey. More...
 
#define I_SYSTEM_XREF   0x00001130
 An Animatable supporting this interface is an ISystemXRef. More...
 
#define I_TEXTOBJECT   0x00001140
 An Animatable supporting this interface is an ITextObject. More...
 
#define I_WAVESOUND   0x00001150
 An Animatable supporting this interface is an IWaveSound. More...
 
#define I_SUBMTLAPI   0x00001160
 An Animatable supporting this interface is an ISubMtlAPI. More...
 
#define I_NEWPARTPOD   0x00001170
 An Animatable supporting this interface is a ParticlePodObj. More...
 
#define I_NEWPARTSOURCE   0x00001180
 An Animatable supporting this interface is a BasicSourceObj. More...
 
#define I_NEWPARTOPERATOR   0x00001190
 An Animatable supporting this interface is an IOperatorInterface. More...
 
#define I_NEWPARTTEST   0x000011a0
 An Animatable supporting this interface is an ITestInterface. More...
 
#define I_MESHSELECT   0x000011b0
 An Animatable supporting this interface is an IMeshSelect. More...
 
#define I_MESHSELECTDATA   0x000011c0
 An Animatable supporting this interface is an IMeshSelectData. More...
 
#define I_MAXSCRIPTPLUGIN   0x000011d0
 An Animatable supporting this interface is a MSPlugin. More...
 
#define I_MESHDELTAUSER   0x000011e0
 An Animatable supporting this interface is a MeshDeltaUser. More...
 
#define I_MESHDELTAUSERDATA   0x000011f0
 An Animatable supporting this interface is a MeshDeltaUserData. More...
 
#define I_SPLINESELECT   0x00001200
 An Animatable supporting this interface is an ISplineSelect. More...
 
#define I_SPLINESELECTDATA   0x00001210
 An Animatable supporting this interface is an ISplineSelectData. More...
 
#define I_SPLINEOPS   0x00001220
 An Animatable supporting this interface is an ISplineOps. More...
 
#define I_PATCHSELECT   0x00001230
 An Animatable supporting this interface is an IPatchSelect. More...
 
#define I_PATCHSELECTDATA   0x00001240
 An Animatable supporting this interface is an IPatchSelectData. More...
 
#define I_PATCHOPS   0x00001250
 An Animatable supporting this interface is an IPatchOps. More...
 
#define I_SUBMAP   0x00001260
 An Animatable supporting this interface is an ISubMap. More...
 
#define I_MITRANSLATOR   0x00001270
 unused - interface to max connection to mental ray More...
 
#define I_MENTALRAY   0x00001280
 An Animatable supporting this interface is a mrItem*. More...
 
#define I_NEWMTLINTERFACE   0x00001290
 An Animatable supporting this interface is an IChkMtlAPI. More...
 
#define I_COMPONENT   0x000012a0
 An Animatable supporting this interface is an IComponent. More...
 
#define I_REFARRAY   0x000012b0
 An Animatable supporting this interface is an IRefArray. More...
 
#define I_LINKTMCTRL   0x000012c0
 An Animatable supporting this interface is an Link Transform Control. More...
 
#define I_SUBTARGETCTRL   0x000012d0
 An Animatable supporting this interface is an Sub Target Control. More...
 
#define I_REAGENT   0x000012e0
 An Animatable supporting this interface is an IReagent. More...
 
#define I_GEOMIMP   0x000012f0
 An Animatable supporting this interface is an IGeomImp - implementaion neutral interface to geometry caches - REQUIRES RELEASE. More...
 
#define I_AGGREGATION   0x00001300
 An Animatable supporting this interface is an IAggregation. More...
 
#define I_VALENCE   0x00001310
 An Animatable supporting this interface is an IValence. More...
 
#define I_GUEST   0x00001320
 An Animatable supporting this interface is an IGuest. More...
 
#define I_HOST   0x00001330
 An Animatable supporting this interface is an IHost. More...
 
#define I_SCENEOBJECT   0x00001340
 An Animatable supporting this interface is an Object. More...
 
#define I_MULTITANGENT   0x00001350
 An Animatable supporting this interface is an IAdjustMultipleTangents. More...
 
#define I_SOFTSELECT   0x00001360
 An Animatable supporting this interface is an ISoftSelect. More...
 
#define I_UNREPLACEABLECTL   0x00001370
 An Animatable supporting this interface is an IUnReplaceableControl – used for the exposetransform controllers. More...
 
#define I_EULERCTRL   0x00001380
 An Animatable supporting this interface is an IEulerControl – used for euler controllers in order to get/set the xyz ordering. More...
 
#define I_LOCKED   0x00001390
 An Animatable supporting this interface is an ILockedTrack. More...
 
#define I_LOCKED_CLIENT   0x000013a0
 An Animatable supporting this interface is an ILockedTrackClient. More...
 
#define I_OBJECTSUPERCLASS_NOT_OBJECTCLASS   0x000013b0
 An Animatable supporting this interface reports a superclassid corresponding to an Object (for example, GEOMOBJECT_CLASS_ID), but creating an instance doesn't create an Object-derived object. More...
 
#define I_COMPOSITESUBMTLAPI   0x000013c0
 An Animatable supporting this interface is an ICompositeSubMtlAPI. More...
 
#define I_MTLIDSET   0x000013d0
 An Animatable supporting this interface is an IMtlIdSet. More...
 
#define I_BUFFERABLE   0x000013e0
 An Animatable supporting this interface is an IBufferable. More...
 
#define I_TANGENT   0x000013f0
 An Animatable supporting this interface is an IAdjustTangents. More...
 
#define I_USERINTERFACE   0x0000ffff
 Plug-in defined interfaces should be greater than this value. More...
 
#define GetControlInterface(anim)   ((Control*)(anim)->GetInterface(I_CONTROL))
 
#define GetObjectInterface(anim)   ((BaseObject*)(anim)->GetInterface(I_BASEOBJECT))
 
#define GetParticleInterface(anim)   ((ParticleObject*)(anim)->GetInterface(I_PARTICLEOBJ))
 
#define GetKeyControlInterface(anim)   ((IKeyControl*)(anim)->GetInterface(I_KEYCONTROL))
 
#define GetSetKeyControlInterface(anim)   ((ISetKey*)(anim)->GetInterface(I_SETKEYCONTROL))
 
#define GetMasterController(anim)   ((ReferenceTarget*)(anim)->GetInterface(I_DRIVER))
 
#define GetDriverController(anim)   ((ReferenceTarget*)(anim)->GetInterface(I_DRIVER))
 
#define GetTextObjectInterface(anim)   ((ITextObject*)(anim)->GetInterface(I_TEXTOBJECT))
 
#define GetWaveSoundInterface(anim)   ((IWaveSound*)(anim)->GetInterface(I_WAVESOUND))
 
#define GetMeshSelectInterface(anim)   ((IMeshSelect*)(anim)->GetInterface(I_MESHSELECT))
 
#define GetMeshSelectDataInterface(anim)   ((IMeshSelectData*)(anim)->GetInterface(I_MESHSELECTDATA))
 
#define GetMeshDeltaUserInterface(anim)   ((MeshDeltaUser*)(anim)->GetInterface(I_MESHDELTAUSER))
 
#define GetMeshDeltaUserDataInterface(anim)   ((MeshDeltaUserData*)(anim)->GetInterface(I_MESHDELTAUSERDATA))
 
#define GetTangentInterface(anim)   ((IAdjustTangents*)(anim)->GetInterface(I_TANGENT))
 
#define GetMultiTangentInterface(anim)   ((IAdjustMultipleTangents*)(anim)->GetInterface(I_MULTITANGENT))
 
#define GetSoftSelectInterface(anim)   ((ISoftSelect*)(anim)->GetInterface(I_SOFTSELECT))
 
#define GetLockedTrackInterface(anim)   ((ILockedTrack*)(anim)->GetInterface(I_LOCKED))
 
#define GetLockedTrackClientInterface(client)   ((ILockedTrackClient*)(client)->GetInterface(I_LOCKED_CLIENT))
 

Detailed Description

List of interface IDs to be used with void* Animatable::GetInterface(ULONG id) Checking whether an animatable implements a certain interface is the recommended way for determining if that animatable can be used as the type represented by that interface.


For example, given an Animatable* anim, one can find out whether it can be used as a controller by simply asking for the I_CONTROL interface. In order to simplify the task of querying for the most common interfaces, use one of the predefined macros, such as

#define GetControlInterface(anim) ((Control*)anim->GetInterface(I_CONTROL)).

Example of using the predefined macros:

Animatable* anim = NULL;
// Code that initializes anim ...
#define NULL
Definition: autoptr.h:18
Definition: Animatable.h:118
Definition: control.h:1054
#define GetControlInterface(anim)
Definition: AnimatableInterfaceIDs.h:114
Note
These interfaces do NOT need to be released with Animatable::ReleaseInterface().
The ids of interfaces supported by 3rd party classes derived from Animatable, should be greater than I_USERINTERFACE

Macro Definition Documentation

◆ I_CONTROL

#define I_CONTROL   0x00001010

An Animatable supporting this interface is a Control.

◆ I_IKCONTROL

#define I_IKCONTROL   0x00001020

An Animatable supporting this interface is an IIKControl.

◆ I_IKCHAINCONTROL

#define I_IKCHAINCONTROL   0x00001030

An Animatable supporting this interface is an IIKChainControl.

◆ I_WIRECONTROL

#define I_WIRECONTROL   0x00001040

An Animatable supporting this interface is an IBaseWireControl.

◆ I_SCRIPTCONTROL

#define I_SCRIPTCONTROL   0x00001050

An Animatable supporting this interface is an IBaseScriptControl.

◆ I_MASTER

#define I_MASTER   0x00001060

An Animatable supporting this interface is a ReferenceTarget.

Deprecated:
This has been deprecated as of 3ds Max 2022. Please use I_DRIVER instead [insensitive language]

◆ I_DRIVER

#define I_DRIVER   0x00001060

An Animatable supporting this interface is a ReferenceTarget.

◆ I_EASELIST

#define I_EASELIST   0x00001070

An Animatable supporting this interface is an EaseCurveList.

◆ I_MULTLIST

#define I_MULTLIST   0x00001080

An Animatable supporting this interface is a MultCurveList.

◆ I_BASEOBJECT

#define I_BASEOBJECT   0x00001090

An Animatable supporting this interface is a BaseObject.

◆ I_WSMOBJECT

#define I_WSMOBJECT   0x000010a0

An Animatable supporting this interface is a WSMObject.

◆ I_DERIVEDOBJECT

#define I_DERIVEDOBJECT   0x000010b0

An Animatable supporting this interface is an IDerivedObject.

◆ I_OBJECT

#define I_OBJECT   0x000010c0

An Animatable supporting this interface is an Object.

◆ I_PARTICLEOBJ

#define I_PARTICLEOBJ   0x000010d0

An Animatable supporting this interface is a ParticleObject.

◆ I_LIGHTOBJ

#define I_LIGHTOBJ   0x000010e0

An Animatable supporting this interface is a LightObject.

◆ I_SIMPLEPARTICLEOBJ

#define I_SIMPLEPARTICLEOBJ   0x000010f0

An Animatable supporting this interface is a SimpleParticle.

◆ I_KEYCONTROL

#define I_KEYCONTROL   0x00001100

An Animatable supporting this interface is an IKeyControl.

◆ I_KEYCONTROL2

#define I_KEYCONTROL2   0x00001110

An Animatable supporting this interface is an IKeyControl2.

◆ I_SETKEYCONTROL

#define I_SETKEYCONTROL   0x00001120

An Animatable supporting this interface is an ISetKey.

◆ I_SYSTEM_XREF

#define I_SYSTEM_XREF   0x00001130

An Animatable supporting this interface is an ISystemXRef.

◆ I_TEXTOBJECT

#define I_TEXTOBJECT   0x00001140

An Animatable supporting this interface is an ITextObject.

◆ I_WAVESOUND

#define I_WAVESOUND   0x00001150

An Animatable supporting this interface is an IWaveSound.

◆ I_SUBMTLAPI

#define I_SUBMTLAPI   0x00001160

An Animatable supporting this interface is an ISubMtlAPI.

◆ I_NEWPARTPOD

#define I_NEWPARTPOD   0x00001170

An Animatable supporting this interface is a ParticlePodObj.

◆ I_NEWPARTSOURCE

#define I_NEWPARTSOURCE   0x00001180

An Animatable supporting this interface is a BasicSourceObj.

◆ I_NEWPARTOPERATOR

#define I_NEWPARTOPERATOR   0x00001190

An Animatable supporting this interface is an IOperatorInterface.

◆ I_NEWPARTTEST

#define I_NEWPARTTEST   0x000011a0

An Animatable supporting this interface is an ITestInterface.

This is an obsolete interface.

◆ I_MESHSELECT

#define I_MESHSELECT   0x000011b0

An Animatable supporting this interface is an IMeshSelect.

◆ I_MESHSELECTDATA

#define I_MESHSELECTDATA   0x000011c0

An Animatable supporting this interface is an IMeshSelectData.

◆ I_MAXSCRIPTPLUGIN

#define I_MAXSCRIPTPLUGIN   0x000011d0

An Animatable supporting this interface is a MSPlugin.

◆ I_MESHDELTAUSER

#define I_MESHDELTAUSER   0x000011e0

An Animatable supporting this interface is a MeshDeltaUser.

◆ I_MESHDELTAUSERDATA

#define I_MESHDELTAUSERDATA   0x000011f0

An Animatable supporting this interface is a MeshDeltaUserData.

◆ I_SPLINESELECT

#define I_SPLINESELECT   0x00001200

An Animatable supporting this interface is an ISplineSelect.

◆ I_SPLINESELECTDATA

#define I_SPLINESELECTDATA   0x00001210

An Animatable supporting this interface is an ISplineSelectData.

◆ I_SPLINEOPS

#define I_SPLINEOPS   0x00001220

An Animatable supporting this interface is an ISplineOps.

◆ I_PATCHSELECT

#define I_PATCHSELECT   0x00001230

An Animatable supporting this interface is an IPatchSelect.

◆ I_PATCHSELECTDATA

#define I_PATCHSELECTDATA   0x00001240

An Animatable supporting this interface is an IPatchSelectData.

◆ I_PATCHOPS

#define I_PATCHOPS   0x00001250

An Animatable supporting this interface is an IPatchOps.

◆ I_SUBMAP

#define I_SUBMAP   0x00001260

An Animatable supporting this interface is an ISubMap.

◆ I_MITRANSLATOR

#define I_MITRANSLATOR   0x00001270

unused - interface to max connection to mental ray

◆ I_MENTALRAY

#define I_MENTALRAY   0x00001280

An Animatable supporting this interface is a mrItem*.

◆ I_NEWMTLINTERFACE

#define I_NEWMTLINTERFACE   0x00001290

An Animatable supporting this interface is an IChkMtlAPI.

◆ I_COMPONENT

#define I_COMPONENT   0x000012a0

An Animatable supporting this interface is an IComponent.

◆ I_REFARRAY

#define I_REFARRAY   0x000012b0

An Animatable supporting this interface is an IRefArray.

◆ I_LINKTMCTRL

#define I_LINKTMCTRL   0x000012c0

An Animatable supporting this interface is an Link Transform Control.

◆ I_SUBTARGETCTRL

#define I_SUBTARGETCTRL   0x000012d0

An Animatable supporting this interface is an Sub Target Control.

◆ I_REAGENT

#define I_REAGENT   0x000012e0

An Animatable supporting this interface is an IReagent.

◆ I_GEOMIMP

#define I_GEOMIMP   0x000012f0

An Animatable supporting this interface is an IGeomImp - implementaion neutral interface to geometry caches - REQUIRES RELEASE.

◆ I_AGGREGATION

#define I_AGGREGATION   0x00001300

An Animatable supporting this interface is an IAggregation.

◆ I_VALENCE

#define I_VALENCE   0x00001310

An Animatable supporting this interface is an IValence.

◆ I_GUEST

#define I_GUEST   0x00001320

An Animatable supporting this interface is an IGuest.

◆ I_HOST

#define I_HOST   0x00001330

An Animatable supporting this interface is an IHost.

◆ I_SCENEOBJECT

#define I_SCENEOBJECT   0x00001340

An Animatable supporting this interface is an Object.

◆ I_MULTITANGENT

#define I_MULTITANGENT   0x00001350

An Animatable supporting this interface is an IAdjustMultipleTangents.

◆ I_SOFTSELECT

#define I_SOFTSELECT   0x00001360

An Animatable supporting this interface is an ISoftSelect.

◆ I_UNREPLACEABLECTL

#define I_UNREPLACEABLECTL   0x00001370

An Animatable supporting this interface is an IUnReplaceableControl – used for the exposetransform controllers.

◆ I_EULERCTRL

#define I_EULERCTRL   0x00001380

An Animatable supporting this interface is an IEulerControl – used for euler controllers in order to get/set the xyz ordering.

◆ I_LOCKED

#define I_LOCKED   0x00001390

An Animatable supporting this interface is an ILockedTrack.

◆ I_LOCKED_CLIENT

#define I_LOCKED_CLIENT   0x000013a0

An Animatable supporting this interface is an ILockedTrackClient.

◆ I_OBJECTSUPERCLASS_NOT_OBJECTCLASS

#define I_OBJECTSUPERCLASS_NOT_OBJECTCLASS   0x000013b0

An Animatable supporting this interface reports a superclassid corresponding to an Object (for example, GEOMOBJECT_CLASS_ID), but creating an instance doesn't create an Object-derived object.

Instead it derives just from ReferenceTarget. Examples of this are the NURBS classes RmModel and EmExternalObject.

◆ I_COMPOSITESUBMTLAPI

#define I_COMPOSITESUBMTLAPI   0x000013c0

An Animatable supporting this interface is an ICompositeSubMtlAPI.

◆ I_MTLIDSET

#define I_MTLIDSET   0x000013d0

An Animatable supporting this interface is an IMtlIdSet.

◆ I_BUFFERABLE

#define I_BUFFERABLE   0x000013e0

An Animatable supporting this interface is an IBufferable.

◆ I_TANGENT

#define I_TANGENT   0x000013f0

An Animatable supporting this interface is an IAdjustTangents.

◆ I_USERINTERFACE

#define I_USERINTERFACE   0x0000ffff

Plug-in defined interfaces should be greater than this value.

◆ GetControlInterface

#define GetControlInterface (   anim)    ((Control*)(anim)->GetInterface(I_CONTROL))

◆ GetObjectInterface

#define GetObjectInterface (   anim)    ((BaseObject*)(anim)->GetInterface(I_BASEOBJECT))

◆ GetParticleInterface

#define GetParticleInterface (   anim)    ((ParticleObject*)(anim)->GetInterface(I_PARTICLEOBJ))

◆ GetKeyControlInterface

#define GetKeyControlInterface (   anim)    ((IKeyControl*)(anim)->GetInterface(I_KEYCONTROL))

◆ GetSetKeyControlInterface

#define GetSetKeyControlInterface (   anim)    ((ISetKey*)(anim)->GetInterface(I_SETKEYCONTROL))

◆ GetMasterController

#define GetMasterController (   anim)    ((ReferenceTarget*)(anim)->GetInterface(I_DRIVER))
Deprecated:
This has been deprecated as of 3ds Max 2022. Please use GetDriverController instead [insensitive language]

◆ GetDriverController

#define GetDriverController (   anim)    ((ReferenceTarget*)(anim)->GetInterface(I_DRIVER))

◆ GetTextObjectInterface

#define GetTextObjectInterface (   anim)    ((ITextObject*)(anim)->GetInterface(I_TEXTOBJECT))

◆ GetWaveSoundInterface

#define GetWaveSoundInterface (   anim)    ((IWaveSound*)(anim)->GetInterface(I_WAVESOUND))

◆ GetMeshSelectInterface

#define GetMeshSelectInterface (   anim)    ((IMeshSelect*)(anim)->GetInterface(I_MESHSELECT))

◆ GetMeshSelectDataInterface

#define GetMeshSelectDataInterface (   anim)    ((IMeshSelectData*)(anim)->GetInterface(I_MESHSELECTDATA))

◆ GetMeshDeltaUserInterface

#define GetMeshDeltaUserInterface (   anim)    ((MeshDeltaUser*)(anim)->GetInterface(I_MESHDELTAUSER))

◆ GetMeshDeltaUserDataInterface

#define GetMeshDeltaUserDataInterface (   anim)    ((MeshDeltaUserData*)(anim)->GetInterface(I_MESHDELTAUSERDATA))

◆ GetTangentInterface

#define GetTangentInterface (   anim)    ((IAdjustTangents*)(anim)->GetInterface(I_TANGENT))

◆ GetMultiTangentInterface

#define GetMultiTangentInterface (   anim)    ((IAdjustMultipleTangents*)(anim)->GetInterface(I_MULTITANGENT))

◆ GetSoftSelectInterface

#define GetSoftSelectInterface (   anim)    ((ISoftSelect*)(anim)->GetInterface(I_SOFTSELECT))

◆ GetLockedTrackInterface

#define GetLockedTrackInterface (   anim)    ((ILockedTrack*)(anim)->GetInterface(I_LOCKED))

◆ GetLockedTrackClientInterface

#define GetLockedTrackClientInterface (   client)    ((ILockedTrackClient*)(client)->GetInterface(I_LOCKED_CLIENT))