lldefs.h

Go to the documentation of this file.
00001 
00032 #ifndef LL_LLDEFS_H
00033 #define LL_LLDEFS_H
00034 
00035 #include "stdtypes.h"
00036 
00037 // Often used array indices
00038 const U32       VX                      = 0;
00039 const U32       VY                      = 1;
00040 const U32       VZ                      = 2;
00041 const U32       VW                      = 3;
00042 const U32       VS                      = 3;
00043 
00044 const U32       VRED            = 0;
00045 const U32       VGREEN          = 1;
00046 const U32       VBLUE           = 2;
00047 const U32       VALPHA          = 3;
00048 
00049 const U32       INVALID_DIRECTION = 0xFFFFFFFF;
00050 const U32       EAST            = 0;
00051 const U32       NORTH           = 1;
00052 const U32       WEST            = 2;
00053 const U32       SOUTH           = 3;
00054 
00055 const U32       NORTHEAST       = 4;
00056 const U32       NORTHWEST       = 5;
00057 const U32       SOUTHWEST       = 6;
00058 const U32       SOUTHEAST       = 7;
00059 const U32       MIDDLE          = 8;
00060 
00061 const U8        EAST_MASK               = 0x1<<EAST;
00062 const U8        NORTH_MASK              = 0x1<<NORTH;
00063 const U8        WEST_MASK               = 0x1<<WEST;
00064 const U8        SOUTH_MASK              = 0x1<<SOUTH;
00065 
00066 const U8        NORTHEAST_MASK  = NORTH_MASK | EAST_MASK;
00067 const U8        NORTHWEST_MASK  = NORTH_MASK | WEST_MASK;
00068 const U8        SOUTHWEST_MASK  = SOUTH_MASK | WEST_MASK;
00069 const U8        SOUTHEAST_MASK  = SOUTH_MASK | EAST_MASK;
00070 
00071 const U32 gDirOpposite[8] = {2, 3, 0, 1, 6, 7, 4, 5};
00072 const U32 gDirAdjacent[8][2] =  {
00073                                                                 {4, 7},
00074                                                                 {4, 5},
00075                                                                 {5, 6},
00076                                                                 {6, 7},
00077                                                                 {0, 1},
00078                                                                 {1, 2},
00079                                                                 {2, 3},
00080                                                                 {0, 3}
00081                                                                 };
00082 
00083 // Magnitude along the x and y axis
00084 const S32 gDirAxes[8][2] = {
00085                                                         { 1, 0}, // east
00086                                                         { 0, 1}, // north
00087                                                         {-1, 0}, // west
00088                                                         { 0,-1}, // south
00089                                                         { 1, 1}, // ne
00090                                                         {-1, 1}, // nw
00091                                                         {-1,-1}, // sw
00092                                                         { 1,-1}, // se
00093                                                         };
00094 
00095 const S32 gDirMasks[8] = { 
00096                                                         EAST_MASK,
00097                                                         NORTH_MASK,
00098                                                         WEST_MASK,
00099                                                         SOUTH_MASK,
00100                                                         NORTHEAST_MASK,
00101                                                         NORTHWEST_MASK,
00102                                                         SOUTHWEST_MASK,
00103                                                         SOUTHEAST_MASK
00104                                                         };
00105 
00106 // Sides of a box...
00107 //                  . Z      __.Y
00108 //                 /|\        /|       0 = NO_SIDE
00109 //                  |        /         1 = FRONT_SIDE   = +x
00110 //           +------|-----------+      2 = BACK_SIDE    = -x
00111 //          /|      |/     /   /|      3 = LEFT_SIDE    = +y
00112 //         / |     -5-   |/   / |      4 = RIGHT_SIDE   = -y
00113 //        /  |     /|   -3-  /  |      5 = TOP_SIDE     = +z
00114 //       +------------------+   |      6 = BOTTOM_SIDE  = -z
00115 //       |   |      |  /    |   |
00116 //       | |/|      | /     | |/|                   
00117 //       | 2 |    | *-------|-1--------> X           
00118 //       |/| |   -4-        |/| |                  
00119 //       |   +----|---------|---+
00120 //       |  /        /      |  /
00121 //       | /       -6-      | /
00122 //       |/        /        |/ 
00123 //       +------------------+
00124 const U32 NO_SIDE               = 0;
00125 const U32 FRONT_SIDE    = 1;
00126 const U32 BACK_SIDE     = 2;
00127 const U32 LEFT_SIDE     = 3;
00128 const U32 RIGHT_SIDE    = 4;
00129 const U32 TOP_SIDE              = 5;
00130 const U32 BOTTOM_SIDE   = 6;
00131 
00132 const U8 LL_SOUND_FLAG_NONE =         0x0;
00133 const U8 LL_SOUND_FLAG_LOOP =         1<<0;
00134 const U8 LL_SOUND_FLAG_SYNC_MASTER =  1<<1;
00135 const U8 LL_SOUND_FLAG_SYNC_SLAVE =   1<<2;
00136 const U8 LL_SOUND_FLAG_SYNC_PENDING = 1<<3;
00137 const U8 LL_SOUND_FLAG_QUEUE =        1<<4;
00138 const U8 LL_SOUND_FLAG_STOP =         1<<5;
00139 const U8 LL_SOUND_FLAG_SYNC_MASK = LL_SOUND_FLAG_SYNC_MASTER | LL_SOUND_FLAG_SYNC_SLAVE | LL_SOUND_FLAG_SYNC_PENDING;
00140 
00141 //
00142 // *NOTE: These values may be used as hard-coded numbers in scanf() variants.
00143 //
00144 // --------------
00145 // DO NOT CHANGE.
00146 // --------------
00147 //
00148 const U32       LL_MAX_PATH             = 1024;         // buffer size of maximum path + filename string length
00149 
00150 // For strings we send in messages
00151 const U32       STD_STRING_BUF_SIZE     = 255;  // Buffer size
00152 const U32       STD_STRING_STR_LEN      = 254;  // Length of the string (not including \0)
00153 
00154 // *NOTE: This value is used as hard-coded numbers in scanf() variants.
00155 // DO NOT CHANGE.
00156 const U32       MAX_STRING                      = STD_STRING_BUF_SIZE;  // Buffer size
00157 
00158 const U32       MAXADDRSTR              = 17;           // 123.567.901.345 = 15 chars + \0 + 1 for good luck
00159 
00160 // C++ is our friend. . . use template functions to make life easier!
00161 
00162 // specific inlines for basic types
00163 //
00164 // defined for all:
00165 //   llmin(a,b)
00166 //   llmax(a,b)
00167 //   llclamp(a,minimum,maximum)
00168 //
00169 // defined for F32, F64:
00170 //   llclampf(a)     // clamps a to [0.0 .. 1.0]
00171 //
00172 // defined for U16, U32, U64, S16, S32, S64, :
00173 //   llclampb(a)     // clamps a to [0 .. 255]
00174 //                                 
00175 
00176 template <class LLDATATYPE> 
00177 inline LLDATATYPE llmax(const LLDATATYPE& d1, const LLDATATYPE& d2)
00178 {
00179         return (d1 > d2) ? d1 : d2;
00180 }
00181 
00182 template <class LLDATATYPE> 
00183 inline LLDATATYPE llmax(const LLDATATYPE& d1, const LLDATATYPE& d2, const LLDATATYPE& d3)
00184 {
00185         LLDATATYPE r = llmax(d1,d2);
00186         return (r > d3 ? r : d3);
00187 }
00188 
00189 template <class LLDATATYPE> 
00190 inline LLDATATYPE llmin(const LLDATATYPE& d1, const LLDATATYPE& d2)
00191 {
00192         return (d1 < d2) ? d1 : d2;
00193 }
00194 
00195 template <class LLDATATYPE> 
00196 inline LLDATATYPE llmin(const LLDATATYPE& d1, const LLDATATYPE& d2, const LLDATATYPE& d3)
00197 {
00198         LLDATATYPE r = llmin(d1,d2);
00199         return (r < d3 ? r : d3);
00200 }
00201 
00202 template <class LLDATATYPE> 
00203 inline LLDATATYPE llclamp(const LLDATATYPE& a, const LLDATATYPE& minval, const LLDATATYPE& maxval)
00204 {
00205         return llmin(llmax(a, minval), maxval);
00206 }
00207 
00208 template <class LLDATATYPE> 
00209 inline LLDATATYPE llclampf(const LLDATATYPE& a)
00210 {
00211         return llmin(llmax(a, (LLDATATYPE)0), (LLDATATYPE)1);
00212 }
00213 
00214 template <class LLDATATYPE> 
00215 inline LLDATATYPE llclampb(const LLDATATYPE& a)
00216 {
00217         return llmin(llmax(a, (LLDATATYPE)0), (LLDATATYPE)255);
00218 }
00219 
00220 #endif // LL_LLDEFS_H

Generated on Thu Jul 1 06:08:24 2010 for Second Life Viewer by  doxygen 1.4.7