root/OpenSceneGraph/trunk/src/osgPlugins/geo/geoFormat.h @ 13041

Revision 13041, 77.2 kB (checked in by robert, 3 years ago)

Ran script to remove trailing spaces and tabs

  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
Line 
1/*===========================================================================*\
2
3NAME:            geoFormat.h
4
5DESCRIPTION:    Native Format struct definitions, tokens & functionc
6
7AUTHOR:            Andy Bushnell
8
9    -------------------------------------------------------------------------
10
11PROPRIETARY RIGHTS NOTICE:
12
13  This software contains proprietary information and trade secrets of Carbon
14  Graphics LLC. No part or all of this software may be reproduced in any form,
15  without the written permission of Carbon Graphics LLC.
16
17  Exception:
18  This Software file can be used by third-party software developers (without
19  using the Geo SDK libraries) for any purpose OTHER THAN loading Geo format
20  files into an application or executable (such as, though not limited to,
21  geometry Modelers & animation systems) which is primarily intended to allow for
22  the CREATION or MODIFICATION of geometric or animation data.
23
24  Specifically,using this software (either all or part thereof) to aid in the
25  creation of a Geo format loader for a run-time system, game engine, toolkit
26  IG (Image Generation) System or any software where the PRIMARY purpose is
27  real-time image playback and interactivity and not Model Creation and/or
28  modification is permitted.
29
30COPYRIGHT NOTICE:
31
32  Copyright © 1998-2001 Carbon Graphics Llc, ALL RIGHTS RESERVED
33
34\*===========================================================================*/
35
36
37#ifndef __GEO_FORMAT_H__
38#define __GEO_FORMAT_H__
39
40#include "geoCore.h"
41
42
43#define GEO_1_0_RC2    1132
44#define GEO_1_0_RC3    1133
45#define GEO_1_0_RC4    1134
46#define GEO_1_0       1141
47
48#define GEO_1_1_RC1 1231
49#define GEO_1_1_RC2 1232
50#define GEO_1_1        1240
51
52
53
54                            // GEO_VERSION = ((GEO_LIB_MAJOR_VERSION*1000)+
55                            //                (GEO_LIB_MINOR_VERSION*100) +
56                            //                  (GEO_LIB_LEVEL_VERSION*10)  +
57                            //                  (GEO_LIB_RELEASE_VERSION))
58
59
60
61
62//
63// Constants to define the Node disk records. Used in RecordToken.id
64//
65
66
67///////////////////////////////////////////////////////////////////////////////
68//
69// Record Ids
70//
71///////////////////////////////////////////////////////////////////////////////
72
73//----------------------------------------------------------------
74// Geo 1.0 RC 2 & Below
75//----------------------------------------------------------------
76
77//const unsigned int DB_DSK_HEADER                        = 101;
78
79//----------------------------------------------------------------
80// Geo 1.0 RC 3 & Above
81//----------------------------------------------------------------
82const unsigned int DB_DSK_HEADER                        = 100;    // NOTE File MAGIC ID *CHANGED*
83
84//----------------------------------------------------------------
85//
86//----------------------------------------------------------------
87
88const unsigned int DB_DSK_GROUP                            = 102;
89const unsigned int DB_DSK_SEQUENCE                        = 104;
90const unsigned int DB_DSK_LOD                            = 105;
91const unsigned int DB_DSK_RENDERGROUP                    = 106;
92const unsigned int DB_DSK_POLYGON                        = 107;
93const unsigned int DB_DSK_MESH                            = 108;    // Unused - Possible Future expansion
94const unsigned int DB_DSK_CUBE                            = 109;    // Unused - Possible Future expansion
95const unsigned int DB_DSK_SPHERE                        = 110;    // Unused - Possible Future expansion
96const unsigned int DB_DSK_CONE                            = 111;    // Unused - Possible Future expansion
97const unsigned int DB_DSK_CYLINDER                        = 112;    // Unused - Possible Future expansion
98const unsigned int DB_DSK_VERTEX                        = 113;
99const unsigned int DB_DSK_PUSH                            = 114;
100const unsigned int DB_DSK_POP                            = 115;
101const unsigned int DB_DSK_TEXTURE                        = 116;
102const unsigned int DB_DSK_MATERIAL                        = 117;
103const unsigned int DB_DSK_VIEW                            = 118;
104const unsigned int DB_DSK_EXTENSION_LIST                = 119;
105const unsigned int DB_DSK_SWITCH                        = 120;
106const unsigned int DB_DSK_TEXT                            = 121;
107const unsigned int DB_DSK_BASE_GROUP                    = 122;
108const unsigned int DB_DSK_BASE_SURFACE                    = 123;
109const unsigned int DB_DSK_BEHAVIOR                        = 124;
110const unsigned int DB_DSK_CLAMP_ACTION                    = 125;
111const unsigned int DB_DSK_RANGE_ACTION                    = 126;
112const unsigned int DB_DSK_ROTATE_ACTION                    = 127;
113const unsigned int DB_DSK_TRANSLATE_ACTION                = 128;
114const unsigned int DB_DSK_SCALE_ACTION                    = 129;
115const unsigned int DB_DSK_ARITHMETIC_ACTION                = 130;
116const unsigned int DB_DSK_LOGIC_ACTION                    = 131;
117const unsigned int DB_DSK_CONDITIONAL_ACTION            = 132;
118const unsigned int DB_DSK_LOOPING_ACTION                = 133;
119const unsigned int DB_DSK_COMPARE_ACTION                = 134;
120const unsigned int DB_DSK_VISIBILITY_ACTION                = 135;
121const unsigned int DB_DSK_STRING_CONTENT_ACTION            = 136;
122const unsigned int DB_DSK_INTERNAL_VARS                    = 137;
123const unsigned int DB_DSK_LOCAL_VARS                    = 138;
124const unsigned int DB_DSK_EXTERNAL_VARS                    = 139;
125const unsigned int DB_DSK_FLOAT_VAR                        = 140;
126const unsigned int DB_DSK_INT_VAR                        = 141;
127const unsigned int DB_DSK_LONG_VAR                        = 142;
128const unsigned int DB_DSK_DOUBLE_VAR                    = 143;
129const unsigned int DB_DSK_BOOL_VAR                        = 144;
130//    unsigned int DEPRICATED                            = 145;
131const unsigned int DB_DSK_IF_CONDITION                    = 146;
132const unsigned int DB_DSK_ELSE_CONDITION                = 147;
133//    unsigned int DEPRICATED                            = 148;
134const unsigned int DB_DSK_COLOR_PALETTE                    = 149;
135const unsigned int DB_DSK_COLOR_RAMP_ACTION                = 150;
136const unsigned int DB_DSK_FLOAT2_VAR                    = 151;
137const unsigned int DB_DSK_FLOAT3_VAR                    = 152;
138const unsigned int DB_DSK_FLOAT4_VAR                    = 153;
139const unsigned int DB_DSK_LINEAR_ACTION                    = 154;
140const unsigned int DB_DSK_TASK_ACTION                    = 155;
141const unsigned int DB_DSK_PERIODIC_ACTION                = 156;
142//    unsigned int DEPRICATED                            = 157;
143const unsigned int DB_DSK_TRIG_ACTION                    = 158;
144const unsigned int DB_DSK_INVERSE_ACTION                = 159;
145const unsigned int DB_DSK_TRUNCATE_ACTION                = 160;
146const unsigned int DB_DSK_ABS_ACTION                    = 161;
147const unsigned int DB_DSK_IF_THEN_ELSE_ACTION            = 162;     // simple variable value check
148const unsigned int DB_DSK_DCS_ACTION                    = 163;
149const unsigned int DB_DSK_INSTANCE                        = 164;
150const unsigned int DB_DSK_COORD_POOL                    = 165;
151const unsigned int DB_DSK_LIGHTPT                        = 166;
152const unsigned int DB_DSK_EXTERNAL                        = 167;
153const unsigned int DB_DSK_NORMAL_POOL                    = 168;
154const unsigned int DB_DSK_DISCRETE_ACTION                = 169;
155const unsigned int DB_DSK_STRING_VAR                    = 170;
156const unsigned int DB_DSK_STRING_COPY_ACTION            = 171;
157const unsigned int DB_DSK_PAGE                            = 172;
158const unsigned int DB_DSK_SQRT_ACTION                    = 173;
159const unsigned int DB_DSK_LOG_ACTION                    = 174;
160const unsigned int DB_DSK_PLANE_TEXTURE_MAPPING_INFO    = 175;
161const unsigned int DB_DSK_CYLINDER_TEXTURE_MAPPING_INFO    = 176;    // not implemented in 1.0
162const unsigned int DB_DSK_SPHERE_TEXTURE_MAPPING_INFO    = 177;    // not implemented in 1.0
163const unsigned int DB_DSK_GRID_TEXTURE_MAPPING_INFO        = 178;    // not implemented in 1.0
164const unsigned int DB_DSK_PERSPECTIVE_GRID_INFO            = 179;
165const unsigned int DB_DSK_XY_GRID_INFO                    = 180;    // not implemented in 1.0
166const unsigned int DB_DSK_XZ_GRID_INFO                    = 181;    // not implemented in 1.0
167const unsigned int DB_DSK_YZ_GRID_INFO                    = 182;    // not implemented in 1.0
168const unsigned int DB_DSK_MULTI_TEX_SHADER                = 183;
169const unsigned int DB_DSK_CULL_GROUP                    = 184;
170const unsigned int DB_DSK_Z_OFFSET_GROUP                = 185;
171const unsigned int DB_DSK_MULTI_SAMPLE_AA_GROUP            = 186;
172const unsigned int DB_DSK_LINE_AA_GROUP                    = 187;
173const unsigned int DB_DSK_FADE_GROUP                    = 188;
174const unsigned int DB_DSK_TERRAIN                        = 189;
175const unsigned int DB_DSK_BSP                            = 190;
176const unsigned int DB_DSK_DECAL_GROUP                    = 191;
177const unsigned int DB_DSK_STATE_MACHINE                    = 192;
178const unsigned int DB_DSK_STATE                            = 193;
179const unsigned int DB_DSK_TRANSITION                    = 194;
180const unsigned int DB_DSK_STATE_MACHINE_ACTION            = 195;
181const unsigned int DB_DSK_STATE_RULE_ACTION                = 196;
182const unsigned int DB_DSK_TRANSITION_RULE_ACTION        = 197;
183const unsigned int DB_DSK_PUSH_ACTION                    = 198; // Indicates a list of child actions coming
184const unsigned int DB_DSK_POP_ACTION                    = 199; // End of child action list
185const unsigned int DB_DSK_LIGHT_GROUP                    = 200;
186const unsigned int DB_DSK_CONTINUOUS_ACTION                = 201;
187const unsigned int DB_DSK_MOMENTARY_ACTION                = 202;
188const unsigned int DB_DSK_NSTATE_ACTION                    = 203;
189const unsigned int DB_DSK_ROTARY_DRAG_ACTION            = 204;
190const unsigned int DB_DSK_DCS                            = 205;
191const unsigned int DB_DSK_FAT_VERTEX                    = 206;
192const unsigned int DB_DSK_SLIM_VERTEX                    = 207;
193const unsigned int DB_DSK_CG_SHADER                        = 208;
194const unsigned int DB_DSK_CGFX_SHADER                    = 209;
195const unsigned int DB_DSK_GLSL_SHADER                    = 210;
196
197
198
199
200
201
202
203//
204// Constants to define the data types supported in the format
205//
206const unsigned char DB_CHAR                                = 1;
207const unsigned char DB_SHORT                            = 2;
208const unsigned char DB_INT                                = 3;
209const unsigned char DB_FLOAT                            = 4;
210const unsigned char DB_LONG                                = 5;
211const unsigned char DB_DOUBLE                            = 6;
212const unsigned char DB_VEC2F                            = 7;
213const unsigned char DB_VEC3F                            = 8;
214const unsigned char DB_VEC4F                            = 9;
215const unsigned char DB_VEC2I                            = 10;
216const unsigned char DB_VEC3I                            = 11;
217const unsigned char DB_VEC4I                            = 12;
218const unsigned char DB_VEC16F                            = 13;
219const unsigned char DB_VEC2D                            = 14;
220const unsigned char DB_VEC3D                            = 15;
221const unsigned char DB_VEC4D                            = 16;
222const unsigned char DB_VEC16D                            = 17;
223const unsigned char DB_VRTX_STRUCT                        = 18; // deprecated (obsolete) after 0.982
224const unsigned char DB_UINT                                = 19;
225const unsigned char DB_USHORT                            = 20;
226const unsigned char DB_UCHAR                            = 21;
227const unsigned char DB_ULONG                            = 22;
228const unsigned char DB_EXT_STRUCT                        = 23;
229const unsigned char DB_SHORT_WITH_PADDING                = 24;
230const unsigned char DB_CHAR_WITH_PADDING                = 25;
231const unsigned char DB_USHORT_WITH_PADDING                = 26;
232const unsigned char DB_UCHAR_WITH_PADDING                = 27;
233const unsigned char DB_BOOL_WITH_PADDING                = 28;
234const unsigned char DB_EXTENDED_FIELD_STRUCT            = 31;
235const unsigned char DB_VEC4UC                            = 32; // array of 4 unsigned chars
236const unsigned char DB_DISCRETE_MAPPING_STRUCT            = 33;
237const unsigned char DB_BITFLAGS                            = 34;
238const unsigned char DB_VEC2S                            = 35; // 2 dim array of shorts
239
240//
241// Constants to define sizeof() values
242//
243const unsigned char SIZEOF_FIELD_STRUCT                    = 4;
244const unsigned char SIZEOF_EXTENDED_FIELD_STRUCT        = 8;
245const unsigned char SIZEOF_CHAR                            = 1;
246const unsigned char SIZEOF_SHORT                        = 2;
247const unsigned char SIZEOF_INT                            = 4;
248const unsigned char SIZEOF_FLOAT                        = 4;
249const unsigned char SIZEOF_LONG                            = 4;
250const unsigned char SIZEOF_ULONG                        = 4;
251const unsigned char SIZEOF_DOUBLE                        = 8;
252const unsigned char SIZEOF_VEC2F                        = (SIZEOF_FLOAT*2);
253const unsigned char SIZEOF_VEC3F                        = (SIZEOF_FLOAT*3);
254const unsigned char SIZEOF_VEC4F                        = (SIZEOF_FLOAT*4);
255const unsigned char SIZEOF_VEC16F                        = (SIZEOF_FLOAT*16);
256const unsigned char SIZEOF_VEC2I                        = (SIZEOF_INT*2);
257const unsigned char SIZEOF_VEC3I                        = (SIZEOF_INT*3);
258const unsigned char SIZEOF_VEC4I                        = (SIZEOF_INT*4);
259const unsigned char SIZEOF_VEC2D                        = (SIZEOF_DOUBLE*2);
260const unsigned char SIZEOF_VEC3D                        = (SIZEOF_DOUBLE*3);
261const unsigned char SIZEOF_VEC4D                        = (SIZEOF_DOUBLE*4);
262const unsigned char SIZEOF_VEC16D                        = (SIZEOF_DOUBLE*16);
263const unsigned char SIZEOF_VRTX_STRUCT                    = 32;
264const unsigned char SIZEOF_EXT_STRUCT                    = 32;
265const unsigned char SIZEOF_UCHAR                        = (SIZEOF_CHAR);
266const unsigned char SIZEOF_USHORT                        = (SIZEOF_SHORT);
267const unsigned char SIZEOF_UINT                            = (SIZEOF_INT);
268const unsigned char SIZEOF_VEC4UC                        = (SIZEOF_INT);
269const unsigned char SIZEOF_SHORT_WITH_PADDING            = (SIZEOF_INT);
270const unsigned char SIZEOF_CHAR_WITH_PADDING            = (SIZEOF_INT);
271const unsigned char SIZEOF_USHORT_WITH_PADDING            = (SIZEOF_INT);
272const unsigned char SIZEOF_UCHAR_WITH_PADDING            = (SIZEOF_INT);
273const unsigned char SIZEOF_BOOL_WITH_PADDING            = (SIZEOF_INT);
274const unsigned char SIZEOF_DISCRETE_MAPPING_STRUCT        = 12;
275const unsigned char SIZEOF_BITFLAGS                        = (SIZEOF_INT);
276
277
278
279const char MIN_CHAR_VAL                    = -128;
280const char MAX_CHAR_VAL                        = 127;
281const unsigned char MAX_UCHAR_VAL                        = 255;
282const short MIN_SHORT_VAL                        = -32768;
283const short MAX_SHORT_VAL                        = 32767;
284const unsigned short MAX_USHORT_VAL                        = 65535;
285
286
287
288
289
290//
291// Valid field size values are any value cleanly divisible by 4 & < 65536
292//
293
294
295/** Record identifiers can be read as ints or this structure. All subsequent
296 *  fields are considered part of this Node until an special EOF(ield) record
297 *  is found. The only exception to this rule id DB_DSK_PUSH & DB_DSK_POP
298 *  which have no fields. User parse code should expect another REcord header
299 *  immediately after reading the Push/Pop record.
300 */
301struct GEO_DB_API geoRecordHeader
302{
303    unsigned int        id; // e.g. DB_DSK_HEADER etc.
304};
305
306
307
308
309/** When you are reading a Node's fields you read into this structure & expect
310 *  a 1 byte id. When you are expecting records - you expect 4 byte int id's
311 */
312struct GEO_DB_API geoFieldHeader
313{
314    /** The Field ID for the data about to be read from disk. This Field
315     *  token record in effect describes the data which is going to
316     *  follow this geoFieldToken struct. This description is sufficient to
317     *  allow parsing code to step over and ignore either fields or whole
318     *  records if they are unknown or unwanted.
319     */
320    unsigned char        id;        // field ID for record
321
322    /** The data type of the field coming up */
323    unsigned char        type;    // DB_INT, etc.
324
325    /** How many of the data types (described above) must be read */
326    unsigned short        num;    // How many of them follow
327
328};
329
330
331
332
333
334/** The Field ID for the data about to be read from disk. This Field
335 *  token record in effect describes the data which is going to
336 *  follow this geoExtendedFieldHeader struct. This description is sufficient to
337 *  allow parsing code to step over and ignore either fields or whole
338 *  records if they are unknown or unwanted.
339 *
340 *  This field header exists only when field data items exceed the maximum
341 *  number addressable by the size of an unsigned short (i.e. 65535). Typically
342 *  this record will be the "data item" of a standard geoFieldHeader. Take the
343 *  example of a large vertex palette...
344 *
345 *  on disk:
346 *
347 *  geoFieldHeader
348 *  {
349 *      DB_UCHAR    id        GEO_DB_VRTX_COORDS
350 *      DB_UCHAR    type    DB_EXTENDED_FIELD_STRUCT
351 *      DB_USHORT   num     1
352 *  }
353 *
354 *  parse code now knows there is 1 record of an extended field struct
355 *  following the header. It just so happens that the following "data item"
356 *  is itself a header (this time of the extended variety)
357 *
358 *  next we find the geoExtendedFieldHeader. Id is repeated.
359 *
360 *  geoExtendedFieldHeader
361 *  {
362 *      DB_USHORT    id        GEO_DB_VRTX_COORDS
363 *      DB_USHORT   type    DB_VEC3F
364 *      DB_UINT     num     number-of-verts
365 *  }
366 *
367 *  Read the data items "as normal". The id should be the same as the previous
368 *  geoFieldHeader. Basically you will only ever find an geoExtendedFieldHeader
369 *  after being informed of such by a preceeding geoFieldHeader. This means that
370 *  parse code only needs to look for geoRecordHeader & geoFieldHeader records.
371 *  It also means that there is enough info grouped together, so that an
372 *  ignoreField function can work - given a geoFieldHeader to ignore.
373 *
374 *  The id field is also an unsigned short in this header - meaning that records
375 *  will be able to have more than 255 fields (the limit of a typical
376 *  geoFieldHeader field - since its "id" field is only an unsigned char). If any
377 *  records have more than 255 fields then their ids will be unsigned shorts and
378 *  on disk they will be represented by...
379 *
380 *  geoFieldHeader
381 *  {
382 *      DB_UCHAR    id        GEO_DB_NODE_EXTENDED
383 *      DB_UCHAR    type    DB_EXTENDED_FIELD_STRUCT
384 *      DB_USHORT   num     1
385 *  }
386 *
387 *  followed by...
388 *
389 *  geoExtendedFieldHeader
390 *  {
391 *      DB_USHORT    id        GEO_DB_SOME_FUTURE_USHORT_ID
392 *      DB_USHORT   type    DB_VEC3F
393 *      DB_UINT     num     number_of_data_items
394 *  }
395 *
396 *  The GEO_DB_EXTENDED_FIELD is a special token which indicates that the "real"
397 *  id will be a ushort and be found in the following geoExtendedFieldHeader
398 *
399 */
400struct GEO_DB_API geoExtendedFieldHeader
401{
402    /** Id of the field. This should be the same ID as the previous geoFieldHeader
403     *  which indicated the existence of this record.
404     */
405    unsigned short        id;        // field ID for record
406
407    /** The data type of the field coming up */
408    unsigned short        type;    // DB_INT, etc.
409
410    /** How many of the data types (described above) must be read */
411    unsigned int        num;    // How many of them follow
412
413};
414
415
416
417
418///////////////////////////////////////////////////////////////////////////////
419// Constant to define the last field types
420//
421const unsigned char GEO_DB_LAST_FIELD                = 0;
422
423
424
425
426
427
428///////////////////////////////////////////////////////////////////////////////
429//
430// Common NODE field types - can found for all SceneGraph Nodes
431//
432///////////////////////////////////////////////////////////////////////////////
433
434const unsigned char GEO_DB_NODE_EXT                            = 1;
435const unsigned char GEO_DB_NODE_PADDING                        = 2;
436const unsigned char GEO_DB_NODE_EXTENDED                    = 4;
437const unsigned char GEO_DB_NODE_COMMENT                        = 5;
438const unsigned char GEO_DB_NODE_NAME                        = 6;
439const unsigned char GEO_DB_NODE_ID                            = 7;    // internal use only
440
441
442///////////////////////////////////////////////////////////////////////////////
443//
444// Field ID Address Ranges...
445//
446//NODE                                                         1   through 19
447//    DERIVED_A : public NODE                                    20  through 79
448//        DERIVED_B : public DERIVED_A                        80  through 139
449//            DERIVED_C : public DERIVED_B                    140 through 199
450//                DERIVED_D : public DERIVED_C                200 through 255
451//
452//Examples:
453//
454//GEO_DSK_MULTI_TEX_SHADER:
455//            Node Property IDs                                1   through 19
456//            Group Property IDs                                20  through 79
457//            RenderGroup property IDs                        80  through 139
458//            MultiTexShader Property IDs                        140 through 199
459//
460//
461//DB_DSK_LIGHTPT:
462//            Node Property IDs                                1   through 19
463//            Polygon Property IDs                            20  through 79
464//            LightPt property IDs                            80  through 139
465//
466///////////////////////////////////////////////////////////////////////////////
467
468
469
470
471
472
473///////////////////////////////////////////////////////////////////////////////
474//
475// GEO_DB_HEADER Record - Field Ids
476//
477///////////////////////////////////////////////////////////////////////////////
478
479const unsigned char GEO_DB_HDR_EXT                            = 1;    // From Node
480const unsigned char GEO_DB_HDR_PADDING                        = 2;    // From Node
481const unsigned char GEO_DB_HDR_EXTENDED                        = 4;    // From Node
482const unsigned char GEO_DB_HDR_COMMENT                        = 5;    // From Node
483const unsigned char GEO_DB_HDR_NAME                            = 6;    // From Node
484const unsigned char GEO_DB_HDR_NODE_ID                        = 7;    // From Node
485
486const unsigned char GEO_DB_HDR_UNITS                        = 20;    // Header Additions
487const unsigned char GEO_DB_HDR_BBOX                            = 21;
488const unsigned char GEO_DB_HDR_VERSION                        = 22;
489const unsigned char GEO_DB_HDR_EXT_TEMPLATE                    = 23;
490const unsigned char GEO_DB_HDR_UP_AXIS                        = 24;
491const unsigned char GEO_DB_HDR_PROJ_TYPE                    = 25;
492const unsigned char GEO_DB_HDR_LAMBERT1                        = 26;
493const unsigned char GEO_DB_HDR_LAMBERT2                        = 27;
494const unsigned char GEO_DB_HDR_UTM_ZONE                        = 28;
495const unsigned char GEO_DB_HDR_SOUTHERN_HEMISPHERE            = 29;
496const unsigned char GEO_DB_HDR_ELLIPSOID                    = 30;
497const unsigned char GEO_DB_HDR_ORIGIN_LAT                    = 31;
498const unsigned char GEO_DB_HDR_ORIGIN_LON                    = 32;
499const unsigned char GEO_DB_HDR_SW_CORNER_LAT                = 33;
500const unsigned char GEO_DB_HDR_SW_CORNER_LON                = 34;
501const unsigned char GEO_DB_HDR_NE_CORNER_LAT                = 35;
502const unsigned char GEO_DB_HDR_NE_CORNER_LON                = 36;
503const unsigned char GEO_DB_HDR_SW_CORNER_X                    = 37;
504const unsigned char GEO_DB_HDR_SW_CORNER_Y                    = 38;
505const unsigned char GEO_DB_HDR_OFFSET_X                        = 39;
506const unsigned char GEO_DB_HDR_OFFSET_Y                        = 40;
507const unsigned char GEO_DB_HDR_OFFSET_Z                        = 41;
508const unsigned char GEO_DB_HDR_MAJOR_AXIS                    = 42;
509const unsigned char GEO_DB_HDR_MINOR_AXIS                    = 43;
510
511
512
513
514///////////////////////////////////////////////////////////////////////////////
515//
516// DB_DSK_COORD_POOL Record - Field Ids
517//
518///////////////////////////////////////////////////////////////////////////////
519
520const unsigned char GEO_DB_COORD_POOL_SIZE                    = 1;
521const unsigned char GEO_DB_COORD_POOL_VALUES                = 2;
522const unsigned char GEO_DB_COORD_POOL_SCALE                    = 3;
523const unsigned char GEO_DB_COORD_POOL_OFFSET                = 4;
524
525
526
527
528
529///////////////////////////////////////////////////////////////////////////////
530//
531// DB_DSK_NORMAL_POOL Record - Field Ids
532//
533///////////////////////////////////////////////////////////////////////////////
534
535const unsigned char GEO_DB_NORMAL_POOL_SIZE                    = 1;
536const unsigned char GEO_DB_NORMAL_POOL_VALUES                = 2;
537
538
539
540
541
542
543///////////////////////////////////////////////////////////////////////////////
544//
545// DB_DSK_MATERIAL Record - Field Ids
546//
547///////////////////////////////////////////////////////////////////////////////
548
549const unsigned char GEO_DB_MAT_AMBIENT                        = 1;
550const unsigned char GEO_DB_MAT_DIFFUSE                        = 2;
551const unsigned char GEO_DB_MAT_SPECULAR                        = 3;
552const unsigned char GEO_DB_MAT_SHININESS                    = 4;
553const unsigned char GEO_DB_MAT_NAME                            = 5;
554const unsigned char GEO_DB_MAT_EMISSIVE                        = 6;
555
556
557
558
559
560
561///////////////////////////////////////////////////////////////////////////////
562//
563// DB_DSK_COLOR_PALETTE Record - Field Ids
564//
565///////////////////////////////////////////////////////////////////////////////
566
567const unsigned char GEO_DB_COLOR_PALETTE_HIGHEST_INTENSITIES = 1;
568
569
570///////////////////////////////////////////////////////////////////////////////
571//
572// DB_DSK_TEXTURE Record - Field Ids
573//
574///////////////////////////////////////////////////////////////////////////////
575
576const unsigned char GEO_DB_TEX_WRAPS                        = 1;
577const unsigned char GEO_DB_TEX_WRAPT                        = 2;
578const unsigned char GEO_DB_TEX_MAGFILTER                    = 3;
579const unsigned char GEO_DB_TEX_MINFILTER                    = 4;
580const unsigned char GEO_DB_TEX_ENV                            = 5;
581const unsigned char GEO_DB_TEX_FILE_NAME                    = 6;
582const unsigned char GEO_DB_TEX_NAME                            = 7;
583const unsigned char GEO_DB_TEX_CUBE_XP_FILE_NAME            = 8;
584const unsigned char GEO_DB_TEX_CUBE_XN_FILE_NAME            = 9;
585const unsigned char GEO_DB_TEX_CUBE_YP_FILE_NAME            = 10;
586const unsigned char GEO_DB_TEX_CUBE_YN_FILE_NAME            = 11;
587const unsigned char GEO_DB_TEX_CUBE_ZP_FILE_NAME            = 12;
588const unsigned char GEO_DB_TEX_CUBE_ZN_FILE_NAME            = 13;
589const unsigned char GEO_DB_TEX_INTERNAL_FORMAT                = 14;
590const unsigned char GEO_DB_TEX_ANISOTROPIC_FILTER            = 15;
591const unsigned char GEO_DB_TEX_REAL_WORLD_WIDTH                = 16;
592const unsigned char GEO_DB_TEX_REAL_WORLD_HEIGHT            = 17;
593const unsigned char GEO_DB_TEX_SENSOR_FILE_NAME                = 18;
594
595
596
597
598
599///////////////////////////////////////////////////////////////////////////////
600//
601// Common SHADER field types - can found for all Shader Types
602//
603///////////////////////////////////////////////////////////////////////////////
604
605const unsigned char GEO_DB_SHADER_NAME                        = 1;
606const unsigned char GEO_DB_SHADER_VERTEX_PROGRAM            = 2;
607const unsigned char GEO_DB_SHADER_FRAGMENT_PROGRAM            = 3;
608
609
610
611
612
613
614
615///////////////////////////////////////////////////////////////////////////////
616//
617// DB_DSK_CG_SHADER Record - Field Ids
618//
619///////////////////////////////////////////////////////////////////////////////
620
621// All shader Fields    +
622
623const unsigned char GEO_DB_SHADER_CG_VERTEX_ENTRY            = 20;
624const unsigned char GEO_DB_SHADER_CG_VERTEX_PROFILE            = 21;
625const unsigned char GEO_DB_SHADER_CG_FRAGMENT_ENTRY            = 22;
626const unsigned char GEO_DB_SHADER_CG_FRAGMENT_PROFILE        = 23;
627
628
629
630
631
632
633///////////////////////////////////////////////////////////////////////////////
634//
635// DB_DSK_CGFX_SHADER Record - Field Ids
636//
637///////////////////////////////////////////////////////////////////////////////
638
639// All shader Fields    +
640
641// currently No additional fields                            = 20 will be first addition
642
643
644
645
646
647///////////////////////////////////////////////////////////////////////////////
648//
649// DB_DSK_GLSL_SHADER Record - Field Ids
650//
651///////////////////////////////////////////////////////////////////////////////
652
653// All shader Fields    +
654
655// currently No additional fields                            = 20 will be first addition
656
657
658
659
660///////////////////////////////////////////////////////////////////////////////
661//
662// DB_DSK_VIEW Record - Field Ids
663//
664///////////////////////////////////////////////////////////////////////////////
665
666const unsigned char GEO_DB_VIEW_NEAR                        = 1;
667const unsigned char GEO_DB_VIEW_FAR                            = 2;
668const unsigned char GEO_DB_VIEW_POS                            = 3;
669const unsigned char GEO_DB_VIEW_CEN                            = 4;
670const unsigned char GEO_DB_VIEW_TRACKBALL                    = 5;
671const unsigned char GEO_DB_VIEW_BACKFACE                    = 6;
672const unsigned char GEO_DB_VIEW_TEXTURE                        = 7;
673const unsigned char GEO_DB_VIEW_ILLUMINATED                    = 8;
674const unsigned char GEO_DB_VIEW_ZBUFFER                        = 9;
675const unsigned char GEO_DB_VIEW_SELECTIVE_ZBUFFER            = 10;
676const unsigned char GEO_DB_VIEW_DRAWSTYLE                    = 11;
677const unsigned char GEO_DB_VIEW_SELECTIVE_CULLFACE            = 12;
678const unsigned char GEO_DB_VIEW_SELECTIVE_BLENDING            = 13;
679const unsigned char GEO_DB_VIEW_SELECTIVE_SHADING            = 14;
680
681
682
683
684
685///////////////////////////////////////////////////////////////////////////////
686//
687// DB_DSK_PERSPECTIVE_GRID_INFO Record
688//
689// DB_DSK_XY_GRID_INFO Record
690// DB_DSK_XZ_GRID_INFO Record
691// DB_DSK_YZ_GRID_INFO Record - Field Ids
692//
693///////////////////////////////////////////////////////////////////////////////
694
695const unsigned char GEO_DB_GRID_ON                            = 1;
696const unsigned char GEO_DB_GRID_ZBUFFER                        = 2;
697const unsigned char GEO_DB_GRID_SNAP                        = 3;
698const unsigned char GEO_DB_GRID_OVER                        = 4;
699const unsigned char GEO_DB_GRID_MAJOR                        = 5;
700const unsigned char GEO_DB_GRID_MINOR                        = 6;
701const unsigned char GEO_DB_GRID_NUM_CELLS                    = 7;
702const unsigned char GEO_DB_GRID_POS                            = 8;
703const unsigned char GEO_DB_GRID_MATRIX                        = 9;
704
705
706
707
708
709///////////////////////////////////////////////////////////////////////////////
710//
711// DB_DSK_GROUP Record - Field Ids
712//
713///////////////////////////////////////////////////////////////////////////////
714
715// All Node Fields    +
716
717const unsigned char GEO_DB_GRP_BBOX                            = 20;    // Group Additions
718const unsigned char GEO_DB_GRP_INSTANCE_DEF                    = 21;
719const unsigned char GEO_DB_GRP_FLAG_SHOW_BBOX                = 22;
720const unsigned char GEO_DB_GRP_ZBUFFER                        = 23;
721const unsigned char GEO_DB_GRP_MATRIX_TRANSFORM                = 24;
722const unsigned char GEO_DB_GRP_TRANSLATE_TRANSFORM            = 25;
723const unsigned char GEO_DB_GRP_ROTATE_TRANSFORM                = 26;
724const unsigned char GEO_DB_GRP_SCALE_TRANSFORM                = 27;
725const unsigned char GEO_DB_GRP_TOD_DISPLAY                    = 28;
726const unsigned char GEO_DB_GRP_NOISECT                        = 29;
727
728
729
730
731///////////////////////////////////////////////////////////////////////////////
732//
733// DB_DSK_LIGHT_GROUP Record - Field Ids
734//
735///////////////////////////////////////////////////////////////////////////////
736
737// All Node Fields    +
738// All Group Fields +
739
740const unsigned char GEO_DB_LIGHT_GROUP_ENABLED                = 80;
741const unsigned char GEO_DB_LIGHT_GROUP_INTENSITY            = 81;
742const unsigned char GEO_DB_LIGHT_GROUP_ANIMATION            = 82;
743const unsigned char GEO_DB_LIGHT_GROUP_STABILIZED            = 83;
744const unsigned char GEO_DB_LIGHT_GROUP_TYPE                    = 84;
745const unsigned char GEO_DB_LIGHT_GROUP_IG_LIGHTGROUP_ID        = 85;
746
747
748
749
750///////////////////////////////////////////////////////////////////////////////
751//
752// DB_DSK_DCS Record - Field Ids
753//
754///////////////////////////////////////////////////////////////////////////////
755
756// All Node Fields    +
757// All Group Fields +
758
759const unsigned char GEO_DB_DCS_ACTIVE                        = 80;
760
761const unsigned char GEO_DB_DCS_TRANSLATE_X_DEFAULT            = 81;
762const unsigned char GEO_DB_DCS_TRANSLATE_X_MIN                = 82;
763const unsigned char GEO_DB_DCS_TRANSLATE_X_MAX                = 83;
764const unsigned char GEO_DB_DCS_TRANSLATE_X_STEP                = 84;
765const unsigned char GEO_DB_DCS_TRANSLATE_X_CLAMP            = 85;
766
767const unsigned char GEO_DB_DCS_TRANSLATE_Y_DEFAULT            = 86;
768const unsigned char GEO_DB_DCS_TRANSLATE_Y_MIN                = 87;
769const unsigned char GEO_DB_DCS_TRANSLATE_Y_MAX                = 88;
770const unsigned char GEO_DB_DCS_TRANSLATE_Y_STEP                = 89;
771const unsigned char GEO_DB_DCS_TRANSLATE_Y_CLAMP            = 90;
772
773const unsigned char GEO_DB_DCS_TRANSLATE_Z_DEFAULT            = 91;
774const unsigned char GEO_DB_DCS_TRANSLATE_Z_MIN                = 92;
775const unsigned char GEO_DB_DCS_TRANSLATE_Z_MAX                = 93;
776const unsigned char GEO_DB_DCS_TRANSLATE_Z_STEP                = 94;
777const unsigned char GEO_DB_DCS_TRANSLATE_Z_CLAMP            = 95;
778
779const unsigned char GEO_DB_DCS_ROTATE_X_DEFAULT                = 96;
780const unsigned char GEO_DB_DCS_ROTATE_X_MIN                    = 97;
781const unsigned char GEO_DB_DCS_ROTATE_X_MAX                    = 98;
782const unsigned char GEO_DB_DCS_ROTATE_X_STEP                = 99;
783const unsigned char GEO_DB_DCS_ROTATE_X_CLAMP                = 100;
784
785const unsigned char GEO_DB_DCS_ROTATE_Y_DEFAULT                = 101;
786const unsigned char GEO_DB_DCS_ROTATE_Y_MIN                    = 102;
787const unsigned char GEO_DB_DCS_ROTATE_Y_MAX                    = 103;
788const unsigned char GEO_DB_DCS_ROTATE_Y_STEP                = 104;
789const unsigned char GEO_DB_DCS_ROTATE_Y_CLAMP                = 105;
790
791const unsigned char GEO_DB_DCS_ROTATE_Z_DEFAULT                = 106;
792const unsigned char GEO_DB_DCS_ROTATE_Z_MIN                    = 107;
793const unsigned char GEO_DB_DCS_ROTATE_Z_MAX                    = 108;
794const unsigned char GEO_DB_DCS_ROTATE_Z_STEP                = 109;
795const unsigned char GEO_DB_DCS_ROTATE_Z_CLAMP                = 110;
796
797const unsigned char GEO_DB_DCS_SCALE_X_DEFAULT                = 111;
798const unsigned char GEO_DB_DCS_SCALE_X_MIN                    = 112;
799const unsigned char GEO_DB_DCS_SCALE_X_MAX                    = 113;
800const unsigned char GEO_DB_DCS_SCALE_X_STEP                    = 114;
801const unsigned char GEO_DB_DCS_SCALE_X_CLAMP                = 115;
802
803const unsigned char GEO_DB_DCS_SCALE_Y_DEFAULT                = 116;
804const unsigned char GEO_DB_DCS_SCALE_Y_MIN                    = 117;
805const unsigned char GEO_DB_DCS_SCALE_Y_MAX                    = 118;
806const unsigned char GEO_DB_DCS_SCALE_Y_STEP                    = 119;
807const unsigned char GEO_DB_DCS_SCALE_Y_CLAMP                = 120;
808
809const unsigned char GEO_DB_DCS_SCALE_Z_DEFAULT                = 121;
810const unsigned char GEO_DB_DCS_SCALE_Z_MIN                    = 122;
811const unsigned char GEO_DB_DCS_SCALE_Z_MAX                    = 123;
812const unsigned char GEO_DB_DCS_SCALE_Z_STEP                    = 124;
813const unsigned char GEO_DB_DCS_SCALE_Z_CLAMP                = 125;
814
815const unsigned char GEO_DB_DCS_ORIGIN                        = 126;
816const unsigned char GEO_DB_DCS_XPOS                            = 127;
817const unsigned char GEO_DB_DCS_ZPOS                            = 128;
818const unsigned char GEO_DB_DCS_VECTOR                        = 129;
819
820
821
822
823
824
825///////////////////////////////////////////////////////////////////////////////
826//
827// DB_DSK_CULL_GROUP Record - Field Ids
828//
829///////////////////////////////////////////////////////////////////////////////
830
831// All Node Fields    +
832// All Group Fields +
833
834const unsigned char GEO_DB_CULL_GRP_RADIUS                    = 80;    // CullGroup Additions
835
836
837
838
839
840///////////////////////////////////////////////////////////////////////////////
841//
842// DB_DSK_Z_OFFSET_GROUP Record - Field Ids
843//
844///////////////////////////////////////////////////////////////////////////////
845
846// All Node Fields    +
847// All Group Fields +
848
849const unsigned char GEO_DB_Z_GRP_DEPTH_OFFSET                = 80;    // ZOffsetGroup Additions
850const unsigned char GEO_DB_Z_GRP_DEPTH_OFFSET_CONSTANT        = 81;
851const unsigned char GEO_DB_Z_GRP_TYPE                        = 82;
852
853
854
855
856
857///////////////////////////////////////////////////////////////////////////////
858//
859// DB_DSK_MULTI_SAMPLE_AA_GROUP Record - Field Ids
860//
861///////////////////////////////////////////////////////////////////////////////
862
863// All Node Fields    +
864// All Group Fields +
865
866const unsigned char GEO_DB_MULTI_SAMPLE_AA_GRP_NUM_SAMPLES    = 80;    // MultiSampleAAGroup Additions
867const unsigned char GEO_DB_MULTI_SAMPLE_AA_GRP_JITTER_RADIUS= 81;
868const unsigned char GEO_DB_MULTI_SAMPLE_AA_GRP_ALPHA_CLAMP    = 82;
869
870
871
872
873
874///////////////////////////////////////////////////////////////////////////////
875//
876// DB_DSK_LINE_AA_GROUP Record - Field Ids
877//
878///////////////////////////////////////////////////////////////////////////////
879
880
881// All Node Fields    +
882// All Group Fields +
883
884const unsigned char GEO_DB_LINE_AA_GRP_RANGE                = 80;    // LineAAGroup Additions
885const unsigned char GEO_DB_LINE_AA_GRP_ALPHA_FACTOR            = 81;
886
887
888
889
890
891
892
893///////////////////////////////////////////////////////////////////////////////
894//
895// DB_DSK_FADE_GROUP Record - Field Ids
896//
897///////////////////////////////////////////////////////////////////////////////
898
899// All Node Fields    +
900// All Group Fields +
901
902const unsigned char GEO_DB_FADE_GRP_NEAR_RANGE                = 80;    // FadeGroup Additions
903const unsigned char GEO_DB_FADE_GRP_NEAR_TRANSITION            = 81;
904const unsigned char GEO_DB_FADE_GRP_FAR_RANGE                = 82;
905const unsigned char GEO_DB_FADE_GRP_FAR_TRANSITION            = 83;
906
907
908
909
910
911
912///////////////////////////////////////////////////////////////////////////////
913//
914// DB_DSK_TERRAIN Record - Field Ids
915//
916///////////////////////////////////////////////////////////////////////////////
917
918// All Node Fields    +
919// All Group Fields +
920
921                                                                    // No Terrain Additions
922
923
924
925
926
927
928///////////////////////////////////////////////////////////////////////////////
929//
930// DB_DSK_DECAL_GROUP Record - Field Ids
931//
932///////////////////////////////////////////////////////////////////////////////
933
934// All Node Fields    +
935// All Group Fields +
936
937// No Decal Group Additions
938
939
940
941
942
943///////////////////////////////////////////////////////////////////////////////
944//
945// DB_DSK_BSP Record - Field Ids
946//
947///////////////////////////////////////////////////////////////////////////////
948
949// All Node Fields    +
950// All Group Fields +
951
952const unsigned char GEO_DB_BSP_PLANE_EQUATION                = 80;    // BSP Additions
953
954
955
956
957
958
959///////////////////////////////////////////////////////////////////////////////
960//
961// GEO_DB_LOD Record - Field Ids
962//
963///////////////////////////////////////////////////////////////////////////////
964
965// All Node Fields    +
966// All Group Fields +
967
968const unsigned char GEO_DB_LOD_IN                            = 80;    // LOD Additions
969const unsigned char GEO_DB_LOD_OUT                            = 81;
970const unsigned char GEO_DB_LOD_CENTER                        = 82;
971const unsigned char GEO_DB_LOD_CALC                            = 83;
972const unsigned char GEO_DB_LOD_FREEZE_CENTER                = 84;
973
974
975
976
977
978
979///////////////////////////////////////////////////////////////////////////////
980//
981// GEO_DB_SEQUENCE Record - Field Ids
982//
983///////////////////////////////////////////////////////////////////////////////
984
985// All Node Fields    +
986// All Group Fields +
987
988const unsigned char GEO_DB_SEQUENCE_MODE                    = 80;    // Sequence Additions
989const unsigned char GEO_DB_SEQUENCE_ACTIVE                    = 81;
990const unsigned char GEO_DB_SEQUENCE_FRAME_TIME                = 82;
991const unsigned char GEO_DB_SEQUENCE_USE_FRAME_TIME            = 83;
992const unsigned char GEO_DB_SEQUENCE_SWING                    = 84;
993
994
995
996
997
998
999///////////////////////////////////////////////////////////////////////////////
1000//
1001// GEO_DB_INSTANCE Record - Field Ids
1002//
1003///////////////////////////////////////////////////////////////////////////////
1004
1005// All Node Fields    +
1006// All Group Fields +
1007
1008const unsigned char GEO_DB_INSTANCE_DEF                        = 80;    // instance Additions
1009
1010
1011
1012
1013
1014
1015
1016///////////////////////////////////////////////////////////////////////////////
1017//
1018// GEO_DB_SWITCH Record - Field Ids
1019//
1020///////////////////////////////////////////////////////////////////////////////
1021
1022// All Node Fields    +
1023// All Group Fields +
1024
1025const unsigned char GEO_DB_SWITCH_CURRENT_MASK                = 80;    // switch Additions
1026const unsigned char GEO_DB_SWITCH_MASK_WIDTH                = 81;
1027const unsigned char GEO_DB_SWITCH_NUM_MASKS                    = 82;
1028const unsigned char GEO_DB_SWITCH_MASKS                        = 83;
1029
1030
1031
1032
1033
1034
1035
1036
1037///////////////////////////////////////////////////////////////////////////////
1038//
1039// GEO_DB_PAGE Record - Field Ids
1040//
1041///////////////////////////////////////////////////////////////////////////////
1042
1043// All Node Fields    +
1044// All Group Fields +
1045
1046const unsigned char GEO_DB_PAGE_ACTIVE_CHILD                = 80;    // page Additions
1047
1048
1049
1050
1051
1052
1053
1054///////////////////////////////////////////////////////////////////////////////
1055//
1056// GEO_DB_BASE_GROUP Record - Field Ids
1057//
1058///////////////////////////////////////////////////////////////////////////////
1059
1060// It is important to note that user extended Group fields begin with a field
1061// ID of 140 (GEO_DB_BASE_GROUP_START_EXTERNAL). This allows Geo to add
1062// additional fields to the BaseGroup class
1063
1064// All Node Fields    +
1065// All Group Fields +
1066
1067const unsigned char GEO_DB_BASE_GROUP_CLASSNAME                = 80;    // BaseGroup Additions
1068const unsigned char GEO_DB_BASE_GROUP_EXTENDED_TYPE            = 81;
1069const unsigned char GEO_DB_BASE_GROUP_PLUGIN_REQUIRED        = 82;
1070
1071const unsigned char GEO_DB_BASE_GROUP_START_EXTERNAL        = 140;    // User Derived Node Additions
1072
1073
1074
1075
1076
1077
1078
1079
1080///////////////////////////////////////////////////////////////////////////////
1081// GEO_DB_BASE_SURFACE Record - Field Ids
1082//
1083// It is important to note that user extended Surface fields begin with a field
1084// ID of 80 (GEO_DB_BASE_SURFACE_START_EXTERNAL). This allows Geo to add
1085// additional fields which will be common to all derived groups up to this
1086// number
1087//
1088// NOT IMPLEMENTED IN GEO 1.0
1089//
1090///////////////////////////////////////////////////////////////////////////////
1091
1092
1093// All Node Fields    +
1094
1095const unsigned char GEO_DB_BASE_SURFACE_CLASSNAME            = 20;    // BaseSurface Additions
1096const unsigned char GEO_DB_BASE_SURFACE_EXTENDED_TYPE        = 21;
1097const unsigned char GEO_DB_BASE_SURFACE_PLUGIN_REQUIRED        = 22;
1098
1099const unsigned char GEO_DB_BASE_SURFACE_START_EXTERNAL        = 80;    // User Derived Node Additions
1100
1101
1102
1103
1104
1105
1106///////////////////////////////////////////////////////////////////////////////
1107//
1108// GEO_DB_RENDERGROUP Record - Field Ids
1109//
1110///////////////////////////////////////////////////////////////////////////////
1111
1112// All Node Fields    +
1113// All Group Fields +
1114
1115const unsigned char GEO_DB_RENDERGROUP_MAT                    = 80;    // RenderGroup Additions
1116const unsigned char GEO_DB_RENDERGROUP_TERRAIN                = 81;
1117const unsigned char GEO_DB_RENDERGROUP_BILLBOARD            = 82;
1118const unsigned char GEO_DB_RENDERGROUP_LIGHTING                = 83;
1119const unsigned char GEO_DB_RENDERGROUP_FOG                    = 84;
1120const unsigned char GEO_DB_RENDERGROUP_GAIN                    = 85;
1121const unsigned char GEO_DB_RENDERGROUP_TRANSPARENCY            = 86;
1122const unsigned char GEO_DB_RENDERGROUP_CULLING                = 87;
1123const unsigned char GEO_DB_RENDERGROUP_BLENDING                = 88;
1124const unsigned char GEO_DB_RENDERGROUP_ALPHA_REF            = 89;
1125const unsigned char GEO_DB_RENDERGROUP_LIGHTPTS                = 90;
1126
1127
1128
1129
1130
1131
1132
1133///////////////////////////////////////////////////////////////////////////////
1134//
1135// GEO_DB_MULTI_TEX_SHADER Record - Field Ids
1136//
1137///////////////////////////////////////////////////////////////////////////////
1138
1139// All Node Fields    +
1140// All Group Fields +
1141// All RenderGroup Fields +
1142
1143const unsigned char GEO_DB_MULTI_TEX_SHADER_TEX0            = 140;    // MultiTexShader Additions
1144const unsigned char GEO_DB_MULTI_TEX_SHADER_TEX1            = 141;
1145const unsigned char GEO_DB_MULTI_TEX_SHADER_TEX2            = 142;
1146const unsigned char GEO_DB_MULTI_TEX_SHADER_TEX3            = 143;
1147const unsigned char GEO_DB_MULTI_TEX_SHADER_TEX4            = 144;
1148const unsigned char GEO_DB_MULTI_TEX_SHADER_TEX5            = 145;
1149const unsigned char GEO_DB_MULTI_TEX_SHADER_TEX6            = 146;
1150const unsigned char GEO_DB_MULTI_TEX_SHADER_TEX7            = 147;
1151const unsigned char GEO_DB_MULTI_TEX_SHADER_TEX0_FUNCTION    = 148;
1152const unsigned char GEO_DB_MULTI_TEX_SHADER_TEX1_FUNCTION    = 149;
1153const unsigned char GEO_DB_MULTI_TEX_SHADER_TEX2_FUNCTION    = 150;
1154const unsigned char GEO_DB_MULTI_TEX_SHADER_TEX3_FUNCTION    = 151;
1155const unsigned char GEO_DB_MULTI_TEX_SHADER_TEX4_FUNCTION    = 152;
1156const unsigned char GEO_DB_MULTI_TEX_SHADER_TEX5_FUNCTION    = 153;
1157const unsigned char GEO_DB_MULTI_TEX_SHADER_TEX6_FUNCTION    = 154;
1158const unsigned char GEO_DB_MULTI_TEX_SHADER_TEX7_FUNCTION    = 155;
1159const unsigned char GEO_DB_MULTI_TEX_SHADER_TEX0_BLEND_COLOR= 156;
1160const unsigned char GEO_DB_MULTI_TEX_SHADER_TEX1_BLEND_COLOR= 157;
1161const unsigned char GEO_DB_MULTI_TEX_SHADER_TEX2_BLEND_COLOR= 158;
1162const unsigned char GEO_DB_MULTI_TEX_SHADER_TEX3_BLEND_COLOR= 159;
1163const unsigned char GEO_DB_MULTI_TEX_SHADER_TEX4_BLEND_COLOR= 160;
1164const unsigned char GEO_DB_MULTI_TEX_SHADER_TEX5_BLEND_COLOR= 161;
1165const unsigned char GEO_DB_MULTI_TEX_SHADER_TEX6_BLEND_COLOR= 162;
1166const unsigned char GEO_DB_MULTI_TEX_SHADER_TEX7_BLEND_COLOR= 163;
1167
1168
1169
1170
1171
1172
1173
1174///////////////////////////////////////////////////////////////////////////////
1175//
1176// GEO_DB_POLYGON Record - Field Ids
1177//
1178///////////////////////////////////////////////////////////////////////////////
1179
1180// All Node Fields    +
1181
1182const unsigned char GEO_DB_POLY_NORMAL                        = 20;    // Polygon Additions
1183const unsigned char GEO_DB_POLY_CENTER                        = 21;
1184const unsigned char GEO_DB_POLY_PACKED_COLOR                = 22;
1185const unsigned char GEO_DB_POLY_DSTYLE                        = 23;
1186const unsigned char GEO_DB_POLY_SHADEMODEL                    = 24;
1187const unsigned char GEO_DB_POLY_USE_MATERIAL_DIFFUSE        = 25;
1188const unsigned char GEO_DB_POLY_USE_VERTEX_COLORS            = 26;
1189const unsigned char GEO_DB_POLY_COLOR_INDEX                    = 27;
1190const unsigned char GEO_DB_POLY_PT_SIZE                        = 28;
1191const unsigned char GEO_DB_POLY_LINE_WIDTH                    = 29;
1192const unsigned char GEO_DB_POLY_TEX0                        = 30;
1193const unsigned char GEO_DB_POLY_TEX1                        = 31;
1194const unsigned char GEO_DB_POLY_TEX2                        = 32;
1195const unsigned char GEO_DB_POLY_TEX3                        = 33;
1196const unsigned char GEO_DB_POLY_TEX4                        = 34;
1197const unsigned char GEO_DB_POLY_TEX5                        = 35;
1198const unsigned char GEO_DB_POLY_TEX6                        = 36;
1199const unsigned char GEO_DB_POLY_TEX7                        = 37;
1200const unsigned char GEO_DB_POLY_TEX0_FUNCTION                = 38;
1201const unsigned char GEO_DB_POLY_TEX1_FUNCTION                = 39;
1202const unsigned char GEO_DB_POLY_TEX2_FUNCTION                = 40;
1203const unsigned char GEO_DB_POLY_TEX3_FUNCTION                = 41;
1204const unsigned char GEO_DB_POLY_TEX4_FUNCTION                = 42;
1205const unsigned char GEO_DB_POLY_TEX5_FUNCTION                = 43;
1206const unsigned char GEO_DB_POLY_TEX6_FUNCTION                = 44;
1207const unsigned char GEO_DB_POLY_TEX7_FUNCTION                = 45;
1208const unsigned char GEO_DB_POLY_TEX0_BLEND_COLOR            = 46;
1209const unsigned char GEO_DB_POLY_TEX1_BLEND_COLOR            = 47;
1210const unsigned char GEO_DB_POLY_TEX2_BLEND_COLOR            = 48;
1211const unsigned char GEO_DB_POLY_TEX3_BLEND_COLOR            = 49;
1212const unsigned char GEO_DB_POLY_TEX4_BLEND_COLOR            = 50;
1213const unsigned char GEO_DB_POLY_TEX5_BLEND_COLOR            = 51;
1214const unsigned char GEO_DB_POLY_TEX6_BLEND_COLOR            = 52;
1215const unsigned char GEO_DB_POLY_TEX7_BLEND_COLOR            = 53;
1216const unsigned char GEO_DB_POLY_WHITE_IF_TEXTURED            = 54;
1217const unsigned char GEO_DB_POLY_BASE                        = 55;
1218const unsigned char GEO_DB_POLY_DECAL                        = 56;
1219const unsigned char GEO_DB_POLY_HIDDEN                        = 57;
1220const unsigned char GEO_DB_POLY_HELPER_TYPE                    = 58;
1221const unsigned char GEO_DB_POLY_BINORMAL                    = 59;
1222const unsigned char GEO_DB_POLY_TANGENT                        = 60;
1223const unsigned char GEO_DB_POLY_SHADER                        = 61;
1224const unsigned char GEO_DB_POLY_SMC                            = 62;
1225const unsigned char GEO_DB_POLY_FID                            = 63;
1226const unsigned char GEO_DB_POLY_FOOTPRINT                    = 64;
1227
1228
1229
1230
1231///////////////////////////////////////////////////////////////////
1232//
1233// DB_DSK_PLANE_TEXTURE_MAPPING_INFO  Record Field Ids
1234//
1235///////////////////////////////////////////////////////////////////
1236
1237const unsigned char GEO_DB_PLANE_TEXTURE_MAPPING_INFO_ORIGIN_PT        = 1;
1238const unsigned char GEO_DB_PLANE_TEXTURE_MAPPING_INFO_U_AXIS_PT        = 2;
1239const unsigned char GEO_DB_PLANE_TEXTURE_MAPPING_INFO_V_AXIS_PT        = 3;
1240const unsigned char GEO_DB_PLANE_TEXTURE_MAPPING_INFO_TEXTURE_UNIT    = 4;
1241
1242
1243
1244
1245
1246
1247
1248///////////////////////////////////////////////////////////////////////////////
1249//
1250// GEO_DB_LIGHTPT Record - Field Ids
1251//
1252// Many of the possible LightPt fields do not make sense in the context of a
1253// Light point - namely most of the Polygon rendering & texturing properties.
1254// These will likely not be present in a Geo file - if they are they can be
1255// ignored.
1256///////////////////////////////////////////////////////////////////////////////
1257
1258// All Node Fields    +
1259// All Poly Fields +
1260
1261const unsigned char GEO_DB_LIGHTPT_TYPE                        = 80;    // LightPt Additions
1262const unsigned char GEO_DB_LIGHTPT_DIRECTION_VECTOR            = 81;
1263const unsigned char GEO_DB_LIGHTPT_BACK_PACKED_COLOR        = 82;
1264const unsigned char GEO_DB_LIGHTPT_MIN_PIXEL_SIZE            = 83;
1265const unsigned char GEO_DB_LIGHTPT_MAX_PIXEL_SIZE            = 84;
1266const unsigned char GEO_DB_LIGHTPT_HORIZ_LOBE_ANGLE            = 85;
1267const unsigned char GEO_DB_LIGHTPT_VERT_LOBE_ANGLE            = 86;
1268const unsigned char GEO_DB_LIGHTPT_DAY_DISPLAY                = 87;
1269const unsigned char GEO_DB_LIGHTPT_DUSK_DISPLAY                = 88;
1270const unsigned char GEO_DB_LIGHTPT_NIGHT_DISPLAY            = 89;
1271const unsigned char GEO_DB_LIGHTPT_BACK_COLOR_INDEX            = 90;
1272const unsigned char GEO_DB_LIGHTPT_SPECIAL_FX                = 91;
1273const unsigned char GEO_DB_LIGHTPT_ANIM_FRAME_COUNT            = 92;
1274const unsigned char GEO_DB_LIGHTPT_ANIM_ACTUAL_COUNT        = 93;
1275const unsigned char GEO_DB_LIGHTPT_IG_LIGHTGROUP_ID            = 94;
1276const unsigned char GEO_DB_LIGHTPT_ANIM_PHASE_DELAY            = 95;
1277const unsigned char GEO_DB_LIGHTPT_OPTIMIZATION                = 96;
1278
1279
1280
1281
1282
1283
1284///////////////////////////////////////////////////////////////////////////////
1285//
1286// GEO_DB_TEXT Record - Field Ids
1287//
1288///////////////////////////////////////////////////////////////////////////////
1289
1290// All Node Fields    +
1291
1292const unsigned char GEO_DB_TEXT_TYPE                        = 20;    // Text Additions
1293const unsigned char GEO_DB_TEXT_STRING                        = 21;
1294const unsigned char GEO_DB_TEXT_JUSTIFICATION                = 22;
1295const unsigned char GEO_DB_TEXT_DIRECTION                    = 23;
1296const unsigned char GEO_DB_TEXT_LINEWIDTH                    = 24;
1297const unsigned char GEO_DB_TEXT_PACKED_COLOR                = 25;
1298const unsigned char GEO_DB_TEXT_SCALE_X                        = 26;
1299const unsigned char GEO_DB_TEXT_SCALE_Y                        = 27;
1300const unsigned char GEO_DB_TEXT_MATRIX                        = 28;
1301const unsigned char GEO_DB_TEXT_EXPANSION                    = 29;
1302const unsigned char GEO_DB_TEXT_COLOR_INDEX                    = 30;
1303const unsigned char GEO_DB_TEXT_FONT                        = 31;
1304
1305
1306
1307
1308
1309
1310///////////////////////////////////////////////////////////////////////////////
1311//
1312// GEO_DB_MESH Record - Field Ids
1313//
1314///////////////////////////////////////////////////////////////////////////////
1315
1316// All Node Fields    +
1317// All Poly Fields  +
1318
1319const unsigned char GEO_DB_MESH_TYPE                        = 80;    // Mesh Additions
1320
1321
1322
1323
1324
1325
1326
1327
1328
1329
1330
1331
1332
1333
1334
1335
1336///////////////////////////////////////////////////////////////////////////////
1337//
1338// GEO_DB_VERTEX Record - Field Ids
1339//
1340///////////////////////////////////////////////////////////////////////////////
1341
1342// All Node Fields    +
1343
1344const unsigned char GEO_DB_VRTX_COORD_INDEX                    = 20;    // Vertex Additions
1345const unsigned char GEO_DB_VRTX_UV_SET_0                    = 21;
1346const unsigned char GEO_DB_VRTX_UV_SET_1                    = 22;
1347const unsigned char GEO_DB_VRTX_UV_SET_2                    = 23;
1348const unsigned char GEO_DB_VRTX_UV_SET_3                    = 24;
1349const unsigned char GEO_DB_VRTX_UV_SET_4                    = 25;
1350const unsigned char GEO_DB_VRTX_UV_SET_5                    = 26;
1351const unsigned char GEO_DB_VRTX_UV_SET_6                    = 27;
1352const unsigned char GEO_DB_VRTX_UV_SET_7                    = 28;
1353const unsigned char GEO_DB_VRTX_NORMAL                        = 29;
1354const unsigned char GEO_DB_VRTX_PACKED_COLOR                = 30;
1355const unsigned char GEO_DB_VRTX_COLOR_INDEX                    = 31;
1356const unsigned char GEO_DB_VRTX_COORD                        = 32;
1357const unsigned char GEO_DB_VRTX_HARD_EDGE                    = 33;
1358const unsigned char GEO_DB_VRTX_FREEZE_NORMAL                = 34;
1359const unsigned char GEO_DB_VRTX_BINORMAL                    = 59;
1360const unsigned char GEO_DB_VRTX_TANGENT                        = 60;
1361
1362
1363///////////////////////////////////////////////////////////////////////////////
1364//
1365// GEO_DB_FAT_VERTEX Record - Field Ids
1366//
1367///////////////////////////////////////////////////////////////////////////////
1368
1369
1370// All Node Fields        +
1371// All VERTEX Fields    +
1372
1373
1374
1375
1376
1377
1378///////////////////////////////////////////////////////////////////////////////
1379//
1380// GEO_DB_SLIM_VERTEX Record - Field Ids
1381//
1382///////////////////////////////////////////////////////////////////////////////
1383
1384
1385// All Node Fields        +
1386// All VERTEX Fields    +
1387
1388const unsigned char GEO_DB_VRTX_FLAGS                        = 80;
1389/* packed 32-bit flags with following format...
1390        bit 0 GEO_DB_VRTX_UV_SET_0 is set
1391        bit 1 GEO_DB_VRTX_UV_SET_1 is set
1392        bit 2 spare
1393        bit 3 spare
1394        bit 4 hard_edge
1395        bit 5 freeze_normal
1396        bits 6-31 spare */
1397
1398
1399
1400
1401///////////////////////////////////////////////////////////////////////////////
1402//
1403// GEO_DB_EXTERNAL Record - Field Ids
1404//
1405///////////////////////////////////////////////////////////////////////////////
1406
1407// All Node Fields    +
1408// All Group Fields +
1409
1410const unsigned char GEO_DB_EXTERNAL_FILENAME                = 80;    // External Additions
1411
1412
1413
1414
1415
1416
1417///////////////////////////////////////////////////////////////////////////////
1418//
1419// GEO BEHAVIOR & ARTICULATION SYSTEM RECORDS
1420//
1421///////////////////////////////////////////////////////////////////////////////
1422
1423
1424
1425///////////////////////////////////////////////////////////////////
1426// DB_DSK_INTERNAL_VARS  Record Field Ids
1427//
1428const unsigned char GEO_DB_INTERNAL_VAR_FRAMECOUNT    = 1;
1429const unsigned char GEO_DB_INTERNAL_VAR_CURRENT_TIME= 2;
1430const unsigned char GEO_DB_INTERNAL_VAR_ELAPSED_TIME= 3;
1431const unsigned char GEO_DB_INTERNAL_VAR_SINE        = 4;
1432const unsigned char GEO_DB_INTERNAL_VAR_COSINE        = 5;
1433const unsigned char GEO_DB_INTERNAL_VAR_TANGENT        = 6;
1434const unsigned char GEO_DB_INTERNAL_VAR_MOUSE_X        = 7;
1435const unsigned char GEO_DB_INTERNAL_VAR_MOUSE_Y        = 8;
1436const unsigned char GEO_DB_INTERNAL_VAR_LEFT_MOUSE    = 9;
1437const unsigned char GEO_DB_INTERNAL_VAR_MIDDLE_MOUSE= 10;
1438const unsigned char GEO_DB_INTERNAL_VAR_RIGHT_MOUSE    = 11;
1439const unsigned char GEO_DB_INTERNAL_VAR_KEYBOARD    = 12;
1440const unsigned char GEO_DB_INTERNAL_VAR_TEMP_FLOAT    = 13;
1441const unsigned char GEO_DB_INTERNAL_VAR_TEMP_INT    = 14;
1442const unsigned char GEO_DB_INTERNAL_VAR_TEMP_BOOL    = 15;
1443const unsigned char GEO_DB_INTERNAL_VAR_TEMP_STRING    = 16;
1444const unsigned char GEO_DB_INTERNAL_VAR_TRIGGER1    = 17;
1445const unsigned char GEO_DB_INTERNAL_VAR_TRIGGER2    = 18;
1446const unsigned char GEO_DB_INTERNAL_VAR_TRIGGER3    = 19;
1447const unsigned char GEO_DB_INTERNAL_VAR_TRIGGER4    = 20;
1448
1449
1450
1451
1452///////////////////////////////////////////////////////////////////
1453// DB_DSK_FLOAT_VAR  Record Field Ids
1454//
1455const unsigned char GEO_DB_FLOAT_VAR_NAME            = 1;
1456const unsigned char GEO_DB_FLOAT_VAR_VALUE            = 2;
1457const unsigned char GEO_DB_FLOAT_VAR_DEFAULT        = 3;
1458const unsigned char GEO_DB_FLOAT_VAR_FID            = 4;
1459const unsigned char GEO_DB_FLOAT_VAR_CONSTRAINED    = 5;
1460const unsigned char GEO_DB_FLOAT_VAR_MIN            = 6;
1461const unsigned char GEO_DB_FLOAT_VAR_MAX            = 7;
1462const unsigned char GEO_DB_FLOAT_VAR_STEP            = 8;
1463
1464
1465
1466///////////////////////////////////////////////////////////////////
1467// DB_DSK_FLOAT3_VAR  Record Field Ids
1468//
1469const unsigned char GEO_DB_FLOAT3_VAR_NAME            = 1;
1470const unsigned char GEO_DB_FLOAT3_VAR_VALUE            = 2;
1471const unsigned char GEO_DB_FLOAT3_VAR_DEFAULT        = 3;
1472const unsigned char GEO_DB_FLOAT3_VAR_FID            = 4;
1473const unsigned char GEO_DB_FLOAT3_VAR_CONSTRAINED    = 5;
1474const unsigned char GEO_DB_FLOAT3_VAR_MIN            = 6;
1475const unsigned char GEO_DB_FLOAT3_VAR_MAX            = 7;
1476const unsigned char GEO_DB_FLOAT3_VAR_STEP            = 8;
1477
1478
1479///////////////////////////////////////////////////////////////////
1480// DB_DSK_INT_VAR  Record Field Ids
1481//
1482const unsigned char GEO_DB_INT_VAR_NAME                = 1;
1483const unsigned char GEO_DB_INT_VAR_VALUE            = 2;
1484const unsigned char GEO_DB_INT_VAR_DEFAULT            = 3;
1485const unsigned char GEO_DB_INT_VAR_FID                = 4;
1486const unsigned char GEO_DB_INT_VAR_CONSTRAINED        = 5;
1487const unsigned char GEO_DB_INT_VAR_MIN                = 6;
1488const unsigned char GEO_DB_INT_VAR_MAX                = 7;
1489const unsigned char GEO_DB_INT_VAR_STEP                = 8;
1490
1491
1492
1493///////////////////////////////////////////////////////////////////
1494// DB_DSK_STRING_VAR  Record Field Ids
1495//
1496const unsigned char GEO_DB_STRING_VAR_NAME            = 1;
1497const unsigned char GEO_DB_STRING_VAR_VALUE            = 2;
1498const unsigned char GEO_DB_STRING_VAR_DEFAULT        = 3;
1499const unsigned char GEO_DB_STRING_VAR_FID            = 4;
1500
1501
1502///////////////////////////////////////////////////////////////////
1503// DB_DSK_BOOL_VAR  Record Field Ids
1504//
1505const unsigned char GEO_DB_BOOL_VAR_NAME            = 1;
1506const unsigned char GEO_DB_BOOL_VAR_VALUE            = 2;
1507const unsigned char GEO_DB_BOOL_VAR_DEFAULT            = 3;
1508const unsigned char GEO_DB_BOOL_VAR_FID                = 4;
1509
1510
1511///////////////////////////////////////////////////////////////////
1512// DB_DSK_LONG_VAR  Record Field Ids
1513//
1514const unsigned char GEO_DB_LONG_VAR_NAME            = 1;
1515const unsigned char GEO_DB_LONG_VAR_VALUE            = 2;
1516const unsigned char GEO_DB_LONG_VAR_DEFAULT            = 3;
1517const unsigned char GEO_DB_LONG_VAR_FID                = 4;
1518const unsigned char GEO_DB_LONG_VAR_CONSTRAINED        = 5;
1519const unsigned char GEO_DB_LONG_VAR_MIN                = 6;
1520const unsigned char GEO_DB_LONG_VAR_MAX                = 7;
1521const unsigned char GEO_DB_LONG_VAR_STEP            = 8;
1522
1523
1524///////////////////////////////////////////////////////////////////
1525// DB_DSK_DOUBLE_VAR  Record Field Ids
1526//
1527const unsigned char GEO_DB_DOUBLE_VAR_NAME                = 1;
1528const unsigned char GEO_DB_DOUBLE_VAR_VALUE                = 2;
1529const unsigned char GEO_DB_DOUBLE_VAR_DEFAULT            = 3;
1530const unsigned char GEO_DB_DOUBLE_VAR_FID                = 4;
1531const unsigned char GEO_DB_DOUBLE_VAR_CONSTRAINED        = 5;
1532const unsigned char GEO_DB_DOUBLE_VAR_MIN                = 6;
1533const unsigned char GEO_DB_DOUBLE_VAR_MAX                = 7;
1534const unsigned char GEO_DB_DOUBLE_VAR_STEP                = 8;
1535
1536
1537
1538
1539///////////////////////////////////////////////////////////////////
1540// DB_DSK_STATE_MACHINE  Record Field Ids
1541//
1542const unsigned char GEO_DB_STATE_MACHINE_NAME            = 1;
1543
1544
1545
1546
1547///////////////////////////////////////////////////////////////////
1548// DB_DSK_STATE  Record Field Ids (states of the State machine)
1549//
1550const unsigned char GEO_DB_STATE_NAME                    = 1;
1551const unsigned char GEO_DB_STATE_DEFAULT                = 2;
1552const unsigned char GEO_DB_STATE_POSITION                = 3;
1553const unsigned char GEO_DB_STATE_DEFAULT_TRANSITION        = 4;
1554
1555
1556
1557///////////////////////////////////////////////////////////////////
1558// DB_DSK_TRANSITION  Record Field Ids (transitions of the State machine)
1559//
1560const unsigned char GEO_DB_TRANSITION_NAME                = 1;
1561const unsigned char GEO_DB_TRANSITION_SOURCE            = 2;
1562const unsigned char GEO_DB_TRANSITION_DESTINATION        = 3;
1563const unsigned char GEO_DB_TRANSITION_DURATION            = 4;
1564const unsigned char GEO_DB_TRANSITION_TRIGGER            = 5;
1565const unsigned char GEO_DB_TRANSITION_CONNECTORS        = 6;
1566const unsigned char GEO_DB_TRANSITION_RATIO                = 7;
1567
1568
1569
1570///////////////////////////////////////////////////////////////////
1571// DB_DSK_STATE_MACHINE_ACTION  Record Field Ids
1572//
1573// Record structure for a State Machine Action with 2 States & 2 Transitions
1574// (where the 1st transition rule used a rotation & the second a translation)
1575// would be:
1576//        DB_DSK_STATE_MACHINE_ACTION
1577//        DB_DSK_PUSH_ACTION
1578//            DB_DSK_STATE_RULE_ACTION
1579//            DB_DSK_STATE_RULE_ACTION
1580//            DB_DSK_TRANSITION_RULE_ACTION
1581//            DB_DSK_PUSH_ACTION
1582//                DB_DSK_ROTATE_ACTION
1583//            DB_DSK_POP_ACTION
1584//            DB_DSK_TRANSITION_RULE_ACTION
1585//            DB_DSK_PUSH_ACTION
1586//                DB_DSK_TRANSLATE_ACTION
1587//            DB_DSK_POP_ACTION
1588//        DB_DSK_POP_ACTION
1589//
1590// if the first state had an optional set of actions to perform when
1591// active it would have the following construct...
1592//        DB_DSK_STATE_MACHINE_ACTION
1593//        DB_DSK_PUSH_ACTION
1594//            DB_DSK_STATE_RULE_ACTION
1595//                DB_DSK_PUSH_ACTION
1596//                    DB_DSK_ARITHMETIC
1597//                    DB_DSK_VISIBILITY
1598//                DB_DSK_POP_ACTION
1599//            DB_DSK_STATE_RULE_ACTION
1600//            DB_DSK_TRANSITION_RULE_ACTION
1601//            DB_DSK_PUSH_ACTION
1602//                DB_DSK_ROTATE_ACTION
1603//            DB_DSK_POP_ACTION
1604//            DB_DSK_TRANSITION_RULE_ACTION
1605//            DB_DSK_PUSH_ACTION
1606//                DB_DSK_TRANSLATE_ACTION
1607//            DB_DSK_POP_ACTION
1608//        DB_DSK_POP_ACTION
1609const unsigned char GEO_DB_STATE_MACHINE_ACTION_NAME                    = 1;
1610
1611
1612///////////////////////////////////////////////////////////////////
1613// DB_DSK_STATE_RULE_ACTION  Record Field Ids
1614//
1615const unsigned char GEO_DB_STATE_RULE_ACTION_STATE_MACHINE_NAME            = 1;
1616const unsigned char GEO_DB_STATE_RULE_ACTION_STATE_NAME                    = 2;
1617const unsigned char GEO_DB_STATE_RULE_ACTION_HIDDEN                        = 3;
1618const unsigned char GEO_DB_STATE_RULE_ACTION_IDENTITY                    = 4;    // deprecated
1619
1620
1621///////////////////////////////////////////////////////////////////
1622// DB_DSK_TRANSITION_RULE_ACTION  Record Field Ids
1623//
1624const unsigned char GEO_DB_TRANSITION_RULE_ACTION_STATE_MACHINE_NAME    = 1;
1625const unsigned char GEO_DB_TRANSITION_RULE_ACTION_TRANSITION_NAME        = 2;
1626const unsigned char GEO_DB_TRANSITION_RULE_ACTION_HIDDEN                = 3;
1627
1628
1629
1630
1631///////////////////////////////////////////////////////////////////
1632// GEO_DSK_BEHAVIOR  Record Field Ids
1633//
1634const unsigned char GEO_DB_BEHAVIOR_NAME                = 1;
1635
1636
1637
1638///////////////////////////////////////////////////////////////////
1639// DB_DSK_ROTATE_ACTION  Record Field Ids
1640//
1641const unsigned char GEO_DB_ROTATE_ACTION_INPUT_VAR          = 1;
1642const unsigned char GEO_DB_ROTATE_ACTION_OUTPUT_VAR         = 2; // not used
1643const unsigned char GEO_DB_ROTATE_ACTION_ORIGIN             = 3;
1644const unsigned char GEO_DB_ROTATE_ACTION_VECTOR             = 4;
1645const unsigned char GEO_DB_ROTATE_ACTION_DIR                = 5;
1646const unsigned char GEO_DB_ROTATE_ACTION_MAX                = 6;
1647
1648
1649
1650///////////////////////////////////////////////////////////////////
1651// DB_DSK_CLAMP_ACTION  Record Field Ids
1652//
1653const unsigned char GEO_DB_CLAMP_ACTION_INPUT_VAR           = 1;
1654const unsigned char GEO_DB_CLAMP_ACTION_OUTPUT_VAR          = 2;
1655const unsigned char GEO_DB_CLAMP_ACTION_MIN_VAL             = 3;
1656const unsigned char GEO_DB_CLAMP_ACTION_MAX_VAL             = 4;
1657
1658
1659
1660///////////////////////////////////////////////////////////////////
1661// DB_DSK_RANGE_ACTION  Record Field Ids
1662//
1663const unsigned char GEO_DB_RANGE_ACTION_INPUT_VAR           = 1;
1664const unsigned char GEO_DB_RANGE_ACTION_OUTPUT_VAR          = 2;
1665const unsigned char GEO_DB_RANGE_ACTION_IN_MIN_VAL          = 3;
1666const unsigned char GEO_DB_RANGE_ACTION_IN_MAX_VAL          = 4;
1667const unsigned char GEO_DB_RANGE_ACTION_OUT_MIN_VAL         = 5;
1668const unsigned char GEO_DB_RANGE_ACTION_OUT_MAX_VAL         = 6;
1669
1670
1671
1672///////////////////////////////////////////////////////////////////
1673// DB_DSK_ARITHMETIC_ACTION  Record Field Ids
1674//
1675const unsigned char GEO_DB_ARITHMETIC_ACTION_INPUT_VAR    = 1;
1676const unsigned char GEO_DB_ARITHMETIC_ACTION_OUTPUT_VAR    = 2;
1677const unsigned char GEO_DB_ARITHMETIC_ACTION_OP_TYPE    = 3;
1678const unsigned char GEO_DB_ARITHMETIC_ACTION_OPERAND_VALUE    = 4;
1679const unsigned char GEO_DB_ARITHMETIC_ACTION_OPERAND_VAR    = 5;
1680
1681
1682
1683///////////////////////////////////////////////////////////////////
1684// DB_DSK_EQUATION_ACTION  Record Field Ids
1685//
1686const unsigned char GEO_DB_EQUATION_ACTION_INPUT_VAR    = 1;
1687const unsigned char GEO_DB_EQUATION_ACTION_OUTPUT_VAR   = 2;
1688const unsigned char GEO_DB_EQUATION_ACTION_A_VAL        = 3;
1689const unsigned char GEO_DB_EQUATION_ACTION_C_VAL        = 4;
1690const unsigned char GEO_DB_EQUATION_ACTION_A_VAR        = 5;
1691const unsigned char GEO_DB_EQUATION_ACTION_C_VAR        = 6;
1692
1693
1694
1695///////////////////////////////////////////////////////////////////
1696// DB_DSK_PERIODIC_ACTION  Record Field Ids
1697//
1698const unsigned char GEO_DB_PERIODIC_ACTION_TYPE            = 7;
1699
1700
1701
1702///////////////////////////////////////////////////////////////////
1703// DB_DSK_TRIG_ACTION  Record Field Ids
1704//
1705const unsigned char GEO_DB_TRIG_ACTION_OP                = 7;
1706
1707
1708
1709
1710///////////////////////////////////////////////////////////////////
1711// DB_DSK_CONTINUOUS_ACTION  Record Field Ids
1712//
1713const unsigned char GEO_DB_CONTINUOUS_ACTION_INPUT_VAR              = 1;    // Not used
1714const unsigned char GEO_DB_CONTINUOUS_ACTION_OUTPUT_VAR             = 2;
1715const unsigned char GEO_DB_CONTINUOUS_ACTION_UPDATE_TYPE            = 4;
1716const unsigned char GEO_DB_CONTINUOUS_ACTION_UPDATE_VAL             = 5;
1717const unsigned char GEO_DB_CONTINUOUS_ACTION_DEFAULT_VAL            = 6;
1718const unsigned char GEO_DB_CONTINUOUS_ACTION_MIN_VAL                = 7;
1719const unsigned char GEO_DB_CONTINUOUS_ACTION_MAX_VAL                = 8;
1720const unsigned char GEO_DB_CONTINUOUS_ACTION_DIRECTION              = 9;
1721const unsigned char GEO_DB_CONTINUOUS_ACTION_MINMAX_BEHAVIOR        = 10;
1722
1723
1724
1725
1726///////////////////////////////////////////////////////////////////
1727// DB_DSK_MOMENTARY_ACTION  Record Field Ids
1728//
1729const unsigned char GEO_DB_MOMENTARY_ACTION_INPUT_VAR               = 1;    // Not used
1730const unsigned char GEO_DB_MOMENTARY_ACTION_OUTPUT_VAR              = 2;
1731const unsigned char GEO_DB_MOMENTARY_ACTION_DEFAULT_VAL             = 3;
1732const unsigned char GEO_DB_MOMENTARY_ACTION_VAL                     = 4;
1733
1734
1735///////////////////////////////////////////////////////////////////
1736// DB_DSK_NSTATE_ACTION  Record Field Ids
1737//
1738const unsigned char GEO_DB_NSTATE_ACTION_INPUT_VAR                  = 1;    // Not used
1739const unsigned char GEO_DB_NSTATE_ACTION_OUTPUT_VAR                 = 2;
1740const unsigned char GEO_DB_NSTATE_ACTION_DIRECTION                  = 3;
1741const unsigned char GEO_DB_NSTATE_ACTION_BEHAVIOR                   = 4;
1742const unsigned char GEO_DB_NSTATE_ACTION_NUM_ITEMS                  = 5;
1743const unsigned char GEO_DB_NSTATE_ACTION_OUTPUT_VAR_TYPE            = 6;
1744const unsigned char GEO_DB_NSTATE_ACTION_VALS                       = 7;
1745
1746
1747///////////////////////////////////////////////////////////////////
1748// DB_DSK_ROTARY_DRAG_ACTION  Record Field Ids
1749//
1750const unsigned char GEO_DB_ROTARY_DRAG_ACTION_INPUT_VAR             = 1;    // Not used
1751const unsigned char GEO_DB_ROTARY_DRAG_ACTION_OUTPUT_VAR            = 2;
1752const unsigned char GEO_DB_ROTARY_DRAG_ACTION_BEHAVIOR              = 3;
1753const unsigned char GEO_DB_ROTARY_DRAG_ACTION_ORIGIN                = 4;
1754
1755
1756///////////////////////////////////////////////////////////////////
1757// DB_DSK_TASK_ACTION  Record Field Ids
1758//
1759const unsigned char GEO_DB_TASK_ACTION_INPUT_VAR                    = 1;
1760const unsigned char GEO_DB_TASK_ACTION_OUTPUT_VAR                   = 2;
1761
1762
1763///////////////////////////////////////////////////////////////////
1764// DB_DSK_VISIBILITY_ACTION  Record Field Ids
1765//
1766const unsigned char GEO_DB_VISIBILITY_ACTION_INPUT_VAR              = 1;
1767const unsigned char GEO_DB_VISIBILITY_ACTION_OUTPUT_VAR             = 2; // Not used
1768
1769
1770
1771///////////////////////////////////////////////////////////////////
1772// DB_DSK_COLOR_RAMP_ACTION  Record Field Ids
1773//
1774const unsigned char GEO_DB_COLOR_RAMP_ACTION_INPUT_VAR              = 1;
1775const unsigned char GEO_DB_COLOR_RAMP_ACTION_OUTPUT_VAR             = 2; // Not used
1776const unsigned char GEO_DB_COLOR_RAMP_ACTION_COLOR_FROM_PALETTE     = 3;
1777const unsigned char GEO_DB_COLOR_RAMP_ACTION_TOP_COLOR_INDEX        = 4;
1778const unsigned char GEO_DB_COLOR_RAMP_ACTION_BOTTOM_COLOR_INDEX     = 5;
1779const unsigned char GEO_DB_COLOR_RAMP_ACTION_NUM_RAMPS              = 6;
1780const unsigned char GEO_DB_COLOR_RAMP_ACTION_TOP_COLOR              = 7;
1781const unsigned char GEO_DB_COLOR_RAMP_ACTION_BOTTOM_COLOR           = 8;
1782const unsigned char GEO_DB_COLOR_RAMP_ACTION_MATCH_COLUMNS          = 9;
1783
1784
1785
1786///////////////////////////////////////////////////////////////////
1787// DB_DSK_COMPARE_ACTION  Record Field Ids
1788//
1789const unsigned char GEO_DB_COMPARE_ACTION_INPUT_VAR     = 1;
1790const unsigned char GEO_DB_COMPARE_ACTION_OUTPUT_VAR    = 2;
1791const unsigned char GEO_DB_COMPARE_ACTION_OP_TYPE       = 3;
1792const unsigned char GEO_DB_COMPARE_ACTION_OPERAND_VALUE = 4;
1793const unsigned char GEO_DB_COMPARE_ACTION_OPERAND_VAR   = 5;
1794
1795
1796///////////////////////////////////////////////////////////////////
1797// DB_DSK_TRANSLATE_ACTION  Record Field Ids
1798//
1799const unsigned char GEO_DB_TRANSLATE_ACTION_INPUT_VAR   = 1;
1800const unsigned char GEO_DB_TRANSLATE_ACTION_OUTPUT_VAR  = 2; // not used
1801const unsigned char GEO_DB_TRANSLATE_ACTION_ORIGIN      = 3;
1802const unsigned char GEO_DB_TRANSLATE_ACTION_VECTOR      = 4;
1803const unsigned char GEO_DB_TRANSLATE_ACTION_DIR         = 5;
1804const unsigned char GEO_DB_TRANSLATE_ACTION_SCALAR      = 6;
1805const unsigned char GEO_DB_TRANSLATE_ACTION_MAX         = 7;
1806
1807
1808
1809///////////////////////////////////////////////////////////////////
1810// DB_DSK_SCALE_ACTION  Record Field Ids
1811//
1812const unsigned char GEO_DB_SCALE_ACTION_INPUT_VAR       = 1;
1813const unsigned char GEO_DB_SCALE_ACTION_OUTPUT_VAR      = 2; // not used
1814const unsigned char GEO_DB_SCALE_ACTION_ORIGIN          = 3;
1815const unsigned char GEO_DB_SCALE_ACTION_VECTOR          = 4;
1816const unsigned char GEO_DB_SCALE_ACTION_DIR             = 5;
1817const unsigned char GEO_DB_SCALE_ACTION_SCALAR          = 6;
1818const unsigned char GEO_DB_SCALE_ACTION_SCALE_ALL       = 7;
1819const unsigned char GEO_DB_SCALE_ACTION_MAX             = 8;
1820
1821
1822
1823///////////////////////////////////////////////////////////////////
1824// DB_DSK_STRING_CONTENT_ACTION  Record Field Ids
1825//
1826const unsigned char GEO_DB_STRING_CONTENT_ACTION_INPUT_VAR      = 1;
1827const unsigned char GEO_DB_STRING_CONTENT_ACTION_OUTPUT_VAR     = 2; // not used
1828const unsigned char GEO_DB_STRING_CONTENT_ACTION_PADDING_TYPE   = 3;
1829const unsigned char GEO_DB_STRING_CONTENT_ACTION_PAD_FOR_SIGN   = 4;
1830const unsigned char GEO_DB_STRING_CONTENT_ACTION_FORMAT         = 5;
1831
1832
1833///////////////////////////////////////////////////////////////////
1834// DB_DSK_STRING_COPY_ACTION  Record Field Ids
1835//
1836const unsigned char GEO_DB_STRING_COPY_ACTION_INPUT_VAR            = 1;
1837const unsigned char GEO_DB_STRING_COPY_ACTION_OUTPUT_VAR        = 2; // not used
1838
1839
1840///////////////////////////////////////////////////////////////////
1841// DB_DSK_CONDITIONAL_ACTION  Record Field Ids
1842//
1843// Record structure for compound if-the-else block of Actions
1844// The conditional action has an optional list of actions if the
1845// input var passes the conditional test (Not equal zero) and an
1846// alternative list of actions if the input var does not pass
1847// the conditional test (the else selction). In a simple case
1848// where the conditional action had one rotate action on pass &
1849// a range & rotate on fail the disk rep would be...
1850// would be:
1851//        DB_DSK_CONDITIONAL_ACTION
1852//      DB_DSK_PUSH_ACTION              // indicates list of child actions
1853//            DB_DSK_IF_CONDITION       // all following are for If list
1854//            DB_DSK_ROTATE
1855//            DB_DSK_ELSE_CONDITION     // all following are for Else list
1856//            DB_DSK_RANGE
1857//            DB_DSK_ROTATE
1858//        DB_DSK_POP_ACTION
1859//
1860const unsigned char GEO_DB_CONDITIONAL_ACTION_INPUT_VAR    = 1;
1861const unsigned char GEO_DB_CONDITIONAL_ACTION_OUTPUT_VAR= 2; // not used
1862
1863
1864///////////////////////////////////////////////////////////////////
1865// DB_DSK_DCS_ACTION  Record Field Ids
1866//
1867const unsigned char GEO_DB_DCS_ACTION_INPUT_VAR                 = 1; // not used
1868const unsigned char GEO_DB_DCS_ACTION_OUTPUT_VAR                = 2; // not used
1869const unsigned char GEO_DB_DCS_ACTION_ORIGIN                    = 3;
1870const unsigned char GEO_DB_DCS_ACTION_XPOS                      = 4;
1871const unsigned char GEO_DB_DCS_ACTION_ZPOS                      = 5;
1872const unsigned char GEO_DB_DCS_ACTION_VECTOR                    = 6;
1873const unsigned char GEO_DB_DCS_ACTION_TRANSLATE_X_VAR           = 7;
1874const unsigned char GEO_DB_DCS_ACTION_TRANSLATE_Y_VAR           = 8;
1875const unsigned char GEO_DB_DCS_ACTION_TRANSLATE_Z_VAR           = 9;
1876const unsigned char GEO_DB_DCS_ACTION_ROTATE_X_VAR              = 10;
1877const unsigned char GEO_DB_DCS_ACTION_ROTATE_Y_VAR              = 11;
1878const unsigned char GEO_DB_DCS_ACTION_ROTATE_Z_VAR              = 12;
1879const unsigned char GEO_DB_DCS_ACTION_SCALE_X_VAR               = 13;
1880const unsigned char GEO_DB_DCS_ACTION_SCALE_Y_VAR               = 14;
1881const unsigned char GEO_DB_DCS_ACTION_SCALE_Z_VAR               = 15;
1882
1883
1884
1885
1886
1887
1888
1889///////////////////////////////////////////////////////////////////
1890// DB_DSK_DISCRETE_ACTION  Record Field Ids
1891//
1892const unsigned char GEO_DB_DISCRETE_ACTION_INPUT_VAR            = 1;
1893const unsigned char GEO_DB_DISCRETE_ACTION_OUTPUT_VAR           = 2;
1894const unsigned char GEO_DB_DISCRETE_ACTION_NUM_ITEMS            = 3;
1895const unsigned char GEO_DB_DISCRETE_ACTION_OUTPUT_VAR_TYPE      = 4;
1896const unsigned char GEO_DB_DISCRETE_ACTION_MIN_VALS             = 5;
1897const unsigned char GEO_DB_DISCRETE_ACTION_MAX_VALS             = 6;
1898const unsigned char GEO_DB_DISCRETE_ACTION_MAP_VALS             = 7;
1899
1900
1901
1902
1903
1904/** Record identifiers can be read as ints or this structure. All subsequent
1905 *  fields are considered part of this Node until an special EOF(ield) record
1906 *  is found. The only exception to this rule id DB_DSK_PUSH & DB_DSK_POP
1907 *  which have no fields. User parse code should expect another REcord header
1908 *  immediately after reading the Push/Pop record.
1909 */
1910struct GEO_DB_API geoExtensionDefRec
1911{
1912
1913    /** The Node type for which this extension exists */
1914    unsigned int            nodetype;                    //  4 bytes
1915
1916    /** The data type of the extension - defined in terms of GEO_DB_DATATYPE_INT
1917     *  GEO_DB_DATATYPE_FLOAT, GEO_DB_DATATYPE_BOOL etc.
1918     */
1919    unsigned char            datatype;                   //  1 byte
1920
1921    /** The extension can have a special "sub type" value. This could be
1922     *  values like GEO_DB_EXT_MENU_ITEM which (when associated with a datatype
1923     *  of GEO_DB_DATATYPE_BOOL means that this extension will be accessed as one
1924     *  of many in an option menu
1925     */
1926    unsigned char            subdatatype;                //  1 bytes
1927
1928    /** The User ID (uid) is the optional value provided (in code) by the user
1929     *  to identify this particular extension. Users can search & retrieve
1930     *  extension values based on this user ID number.
1931     */
1932    unsigned short            uid;                        //  2 bytes
1933
1934    /** The name of the extension.
1935     *
1936     *  Note that the "name" field is sized for the Geo 1.0 maximum property
1937     *  label length that can be accomodated. The name field is also used to
1938     *  encode the name/label of the option menu when the extension is flagged
1939     *  as one of those. The following rules should be taken into consideration:
1940     *  1. When the extension is an option menu (datatype=GEO_DB_DATATYPE_BOOL
1941     *     and subdatatype=GEO_DB_EXT_MENU_ITEM) then the name field is
1942     *     divided up as 15 chars for the option menu title, 8 chars for
1943     *     this particular option menu's label and 1 char for the terminator
1944     * 2.  When the extension is a text field or boolean toggle value - it is
1945     *     recommended that only the 15 chars for the field label be used -
1946     *     setting a 23 char-length  label for a text input field will be a
1947     *     waste of time, as it will get truncated on display anyway.
1948     */
1949    char                    name[24];       // 24 bytes
1950                                            //-----------------------------
1951};                                          // total:       32 bytes
1952
1953
1954
1955
1956#endif // __GEO_FORMAT_H__
Note: See TracBrowser for help on using the browser.