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
Example of using the predefined macros:
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_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_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_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_MASTER)) |
#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 | 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)) |
#define I_CONTROL 0x00001010 |
An Animatable supporting this interface is a Control.
#define I_IKCONTROL 0x00001020 |
An Animatable supporting this interface is an IIKControl.
#define I_IKCHAINCONTROL 0x00001030 |
An Animatable supporting this interface is an IIKChainControl.
#define I_WIRECONTROL 0x00001040 |
An Animatable supporting this interface is an IBaseWireControl.
#define I_SCRIPTCONTROL 0x00001050 |
An Animatable supporting this interface is an IBaseScriptControl.
#define I_MASTER 0x00001060 |
An Animatable supporting this interface is a ReferenceTarget.
#define I_EASELIST 0x00001070 |
An Animatable supporting this interface is an EaseCurveList.
#define I_MULTLIST 0x00001080 |
An Animatable supporting this interface is a MultCurveList.
#define I_BASEOBJECT 0x00001090 |
An Animatable supporting this interface is a BaseObject.
#define I_WSMOBJECT 0x000010a0 |
An Animatable supporting this interface is a WSMObject.
#define I_DERIVEDOBJECT 0x000010b0 |
An Animatable supporting this interface is an IDerivedObject.
#define I_OBJECT 0x000010c0 |
An Animatable supporting this interface is an Object.
#define I_PARTICLEOBJ 0x000010d0 |
An Animatable supporting this interface is a ParticleObject.
#define I_LIGHTOBJ 0x000010e0 |
An Animatable supporting this interface is a LightObject.
#define I_SIMPLEPARTICLEOBJ 0x000010f0 |
An Animatable supporting this interface is a SimpleParticle.
#define I_KEYCONTROL 0x00001100 |
An Animatable supporting this interface is an IKeyControl.
#define I_KEYCONTROL2 0x00001110 |
An Animatable supporting this interface is an IKeyControl2.
#define I_SETKEYCONTROL 0x00001120 |
An Animatable supporting this interface is an ISetKey.
#define I_SYSTEM_XREF 0x00001130 |
An Animatable supporting this interface is an ISystemXRef.
#define I_TEXTOBJECT 0x00001140 |
An Animatable supporting this interface is an ITextObject.
#define I_WAVESOUND 0x00001150 |
An Animatable supporting this interface is an IWaveSound.
#define I_NEWPARTPOD 0x00001170 |
An Animatable supporting this interface is a ParticlePodObj.
#define I_NEWPARTSOURCE 0x00001180 |
An Animatable supporting this interface is a BasicSourceObj.
#define I_NEWPARTOPERATOR 0x00001190 |
An Animatable supporting this interface is an IOperatorInterface.
#define I_NEWPARTTEST 0x000011a0 |
An Animatable supporting this interface is an ITestInterface.
This is an obsolete interface.
#define I_MESHSELECT 0x000011b0 |
An Animatable supporting this interface is an IMeshSelect.
#define I_MESHSELECTDATA 0x000011c0 |
An Animatable supporting this interface is an IMeshSelectData.
#define I_MAXSCRIPTPLUGIN 0x000011d0 |
An Animatable supporting this interface is a MSPlugin.
#define I_MESHDELTAUSER 0x000011e0 |
An Animatable supporting this interface is a MeshDeltaUser.
#define I_MESHDELTAUSERDATA 0x000011f0 |
An Animatable supporting this interface is a MeshDeltaUserData.
#define I_SPLINESELECT 0x00001200 |
An Animatable supporting this interface is an ISplineSelect.
#define I_SPLINESELECTDATA 0x00001210 |
An Animatable supporting this interface is an ISplineSelectData.
#define I_SPLINEOPS 0x00001220 |
An Animatable supporting this interface is an ISplineOps.
#define I_PATCHSELECT 0x00001230 |
An Animatable supporting this interface is an IPatchSelect.
#define I_PATCHSELECTDATA 0x00001240 |
An Animatable supporting this interface is an IPatchSelectData.
#define I_PATCHOPS 0x00001250 |
An Animatable supporting this interface is an IPatchOps.
#define I_SUBMAP 0x00001260 |
An Animatable supporting this interface is an ISubMap.
#define I_MITRANSLATOR 0x00001270 |
unused - interface to max connection to mental ray
#define I_MENTALRAY 0x00001280 |
An Animatable supporting this interface is a mrItem*.
#define I_NEWMTLINTERFACE 0x00001290 |
An Animatable supporting this interface is an IChkMtlAPI.
#define I_COMPONENT 0x000012a0 |
An Animatable supporting this interface is an IComponent.
#define I_REFARRAY 0x000012b0 |
An Animatable supporting this interface is an IRefArray.
#define I_LINKTMCTRL 0x000012c0 |
An Animatable supporting this interface is an Link Transform Control.
#define I_SUBTARGETCTRL 0x000012d0 |
An Animatable supporting this interface is an Sub Target Control.
#define I_REAGENT 0x000012e0 |
An Animatable supporting this interface is an IReagent.
#define I_GEOMIMP 0x000012f0 |
An Animatable supporting this interface is an IGeomImp - implementaion neutral interface to geometry caches - REQUIRES RELEASE.
#define I_AGGREGATION 0x00001300 |
An Animatable supporting this interface is an IAggregation.
#define I_VALENCE 0x00001310 |
An Animatable supporting this interface is an IValence.
#define I_GUEST 0x00001320 |
An Animatable supporting this interface is an IGuest.
#define I_HOST 0x00001330 |
An Animatable supporting this interface is an IHost.
#define I_SCENEOBJECT 0x00001340 |
An Animatable supporting this interface is an Object.
#define I_MULTITANGENT 0x00001350 |
An Animatable supporting this interface is an IAdjustMultipleTangents.
#define I_SOFTSELECT 0x00001360 |
An Animatable supporting this interface is an ISoftSelect.
#define I_UNREPLACEABLECTL 0x00001370 |
An Animatable supporting this interface is an IUnReplaceableControl – used for the exposetransform controllers.
#define I_EULERCTRL 0x00001380 |
An Animatable supporting this interface is an IEulerControl – used for euler controllers in order to get/set the xyz ordering.
#define I_LOCKED 0x00001390 |
An Animatable supporting this interface is an ILockedTrack.
#define I_LOCKED_CLIENT 0x000013a0 |
An Animatable supporting this interface is an ILockedTrackClient.
#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.
#define I_COMPOSITESUBMTLAPI 0x000013c0 |
An Animatable supporting this interface is an ICompositeSubMtlAPI.
#define I_MTLIDSET 0x000013d0 |
An Animatable supporting this interface is an IMtlIdSet.
#define I_BUFFERABLE 0x000013e0 |
An Animatable supporting this interface is an IBufferable.
#define I_USERINTERFACE 0x0000ffff |
Plug-in defined interfaces should be greater than this value.
#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_MASTER)) |
#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 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)) |