summaryrefslogtreecommitdiff
path: root/indra/llcommon/lldefs.h
diff options
context:
space:
mode:
Diffstat (limited to 'indra/llcommon/lldefs.h')
-rw-r--r--indra/llcommon/lldefs.h185
1 files changed, 185 insertions, 0 deletions
diff --git a/indra/llcommon/lldefs.h b/indra/llcommon/lldefs.h
new file mode 100644
index 0000000000..63322effbe
--- /dev/null
+++ b/indra/llcommon/lldefs.h
@@ -0,0 +1,185 @@
+/**
+ * @file lldefs.h
+ * @brief Various generic constant definitions.
+ *
+ * Copyright (c) 2001-$CurrentYear$, Linden Research, Inc.
+ * $License$
+ */
+
+#ifndef LL_LLDEFS_H
+#define LL_LLDEFS_H
+
+#include "stdtypes.h"
+
+// Often used array indices
+const U32 VX = 0;
+const U32 VY = 1;
+const U32 VZ = 2;
+const U32 VW = 3;
+const U32 VS = 3;
+
+const U32 VRED = 0;
+const U32 VGREEN = 1;
+const U32 VBLUE = 2;
+const U32 VALPHA = 3;
+
+const U32 INVALID_DIRECTION = 0xFFFFFFFF;
+const U32 EAST = 0;
+const U32 NORTH = 1;
+const U32 WEST = 2;
+const U32 SOUTH = 3;
+
+const U32 NORTHEAST = 4;
+const U32 NORTHWEST = 5;
+const U32 SOUTHWEST = 6;
+const U32 SOUTHEAST = 7;
+const U32 MIDDLE = 8;
+
+const U8 LL_SOUND_FLAG_NONE = 0x00;
+const U8 LL_SOUND_FLAG_LOOP = 0x01;
+const U8 LL_SOUND_FLAG_SYNC_MASTER = 0x02;
+const U8 LL_SOUND_FLAG_SYNC_SLAVE = 0x04;
+const U8 LL_SOUND_FLAG_SYNC_PENDING = 0x08;
+const U8 LL_SOUND_FLAG_SYNC_MASK = LL_SOUND_FLAG_SYNC_MASTER | LL_SOUND_FLAG_SYNC_SLAVE | LL_SOUND_FLAG_SYNC_PENDING;
+const U8 LL_SOUND_FLAG_QUEUE = 0x10;
+
+const U32 gDirOpposite[8] = {2, 3, 0, 1, 6, 7, 4, 5};
+const U32 gDirAdjacent[8][2] = {
+ {4, 7},
+ {4, 5},
+ {5, 6},
+ {6, 7},
+ {0, 1},
+ {1, 2},
+ {2, 3},
+ {0, 3}
+ };
+
+// Magnitude along the x and y axis
+const S32 gDirAxes[8][2] = {
+ { 1, 0}, // east
+ { 0, 1}, // north
+ {-1, 0}, // west
+ { 0,-1}, // south
+ { 1, 1}, // ne
+ {-1, 1}, // nw
+ {-1,-1}, // sw
+ { 1,-1}, // se
+ };
+
+const U8 EAST_MASK = 1;
+const U8 NORTH_MASK = 2;
+const U8 WEST_MASK = 4;
+const U8 SOUTH_MASK = 8;
+const U8 NORTHEAST_MASK = NORTH_MASK | EAST_MASK;
+const U8 NORTHWEST_MASK = NORTH_MASK | WEST_MASK;
+const U8 SOUTHWEST_MASK = SOUTH_MASK | WEST_MASK;
+const U8 SOUTHEAST_MASK = SOUTH_MASK | EAST_MASK;
+
+const S32 gDirMasks[8] = {
+ EAST_MASK,
+ NORTH_MASK,
+ WEST_MASK,
+ SOUTH_MASK,
+ NORTHEAST_MASK,
+ NORTHWEST_MASK,
+ SOUTHWEST_MASK,
+ SOUTHEAST_MASK
+ };
+
+// Sides of a box...
+// . Z __.Y
+// /|\ /| 0 = NO_SIDE
+// | / 1 = FRONT_SIDE = +x
+// +------|-----------+ 2 = BACK_SIDE = -x
+// /| |/ / /| 3 = LEFT_SIDE = +y
+// / | -5- |/ / | 4 = RIGHT_SIDE = -y
+// / | /| -3- / | 5 = TOP_SIDE = +z
+// +------------------+ | 6 = BOTTOM_SIDE = -z
+// | | | / | |
+// | |/| | / | |/|
+// | 2 | | *-------|-1--------> X
+// |/| | -4- |/| |
+// | +----|---------|---+
+// | / / | /
+// | / -6- | /
+// |/ / |/
+// +------------------+
+const U32 NO_SIDE = 0;
+const U32 FRONT_SIDE = 1;
+const U32 BACK_SIDE = 2;
+const U32 LEFT_SIDE = 3;
+const U32 RIGHT_SIDE = 4;
+const U32 TOP_SIDE = 5;
+const U32 BOTTOM_SIDE = 6;
+
+const U32 LL_MAX_PATH = 1024; // buffer size of maximum path + filename string length
+
+// For strings we send in messages
+const U32 STD_STRING_BUF_SIZE = 255; // Buffer size
+const U32 STD_STRING_STR_LEN = 254; // Length of the string (not including \0)
+const U32 MAX_STRING = STD_STRING_BUF_SIZE; // Buffer size
+
+const U32 MAXADDRSTR = 17; // 123.567.901.345 = 15 chars + \0 + 1 for good luck
+
+// C++ is our friend. . . use template functions to make life easier!
+
+// specific inlines for basic types
+//
+// defined for all:
+// llmin(a,b)
+// llmax(a,b)
+// llclamp(a,minimum,maximum)
+//
+// defined for F32, F64:
+// llclampf(a) // clamps a to [0.0 .. 1.0]
+//
+// defined for U16, U32, U64, S16, S32, S64, :
+// llclampb(a) // clamps a to [0 .. 255]
+//
+
+template <class LLDATATYPE>
+inline LLDATATYPE llmax(const LLDATATYPE& d1, const LLDATATYPE& d2)
+{
+ return (d1 > d2) ? d1 : d2;
+}
+
+template <class LLDATATYPE>
+inline LLDATATYPE llmax(const LLDATATYPE& d1, const LLDATATYPE& d2, const LLDATATYPE& d3)
+{
+ LLDATATYPE r = llmax(d1,d2);
+ return (r > d3 ? r : d3);
+}
+
+template <class LLDATATYPE>
+inline LLDATATYPE llmin(const LLDATATYPE& d1, const LLDATATYPE& d2)
+{
+ return (d1 < d2) ? d1 : d2;
+}
+
+template <class LLDATATYPE>
+inline LLDATATYPE llmin(const LLDATATYPE& d1, const LLDATATYPE& d2, const LLDATATYPE& d3)
+{
+ LLDATATYPE r = llmin(d1,d2);
+ return (r < d3 ? r : d3);
+}
+
+template <class LLDATATYPE>
+inline LLDATATYPE llclamp(const LLDATATYPE& a, const LLDATATYPE& minval, const LLDATATYPE& maxval)
+{
+ return llmin(llmax(a, minval), maxval);
+}
+
+template <class LLDATATYPE>
+inline LLDATATYPE llclampf(const LLDATATYPE& a)
+{
+ return llmin(llmax(a, (LLDATATYPE)0), (LLDATATYPE)1);
+}
+
+template <class LLDATATYPE>
+inline LLDATATYPE llclampb(const LLDATATYPE& a)
+{
+ return llmin(llmax(a, (LLDATATYPE)0), (LLDATATYPE)255);
+}
+
+#endif // LL_LLDEFS_H