home *** CD-ROM | disk | FTP | other *** search
/ Virtual Reality Zone / VRZONE.ISO / mac / PC / PCGLOVE / GLOVE / OBJGLV.ZIP / INCLUDE / DEMO4B / SPLITDEF.H < prev    next >
C/C++ Source or Header  |  1992-10-31  |  2KB  |  57 lines

  1. /* Splitting-tree structures */
  2.  
  3. /* Written by Bernie Roehl, June 1992 */
  4. /* Substantially upgraded by Dave Stampe, August '92 */
  5.  
  6. /* Copyright 1992 by Dave Stampe and Bernie Roehl.
  7.    May be freely used to write software for release into the public domain;
  8.    all commercial endeavours MUST contact Bernie Roehl and Dave Stampe
  9.    for permission to incorporate any part of this software into their
  10.    products!
  11.  */
  12.  
  13.  
  14. #ifndef SPLITDEF
  15. typedef struct _split SPLIT;
  16.  
  17. struct _split {
  18.     long x, y, z;    /* a point in the splitting plane */
  19.     long nx, ny, nz; /* the normal vector to the splitting plane */
  20.     OBJLIST *olist;  /* list of objects making up this split */
  21.     unsigned flags;
  22.     char left_type;  /* indicates what the left pointer points to */
  23.     char right_type; /* indicates what the right pointer points to */
  24. #define ISSPLIT    0
  25. #define ISAREA     1
  26. #define ISOBJLIST  2
  27.     void *left, *right; /* can point to a split, an area or an objlists */
  28.     };
  29.  
  30. #define SPLITDEF 1
  31. #endif
  32.  
  33. #ifndef AREADEF
  34. typedef struct _area AREA;
  35. #endif
  36.  
  37. typedef struct _area_ref AREA_REF; /* element in a list of area pointers */
  38.  
  39. struct _area_ref {
  40.     AREA *area;
  41.     AREA_REF *next;
  42.     };
  43.  
  44. #ifndef AREADEF
  45. struct _area {
  46.     long floor_a, floor_b, floor_c, floor_d; /* ax + y + cx + d = 0 */
  47.     long ceiling_a, ceiling_b, ceiling_c, ceiling_d; /* ax + y + cx + d = 0 */
  48.     void (*fn)(AREA *);
  49.     AREA_REF *visfrom;
  50.     int has_tree : 1;
  51.     void *ptr;
  52.     };
  53. #define AREADEF 1
  54. #endif
  55.  
  56. /* End of splitdef.h */
  57.