📄 maxapi.h
字号:
#define SQUASH_BUTTON 5
#define SELECT_BUTTON 6
// Axis constraints.
#define AXIS_XY 2
#define AXIS_ZX 1
#define AXIS_YZ 0
#define AXIS_X 3
#define AXIS_Y 4
#define AXIS_Z 5
// Origin modes
#define ORIGIN_LOCAL 0 // Object's pivot
#define ORIGIN_SELECTION 1 // Center of selection set (or center of individual object for local or parent space)
#define ORIGIN_SYSTEM 2 // Center of the reference coord. system
// Reference coordinate system
#define COORDS_HYBRID 0
#define COORDS_SCREEN 1
#define COORDS_WORLD 2
#define COORDS_PARENT 3
#define COORDS_LOCAL 4
#define COORDS_OBJECT 5
// Task Modes
#define TASK_MODE_CREATE 1
#define TASK_MODE_MODIFY 2
#define TASK_MODE_HIERARCHY 3
#define TASK_MODE_MOTION 4
#define TASK_MODE_DISPLAY 5
#define TASK_MODE_UTILITY 6
// Max cursors
#define SYSCUR_MOVE 1
#define SYSCUR_ROTATE 2
#define SYSCUR_USCALE 3
#define SYSCUR_NUSCALE 4
#define SYSCUR_SQUASH 5
#define SYSCUR_SELECT 6
#define SYSCUR_DEFARROW 7
#define SYSCUR_MOVE_SNAP 8
// flags to pass to RedrawViews
#define REDRAW_BEGIN (1<<0)
#define REDRAW_INTERACTIVE (1<<1)
#define REDRAW_END (1<<2)
#define REDRAW_NORMAL (1<<3)
// Return values for GetNumAxis()
#define NUMAXIS_ZERO 0 // Nothing to transform
#define NUMAXIS_ALL 1 // Use only one axis.
#define NUMAXIS_INDIVIDUAL 2 // Do all, one at a time
// MAX Directories
#define APP_FONT_DIR 0
#define APP_SCENE_DIR 1
#define APP_IMPORT_DIR 2
#define APP_EXPORT_DIR 3
#define APP_HELP_DIR 4
#define APP_EXPRESSION_DIR 5
#define APP_PREVIEW_DIR 6
#define APP_IMAGE_DIR 7
#define APP_SOUND_DIR 8
#define APP_PLUGCFG_DIR 9
#define APP_MAXSTART_DIR 10
#define APP_VPOST_DIR 11
#define APP_DRIVERS_DIR 12
#define APP_AUTOBACK_DIR 13
#define APP_MATLIB_DIR 14
#define APP_SCRIPTS_DIR 15
#define APP_STARTUPSCRIPTS_DIR 16
#define APP_UI_DIR 17 // this must be next to last!!
#define APP_MAXROOT_DIR 18 // this must be last!!
// Types for status numbers
#define STATUS_UNIVERSE 1
#define STATUS_SCALE 2
#define STATUS_ANGLE 3
#define STATUS_OTHER 4
#define STATUS_UNIVERSE_RELATIVE 5
#define STATUS_POLAR 6
#define STATUS_POLAR_RELATIVE 7
// Extended display modes
#define EXT_DISP_NONE 0
#define EXT_DISP_SELECTED (1<<0) // object is selected
#define EXT_DISP_TARGET_SELECTED (1<<1) // object's target is selected
#define EXT_DISP_LOOKAT_SELECTED (1<<2) // object's lookat node is selected
#define EXT_DISP_ONLY_SELECTED (1<<3) // object is only thing selected
#define EXT_DISP_DRAGGING (1<<4) // object is being "dragged"
#define EXT_DISP_ZOOM_EXT (1<<5) // object is being tested for zoom ext
// Render time types passed to SetRendTimeType()
#define REND_TIMESINGLE 0
#define REND_TIMESEGMENT 1
#define REND_TIMERANGE 2
#define REND_TIMEPICKUP 3
// Flag bits for hide by category.
#define HIDE_OBJECTS 0x0001
#define HIDE_SHAPES 0x0002
#define HIDE_LIGHTS 0x0004
#define HIDE_CAMERAS 0x0008
#define HIDE_HELPERS 0x0010
#define HIDE_WSMS 0x0020
#define HIDE_SYSTEMS 0x0040
#define HIDE_PARTICLES 0x0080
#define HIDE_ALL 0xffff
#define HIDE_NONE 0
// viewport layout configuration
// VP_LAYOUT_ LEGEND
// # is number of viewports (total) in view panel
// V = vertical split
// H = horizontal split
// L/R = left/right placement
// T/B = top/bottom placement
// CONSTANT LEGEND
// bottom nibble is total number of views
#define VP_LAYOUT_1 0x0001
#define VP_LAYOUT_2V 0x0012
#define VP_LAYOUT_2H 0x0022
#define VP_LAYOUT_2HT 0x0032
#define VP_LAYOUT_2HB 0x0042
#define VP_LAYOUT_3VL 0x0033
#define VP_LAYOUT_3VR 0x0043
#define VP_LAYOUT_3HT 0x0053
#define VP_LAYOUT_3HB 0x0063
#define VP_LAYOUT_4 0x0074
#define VP_LAYOUT_4VL 0x0084
#define VP_LAYOUT_4VR 0x0094
#define VP_LAYOUT_4HT 0x00a4
#define VP_LAYOUT_4HB 0x00b4
#define VP_LAYOUT_1C 0x00c1
#define VP_NUM_VIEWS_MASK 0x000f
class DWORDTab : public Tab<DWORD> {};
// A callback object passed to Execute
#define I_EXEC_REGISTER_POSTSAVE_CB 1001
#define I_EXEC_UNREGISTER_POSTSAVE_CB 1002
#define I_EXEC_REGISTER_PRESAVE_CB 1003
#define I_EXEC_UNREGISTER_PRESAVE_CB 1004
class GenericCallback {
public:
virtual void Callme()=0;
};
// A callback object passed to RegisterTimeChangeCallback()
class TimeChangeCallback {
public:
virtual void TimeChanged(TimeValue t)=0;
};
// A callback object passed to RegisterCommandModeChangeCallback()
class CommandModeChangedCallback {
public:
virtual void ModeChanged(CommandMode *oldM, CommandMode *newM)=0;
};
// A callback to allow plug-ins that aren't actually objects (such as utilities)
// to draw something in the viewports.
class ViewportDisplayCallback {
public:
virtual void Display(TimeValue t, ViewExp *vpt, int flags)=0;
virtual void GetViewportRect( TimeValue t, ViewExp *vpt, Rect *rect )=0;
virtual BOOL Foreground()=0; // return TRUE if the object changes a lot or FALSE if it doesn't change much
};
// A callback object that will get called before the program exits.
class ExitMAXCallback {
public:
// MAX main window handle is passed in. Return FALSE to abort
// the exit, TRUE otherwise.
virtual BOOL Exit(HWND hWnd)=0;
};
class MAXFileOpenDialog {
public:
virtual BOOL BrowseMAXFileOpen(TSTR& fileName, TSTR* defDir, TSTR* defFile) = 0;
};
class MAXFileSaveDialog {
public:
virtual BOOL BrowseMAXFileSave(TSTR& fileName) = 0;
};
// A callback object to filter selection in the track view.
class TrackViewFilter {
public:
// Return TRUE to accept the anim as selectable.
virtual BOOL proc(Animatable *anim, Animatable *client,int subNum)=0;
};
// Stores the result of a track view pick
class TrackViewPick {
public:
ReferenceTarget *anim;
ReferenceTarget *client;
int subNum;
TrackViewPick() {anim=NULL;client=NULL;subNum=0;}
};
// A callback object passed to SetPickMode()
class PickModeCallback {
public:
// Called when ever the pick mode needs to hit test. Return TRUE if something was hit
virtual BOOL HitTest(IObjParam *ip,HWND hWnd,ViewExp *vpt,IPoint2 m,int flags)=0;
// Called when the user picks something. The vpt should have the result of the hit test in it.
// return TRUE to end the pick mode.
virtual BOOL Pick(IObjParam *ip,ViewExp *vpt)=0;
// Called when the user right-clicks or presses ESC
// return TRUE to end the pick mode, FALSE to continue picking
virtual BOOL RightClick(IObjParam *ip,ViewExp *vpt) { return FALSE; }
// Called when the mode is entered and exited.
virtual void EnterMode(IObjParam *ip) {}
virtual void ExitMode(IObjParam *ip) {}
virtual HCURSOR GetDefCursor(IObjParam *ip) {return NULL;}
virtual HCURSOR GetHitCursor(IObjParam *ip) {return NULL;}
// If the user hits the H key while in your pick mode, you
// can provide a filter to filter the name list.
virtual PickNodeCallback *GetFilter() {return NULL;}
// Return TRUE to allow the user to pick more than one thing.
// In this case the Pick method may be called more than once.
virtual BOOL AllowMultiSelect() {return FALSE;}
};
// Not to be confused with a PickMODEcallback...
// Used to filter node's during a hit test (PickNode)
class PickNodeCallback {
public:
// Return TRUE if this is an acceptable hit, FALSE otherwise.
virtual BOOL Filter(INode *node)=0;
};
// Used with DoHitByNameDialog();
class HitByNameDlgCallback {
public:
virtual TCHAR *dialogTitle() { return _T(""); }
virtual TCHAR *buttonText() { return _T(""); }
virtual BOOL singleSelect() { return FALSE; }
virtual BOOL useFilter() { return TRUE; }
virtual int filter(INode *node) { return TRUE; }
virtual BOOL useProc() { return TRUE; }
virtual void proc(INodeTab &nodeTab) {}
virtual BOOL doCustomHilite() { return FALSE; }
virtual BOOL doHilite(INode *node) { return FALSE; }
virtual BOOL showHiddenAndFrozen() { return FALSE; }
};
class Interface;
// A callback used with RegisterRedrawViewsCallback()
class RedrawViewsCallback {
public:
// this will be called after all the viewport have completed drawing.
virtual void proc(Interface *ip)=0;
};
// A callback used with RegisterAxisChangeCallback()
class AxisChangeCallback {
public:
// this will be called when the axis system is changed
virtual void proc(Interface *ip)=0;
};
// parameters for creation of a preview
class PreviewParams {
public:
BOOL outputType; // 0=default AVI codec, 1=user picks file, 2=user picks device
int pctSize; // percent (0-100) of current rendering output res
// frame limits
int start;
int end;
int skip;
// frame rate
int fps;
// display control
BOOL dspGeometry;
BOOL dspShapes;
BOOL dspLights;
BOOL dspCameras;
BOOL dspHelpers;
BOOL dspSpaceWarps;
BOOL dspGrid;
BOOL dspSafeFrame;
BOOL dspFrameNums;
// rendering level
int rndLevel; // 0=smooth/hi, 1=smooth, 2=facet/hi, 3=facet
// 4=lit wire, 6=wire, 7=box
int dspBkg;
};
// Generic interface into Jaguar
class Interface {
public:
virtual HFONT GetAppHFont()=0;
virtual void RedrawViews(TimeValue t,DWORD vpFlags=REDRAW_NORMAL, ReferenceTarget *change=NULL)=0;
virtual BOOL SetActiveViewport(HWND hwnd)=0;
virtual ViewExp *GetActiveViewport()=0; // remember to release ViewExp* with ReleaseViewport()
virtual IObjCreate *GetIObjCreate()=0;
virtual IObjParam *GetIObjParam()=0;
virtual HWND GetMAXHWnd()=0;
// This will cause all viewports to be completely redrawn.
// This is extremely heavy handed and should only be used when
// necessary.
virtual void ForceCompleteRedraw(BOOL doDisabled=TRUE)=0;
// Turn scene redraw on/off. Each call to disable redraw should be
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -