00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015 #pragma once
00016
00017 #ifndef _CPPRTTI
00018 #error 3ds Max plugins and dlls must compile with run-time type information (RTTI) On.\
00019 RTTI can be turned on via the Language tab in the C++ folder of the \
00020 Visual Studio project settings of your project, or the /GR compiler flag.
00021 #endif
00022
00023 #include "maxheap.h"
00024 #include "maxtypes.h"
00025 #include "buildver.h"
00026 #include "maxversion.h"
00027 #include "iparamb2Typedefs.h"
00028 #include "coreexp.h"
00029 #include "tab.h"
00030 #include "strbasic.h"
00031 #include "box2.h"
00032
00033 class INode;
00034 class ReferenceMaker;
00035
00050
00051
00052
00053
00054
00055
00056
00057
00058
00063
00064 #define MAX_RELEASE_UNSUPPORTED (-1)
00065
00066
00067
00068
00069
00070
00071
00072
00073
00074
00075
00076
00077
00078
00080 #define MAX_RELEASE_R7 7000
00081
00082 #define MAX_RELEASE_R8_ALPHA 7800
00083
00084 #define MAX_RELEASE_R8 8000
00085
00086 #define MAX_RELEASE_R9_ALPHA 8900
00087
00088 #define MAX_RELEASE_R9_ALPHA2 8901
00089
00090 #define MAX_RELEASE_R9 9000
00091
00092 #define MAX_RELEASE_R10_ALPHA 9900
00093
00094 #define MAX_RELEASE_R10 10000
00095
00096 #define MAX_RELEASE_R11_ALPHA 10900
00097
00098 #define MAX_RELEASE_R11 11000
00099
00100 #define MAX_RELEASE_R12_ALPHA 11900
00101
00102 #define MAX_RELEASE_R12 12000
00103
00104 #define MAX_RELEASE_R13_ALPHA 12900
00105
00106 #define MAX_RELEASE_R13 13000
00107
00108 #define MAX_RELEASE_R14_ALPHA 13900
00109
00110 #define MAX_RELEASE_R14 14000
00111
00112 #define MAX_RELEASE MAX_RELEASE_R14
00113
00114
00119 #ifndef MAX_RELEASE_EXTERNAL
00120 #define MAX_RELEASE_EXTERNAL MAX_RELEASE
00121 #endif
00122
00146
00147
00148
00149
00150
00151 #define MAX_API_NUM_R20 4 // DDS 9/30/97
00152 #define MAX_API_NUM_R25 5 // DDS 10/06/97
00153 #define MAX_API_NUM_R30 6 // DDS 9/3/98
00154 #define MAX_API_NUM_R31 7 // CCJ 5/14/99
00155 #define MAX_API_NUM_R40 8 // CCJ 11/29/00 - R4
00156 #define MAX_API_NUM_R42 9 // R5 011031 --prs.
00157
00158 #define MAX_API_NUM_R50 11 // R5 FCS 020624 --prs.
00159
00160 #define MAX_API_NUM_R60_PRE_REL 12 // R6 prerelease 030409 --prs.
00161
00162 #define MAX_API_NUM_R60 13 // R6 FCS 030806 --prs.
00163
00164 #define MAX_API_NUM_R70_PRE_REL 14 // R7 prerelease 05/18/04 - russom
00165
00166 #define MAX_API_NUM_R70 15 // R7 FCS -- 2004-09-02 -- raffenn
00167
00168 #define MAX_API_NUM_R80_PRE_REL 16 // R8 pre-release Vesper -- 2005-01-18 -- raffenn
00169
00170 #define MAX_API_NUM_R80 17 // R8 FCS max 8 -- 2005-09-01 -- raffenn
00171
00172 #define MAX_API_NUM_R90_ALPHA 18 // R9 alpha -- 2005-09-21 -- aszabo
00173
00174 #define MAX_API_NUM_R90_BETA1 19
00175
00176 #define MAX_API_NUM_R90_BETA3 20
00177
00178 #define MAX_API_NUM_R90 21
00179
00180 #define MAX_API_NUM_R100_BETA5 22
00181
00182 #define MAX_API_NUM_R100 23
00183
00184 #define MAX_API_NUM_R110_ALPHA 24
00185
00186 #define MAX_API_NUM_R110 25
00187
00188 #define MAX_API_NUM_R120_ALPHA2 26
00189
00190 #define MAX_API_NUM_R120_ALPHA3 27
00191
00192 #define MAX_API_NUM_R120_ALPHA4 28
00193
00194 #define MAX_API_NUM_R120_BETA1 29
00195
00196 #define MAX_API_NUM_R120_BETA3 30
00197
00198 #define MAX_API_NUM_R120_BETA4 31
00199
00200 #define MAX_API_NUM_R120_BETA5 32
00201
00202 #define MAX_API_NUM_R120 33
00203
00204 #define MAX_API_NUM_R130_BETA1 34
00205
00206 #define MAX_API_NUM_R130 35
00207
00208 #define MAX_API_NUM_R140_ALPHA1 36
00209
00210 #define MAX_API_NUM_R140_BETA2 37
00211
00212 #define MAX_API_NUM_R140 38
00213
00218 #define MAX_API_NUM MAX_API_NUM_R140
00219
00224 #define MAX_SDK_REV 0 // DDS 9/20/97
00225
00227 #define VERSION_3DSMAX ((MAX_RELEASE<<16)+(MAX_API_NUM<<8)+MAX_SDK_REV)
00228
00229
00230 enum APPLICATION_ID {kAPP_NONE, kAPP_MAX, kAPP_VIZ, kAPP_GMAX, kAPP_PLASMA, kAPP_VIZR};
00231
00235 CoreExport APPLICATION_ID GetAppID();
00236
00239
00240 #define GET_MAX_RELEASE(x) (((x)>>16)&0xffff)
00241 #define GET_MAX_API_NUM(x) (((x)>>8)&0xff)
00242 #define GET_MAX_SDK_REV(x) ((x)&0xff)
00243 #define GET_MAX_SDK_NUMREV(x) ((x)&0xffff)
00244
00245
00247
00249
00255 #define GEN_MODAPP_CLASS_ID 0x00000b
00256 #define MODAPP_CLASS_ID 0x00000c
00257 #define OBREF_MODAPP_CLASS_ID 0x00000d
00258 #define BASENODE_CLASS_ID 0x000001
00259 #define GEN_DERIVOB_CLASS_ID 0x000002
00260 #define DERIVOB_CLASS_ID 0x000003
00261 #define WSM_DERIVOB_CLASS_ID 0x000004
00262 #define PARAMETER_BLOCK_CLASS_ID 0x000008
00263 #define PARAMETER_BLOCK2_CLASS_ID 0x000082
00264 #define EASE_LIST_CLASS_ID 0x000009
00265 #define AXIS_DISPLAY_CLASS_ID 0x00000e
00266 #define MULT_LIST_CLASS_ID 0x00000f
00267 #define NOTETRACK_CLASS_ID 0x0000ff
00268 #define TREE_VIEW_CLASS_ID 0xffffff00
00269 #define SCENE_CLASS_ID 0xfffffd00
00270 #define THE_GRIDREF_CLASS_ID 0xfffffe00
00271 #define VIEWREF_CLASS_ID 0xffffff01
00272 #define BITMAPDAD_CLASS_ID 0xffffff02 // For drag and drop of bitmaps
00273 #define PARTICLE_SYS_CLASS_ID 0xffffff03 // NOTE: this is for internal use only. Particle systems return GEOMOBJECT_CLASS_ID -- use IsParticleObject() to determine if an object is a particle system.
00274 #define AGGMAN_CLASS_ID 0xffffff05 // Object aggregation, VIZ
00275 #define MAXSCRIPT_WRAPPER_CLASS_ID 0xffffff06 // MAX object wrappers within MAXScript
00276 #define TRACKBAR_CLASS_ID 0xffffff07 // Trackbar
00277 #define MAKEREF_REST_CLASS_ID 0x9876544 // MakeRefRestore
00278 #define DELREF_REST_CLASS_ID 0x9876543 // DeleteRefRestore
00279 #define ASSIGNREF_REST_CLASS_ID 0x121242 // AssignMtlRestore
00280 #define LAYER_CLASS_ID 0x0010f0
00281
00282
00286
00287 #define GEOMOBJECT_CLASS_ID 0x000010 //!< Geometric object super-class ID.
00288 #define CAMERA_CLASS_ID 0x000020 //!< Camera object super-class ID.
00289 #define LIGHT_CLASS_ID 0x000030 //!< Light object super-class ID.
00290 #define SHAPE_CLASS_ID 0x000040 //!< Shape object super-class ID.
00291 #define HELPER_CLASS_ID 0x000050 //!< Helper object super-class ID.
00292 #define SYSTEM_CLASS_ID 0x000060 //!< System plug-in super-class ID.
00293 #define REF_MAKER_CLASS_ID 0x000100 //!< ReferenceMaker super-class ID.
00294 #define REF_TARGET_CLASS_ID 0x000200 //!< ReferenceTarget super-class ID.
00295 #define OSM_CLASS_ID 0x000810 //!< Object-space modifier (Modifier) super-class ID.
00296 #define WSM_CLASS_ID 0x000820 //!< World-space modifier (WSModifier) super-class ID.
00297 #define WSM_OBJECT_CLASS_ID 0x000830 //!< World-space modifier object (WSMObject) super-class ID.
00298 #define SCENE_IMPORT_CLASS_ID 0x000A10 //!< Scene importer (SceneImport) super-class ID.
00299 #define SCENE_EXPORT_CLASS_ID 0x000A20 //!< Scene exporter (SceneExport) super-class ID.
00300 #define BMM_STORAGE_CLASS_ID 0x000B10 //!< Bitmap storage super-class ID.
00301 #define BMM_FILTER_CLASS_ID 0x000B20 //!< Image filter super-class ID.
00302 #define BMM_IO_CLASS_ID 0x000B30 //!< Image loading/saving super-class ID.
00303 #define BMM_DITHER_CLASS_ID 0x000B40 //!< Bitmap dithering super-class ID.
00304 #define BMM_COLORCUT_CLASS_ID 0x000B50 //!< Shape object super-class ID.
00305 #define USERDATATYPE_CLASS_ID 0x000B60 //!< \deprecated
00306 #define MATERIAL_CLASS_ID 0x000C00 //!< Materials super-class ID.
00307 #define TEXMAP_CLASS_ID 0x000C10 //!< Texture maps super-class ID.
00308 #define UVGEN_CLASS_ID 0x0000C20 //!< UV Generator super-class ID.
00309 #define XYZGEN_CLASS_ID 0x0000C30 //!< XYZ Generator super-class ID.
00310 #define TEXOUTPUT_CLASS_ID 0x0000C40 //!< Texture output filter super-class ID.
00311 #define SOUNDOBJ_CLASS_ID 0x000D00 //!< Sound object super-class ID.
00312 #define FLT_CLASS_ID 0x000E00 //!< Image processing filter super-class ID.
00313 #define RENDERER_CLASS_ID 0x000F00 //!< Renderer super-class ID.
00314 #define BEZFONT_LOADER_CLASS_ID 0x001000 //!< Bezier font loader super-class ID.
00315 #define ATMOSPHERIC_CLASS_ID 0x001010 //!< Atmospheric effect super-class ID.
00316 #define UTILITY_CLASS_ID 0x001020 //!< Utility object super-class ID.
00317 #define TRACKVIEW_UTILITY_CLASS_ID 0x001030 //!< Trackview utility super-class ID.
00318 #define FRONTEND_CONTROL_CLASS_ID 0x001040 //!< Front-end control super-class ID.
00319 #define MOT_CAP_DEV_CLASS_ID 0x001060 //!< Motion capture device super-class ID.
00320 #define MOT_CAP_DEVBINDING_CLASS_ID 0x001050 //!< Motion capture device binding super-class ID.
00321 #define OSNAP_CLASS_ID 0x001070 //!< Object snap super-class ID.
00322 #define TEXMAP_CONTAINER_CLASS_ID 0x001080 //!< Texture map container super-class ID.
00323 #define RENDER_EFFECT_CLASS_ID 0x001090 //!< Render post-effects super-class ID.
00324 #define FILTER_KERNEL_CLASS_ID 0x0010a0 //!< Anti-aliasing filter kernel super-class ID.
00325 #define SHADER_CLASS_ID 0x0010b0 //!< Standard material shader super-class ID.
00326 #define COLPICK_CLASS_ID 0x0010c0 //!< Color picker super-class ID.
00327 #define SHADOW_TYPE_CLASS_ID 0x0010d0 //!< Shadow generator super-class ID.
00328 #define GUP_CLASS_ID 0x0010e0 //!< Global utility plug-in super-class ID.
00329 #define SCHEMATICVIEW_UTILITY_CLASS_ID 0x001100 //!< Schematic view utility super-class ID.
00330 #define SAMPLER_CLASS_ID 0x001110 //!< Sampler super-class ID.
00331 #define IK_SOLVER_CLASS_ID 0x001140 //!< IK solver super-class ID.
00332 #define RENDER_ELEMENT_CLASS_ID 0x001150 //!< Render output element super-class ID.
00333 #define BAKE_ELEMENT_CLASS_ID 0x001151 //!< Texture bake output element super-class ID.
00334 #define CUST_ATTRIB_CLASS_ID 0x001160 //!< Custom attributes super-class ID.
00335 #define RADIOSITY_CLASS_ID 0x001170 //!< Global illumination plugin super-class ID.
00336 #define TONE_OPERATOR_CLASS_ID 0x001180 //!< Tone operator super-class ID.
00337 #define MPASS_CAM_EFFECT_CLASS_ID 0x001190 //!< Multi-pass camera effect super-class ID.
00338 #define MR_SHADER_CLASS_ID_DEFUNCT 0x0011a0 //!< Mental ray shader super-class ID. \note No longer used, kept for file compatibility.
00339
00340
00343
00344 #define CTRL_SHORT_CLASS_ID 0x9001 //!< \deprecated
00345 #define CTRL_INTEGER_CLASS_ID 0x9002 //!< \deprecated
00346 #define CTRL_FLOAT_CLASS_ID 0x9003 //!< Float controller super-class ID.
00347 #define CTRL_POINT2_CLASS_ID 0x9004 //!< \deprecated
00348 #define CTRL_POINT3_CLASS_ID 0x9005 //!< Point3 controller super-class ID.
00349 #define CTRL_POS_CLASS_ID 0x9006 //!< \deprecated Use CTRL_POSITION_CLASS_ID instead.
00350 #define CTRL_QUAT_CLASS_ID 0x9007 //!< \deprecated
00351 #define CTRL_MATRIX3_CLASS_ID 0x9008 //!< Matrix3 controller super-class ID.
00352 #define CTRL_COLOR_CLASS_ID 0x9009 //!< \deprecated
00353 #define CTRL_COLOR24_CLASS_ID 0x900A //!< \deprecated
00354 #define CTRL_POSITION_CLASS_ID 0x900B //!< Position controller super-class ID.
00355 #define CTRL_ROTATION_CLASS_ID 0x900C //!< Rotation controller super-class ID.
00356 #define CTRL_SCALE_CLASS_ID 0x900D //!< Scale controller super-class ID.
00357 #define CTRL_MORPH_CLASS_ID 0x900E //!< Morph controller super-class ID.
00358 #define CTRL_USERTYPE_CLASS_ID 0x900F //!< \deprecated
00359 #define CTRL_MASTERPOINT_CLASS_ID 0x9010
00360 #define MASTERBLOCK_SUPER_CLASS_ID 0x9011
00361 #define CTRL_POINT4_CLASS_ID 0x9012
00362 #define CTRL_FRGBA_CLASS_ID 0x9013
00363
00364
00365
00366
00368 #define DEFORM_OBJ_CLASS_ID 0x000005 //!< Deformable object pseudo super-class ID
00369 #define MAPPABLE_OBJ_CLASS_ID 0x000006 //!< Mappable object pseudo super-class ID
00370 #define GENERIC_SHAPE_CLASS_ID 0x0000ab //!< Shape pseudo super-class ID
00371
00372
00374
00376
00382 #define PATH_CONTROL_CLASS_ID 0x2011
00383 #define EULER_CONTROL_CLASS_ID 0x2012
00384 #define EXPR_POS_CONTROL_CLASS_ID 0x2013
00385 #define EXPR_P3_CONTROL_CLASS_ID 0x2014
00386 #define EXPR_FLOAT_CONTROL_CLASS_ID 0x2015
00387 #define EXPR_SCALE_CONTROL_CLASS_ID 0x2016
00388 #define EXPR_ROT_CONTROL_CLASS_ID 0x2017
00389 #define LOCAL_EULER_CONTROL_CLASS_ID 0x2018
00390 #define POSITION_CONSTRAINT_CLASS_ID 0x2019 // AG added for Position Constraint 4/21/2000
00391 #define ORIENTATION_CONSTRAINT_CLASS_ID 0x2020 // AG added for Position Constraint 5/04/2000
00392 #define LOOKAT_CONSTRAINT_CLASS_ID 0x2021 // AG added for new LookAt Constraint 5/24/2000
00393 #define ADDITIVE_EULER_CONTROL_CLASS_ID 0x2022 // 000830 --prs.
00394 #define BOOLCNTRL_CLASS_ID Class_ID(0x5ed56fc5, 0x6af0e521) // AG added for the new Boolean Controller 11/08/2001
00395 #define FLOATNOISE_CONTROL_CLASS_ID 0x87a6df24
00396 #define POSITIONNOISE_CONTROL_CLASS_ID 0x87a6df25
00397 #define POINT3NOISE_CONTROL_CLASS_ID 0x87a6df26
00398 #define ROTATIONNOISE_CONTROL_CLASS_ID 0x87a6df27
00399 #define SCALENOISE_CONTROL_CLASS_ID 0x87a6df28
00400 #define SURF_CONTROL_CLASSID Class_ID(0xe8334011,0xaeb330c8)
00401 #define LINKCTRL_CLASSID Class_ID(0x873fe764,0xaabe8601)
00402 #define ATTACH_CONTROL_CLASS_ID Class_ID(0xbb27e611,0xa72f43e7)
00403 #define FLOATLIMITCTRL_CLASS_ID 0x17127e3e
00404 #define DUMMYCHANNEL_CLASS_ID 0xefffffff // used by PB and PB2 - superclass is CTRL_USERTYPE_CLASS_ID
00405 #define RINGARRAY_CLASS_ID 0x9120
00406 #define SUNLIGHT_CLASS_ID Class_ID(0x5897670e, 0x61b5008d)
00407 #define DAYLIGHT_CLASS_ID Class_ID(0x18147db5, 0x20f17194)
00408 #define CUSTATTRIB_CONTAINER_CLASS_ID Class_ID(0x5ddb3626, 0x23b708db) // CustAttribContainer class id
00409
00410
00411
00415 #define TRIOBJ_CLASS_ID 0x0009 //!< TriObject class ID
00416 #define EDITTRIOBJ_CLASS_ID 0xe44f10b3 //!< Base triangle mesh (Edit class ID
00417 #define POLYOBJ_CLASS_ID 0x5d21369a //!< Polygon mesh (PolyObject) class ID
00418 #define PATCHOBJ_CLASS_ID 0x1030 //!< Patch object
00419 #define NURBSOBJ_CLASS_ID 0x4135 //!< Nurbs object
00420 #define EPOLYOBJ_CLASS_ID Class_ID(0x1bf8338d,0x192f6098) //!< Editable poly.
00421
00422
00423
00424
00425
00426
00428
00429 #ifndef NO_OBJECT_STANDARD_PRIMITIVES
00430 #define BOXOBJ_CLASS_ID 0x0010
00431 #define SPHERE_CLASS_ID 0x0011
00432 #define CYLINDER_CLASS_ID 0x0012
00433 #define PLANE_CLASS_ID Class_ID(0x81f1dfc, 0x77566f65)
00434 #define PYRAMID_CLASS_ID Class_ID(0x76bf318a, 0x4bf37b10)
00435 #define GSPHERE_CLASS_ID Class_ID(0, 32670)
00436
00437 #else
00438 #define BOXOBJ_CLASS_ID 0x108f1589
00439 #define SPHERE_CLASS_ID 0x72ce5ad6
00440 #define CYLINDER_CLASS_ID 0x759e40e1
00441 #endif
00442 #define CONE_CLASS_ID 0xa86c23dd
00443 #define TORUS_CLASS_ID 0x0020
00444 #define TUBE_CLASS_ID 0x7B21
00445 #define HEDRA_CLASS_ID 0xf21c5e23
00446 #define BOOLOBJ_CLASS_ID 0x387BB2BB //!< \deprecated use NEWBOOL_CLASS_ID
00447 #define NEWBOOL_CLASS_ID Class_ID(0x51db4f2f,0x1c596b1a) //!< Boolean object Class ID (replaces BOOLOBJ_CLASS_ID)
00448
00449
00451
00452 #define XREFOBJ_CLASS_ID Class_ID(0x92aab38c, 0) //!< XRef object class ID
00453 #define XREFATMOS_CLASS_ID Class_ID(0x4869d60f, 0x21af2ae4) //!< XRef atmospheric effect class ID
00454 #define XREFMATERIAL_CLASS_ID Class_ID(0x272c0d4b, 0x432a414b) //!< XRef material class ID
00455 #define XREFCTRL_CLASS_ID Class_ID(0x32fb4637, 0x65fd482b) //!< XRef control class ID
00456
00457
00459
00460 #define GRID_OSNAP_CLASS_ID Class_ID(0x62f565d6, 0x110a1f97)
00461
00462
00463 #define TEAPOT_CLASS_ID1 0xACAD13D3 //!< Teapot upper class ID
00464 #define TEAPOT_CLASS_ID2 0xACAD26D9 //!< Teapot lower class ID
00465
00466 #define PATCHGRID_CLASS_ID 0x1070
00467
00468 #define BONE_OBJ_CLASSID Class_ID(0x28bf6e8d, 0x2ecca840) //!< Procedural bone object, subclass of GeomObject
00469
00470 enum BoneObj_Block { boneobj_params, };
00471
00472
00473 enum BoneObj_Params {
00474 boneobj_width, boneobj_height, boneobj_taper, boneobj_length,
00475 boneobj_sidefins, boneobj_sidefins_size, boneobj_sidefins_starttaper, boneobj_sidefins_endtaper,
00476 boneobj_frontfin, boneobj_frontfin_size, boneobj_frontfin_starttaper, boneobj_frontfin_endtaper,
00477 boneobj_backfin, boneobj_backfin_size, boneobj_backfin_starttaper, boneobj_backfin_endtaper,
00478 boneobj_genmap };
00479
00481
00482 #define RAIN_CLASS_ID 0x9bd61aa0
00483 #define SNOW_CLASS_ID 0x9bd61aa1
00484
00485
00487
00488 #define WAVEOBJ_CLASS_ID 0x0013
00489
00490
00492
00493 #define LOFTOBJ_CLASS_ID 0x1035
00494 #define LOFT_DEFCURVE_CLASS_ID 0x1036
00495 #define LOFT_GENERIC_CLASS_ID 0x10B0
00496
00497
00499
00500 #define TARGET_CLASS_ID 0x1020 //!< Camera target class ID
00501 #define MORPHOBJ_CLASS_ID 0x1021 //!< Morph object class ID
00502
00503
00505
00506 #define SPLINESHAPE_CLASS_ID 0x00000a
00507 #define LINEARSHAPE_CLASS_ID 0x0000aa
00508 #define SPLINE3D_CLASS_ID 0x1040
00509 #define NGON_CLASS_ID 0x1050
00510 #define DONUT_CLASS_ID 0x1060
00511 #define STAR_CLASS_ID 0x1995
00512 #define RECTANGLE_CLASS_ID 0x1065
00513 #define HELIX_CLASS_ID 0x1994
00514 #define ELLIPSE_CLASS_ID 0x1097
00515 #define CIRCLE_CLASS_ID 0x1999
00516 #define TEXT_CLASS_ID 0x1993
00517 #define ARC_CLASS_ID 0x1996
00518 #define HALF_ROUND_CLASS_ID 0x1997
00519 #define QUARTER_ROUND_CLASS_ID 0x1998
00520 #define PIPE_CLASS_ID 0x199A
00521 #define WALLED_RECTANGLE_CLASS_ID 0xd8bff66c
00522 #define CHANNEL_CLASS_ID 0x7dbc0e96
00523 #define ANGLE_CLASS_ID 0x93257030
00524 #define TEE_CLASS_ID 0xfaead70c
00525 #define WIDE_FLANGE_CLASS_ID 0xa2b72ef6
00526
00527
00529
00530 #define SIMPLE_CAM_CLASS_ID 0x1001
00531 #define LOOKAT_CAM_CLASS_ID 0x1002
00532
00533
00535
00536 #define OMNI_LIGHT_CLASS_ID 0x1011
00537 #define SPOT_LIGHT_CLASS_ID 0x1012
00538 #define DIR_LIGHT_CLASS_ID 0x1013
00539 #define FSPOT_LIGHT_CLASS_ID 0x1014
00540 #define TDIR_LIGHT_CLASS_ID 0x1015
00541
00542
00544
00545 #define DUMMY_CLASS_ID 0x876234
00546 #define BONE_CLASS_ID 0x8a63c0
00547 #define TAPEHELP_CLASS_ID 0x02011
00548 #define GRIDHELP_CLASS_ID 0x02010
00549 #define POINTHELP_CLASS_ID 0x02013
00550 #define PROTHELP_CLASS_ID 0x02014
00551
00552
00554
00555 #define STDUV_CLASS_ID 0x0000100
00556
00557
00559
00560 #define STDXYZ_CLASS_ID 0x0000100
00561
00562
00564
00565 #define STDTEXOUT_CLASS_ID 0x0000100
00566
00567
00569
00570 #define DMTL_CLASS_ID 0x00000002 //!< StdMtl2: standard material.
00571 #define DMTL2_CLASS_ID 0x00000003 //!< \deprecated Was used when migrating from StdMtl to StdMtl2
00572
00573 #ifndef NO_MTL_TOPBOTTOM // orb 01-07-2001
00574 #define CMTL_CLASS_ID 0x0000100 //!< Top-bottom material
00575 #endif // NO_MTL_TOPBOTTOM
00576
00577 #define MULTI_CLASS_ID 0x0000200 //!< Super class ID multi material
00578 #define MULTI_MATERIAL_CLASS_ID Class_ID(MULTI_CLASS_ID, 0) //! Multi-sub-object material class ID
00579
00580 #define DOUBLESIDED_CLASS_ID 0x0000210 //!< Double-sided material
00581 #define MIXMAT_CLASS_ID 0x0000250 //!< Blend material
00582 #define BAKE_SHELL_CLASS_ID 0x0000255 //!< Two material shell for baking
00583
00584 #ifndef NO_MTL_MATTESHADOW // orb 01-07-2001
00585 #define MATTE_CLASS_ID 0x0000260 //!< Matte material class ID.
00586 #endif // NO_MTL_MATTESHADOW
00587
00588 #define LOCKMAT_CLASS_ID Class_ID(0x5c92647b, 0x35a5272a) //!< Locked material class ID
00589
00590
00592
00593 #define CHECKER_CLASS_ID 0x0000200
00594 #define MARBLE_CLASS_ID 0x0000210
00595 #define MASK_CLASS_ID 0x0000220 //!< Mask texture
00596 #define MIX_CLASS_ID 0x0000230
00597 #define NOISE_CLASS_ID 0x0000234
00598
00599 #ifndef NO_MAPTYPE_GRADIENT // orb 01-07-2001
00600 #define GRADIENT_CLASS_ID 0x0000270
00601 #endif // NO_MAPTYPE_GRADIENT
00602
00603 #ifndef NO_MAPTYPE_RGBTINT // orb 01-07-2001
00604 #define TINT_CLASS_ID 0x0000224 //!< Tint texture
00605 #endif // NO_MAPTYPE_RGBTINT
00606
00607 #define BMTEX_CLASS_ID 0x0000240 //!< Bitmap texture
00608
00609 #ifndef NO_MAPTYPE_REFLECTREFRACT // orb 01-07-2001
00610 #define ACUBIC_CLASS_ID 0x0000250 //!< Reflect/refract
00611 #endif // NO_MAPTYPE_REFLECTREFRACT
00612
00613 #ifndef NO_MAPTYPE_FLATMIRROR // orb 01-07-2001
00614 #define MIRROR_CLASS_ID 0x0000260 //!< Flat mirror
00615 #endif // NO_MAPTYPE_FLATMIRROR
00616
00617 #define COMPOSITE_CLASS_ID 0x0000280 //!< Composite texture
00618 #define COMPOSITE_MATERIAL_CLASS_ID Class_ID(0x61dc0cd7, 0x13640af6) //!< Composite Material
00619
00620 #ifndef NO_MAPTYPE_RGBMULT // orb 01-07-2001
00621 #define RGBMULT_CLASS_ID 0x0000290 //!< RGB Multiply texture
00622 #endif //NO_MAPTYPE_RGBMULT
00623
00624 #define FALLOFF_CLASS_ID 0x00002A0 //!< Falloff texture
00625
00626 #ifndef NO_MAPTYPE_OUTPUT // orb 01-07-2001
00627 #define OUTPUT_CLASS_ID 0x00002B0 //!< Output texture
00628 #endif // NO_MAPTYPE_OUTPUT
00629
00630 #define PLATET_CLASS_ID 0x00002C0 //!< Plate glass texture
00631
00632 #define COLORCORRECTION_CLASS_ID 0x00002D0 //!< Color Correction texture
00633
00634 #ifndef NO_MAPTYPE_VERTCOLOR // orb 01-07-2001
00635 #define VCOL_CLASS_ID 0x0934851 //!< Vertex color map
00636
00637
00638 enum TextureMap_Vertex_Color_BlockID
00639 {
00640 vertexcolor_params
00641 };
00642 enum TextureMap_Vertex_Color_ParamIDs
00643 {
00644 vertexcolor_map,
00645 vertexcolor_subid
00646 };
00647 #endif // NO_MAPTYPE_VERTCOLOR
00648
00649 #define MULTIOUTPUTTOTEXMAP_CLASS_ID Class_ID(0x896EF2FC, 0x44BD743F) //!< MultiOutputToTexmap texture
00650
00651
00653
00654 #define STDSHADERS_CLASS_ID 0x00000035 // to 39
00655
00656
00658
00659 #define STD_SHADOW_MAP_CLASS_ID 0x0000100
00660 #define STD_RAYTRACE_SHADOW_CLASS_ID 0x0000200
00661
00662
00664
00665 #define SREND_CLASS_ID 0x000001 //!< Default scan-line renderer.
00666
00668
00669
00670 #define COMPLETE_BAKE_ELEMENT_CLASS_ID 0x00010001
00671 #define SPECULAR_BAKE_ELEMENT_CLASS_ID 0x00010002
00672 #define DIFFUSE_BAKE_ELEMENT_CLASS_ID 0x00010003
00673 #define REFLECT_REFRACT_BAKE_ELEMENT_CLASS_ID 0x00010004
00674 #define SHADOW_BAKE_ELEMENT_CLASS_ID 0x00010005
00675 #define LIGHT_BAKE_ELEMENT_CLASS_ID 0x00010006
00676 #define NORMALS_ELEMENT_CLASS_ID 0x00010007
00677 #define BLEND_BAKE_ELEMENT_CLASS_ID 0x00010008
00678 #define ALPHA_BAKE_ELEMENT_CLASS_ID 0x00010009
00679 #define HEIGHT_BAKE_ELEMENT_CLASS_ID 0x0001000A
00680 #define AMBIENTOCCLUSION_BAKE_ELEMENT_CLASS_ID 0x0001000B
00681
00682
00684
00685 #define MTL_LIB_CLASS_ID 0x001111
00686 #define MTLBASE_LIB_CLASS_ID 0x003333
00687 #define THE_SCENE_CLASS_ID 0x002222
00688 #define MEDIT_CLASS_ID 0x000C80
00689 #define MTL_CATEGORY_CLASS_ID Class_ID(0xb8e3b2d, 0x19854ad2)
00690
00691
00693 #define STANDIN_CLASS_ID 0xffffffff
00694
00696 #define DEF_SOUNDOBJ_CLASS_ID 0x0000001
00697
00699 #define FOG_CLASS_ID 0x10000001
00700
00702
00703 #define SKEWOSM_CLASS_ID 0x6f3cc2aa
00704 #define BENDOSM_CLASS_ID 0x00010
00705 #define TAPEROSM_CLASS_ID 0x00020
00706 #define TWISTOSM_CLASS_ID 0x00090
00707 #define SPLINEIKCONTROL_CLASS_ID Class_ID(0x5f43ba4, 0x55fe9305) //AG added : 01/08/02
00708
00709 #define UVWMAPOSM_CLASS_ID 0xf72b1
00710 #define SELECTOSM_CLASS_ID 0xf8611
00711 #define MATERIALOSM_CLASS_ID 0xf8612
00712 #define SMOOTHOSM_CLASS_ID 0xf8613
00713 #define NORMALOSM_CLASS_ID 0xf8614
00714 #define OPTIMIZEOSM_CLASS_ID 0xc4d31
00715 #define AFFECTREGION_CLASS_ID 0xc4e32
00716 #define SUB_EXTRUDE_CLASS_ID 0xc3a32
00717 #define TESSELLATE_CLASS_ID 0xa3b26ff2
00718 #define DELETE_CLASS_ID 0xf826ee01
00719 #define MESHSELECT_CLASS_ID 0x73d8ff93
00720 #define UVW_XFORM_CLASS_ID 0x5f32de12
00721 #define UVW_XFORM2_CLASS_ID 0x5f32de13 //SS 11/20/2002: added
00722 #define EDIT_POLY_MODIFIER_CLASS_ID Class_ID(0x79aa6e1d, 0x71a075b7)
00723
00724 #define EXTRUDEOSM_CLASS_ID 0x000A0
00725 #define SURFREVOSM_CLASS_ID 0x000B0
00726
00727 #define DISPLACEOSM_CLASS_ID 0xc4d32
00728 #define DISPLACE_OBJECT_CLASS_ID 0xe5240
00729 #define DISPLACE_WSM_CLASS_ID 0xe5241
00730
00731 #define SINEWAVE_OBJECT_CLASS_ID 0x00030
00732 #define SINEWAVE_CLASS_ID 0x00040
00733 #define SINEWAVE_OMOD_CLASS_ID 0x00045
00734 #define LINWAVE_OBJECT_CLASS_ID 0x00035
00735 #define LINWAVE_CLASS_ID 0x00042
00736 #define LINWAVE_OMOD_CLASS_ID 0x00047
00737
00738 #define GRAVITYOBJECT_CLASS_ID 0xe523c
00739 #define GRAVITYMOD_CLASS_ID 0xe523d
00740 #define WINDOBJECT_CLASS_ID 0xe523e
00741 #define WINDMOD_CLASS_ID 0xe523f
00742
00743 #define DEFLECTOBJECT_CLASS_ID 0xe5242
00744 #define DEFLECTMOD_CLASS_ID 0xe5243
00745
00746 #define BOMB_OBJECT_CLASS_ID 0xf2e32
00747 #define BOMB_CLASS_ID 0xf2e42
00748
00749
00751
00752 #define FFDNMOSSQUARE_CLASS_ID Class_ID(0x8ab36cc5,0x82d7fe74)
00753 #define FFDNMWSSQUARE_CLASS_ID Class_ID(0x67ea40b3,0xfe7a30c4)
00754 #define FFDNMWSSQUARE_MOD_CLASS_ID Class_ID(0xd6636ea2,0x9aa42bf3)
00755
00756 #define FFDNMOSCYL_CLASS_ID Class_ID(0x98f37a63,0x3ffe9bca)
00757 #define FFDNMWSCYL_CLASS_ID Class_ID(0xfa4700be,0xbbe85051)
00758 #define FFDNMWSCYL_MOD_CLASS_ID Class_ID(0xf1c630a3,0xaa8ff601)
00759
00760 #define FFD44_CLASS_ID Class_ID(0x21325596, 0x2cd10bd8)
00761 #define FFD33_CLASS_ID Class_ID(0x21325596, 0x2cd10bd9)
00762 #define FFD22_CLASS_ID Class_ID(0x21325596, 0x2cd10bd0)
00763
00764
00766
00767 #define ACMOD_GEOM_GEOM_BOOLADD_CID 0x4e0f483a
00768 #define ACMOD_GEOM_GEOM_BOOLSUB_CID 0x61661a5c
00769 #define ACMOD_GEOM_GEOM_BOOLINT_CID 0x2a4f3945
00770 #define ACMOD_GEOM_GEOM_SIMPAGG_CID 0x40cb05ab
00771
00772 #define ACMOD_SHAPE_GEOM_HOLE_CID 0x366307b0
00773 #define ACMOD_SHAPE_GEOM_INT_CID 0x782d8d50
00774 #define ACMOD_SHAPE_GEOM_EMBOSS_CID 0x7a13397c
00775 #define ACMOD_SHAPE_GEOM_REVEAL_CID 0x55ed658c
00776
00777
00778 #define GENERIC_AMSOLID_CLASS_ID Class_ID(0x5bb661e8, 0xa2c27f02)
00779
00781
00782 #define LININTERP_FLOAT_CLASS_ID 0x2001
00783 #define LININTERP_POSITION_CLASS_ID 0x2002
00784 #define LININTERP_ROTATION_CLASS_ID 0x2003
00785 #define LININTERP_SCALE_CLASS_ID 0x2004
00786 #define PRS_CONTROL_CLASS_ID 0x2005
00787 #define LOOKAT_CONTROL_CLASS_ID 0x2006
00788
00789 #define HYBRIDINTERP_FLOAT_CLASS_ID 0x2007
00790 #define HYBRIDINTERP_POSITION_CLASS_ID 0x2008
00791 #define HYBRIDINTERP_ROTATION_CLASS_ID 0x2009
00792 #define HYBRIDINTERP_POINT3_CLASS_ID 0x200A
00793 #define HYBRIDINTERP_SCALE_CLASS_ID 0x2010
00794 #define HYBRIDINTERP_COLOR_CLASS_ID 0x2011
00795 #define HYBRIDINTERP_POINT4_CLASS_ID 0x2012
00796 #define HYBRIDINTERP_FRGBA_CLASS_ID 0x2013
00797 #define HYBRIDINTERP_POINT2_CLASS_ID Class_ID(0x15205122, 0x1690125b)
00798
00799 #define TCBINTERP_FLOAT_CLASS_ID 0x442311
00800 #define TCBINTERP_POSITION_CLASS_ID 0x442312
00801 #define TCBINTERP_ROTATION_CLASS_ID 0x442313
00802 #define TCBINTERP_POINT3_CLASS_ID 0x442314
00803 #define TCBINTERP_SCALE_CLASS_ID 0x442315
00804 #define TCBINTERP_POINT4_CLASS_ID 0x442316
00805
00806 #define MASTERPOINTCONT_CLASS_ID 0xd9c20ff
00807
00808
00810
00811 #define PF_SUBCLASS_ID_PARTB 0x1eb34000
00812 #define PF_OPERATOR_SUBCLASS_ID 0x74f93a02
00813 #define PF_OPERATOR3D_SUBCLASS_ID 0x74f93a03
00814 #define PF_TEST_SUBCLASS_ID 0x74f93a04
00815 #define PF_TEST3D_SUBCLASS_ID 0x74f93a05
00816 #define PF_ITEM_SUBCLASS_ID 0x74f93a06
00817 #define PF_OBJECT_SUBCLASS_ID 0x74f93a07
00818
00819
00821
00822 class ISave;
00823 class ILoad;
00824 class Interface;
00825 class ActionTable;
00826 class ParamBlockDesc2;
00827 class IParamBlock2;
00828 class IObjParam;
00829 class Animatable;
00830 class ParamMap2UserDlgProc;
00831 class IParamMap2;
00832 class FPInterface;
00833 class Manipulator;
00834 class ReferenceTarget;
00835
00841 #pragma warning(push)
00842 #pragma warning(disable:4100)
00843 class ClassDesc: public MaxHeapOperators {
00844 private:
00845 Tab<FPInterface*> interfaces;
00846 public:
00847 virtual ~ClassDesc() {}
00853 virtual int IsPublic()=0;
00854
00886 virtual void * Create(BOOL loading=FALSE)=0;
00887
00905 virtual int BeginCreate(Interface *i) {return 0;}
00906
00916 virtual int EndCreate(Interface *i) {return 0;};
00917
00921 virtual const MCHAR* ClassName()=0;
00922
00929 virtual SClass_ID SuperClassID()=0;
00930
00939 virtual Class_ID ClassID()=0;
00940
00969 virtual const MCHAR* Category()=0;
00970
01002 virtual BOOL OkToCreate(Interface *i) { return TRUE; }
01003
01008 virtual BOOL HasClassParams() {return FALSE;}
01009
01015 virtual void EditClassParams(HWND hParent) {}
01016
01025 virtual void ResetClassParams(BOOL fileReset=FALSE) {}
01026
01039 virtual int NumActionTables() { return 0; }
01040
01044 virtual ActionTable* GetActionTable(int i) { return NULL; }
01046
01048
01049
01051 virtual BOOL IsManipulator() { return FALSE; }
01052
01060 virtual BOOL CanManipulate(ReferenceTarget* hTarget) { return FALSE; }
01061
01067 virtual BOOL CanManipulateNode(INode* pNode) { return FALSE; }
01068
01083 virtual Manipulator* CreateManipulator(
01084 ReferenceTarget* hTarget,
01085 INode* pNode) { return NULL; }
01086
01093 virtual Manipulator* CreateManipulator(INode* pNode) {return NULL;}
01095
01097
01098
01102 virtual BOOL NeedsToSave() { return FALSE; }
01103
01108 virtual IOResult Save(ISave *isave) { return IO_OK; }
01109
01115 virtual IOResult Load(ILoad *iload) { return IO_OK; }
01117
01130 virtual DWORD InitialRollupPageState() { return 0x7fffffff; }
01131
01134 virtual const MCHAR* InternalName() { return NULL; }
01135
01138 virtual HINSTANCE HInstance() { return NULL; }
01139
01141
01142
01143 virtual int NumParamBlockDescs() { return 0; }
01144
01147 virtual ParamBlockDesc2* GetParamBlockDesc(int i) { return NULL; }
01148
01152 virtual ParamBlockDesc2* GetParamBlockDescByID(BlockID id) { return NULL; }
01153
01158 virtual void AddParamBlockDesc(ParamBlockDesc2* pbd) { }
01160
01162
01163
01173 virtual void BeginEditParams(IObjParam *ip, ReferenceMaker* obj, ULONG flags, Animatable *prev) { }
01174
01184 virtual void EndEditParams(IObjParam *ip, ReferenceMaker* obj, ULONG flags, Animatable *prev) { }
01185
01190 virtual void InvalidateUI(ParamBlockDesc2* pbd) { }
01192
01194 CoreExport virtual MCHAR* GetRsrcString(INT_PTR id);
01195
01199 virtual void MakeAutoParamBlocks(ReferenceMaker* owner) { }
01200
01202
01203
01204 virtual int NumParamMaps() { return 0; }
01205
01208 virtual IParamMap2* GetParamMap(int i) { return NULL; }
01209
01212 virtual IParamMap2* GetParamMap(ParamBlockDesc2* pbd) { return NULL; }
01213
01219 virtual void SetUserDlgProc(ParamBlockDesc2* pbd, ParamMap2UserDlgProc* proc=NULL) { }
01220
01225 virtual ParamMap2UserDlgProc* GetUserDlgProc(ParamBlockDesc2* pbd) { return NULL; }
01227
01235 virtual bool DrawRepresentation(COLORREF bkColor, HDC hDC, Rect& rect) { return FALSE; }
01236
01238
01239
01240 virtual int NumInterfaces() { return interfaces.Count(); }
01241
01243 virtual FPInterface* GetInterfaceAt(int i) { return interfaces[i]; }
01244
01247 CoreExport virtual FPInterface* GetInterface(Interface_ID id);
01248
01252 CoreExport virtual FPInterface* GetInterface(MCHAR* name);
01253
01257 CoreExport virtual void AddInterface(FPInterface* fpi);
01258
01260 virtual void ClearInterfaces() { interfaces.ZeroCount(); }
01262
01269 virtual Class_ID SubClassID() { return Class_ID(); }
01270
01281 virtual INT_PTR Execute(int cmd, ULONG_PTR arg1=0, ULONG_PTR arg2=0, ULONG_PTR arg3=0) { return 0; }
01282 };
01283
01284
01285 #pragma warning(pop)
01286
01289
01290 #define I_EXEC_CTRL_BYPASS_TREE_VIEW 1001
01291 #define I_EXEC_GET_SOA_STATE 1002
01292 #define I_EXEC_EVAL_SOA_TIME 1003
01293
01294
01296 CoreExport void* CreateInstance(SClass_ID superID, Class_ID classID);
01297
01303 struct ClassDescReplaced: public MaxHeapOperators {
01305 const ClassDesc* oldClassDesc;
01307 const ClassDesc* newClassDesc;
01308 };
01309