📄 animtbl.h
字号:
// graph traversal in simple cases. Follows sub-anim
// and child references...
CoreExport SvGraphNodeReference SvStdTraverseAnimGraph(IGraphObjectManager *gom, Animatable *owner, int id, DWORD flags);
// Animatable returns true if it can be the initiator of
// a link operation in the schematic view...
CoreExport virtual bool SvCanInitiateLink(IGraphObjectManager *gom, IGraphNode *gNode);
// Animatable returns true if it can be the receiver
// (parent) of a link operation in the schematic view...
CoreExport virtual bool SvCanConcludeLink(IGraphObjectManager *gom, IGraphNode *gNode, IGraphNode *gNodeChild);
// Returns the name of the object as it appears in the
// schematic view...
CoreExport virtual TSTR SvGetName(IGraphObjectManager *gom, IGraphNode *gNode, bool isBeingEdited);
// Return true to permit the object's name to be
// edited in the schematic view...
CoreExport virtual bool SvCanSetName(IGraphObjectManager *gom, IGraphNode *gNode);
// Called when the user changes the name of the object
// in the schematic view...
CoreExport virtual bool SvSetName(IGraphObjectManager *gom, IGraphNode *gNode, TSTR &name);
// Return true if this object can be removed in the schematic view...
CoreExport virtual bool SvCanRemoveThis(IGraphObjectManager *gom, IGraphNode *gNode);
// Called when the user deletes this object in the schematic view...
CoreExport virtual bool SvRemoveThis(IGraphObjectManager *gom, IGraphNode *gNode);
// Returns true if the object is selected in its primary
// editor...
CoreExport virtual bool SvIsSelected(IGraphObjectManager *gom, IGraphNode *gNode);
// Returns true if the object is to be highlighted in
// the schematic view...
CoreExport virtual bool SvIsHighlighted(IGraphObjectManager *gom, IGraphNode *gNode);
// Returns the highlight color for this node. The
// highlight color is used to outline nodes in the
// schematic view when SvIsHighlighted(...) returns
// true...
CoreExport virtual COLORREF SvHighlightColor(IGraphObjectManager *gom, IGraphNode *gNode);
// Returns a color which is used to paint the triangular
// color swatch that appears in the upper-right hand
// corner of the node in the schematic view. Can
// return SV_NO_SWATCH to indicate that no swatch is
// to be drawn...
CoreExport virtual COLORREF SvGetSwatchColor(IGraphObjectManager *gom, IGraphNode *gNode);
// Returns true if this object is inactive. The schematic
// view draws inactive nodes in a grayed-out state.
CoreExport virtual bool SvIsInactive(IGraphObjectManager *gom, IGraphNode *gNode);
// Links gNodeChild to this object...
CoreExport virtual bool SvLinkChild(IGraphObjectManager *gom, IGraphNode *gNodeThis, IGraphNode *gNodeChild);
// Called when this node is double-clicked in the
// schematic view...
CoreExport virtual bool SvHandleDoubleClick(IGraphObjectManager *gom, IGraphNode *gNode);
// Called before a multiple select/deselect operation
// in the schematic view. Returns a callback used
// to perform the (de)selection. May return NULL if
// this object cannot be selected in some principle
// editor outside the schematic view...
CoreExport virtual MultiSelectCallback* SvGetMultiSelectCallback(IGraphObjectManager *gom, IGraphNode *gNode);
// Returns true if this object can be selected in
// some editor (viewport, material editor, plug-in
// specific editor, etc.). Selection is actually
// accomplished by via the SvGetMultiSelectCallback(...)
// mechanism described above...
CoreExport virtual bool SvCanSelect(IGraphObjectManager *gom, IGraphNode *gNode);
// Called when the user edits the properties of a
// node from the schematic view...
CoreExport virtual bool SvEditProperties(IGraphObjectManager *gom, IGraphNode *gNode);
// Returns a string to be displayed in the tip window
// for this object in the schematic view...
CoreExport virtual TSTR SvGetTip(IGraphObjectManager *gom, IGraphNode *gNode);
// Returns a string to be displayed in the tip window
// in the schematic view for a reference from "gNodeMaker"
// to this...
CoreExport virtual TSTR SvGetRefTip(IGraphObjectManager *gom, IGraphNode *gNode, IGraphNode *gNodeMaker);
// Returns true is this object can respond to the SvDetach(...) method...
CoreExport virtual bool SvCanDetach(IGraphObjectManager *gom, IGraphNode *gNode);
// Detach this object from its owner...
CoreExport virtual bool SvDetach(IGraphObjectManager *gom, IGraphNode *gNode);
};
//
// Callback for EnumAnimTree:
//
// Scope values:
#define SCOPE_DOCLOSED 1 // do "closed" animatables.
#define SCOPE_SUBANIM 2 // do the sub anims
#define SCOPE_CHILDREN 4 // do the node children
#define SCOPE_OPEN (SCOPE_SUBANIM|SCOPE_CHILDREN) // do all open animatables
#define SCOPE_ALL (SCOPE_OPEN|SCOPE_DOCLOSED) // do all animatables
// Return values for AnimEnum procs
#define ANIM_ENUM_PROCEED 1
#define ANIM_ENUM_STOP 2
#define ANIM_ENUM_ABORT 3
class AnimEnum {
protected:
int depth;
int scope;
DWORD tv;
public:
AnimEnum(int s = SCOPE_OPEN, int deep = 0, DWORD tv=0xffffffff)
{scope = s; depth = deep; this->tv = tv;}
void SetScope(int s) { scope = s; }
int Scope() { return scope; }
void IncDepth() { depth++; }
void DecDepth() { depth--; }
int Depth() { return depth; }
DWORD TVBits() {return tv;}
virtual int proc(Animatable *anim, Animatable *client, int subNum)=0;
};
// A usefule enumeration
class ClearAnimFlagEnumProc : public AnimEnum {
DWORD flag;
public:
ClearAnimFlagEnumProc(DWORD f) {flag=f;}
int proc(Animatable *anim, Animatable *client, int subNum) {
anim->ClearAFlag(flag);
return ANIM_ENUM_PROCEED;
}
};
//
// The is used by the two functions GetSubObjectCenters() and
// GetSubObjectTMs() found in the classes BaseObject and Control.
//
class SubObjAxisCallback {
public:
virtual void Center(Point3 c,int id)=0;
virtual void TM(Matrix3 tm,int id)=0;
virtual int Type()=0;
};
// Values returned by Type();
#define SO_CENTER_SELECTION 1
#define SO_CENTER_PIVOT 2
// --- AppData ---------------------------------------------
// An individual app data chunk
class AppDataChunk {
public:
// Note that data pointer should be allocated with standard malloc
// since it will be freed in the destructor.
AppDataChunk(Class_ID cid, SClass_ID sid, DWORD sbid, DWORD len, void *d)
{classID=cid; superClassID=sid; subID=sbid; length=len; data=d;}
AppDataChunk() {length=0;data=NULL;}
~AppDataChunk() {
if (data) free(data);
}
// The super class and class IDs of the object that
// is the owner of this chunk.
Class_ID classID;
SClass_ID superClassID;
// An extra ID that lets the owner identify its sub chunks.
DWORD subID;
// The chunk data itself
DWORD length;
void *data;
// IO
CoreExport IOResult Load(ILoad *iload);
CoreExport IOResult Save(ISave *isave);
};
// This list is maintained by the systems. Plug-ins need not concern themselves with it.
class AnimAppData : public AnimProperty {
public:
Tab<AppDataChunk*> chunks;
CRITICAL_SECTION csect;
AppDataChunk *lastSearch;
DWORD ID() {return PROPID_APPDATA;}
CoreExport ~AnimAppData();
CoreExport AnimAppData();
CoreExport AppDataChunk *FindChunk(Class_ID cid, SClass_ID sid, DWORD sbid);
void AddChunk(AppDataChunk *newChunk) {chunks.Append(1,&newChunk);}
CoreExport BOOL RemoveChunk(Class_ID cid, SClass_ID sid, DWORD sbid);
CoreExport IOResult Load(ILoad *iload);
CoreExport IOResult Save(ISave *isave);
};
static const DWORD SV_NO_REF_INDEX = 0xFFFFFFFF;
class SchematicViewProperty : public AnimProperty
{
private:
DWORD nodeRefIndex;
public:
DWORD ID() { return PROPID_SVDATA; }
CoreExport ~SchematicViewProperty() {}
CoreExport SchematicViewProperty();
DWORD GetRefIndex();
void SetRefIndex(DWORD refIndex);
bool GetRefSaveMark();
CoreExport IOResult Load(ILoad *iload);
CoreExport IOResult Save(ISave *isave);
};
CoreExport void SetLockFailureLevel(int level);
CoreExport int GetLockFailureLevel();
class Interface;
CoreExport Interface *GetCOREInterface();
// JBW: macrorecorder. For the macro-recorder to establish itself with CORE
class MacroRecorder;
CoreExport void SetMacroRecorderInterface(MacroRecorder* mri);
// JBW: to set the CIU macro scrit directory ref in CORE
class MacroDir;
CoreExport void SetMacroScriptInterface(MacroDir* msd);
// This API allows plug-in to query various system settings.
CoreExport int GetSystemSetting(int id);
// Values to pass to GetSystemSetting():
// Are editable meshes enabled?
#define SYSSET_ENABLE_EDITABLEMESH 1
// When GetSystemSetting is called with this the undo buffer is
// cleared. GetSystemSetting will return 0.
// Note that this will only work with version 1.1 of MAX or later.
#define SYSSET_CLEAR_UNDO 2
// Are keyboard accelerators enabled for the editable mesh.
#define SYSSET_EDITABLEMESH_ENABLE_KEYBOARD_ACCEL 3
// Is the edit meh modifier enabled?
#define SYSSET_ENABLE_EDITMESHMOD 4
// Returns the state of the VERSION_3DSMAX #define from PLUGAPI.H
// when the running version of MAX was compiled.
CoreExport DWORD Get3DSMAXVersion();
// Special access to the MAX INI file for motion capture
#define MCAP_INI_CHANNEL 1
#define MCAP_INI_PRESET 2
#define MCAP_INI_STOP 3
#define MCAP_INI_PLAY 4
#define MCAP_INI_RECORD 5
#define MCAP_INI_SSENABLE 6
CoreExport int GetMotionCaptureINISetting(int ID);
CoreExport void SetMotionCaptureINISetting(int ID, int val);
// CoreExecute: generic expansion capability
CoreExport int CoreExecute(int cmd, ULONG arg1=0, ULONG arg2=0, ULONG arg3=0);
#endif // _ANIMTBL_H_
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -