00001 
00032 #ifndef LL_LLDEFS_H
00033 #define LL_LLDEFS_H
00034 
00035 #include "stdtypes.h"
00036 
00037 
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 
00084 const S32 gDirAxes[8][2] = {
00085                                                         { 1, 0}, 
00086                                                         { 0, 1}, 
00087                                                         {-1, 0}, 
00088                                                         { 0,-1}, 
00089                                                         { 1, 1}, 
00090                                                         {-1, 1}, 
00091                                                         {-1,-1}, 
00092                                                         { 1,-1}, 
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 
00107 
00108 
00109 
00110 
00111 
00112 
00113 
00114 
00115 
00116 
00117 
00118 
00119 
00120 
00121 
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 
00143 
00144 
00145 
00146 
00147 
00148 const U32       LL_MAX_PATH             = 1024;         
00149 
00150 
00151 const U32       STD_STRING_BUF_SIZE     = 255;  
00152 const U32       STD_STRING_STR_LEN      = 254;  
00153 
00154 
00155 
00156 const U32       MAX_STRING                      = STD_STRING_BUF_SIZE;  
00157 
00158 const U32       MAXADDRSTR              = 17;           
00159 
00160 
00161 
00162 
00163 
00164 
00165 
00166 
00167 
00168 
00169 
00170 
00171 
00172 
00173 
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