157 lines
6.2 KiB
C++
Executable File
157 lines
6.2 KiB
C++
Executable File
/*
|
|
* MSController.h - MAXScript scriptable controllers for MAX
|
|
*
|
|
* Copyright © John Wainwright 1996
|
|
*
|
|
*/
|
|
|
|
#ifndef _H_MSCONTROLLER
|
|
#define _H_MSCONTROLLER
|
|
|
|
#define SCRIPT_POS_CONTROL_CLASS_ID Class_ID(0x236c6aa5, 0x27590853)
|
|
#define SCRIPT_P3_CONTROL_CLASS_ID Class_ID(0x3d7b231d, 0x2b986df3)
|
|
#define SCRIPT_FLOAT_CONTROL_CLASS_ID Class_ID(0x151d5ead, 0x55626f88)
|
|
#define SCRIPT_SCALE_CONTROL_CLASS_ID Class_ID(0x5f346d25, 0x2c67ff7)
|
|
#define SCRIPT_ROT_CONTROL_CLASS_ID Class_ID(0xc6625, 0xb003c2a)
|
|
#define SCRIPT_P4_CONTROL_CLASS_ID Class_ID(0x3d7b234d, 0x2b986df4)
|
|
|
|
class ScriptControl : public StdControl
|
|
{
|
|
public:
|
|
int type;
|
|
Interval ivalid;
|
|
Interval range;
|
|
HWND hParams;
|
|
IObjParam * ip;
|
|
TSTR desc;
|
|
HWND hDlg;
|
|
|
|
ScriptControl(int type, ScriptControl &ctrl);
|
|
ScriptControl(int type, BOOL loading);
|
|
~ScriptControl();
|
|
|
|
// Animatable methods
|
|
int TrackParamsType() { return TRACKPARAMS_WHOLE; }
|
|
|
|
void DeleteThis() { delete this; }
|
|
int IsKeyable() { return 0; }
|
|
BOOL IsAnimated() {return TRUE;}
|
|
Interval GetTimeRange(DWORD flags) { return range; }
|
|
void EditTimeRange(Interval range,DWORD flags);
|
|
void Hold();
|
|
void MapKeys( TimeMap *map, DWORD flags );
|
|
|
|
void BeginEditParams( IObjParam *ip, ULONG flags,Animatable *prev );
|
|
void EndEditParams( IObjParam *ip, ULONG flags,Animatable *next );
|
|
|
|
void EditTrackParams(
|
|
TimeValue t, // The horizontal position of where the user right clicked.
|
|
ParamDimensionBase *dim,
|
|
TCHAR *pname,
|
|
HWND hParent,
|
|
IObjParam *ip,
|
|
DWORD flags);
|
|
|
|
// Reference methods
|
|
int NumRefs() { return StdControl::NumRefs() + refTab.Count(); }
|
|
ReferenceTarget* GetReference(int i);
|
|
void SetReference(int i, RefTargetHandle rtarg);
|
|
RefResult NotifyRefChanged(Interval, RefTargetHandle, PartID&, RefMessage);
|
|
void RefDeleted();
|
|
|
|
IOResult Save(ISave *isave);
|
|
IOResult Load(ILoad *iload);
|
|
|
|
// Control methods
|
|
void Copy(Control *from);
|
|
RefTargetHandle Clone(RemapDir& remap=NoRemap()) { ScriptControl *newob = new ScriptControl(this->type, *this); BaseClone(this, newob, remap); return(newob); }
|
|
BOOL IsLeaf() { return TRUE; }
|
|
void GetValueLocalTime(TimeValue t, void *val, Interval &valid, GetSetMethod method=CTRL_ABSOLUTE);
|
|
void SetValueLocalTime(TimeValue t, void *val, int commit, GetSetMethod method) {}
|
|
void Extrapolate(Interval range,TimeValue t,void *val,Interval &valid,int type);
|
|
void *CreateTempValue();
|
|
void DeleteTempValue(void *val);
|
|
void ApplyValue(void *val, void *delta);
|
|
void MultiplyValue(void *val, float m);
|
|
};
|
|
|
|
class ScriptPosControl : public ScriptControl
|
|
{
|
|
public:
|
|
ScriptPosControl(ScriptPosControl &ctrl) : ScriptControl(CTRL_POSITION_CLASS_ID, ctrl) {}
|
|
ScriptPosControl(BOOL loading=FALSE) : ScriptControl(CTRL_POSITION_CLASS_ID, loading) {}
|
|
~ScriptPosControl() {}
|
|
|
|
RefTargetHandle Clone(RemapDir& remap=NoRemap()) { ScriptPosControl *newob = new ScriptPosControl(*this); BaseClone(this, newob, remap); return(newob); }
|
|
void GetClassName(TSTR& s) { s = _T("Position_script"); }
|
|
Class_ID ClassID() { return Class_ID(SCRIPT_POS_CONTROL_CLASS_ID,0); }
|
|
SClass_ID SuperClassID() { return CTRL_POSITION_CLASS_ID; }
|
|
};
|
|
|
|
class ScriptP3Control : public ScriptControl
|
|
{
|
|
public:
|
|
ScriptP3Control(ScriptP3Control &ctrl) : ScriptControl(CTRL_POINT3_CLASS_ID, ctrl) {}
|
|
ScriptP3Control(BOOL loading=FALSE) : ScriptControl(CTRL_POINT3_CLASS_ID, loading) {}
|
|
~ScriptP3Control() {}
|
|
|
|
RefTargetHandle Clone(RemapDir& remap=NoRemap()) { ScriptP3Control *newob = new ScriptP3Control(*this); BaseClone(this, newob, remap); return(newob); }
|
|
void GetClassName(TSTR& s) { s = _T("Point3_script"); }
|
|
Class_ID ClassID() { return Class_ID(SCRIPT_P3_CONTROL_CLASS_ID,0); }
|
|
SClass_ID SuperClassID() { return CTRL_POINT3_CLASS_ID; }
|
|
};
|
|
|
|
class ScriptP4Control : public ScriptControl
|
|
{
|
|
public:
|
|
ScriptP4Control(ScriptP4Control &ctrl) : ScriptControl(CTRL_POINT4_CLASS_ID, ctrl) {}
|
|
ScriptP4Control(BOOL loading=FALSE) : ScriptControl(CTRL_POINT4_CLASS_ID, loading) {}
|
|
~ScriptP4Control() {}
|
|
|
|
RefTargetHandle Clone(RemapDir& remap=NoRemap()) { ScriptP4Control *newob = new ScriptP4Control(*this); BaseClone(this, newob, remap); return(newob); }
|
|
void GetClassName(TSTR& s) { s = _T("Point4_script"); }
|
|
Class_ID ClassID() { return Class_ID(SCRIPT_P4_CONTROL_CLASS_ID,0); }
|
|
SClass_ID SuperClassID() { return CTRL_POINT4_CLASS_ID; }
|
|
};
|
|
|
|
class ScriptFloatControl : public ScriptControl
|
|
{
|
|
public:
|
|
ScriptFloatControl(ScriptFloatControl &ctrl) : ScriptControl(CTRL_FLOAT_CLASS_ID, ctrl) {}
|
|
ScriptFloatControl(BOOL loading=FALSE) : ScriptControl(CTRL_FLOAT_CLASS_ID, loading) {}
|
|
~ScriptFloatControl() {}
|
|
|
|
RefTargetHandle Clone(RemapDir& remap=NoRemap()) { ScriptFloatControl *newob = new ScriptFloatControl(*this); BaseClone(this, newob, remap); return(newob); }
|
|
void GetClassName(TSTR& s) { s = _T("Float_script"); }
|
|
Class_ID ClassID() { return Class_ID(SCRIPT_FLOAT_CONTROL_CLASS_ID,0); }
|
|
SClass_ID SuperClassID() { return CTRL_FLOAT_CLASS_ID; }
|
|
};
|
|
|
|
class ScriptScaleControl : public ScriptControl
|
|
{
|
|
public:
|
|
ScriptScaleControl(ScriptScaleControl &ctrl) : ScriptControl(CTRL_SCALE_CLASS_ID, ctrl) {}
|
|
ScriptScaleControl(BOOL loading=FALSE) : ScriptControl(CTRL_SCALE_CLASS_ID, loading) {}
|
|
~ScriptScaleControl() {}
|
|
|
|
RefTargetHandle Clone(RemapDir& remap=NoRemap()) { ScriptScaleControl *newob = new ScriptScaleControl(*this); BaseClone(this, newob, remap); return(newob); }
|
|
void GetClassName(TSTR& s) { s = _T("Scale_script"); }
|
|
Class_ID ClassID() { return Class_ID(SCRIPT_SCALE_CONTROL_CLASS_ID,0); }
|
|
SClass_ID SuperClassID() { return CTRL_SCALE_CLASS_ID; }
|
|
};
|
|
|
|
class ScriptRotControl : public ScriptControl
|
|
{
|
|
public:
|
|
ScriptRotControl(ScriptRotControl &ctrl) : ScriptControl(CTRL_ROTATION_CLASS_ID, ctrl) {}
|
|
ScriptRotControl(BOOL loading=FALSE) : ScriptControl(CTRL_ROTATION_CLASS_ID, loading) {}
|
|
~ScriptRotControl() {}
|
|
|
|
RefTargetHandle Clone(RemapDir& remap=NoRemap()) { ScriptRotControl *newob = new ScriptRotControl(*this); BaseClone(this, newob, remap); return(newob); }
|
|
void GetClassName(TSTR& s) { s = _T("Rotation_script"); }
|
|
Class_ID ClassID() { return Class_ID(SCRIPT_ROT_CONTROL_CLASS_ID,0); }
|
|
SClass_ID SuperClassID() { return CTRL_ROTATION_CLASS_ID; }
|
|
};
|
|
|
|
#endif
|