This reference page is linked to from the following overview topics: SDK Change Details.
#include "..\kernel\value.h"#include "..\maxwrapper\mxsobjects.h"#include "..\..\ref.h"#include "..\..\iparamm2.h"#include "..\..\iparamb2.h"#include "..\..\iparamb2Typedefs.h"#include "..\..\IMtlRender_Compatibility.h"#include "..\..\genlight.h"#include "..\..\gencam.h"#include "..\..\simpobj.h"#include "..\..\manipulator.h"#include "..\..\simpmod.h"#include "..\..\tvutil.h"#include "..\macros\define_implementations.h"Go to the source code of this file.
| #define is_msplugin_class | ( | v | ) | ((DbgVerify(!is_sourcepositionwrapper(v)), (v))->tag == class_tag(MSPluginClass)) |
| #define MPC_TEMPORARY (1<<0) |
Definition at line 207 of file mxsPlugin.h.
| #define MPC_REDEFINITION (1<<1) |
Definition at line 208 of file mxsPlugin.h.
| #define MPC_MS_CREATING (1<<2) |
Definition at line 209 of file mxsPlugin.h.
| #define MPC_MS_WAS_CREATING (1<<3) |
Definition at line 210 of file mxsPlugin.h.
| #define MPC_EDITING_IN_CP (1<<4) |
Definition at line 211 of file mxsPlugin.h.
| #define MPC_EDITING_IN_MTLEDT (1<<5) |
Definition at line 212 of file mxsPlugin.h.
| #define MPC_EDITING_IN_EFX (1<<6) |
Definition at line 213 of file mxsPlugin.h.
| #define MPC_REPLACE_UI (1<<7) |
Definition at line 214 of file mxsPlugin.h.
| #define MPC_INVISIBLE (1<<8) |
Definition at line 215 of file mxsPlugin.h.
| #define MPC_SILENTERRORS (1<<9) |
Definition at line 216 of file mxsPlugin.h.
| #define MPC_MAX_CREATING (1<<10) |
Definition at line 217 of file mxsPlugin.h.
| #define MPC_ABORT_CREATE (1<<11) |
Definition at line 218 of file mxsPlugin.h.
| #define MPC_LEVEL_6 (1<<12) |
Definition at line 219 of file mxsPlugin.h.
| #define MPC_IS_MANIP (1<<13) |
Definition at line 220 of file mxsPlugin.h.
| #define MPC_ALTERNATE (1<<14) |
Definition at line 221 of file mxsPlugin.h.
| #define MPC_CAD_FILESAVE (1<<15) |
Definition at line 223 of file mxsPlugin.h.
| #define MPC_PROMOTE_DEL_PROPS (1<<16) |
Definition at line 224 of file mxsPlugin.h.
| #define MPC_USE_PB_VALIDITY (1<<17) |
Definition at line 225 of file mxsPlugin.h.
| #define key_parm | ( | _key | ) | _get_key_param(keys, n_##_key) |
Definition at line 228 of file mxsPlugin.h.
| #define MSP_LOADING 0x0001 |
Definition at line 329 of file mxsPlugin.h.
| #define MSP_DISABLED 0x0002 |
Definition at line 330 of file mxsPlugin.h.
| #define MSP_DELETED 0x0004 |
Definition at line 331 of file mxsPlugin.h.
| #define MSPLUGIN_CHUNK 0x0010 |
Definition at line 420 of file mxsPlugin.h.
| typedef RefTargetHandle(* creator_fn)(MSPluginClass *pic, BOOL loading) |
Definition at line 89 of file mxsPlugin.h.
| anonymous enum |
Definition at line 71 of file mxsPlugin.h.
{
pl_this, pl_version, pl_loading, pl_delegate // common
};
| anonymous enum |
Definition at line 75 of file mxsPlugin.h.
{
pl_extent = pl_delegate + 1, pl_min, pl_max, pl_center // for SimpleMods
};
| anonymous enum |
Definition at line 79 of file mxsPlugin.h.
{
pl_mesh = pl_delegate + 1 // for SimpleObjects
};
| anonymous enum |
| pl_target | |
| pl_node | |
| pl_gizmoDontDisplay | |
| pl_gizmoDontHitTest | |
| pl_gizmoScaleToViewport | |
| pl_gizmoUseScreenSpace | |
| pl_gizmoActiveViewportOnly | |
| pl_gizmoUseRelativeScreenSpace |
Definition at line 83 of file mxsPlugin.h.
{
pl_target = pl_delegate + 1, pl_node, // for SimpleManipulators
pl_gizmoDontDisplay, pl_gizmoDontHitTest, pl_gizmoScaleToViewport,
pl_gizmoUseScreenSpace, pl_gizmoActiveViewportOnly, pl_gizmoUseRelativeScreenSpace,
};
| visible_class | ( | MSPluginClass | ) |
Define an equal operator (i.e. '==') for maxscript visible values.
Define a NOT equal operator (i.e. '!=') for maxscript visible values.
Definition at line 105 of file mxsPlugin.h.
: public MAXClass
{
protected:
MSPluginClass() { }
public:
Value* class_name; // UI-visible class name
HINSTANCE hInstance; // owning module
ClassDesc* extend_cd; // if extending, ClassDesc of class to extend
creator_fn obj_creator; // obj maker for the appropriate MSPlugin subclass
HashTable* local_scope; // local name space
Value** local_inits; // local var init vals
int local_count; // " " count
HashTable* handlers; // handler tables
Array* rollouts; // UI rollouts
MouseTool* create_tool; // scripted creation tool if non-NULL
Array* pblock_defs; // parameter block definition data from compiler (used to build the PB2 descs)
Array* remap_param_names; // defines the mapping of old param names to new param names
Array* loading_pblock_defs; // parameter block definition data for currently loading scene file (to permit old version schema migration)
Tab<ParamBlockDesc2*> pbds; // parameter block descriptors
ReferenceTarget* alternate; // any alternate UI object system-style during create mode
Tab<ParamRef> sub_texmaps; // param references to any texmaps in pblocks in instances of this class in subobjno order
Tab<ParamRef> sub_mtls; // param references to any mtls in pblocks in instances of this class in subobjno order
int version; // plugin version (from version: param on def header)
DWORD mpc_flags; // flags
DWORD rollup_state; // initial rollup state
static HashTable* msp_classes; // table of existing scripted plugin classes to enable redefinition
static MSPlugin* creating; // object currently being created if non-NULL
static bool loading; // currently loading defs from a scene file, delay TV & other updates
MSPluginClass(Value* name, MAXSuperClass* supcls, creator_fn cfn);
~MSPluginClass();
// definition and redefinition
static MSPluginClass* intern(Value* name, MAXSuperClass* supcls, creator_fn cfn);
void init(int local_count, Value** inits, HashTable* local_scope, HashTable* handlers, Array* pblock_defs, Array* iremap_param_names, Array* rollouts, MouseTool* create_tool);
// MAXScript required
// BOOL is_kind_of(ValueMetaClass* c) { return (c == class_tag(MSPluginClass)) ? 1 : Value::is_kind_of(c); } // LAM: 2/23/01
BOOL is_kind_of(ValueMetaClass* c) { return (c == class_tag(MSPluginClass)) ? 1 : MAXClass::is_kind_of(c); }
# define is_msplugin_class(v) ((DbgVerify(!is_sourcepositionwrapper(v)), (v))->tag == class_tag(MSPluginClass))
void gc_trace();
void collect() { delete this; }
// from Value
Value* apply(Value** arglist, int count, CallContext* cc=NULL); // object creation by applying class object
// local
void SetClassID(Value* cidv);
void SetExtension(Value* cls);
void SetVersion(Value* ver) { version = ver->to_int(); }
void StopEditing(int stop_flags = 0);
void RestartEditing();
static int lookup_assetType(Value* name);
static ParamType2 lookup_type(Value* name);
void call_handler(Value* handler, Value** arg_list, int count, TimeValue t, BOOL disable_on_error=FALSE);
// low level handler call, returns result from handler, but needs init_thread_locals() & push/pop_alloc_frame around it
Value* _call_handler(Value* handler, Value** arg_list, int count, TimeValue t, BOOL disable_on_error=FALSE);
virtual bool is_custAttribDef() { return false; }
// alternate UI
void install_alternate(ReferenceTarget* ref);
// schema migration
void build_paramblk_descs();
void redefine(MSPlugin* val, HashTable* old_locals, Array* old_pblock_defs);
Array* find_pblock_def(Value* name, Array* pblock_defs);
// scene I/O
static void save_class_defs(ISave* isave);
static IOResult load_class_def(ILoad* iload);
static void post_load(ILoad *iload, int which);
// ClassDesc delegates
virtual RefTargetHandle Create(BOOL loading);
const MCHAR* ClassName() { return class_name->to_string(); }
SClass_ID SuperClassID() { return sclass_id; }
Class_ID ClassID() { return class_id; }
const MCHAR* Category() { return category ? category->to_string() : _M(""); }
const MCHAR* InternalName() { return name->to_string(); }
HINSTANCE HInstance() { return hInstance; }
BOOL IsManipulator();
BOOL CanManipulate(ReferenceTarget* hTarget);
BOOL CanManipulateNode(INode* pNode);
Manipulator* CreateManipulator(ReferenceTarget* hTarget, INode* pNode);
Manipulator* CreateManipulator(INode* pNode);
#include "..\macros\define_implementations.h"
// props
def_prop_getter(name);
};