source: golgotha/src/maxtool/sdk_inc/plugapi.h @ 80

Last change on this file since 80 was 80, checked in by Sam Hocevar, 12 years ago
  • Adding the Golgotha source code. Not sure what's going to be interesting in there, but since it's all public domain, there's certainly stuff to pick up.
  • Property svn:keywords set to Id
File size: 11.0 KB
Line 
1
2/*******************************************************************
3 *
4 *    DESCRIPTION: DLL Plugin API
5 *
6 *    AUTHOR: Dan Silva
7 *
8 *    HISTORY: 11/30/94 Started coding
9 *
10 *******************************************************************/
11
12#include "maxtypes.h"
13
14#ifndef PLUGAPI_H_DEFINED
15
16
17#define PLUGAPI_H_DEFINED
18
19// 3DSMAX Version number to be compared against that returned by DLL's
20// LibVersion function to detect obsolete DLLs.
21//#define VERSION_3DSMAX 0x00006    // changed  4/1/96 -- DB
22#define VERSION_3DSMAX 100    // changed  4/9/96 -- DB
23
24// Internal super classes, that plug-in developers need not know about
25#define GEN_MODAPP_CLASS_ID             0x00000b
26#define MODAPP_CLASS_ID                         0x00000c
27#define OBREF_MODAPP_CLASS_ID           0x00000d
28#define BASENODE_CLASS_ID                       0x000001
29#define GEN_DERIVOB_CLASS_ID            0x000002
30#define DERIVOB_CLASS_ID                        0x000003
31#define WSM_DERIVOB_CLASS_ID            0x000004
32#define PARAMETER_BLOCK_CLASS_ID        0x000008       
33#define EASE_LIST_CLASS_ID                      0x000009
34#define AXIS_DISPLAY_CLASS_ID           0x00000e
35#define MULT_LIST_CLASS_ID                      0x00000f
36#define NOTETRACK_CLASS_ID                      0x0000ff
37#define TREE_VIEW_CLASS_ID                      0xffffff00
38#define SCENE_CLASS_ID                          0xfffffd00
39#define VIEWREF_CLASS_ID                        0xffffff01
40
41//-------------------------------------------
42// Deformable object psuedo-super-class
43#define DEFORM_OBJ_CLASS_ID             0x000005
44
45//-------------------------------------------
46// Mappable object psuedo-super-class
47#define MAPPABLE_OBJ_CLASS_ID           0x000006
48
49//-------------------------------------------
50// Shape psuedo-super-class
51#define GENERIC_SHAPE_CLASS_ID          0x0000ab
52
53//-------------------------------------------
54// Super-classes that are plugabble.
55#define GEOMOBJECT_CLASS_ID                     0x000010
56#define CAMERA_CLASS_ID                         0x000020
57#define LIGHT_CLASS_ID                          0x000030
58#define SHAPE_CLASS_ID                          0x000040
59#define HELPER_CLASS_ID                         0x000050
60#define SYSTEM_CLASS_ID                         0x000060
61#define REF_MAKER_CLASS_ID                      0x000100       
62#define REF_TARGET_CLASS_ID                     0x000200
63#define OSM_CLASS_ID                            0x000810
64#define WSM_CLASS_ID                            0x000820
65#define WSM_OBJECT_CLASS_ID                     0x000830
66#define SCENE_IMPORT_CLASS_ID           0x000A10
67#define SCENE_EXPORT_CLASS_ID           0x000A20
68#define BMM_STORAGE_CLASS_ID            0x000B10
69#define BMM_FILTER_CLASS_ID                     0x000B20
70#define BMM_IO_CLASS_ID                         0x000B30
71#define BMM_DITHER_CLASS_ID                     0x000B40
72#define BMM_COLORCUT_CLASS_ID           0x000B50
73#define USERDATATYPE_CLASS_ID           0x000B60
74#define MATERIAL_CLASS_ID                       0x000C00    // Materials
75#define TEXMAP_CLASS_ID                         0x000C10    // Texture maps
76#define UVGEN_CLASS_ID                          0x0000C20   // UV Generator
77#define XYZGEN_CLASS_ID                         0x0000C30   // XYZ Generator
78#define TEXOUTPUT_CLASS_ID                      0x0000C40   // Texture output filter
79#define SOUNDOBJ_CLASS_ID                       0x000D00
80#define FLT_CLASS_ID                            0x000E00
81#define RENDERER_CLASS_ID                       0x000F00
82#define BEZFONT_LOADER_CLASS_ID         0x001000
83#define ATMOSPHERIC_CLASS_ID            0x001010
84#define UTILITY_CLASS_ID                        0x001020        // Utility plug-ins
85
86// Super-class ID's of various controls
87#define CTRL_SHORT_CLASS_ID             0x9001
88#define CTRL_INTEGER_CLASS_ID           0x9002
89#define CTRL_FLOAT_CLASS_ID                     0x9003
90#define CTRL_POINT2_CLASS_ID            0x9004
91#define CTRL_POINT3_CLASS_ID            0x9005
92#define CTRL_POS_CLASS_ID                       0x9006
93#define CTRL_QUAT_CLASS_ID                      0x9007
94#define CTRL_MATRIX3_CLASS_ID           0x9008
95#define CTRL_COLOR_CLASS_ID             0x9009  // float color
96#define CTRL_COLOR24_CLASS_ID           0x900A   // 24 bit color
97#define CTRL_POSITION_CLASS_ID          0x900B
98#define CTRL_ROTATION_CLASS_ID          0x900C
99#define CTRL_SCALE_CLASS_ID                     0x900D
100#define CTRL_MORPH_CLASS_ID                     0x900E
101#define CTRL_USERTYPE_CLASS_ID          0x900F  // User defined type
102
103// Class ID's of built-in classes. The value is the first ULONG of the
104// 8 byte Class ID: the second ULONG is 0 for all built-in classes.
105// NOTE: Only built-in classes should have the second ULONG == 0.
106
107//--------------------- subclasses of GEOMOBJECT_CLASS_ID:
108
109// Built into CORE
110#define TRIOBJ_CLASS_ID                 0x0009   
111#define PATCHOBJ_CLASS_ID               0x1030
112#define NURBSOBJ_CLASS_ID               0x4135
113
114// Primitives
115#define BOXOBJ_CLASS_ID                 0x0010
116#define SPHERE_CLASS_ID                 0x0011
117#define CYLINDER_CLASS_ID               0x0012
118#define CONE_CLASS_ID                   0xa86c23dd
119#define TORUS_CLASS_ID                  0x0020
120#define TUBE_CLASS_ID                   0x7B21
121#define HEDRA_CLASS_ID                  0xf21c5e23
122
123// The teapot is unique in that it uses both DWORDs in its class IDs
124// Note that this is what 3rd party plug-ins SHOULD do.
125#define TEAPOT_CLASS_ID1                0xACAD13D3
126#define TEAPOT_CLASS_ID2                0xACAD26D9
127
128#define PATCHGRID_CLASS_ID      0x1070
129
130// Particles
131#define RAIN_CLASS_ID                   0x9bd61aa0
132#define SNOW_CLASS_ID                   0x9bd61aa1
133
134// Space Warp Objects
135#define WAVEOBJ_CLASS_ID                0x0013
136
137// The basic lofter class
138#define LOFTOBJ_CLASS_ID                0x1035
139#define LOFT_DEFCURVE_CLASS_ID  0x1036
140
141// Our implementation of the lofter
142#define LOFT_GENERIC_CLASS_ID   0x10B0
143
144#define TARGET_CLASS_ID                 0x1020  // should this be a helper?
145#define MORPHOBJ_CLASS_ID               0x1021
146
147// Subclasses of SHAPE_CLASS_ID
148#define SPLINESHAPE_CLASS_ID            0x00000a
149#define LINEARSHAPE_CLASS_ID            0x0000aa
150#define SPLINE3D_CLASS_ID               0x1040
151#define NGON_CLASS_ID                   0x1050
152#define DONUT_CLASS_ID                  0x1060
153#define STAR_CLASS_ID                   0x1995
154#define RECTANGLE_CLASS_ID              0x1065
155#define HELIX_CLASS_ID                  0x1994
156#define ELLIPSE_CLASS_ID                0x1097
157#define CIRCLE_CLASS_ID                 0x1999
158#define TEXT_CLASS_ID                   0x1993
159#define ARC_CLASS_ID                    0x1996
160
161// subclasses of CAMERA_CLASS_ID:
162#define SIMPLE_CAM_CLASS_ID     0x1001
163#define LOOKAT_CAM_CLASS_ID     0x1002
164
165// subclasses of LIGHT_CLASS_ID:
166#define OMNI_LIGHT_CLASS_ID     0x1011
167#define SPOT_LIGHT_CLASS_ID     0x1012
168#define DIR_LIGHT_CLASS_ID      0x1013
169#define FSPOT_LIGHT_CLASS_ID    0x1014
170
171// subclasses of HELPER_CLASS_ID
172#define DUMMY_CLASS_ID                  0x876234
173#define BONE_CLASS_ID                   0x8a63c0
174#define TAPEHELP_CLASS_ID               0x02011
175#define GRIDHELP_CLASS_ID               0x02010
176#define POINTHELP_CLASS_ID              0x02013
177
178//subclasses of UVGEN_CLASS_ID
179#define STDUV_CLASS_ID                  0x0000100
180
181//subclasses of XYZGEN_CLASS_ID
182#define STDXYZ_CLASS_ID                 0x0000100
183
184//subclasses of TEXOUT_CLASS_ID
185#define STDTEXOUT_CLASS_ID              0x0000100
186
187// subclasses of MATERIAL_CLASS_ID     
188#define CMTL_CLASS_ID                   0x0000100  // top-bottom material
189#define MULTI_CLASS_ID                  0x0000200  // multi material
190#define DOUBLESIDED_CLASS_ID    0x0000210  // double-sided mtl
191#define MIXMAT_CLASS_ID                 0x0000250  // blend mtl
192
193// subclasses of TEXMAP_CLASS_ID       
194#define CHECKER_CLASS_ID                0x0000200
195#define MARBLE_CLASS_ID                 0x0000210
196#define MASK_CLASS_ID                   0x0000220  // mask texture
197#define MIX_CLASS_ID                    0x0000230
198#define NOISE_CLASS_ID                  0x0000234
199#define GRADIENT_CLASS_ID               0x0000270
200#define TINT_CLASS_ID                   0x0000224  // Tint texture
201#define BMTEX_CLASS_ID                  0x0000240  // Bitmap texture
202#define ACUBIC_CLASS_ID                 0x0000250  // Reflect/refract
203#define MIRROR_CLASS_ID                 0x0000260  // Flat mirror
204#define COMPOSITE_CLASS_ID              0x0000280   // Composite texture
205
206// subclasses of RENDERER_CLASS_ID               
207#define SREND_CLASS_ID                  0x000001 // default scan-line renderer
208
209// subclasses of REF_MAKER_CLASS_ID                     
210#define MTL_LIB_CLASS_ID                0x001111
211#define MTLBASE_LIB_CLASS_ID    0x003333
212#define THE_SCENE_CLASS_ID      0x002222
213#define MEDIT_CLASS_ID                  0x000C80
214
215// subclass of all classes
216#define STANDIN_CLASS_ID                0xffffffff  // subclass of all super classes
217
218// Default material class
219#define DMTL_CLASS_ID           0x000002
220
221// Default sound object
222#define DEF_SOUNDOBJ_CLASS_ID   0x0000001
223
224// Default atmosphere
225#define FOG_CLASS_ID 0x10000001
226
227//------------------ Modifier sub classes --------
228#define SKEWOSM_CLASS_ID                0x6f3cc2aa
229#define BENDOSM_CLASS_ID                        0x00010
230#define TAPEROSM_CLASS_ID                       0x00020
231#define TWISTOSM_CLASS_ID                       0x00090
232
233#define UVWMAPOSM_CLASS_ID                      0xf72b1
234#define SELECTOSM_CLASS_ID                      0xf8611
235#define MATERIALOSM_CLASS_ID            0xf8612
236#define SMOOTHOSM_CLASS_ID                      0xf8613
237#define NORMALOSM_CLASS_ID                      0xf8614
238#define OPTIMIZEOSM_CLASS_ID            0xc4d31
239
240#define EXTRUDEOSM_CLASS_ID             0x000A0
241#define SURFREVOSM_CLASS_ID             0x000B0
242
243#define DISPLACEOSM_CLASS_ID            0xc4d32
244#define DISPLACE_OBJECT_CLASS_ID        0xe5240
245#define DISPLACE_WSM_CLASS_ID           0xe5241
246
247#define SINEWAVE_OBJECT_CLASS_ID        0x00030
248#define SINEWAVE_CLASS_ID                       0x00040
249#define SINEWAVE_OMOD_CLASS_ID          0x00045
250#define LINWAVE_OBJECT_CLASS_ID         0x00035
251#define LINWAVE_CLASS_ID                        0x00042
252#define LINWAVE_OMOD_CLASS_ID           0x00047
253
254#define GRAVITYOBJECT_CLASS_ID          0xe523c
255#define GRAVITYMOD_CLASS_ID                     0xe523d
256#define WINDOBJECT_CLASS_ID                     0xe523e
257#define WINDMOD_CLASS_ID                        0xe523f
258
259#define DEFLECTOBJECT_CLASS_ID          0xe5242
260#define DEFLECTMOD_CLASS_ID                     0xe5243
261
262#define BOMB_OBJECT_CLASS_ID            0xf2e32
263#define BOMB_CLASS_ID                           0xf2e42
264
265
266//------------------ Controller sub classes --------
267#define LININTERP_FLOAT_CLASS_ID                        0x2001
268#define LININTERP_POSITION_CLASS_ID             0x2002
269#define LININTERP_ROTATION_CLASS_ID             0x2003
270#define LININTERP_SCALE_CLASS_ID                        0x2004
271#define PRS_CONTROL_CLASS_ID                            0x2005
272#define LOOKAT_CONTROL_CLASS_ID                         0x2006                         
273
274#define HYBRIDINTERP_FLOAT_CLASS_ID             0x2007
275#define HYBRIDINTERP_POSITION_CLASS_ID          0x2008
276#define HYBRIDINTERP_ROTATION_CLASS_ID          0x2009
277#define HYBRIDINTERP_POINT3_CLASS_ID            0x200A
278#define HYBRIDINTERP_SCALE_CLASS_ID                     0x2010
279#define HYBRIDINTERP_COLOR_CLASS_ID                     0x2011
280
281#define TCBINTERP_FLOAT_CLASS_ID                        0x442311
282#define TCBINTERP_POSITION_CLASS_ID             0x442312
283#define TCBINTERP_ROTATION_CLASS_ID             0x442313
284#define TCBINTERP_POINT3_CLASS_ID                       0x442314
285#define TCBINTERP_SCALE_CLASS_ID                        0x442315
286
287
288//--------------------------------------------------
289
290
291class ISave;
292class ILoad;
293class Interface;
294
295// System keepsa list of the DLL's found on startup.
296// This is the interface to a single class
297class ClassDesc {
298        public:
299                virtual int                             IsPublic()=0;  // Show this in create branch?
300                virtual void *                  Create(BOOL loading=FALSE)=0;   // return a pointer to an instance of the class.
301                virtual int                     BeginCreate(Interface *i) {return 0;}
302                virtual int                     EndCreate(Interface *i) {return 0;};
303                virtual const TCHAR*    ClassName()=0;
304                virtual SClass_ID               SuperClassID()=0;
305                virtual Class_ID                ClassID()=0;
306                virtual const TCHAR*    Category()=0;   // primitive/spline/loft/ etc
307                virtual BOOL                    OkToCreate(Interface *i) { return TRUE; }       // return FALSE to disable create button               
308                virtual BOOL                    HasClassParams() {return FALSE;}
309                virtual void                    EditClassParams(HWND hParent) {}
310                virtual void                    ResetClassParams(BOOL fileReset=FALSE) {}
311                // Class IO
312                virtual BOOL                    NeedsToSave() { return FALSE; }
313                virtual IOResult                Save(ISave *isave) { return IO_OK; }
314                virtual IOResult                Load(ILoad *iload) { return IO_OK; }
315
316        };
317
318// Create instance of the specified class
319CoreExport void *CreateInstance(SClass_ID superID, Class_ID classID);
320
321#endif
Note: See TracBrowser for help on using the repository browser.