#include <ref.h>
A scene entity that is being owned and listened to by other scene entities.
ReferenceTarget is the base class for scene entities that allow to be referenced by instances of class ReferenceMaker. Most plugins are derived from this class.
This class exposes methods for sending notification messages to its dependent ReferenceMaker objects, enumerating their dependents, etc.
Note that RefTargetHandle is a typename for pointers to an object of type ReferenceTarget.
Public Member Functions | |
virtual CoreExport void | GetClassName (MSTR &s) |
Retrieves the (localizable) name of the plugin class. More... | |
virtual CoreExport SClass_ID | SuperClassID () |
Retrieves a constant representing the type of the plugin. More... | |
Testing for Class / Cyclic References/ Dependencies | |
virtual BOOL | IsRefTarget () |
Checks if this is a ReferenceTarget. More... | |
CoreExport RefResult | TestForLoop (const Interval &refInterval, RefMakerHandle hmaker) |
Tests for a cyclical reference. More... | |
CoreExport BOOL | HasDependents () |
Checks if a ReferenceTarget has references. More... | |
CoreExport BOOL | HasRealDependents () |
Checks if this has Real (Strong) Dependents. More... | |
void | BeginDependencyTest () |
Starts Dependency Test. More... | |
BOOL | EndDependencyTest () |
Ends Dependency Test. More... | |
Adding / Deleting / Transferring References | |
virtual void | RefAdded (RefMakerHandle rm) |
Called after a reference is made to a target. More... | |
virtual void | RefAddedUndoRedo (RefMakerHandle rm) |
Called after a reference is made to a target because of undo or redo. More... | |
virtual void | RefDeleted () |
Called after a references to this is deleted. More... | |
virtual void | RefDeletedUndoRedo () |
Called after a references to this is deleted because of undo or redo. More... | |
CoreExport RefResult | DeleteAllRefsToMe () |
Deletes all references to this ReferenceTarget. More... | |
CoreExport RefResult | TransferReferences (RefTargetHandle oldTarget, BOOL delOld=FALSE) |
Transfers all the references from oldTarget to this. More... | |
Dependent Enumeration | |
CoreExport int | DoEnumDependents (DependentEnumProc *dep) |
Begins an enumeration that searches back in the dependency network. More... | |
virtual CoreExport RefTargetHandle | Clone (RemapDir &remap) |
This method is used by 3ds Max to clone an object. More... | |
virtual CoreExport void | BaseClone (ReferenceTarget *from, ReferenceTarget *to, RemapDir &remap) |
This method copies base class data from an object to its clone. More... | |
Dependent Notification | |
virtual CoreExport RefResult | NotifyDependents (const Interval &changeInt, PartID partID, RefMessage message, SClass_ID sclass=NOTIFY_ALL, BOOL propagate=TRUE, RefTargetHandle hTarg=NULL, NotifyDependentsOption notifyDependentsOption=REFNOTIFY_ALLOW_OPTIMIZATIONS) |
Notify all dependent RefMakers concerned with the message. More... | |
void | FlagDependents (TimeValue t, PartID which=PART_PUT_IN_FG) |
This sends the REFMSG_FLAGDEPENDENTS message up the pipeline. More... | |
virtual void | NotifyForeground (TimeValue t) |
This method is called to flag dependents into the FG. More... | |
virtual void | NotifyTarget (int message, ReferenceMaker *hMaker) |
Sends messages to ReferenceTargets. More... | |
Methods introduced in 3DS Max version 4.2 | |
virtual CoreExport void * | GetInterface (ULONG id) |
Inherited from Animatable. More... | |
virtual CoreExport BaseInterface * | GetInterface (Interface_ID id) |
Inherited from Animatable. More... | |
Public Member Functions inherited from ReferenceMaker | |
CoreExport RefResult | ReplaceReference (int which, RefTargetHandle newtarg, BOOL delOld=TRUE) |
Used when cloning reference makers. More... | |
CoreExport RefResult | DeleteAllRefsFromMe () |
Deletes all references from this ReferenceMaker. More... | |
CoreExport RefResult | DeleteAllRefs () |
Deletes all references both to and from this item. More... | |
CoreExport RefResult | DeleteReference (int i) |
Deletes the specified reference. More... | |
virtual BOOL | CanTransferReference (int i) |
Tells whether this reference can be transfered. More... | |
CoreExport ReferenceSaveManager & | GetReferenceSaveManager () |
Access the ReferenceSaveManager of this ReferenceMaker. More... | |
virtual CoreExport IOResult | Save (ISave *isave) |
Called for saving data. More... | |
virtual CoreExport IOResult | Load (ILoad *iload) |
Called for loading data. More... | |
virtual int | RemapRefOnLoad (int iref) |
Used to load old files with references. More... | |
virtual CoreExport void | RescaleWorldUnits (float f) |
Rescale size of all world units in reference hierarchy. More... | |
virtual CoreExport void | EnumAuxFiles (AssetEnumCallback &assetEnum, DWORD flags) |
Enumerate auxiliary files (e.g. bitmaps) More... | |
virtual CoreExport void | SaveEnum (SaveEnumProc &sep, BOOL isNodeCall=0) |
The default save enumeration. More... | |
virtual CoreExport bool | SpecifySaveReferences (ReferenceSaveManager &referenceSaveManager) |
Used to specify reference slot remapping during scene file save. More... | |
CoreExport int | DoEnumDependents (DependentEnumProc *dep) |
Begins an enumeration that searches back in the dependency network. More... | |
CoreExport bool | EnumRefHierarchy (RefEnumProc &proc, bool includeCustAttribs=true, bool includeIndirectRefs=true, bool includeNonPersistentRefs=true, bool preventDuplicatesViaFlag=true) |
This method provides a general purpose reference enumerator. More... | |
CoreExport int | FindRef (RefTargetHandle rtarg) |
Get the index of the ReferenceTarget. More... | |
virtual BOOL | IsRefMaker () |
Tells whether it is a ReferenceMaker. More... | |
virtual BOOL | IsRealDependency (ReferenceTarget *rtarg) |
Returns whether this is a "real" (strong) dependency or not. More... | |
virtual BOOL | ShouldPersistWeakRef (RefTargetHandle rtarg) |
Specifies whether a weak reference is to be persisted on a partial load or save. More... | |
CoreExport | ReferenceMaker () |
Constructor. More... | |
CoreExport void | DeleteMe () |
Deletes an instance of this class. More... | |
virtual CoreExport int | NumRefs () |
Returns the total number of references this ReferenceMaker can hold. More... | |
virtual CoreExport RefTargetHandle | GetReference (int i) |
Returns the 'i-th' reference. More... | |
Public Member Functions inherited from Animatable | |
virtual void | FreeCaches () |
virtual int | NumChildren () |
virtual Animatable * | ChildAnim (int i) |
virtual CoreExport MSTR | NodeName () |
virtual void | EditTrack () |
virtual CoreExport BOOL | SubAnimSetKeyBufferPresent (int subNum) |
returns true if the sub-anim has a "Set Key" buffer present More... | |
virtual BOOL | SetKeyBufferPresent () |
returns true if there is a "Set Key" buffer present More... | |
virtual CoreExport void | SubAnimCommitSetKeyBuffer (TimeValue t, int subNum) |
Commit any "Set Key" buffers on the given sub-anim. More... | |
virtual void | CommitSetKeyBuffer (TimeValue t) |
Commit any "Set Key" buffers. More... | |
virtual CoreExport void | SubAnimRevertSetKeyBuffer (int subNum) |
Revert any "Set Key" buffers on the given sub-anim. More... | |
virtual void | RevertSetKeyBuffer () |
Revert any "Set Key" buffers. More... | |
virtual LRESULT CALLBACK | TrackViewWinProc (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam) |
This function is obsolete. More... | |
virtual bool | IsParamBlockDesc2Used (ParamBlockDesc2 *desc) |
Returns true if the passed description is being used. More... | |
virtual bool | GetMacroRecorderName (bool used_as_rhs_value, MSTR &objectSpecifiedName) |
This method is called to access the object specified name to use for the Maxscript macrorecorder. More... | |
CoreExport | Animatable () |
Constructor. More... | |
virtual CoreExport void | DeleteThis () |
Deletes an instance of this class. More... | |
MSTR | ClassName () const |
Returns the name of the plugin class. More... | |
virtual CoreExport Class_ID | ClassID () |
Retrieves a constant that uniquely identifies the plugin class. More... | |
virtual void | BeginEditParams (IObjParam *ip, ULONG flags, Animatable *prev=NULL) |
virtual void | EndEditParams (IObjParam *ip, ULONG flags, Animatable *next=NULL) |
virtual CoreExport void | ReleaseInterface (ULONG id, void *i) |
virtual CoreExport int | SetProperty (ULONG id, void *data) |
virtual CoreExport void * | GetProperty (ULONG id) |
CoreExport void | AppendProperty (AnimProperty *prop) |
A function to directly add arbitrary properties to this object developers should ensure that the properties ID does not conflict with any Max-specific IDs. More... | |
CoreExport AnimProperty * | FindProperty (DWORD id) |
Find any property. More... | |
CoreExport void | AddAppDataChunk (const Class_ID &cid, SClass_ID sid, DWORD sbid, DWORD len, void *data) |
Adds application/plugin specific (custom) data to an Animatable. More... | |
CoreExport AppDataChunk * | GetAppDataChunk (const Class_ID &cid, SClass_ID sid, DWORD sbid) |
Retrieves the application/plugin specific (custom) data stored with an Animatable. More... | |
CoreExport BOOL | RemoveAppDataChunk (const Class_ID &cid, SClass_ID sid, DWORD sbid) |
Deletes the application/plugin specific (custom) data stored with an Animatable. More... | |
CoreExport void | ClearAllAppData () |
Deletes all application/plugin specific (custom) data stored with an Animatable. More... | |
virtual int | NumSubs () |
virtual Animatable * | SubAnim (int i) |
virtual CoreExport MSTR | SubAnimName (int i) |
virtual BOOL | CanDeleteSubAnim (int i) |
virtual void | DeleteSubAnim (int i) |
virtual DWORD | GetSubAnimCurveColor (int subNum) |
virtual int | SubNumToRefNum (int subNum) |
virtual BOOL | CanCopyAnim () |
CoreExport int | HasSubElements (int type=0) |
virtual int | GetSubFCurveExtents (int subNum, ParamDimensionBase *dim, float &min, float &max, DWORD flags) |
The values max and min should be initialized before calling this function. More... | |
virtual ParamDimension * | GetParamDimension (int i) |
virtual BOOL | SelectSubAnim (int subNum) |
virtual BOOL | BypassTreeView () |
virtual BOOL | BypassTrackBar () |
virtual BOOL | BypassPropertyLevel () |
virtual BOOL | InvisibleProperty () |
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 BOOL | AssignController (Animatable *control, int subAnim) |
virtual BOOL | CanAssignController (int subAnim) |
Return true if we can reassign the subanim specified. More... | |
virtual BOOL | CanMakeUnique () |
CoreExport int | EnumAnimTree (AnimEnum *animEnum, Animatable *client, int subNum) |
virtual int | RenderBegin (TimeValue t, ULONG flags=0) |
virtual int | RenderEnd (TimeValue t) |
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. More... | |
virtual BOOL | IsSubCurveSelected (int subNum) |
Returns the selected state of the sub-curve whose index is passed. More... | |
virtual int | GetSelKeyCoords (TimeValue &t, float &val, DWORD flags) |
virtual void | SetSelKeyCoords (TimeValue t, float val, DWORD flags) |
virtual int | SetSelKeyCoordsExpr (ParamDimension *dim, const MCHAR *timeExpr, const 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 void | AdjustTangents (TrackHitRecord hit, ParamDimensionBase *dim, float angle, float length, DWORD flags) |
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, const 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. More... | |
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 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 More... | |
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, const 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... More... | |
virtual CoreExport bool | SvIsSelected (IGraphObjectManager *gom, IGraphNode *gNode) |
Returns true if the object is selected in its schematic view. More... | |
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"... More... | |
virtual CoreExport bool | SvCanDetachRel (IGraphObjectManager *gom, IGraphNode *gNodeTarget, int id, IGraphNode *gNodeMaker) |
Returns true if this object can respond to the SvDetachRel(...) method... More... | |
virtual CoreExport bool | SvDetachRel (IGraphObjectManager *gom, IGraphNode *gNodeTarget, int id, IGraphNode *gNodeMaker) |
Detach this relationship. More... | |
virtual CoreExport bool | SvHandleRelDoubleClick (IGraphObjectManager *gom, IGraphNode *gNodeTarget, int id, IGraphNode *gNodeMaker) |
Called when this relationship is double-clicked in the schematic view... More... | |
CoreExport ICustAttribContainer * | GetCustAttribContainer () |
This method returns a pointer to the custom attributes container interface class. More... | |
CoreExport void | AllocCustAttribContainer () |
This method allocates space for a custom attributes container. More... | |
CoreExport void | DeleteCustAttribContainer () |
This method deletes space used by a custom attributes container. More... | |
void | SetAFlag (DWORD mask) |
void | ClearAFlag (DWORD mask) |
Clears one or more bits in the Animatable flags. More... | |
bool | TestAFlag (DWORD mask) const |
Tests one or more bits in the Animatable flags. More... | |
void | SetAFlagEx (DWORD mask) |
Sets one or more bits in the Animatable extended flags. More... | |
void | ClearAFlagEx (DWORD mask) |
Clears one or more bits in the Animatable extended flags. More... | |
bool | TestAFlagEx (DWORD mask) const |
Tests one or more bits in the Animatable extended flags. More... | |
CoreExport bool | TestFlagBit (int index) |
Tests the specified flag bit. More... | |
CoreExport void | SetFlagBit (int index, bool newValue=true) |
Sets the specified flag bit. More... | |
CoreExport void | ClearFlagBit (int index) |
Clears the specified flag bit. More... | |
Public Member Functions inherited from InterfaceServer | |
virtual UtilExport | ~InterfaceServer () |
Destructor. More... | |
Protected Member Functions | |
virtual CoreExport int | DoEnumDependentsImpl (DependentEnumProc *dep) |
Method to perform an enumeration on a ReferenceTarget. More... | |
Protected Member Functions inherited from ReferenceMaker | |
virtual RefResult | NotifyRefChanged (const Interval &changeInt, RefTargetHandle hTarget, PartID &partID, RefMessage message, BOOL propagate)=0 |
Receives and responds to messages. More... | |
virtual CoreExport | ~ReferenceMaker ()=0 |
Destructor. More... | |
virtual CoreExport void | SetReference (int i, RefTargetHandle rtarg) |
Stores a ReferenceTarget as its 'i-th' reference`. More... | |
void | BlockEval () |
void | UnblockEval () |
int | Evaluating () |
CoreExport RefResult | StdNotifyRefChanged (const Interval &changeInt, RefTargetHandle hTarget, PartID partID, RefMessage message, BOOL propagate, NotifyDependentsOption notifyDependentsOption) |
Protected Member Functions inherited from Animatable | |
virtual CoreExport | ~Animatable ()=0 |
Destructor. More... | |
Protected Member Functions inherited from Noncopyable | |
Noncopyable () | |
~Noncopyable () | |
Friends | |
class | DependentIterator |
class | DeleteRefRestore |
class | MakeRefRestore |
class | ReferenceMaker |
Construction, destruction of instances | |
virtual CoreExport | ~ReferenceTarget ()=0 |
Destructor. More... | |
CoreExport | ReferenceTarget () |
Constructor. More... | |
virtual CoreExport RefResult | AutoDelete () |
Deletes the object when it has no more real dependents. More... | |
CoreExport RefResult | MaybeAutoDelete () |
Deletes the object when it has no more real dependents. More... | |
Additional Inherited Members | |
Static Public Member Functions inherited from Animatable | |
static CoreExport BOOL | IsDeleted (Animatable *anim) |
Debug method to determine whether an object has been deleted. More... | |
static CoreExport AnimHandle | GetHandleByAnim (Animatable *anim) |
Get the unique handle for an Animatable object. More... | |
static CoreExport Animatable * | GetAnimByHandle (AnimHandle handle) |
Get an Animatable object from its unique handle. More... | |
static CoreExport void | EnumerateAllAnimatables (EnumAnimList &enumProcObject) |
Enumerator to enumerate across all animatables. More... | |
static CoreExport bool | RegisterAppDataLoadCallback (const Class_ID &cid, SClass_ID sid, APPDATALOADPROC proc) |
Registers a callback proc that is called when an AppDataChunk is read from a scene file. More... | |
static CoreExport bool | UnRegisterAppDataLoadCallback (const Class_ID &cid, SClass_ID sid, APPDATALOADPROC proc) |
Unregisters a callback proc that is called when an AppDataChunk is read from a scene file. More... | |
static CoreExport bool | RegisterAppDataLoadCallback (DWORD sbid, APPDATALOADPROC proc) |
Registers a callback proc that is called when an AppDataChunk is read from a scene file. More... | |
static CoreExport bool | UnRegisterAppDataLoadCallback (DWORD sbid, APPDATALOADPROC proc) |
Unregisters a callback proc that is called when an AppDataChunk is read from a scene file. More... | |
static CoreExport int | RequestFlagBit () |
Requests an unique flag bit index. More... | |
static CoreExport void | ReleaseFlagBit (int index) |
Releases the flag bit index. More... | |
static CoreExport void | ClearFlagBitInAllAnimatables (int index) |
Clears the specified flag bit in all Animatables. More... | |
Static Public Member Functions inherited from MaxHeapOperators | |
static UtilExport void * | operator new (size_t size) |
Standard new operator used to allocate objects If there is insufficient memory, an exception will be thrown. More... | |
static UtilExport void * | operator new (size_t size, const std::nothrow_t &e) |
Standard new operator used to allocate objects if there is insufficient memory, NULL will be returned. More... | |
static UtilExport void * | operator new (size_t size, const char *filename, int line) |
New operator used to allocate objects that takes the filename and line number where the new was called If there is insufficient memory, an exception will be thrown. More... | |
static UtilExport void * | operator new (size_t size, int block_type, const char *filename, int line) |
New operator used to allocate objects that takes the type of memory, filename and line number where the new was called If there is insufficient memory, an exception will be thrown. More... | |
static UtilExport void * | operator new (size_t size, const std::nothrow_t &e, const char *filename, int line) |
New operator used to allocate objects that takes the filename and line number where the new was called If there is insufficient memory, NULL will be returned. More... | |
static UtilExport void * | operator new (size_t size, unsigned long flags) |
New operator used to allocate objects that takes extra flags to specify special operations If there is insufficient memory, an exception will be thrown. More... | |
static UtilExport void * | operator new (size_t size, const std::nothrow_t &e, unsigned long flags) |
New operator used to allocate objects that takes extra flags to specify special operations If there is insufficient memory, NULL will be returned. More... | |
static UtilExport void * | operator new[] (size_t size) |
New operator used to allocate arrays of objects If there is insufficient memory, an exception will be thrown. More... | |
static UtilExport void * | operator new[] (size_t size, const std::nothrow_t &e) |
New operator used to allocate arrays of objects If there is insufficient memory, NULL will be returned. More... | |
static UtilExport void * | operator new[] (size_t size, const char *filename, int line) |
New operator used to allocate arrays of objects If there is insufficient memory, an exception will be thrown. More... | |
static UtilExport void * | operator new[] (size_t size, int block_type, const char *filename, int line) |
New operator used to allocate arrays of objects. More... | |
static UtilExport void * | operator new[] (size_t size, const std::nothrow_t &e, const char *filename, int line) |
New operator used to allocate arrays of objects If there is insufficient memory, NULL will be returned. More... | |
static UtilExport void * | operator new[] (size_t size, unsigned long flags) |
New operator used to allocate arrays of objects If there is insufficient memory, an exception will be thrown. More... | |
static UtilExport void * | operator new[] (size_t size, const std::nothrow_t &e, unsigned long flags) |
New operator used to allocate arrays of objects If there is insufficient memory, NULL will be returned. More... | |
static UtilExport void | operator delete (void *ptr) |
Standard delete operator used to deallocate an object If the pointer is invalid, an exception will be thrown. More... | |
static UtilExport void | operator delete (void *ptr, const std::nothrow_t &e) |
Standard delete operator used to deallocate an object If the pointer is invalid, nothing will happen. More... | |
static UtilExport void | operator delete (void *ptr, const char *filename, int line) |
Delete operator used to deallocate an object that takes the filename and line number where the delete was called If the pointer is invalid, an exception will be thrown. More... | |
static UtilExport void | operator delete (void *ptr, int block_type, const char *filename, int line) |
Delete operator used to deallocate an object that takes the type of memory, filename and line number where the delete was called If the pointer is invalid, an exception will be thrown. More... | |
static UtilExport void | operator delete (void *ptr, const std::nothrow_t &e, const char *filename, int line) |
Delete operator used to deallocate an object that takes the filename and line number where the delete was called If the pointer is invalid, nothing will happen. More... | |
static UtilExport void | operator delete (void *ptr, unsigned long flags) |
Delete operator used to deallocate an object that takes extra flags to specify special operations If the pointer is invalid, an exception will be thrown. More... | |
static UtilExport void | operator delete (void *ptr, const std::nothrow_t &e, unsigned long flags) |
Delete operator used to deallocate an object that takes extra flags to specify special operations If the pointer is invalid, nothing will happen. More... | |
static UtilExport void | operator delete[] (void *ptr) |
Standard delete operator used to deallocate an array of objects If the pointer is invalid, an exception will be thrown. More... | |
static UtilExport void | operator delete[] (void *ptr, const std::nothrow_t &e) |
Standard delete operator used to deallocate an array of objects If the pointer is invalid, nothing will happen. More... | |
static UtilExport void | operator delete[] (void *ptr, const char *filename, int line) |
Delete operator used to deallocate an array of objects that takes the filename and line number where the delete was called If the pointer is invalid, an exception will be thrown. More... | |
static UtilExport void | operator delete[] (void *ptr, int block_type, const char *filename, int line) |
Delete operator used to deallocate an array of objects that takes the type of memory, filename and line number where the delete was called If the pointer is invalid, an exception will be thrown. More... | |
static UtilExport void | operator delete[] (void *ptr, const std::nothrow_t &e, const char *filename, int line) |
Delete operator used to deallocate an array of objects that takes the filename and line number where the delete was called If the pointer is invalid, nothing will happen. More... | |
static UtilExport void | operator delete[] (void *ptr, unsigned long flags) |
Delete operator used to deallocate an array of objects that takes extra flags to specify special operations If the pointer is invalid, an exception will be thrown. More... | |
static UtilExport void | operator delete[] (void *ptr, const std::nothrow_t &e, unsigned long flags) |
Delete operator used to deallocate an array of objects that takes extra flags to specify special operations If the pointer is invalid, an exception will be thrown. More... | |
static UtilExport void * | operator new (size_t size, void *placement_ptr) |
Placement new operator. More... | |
static UtilExport void | operator delete (void *ptr, void *placement_ptr) |
Placement delete operator. More... | |
static UtilExport void * | aligned_malloc (size_t size, size_t alignment) |
Allocates memory on a specified alignment boundary. More... | |
static UtilExport void * | aligned_realloc (void *ptr, size_t size, size_t alignment) |
Reallocates memory on a specified alignment boundary. More... | |
static UtilExport void | aligned_free (void *ptr) |
Frees a block of memory that was allocated with aligned_malloc/aligned_realloc. More... | |
Static Public Attributes inherited from Animatable | |
static const AnimHandle | kInvalidAnimHandle = 0 |
Protected Attributes inherited from Animatable | |
DWORD | aflag |
AnimPropertyList | aprops |
|
protectedpure virtual |
Destructor.
Instances of class ReferenceTarget and classes derived from it should be deleted by calling ReferenceTarget::MaybeAutoDelete() or ReferenceMaker::DeleteMe() on them, rather then calling the delete operator. This will ensure that the object drops all references made to it and the references it makes to other objects.
Constructor.
|
virtual |
Deletes the object when it has no more real dependents.
This function is called by 3ds Max in order to delete a plugin object when its last real dependent has been deleted. It also allows derived classes to control the lifetime of their instances. The default implementation of this method will drop the references this object makes to other objects, and if the undo system is engaged (holding) it will ensure that the deletion is undo/redo-able. Override this method only if you don't want instances of your plugin to be automatically deleted when the last reference to them is deleted. Most subclasses of class ReferenceTarget will not need to override this method. Plugins should call ReferenceTarget::MaybeAutoDelete() or ReferenceMaker::DeleteMe() to delete instances of plugin objects. For more information on how 3ds Max deletes reference targets, see ReferenceTarget::MaybeAutoDelete()
Reimplemented in MtlBaseLib, MtlLib, and NoteTrack.
CoreExport RefResult MaybeAutoDelete | ( | ) |
Deletes the object when it has no more real dependents.
The system calls this method to check if it can delete objects that had a reference to them deleted (dropped). If there are no more real dependents on this object, this function will ask the object to auto-delete itself. See ReferenceTarget::AutoDelete() for more information on this. Note that "weak" references will not prevent the deletion of the object. Plugins should also call this method when they need to delete plugin instances. See ReferenceTarget::AutoDelete() for more information on deleting plugin instances.
|
virtual |
Retrieves the (localizable) 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 from ReferenceMaker.
Reimplemented in INodeTransformed, CollisionMesh, SimpleManipulator, CollisionSphere, PatchObject, CollisionPlane, SimpleParticle, SimpleOSMToWSMMod2, MultCurveList, SimpleOSMToWSMMod, SplineShape, EaseCurveList, SimpleWSMObject, MCDeviceBinding, PolyObject, TriObject, UnifiedRenderer, SimpleSpline, SimpleShape, Texmap, DefNoteTrack, LinearShape, MSCustAttrib, BoxGizmoObject, MtlBaseLib, MAXWrapper, DummyObject, PFSimpleAction, SimpleObjectBase, CylGizmoObject, SimplePolyObject, MtlLib, SphereGizmoObject, Mtl, and DADBitmapCarrier.
|
virtual |
Retrieves a constant representing the type of the plugin.
Reimplemented from ReferenceMaker.
Reimplemented in WSModifier, OSModifier, Modifier, WSMObject, ShapeObject, GeomObject, HelperObject, LightObject, CameraObject, IMultiPassCameraEffect, CollisionMesh, CollisionSphere, FilterKernel, CollisionPlane, MaxBakeElement, SimpleOSMToWSMMod2, MultCurveList, SimpleOSMToWSMMod, Effect, EaseCurveList, Atmospheric, IDataChannelEngine, MCDeviceBinding, BaseShader, UnifiedRenderer, UVGen, IRenderElement, UnifiedRenderer, Texmap, MSCustAttrib, MtlBaseLib, IKSlaveControl, MAXWrapper, ShadowType, Sampler, TextureOutput, BaseBehavior, MtlLib, RadiosityEffect, IIndirectRefTargContainer, Renderer, ToneOperator, SoundObj, XYZGen, IXRefObject, IXRefAtmospheric, Mtl, ILayer, DADBitmapCarrier, ILayerManager, CustAttrib, IKMasterControl, and NoteTrack.
|
inlinevirtual |
Checks if this is a ReferenceTarget.
This function differentiates things subclassed from ReferenceMaker from subclasses of ReferenceTarget.
Reimplemented from ReferenceMaker.
CoreExport RefResult TestForLoop | ( | const Interval & | refInterval, |
RefMakerHandle | hmaker | ||
) |
Tests for a cyclical reference.
Implemented by the System. This method may be called to test for cyclical references.
refInterval | - This interval is reserved for future use. Currently any plugin should specify FOREVER for this interval. |
hmaker | - The reference maker performing the loop test. |
CoreExport BOOL HasDependents | ( | ) |
Checks if a ReferenceTarget has references.
Implemented by the System.
CoreExport BOOL HasRealDependents | ( | ) |
Checks if this has Real (Strong) Dependents.
This function goes through it's list of dependents or ReferenceMakers and queries the results of their IsRealDependency Functions.
|
inline |
Starts Dependency Test.
To see if this reference target depends on something:
|
inline |
Ends Dependency Test.
To see if this reference target depends on something:
|
inlinevirtual |
Called after a reference is made to a target.
This is called after a reference is made to this. If the target (this) needs to know that a reference to made to it, the target (this) can override this function.
rm | - The ReferenceMaker creating the reference. |
Reimplemented in Texmap, and Mtl.
|
inlinevirtual |
Called after a reference is made to a target because of undo or redo.
This method is available in release 2.0 and later only. Called when reference is added because of and undo or a redo. Otherwise it is similar to RefAdded.
rm | - The ReferenceMaker creating the reference. |
|
inlinevirtual |
Called after a references to this is deleted.
This is called after deleting a reference to a reference target, in the case that the target was not deleted. When the last strong reference to a ReferenceTarget is removed, the ReferenceTarget is deleted, the destructor is called, and the memory cleared.
Reimplemented in MSCustAttrib, and Mtl.
|
inlinevirtual |
Called after a references to this is deleted because of undo or redo.
This is called after deleting a reference to a reference target, in the case that the target was not deleted. When the last strong reference to a ReferenceTarget is removed, the ReferenceTarget is deleted, the destructor is called, and the memory cleared.
|
virtual |
Deletes all references to this ReferenceTarget.
implemented by the System. Deletes all references to this ReferenceTarget.
Reimplemented from ReferenceMaker.
CoreExport RefResult TransferReferences | ( | RefTargetHandle | oldTarget, |
BOOL | delOld = FALSE |
||
) |
Transfers all the references from oldTarget to this.
Implemented by the System. This method is used to transfer all the references from oldTarget to this reference target.
oldTarget | - The previous reference target. |
delOld | - If this is TRUE the previous reference target is deleted. |
CoreExport int DoEnumDependents | ( | DependentEnumProc * | dep | ) |
Begins an enumeration that searches back in the dependency network.
Implemented by the System. This method is called to initiate an enumeration of all the references to the ReferenceTarget. This method prepares the DependentEnumProc for enumeration, and calls DoEnumDependentsImpl on the ReferenceTarget. To enumerate the down the reference hierarchy, see EnumRefHierarchy.
dep | - The callback object called for each dependent. |
|
virtual |
This method is used by 3ds Max to clone an object.
This method should not be directly called by plug-ins. Instead, either RemapDir::CloneRef() or CloneRefHierachy() should be used to perform cloning. These methods ensure that the mapping from the original object to the clone is added to the RemapDir used for cloning, which may be used during backpatch operations
remap | - A RemapDir instance used for remapping references during a Clone. |
Reimplemented in CollisionMesh, CollisionSphere, CollisionPlane, PatchObject, MultCurveList, SimpleOSMToWSMMod2, SimpleOSMToWSMMod, EaseCurveList, SplineShape, SimpleSpline, DefNoteTrack, SimpleShape, UnifiedRenderer, MSCustAttrib, MtlBaseLib, BoxGizmoObject, PolyObject, TriObject, PFSimpleAction, MtlLib, CylGizmoObject, DummyObject, LinearShape, SphereGizmoObject, and DADBitmapCarrier.
|
virtual |
This method copies base class data from an object to its clone.
This method is available in release 4.0 and later only. Virtual method.
from | - Points to the old object to clone. |
to | - Points to the new object created. |
remap | - This class is used for remapping references during a Clone. |
|
virtual |
Notify all dependent RefMakers concerned with the message.
Implemented by the System. This method broadcasts the message specified by the message parameter to all the items which reference this item. Note the following on how reference messages propagate (that is, travel to the dependents):
Also, whenever a message propagates, the hTarget parameter received in NotifyRefChanged() is reset to the this pointer of the immediate dependent (not the originator) who propagates the message.
changeInt | - Currently all plug-ins must pass FOREVER for this interval. This indicates the interval of time over which the change reported by the message is in effect. The exception is the REFMSG_FLAGDEPENDENTS notification. In that case, changeInt.Start() is the timepoint to perform the dependency test. |
partID | - This parameter is used to pass message specific information to the items which will receive the message. See the ReferenceMaker::NotifiyRefChanged() method for more details. |
message | - The message to broadcast to all dependents. See the ReferenceMaker::NotifiyRefChanged() method for more details. |
sclass | - This parameter defaults to NOTIFY_ALL. If this value is passed to NotifyDependents() all dependents will be notified. Other super class values may be passed to only send the message to certain items whose SuperClassID matches the one passed. |
propagate | - This parameter defaults to TRUE. This indicates that the message should be sent to all 'nested' dependencies. If passed as FALSE, this parameter indicates the message should only be sent to first level dependents. Normally this should be left to default to TRUE. |
hTarg | - This parameter must always default to NULL. |
notifyDependentsOption | - This parameter specifies whether duplicate messages to the same refmaker can potentially be optimized away |
Reimplemented from ReferenceMaker.
|
inline |
This sends the REFMSG_FLAGDEPENDENTS message up the pipeline.
This sends the REFMSG_FLAGDEPENDENTS message up the pipeline. There are two reasons to flag dependents:
t | - the timepoint to perform the dependency test. |
which | - The part id that is sent with REFMSG_FLAGDEPENDENTS |
This method is called to flag dependents into the FG.
This method is called to flag dependents into the FG. (Note that the above method is obsolete) The default implementation just sends out the notification REFMSG_FLAGDEPENDENTS with PART_PUT_IN_FG as the partID. In particular, a slave controller could override this method and call its master's version of this method
|
inlinevirtual |
Sends messages to ReferenceTargets.
This method is available in release 4.0 and later only. Used by a ReferenceMaker to send 'reverse' notification messages to its ReferenceTargets, or to this ReferenceTarget.
message | - The message sent to the reference target. |
hMaker | - The ReferenceMaker sending the message. |
Reimplemented in PFSimpleAction.
|
virtual |
Inherited from Animatable.
Returns a pointer to the interface.
id | - The id of the interface. |
Reimplemented from ReferenceMaker.
Reimplemented in WSMObject, ShapeObject, LightObject, Object, Control, Shader, MaxBakeElement10, PatchObject, MaxBakeElement8, MtlBase, MaxBakeElement, SimpleParticle, Effect8, MultCurveList, BaseObject, SplineShape, EaseCurveList, MaxRenderElement, IRenderElement, LockableControl, LockableStdControl, UnifiedRenderer, MSCustAttrib, IDerivedObject, TriObject, SimplePolyObject, and SimpleObjectBase.
|
virtual |
Inherited from Animatable.
Returns a pointer to the Base Interface for the interface ID passed.
id | - The unique ID of the interface to get |
Reimplemented from ReferenceMaker.
Reimplemented in ShapeObject, LightObject, Object, INode, SimpleManipulator, Shader, MtlBase, Effect8, BaseObject, MAXWrapper, UnifiedRenderer, IRefTargContainer, MSCustAttrib, TriObject, SimplePolyObject, SimpleObjectBase, IIndirectRefTargContainer, PFSimpleTest, PFSimpleAction, and PFSimpleOperator.
|
protectedvirtual |
Method to perform an enumeration on a ReferenceTarget.
Implemented by the System. This method is initially called by DoEnumDependents. This method allows a ReferenceTarget to call the given callback object's proc on itself, and then optionally enumerate all references to it. How to continue enumeration is based on the return value from the callback object's proc. All ReferenceTargets have a list of back pointers to entities that directly reference it. The default implementation of this method first checks to see if this ReferenceTarget was previously processed as part of the enumeration, and if so immediately returns 0. If the ReferenceTarget was not previously processed, it calls the callback object's proc on itself and then, dependent on the return value from the callback object's proc, enumerates those back pointers calling DoEnumDependentsImpl once per dependent. Normally you will not need to override this method. If you do override this method, you should use DependentEnumProc::CheckIfAndSetAsVisited to process your instance and its dependents only if it was not previously processed.
dep | - The callback object called for each dependent. |
Reimplemented from ReferenceMaker.
|
friend |
|
friend |
|
friend |
|
friend |