This reference page is linked to from the following overview topics: Lesson 3: the reference system, Lesson 4: Animation Controllers, Interface Querying, Incremental Improvements, Plug-in Upgrade Guide, What's New: 3ds Max 9 SDK, SuperClassID Cleanup, Overview: Class Hierarchy, Overview: Animatable Hierarchy, Reference System Best Practices, AddAppDataChunk and MAX_malloc(), RTTI and GetInterface(), Handling Requests for Interfaces, Working with Plug-ins, Plug-in Architecture, Plug-in Base Classes, Interface Querying, Accessing and Exposing Parameter Blocks, Enumerating and Exposing Assets, Custom Scene Data, Application Data, Reference Object Lifetime Management, The Undo Mechanism and Transform Controllers, Animatables and Sub-Animatables, Animatable Handles, Track View, Track View Key Operations, Building Action Tables, Parameter Editing on the Command Panel, Schematic View API, Schematic View Events, Schematic View Relationships, Mixin Interfaces, Publishing Mixin Interface on Arbitrary Classes, Extending Animatable::GetInterface(), Wrapping 3ds Max Objects, Main Physique Export API Elements, Accessing Physique Vertex Assignments, Adding the Roll-up to the Command Panel, Removing the Roll-up from the Command Panel, Inverse Kinematics, IIKChainControl, Generating Class IDs, Plug-in Identification, Creating and Destroying Plug-in Instances, Exposing Parameter Blocks to 3ds Max, Command Panel Input, Enumerating and Identifying Sub-Animatables, Sub-Object Selection, Implementing Sub-Object Selection, Writing Animation Controller Plug-ins, Making Controllers Lockable, The Enhanced 3ds Max .NET SDK, Responding to Parameter Edits.
#include <Animatable.h>
Classes |
|
class | EnumAnimList |
A callback class for enumerating
animatables. More... |
|
Public Member Functions |
|
void | SetAFlag (DWORD mask) |
Sets one or more bits in the Animatable flags. |
|
void | ClearAFlag (DWORD mask) |
Clears one or more bits in the Animatable flags. |
|
BOOL | TestAFlag (DWORD mask) |
Tests one or more bits in the Animatable flags. |
|
void | SetAFlagEx (DWORD mask) |
Sets one or more bits in the Animatable extended flags.
|
|
void | ClearAFlagEx (DWORD mask) |
Clears one or more bits in the Animatable extended flags.
|
|
BOOL | TestAFlagEx (DWORD mask) |
Tests one or more bits in the Animatable extended flags.
|
|
CoreExport bool | TestFlagBit (int index) |
Tests the specified flag bit. |
|
CoreExport void | SetFlagBit (int index, bool newValue=true) |
Sets the specified flag bit. |
|
CoreExport void | ClearFlagBit (int index) |
Clears the specified flag bit. |
|
virtual void | FreeCaches () |
virtual void | BeginEditParams (IObjParam *ip, ULONG flags, Animatable *prev=NULL) |
virtual void | EndEditParams (IObjParam *ip, ULONG flags, Animatable *next=NULL) |
virtual CoreExport void * | GetInterface (ULONG id) |
virtual CoreExport void | ReleaseInterface (ULONG id, void *i) |
virtual CoreExport BaseInterface * | GetInterface (Interface_ID id) |
virtual CoreExport int | SetProperty (ULONG id, void *data) |
virtual CoreExport void * | GetProperty (ULONG id) |
virtual int | NumSubs () |
virtual Animatable * | SubAnim (int i) |
virtual CoreExport MSTR | SubAnimName (int i) |
virtual BOOL | BypassTreeView () |
virtual BOOL | BypassTrackBar () |
virtual BOOL | BypassPropertyLevel () |
virtual BOOL | InvisibleProperty () |
virtual BOOL | AssignController (Animatable *control, int subAnim) |
virtual BOOL | CanAssignController (int subAnim) |
Return true if we can reassign the subanim
specified. |
|
virtual BOOL | CanDeleteSubAnim (int i) |
virtual void | DeleteSubAnim (int i) |
virtual DWORD | GetSubAnimCurveColor (int subNum) |
virtual int | SubNumToRefNum (int subNum) |
virtual BOOL | CanCopyAnim () |
virtual BOOL | CanMakeUnique () |
virtual int | NumChildren () |
virtual Animatable * | ChildAnim (int i) |
virtual CoreExport MSTR | NodeName () |
CoreExport int | EnumAnimTree (AnimEnum *animEnum, Animatable *client, int subNum) |
CoreExport int | HasSubElements (int type=0) |
virtual int | RenderBegin (TimeValue t, ULONG flags=0) |
virtual int | RenderEnd (TimeValue t) |
virtual void | EditTrack () |
virtual int | NumKeys () |
virtual TimeValue | GetKeyTime (int index) |
virtual int | GetKeyIndex (TimeValue t) |
virtual BOOL | GetNextKeyTime (TimeValue t, DWORD flags, TimeValue &nt) |
virtual void | CopyKeysFromTime (TimeValue src, TimeValue dst, DWORD flags) |
virtual void | DeleteKeyAtTime (TimeValue t) |
virtual BOOL | IsKeyAtTime (TimeValue t, DWORD flags) |
virtual int | GetKeyTimes (Tab< TimeValue > ×, Interval range, DWORD flags) |
virtual int | GetKeySelState (BitArray &sel, Interval range, DWORD flags) |
CoreExport void | OpenTreeEntry (int type, DWORD tv) |
CoreExport void | CloseTreeEntry (int type, DWORD tv) |
CoreExport int | IsTreeEntryOpen (int type, DWORD tv) |
CoreExport BOOL | GetSelInTrackView (DWORD tv) |
CoreExport void | SetSelInTrackView (DWORD tv, BOOL sel) |
CoreExport BOOL | InTrackViewSelSet (int which) |
CoreExport void | SetTrackViewSelSet (int which, BOOL inOut) |
virtual CoreExport Interval | GetTimeRange (DWORD flags) |
virtual void | EditTimeRange (Interval range, DWORD flags) |
virtual void | DeleteTime (Interval iv, DWORD flags) |
virtual void | ReverseTime (Interval iv, DWORD flags) |
virtual void | ScaleTime (Interval iv, float s) |
virtual void | InsertTime (TimeValue ins, TimeValue amount) |
virtual BOOL | SupportTimeOperations () |
virtual CoreExport void | MapKeys (TimeMap *map, DWORD flags) |
virtual void | DeleteKeys (DWORD flags) |
virtual void | DeleteKeyByIndex (int index) |
virtual void | SelectKeys (TrackHitTab &sel, DWORD flags) |
virtual void | SelectSubKeys (int subNum, TrackHitTab &sel, DWORD flags) |
virtual void | SelectSubCurve (int subNum, BOOL sel) |
virtual void | SelectKeyByIndex (int i, BOOL sel) |
virtual BOOL | IsKeySelected (int i) |
virtual void | FlagKey (TrackHitRecord hit) |
virtual int | GetFlagKeyIndex () |
virtual int | NumSelKeys () |
virtual void | CloneSelectedKeys (BOOL offset=FALSE) |
virtual void | AddNewKey (TimeValue t, DWORD flags) |
virtual void | MoveKeys (ParamDimensionBase *dim, float delta, DWORD flags) |
virtual void | ScaleKeyValues (ParamDimensionBase *dim, float origin, float scale, DWORD flags) |
virtual void | SelectCurve (BOOL sel) |
virtual BOOL | IsCurveSelected () |
Returns TRUE if the function curve is
selected; otherwise returns FALSE. |
|
virtual BOOL | IsSubCurveSelected (int subNum) |
Returns the selected state of the sub-curve
whose index is passed. |
|
virtual int | GetSelKeyCoords (TimeValue &t, float &val, DWORD flags) |
virtual void | SetSelKeyCoords (TimeValue t, float val, DWORD flags) |
virtual int | SetSelKeyCoordsExpr (ParamDimension *dim, MCHAR *timeExpr, MCHAR *valExpr, DWORD flags) |
virtual void | AdjustTangents (TrackHitRecord hit, ParamDimensionBase *dim, Rect &rcGraph, float tzoom, int tscroll, float vzoom, int vscroll, int dx, int dy, DWORD flags) |
virtual CoreExport BOOL | SubAnimSetKeyBufferPresent (int subNum) |
returns true if the sub-anim has a "Set Key"
buffer present |
|
virtual BOOL | SetKeyBufferPresent () |
returns true if there is a "Set Key" buffer
present |
|
virtual CoreExport void | SubAnimCommitSetKeyBuffer (TimeValue t, int subNum) |
Commit any "Set Key" buffers on the given
sub-anim. |
|
virtual void | CommitSetKeyBuffer (TimeValue t) |
Commit any "Set Key" buffers. |
|
virtual CoreExport void | SubAnimRevertSetKeyBuffer (int subNum) |
Revert any "Set Key" buffers on the given
sub-anim. |
|
virtual void | RevertSetKeyBuffer () |
Revert any "Set Key" buffers. |
|
virtual CoreExport BOOL | IsAnimated () |
virtual BOOL | CanCopyTrack (Interval iv, DWORD flags) |
virtual BOOL | CanPasteTrack (TrackClipObject *cobj, Interval iv, DWORD flags) |
virtual TrackClipObject * | CopyTrack (Interval iv, DWORD flags) |
virtual void | PasteTrack (TrackClipObject *cobj, Interval iv, DWORD flags) |
virtual BOOL | CanCopySubTrack (int subNum, Interval iv, DWORD flags) |
virtual BOOL | CanPasteSubTrack (int subNum, TrackClipObject *cobj, Interval iv, DWORD flags) |
virtual TrackClipObject * | CopySubTrack (int subNum, Interval iv, DWORD flags) |
virtual void | PasteSubTrack (int subNum, TrackClipObject *cobj, Interval iv, DWORD flags) |
virtual int | GetTrackVSpace (int lineHeight) |
virtual int | HitTestTrack (TrackHitTab &hits, Rect &rcHit, Rect &rcTrack, float zoom, int scroll, DWORD flags) |
virtual int | PaintTrack (ParamDimensionBase *dim, HDC hdc, Rect &rcTrack, Rect &rcPaint, float zoom, int scroll, DWORD flags) |
virtual int | PaintSubTrack (int subNum, ParamDimensionBase *dim, HDC hdc, Rect &rcTrack, Rect &rcPaint, float zoom, int scroll, DWORD flags) |
virtual int | PaintFCurves (ParamDimensionBase *dim, HDC hdc, Rect &rcGraph, Rect &rcPaint, float tzoom, int tscroll, float vzoom, int vscroll, DWORD flags) |
virtual int | HitTestFCurves (ParamDimensionBase *dim, TrackHitTab &hits, Rect &rcHit, Rect &rcGraph, float tzoom, int tscroll, float vzoom, int vscroll, DWORD flags) |
virtual int | PaintSubFCurves (int subNum, ParamDimensionBase *dim, HDC hdc, Rect &rcGraph, Rect &rcPaint, float tzoom, int tscroll, float vzoom, int vscroll, DWORD flags) |
virtual int | HitTestSubFCurves (int subNum, ParamDimensionBase *dim, TrackHitTab &hits, Rect &rcHit, Rect &rcGraph, float tzoom, int tscroll, float vzoom, int vscroll, DWORD flags) |
virtual void | EditTrackParams (TimeValue t, ParamDimensionBase *dim, MCHAR *pname, HWND hParent, IObjParam *ip, DWORD flags) |
virtual int | TrackParamsType () |
virtual int | GetFCurveExtents (ParamDimensionBase *dim, float &min, float &max, DWORD flags) |
This method is called to calculate the
largest and smallest values of the anim. |
|
virtual int | GetSubFCurveExtents (int subNum, ParamDimensionBase *dim, float &min, float &max, DWORD flags) |
This method is called to calculate the
largest and smallest values of the specified subanim. |
|
virtual ParamDimension * | GetParamDimension (int i) |
virtual LRESULT CALLBACK | TrackViewWinProc (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam) |
This function is obsolete. |
|
virtual BOOL | SelectSubAnim (int subNum) |
CoreExport void | AddNoteTrack (NoteTrack *note) |
CoreExport void | DeleteNoteTrack (NoteTrack *note, BOOL delNote=TRUE) |
CoreExport BOOL | HasNoteTracks () |
CoreExport int | NumNoteTracks () |
CoreExport NoteTrack * | GetNoteTrack (int i) |
virtual CoreExport void | EnumAuxFiles (AssetEnumCallback &assetEnum, DWORD flags=FILE_ENUM_ALL) |
virtual void | FreeAllBitmaps () |
virtual void | GetSystemNodes (INodeTab &nodes, SysNodeContext Context) |
virtual BOOL | IsSubClassOf (Class_ID classID) |
returns true if the animatable has
sub-classed off the given class |
|
virtual BOOL | IsRefMaker () |
Tells whether it is a
ReferenceMaker. |
|
CoreExport void | AddAppDataChunk (Class_ID cid, SClass_ID sid, DWORD sbid, DWORD len, void *data) |
Adds application/plugin specific (custom)
data to an Animatable. |
|
CoreExport AppDataChunk * | GetAppDataChunk (Class_ID cid, SClass_ID sid, DWORD sbid) |
Retrieves the application/plugin specific
(custom) data stored with an Animatable. |
|
CoreExport BOOL | RemoveAppDataChunk (Class_ID cid, SClass_ID sid, DWORD sbid) |
Deletes the application/plugin specific
(custom) data stored with an Animatable. |
|
CoreExport void | ClearAllAppData () |
Deletes all application/plugin specific
(custom) data stored with an Animatable. |
|
virtual CoreExport void | MouseCycleCompleted (TimeValue t) |
virtual CoreExport void | MouseCycleStarted (TimeValue t) |
virtual int | NumParamBlocks () |
virtual IParamBlock2 * | GetParamBlock (int i) |
virtual IParamBlock2 * | GetParamBlockByID (short id) |
CoreExport bool | SvSaveData (ISave *isave, USHORT id) |
CoreExport bool | SvLoadData (ILoad *iLoad) |
CoreExport DWORD | SvGetRefIndex () |
CoreExport void | SvSetRefIndex (DWORD i) |
CoreExport bool | SvDeleteRefIndex () |
virtual
CoreExport SvGraphNodeReference |
SvTraverseAnimGraph (IGraphObjectManager *gom, Animatable *owner, int id, DWORD flags) |
CoreExport SvGraphNodeReference | SvStdTraverseAnimGraph (IGraphObjectManager *gom, Animatable *owner, int id, DWORD flags) |
virtual CoreExport bool | SvCanInitiateLink (IGraphObjectManager *gom, IGraphNode *gNode) |
virtual CoreExport bool | SvCanConcludeLink (IGraphObjectManager *gom, IGraphNode *gNode, IGraphNode *gNodeChild) |
virtual CoreExport MSTR | SvGetName (IGraphObjectManager *gom, IGraphNode *gNode, bool isBeingEdited) |
virtual CoreExport bool | SvCanSetName (IGraphObjectManager *gom, IGraphNode *gNode) |
virtual CoreExport bool | SvSetName (IGraphObjectManager *gom, IGraphNode *gNode, MSTR &name) |
virtual CoreExport bool | SvCanRemoveThis (IGraphObjectManager *gom, IGraphNode *gNode) |
virtual CoreExport bool | SvRemoveThis (IGraphObjectManager *gom, IGraphNode *gNode) |
Called when the user deletes this object in
the schematic view... |
|
virtual CoreExport bool | SvIsSelected (IGraphObjectManager *gom, IGraphNode *gNode) |
Returns true if the object is selected in
its schematic view. |
|
virtual CoreExport bool | SvIsHighlighted (IGraphObjectManager *gom, IGraphNode *gNode) |
virtual CoreExport COLORREF | SvHighlightColor (IGraphObjectManager *gom, IGraphNode *gNode) |
virtual CoreExport COLORREF | SvGetSwatchColor (IGraphObjectManager *gom, IGraphNode *gNode) |
virtual CoreExport bool | SvIsInactive (IGraphObjectManager *gom, IGraphNode *gNode) |
virtual CoreExport bool | SvLinkChild (IGraphObjectManager *gom, IGraphNode *gNodeThis, IGraphNode *gNodeChild) |
virtual CoreExport bool | SvHandleDoubleClick (IGraphObjectManager *gom, IGraphNode *gNode) |
virtual
CoreExport MultiSelectCallback * |
SvGetMultiSelectCallback (IGraphObjectManager *gom, IGraphNode *gNode) |
virtual CoreExport bool | SvCanSelect (IGraphObjectManager *gom, IGraphNode *gNode) |
virtual CoreExport bool | SvEditProperties (IGraphObjectManager *gom, IGraphNode *gNode) |
virtual CoreExport MSTR | SvGetTip (IGraphObjectManager *gom, IGraphNode *gNode) |
virtual CoreExport MSTR | SvGetRefTip (IGraphObjectManager *gom, IGraphNode *gNode, IGraphNode *gNodeMaker) |
virtual CoreExport bool | SvCanDetach (IGraphObjectManager *gom, IGraphNode *gNode) |
virtual CoreExport bool | SvDetach (IGraphObjectManager *gom, IGraphNode *gNode) |
virtual CoreExport MSTR | SvGetRelTip (IGraphObjectManager *gom, IGraphNode *gNodeTarget, int id, IGraphNode *gNodeMaker) |
Returns a string to be displayed in the tip
window in the schematic view for a relationship from "gNodeMaker"
to "gNodeTarget"... |
|
virtual CoreExport bool | SvCanDetachRel (IGraphObjectManager *gom, IGraphNode *gNodeTarget, int id, IGraphNode *gNodeMaker) |
Returns true if this object can respond to
the SvDetachRel(...) method... |
|
virtual CoreExport bool | SvDetachRel (IGraphObjectManager *gom, IGraphNode *gNodeTarget, int id, IGraphNode *gNodeMaker) |
Detach this relationship. |
|
virtual CoreExport bool | SvHandleRelDoubleClick (IGraphObjectManager *gom, IGraphNode *gNodeTarget, int id, IGraphNode *gNodeMaker) |
Called when this relationship is
double-clicked in the schematic view... |
|
CoreExport ICustAttribContainer * | GetCustAttribContainer () |
This method returns a pointer to the custom
attributes container interface class. |
|
CoreExport void | AllocCustAttribContainer () |
This method allocates space for a custom
attributes container. |
|
CoreExport void | DeleteCustAttribContainer () |
This method deletes space used by a custom
attributes container. |
|
virtual bool | IsParamBlockDesc2Used (ParamBlockDesc2 *desc) |
Returns true if the passed description is
being used. |
|
Class identification
|
|
virtual void | GetClassName (MSTR &s) |
Retrieves the name of the plugin class.
|
|
virtual CoreExport SClass_ID | SuperClassID ()=0 |
Retrieves a constant representing the type
of the plugin. |
|
virtual CoreExport Class_ID | ClassID () |
Retrieves a constant that uniquely
identifies the plugin class. |
|
Static Public Member Functions |
|
static CoreExport AnimHandle | GetHandleByAnim (Animatable *anim) |
Get the unique handle for an Animatable object. |
|
static CoreExport Animatable * | GetAnimByHandle (AnimHandle handle) |
Get an Animatable object from its unique
handle. |
|
static CoreExport int | RequestFlagBit () |
Requests an unique flag bit index. |
|
static CoreExport void | ReleaseFlagBit (int index) |
Releases the flag bit index. |
|
static CoreExport void | ClearFlagBitInAllAnimatables (int index) |
Clears the specified flag bit in all
Animatables. |
|
static CoreExport void | EnumerateAllAnimatables (EnumAnimList &enumProcObject) |
Enumerator to enumerate across all
animatables. |
|
Protected Attributes |
|
DWORD | aflag |
AnimPropertyList | aprops |
Friends |
|
class | ISaveImp |
class | ILoadImp |
Construction, destruction of instances |
|
virtual CoreExport | ~Animatable ()=0 |
Destructor. |
|
CoreExport | Animatable () |
Constructor. |
|
virtual CoreExport void | DeleteThis () |
Deletes an instance of this class. |
virtual CoreExport ~Animatable | ( | ) | [protected, pure virtual] |
Destructor.
Instances of class Animatable and classes directly derived from it should be deleted by calling Animatable::DeleteThis() on them, rather then calling the delete operator.
CoreExport Animatable | ( | ) |
Constructor.
virtual CoreExport void DeleteThis | ( | ) | [virtual] |
Deletes an instance of this class.
3ds Max calls this method when it needs to delete a plugin object (an instance of a class derived from Animatable). Similarly, plugins that need to delete instances of an Animatable or a class directly derived from it via an Animatable pointer, should call this method instead of calling directly operator delete. Following these rules will ensure that the same memory manager is used to allocate and deallocate the object. The default implementation of this method deletes the object. Plugin instances that never need to be deleted from the heap can overwrite this method to do nothing.
Reimplemented in EaseCurveList, MultCurveList, DummyObject, SphereGizmoObject, CylGizmoObject, BoxGizmoObject, CollisionPlane, CollisionSphere, CollisionMesh, ICustAttribContainer, MtlLib, MtlBaseLib, DADBitmapCarrier, RefTargMonitorRefMaker, GizmoClass, IStdDualVS, LinearShape, Manipulator, MCDeviceBinding, DefNoteTrack, PatchObject, PolyObject, SingleRefMaker, RefMgr< T >, SimpleOSMToWSMMod, SimpleOSMToWSMMod2, SimpleShape, SimpleSpline, SingleWeakRefMaker, SplineShape, TriObject, Wrangler, MSCustAttrib, MSPluginSimpleObject, MSSimpleObjectXtnd, MSPluginSimpleManipulator, MSPluginModifier, MSModifierXtnd, MSPluginSimpleMod, MSSimpleModXtnd, MSPluginTexmap, MSTexmapXtnd, MSPluginMtl, MSMtlXtnd, MSPluginTrackViewUtility, MSPluginObject< ShapeObject >, MSPluginObject< HelperObject >, MSPluginObject< GeomObject >, MSPluginObject< GenCamera >, MSPluginObject< GenLight >, MSObjectXtnd< GenCamera, MSPluginCamera >, MSObjectXtnd< HelperObject, MSPluginHelper >, MSObjectXtnd< GeomObject, MSPluginGeomObject >, MSObjectXtnd< ShapeObject, MSPluginShape >, MSObjectXtnd< GenLight, MSPluginLight >, MSPluginSpecialFX< Effect8 >, MSPluginSpecialFX< Atmospheric >, MSSpecialFXXtnd< Effect, MSPluginEffect >, and MSSpecialFXXtnd< Atmospheric, MSPluginAtmos >.
virtual void GetClassName | ( | MSTR & | s | ) | [inline, virtual] |
Retrieves the name of the plugin class.
This name is usually used internally for debugging purposes. For Material plug-ins this method is used to put up the material "type" name in the Material Editor.
s | Reference to a string filled in with the name of the plugin class |
Reimplemented in EaseCurveList, MultCurveList, DummyObject, SphereGizmoObject, CylGizmoObject, BoxGizmoObject, Texmap, Mtl, MtlLib, MtlBaseLib, LinearShape, SimpleManipulator, PatchObject, PolyObject, ReferenceMaker, ReferenceTarget, SimpleOSMToWSMMod, SimpleOSMToWSMMod2, SimpleObject, SimpleWSMObject, SimpleParticle, SimpleShape, SimpleSpline, SplineShape, TriObject, MSCustAttrib, MSPluginSimpleObject, MSSimpleObjectXtnd, MSPluginSimpleManipulator, MSSimpleManipulatorXtnd, MSPluginModifier, MSModifierXtnd, MSPluginSimpleMod, MSSimpleModXtnd, MSPluginTexmap, MSTexmapXtnd, MSPluginMtl, MSMtlXtnd, MSPluginTrackViewUtility, PFSimpleAction, MSPluginObject< ShapeObject >, MSPluginObject< HelperObject >, MSPluginObject< GeomObject >, MSPluginObject< GenCamera >, MSPluginObject< GenLight >, MSObjectXtnd< GenCamera, MSPluginCamera >, MSObjectXtnd< HelperObject, MSPluginHelper >, MSObjectXtnd< GeomObject, MSPluginGeomObject >, MSObjectXtnd< ShapeObject, MSPluginShape >, MSObjectXtnd< GenLight, MSPluginLight >, MSPluginSpecialFX< Effect8 >, MSPluginSpecialFX< Atmospheric >, MSSpecialFXXtnd< Effect, MSPluginEffect >, and MSSpecialFXXtnd< Atmospheric, MSPluginAtmos >.
{ s = _M("Animatable"); }
virtual CoreExport SClass_ID SuperClassID | ( | ) | [pure virtual] |
Retrieves a constant representing the type of the plugin.
Implemented in EaseCurveList, MultCurveList, CustAttrib, CollisionPlane, CollisionSphere, CollisionMesh, IIndirectRefTargContainer, IKMasterControl, IKSlaveControl, ILayer, ILayerManager, Texmap, Mtl, UVGen, XYZGen, TextureOutput, MtlLib, MtlBaseLib, DADBitmapCarrier, IStdDualVS, MCDeviceBinding, NoteTrack, IMultiPassCameraEffect, CameraObject, LightObject, HelperObject, GeomObject, ShapeObject, WSMObject, Modifier, OSModifier, WSModifier, RadiosityEffect, ReferenceMaker, ReferenceTarget, SingleRefMaker, Renderer, IRenderElement, MaxBakeElement, Sampler, Atmospheric, Effect, FilterKernel, BaseShader, ShadowType, SimpleOSMToWSMMod, SimpleOSMToWSMMod2, SingleWeakRefMaker, SoundObj, ToneOperator, BaseBehavior, MSCustAttrib, MSPluginShape, MSShapeXtnd, MSPluginModifier, MSModifierXtnd, MSPluginSimpleMod, MSSimpleModXtnd, IXRefAtmospheric, and IXRefObject.
virtual CoreExport Class_ID ClassID | ( | ) | [virtual] |
Retrieves a constant that uniquely identifies the plugin class.
This method must return the unique ID for the plugin class. If two ClassIDs conflict, the system will only load the first conflicting one it finds. A program (gencid.exe) is provided to generate unique class id values.
Reimplemented in EaseCurveList, MultCurveList, DummyObject, SphereGizmoObject, CylGizmoObject, BoxGizmoObject, CollisionPlane, CollisionSphere, CollisionMesh, IIndirectRefTargContainer, IKMasterControl, IKSlaveControl, MtlBase, MtlLib, MtlBaseLib, DADBitmapCarrier, RefTargMonitorRefMaker, IStdDualVS, LinearShape, DefNoteTrack, PatchObject, PolyObject, RefMgrAddDeleteRestore< T >, RefMgr< T >, SimpleOSMToWSMMod, SimpleOSMToWSMMod2, SimpleShape, SimpleSpline, SplineShape, TriObject, MSCustAttrib, MSPluginSimpleObject, MSSimpleObjectXtnd, MSPluginSimpleManipulator, MSSimpleManipulatorXtnd, MSPluginModifier, MSModifierXtnd, MSPluginSimpleMod, MSSimpleModXtnd, MSPluginTexmap, MSTexmapXtnd, MSPluginMtl, MSMtlXtnd, MSPluginTrackViewUtility, PFSimpleAction, IXRefAtmospheric, IXRefObject, MSPluginObject< ShapeObject >, MSPluginObject< HelperObject >, MSPluginObject< GeomObject >, MSPluginObject< GenCamera >, MSPluginObject< GenLight >, MSObjectXtnd< GenCamera, MSPluginCamera >, MSObjectXtnd< HelperObject, MSPluginHelper >, MSObjectXtnd< GeomObject, MSPluginGeomObject >, MSObjectXtnd< ShapeObject, MSPluginShape >, MSObjectXtnd< GenLight, MSPluginLight >, MSPluginSpecialFX< Effect8 >, MSPluginSpecialFX< Atmospheric >, MSSpecialFXXtnd< Effect, MSPluginEffect >, and MSSpecialFXXtnd< Atmospheric, MSPluginAtmos >.
static CoreExport AnimHandle GetHandleByAnim | ( | Animatable * | anim | ) | [static] |
Get the unique handle for an Animatable object.
Every Animatable is given a handle value when allocated. The values are unique within a scene, but are not saved with the scene, and no guarantees are provided about handle values from one load to another. Handles are intended for use as sort/hash keys, when load and save are not required. They are safer than pointers, since the Animatable may be deleted, in which case the handle value is never reused for another Animatable within the current session, and searching for the Animatable via GetAnimByHandle() simply yields NULL.
anim | The Animatable object |
static CoreExport Animatable* GetAnimByHandle | ( | AnimHandle | handle | ) | [static] |
Get an Animatable object from its unique handle.
Every Animatable is given a handle value when allocated. The values are unique within a scene, but are not saved with the scene, and no guarantees are provided about handle values from one load to another. Handles are intended for use as sort/hash keys, when load and save are not required. They are safer than pointers, since the Animatable may be deleted, in which case the handle value is never reused for another Animatable within the current session, and searching for the Animatable via GetAnimByHandle() simply yields NULL.
handle | The unique handle value for the Animatable |
void SetAFlag | ( | DWORD | mask | ) | [inline] |
Sets one or more bits in the Animatable flags.
mask | The bits to turn on in the Animatable flags |
{ aflag |= mask; }
void ClearAFlag | ( | DWORD | mask | ) | [inline] |
Clears one or more bits in the Animatable flags.
mask | The bits to turn off in the Animatable flags |
{ aflag &= ~mask; }
BOOL TestAFlag | ( | DWORD | mask | ) | [inline] |
Tests one or more bits in the Animatable flags.
mask | The bits to test in the Animatable flags |
{ return (aflag & mask ? TRUE : FALSE); }
void SetAFlagEx | ( | DWORD | mask | ) | [inline] |
Sets one or more bits in the Animatable extended flags.
mask | The bits to turn on in the Animatable extended flags |
{ aflag_ex |= mask; }
void ClearAFlagEx | ( | DWORD | mask | ) | [inline] |
Clears one or more bits in the Animatable extended flags.
mask | The bits to turn off in the Animatable extended flags |
{ aflag_ex &= ~mask; }
BOOL TestAFlagEx | ( | DWORD | mask | ) | [inline] |
Tests one or more bits in the Animatable extended flags.
mask | The bits to test in the Animatable extended flags |
{
return (aflag_ex & mask ? TRUE : FALSE);
}
static CoreExport int RequestFlagBit | ( | ) | [static] |
Requests an unique flag bit index.
The flag bit index is used with the Animatable::TestFlagBit(), Animatable::SetFlagBit(), Animatable::ClearFlagBit(), and Animatable::ClearFlagBitInAllAnimatables() methods. The flag bit index must be released using the Animatable::ReleaseFlagBit() method. The intended usage of the flag bit index is in enumerations where you want to visit each Animatable only once, and the usage of the flag bit is of a temporary, short term usage. The flag bits are not saved with the Animatable, nor copied via the assign operator. The flag bits referred to for these methods are not associated with the aflag or aflag_ex data members.
static CoreExport void ReleaseFlagBit | ( | int | index | ) | [static] |
Releases the flag bit index.
index | The flag bit index to release |
CoreExport bool TestFlagBit | ( | int | index | ) |
Tests the specified flag bit.
index | The flag bit index to test |
CoreExport void SetFlagBit | ( | int | index, |
bool | newValue =
true |
||
) |
Sets the specified flag bit.
index | The flag bit index to set /*! |
newValue | The value to set the flag bit index to |
CoreExport void ClearFlagBit | ( | int | index | ) |
Clears the specified flag bit.
index | The flag bit index to clear |
static CoreExport void ClearFlagBitInAllAnimatables | ( | int | index | ) | [static] |
Clears the specified flag bit in all Animatables.
index | The flag bit index to clear |
static CoreExport void EnumerateAllAnimatables | ( | EnumAnimList & | enumProcObject | ) | [static] |
Enumerator to enumerate across all animatables.
Implemented by the System. The Animatables are enumerated in order of creation. Use Animatable::EnumAnimTree when the enumerating the Animatables based on their hierarchy is required. EnumerateAllAnimatables is designed to be safe with recursive calls to EnumerateAllAnimatables, and is designed to be safe when Animatables are added/deleted during an enumeration.
enumProcObject | - The callback object called for each animatable. |
virtual void FreeCaches | ( | ) | [inline, virtual] |
Reimplemented in LinearShape, PatchObject, PolyObject, SimpleObject, SimpleWSMObject, SimpleShape, SimpleSpline, SplineShape, TriObject, MSCustAttrib, MSSimpleObjectXtnd, MSSimpleManipulatorXtnd, MSPluginModifier, MSModifierXtnd, MSPluginSimpleMod, MSSimpleModXtnd, MSPluginTexmap, MSTexmapXtnd, MSPluginMtl, MSMtlXtnd, MSPluginTrackViewUtility, MSPluginObject< ShapeObject >, MSPluginObject< HelperObject >, MSPluginObject< GeomObject >, MSPluginObject< GenCamera >, MSPluginObject< GenLight >, MSObjectXtnd< GenCamera, MSPluginCamera >, MSObjectXtnd< HelperObject, MSPluginHelper >, MSObjectXtnd< GeomObject, MSPluginGeomObject >, MSObjectXtnd< ShapeObject, MSPluginShape >, MSObjectXtnd< GenLight, MSPluginLight >, MSPluginSpecialFX< Effect8 >, MSPluginSpecialFX< Atmospheric >, MSSpecialFXXtnd< Effect, MSPluginEffect >, and MSSpecialFXXtnd< Atmospheric, MSPluginAtmos >.
{}
virtual void BeginEditParams | ( | IObjParam * | ip, |
ULONG | flags, | ||
Animatable * | prev = NULL |
||
) | [inline, virtual] |
ip | Interface pointer. The developer can use it to call methods such as AddRollupPage(). Note that this pointer is only valid between BeginEditParams() and EndEditParams(). It should not be used outside this interval. |
flags | Describe which branch of the command panel or dialog the item
is being edited in. The following are possible values: BEGIN_EDIT_CREATE Indicates an item is being edited in the create branch. BEGIN_EDIT_MOTION Indicates a controller is being edited in the motion branch. BEGIN_EDIT_HIERARCHY Indicates a controller is being edited in the Pivot subtask of the hierarchy branch. BEGIN_EDIT_IK Indicates a controller is being edited in the IK subtask of the hierarchy branch. BEGIN_EDIT_LINKINFO Indicates a controller is being edited in the Link Info subtask of the hierarchy branch. |
prev | Pointer to an Animatable object. This parameter may be used in the motion and hierarchy branches of the command panel. This pointer allows a plug-in to look at the ClassID of the previous item that was being edited, and if it is the same as this item, to not replace the entire UI in the command panel, but simply update the values displayed in the UI fields. This prevents the UI from 'flickering' when the current item begins its edit. For example, if you are in the motion branch and are looking at an item's PRS controller values, and then select another item that is displayed with a PRS controller, the UI will not change - only the values displayed in the fields will change. If however you selected a target camera that has a lookat controller (not a PRS controller) the UI will change because a different set of parameters need to be displayed. Note that for items that are edited in the modifier branch this field can be ignored. |
Reimplemented in SphereGizmoObject, CylGizmoObject, BoxGizmoObject, IProjectionModType, GizmoClass, SimpleManipulator, IMultiPassCameraEffect, ShapeObject, PatchObject, SimpleMod, SimpleWSMMod, SimpleObject, SimpleWSMObject, SimpleOSMToWSMObject, SimpleParticle, SimpleShape, SimpleSpline, SplineShape, MSCustAttrib, MSPluginSimpleObject, MSSimpleObjectXtnd, MSPluginSimpleManipulator, MSSimpleManipulatorXtnd, MSPluginModifier, MSModifierXtnd, MSPluginSimpleMod, MSSimpleModXtnd, PFSimpleAction, MSPluginObject< ShapeObject >, MSPluginObject< HelperObject >, MSPluginObject< GeomObject >, MSPluginObject< GenCamera >, MSPluginObject< GenLight >, MSObjectXtnd< GenCamera, MSPluginCamera >, MSObjectXtnd< HelperObject, MSPluginHelper >, MSObjectXtnd< GeomObject, MSPluginGeomObject >, MSObjectXtnd< ShapeObject, MSPluginShape >, and MSObjectXtnd< GenLight, MSPluginLight >.
{}
virtual void EndEditParams | ( | IObjParam * | ip, |
ULONG | flags, | ||
Animatable * | next = NULL |
||
) | [inline, virtual] |
ip | An interface pointer. The developer may use the interface
pointer to call methods such as DeleteRollupPage(). |
flags | The following flag may be set: END_EDIT_REMOVEUI If TRUE, the item's user interface should be removed. |
next | Animatable pointer. Can be used in the motion and hierarchy branches of the command panel. It allows a plug-in to look at the ClassID of the next item that was being edited, and if it is the same as this item, to not replace the entire UI in the command panel. Note that for items that are edited in the modifier branch this field can be ignored. |
Reimplemented in SphereGizmoObject, CylGizmoObject, BoxGizmoObject, IProjectionModType, GizmoClass, SimpleManipulator, IMultiPassCameraEffect, ShapeObject, PatchObject, SimpleMod, SimpleWSMMod, SimpleObject, SimpleWSMObject, SimpleOSMToWSMObject, SimpleParticle, SimpleShape, SimpleSpline, SplineShape, MSCustAttrib, MSPluginSimpleObject, MSSimpleObjectXtnd, MSPluginSimpleManipulator, MSSimpleManipulatorXtnd, MSPluginModifier, MSModifierXtnd, MSPluginSimpleMod, MSSimpleModXtnd, PFSimpleAction, MSPluginObject< ShapeObject >, MSPluginObject< HelperObject >, MSPluginObject< GeomObject >, MSPluginObject< GenCamera >, MSPluginObject< GenLight >, MSObjectXtnd< GenCamera, MSPluginCamera >, MSObjectXtnd< HelperObject, MSPluginHelper >, MSObjectXtnd< GeomObject, MSPluginGeomObject >, MSObjectXtnd< ShapeObject, MSPluginShape >, and MSObjectXtnd< GenLight, MSPluginLight >.
{}
virtual CoreExport void* GetInterface | ( | ULONG | id | ) | [virtual] |
id | The id of the interface. |
void* Control::GetInterface(ULONG id) { if (id==I_CONTROL) { return this; } else { return Animatable::GetInterface(id); } }
Reimplemented in EaseCurveList, MultCurveList, Control, LockableStdControl, LockableControl, MtlBase, IDerivedObject, BaseObject, Object, LightObject, ShapeObject, WSMObject, PatchObject, PodObj, ReferenceMaker, ReferenceTarget, IRenderElement, MaxRenderElement, MaxBakeElement, MaxBakeElement8, MaxBakeElement10, Effect8, Shader, SimpleObject, SimpleParticle, SplineShape, TriObject, MSCustAttrib, MSPluginSimpleObject, MSSimpleObjectXtnd, MSPluginSimpleManipulator, MSSimpleManipulatorXtnd, MSPluginModifier, MSModifierXtnd, MSPluginSimpleMod, MSSimpleModXtnd, MSPluginTexmap, MSTexmapXtnd, MSPluginMtl, MSMtlXtnd, MSPluginTrackViewUtility, MSPluginObject< ShapeObject >, MSPluginObject< HelperObject >, MSPluginObject< GeomObject >, MSPluginObject< GenCamera >, MSPluginObject< GenLight >, MSObjectXtnd< GenCamera, MSPluginCamera >, MSObjectXtnd< HelperObject, MSPluginHelper >, MSObjectXtnd< GeomObject, MSPluginGeomObject >, MSObjectXtnd< ShapeObject, MSPluginShape >, MSObjectXtnd< GenLight, MSPluginLight >, MSPluginSpecialFX< Effect8 >, MSPluginSpecialFX< Atmospheric >, MSSpecialFXXtnd< Effect, MSPluginEffect >, and MSSpecialFXXtnd< Atmospheric, MSPluginAtmos >.
virtual CoreExport void ReleaseInterface | ( | ULONG | id, |
void * | i | ||
) | [virtual] |
Reimplemented in IRenderElement, MaxRenderElement, MaxBakeElement, and TriObject.
virtual CoreExport BaseInterface* GetInterface | ( | Interface_ID | id | ) | [virtual] |
id | The unique ID of the interface to get. See Class Interface_ID. |
Reimplemented from InterfaceServer.
Reimplemented in MtlBase, INode, SimpleManipulator, BaseObject, Object, LightObject, ShapeObject, ReferenceMaker, ReferenceTarget, Effect8, Shader, SimpleObject, TriObject, MSMtlXtnd, MSPluginObject< ShapeObject >, MSPluginObject< HelperObject >, MSPluginObject< GeomObject >, MSPluginObject< GenCamera >, MSPluginObject< GenLight >, MSObjectXtnd< GenCamera, MSPluginCamera >, MSObjectXtnd< HelperObject, MSPluginHelper >, MSObjectXtnd< GeomObject, MSPluginGeomObject >, MSObjectXtnd< ShapeObject, MSPluginShape >, MSObjectXtnd< GenLight, MSPluginLight >, MSPluginSpecialFX< Effect8 >, MSPluginSpecialFX< Atmospheric >, MSSpecialFXXtnd< Effect, MSPluginEffect >, and MSSpecialFXXtnd< Atmospheric, MSPluginAtmos >.
virtual CoreExport int SetProperty | ( | ULONG | id, |
void * | data | ||
) | [virtual] |
id | The id for the property. |
data | A pointer to the data to store. |
int PathPosition::SetProperty(ULONG id, void *data) { if (id==PROPID_JOINTPARAMS) { if (!data) { int index = aprops.FindProperty(id); if (index>=0) { aprops.Delete(index,1); } } else { JointParamsPath *jp = (JointParamsPath*)GetProperty(id); if (jp) { *jp = *((JointParamsPath*)data); delete (JointParamsPath*)data; } else { aprops.Append(1,(AnimProperty**)&data); } } return 1; } else if (id==PROPID_INTERPUI) { if (!data) { int index = aprops.FindProperty(id); if (index>=0) { aprops.Delete(index,1); } } else { InterpCtrlUI *ui = (InterpCtrlUI*)GetProperty(id); if (ui) { *ui = *((InterpCtrlUI*)data); } else { aprops.Append(1,(AnimProperty**)&data); } } return 1; } else { return Animatable::SetProperty(id,data); } }
Reimplemented in MtlBase, ShapeObject, and MSMtlXtnd.
virtual CoreExport void* GetProperty | ( | ULONG | id | ) | [virtual] |
id | The id of the property to retrieve. |
void* PathPosition::GetProperty(ULONG id) { if (id==PROPID_INTERPUI || id==PROPID_JOINTPARAMS) { int index = aprops.FindProperty(id); if (index>=0) { return aprops[index]; } else { return NULL; } } else { return Animatable::GetProperty(id); } }
Reimplemented in MtlBase, ShapeObject, and MSMtlXtnd.
virtual int NumSubs | ( | ) | [inline, virtual] |
Reimplemented in EaseCurveList, MultCurveList, Control, MtlLib, MtlBaseLib, GizmoClass, SimpleManipulator, ShapeObject, PatchObject, SimpleMod, SimpleWSMMod, SimpleObject, SimpleWSMObject, SimpleOSMToWSMObject, SimpleParticle, SimpleShape, SimpleSpline, SplineShape, MSCustAttrib, MSPluginSimpleObject, MSSimpleObjectXtnd, MSPluginSimpleManipulator, MSSimpleManipulatorXtnd, MSPluginModifier, MSModifierXtnd, MSPluginSimpleMod, MSSimpleModXtnd, MSPluginTexmap, MSTexmapXtnd, MSPluginMtl, MSMtlXtnd, MSPluginTrackViewUtility, MSPluginObject< ShapeObject >, MSPluginObject< HelperObject >, MSPluginObject< GeomObject >, MSPluginObject< GenCamera >, MSPluginObject< GenLight >, MSObjectXtnd< GenCamera, MSPluginCamera >, MSObjectXtnd< HelperObject, MSPluginHelper >, MSObjectXtnd< GeomObject, MSPluginGeomObject >, MSObjectXtnd< ShapeObject, MSPluginShape >, MSObjectXtnd< GenLight, MSPluginLight >, MSPluginSpecialFX< Effect8 >, MSPluginSpecialFX< Atmospheric >, MSSpecialFXXtnd< Effect, MSPluginEffect >, and MSSpecialFXXtnd< Atmospheric, MSPluginAtmos >.
{ return 0; }
virtual Animatable* SubAnim | ( | int | i | ) | [inline, virtual] |
i | This is the index of the sub-anim to return. |
Reimplemented in EaseCurveList, MultCurveList, Control, MtlLib, MtlBaseLib, GizmoClass, SimpleManipulator, ShapeObject, PatchObject, SimpleMod, SimpleMod2, SimpleWSMMod, SimpleWSMMod2, SimpleObject, SimpleWSMObject, SimpleOSMToWSMObject, SimpleParticle, SimpleShape, SimpleSpline, SplineShape, MSCustAttrib, MSPluginSimpleObject, MSSimpleObjectXtnd, MSPluginSimpleManipulator, MSSimpleManipulatorXtnd, MSPluginModifier, MSModifierXtnd, MSPluginSimpleMod, MSSimpleModXtnd, MSPluginTexmap, MSTexmapXtnd, MSPluginMtl, MSMtlXtnd, MSPluginTrackViewUtility, MSPluginObject< ShapeObject >, MSPluginObject< HelperObject >, MSPluginObject< GeomObject >, MSPluginObject< GenCamera >, MSPluginObject< GenLight >, MSObjectXtnd< GenCamera, MSPluginCamera >, MSObjectXtnd< HelperObject, MSPluginHelper >, MSObjectXtnd< GeomObject, MSPluginGeomObject >, MSObjectXtnd< ShapeObject, MSPluginShape >, MSObjectXtnd< GenLight, MSPluginLight >, MSPluginSpecialFX< Effect8 >, MSPluginSpecialFX< Atmospheric >, MSSpecialFXXtnd< Effect, MSPluginEffect >, and MSSpecialFXXtnd< Atmospheric, MSPluginAtmos >.
{ return NULL; }
virtual CoreExport MSTR SubAnimName | ( | int | i | ) | [virtual] |
i | The index of the parameter name to return |
Reimplemented in EaseCurveList, MultCurveList, Control, MtlLib, MtlBaseLib, GizmoClass, SimpleManipulator, ShapeObject, PatchObject, SimpleMod, SimpleWSMMod, SimpleObject, SimpleWSMObject, SimpleOSMToWSMObject, SimpleParticle, SimpleShape, SimpleSpline, SplineShape, MSCustAttrib, MSPluginSimpleObject, MSSimpleObjectXtnd, MSPluginSimpleManipulator, MSSimpleManipulatorXtnd, MSPluginModifier, MSModifierXtnd, MSPluginSimpleMod, MSSimpleModXtnd, MSPluginTexmap, MSTexmapXtnd, MSPluginMtl, MSMtlXtnd, MSPluginTrackViewUtility, MSPluginObject< ShapeObject >, MSPluginObject< HelperObject >, MSPluginObject< GeomObject >, MSPluginObject< GenCamera >, MSPluginObject< GenLight >, MSObjectXtnd< GenCamera, MSPluginCamera >, MSObjectXtnd< HelperObject, MSPluginHelper >, MSObjectXtnd< GeomObject, MSPluginGeomObject >, MSObjectXtnd< ShapeObject, MSPluginShape >, MSObjectXtnd< GenLight, MSPluginLight >, MSPluginSpecialFX< Effect8 >, MSPluginSpecialFX< Atmospheric >, MSSpecialFXXtnd< Effect, MSPluginEffect >, and MSSpecialFXXtnd< Atmospheric, MSPluginAtmos >.
virtual BOOL BypassTreeView | ( | ) | [inline, virtual] |
Reimplemented in EaseCurveList, MultCurveList, and LinearShape.
{ return FALSE; }
virtual BOOL BypassTrackBar | ( | ) | [inline, virtual] |
{ return BypassTreeView(); }
virtual BOOL BypassPropertyLevel | ( | ) | [inline, virtual] |
Reimplemented in BaseShader, and ShadowType.
{ return FALSE; }
virtual BOOL InvisibleProperty | ( | ) | [inline, virtual] |
{ return FALSE; }
virtual BOOL AssignController | ( | Animatable * | control, |
int | subAnim | ||
) | [inline, virtual] |
control | The controller to assign. |
subAnim | The index of the sub-anim to assign the controller to. |
Reimplemented in EaseCurveList, MultCurveList, PatchObject, SimpleMod, and SplineShape.
{ return FALSE; }
virtual BOOL CanAssignController | ( | int | subAnim | ) | [inline, virtual] |
Return true if we can reassign the subanim specified.
Implement this function to return false if we wish to prevent any subanim from being replaced. If this method returns false for any id, that subanim will not be able to be re-assigned via the UI or MaxScript controls. Note that this will not prevent re-assigning in C++ in any way (via the ReplaceReference or AssignController functions).
subAnum | - The ID of the SubAnim to check. |
{ return TRUE; }
virtual BOOL CanDeleteSubAnim | ( | int | i | ) | [inline, virtual] |
i | The zero based index of the sub-anim. |
{ return FALSE; }
virtual void DeleteSubAnim | ( | int | i | ) | [inline, virtual] |
i | The zero based index of the sub-anim. |
{}
virtual DWORD GetSubAnimCurveColor | ( | int | subNum | ) | [inline, virtual] |
subNum | The index of the sub-anim. |
{ return PAINTCURVE_GENCOLOR; }
virtual int SubNumToRefNum | ( | int | subNum | ) | [inline, virtual] |
subNum | The anim index to return the corresponding reference index of. |
Reimplemented in EaseCurveList, MultCurveList, GizmoClass, PatchObject, SimpleMod, and SplineShape.
{ return -1; }
virtual BOOL CanCopyAnim | ( | ) | [inline, virtual] |
Reimplemented in MSCustAttrib.
{ return TRUE; }
virtual BOOL CanMakeUnique | ( | ) | [inline, virtual] |
{ return TRUE; }
virtual int NumChildren | ( | ) | [inline, virtual] |
virtual Animatable* ChildAnim | ( | int | i | ) | [inline, virtual] |
virtual CoreExport MSTR NodeName | ( | ) | [virtual] |
CoreExport int EnumAnimTree | ( | AnimEnum * | animEnum, |
Animatable * | client, | ||
int | subNum | ||
) |
animEnum | The callback object, called once for each sub anim from 0 to
subNum-1. See Class AnimEnum. |
client | The client anim. This is the Animatalbe whose sub-anims are
enumerated. |
subNum | The sub-anim index of the client at which to begin the enumeration. Pass 0 to do them all. |
CoreExport int HasSubElements | ( | int | type = 0 |
) |
type | One of the following values: 0: Test for node children. 1: Test for sub-anims. |
virtual int RenderBegin | ( | TimeValue | t, |
ULONG | flags = 0 |
||
) | [inline, virtual] |
t | The time that the render is beginning. |
flags | The following flag value can be checked: RENDERBEGIN_IN_MEDIT Indicates that the render is occurring in the Material Editor. |
{ return 0; }
virtual int RenderEnd | ( | TimeValue | t | ) | [inline, virtual] |
t | The time of the last rendered frame. |
{ return 0; }
virtual void EditTrack | ( | ) | [inline, virtual] |
{ assert(0); }
virtual int NumKeys | ( | ) | [inline, virtual] |
Reimplemented in DefNoteTrack.
{ return NOT_KEYFRAMEABLE; }
virtual TimeValue GetKeyTime | ( | int | index | ) | [inline, virtual] |
index | Specifies the key whose time should be returned. |
Reimplemented in DefNoteTrack.
{ return 0; }
virtual int GetKeyIndex | ( | TimeValue | t | ) | [inline, virtual] |
t | Specifies the time at which to retrieve the key index. |
{ return -1; }
virtual BOOL GetNextKeyTime | ( | TimeValue | t, |
DWORD | flags, | ||
TimeValue & | nt | ||
) | [inline, virtual] |
t | The current time (frame slider position). |
flags | One or more of the following values: NEXTKEY_LEFT Search to the left. NEXTKEY_RIGHT Search to the right. NEXTKEY_POS Next position key. NEXTKEY_ROT Next rotation key. NEXTKEY_SCALE Next scale key. |
nt | The time of the previous or next key is returned here. |
{ return FALSE; }
virtual void CopyKeysFromTime | ( | TimeValue | src, |
TimeValue | dst, | ||
DWORD | flags | ||
) | [inline, virtual] |
src | The source time. |
dst | The destination time. |
flags | These filter flags are passed to a transform (Matrix3) controller. The TM can
decide what to do with them. They have obvious meaning for the PRS
controller. One or more of the following values: COPYKEY_POS Copy the position key. COPYKEY_ROT Copy the rotation key. COPYKEY_SCALE Copy the scale key. |
{}
virtual void DeleteKeyAtTime | ( | TimeValue | t | ) | [inline, virtual] |
t | Specifies the time to delete the key. |
{}
virtual BOOL IsKeyAtTime | ( | TimeValue | t, |
DWORD | flags | ||
) | [inline, virtual] |
t | Specifies the time to check for a key. |
flags | One or more of the following values: KEYAT_POSITION KEYAT_ROTATION KEYAT_SCALE |
{ return FALSE; }
times | The table of time values to build. See Class Tab. |
range | The range of time over which to retrieve the key times. See
Class Interval. |
flags | One of the following values: KEYAT_POSITION Return for Position keys only. KEYAT_ROTATION Return for Rotation keys only. KEYAT_SCALE Return for Scale keys only. |
{ return 0; }
sel | The bit array to update, one bit for each key within the interval range. If the key is selected, the corresponding bit should be 1, otherwise it should be 0. See Class BitArray. |
range | The range of time over which to retrieve the key selected state. See Class Interval. |
flags | One or more of the following values: KEYAT_POSITION Return for Position keys only. KEYAT_ROTATION Return for Rotation keys only. KEYAT_SCALE Return for Scale keys only. |
{ return 0; }
CoreExport void OpenTreeEntry | ( | int | type, |
DWORD | tv | ||
) |
type | This value may be either 0 or 1. If 0, the child tree is opened. If 1, the sub-anim tree is opened. |
tv | This parameter specifies which Track View(s) are altered, one bit for each Track View. The open/closed state is independent for each Track View. The low-order 16 bits represent the 16 track views. |
CoreExport void CloseTreeEntry | ( | int | type, |
DWORD | tv | ||
) |
type | This value may be either 0 or 1. If 0, the child tree is closed. If 1, the sub-anim (parameter) tree is closed. |
tv | This parameter specifies which Track View(s) are altered, one bit for each Track View. The low-order 16 bits represent the 16 track views. |
CoreExport int IsTreeEntryOpen | ( | int | type, |
DWORD | tv | ||
) |
type | This value may be either 0 or 1. If 0, the child tree is checked. If 1, the sub-anim (parameter) tree is checked. |
tv | This parameter is available in release 2.0 and later only. Specifies which Track View to check -- one bit per Track View. |
CoreExport BOOL GetSelInTrackView | ( | DWORD | tv | ) |
tv | Specifies which Track View to check -- one bit per Track View. |
CoreExport void SetSelInTrackView | ( | DWORD | tv, |
BOOL | sel | ||
) |
tv | Specifies which Track View to check -- one bit per Track View. |
sel | TRUE to select; FALSE to deselect. |
CoreExport BOOL InTrackViewSelSet | ( | int | which | ) |
which | Indicates the Track View selection set to check -- this should be >=0 and <MAX_TRACKVIEW_SELSETS |
CoreExport void SetTrackViewSelSet | ( | int | which, |
BOOL | inOut | ||
) |
which | Indicates the Track View selection set to modify -- this should
be >=0 and <MAX_TRACKVIEW_SELSETS |
inOut | TRUE for in; FALSE for out. |
virtual CoreExport Interval GetTimeRange | ( | DWORD | flags | ) | [virtual] |
flags | One or more of the following values: TIMERANGE_SELONLY The bounding interval of selected keys only. TIMERANGE_ALL Whatever the channel's time range is - usually the bounding interval of all keys. TIMERANGE_CHILDNODES The node's time range should include its child nodes. TIMERANGE_CHILDANIMS A animatable's child anim ranges should be included. |
Reimplemented in DefNoteTrack.
virtual void EditTimeRange | ( | Interval | range, |
DWORD | flags | ||
) | [inline, virtual] |
range | The new range for the anim. |
flags | EDITRANGE_LINKTOKEYS If this flag is set, the controller should re-establish the link between the start and end keys and its range. This is passed if the user presses the link to keys button in Track View. Thus, if one of the ends of the interval is at a key, link it to the key so that if the key moves, the interval moves. |
{};
virtual void DeleteTime | ( | Interval | iv, |
DWORD | flags | ||
) | [inline, virtual] |
iv | The interval of time to delete. |
flags | One or more of the following values: TIME_INCLEFT Include the left endpoint. TIME_INCRIGHT Include the right endpoint. TIME_NOSLIDE Delete any keys in the interval but don't actually remove the block of time. |
Reimplemented in DefNoteTrack.
{}
virtual void ReverseTime | ( | Interval | iv, |
DWORD | flags | ||
) | [inline, virtual] |
iv | The interval of time over which to reverse the data. |
flags | One or more of the following values: TIME_INCLEFT Include the left endpoint. TIME_INCRIGHT Include the right endpoint. |
INTERP_CONT_TEMPLATE void InterpControl<INTERP_CONT_PARAMS>::ReverseTime( Interval iv, DWORD flags ) { Interval test = TestInterval(iv,flags); int n = keys.Count(); HoldTrack(); for ( int i = 0; i < n; i++ ) { if (keys[i].TimeLocked()) continue; if ( test.InInterval(keys[i].time) ) { TimeValue delta = keys[i].time - iv.Start(); keys[i].time = iv.End()-delta; } } keys.KeysChanged(); keys.CheckForDups(); ivalid.SetEmpty(); NotifyDependents(FOREVER, PART_ALL, REFMSG_CHANGE); }
Reimplemented in DefNoteTrack.
{}
virtual void ScaleTime | ( | Interval | iv, |
float | s | ||
) | [inline, virtual] |
iv | The interval of time to scale. The origin of the scale is at iv.Start(). |
s | The scale factor for the time. |
INTERP_CONT_TEMPLATE void InterpControl<INTERP_CONT_PARAMS>::ScaleTime( Interval iv, float s) { int n = keys.Count(); TimeValue delta = int(s*float(iv.End()-iv.Start())) + iv.Start() - iv.End(); HoldTrack(); for ( int i = 0; i < n; i++ ) { if (keys[i].TimeLocked()) continue; if ( iv.InInterval(keys[i].time) ) { keys[i].time = int(s*float(keys[i].time - iv.Start())) + iv.Start(); } else if (keys[i].time > iv.End()) { keys[i].time += delta; } } keys.KeysChanged(); ivalid.SetEmpty(); NotifyDependents(FOREVER, PART_ALL, REFMSG_CHANGE); }
Reimplemented in DefNoteTrack.
{}
virtual void InsertTime | ( | TimeValue | ins, |
TimeValue | amount | ||
) | [inline, virtual] |
ins | The time to begin the insertion. |
amount | The amount of time to insert. |
Reimplemented in DefNoteTrack.
{}
virtual BOOL SupportTimeOperations | ( | ) | [inline, virtual] |
Reimplemented in DefNoteTrack.
{ return FALSE; }
virtual CoreExport void MapKeys | ( | TimeMap * | map, |
DWORD | flags | ||
) | [virtual] |
map | Point to instance of Class TimeMap. |
flags | The flags indicate the keys to operate on. One or more of the
following values: TRACK_DOSEL Selected keys only. TRACK_DOALL All the keys, ignore their selection state. TRACK_SLIDEUNSEL Slide unselected keys to the right. Keys are slid by the amount the last key was transformed. TRACK_RIGHTTOLEFT Enumerate right to left. If TRACK_SLIDEUNSEL is set, keys will slide to the left. TRACK_DOSUBANIMS Sub-Animatables keys as well. TRACK_DOCHILDNODES Child Nodes keys as well TRACK_MAPRANGE The range, if not locked to first and last key, should be mapped as well. |
INTERP_CONT_TEMPLATE void InterpControl<INTERP_CONT_PARAMS>::MapKeys(TimeMap *map,DWORD flags ) { int n = keys.Count(); BOOL changed = FALSE; if (!n) goto doneMapKeys; HoldTrack(); if (flags&TRACK_DOALL) { for (int i = 0; i < n; i++) { if (keys[i].TimeLocked()) continue; keys[i].time = map->map(keys[i].time); changed = TRUE; } } else if (flags&TRACK_DOSEL) { BOOL slide = flags&TRACK_SLIDEUNSEL; TimeValue delta = 0, prev; int start, end, inc; if (flags&TRACK_RIGHTTOLEFT) { start = n-1; end = -1; inc = -1; } else { start = 0; end = n; inc = 1; } for (int i = start; i != end; i += inc) { if (keys[i].TimeLocked()) continue; if (keys[i].TestKFlag(KEY_SELECTED)) { prev = keys[i].time; keys[i].time = map->map(keys[i].time); delta = keys[i].time - prev; changed = TRUE; } else if (slide) { keys[i].time += delta; } } } if (flags&TRACK_MAPRANGE && keys.TestTFlag(RANGE_UNLOCKED)) { TimeValue t0 = map->map(keys.range.Start()); TimeValue t1 = map->map(keys.range.End()); keys.range.Set(t0,t1); } if (changed) { keys.KeysChanged(); ivalid.SetEmpty(); NotifyDependents(FOREVER, PART_ALL, REFMSG_CHANGE); } doneMapKeys: Animatable::MapKeys(map,flags); }
Reimplemented in DefNoteTrack.
virtual void DeleteKeys | ( | DWORD | flags | ) | [inline, virtual] |
flags | One or more of the following values: TRACK_DOSEL Delete selected keys only. TRACK_DOALL Delete all keys (ignore selection state). TRACK_SLIDEUNSEL Slide unselected keys to the right. TRACK_RIGHTTOLEFT Enumerate right to left. If TRACK_SLIDEUNSEL is set, keys will slide to the left. |
Reimplemented in DefNoteTrack.
{}
virtual void DeleteKeyByIndex | ( | int | index | ) | [inline, virtual] |
index | The index of the key to delete. |
{}
virtual void SelectKeys | ( | TrackHitTab & | sel, |
DWORD | flags | ||
) | [inline, virtual] |
sel | The table of track hit records. See Class TrackHitRecord and Class
Tab. Note the following: typedef
Tab<TrackHitRecord>
TrackHitTab; |
flags | Either SELKEYS_SELECT, SELKEYS_DESELECT, or a
combination of SELKEYS_CLEARKEYS and
SELKEYS_CLEARCURVE will be specified. One or more of the following values: SELKEYS_SELECT The keys should be selected. SELKEYS_DESELECT The keys should be deselected. SELKEYS_CLEARKEYS All keys should be deselected. SELKEYS_CLEARCURVE All keys on the function curve should be deselected. SELKEYS_FCURVE Indicates that we are operating on the keys of a function curve, and not of a track. |
Reimplemented in DefNoteTrack.
{}
virtual void SelectSubKeys | ( | int | subNum, |
TrackHitTab & | sel, | ||
DWORD | flags | ||
) | [inline, virtual] |
subNum | The index of the sub-anim to select or deselect |
sel | The table of track hit records. See Class TrackHitRecord and Class
Tab. Note the following: typedef
Tab<TrackHitRecord>
TrackHitTab; |
flags | Either SELKEYS_SELECT, SELKEYS_DESELECT, or a
combination of SELKEYS_CLEARKEYS and
SELKEYS_CLEARCURVE will be specified. One or more of the following values: SELKEYS_SELECT The keys should be selected. SELKEYS_DESELECT The keys should be deselected. SELKEYS_CLEARKEYS All keys should be deselected. SELKEYS_CLEARCURVE All keys on the function curve should be deselected. SELKEYS_FCURVE Indicates that we are operating on the keys of a function curve, and not of a track. |
{}
virtual void SelectSubCurve | ( | int | subNum, |
BOOL | sel | ||
) | [inline, virtual] |
subNum | The index of the sub-anim to select or deselect |
sel | TRUE to select the curve; FALSE to deselect it. |
{}
virtual void SelectKeyByIndex | ( | int | i, |
BOOL | sel | ||
) | [inline, virtual] |
i | The key to select or deselect. |
sel | TRUE to select the key; FALSE to deselect it. |
Reimplemented in DefNoteTrack.
{}
virtual BOOL IsKeySelected | ( | int | i | ) | [inline, virtual] |
i | The index of the key to test. |
{ return FALSE; }
virtual void FlagKey | ( | TrackHitRecord | hit | ) | [inline, virtual] |
hit | The hit record that the controller gave the Track View in the first place to identify the hit. Thus this is enough information to identify the key. See Class TrackHitRecord. |
INTERP_CONT_TEMPLATE void InterpControl<INTERP_CONT_PARAMS>::FlagKey(TrackHitRecord hit) { int n = keys.Count(); for ( int i = 0; i < n; i++ ) { keys[i].ClearKFlag(KEY_FLAGGED); } assert(hit.hit>=0&&hit.hit<(DWORD)n); keys[hit.hit].SetKFlag(KEY_FLAGGED); }
Reimplemented in DefNoteTrack.
{}
virtual int GetFlagKeyIndex | ( | ) | [inline, virtual] |
INTERP_CONT_TEMPLATE int InterpControl<INTERP_CONT_PARAMS>::GetFlagKeyIndex() { int n = keys.Count(); for ( int i = 0; i < n; i++ ) { if (keys[i].TestKFlag(KEY_FLAGGED)) { return i; } } return -1; }
Reimplemented in DefNoteTrack.
{ return -1; }
virtual int NumSelKeys | ( | ) | [inline, virtual] |
Reimplemented in DefNoteTrack.
{ return 0; }
virtual void CloneSelectedKeys | ( | BOOL | offset = FALSE |
) | [inline, virtual] |
offset | If TRUE, set the new key time to be centered between the original key and the next key. |
Reimplemented in DefNoteTrack.
{}
virtual void AddNewKey | ( | TimeValue | t, |
DWORD | flags | ||
) | [inline, virtual] |
t | The time to add the key. |
flags | One or more of the following values: ADDKEY_SELECT Select the new key and deselect any other selected keys. ADDKEY_INTERP If TRUE then initialize the new key to the interpolated value at that time. If FALSE, initialize the key to the value of the previous key. |
Reimplemented in DefNoteTrack.
{}
virtual void MoveKeys | ( | ParamDimensionBase * | dim, |
float | delta, | ||
DWORD | flags | ||
) | [inline, virtual] |
dim | Used to scale the parameter's values into and out of units used in the user interface. For example, if the parameter was an angle, it would be shown in degrees, but stored in radians. Methods of this class allow the value to be converted back and forth. This is needed because the delta passed is in user interface units. Thus the selected key values need to be converted before the delta is applied. See Class ParamDimensBase. |
delta | The amount to move the keys (move the values - not the times). This is in the units of the user interface. For example, if an angle has a value in the function curve editor of 100 degrees, 100 would be passed as the delta. |
flags | Not currently used. |
INTERP_CONT_TEMPLATE void InterpControl<INTERP_CONT_PARAMS>::MoveKeys(ParamDimensionBase *dim,float delta,DWORD flags) { int n = keys.Count(); if (!n) return; float m = 1.0f; Interval valid; BOOL changed = FALSE; HoldTrack(); for (int i = 0; i < n; i++ ) { for (int j=0;j<ELS;j++) { if (keys[i].AnyElemSelected()) { m = GetMultVal(keys[i].time,valid); } if (keys[i].ElemSelected(j)) { keys[i][j] = dim->UnConvert(dim->Convert(keys[i][j]*m)+delta)/m; changed = TRUE; } } } if (changed) { // FALSE indicates that key times didn't // change so sorting isn't necessary. keys.KeysChanged(FALSE); ivalid.SetEmpty(); NotifyDependents(FOREVER, PART_ALL, REFMSG_CHANGE); } }
{}
virtual void ScaleKeyValues | ( | ParamDimensionBase * | dim, |
float | origin, | ||
float | scale, | ||
DWORD | flags | ||
) | [inline, virtual] |
dim | Used to scale the parameter's values into and out of units used in the user interface. For example, if the parameter was an angle, it would be shown in degrees, but stored in radians. Methods of this class allow the value to be converted back and forth. See Class ParamDimensBase. |
origin | The origin about which the keys are scaled. |
scale | The scale factor to apply to the key values. |
flags | Not currently used. |
INTERP_CONT_TEMPLATE void InterpControl<INTERP_CONT_PARAMS>::ScaleKeyValues(ParamDimensionBase *dim,float origin,float scale,DWORD flags) { int n = keys.Count(); if (!n) return; BOOL changed = FALSE; HoldTrack(); for (int i = 0; i < n; i++ ) { for (int j=0;j<ELS;j++) { if (keys[i].ElemSelected(j)) { keys[i][j] = dim->UnConvert(ScaleAboutOrigin(dim->Convert(keys[i][j]),origin,scale)); changed = TRUE; } } } if (changed) { keys.KeysChanged(FALSE); ivalid.SetEmpty(); NotifyDependents(FOREVER, PART_ALL, REFMSG_CHANGE); } }
{}
virtual void SelectCurve | ( | BOOL | sel | ) | [inline, virtual] |
sel | TRUE if the curve should be selected; FALSE if it should be deselected. |
{}
virtual BOOL IsCurveSelected | ( | ) | [inline, virtual] |
Returns TRUE if the function curve is selected; otherwise returns FALSE.
{ return FALSE; }
virtual BOOL IsSubCurveSelected | ( | int | subNum | ) | [inline, virtual] |
Returns the selected state of the sub-curve whose index is passed.
subNum | The index of the sub-anim |
{ return FALSE; }
virtual int GetSelKeyCoords | ( | TimeValue & | t, |
float & | val, | ||
DWORD | flags | ||
) | [inline, virtual] |
t | The time of the selected keys is returned here (if appropriate). |
val | The value of the selected keys is returned here (if appropriate). |
flags | One of the following values: KEYCOORDS_TIMEONLY Only the time t needs to be updated. KEYCOORDS_VALUEONLY Only the value val needs to be updated. |
Reimplemented in DefNoteTrack.
{
return KEYS_NONESELECTED;
}
virtual void SetSelKeyCoords | ( | TimeValue | t, |
float | val, | ||
DWORD | flags | ||
) | [inline, virtual] |
t | The time to set for the selected keys (if the flags indicate this is needed). |
val | The value to set for the selected keys (if the flags indicate this is needed). |
flags | One of the following values: KEYCOORDS_TIMEONLY Only the time needs to be updated. KEYCOORDS_VALUEONLY Only the value needs to be updated. |
Reimplemented in DefNoteTrack.
{}
virtual int SetSelKeyCoordsExpr | ( | ParamDimension * | dim, |
MCHAR * | timeExpr, | ||
MCHAR * | valExpr, | ||
DWORD | flags | ||
) | [inline, virtual] |
dim | This is used to convert the parameter value once you get it. |
timeExpr | A string containing the time expression. |
valExpr | A string containing the value expression. |
flags | One of the following values: KEYCOORDS_TIMEONLY Only the time t needs to be updated. KEYCOORDS_VALUEONLY Only the value val needs to be updated. |
INTERP_CONT_TEMPLATE int InterpControl<INTERP_CONT_PARAMS>::SetSelKeyCoordsExpr( ParamDimension *dim, MCHAR *timeExpr, MCHAR *valExpr, DWORD flags) { Expr texpr, vexpr; float vin, vout=0.0f, tfin, tfout=0.0f; if (timeExpr) { texpr.defVar(SCALAR_VAR,KEYCOORDS_TIMEVAR); if (texpr.load(timeExpr)!=EXPR_NORMAL) return KEYCOORDS_EXPR_ERROR; } if (valExpr) { vexpr.defVar(SCALAR_VAR,KEYCOORDS_VALVAR); if (vexpr.load(valExpr)!=EXPR_NORMAL) return KEYCOORDS_EXPR_ERROR; } int n = keys.Count(); if (!n) return KEYCOORDS_EXPR_OK; HoldTrack(); for (int i = 0; i < n; i++ ) { if (!(flags&KEYCOORDS_VALUEONLY)) { if (keys[i].TimeLocked()) continue; if (keys[i].TestKFlag(KEY_SELECTED)) { tfin = float(keys[i].time)/float(GetTicksPerFrame()); texpr.eval(&tfout, 1, &tfin); keys[i].time = int(tfout*GetTicksPerFrame()); } } if (!(flags&KEYCOORDS_TIMEONLY)) { for (int j=0;j<ELS;j++) { if (keys[i].ElemSelected(j)) { vin = dim->Convert(keys[i][j]); vexpr.eval(&vout, 1, &vin); keys[i][j] = dim->UnConvert(vout); } } } } keys.KeysChanged(); keys.CheckForDups(); ivalid.SetEmpty(); NotifyDependents(FOREVER, PART_ALL, REFMSG_CHANGE); return KEYCOORDS_EXPR_OK;
{
return KEYCOORDS_EXPR_UNSUPPORTED;
}
virtual void AdjustTangents | ( | TrackHitRecord | hit, |
ParamDimensionBase * | dim, | ||
Rect & | rcGraph, | ||
float | tzoom, | ||
int | tscroll, | ||
float | vzoom, | ||
int | vscroll, | ||
int | dx, | ||
int | dy, | ||
DWORD | flags | ||
) | [inline, virtual] |
hit | This identifies the handle that was selected. |
dim | The parameter dimension. See Class ParamDimensionBase. |
rcGraph | This is the rectangle of the graph viewport. |
tzoom | This is the time zoom factor. |
tscroll | This is the time scroll factor. |
vzoom | This is the value zoom factor. |
vscroll | This is the value scroll factor. |
dx | The mouse movement in screen coordinates in the x direction. |
dy | The mouse movement in screen coordinates in the y direction. |
flags | One of the following values: ADJTAN_LOCK Indicates the tangents are locked. ADJTAN_BREAK Indicates the tangents have been broken. |
{};
virtual CoreExport BOOL SubAnimSetKeyBufferPresent | ( | int | subNum | ) | [virtual] |
returns true if the sub-anim has a "Set Key" buffer present
subNum | - The index of the SubAnim to test. |
{ if (SubAnim(SubNum)) return SubAnim(subNum)->SetKeyBufferPresent(); return FALSE; }
virtual BOOL SetKeyBufferPresent | ( | ) | [inline, virtual] |
returns true if there is a "Set Key" buffer present
This method should be implemented for a keyframeable controller
to support the "Set Key" animation mode. When in the "Set Key"
mode, if the user modifies a keyframe controller the controller
should create a temporary buffer to hold the new value until the
user either commits or cancels the change.
{ return FALSE; }
virtual CoreExport void SubAnimCommitSetKeyBuffer | ( | TimeValue | t, |
int | subNum | ||
) | [virtual] |
Commit any "Set Key" buffers on the given sub-anim.
subNum | - The index of the SubAnim to commit. |
{ Animatable* anim = SubAnim(subNum); if ( anim ) anim->CommitSetKeyBuffer(t); }
virtual void CommitSetKeyBuffer | ( | TimeValue | t | ) | [inline, virtual] |
Commit any "Set Key" buffers.
This function will be called whenever the user clicks the the large "Set Keys" button. If this animatable is keyable, it should commit any temporary "Set Key" buffers to its permanent keyframe storage. For an example implementation of this method, look at samples/controllers/boolctrl.cpp
{}
virtual CoreExport void SubAnimRevertSetKeyBuffer | ( | int | subNum | ) | [virtual] |
Revert any "Set Key" buffers on the given sub-anim.
subNum | - The index of the SubAnim to revert. |
{ Animatable* anim = SubAnim(subNum); if ( anim ) anim->RevertSetKeyBuffer(t); }
virtual void RevertSetKeyBuffer | ( | ) | [inline, virtual] |
Revert any "Set Key" buffers.
If this animatable currently has a "Set Key" buffer, revert the value and remove the buffer. For an example implementation of this method, look at samples/controllers/boolctrl.cpp
{}
virtual CoreExport BOOL IsAnimated | ( | ) | [virtual] |
Reimplemented in DefNoteTrack.
virtual BOOL CanCopyTrack | ( | Interval | iv, |
DWORD | flags | ||
) | [inline, virtual] |
iv | The interval of time that would be copied. |
flags | One or more of the following values: TIME_INCLEFT Include the left endpoint. TIME_INCRIGHT Include the right endpoint. |
Reimplemented in DefNoteTrack.
{ return FALSE; }
virtual BOOL CanPasteTrack | ( | TrackClipObject * | cobj, |
Interval | iv, | ||
DWORD | flags | ||
) | [inline, virtual] |
cobj | The clipboard object that would be pasted. The item should look at the SuperClassID and Class_ID of the creator of the clip object to determine if it is a suitable object to paste. See Class TrackClipObject. |
iv | The interval of time that would be pasted. |
flags | One or more of the following values: TIME_INCLEFT Include the left endpoint. TIME_INCRIGHT Include the right endpoint. |
Reimplemented in DefNoteTrack.
{ return FALSE; }
virtual TrackClipObject* CopyTrack | ( | Interval | iv, |
DWORD | flags | ||
) | [inline, virtual] |
iv | The interval of time over which to copy the track data. |
flags | One or more of the following values: TIME_INCLEFT Include the left endpoint. TIME_INCRIGHT Include the right endpoint. |
Reimplemented in DefNoteTrack.
{ return NULL; }
virtual void PasteTrack | ( | TrackClipObject * | cobj, |
Interval | iv, | ||
DWORD | flags | ||
) | [inline, virtual] |
cobj | The data to paste. |
iv | The interval of time to paste. |
flags | One or more of the following values: TIME_INCLEFT Include the left endpoint. TIME_INCRIGHT Include the right endpoint. |
Reimplemented in DefNoteTrack.
{}
virtual BOOL CanCopySubTrack | ( | int | subNum, |
Interval | iv, | ||
DWORD | flags | ||
) | [inline, virtual] |
subNum | Specifies the sub-anim to check. |
iv | The interval of time over which to copy the track data. |
flags | One or more of the following values: TIME_INCLEFT Include the left endpoint. TIME_INCRIGHT Include the right endpoint. |
{ return FALSE; }
virtual BOOL CanPasteSubTrack | ( | int | subNum, |
TrackClipObject * | cobj, | ||
Interval | iv, | ||
DWORD | flags | ||
) | [inline, virtual] |
subNum | Specifies the sub-anim to check. |
cobj | The data to paste. |
iv | The interval of time to paste. |
flags | One or more of the following values: TIME_INCLEFT Include the left endpoint. TIME_INCRIGHT Include the right endpoint. |
{ return FALSE; }
virtual TrackClipObject* CopySubTrack | ( | int | subNum, |
Interval | iv, | ||
DWORD | flags | ||
) | [inline, virtual] |
subNum | The number of the sub-anim to copy. |
iv | The interval of time over which to copy the track data. |
flags | One or more of the following values: TIME_INCLEFT Include the left endpoint. TIME_INCRIGHT Include the right endpoint. |
{ return NULL; }
virtual void PasteSubTrack | ( | int | subNum, |
TrackClipObject * | cobj, | ||
Interval | iv, | ||
DWORD | flags | ||
) | [inline, virtual] |
subNum | The number of the sub-anim to paste. |
cobj | The data to paste. |
iv | The interval of time to paste. |
flags | One or more of the following values: TIME_INCLEFT Include the left endpoint. TIME_INCRIGHT Include the right endpoint. |
{}
virtual int GetTrackVSpace | ( | int | lineHeight | ) | [inline, virtual] |
lineHeight | The height of a single line in pixels. |
Reimplemented in DefNoteTrack.
{ return 1; }
virtual int HitTestTrack | ( | TrackHitTab & | hits, |
Rect & | rcHit, | ||
Rect & | rcTrack, | ||
float | zoom, | ||
int | scroll, | ||
DWORD | flags | ||
) | [inline, virtual] |
hits | The table of TrackHitRecords to update. Each key that lies within the hit rectangle (is hit) should be added to this table. It is up to the plug-in to define a scheme that allows it to identify its hits using the data members of Class TrackHitRecord. Also see Class Tab for methods to add to the table. |
rcHit | This is the region that was selected for hit testing. This may be a small rectangle about the mouse pick point, or a larger rectangle if the user selected by window. |
rcTrack | This is the entire rectangular region of the track. |
zoom | The is the time zoom factor. |
scroll | This is the time scroll factor. |
flags | One or more of the following value: HITTRACK_SELONLY Selected only. HITTRACK_UNSELONLY Unselected only. HITTRACK_ABORTONHIT Abort hit testing on first hit. HITCURVE_TESTTANGENTS Hit test curve tangents. |
Reimplemented in DefNoteTrack.
{ return TRACK_DORANGE; }
virtual int PaintTrack | ( | ParamDimensionBase * | dim, |
HDC | hdc, | ||
Rect & | rcTrack, | ||
Rect & | rcPaint, | ||
float | zoom, | ||
int | scroll, | ||
DWORD | flags | ||
) | [inline, virtual] |
dim | The dimension for the parameter of this track. |
hdc | The handle of the device context. |
rcTrack | The entire rectangle of the inside of the track. |
rcPaint | This is the rectangular region that needs to be repainted - the invalid region. |
zoom | The time zoom factor. |
scroll | The time scroll factor. |
flags | One or more of the following values which are filters for
controllers with more than one curve: DISPLAY_XCURVE DISPLAY_YCURVE |
Reimplemented in DefNoteTrack.
{ return TRACK_DORANGE; }
virtual int PaintSubTrack | ( | int | subNum, |
ParamDimensionBase * | dim, | ||
HDC | hdc, | ||
Rect & | rcTrack, | ||
Rect & | rcPaint, | ||
float | zoom, | ||
int | scroll, | ||
DWORD | flags | ||
) | [inline, virtual] |
subNum | Specifies the sub-anim to paint. |
dim | The dimension for the parameter of this track. |
hdc | The handle of the device context. |
rcTrack | The entire rectangle of the inside of the track. |
rcPaint | This is the rectangular region that needs to be repainted - the invalid region. |
zoom | The time zoom factor. |
scroll | The time scroll factor. |
flags | One or more of the following values which are filters for
controllers with more than one curve: DISPLAY_XCURVE DISPLAY_YCURVE DISPLAY_ZCURVE |
{return TRACK_DORANGE;}
virtual int PaintFCurves | ( | ParamDimensionBase * | dim, |
HDC | hdc, | ||
Rect & | rcGraph, | ||
Rect & | rcPaint, | ||
float | tzoom, | ||
int | tscroll, | ||
float | vzoom, | ||
int | vscroll, | ||
DWORD | flags | ||
) | [inline, virtual] |
dim | The parameter dimension. See Class ParamDimensionBase. |
hdc | The handle of the device context. |
rcGraph | The entire rectangle of the inside of the graph region. |
rcPaint | This is the rectangular region that needs to be repainted - the invalid region. |
tzoom | The time zoom factor. |
tscroll | The time scroll factor. |
vzoom | The value zoom factor. |
vscroll | The value scroll factor. |
flags | One or more of the following values which are filters for
controllers with more than one curve: PAINTCURVE_SHOWTANGENTS Show the curve tangent handles. PAINTCURVE_FROZEN Show the curve in a frozen state. DISPLAY_XCURVE DISPLAY_YCURVE DISPLAY_ZCURVE PAINTCURVE_GENCOLOR Draw the curve in its standard color. The following options are passed to float controllers indicating a sugested color for drawing: PAINTCURVE_XCOLOR Draw the curve in red. PAINTCURVE_YCOLOR Draw the curve in green. PAINTCURVE_ZCOLOR Draw the curve in blue. |
Reimplemented in Control.
{ return 0; }
virtual int HitTestFCurves | ( | ParamDimensionBase * | dim, |
TrackHitTab & | hits, | ||
Rect & | rcHit, | ||
Rect & | rcGraph, | ||
float | tzoom, | ||
int | tscroll, | ||
float | vzoom, | ||
int | vscroll, | ||
DWORD | flags | ||
) | [inline, virtual] |
dim | The parameter dimension. See Class ParamDimensionBase. |
hits | The table of TrackHitRecords to update. Each key that lies within the hit rectangle (is hit) should be added to this table. It is up to the plug-in to define a scheme that allows it to identify its hits using the data members of Class TrackHitRecord. Also see Class Tab for methods to add to the table. |
rcHit | This is the region that was selected for hit testing. This may be a small rectangle about the mouse pick point, or a larger rectangle if the user selected by window. |
rcGraph | This is the entire rectangle of the graph region. |
tzoom | This is the time zoom factor. |
tscroll | This is the time scroll factor. |
vzoom | This is the time zoom factor. |
vscroll | This is the time scroll factor. |
flags | One or more of the following values: HITTRACK_SELONLY Selected only. HITTRACK_UNSELONLY Unselected only. HITTRACK_ABORTONHIT Abort hit testing on first hit. HITCURVE_TESTTANGENTS Hit Test curve tangent handles. The following are filters for controllers with more than one curve. DISPLAY_XCURVE DISPLAY_YCURVE DISPLAY_ZCURVE |
{ return HITCURVE_NONE; }
virtual int PaintSubFCurves | ( | int | subNum, |
ParamDimensionBase * | dim, | ||
HDC | hdc, | ||
Rect & | rcGraph, | ||
Rect & | rcPaint, | ||
float | tzoom, | ||
int | tscroll, | ||
float | vzoom, | ||
int | vscroll, | ||
DWORD | flags | ||
) | [inline, virtual] |
subNum | The sub-anim number to paint. |
dim | The parameter dimension. See Class ParamDimensionBase. |
hdc | The handle of the device context. |
rcGraph | The entire rectangle of the inside of the graph region. |
rcPaint | This is the rectangular region that needs to be repainted - the invalid region. |
tzoom | The time zoom factor. |
tscroll | The time scroll factor. |
vzoom | The value zoom factor. |
vscroll | The value scroll factor. |
flags | One or more of the following values: PAINTCURVE_SHOWTANGENTS Show the curve tangent handles. PAINTCURVE_FROZEN Show the curve in a frozen state. The following values are filters for controllers with more than one curve. DISPLAY_XCURVE DISPLAY_YCURVE DISPLAY_ZCURVE PAINTCURVE_GENCOLOR Draw the curve in its standard color. The following options are passed to float controllers indicating a sugested color for drawing: PAINTCURVE_XCOLOR Draw the curve in red. PAINTCURVE_YCOLOR Draw the curve in green. PAINTCURVE_ZCOLOR Draw the curve in blue. |
{ return 0; }
virtual int HitTestSubFCurves | ( | int | subNum, |
ParamDimensionBase * | dim, | ||
TrackHitTab & | hits, | ||
Rect & | rcHit, | ||
Rect & | rcGraph, | ||
float | tzoom, | ||
int | tscroll, | ||
float | vzoom, | ||
int | vscroll, | ||
DWORD | flags | ||
) | [inline, virtual] |
subNum | The sub-anim number to hit test. |
dim | The parameter dimension. See Class ParamDimensionBase. |
hits | The table of TrackHitRecord instances to update. Each key that lies within the hit rectangle (is hit) should be added to this table. It is up to the plug-in to define a scheme that allows it to identify its hits using the data members of Class TrackHitRecord. Also see Class Tab for methods to add to the table. |
rcHit | This is the region that was selected for hit testing. This may be a small rectangle about the mouse pick point, or a larger rectangle if the user selected by window. |
rcGraph | This is the entire rectangle of the graph region. |
tzoom | This is the time zoom factor. |
tscroll | This is the time scroll factor. |
vzoom | This is the time zoom factor. |
vscroll | This is the time scroll factor. |
flags | One or more of the following values: HITTRACK_SELONLY Selected only. HITTRACK_UNSELONLY Unselected only. HITTRACK_ABORTONHIT Abort hit testing on first hit. HITCURVE_TESTTANGENTS Hit Test curve tangent handles. The follow are filters for controllers with more than one curve. (RGB controllers interpret X as red, Y as green and Z as blue.) DISPLAY_XCURVE DISPLAY_YCURVE DISPLAY_ZCURVE |
{ return HITCURVE_NONE; }
virtual void EditTrackParams | ( | TimeValue | t, |
ParamDimensionBase * | dim, | ||
MCHAR * | pname, | ||
HWND | hParent, | ||
IObjParam * | ip, | ||
DWORD | flags | ||
) | [inline, virtual] |
t | This time represents the horizontal position of where the user right clicked to bring up the modal edit track parameters dialog. See the flags below for when this parameter is valid. |
dim | The parameter dimension. See Class ParamDimensionBase. |
pname | The name of the parameter as given by the client. |
hParent | This is the parent window that should be used to create any dialogs. |
ip | An interface pointer available for calling functions in 3ds Max. |
flags | One or more of the following values: EDITTRACK_FCURVE The user is in the function curve editor. EDITTRACK_TRACK The user is in one of the track views. EDITTRACK_SCENE The user is editing a path in the scene. EDITTRACK_BUTTON The user invoked by choosing the properties button. In this case the time parameter is NOT valid. EDITTRACK_MOUSE The user invoked by right clicking with the mouse. In this case the time parameter is valid. |
Reimplemented in DefNoteTrack.
{}
virtual int TrackParamsType | ( | ) | [inline, virtual] |
Reimplemented in DefNoteTrack.
{return TRACKPARAMS_NONE;}
virtual int GetFCurveExtents | ( | ParamDimensionBase * | dim, |
float & | min, | ||
float & | max, | ||
DWORD | flags | ||
) | [inline, virtual] |
This method is called to calculate the largest and smallest values of the anim.
The values max and min should be initialized before calling this function. A plugin implementing this function should not reset the values passed - in this way if max is passed with a larger value than the curve extents calculated for the current anim, the value of max will be unchanged.
dim | - The dimension of the anim. | |
[out] | min | - The smallest value. These are in the units given by the dimension. For example, if it was an angle parameter that was displayed in degrees, the units returned through min should be in degrees as well. A class should implement this method to not reset this value |
[out] | max | - The largest value. These are in the units given by the dimension. For example, if it was an angle parameter that was displayed in degrees, the units returned through max should be in degrees as well. |
flags | - One or more of the following values which are filters for
controllers with more than one curve: DISPLAY_XCURVE DISPLAY_YCURVE DISPLAY_ZCURVE |
Reimplemented in Control.
{ return 0; }
virtual int GetSubFCurveExtents | ( | int | subNum, |
ParamDimensionBase * | dim, | ||
float & | min, | ||
float & | max, | ||
DWORD | flags | ||
) | [inline, virtual] |
This method is called to calculate the largest and smallest values of the specified subanim.
The values max and min should be initialized before calling this function. A plugin implementing this function should not reset the values passed - in this way if max is passed with a larger value than the curve extents calculated for the current anim, the value of max will be unchanged.
subNum | - The index of the SubAnim to query for curve extents | |
dim | - The dimension of the anim. | |
[out] | min | - The smallest value. These are in the units given by the dimension. For example, if it was an angle parameter that was displayed in degrees, the units returned through min should be in degrees as well. A class should implement this method to not reset this value |
[out] | max | - The largest value. These are in the units given by the dimension. For example, if it was an angle parameter that was displayed in degrees, the units returned through max should be in degrees as well. |
flags | - One or more of the following values which are filters for
controllers with more than one curve: DISPLAY_XCURVE DISPLAY_YCURVE DISPLAY_ZCURVE |
{ return 0; }
virtual ParamDimension* GetParamDimension | ( | int | i | ) | [inline, virtual] |
i | Specifies the sub-anim (parameter) to return the dimension of. |
Reimplemented in EaseCurveList, MultCurveList, and IParamBlock2.
{ return defaultDim; }
virtual LRESULT CALLBACK TrackViewWinProc | ( | HWND | hwnd, |
UINT | message, | ||
WPARAM | wParam, | ||
LPARAM | lParam | ||
) | [inline, virtual] |
This function is obsolete.
Reimplemented in DummyObject, SimpleShape, and SimpleSpline.
{ return 0;}
virtual BOOL SelectSubAnim | ( | int | subNum | ) | [inline, virtual] |
subNum | The index of the sub-anim that was clicked on. |
Reimplemented in PatchObject, and SplineShape.
{ return FALSE; }
CoreExport void AddNoteTrack | ( | NoteTrack * | note | ) |
note | The note track to add. The Note Tracks provided by 3ds Max are derived from Class DefNoteTrack (which is derived from NoteTrack). See that class for the methods and data members used to access Note Tracks. |
CoreExport void DeleteNoteTrack | ( | NoteTrack * | note, |
BOOL | delNote =
TRUE |
||
) |
note | The note track to delete. The Note Tracks provided by 3ds Max are derived from Class DefNoteTrack (which is derived from NoteTrack). See that class for the methods and data members used to access Note Tracks. |
delNote | If delNote is FALSE the note track will be removed from the anim but not deleted. |
CoreExport BOOL HasNoteTracks | ( | ) |
CoreExport int NumNoteTracks | ( | ) |
CoreExport NoteTrack* GetNoteTrack | ( | int | i | ) |
i | Specifies the note track to retrieve. |
virtual CoreExport void EnumAuxFiles | ( | AssetEnumCallback & | assetEnum, |
DWORD | flags =
FILE_ENUM_ALL |
||
) | [virtual] |
assetEnum | The callback object that may be used to record the asset. See Class AssetEnumCallback. |
flags | See Auxilliary File Enumeration Flags |
void ReferenceMaker::EnumAuxFiles(NameEnumCallback& nameEnum, DWORD flags) { if ((flags&FILE_ENUM_CHECK_AWORK1)&&TestAFlag(A_WORK1)) return; // no local aux files... // enumerate my children. Derived classes don't need to do this since they should // call EnumAuxFiles on their base class, and so will eventually end up here if (flags&FILE_ENUM_DONT_RECURSE) return; for (int i=0; i<NumRefs(); i++) { ReferenceMaker *srm = GetReference(i); if (srm) { if ((flags&FILE_ENUM_CHECK_AWORK1)&&srm->TestAFlag(A_WORK1)) continue; srm->EnumAuxFiles(nameEnum,flags); srm->SetAFlag(A_WORK1); } } // pick up base class... Animatable::EnumAuxFiles(nameEnum,flags); }
Reimplemented in MtlBase, ReferenceMaker, MSPluginTexmap, MSTexmapXtnd, MSPluginMtl, and MSMtlXtnd.
virtual void FreeAllBitmaps | ( | ) | [inline, virtual] |
{}
virtual void GetSystemNodes | ( | INodeTab & | nodes, |
SysNodeContext | Context | ||
) | [inline, virtual] |
nodes | The table of nodes that are part of the system. |
Context | This parameter is available in release 4.0 and later only. This parameter can be used to specify the context under which the "system nodes" are used. These are; kSNCClone, kSNCDelete, kSNCFileMerge, and kSNCFileSave. |
{}
virtual BOOL IsSubClassOf | ( | Class_ID | classID | ) | [inline, virtual] |
returns true if the animatable has sub-classed off the given class
If an object is a sub-class of a particular class, it will have a different ClassID() because it is a different class. This method allows an object to indicate that it is a sub-class of a particular class and therefore can be treated as one. For example, a class could be derived from TriObject. This derived class would have a different ClassID() then the TriObject's class ID however it still can be treated (cast) as a TriObject because it is derived from TriObject. Note the default implelementation: a class is considered to also be a subclass of itself.
classID | The Class_ID of the item that this class is a sub-class of. |
Reimplemented in PatchObject.
{ return (classID == ClassID()); }
virtual BOOL IsRefMaker | ( | ) | [inline, virtual] |
Tells whether it is a ReferenceMaker.
This function differentiates things sub classed from Animatable from subclasses of ReferenceMaker. The implementation of this method (in Animatable) returns FALSE and its implementation in ReferenceMaker returns TRUE.
Reimplemented in ReferenceMaker.
{ return FALSE; }
CoreExport void AddAppDataChunk | ( | Class_ID | cid, |
SClass_ID | sid, | ||
DWORD | sbid, | ||
DWORD | len, | ||
void * | data | ||
) |
Adds application/plugin specific (custom) data to an Animatable.
This method is used to add an AppDataChunk to this Animatable. The chunk is identified using the Class_ID, and SuperClassID of the owner, and an ID for sub-chunks.
cid | - The Class_ID of the owner of the chunk. |
sid | - The SuperClassID of the owner of the chunk. |
sbid | - An extra ID that lets the owner identify its sub-chunks. |
len | - The length of the data in bytes. |
data | - Pointer to the actual data. The data should be allocated on the heap by client code using MAX_malloc(). This will allow the system to free it safely (using MAX_free()). MAX_malloc() and MAX_free() are memory management routines implemented by the system. |
CoreExport AppDataChunk* GetAppDataChunk | ( | Class_ID | cid, |
SClass_ID | sid, | ||
DWORD | sbid | ||
) |
Retrieves the application/plugin specific (custom) data stored with an Animatable.
This method is used to retrieve a pointer to an AppDataChunk. The chunk is identified using the Class_ID, SuperClassID and sub-chunk ID of the owner.
cid | - The Class_ID of the owner of the chunk. |
sid | - The SuperClassID of the owner of the chunk. |
sbid | - An extra ID that lets the owner identify its sub-chunks. |
CoreExport BOOL RemoveAppDataChunk | ( | Class_ID | cid, |
SClass_ID | sid, | ||
DWORD | sbid | ||
) |
Deletes the application/plugin specific (custom) data stored with an Animatable.
This method is used to delete an AppDataChunk. The chunk is identified using the Class_ID, SuperClassID and sub-chunk ID of the owner.
cid | - The Class_ID of the owner of the chunk. |
sid | - The SuperClassID of the owner of the chunk. |
sbid | - An extra ID that lets the owner identify its sub-chunks. |
CoreExport void ClearAllAppData | ( | ) |
Deletes all application/plugin specific (custom) data stored with an Animatable.
Calling this method will remove all the AppData associated with this Animatable.
virtual CoreExport void MouseCycleCompleted | ( | TimeValue | t | ) | [virtual] |
t | The time the mouse was released. |
virtual CoreExport void MouseCycleStarted | ( | TimeValue | t | ) | [virtual] |
t | The time the mouse was first pressed. |
virtual int NumParamBlocks | ( | ) | [inline, virtual] |
Reimplemented in DynamModObject, GizmoClass, MSCustAttrib, MSPluginSimpleObject, MSSimpleObjectXtnd, MSPluginSimpleManipulator, MSSimpleManipulatorXtnd, MSPluginModifier, MSModifierXtnd, MSPluginSimpleMod, MSSimpleModXtnd, MSPluginTexmap, MSTexmapXtnd, MSPluginMtl, MSMtlXtnd, MSPluginTrackViewUtility, MSPluginObject< ShapeObject >, MSPluginObject< HelperObject >, MSPluginObject< GeomObject >, MSPluginObject< GenCamera >, MSPluginObject< GenLight >, MSObjectXtnd< GenCamera, MSPluginCamera >, MSObjectXtnd< HelperObject, MSPluginHelper >, MSObjectXtnd< GeomObject, MSPluginGeomObject >, MSObjectXtnd< ShapeObject, MSPluginShape >, MSObjectXtnd< GenLight, MSPluginLight >, MSPluginSpecialFX< Effect8 >, MSPluginSpecialFX< Atmospheric >, MSSpecialFXXtnd< Effect, MSPluginEffect >, and MSSpecialFXXtnd< Atmospheric, MSPluginAtmos >.
{ return 0; }
virtual IParamBlock2* GetParamBlock | ( | int | i | ) | [inline, virtual] |
i | The zero based index of the ParamBlock2 to return. |
Reimplemented in DynamModObject, GizmoClass, MSCustAttrib, MSPluginSimpleObject, MSSimpleObjectXtnd, MSPluginSimpleManipulator, MSSimpleManipulatorXtnd, MSPluginModifier, MSModifierXtnd, MSPluginSimpleMod, MSSimpleModXtnd, MSPluginTexmap, MSTexmapXtnd, MSPluginMtl, MSMtlXtnd, MSPluginTrackViewUtility, MSPluginObject< ShapeObject >, MSPluginObject< HelperObject >, MSPluginObject< GeomObject >, MSPluginObject< GenCamera >, MSPluginObject< GenLight >, MSObjectXtnd< GenCamera, MSPluginCamera >, MSObjectXtnd< HelperObject, MSPluginHelper >, MSObjectXtnd< GeomObject, MSPluginGeomObject >, MSObjectXtnd< ShapeObject, MSPluginShape >, MSObjectXtnd< GenLight, MSPluginLight >, MSPluginSpecialFX< Effect8 >, MSPluginSpecialFX< Atmospheric >, MSSpecialFXXtnd< Effect, MSPluginEffect >, and MSSpecialFXXtnd< Atmospheric, MSPluginAtmos >.
{ return NULL; }
virtual IParamBlock2* GetParamBlockByID | ( | short | id | ) | [inline, virtual] |
id | The BlockID of the ParamBlock2 instance. |
Reimplemented in DynamModObject, GizmoClass, MSCustAttrib, MSPluginSimpleObject, MSSimpleObjectXtnd, MSPluginSimpleManipulator, MSSimpleManipulatorXtnd, MSPluginModifier, MSModifierXtnd, MSPluginSimpleMod, MSSimpleModXtnd, MSPluginTexmap, MSTexmapXtnd, MSPluginMtl, MSMtlXtnd, MSPluginTrackViewUtility, MSPluginObject< ShapeObject >, MSPluginObject< HelperObject >, MSPluginObject< GeomObject >, MSPluginObject< GenCamera >, MSPluginObject< GenLight >, MSObjectXtnd< GenCamera, MSPluginCamera >, MSObjectXtnd< HelperObject, MSPluginHelper >, MSObjectXtnd< GeomObject, MSPluginGeomObject >, MSObjectXtnd< ShapeObject, MSPluginShape >, MSObjectXtnd< GenLight, MSPluginLight >, MSPluginSpecialFX< Effect8 >, MSPluginSpecialFX< Atmospheric >, MSSpecialFXXtnd< Effect, MSPluginEffect >, and MSSpecialFXXtnd< Atmospheric, MSPluginAtmos >.
{ return NULL; }
CoreExport bool SvSaveData | ( | ISave * | isave, |
USHORT | id | ||
) |
isave | An interface for saving data. See Class ISave. |
id | The Chunk id (choosen by the developer). |
CoreExport bool SvLoadData | ( | ILoad * | iLoad | ) |
iLoad | An interface for loading data. See Class ILoad. |
CoreExport DWORD SvGetRefIndex | ( | ) |
CoreExport void SvSetRefIndex | ( | DWORD | i | ) |
CoreExport bool SvDeleteRefIndex | ( | ) |
virtual CoreExport SvGraphNodeReference SvTraverseAnimGraph | ( | IGraphObjectManager * | gom, |
Animatable * | owner, | ||
int | id, | ||
DWORD | flags | ||
) | [virtual] |
gom | Points to the schematic view window manager. |
owner | The owning animatable. |
id | This is usually the sub-anim number (but can actually be any value the developer chooses). |
flags | See List of Schematic %View AddAnimatable Flags. |
Reimplemented in Control, CustAttrib, MtlBase, Texmap, UVGen, XYZGen, TextureOutput, Object, Modifier, SpecialFX, and SimpleWSMMod.
CoreExport SvGraphNodeReference SvStdTraverseAnimGraph | ( | IGraphObjectManager * | gom, |
Animatable * | owner, | ||
int | id, | ||
DWORD | flags | ||
) |
gom | Points to the schematic view window manager. |
owner | The owning animatable. |
id | This is usually the sub-anim number (but can actually be any value the developer chooses). |
flags | See List of Schematic %View AddAnimatable Flags. |
// A default graph traversal function which can be // called from SvTraverseAnimGraph(...) to handle // graph traversal in simple cases. Follows sub-anim // and child references... SvGraphNodeReference Animatable::SvStdTraverseAnimGraph(IGraphObjectManager *gom, Animatable *owner, int id, DWORD flags) { int i; SvGraphNodeReference nodeRef; SvGraphNodeReference childNodeRef; gom->PushLevel(this); nodeRef = gom->AddAnimatable(this, owner, id, flags); if (nodeRef.stat == SVT_PROCEED) { for (i = 0; i < NumSubs(); i++) { if (SubAnim(i)) { childNodeRef = SubAnim(i)->SvTraverseAnimGraph(gom, this, i, flags); if (childNodeRef.stat != SVT_DO_NOT_PROCEED) gom->AddReference(nodeRef.gNode, childNodeRef.gNode, REFTYPE_SUBANIM); } } } gom->PopLevel(); return nodeRef; }
virtual CoreExport bool SvCanInitiateLink | ( | IGraphObjectManager * | gom, |
IGraphNode * | gNode | ||
) | [virtual] |
gom | Points to the schematic view window manager. |
gNode | Points to this node in the schematic view. |
virtual CoreExport bool SvCanConcludeLink | ( | IGraphObjectManager * | gom, |
IGraphNode * | gNode, | ||
IGraphNode * | gNodeChild | ||
) | [virtual] |
gom | Points to the schematic view window manager. |
gNode | Points to this node in the schematic view. |
gNodeChild | Points to the child node in the schematic view. |
virtual CoreExport MSTR SvGetName | ( | IGraphObjectManager * | gom, |
IGraphNode * | gNode, | ||
bool | isBeingEdited | ||
) | [virtual] |
gom | Points to the schematic view window manager. |
gNode | Points to this node in the schematic view. |
isBeingEdited | TRUE if the item is being edited; FALSE if not. |
{ Animatable *owner; int subNum; MSTR name; owner = gNode->GetOwner(); subNum = gNode->GetID(); name = owner->SubAnimName(subNum); return name; }
Reimplemented in Control, MtlBase, UVGen, XYZGen, TextureOutput, Object, and Modifier.
virtual CoreExport bool SvCanSetName | ( | IGraphObjectManager * | gom, |
IGraphNode * | gNode | ||
) | [virtual] |
gom | Points to the schematic view window manager. |
gNode | Points to this node in the schematic view. |
virtual CoreExport bool SvSetName | ( | IGraphObjectManager * | gom, |
IGraphNode * | gNode, | ||
MSTR & | name | ||
) | [virtual] |
gom< | Points to the schematic view window manager. |
gNode | Points to this node in the schematic view. |
name | The new name to set. |
virtual CoreExport bool SvCanRemoveThis | ( | IGraphObjectManager * | gom, |
IGraphNode * | gNode | ||
) | [virtual] |
gom | Points to the schematic view window manager. |
gNode | Points to this node in the schematic view. |
Reimplemented in Modifier.
virtual CoreExport bool SvRemoveThis | ( | IGraphObjectManager * | gom, |
IGraphNode * | gNode | ||
) | [virtual] |
Called when the user deletes this object in the schematic view...
gom | Points to the schematic view window manager. |
gNode | Points to this node in the schematic view. |
Reimplemented in Modifier.
virtual CoreExport bool SvIsSelected | ( | IGraphObjectManager * | gom, |
IGraphNode * | gNode | ||
) | [virtual] |
Returns true if the object is selected in its schematic view.
virtual CoreExport bool SvIsHighlighted | ( | IGraphObjectManager * | gom, |
IGraphNode * | gNode | ||
) | [virtual] |
gom | Points to the schematic view window manager. |
gNode | Points to this node in the schematic view. |
virtual CoreExport COLORREF SvHighlightColor | ( | IGraphObjectManager * | gom, |
IGraphNode * | gNode | ||
) | [virtual] |
gom | Points to the schematic view window manager. |
gNode | Points to this node in the schematic view. |
virtual CoreExport COLORREF SvGetSwatchColor | ( | IGraphObjectManager * | gom, |
IGraphNode * | gNode | ||
) | [virtual] |
gom | Points to the schematic view window manager. |
gNode | Points to this node in the schematic view. |
virtual CoreExport bool SvIsInactive | ( | IGraphObjectManager * | gom, |
IGraphNode * | gNode | ||
) | [virtual] |
gom | Points to the schematic view window manager. |
gNode | Points to this node in the schematic view. |
virtual CoreExport bool SvLinkChild | ( | IGraphObjectManager * | gom, |
IGraphNode * | gNodeThis, | ||
IGraphNode * | gNodeChild | ||
) | [virtual] |
gom | Points to the schematic view window manager. |
gNodeThis | Points to this node in the schematic view. |
gNodeChild | Points to the child node in the schematic view. |
virtual CoreExport bool SvHandleDoubleClick | ( | IGraphObjectManager * | gom, |
IGraphNode * | gNode | ||
) | [virtual] |
gom | Points to the schematic view window manager. |
gNode | Points to the node in the schematic view. |
virtual CoreExport MultiSelectCallback* SvGetMultiSelectCallback | ( | IGraphObjectManager * | gom, |
IGraphNode * | gNode | ||
) | [virtual] |
gom | Points to the schematic view window manager. |
gNode | Points to the node in the schematic view. |
virtual CoreExport bool SvCanSelect | ( | IGraphObjectManager * | gom, |
IGraphNode * | gNode | ||
) | [virtual] |
gom | Points to the schematic view window manager. |
gNode | Points to the node in the schematic view. |
virtual CoreExport bool SvEditProperties | ( | IGraphObjectManager * | gom, |
IGraphNode * | gNode | ||
) | [virtual] |
Reimplemented in Control.
virtual CoreExport MSTR SvGetTip | ( | IGraphObjectManager * | gom, |
IGraphNode * | gNode | ||
) | [virtual] |
gom | Points to the schematic view window manager. |
gNode | Points to the node in the schematic view. |
virtual CoreExport MSTR SvGetRefTip | ( | IGraphObjectManager * | gom, |
IGraphNode * | gNode, | ||
IGraphNode * | gNodeMaker | ||
) | [virtual] |
gom | Points to the schematic view window manager. |
gNode | Points to the node in the schematic view. |
gNodeMaker | Points to the Maker node in the schematic view. |
{ return gNodeMaker->GetAnim()->SvGetName(gom, gNodeMaker, false) + " -> " + SvGetName(gom, gNode, false); }
virtual CoreExport bool SvCanDetach | ( | IGraphObjectManager * | gom, |
IGraphNode * | gNode | ||
) | [virtual] |
gom | Points to the schematic view window manager. |
gNode | Points to the node in the schematic view. |
virtual CoreExport bool SvDetach | ( | IGraphObjectManager * | gom, |
IGraphNode * | gNode | ||
) | [virtual] |
gom | Points to the schematic view window manager. |
gNode | Points to the node in the schematic view. |
virtual CoreExport MSTR SvGetRelTip | ( | IGraphObjectManager * | gom, |
IGraphNode * | gNodeTarget, | ||
int | id, | ||
IGraphNode * | gNodeMaker | ||
) | [virtual] |
Returns a string to be displayed in the tip window in the schematic view for a relationship from "gNodeMaker" to "gNodeTarget"...
gom | Points to the schematic view window manager. |
gNodeTarget | the IGraphNode that represents the target of the relationship. |
id | The value passed as the IGraphObjectManager::AddRelationship ID parameter. Usually the subanim number. |
gNodeMaker | The IGraphNode that represents the maker of the relationship (the animatable being called) |
{ return SvGetName(gom, gNodeMaker, false) + " -> " + gNodeTarget->GetAnim()->SvGetName(gom, gNodeTarget, false); }
virtual CoreExport bool SvCanDetachRel | ( | IGraphObjectManager * | gom, |
IGraphNode * | gNodeTarget, | ||
int | id, | ||
IGraphNode * | gNodeMaker | ||
) | [virtual] |
Returns true if this object can respond to the SvDetachRel(...) method...
gom | Points to the schematic view window manager. |
gNodeTarget | the IGraphNode that represents the target of the relationship. |
id | The value passed as the IGraphObjectManager::AddRelationship ID parameter. Usually the subanim number. |
gNodeMaker | The IGraphNode that represents the maker of the relationship (the animatable being called) |
{ return false; }
virtual CoreExport bool SvDetachRel | ( | IGraphObjectManager * | gom, |
IGraphNode * | gNodeTarget, | ||
int | id, | ||
IGraphNode * | gNodeMaker | ||
) | [virtual] |
Detach this relationship.
gNodeMaker is called to detach gNodeTarget
gom | Points to the schematic view window manager. |
gNodeTarget | the IGraphNode that represents the target of the relationship. |
id | The value passed as the IGraphObjectManager::AddRelationship ID parameter. Usually the subanim number. |
gNodeMaker | The IGraphNode that represents the maker of the relationship (the animatable being called) |
{ return false; }
virtual CoreExport bool SvHandleRelDoubleClick | ( | IGraphObjectManager * | gom, |
IGraphNode * | gNodeTarget, | ||
int | id, | ||
IGraphNode * | gNodeMaker | ||
) | [virtual] |
Called when this relationship is double-clicked in the schematic view...
gom | Points to the schematic view window manager. |
gNodeTarget | the IGraphNode that represents the target of the relationship. |
id | The value passed as the IGraphObjectManager::AddRelationship ID parameter. Usually the subanim number. |
gNodeMaker | The IGraphNode that represents the maker of the relationship (the animatable being called) |
{ return false; }
CoreExport ICustAttribContainer* GetCustAttribContainer | ( | ) |
This method returns a pointer to the custom attributes container interface class.
See Class ICustAttribContainer for more information.
CoreExport void AllocCustAttribContainer | ( | ) |
This method allocates space for a custom attributes container.
CoreExport void DeleteCustAttribContainer | ( | ) |
This method deletes space used by a custom attributes container.
virtual bool IsParamBlockDesc2Used | ( | ParamBlockDesc2 * | desc | ) | [inline, virtual] |
Returns true if the passed description is being used.
When plugins use a dynamic Paramblock2 system, and build a
ParamBlockDesc2 on demand, the
list maintained by the
ClassDesc may not reflect the active configuration in the
plugin. This method lets the system filter the list maintained by
asking the plugin (such as the DxMaterial) whether the current
ParamBlockDesc2 is currently
used by the plugin. Anybody querying the
ClassDesc for the ParamBlockDesc2 needs to make
sure that the descriptor is currently being used by the
plugin.
This mostly goes for maxscript.
desc | The description to test |
{ return false; }
{ return true; }
friend class ISaveImp
[friend] |
friend class ILoadImp
[friend] |
Reimplemented in ReferenceMaker.
DWORD aflag
[protected] |
AnimPropertyList aprops
[protected] |