This reference page is linked to from the following overview topics: Using the API to Create and Modify 3ds Max NURBS Models, Published Functions and MAXScript, Deferred Loading of Plug-ins, MAXScript Marshalling of Function Arguments, MAXScript Functions, Exposing a Function to MAXScript, MAXScript Distinguished Values, MAXScript Compiler and Interpreter, MAXScript Functions with Optional Arguments.
#include
"../ScripterExport.h"#include "collectable.h"#include "interupts.h"#include "MAXScript_TLS.h"#include "../macros/value_locals.h"#include "MaxscriptTypedefs.h"#include "../../matrix3.h"#include "../../box2.h"#include "../../acolor.h"#include "../../interval.h"#include "../../quat.h"#include "../../ifnpub.h"#include "../macros/define_external_functions.h"#include "../protocols/corenames.inl"#include "../macros/define_abstract_functions.h"#include "../protocols/math.inl"#include "../protocols/vector.inl"#include "../protocols/matrix.inl"#include "../protocols/quat.inl"#include "../protocols/arrays.inl"#include "../protocols/streams.inl"#include "../protocols/strings.inl"#include "../protocols/time.inl"#include "../protocols/color.inl"#include "../protocols/node.inl"#include "../protocols/controller.inl"#include "../protocols/primitives.inl"#include "../protocols/generics.inl"#include "../protocols/bitmaps.inl"#include "../protocols/textures.inl"#include "../protocols/atmospherics.inl"#include "../protocols/cameratracker.inl"#include "../protocols/bigmatrix.inl"#include "../protocols/box.inl"#include "../protocols/physiqueblend.inl"#include "../protocols/physiquemod.inl"#include "../protocols/biped.inl"#include "../protocols/notekey.inl"#include "../protocols/xrefs.inl"#include "../protocols/kernel.inl"| #define is_valueclass | ( | v | ) | ((DbgVerify(!is_sourcepositionwrapper(v)), (v))->tag == (ValueMetaClass*)&value_metaclass) |
| #define CHECK_ARG_COUNT | ( | fn, | |
| w, | |||
| g | |||
| ) | if ((w) != (g)) throw ArgCountError (_M(#fn), w, g) |
| #define classof_methods | ( | _cls, | |
| _super | |||
| ) |
Value* classOf_vf(Value** arg_list, int count) \ { \ UNUSED_PARAM(arg_list); \ CHECK_ARG_COUNT(classOf, 1, count + 1); \ return &_cls##_class; \ } \ Value* superClassOf_vf(Value** arg_list, int count) \ { \ UNUSED_PARAM(arg_list); \ CHECK_ARG_COUNT(superClassOf, 1, count + 1); \ return &_super##_class; \ } \ Value* isKindOf_vf(Value** arg_list, int count) \ { \ CHECK_ARG_COUNT(isKindOf, 2, count + 1); \ return (arg_list[0] == &_cls##_class) ? \ &true_value : \ _super::isKindOf_vf(arg_list, count); \ } \ BOOL is_kind_of(ValueMetaClass* c) \ { \ return (c == &_cls##_class) ? 1 \ : _super::is_kind_of(c); \ }
| #define visible_class | ( | _cls | ) |
class _cls##Class : public ValueMetaClass \ { \ public: \ _cls##Class(const MCHAR* name) : ValueMetaClass (name) { } \ void collect() { delete this; } \ }; \ extern ScripterExport _cls##Class _cls##_class;
| #define visible_class_debug_ok | ( | _cls | ) |
class _cls##Class : public ValueMetaClass \ { \ public: \ _cls##Class(const MCHAR* name) : ValueMetaClass (name) { flags3 |= VALUE_FLAGBIT_0; } \ void collect() { delete this; } \ }; \ extern ScripterExport _cls##Class _cls##_class;
| #define visible_class_s | ( | _cls, | |
| _super | |||
| ) |
class _cls##Class : public ValueMetaClass \ { \ public: \ _cls##Class(const MCHAR* name) : ValueMetaClass (name) { } \ void collect() { delete this; } \ Value* classOf_vf(Value** arg_list, int count) \ { \ UNUSED_PARAM(arg_list); \ CHECK_ARG_COUNT(classOf, 1, count + 1); \ return &_super##_class; \ } \ Value* superClassOf_vf(Value** arg_list, int count) \ { \ UNUSED_PARAM(arg_list); \ UNUSED_PARAM(count); \ return _super##_class.classOf_vf(NULL, 0); \ } \ }; \ extern ScripterExport _cls##Class _cls##_class;
| #define applyable_class | ( | _cls | ) |
class _cls##Class : public ValueMetaClass \ { \ public: \ _cls##Class(const MCHAR* name) : ValueMetaClass (name) { }\ void collect() { delete this; } \ ScripterExport Value* apply(Value** arglist, int count, CallContext* cc=NULL); \ }; \ extern ScripterExport _cls##Class _cls##_class;
| #define applyable_class_debug_ok | ( | _cls | ) |
class _cls##Class : public ValueMetaClass \ { \ public: \ _cls##Class(const MCHAR* name) : ValueMetaClass (name) { flags3 |= VALUE_FLAGBIT_0; }\ void collect() { delete this; } \ ScripterExport Value* apply(Value** arglist, int count, CallContext* cc=NULL); \ }; \ extern ScripterExport _cls##Class _cls##_class;
| #define applyable_class_s | ( | _cls, | |
| _super | |||
| ) |
class _cls##Class : public ValueMetaClass \ { \ public: \ _cls##Class(const MCHAR* name) : ValueMetaClass (name) { }\ Value* classOf_vf(Value** arg_list, int count) \ { \ UNUSED_PARAM(arg_list); \ CHECK_ARG_COUNT(classOf, 1, count + 1); \ return &_super##_class; \ } \ Value* superClassOf_vf(Value** arg_list, int count) \ { \ UNUSED_PARAM(arg_list); \ UNUSED_PARAM(count); \ return _super##_class.classOf_vf(NULL, 0); \ } \ void collect() { delete this; } \ ScripterExport Value* apply(Value** arglist, int count, CallContext* cc=NULL); \ }; \ extern ScripterExport _cls##Class _cls##_class;
| #define visible_class_instance | ( | _cls, | |
| _name | |||
| ) | ScripterExport _cls##Class _cls##_class (_M(_name)); |
| #define invisible_class | ( | _cls | ) |
class _cls##Class : public ValueMetaClass \ { \ public: \ _cls##Class(const MCHAR* name) : ValueMetaClass (name) { } \ void collect() { delete this; } \ void export_to_scripter() { } \ }; \ extern ScripterExport _cls##Class _cls##_class;
| #define invisible_class_instance | ( | _cls, | |
| _name | |||
| ) | ScripterExport _cls##Class _cls##_class (_M(_name)); |
| #define class_tag | ( | _cls | ) | &_cls##_class |
| #define INTERNAL_CLASS_TAG ((ValueMetaClass*)0L) |
| #define INTERNAL_INDEX_THUNK_TAG ((ValueMetaClass*)1L) |
| #define INTERNAL_PROP_THUNK_TAG ((ValueMetaClass*)2L) |
| #define INTERNAL_LOCAL_THUNK_TAG ((ValueMetaClass*)3L) |
| #define INTERNAL_FREE_THUNK_TAG ((ValueMetaClass*)4L) |
| #define INTERNAL_RO_LOCAL_THUNK_TAG ((ValueMetaClass*)5L) |
| #define INTERNAL_CODE_TAG ((ValueMetaClass*)6L) |
| #define INTERNAL_SOURCEFILEWRAPPER_TAG ((ValueMetaClass*)7L) |
| #define INTERNAL_PIPE_TAG ((ValueMetaClass*)8L) |
| #define INTERNAL_TOOL_LOCAL_THUNK_TAG ((ValueMetaClass*)9L) |
| #define INTERNAL_GLOBAL_THUNK_TAG ((ValueMetaClass*)10L) |
| #define INTERNAL_CONST_GLOBAL_THUNK_TAG ((ValueMetaClass*)11L) |
| #define INTERNAL_SYS_GLOBAL_THUNK_TAG ((ValueMetaClass*)12L) |
| #define INTERNAL_PLUGIN_LOCAL_THUNK_TAG ((ValueMetaClass*)13L) |
| #define INTERNAL_PLUGIN_PARAM_THUNK_TAG ((ValueMetaClass*)14L) |
| #define INTERNAL_RCMENU_LOCAL_THUNK_TAG ((ValueMetaClass*)15L) |
| #define INTERNAL_STRUCT_MEM_THUNK_TAG ((ValueMetaClass*)16L) |
| #define INTERNAL_MSPLUGIN_TAG ((ValueMetaClass*)17L) |
| #define INTERNAL_STRUCT_TAG ((ValueMetaClass*)18L) |
| #define INTERNAL_MAKER_TAG ((ValueMetaClass*)19L) |
| #define INTERNAL_CODEBLOCK_LOCAL_TAG ((ValueMetaClass*)20L) |
| #define INTERNAL_CODEBLOCK_TAG ((ValueMetaClass*)21L) |
| #define INTERNAL_THUNK_REF_TAG ((ValueMetaClass*)22L) |
| #define INTERNAL_THUNK_DEREF_TAG ((ValueMetaClass*)23L) |
| #define INTERNAL_STRUCT_METHOD_TAG ((ValueMetaClass*)24L) |
| #define INTERNAL_MSPLUGIN_METHOD_TAG ((ValueMetaClass*)25L) |
| #define INTERNAL_CONTEXT_THUNK_TAG ((ValueMetaClass*)26L) |
| #define INTERNAL_OWNER_THUNK_TAG ((ValueMetaClass*)27L) |
| #define INTERNAL_RCMENU_ITEM_THUNK_TAG ((ValueMetaClass*)28L) |
| #define INTERNAL_STANDINMSPLUGINCLASS_TAG ((ValueMetaClass*)29L) |
| #define INTERNAL_SOURCEPOSWRAPPER_TAG ((ValueMetaClass*)30L) |
| #define INTERNAL_TAGS ((ValueMetaClass*)100L) |
| #define is_sourcepositionwrapper | ( | v | ) | ((v)->tag == INTERNAL_SOURCEPOSWRAPPER_TAG) |
| #define is_bool | ( | v | ) | ((DbgVerify(!is_sourcepositionwrapper(v)), (v))->tag == &Boolean_class) |
{ return v ? v->get_heap_ptr() : NULL; } // ensure v is in heap, migrate if not, return heap pointer
{ return v->get_live_ptr(); } // get live pointer, if on stack & migrated, heap copy is live
| visible_class_debug_ok | ( | Value | ) |
| visible_class_debug_ok | ( | Undefined | ) |
: public Value
{
public:
Undefined() { tag = &Undefined_class; }
classof_methods (Undefined, Value);
void collect();
ScripterExport void sprin1(CharStream* s);
Value* copy_vf(Value** arg_list, int count) { return this; }
// scene I/O
IOResult Save(ISave* isave);
static Value* Load(ILoad* iload, USHORT chunkID, ValueLoader* vload);
Mtl* to_mtl() { return NULL; } // undefined is a NULL material
void to_fpvalue(FPValue& v);
};
| visible_class_debug_ok | ( | Ok | ) |
: public Value
{
public:
Ok() { tag = &Ok_class; }
classof_methods (Ok, Value);
void collect();
ScripterExport void sprin1(CharStream* s);
Value* copy_vf(Value** arg_list, int count) { return this; }
// scene I/O
IOResult Save(ISave* isave);
static Value* Load(ILoad* iload, USHORT chunkID, ValueLoader* vload);
void to_fpvalue(FPValue& v);
};
| visible_class_debug_ok | ( | Empty | ) |
: public Value
{
public:
Empty() { tag = &Empty_class; }
classof_methods (Empty, Value);
void collect();
ScripterExport void sprin1(CharStream* s);
Value* copy_vf(Value** arg_list, int count) { return this; }
// scene I/O
IOResult Save(ISave* isave);
static Value* Load(ILoad* iload, USHORT chunkID, ValueLoader* vload);
void to_fpvalue(FPValue& v);
};
| visible_class_debug_ok | ( | Unsupplied | ) |
: public Value
{
public:
Unsupplied() { tag = &Unsupplied_class; }
classof_methods (Unsupplied, Value);
void collect();
ScripterExport void sprin1(CharStream* s);
Value* copy_vf(Value** arg_list, int count) { return this; }
// scene I/O
IOResult Save(ISave* isave);
static Value* Load(ILoad* iload, USHORT chunkID, ValueLoader* vload);
void to_fpvalue(FPValue& v);
};
| visible_class_debug_ok | ( | NoValue | ) |
: public Value
{
public:
NoValue() { tag = &NoValue_class; }
classof_methods (NoValue, Value);
void collect();
ScripterExport void sprin1(CharStream* s);
Value* copy_vf(Value** arg_list, int count) { return this; }
// scene I/O
IOResult Save(ISave* isave);
static Value* Load(ILoad* iload, USHORT chunkID, ValueLoader* vload);
void to_fpvalue(FPValue& v);
ScripterExport virtual void sprint(CharStream* stream);
};
| ScripterExport Undefined undefined |
| ScripterExport bool dontThrowAccessorError |
| MetaClassClass value_metaclass |
| ScripterExport Boolean true_value |
| ScripterExport Boolean false_value |
| ScripterExport Undefined dontCollect |
| ScripterExport Undefined loopExit |
| ScripterExport Ok ok |
| ScripterExport Empty empty |
| ScripterExport Unsupplied unsupplied |
| ScripterExport NoValue noValue |