208 lines
5.9 KiB
C++
Executable File
208 lines
5.9 KiB
C++
Executable File
/*
|
|
* MAXMaterials.h - MAX material & map wrapper classes
|
|
*
|
|
* Copyright © John Wainwright 1996
|
|
*
|
|
*/
|
|
|
|
#ifndef _H_MAXMATERIALS
|
|
#define _H_MAXMATERIALS
|
|
|
|
#include "Max.h"
|
|
#include "MaxObj.h"
|
|
|
|
#if 0 // HEY!! add material library access
|
|
virtual int LoadMaterialLib(const TCHAR *name)=0;
|
|
virtual int SaveMaterialLib(const TCHAR *name)=0;
|
|
virtual MtlBaseLib& GetMaterialLibrary()=0;
|
|
static Class_ID mtlBaseLibClassID(MTLBASE_LIB_CLASS_ID,0);
|
|
#endif
|
|
|
|
/* -------------------------- MAXMaterial -------------------------- */
|
|
|
|
visible_class (MAXMaterial)
|
|
|
|
class MAXMaterial : public MAXWrapper
|
|
{
|
|
public:
|
|
Mtl* mat; /* the MAX-side material */
|
|
|
|
MAXMaterial() {};
|
|
MAXMaterial(Mtl* imat);
|
|
static ScripterExport Value* intern(Mtl* imat);
|
|
|
|
static Value* make(MAXClass* cls, Value** arg_list, int count);
|
|
|
|
BOOL is_kind_of(ValueMetaClass* c) { return (c == class_tag(MAXMaterial)) ? 1 : MAXWrapper::is_kind_of(c); }
|
|
void collect() { delete this; }
|
|
ScripterExport void sprin1(CharStream* s);
|
|
TCHAR* class_name();
|
|
|
|
#include "defimpfn.h"
|
|
Value* copy_vf(Value** arg_list, int count) { return MAXWrapper::copy_no_undo(arg_list, count); }
|
|
|
|
def_property ( name );
|
|
def_property ( effectsChannel );
|
|
def_property ( showInViewport );
|
|
Value* get_property(Value** arg_list, int count);
|
|
Value* set_property(Value** arg_list, int count);
|
|
|
|
Mtl* to_mtl() { check_for_deletion(); return mat; }
|
|
MtlBase* to_mtlbase() { check_for_deletion(); return mat; }
|
|
void to_fpvalue(FPValue& v) { v.mtl = mat; v.type = TYPE_MTL; }
|
|
};
|
|
|
|
/* ---------------------- MAXMultiMaterial ----------------------- */
|
|
|
|
visible_class (MAXMultiMaterial)
|
|
|
|
class MAXMultiMaterial : public MAXMaterial
|
|
{
|
|
public:
|
|
|
|
MAXMultiMaterial() {};
|
|
MAXMultiMaterial(MultiMtl* imat);
|
|
static ScripterExport Value* intern(MultiMtl* imat);
|
|
|
|
static Value* make(MAXClass* cls, Value** arg_list, int count);
|
|
|
|
BOOL is_kind_of(ValueMetaClass* c) { return (c == class_tag(MAXMultiMaterial)) ? 1 : MAXMaterial::is_kind_of(c); }
|
|
void collect() { delete this; }
|
|
ScripterExport void sprin1(CharStream* s);
|
|
TCHAR* class_name();
|
|
|
|
def_generic (get, "get");
|
|
def_generic (put, "put");
|
|
Value* copy_vf(Value** arg_list, int count) { return MAXWrapper::copy_no_undo(arg_list, count); }
|
|
|
|
ScripterExport Value* map(node_map& m);
|
|
|
|
def_property( numsubs );
|
|
def_property( count );
|
|
|
|
Mtl* to_mtl() { return mat; }
|
|
MtlBase* to_mtlbase() { check_for_deletion(); return mat; }
|
|
void to_fpvalue(FPValue& v) { v.mtl = mat; v.type = TYPE_MTL; }
|
|
};
|
|
|
|
/* ---------------------- Material Library ----------------------- */
|
|
|
|
applyable_class (MAXMaterialLibrary)
|
|
|
|
class MAXMaterialLibrary : public MAXWrapper
|
|
{
|
|
public:
|
|
MtlBaseLib new_lib;
|
|
MtlBaseLib& lib;
|
|
|
|
MAXMaterialLibrary(MtlBaseLib& ilib);
|
|
MAXMaterialLibrary(MtlBaseLib* ilib);
|
|
MAXMaterialLibrary();
|
|
static ScripterExport Value* intern(MtlBaseLib& ilib);
|
|
static ScripterExport Value* intern(MtlBaseLib* ilib);
|
|
|
|
classof_methods (MAXMaterialLibrary, MAXWrapper);
|
|
void collect() { delete this; }
|
|
ScripterExport void sprin1(CharStream* s);
|
|
MtlBase* get_mtlbase(int index);
|
|
MtlBase* find_mtlbase(TCHAR* name);
|
|
TCHAR* class_name();
|
|
|
|
/* operations */
|
|
|
|
ScripterExport Value* map(node_map& m);
|
|
|
|
#include "defimpfn.h"
|
|
# include "arraypro.h"
|
|
Value* copy_vf(Value** arg_list, int count) { return MAXWrapper::copy_no_undo(arg_list, count); }
|
|
|
|
/* built-in property accessors */
|
|
|
|
def_property ( count );
|
|
};
|
|
|
|
/* ------------------------- MAXTexture ------------------------ */
|
|
|
|
visible_class (MAXTexture)
|
|
|
|
class MAXTexture : public MAXWrapper
|
|
{
|
|
public:
|
|
Texmap* map; /* the MAX-side map */
|
|
|
|
MAXTexture(Texmap* imap);
|
|
static ScripterExport Value* intern(Texmap* imap);
|
|
|
|
static Value* make(MAXClass* cls, Value** arg_list, int count);
|
|
|
|
BOOL is_kind_of(ValueMetaClass* c) { return (c == class_tag(MAXTexture)) ? 1 : MAXWrapper::is_kind_of(c); }
|
|
void collect() { delete this; }
|
|
ScripterExport void sprin1(CharStream* s);
|
|
TCHAR* class_name();
|
|
|
|
#include "defimpfn.h"
|
|
# include "texmapro.h"
|
|
Value* copy_vf(Value** arg_list, int count) { return MAXWrapper::copy_no_undo(arg_list, count); }
|
|
|
|
def_property( name );
|
|
|
|
Texmap* to_texmap() { check_for_deletion(); return map; }
|
|
MtlBase* to_mtlbase() { check_for_deletion(); return map; }
|
|
void to_fpvalue(FPValue& v) { v.tex = map; v.type = TYPE_TEXMAP; }
|
|
};
|
|
|
|
/* -------------------------- MAXMtlBase -------------------------- */
|
|
|
|
// a generic wrapper for MtlBase classes such as UVGen, XYZGen, TexOut, etc.
|
|
|
|
visible_class (MAXMtlBase)
|
|
|
|
class MAXMtlBase : public MAXWrapper
|
|
{
|
|
public:
|
|
MtlBase* mtl; /* the MAX-side mtlbase */
|
|
|
|
MAXMtlBase(MtlBase* imtl);
|
|
static ScripterExport Value* intern(MtlBase* imtl);
|
|
|
|
static Value* make(MAXClass* cls, Value** arg_list, int count);
|
|
|
|
BOOL is_kind_of(ValueMetaClass* c) { return (c == class_tag(MAXMtlBase)) ? 1 : MAXWrapper::is_kind_of(c); }
|
|
void collect() { delete this; }
|
|
ScripterExport void sprin1(CharStream* s);
|
|
TCHAR* class_name() { return _T("MapSupportClass"); }
|
|
Value* copy_vf(Value** arg_list, int count) { return MAXWrapper::copy_no_undo(arg_list, count); }
|
|
|
|
MtlBase* to_mtlbase() { check_for_deletion(); return mtl; }
|
|
};
|
|
|
|
/* ------------------ MEdit materials virtual array -------------------- */
|
|
|
|
visible_class (MAXMeditMaterials)
|
|
|
|
class MAXMeditMaterials : public Value
|
|
{
|
|
public:
|
|
MAXMeditMaterials() { tag = &MAXMeditMaterials_class; }
|
|
|
|
classof_methods (MAXMeditMaterials, Value);
|
|
void collect() { delete this; }
|
|
ScripterExport void sprin1(CharStream* s);
|
|
MtlBase* get_mtl(int index);
|
|
MtlBase* find_mtl(TCHAR* name);
|
|
static void setup();
|
|
|
|
// operations
|
|
ScripterExport Value* map(node_map& m);
|
|
|
|
#include "defimpfn.h"
|
|
# include "arraypro.h"
|
|
|
|
// built-in property accessors
|
|
def_property ( count );
|
|
};
|
|
|
|
extern ScripterExport MAXMeditMaterials medit_materials;
|
|
|
|
#endif
|