00001
00002
00003
00004
00005
00006
00007
00008
00009
00016 #ifndef SLOPE_TYPE_H
00017 #define SLOPE_TYPE_H
00018
00019 #include "core/enum_type.hpp"
00020
00024 enum Corner {
00025 CORNER_W = 0,
00026 CORNER_S = 1,
00027 CORNER_E = 2,
00028 CORNER_N = 3,
00029 CORNER_END,
00030 CORNER_INVALID = 0xFF
00031 };
00032
00033
00050 enum Slope {
00051 SLOPE_FLAT = 0x00,
00052 SLOPE_W = 0x01,
00053 SLOPE_S = 0x02,
00054 SLOPE_E = 0x04,
00055 SLOPE_N = 0x08,
00056 SLOPE_STEEP = 0x10,
00057 SLOPE_NW = SLOPE_N | SLOPE_W,
00058 SLOPE_SW = SLOPE_S | SLOPE_W,
00059 SLOPE_SE = SLOPE_S | SLOPE_E,
00060 SLOPE_NE = SLOPE_N | SLOPE_E,
00061 SLOPE_EW = SLOPE_E | SLOPE_W,
00062 SLOPE_NS = SLOPE_N | SLOPE_S,
00063 SLOPE_ELEVATED = SLOPE_N | SLOPE_E | SLOPE_S | SLOPE_W,
00064 SLOPE_NWS = SLOPE_N | SLOPE_W | SLOPE_S,
00065 SLOPE_WSE = SLOPE_W | SLOPE_S | SLOPE_E,
00066 SLOPE_SEN = SLOPE_S | SLOPE_E | SLOPE_N,
00067 SLOPE_ENW = SLOPE_E | SLOPE_N | SLOPE_W,
00068 SLOPE_STEEP_W = SLOPE_STEEP | SLOPE_NWS,
00069 SLOPE_STEEP_S = SLOPE_STEEP | SLOPE_WSE,
00070 SLOPE_STEEP_E = SLOPE_STEEP | SLOPE_SEN,
00071 SLOPE_STEEP_N = SLOPE_STEEP | SLOPE_ENW,
00072
00073 SLOPE_HALFTILE = 0x20,
00074 SLOPE_HALFTILE_MASK = 0xE0,
00075 SLOPE_HALFTILE_W = SLOPE_HALFTILE | (CORNER_W << 6),
00076 SLOPE_HALFTILE_S = SLOPE_HALFTILE | (CORNER_S << 6),
00077 SLOPE_HALFTILE_E = SLOPE_HALFTILE | (CORNER_E << 6),
00078 SLOPE_HALFTILE_N = SLOPE_HALFTILE | (CORNER_N << 6),
00079 };
00080 DECLARE_ENUM_AS_BIT_SET(Slope)
00081
00082
00086 #define M(x) (1 << (x))
00087
00088 static const uint32 VALID_LEVEL_CROSSING_SLOPES = M(SLOPE_SEN) | M(SLOPE_ENW) | M(SLOPE_NWS) | M(SLOPE_NS) | M(SLOPE_WSE) | M(SLOPE_EW) | M(SLOPE_FLAT);
00089 #undef M
00090
00091
00095 enum Foundation {
00096 FOUNDATION_NONE,
00097 FOUNDATION_LEVELED,
00098 FOUNDATION_INCLINED_X,
00099 FOUNDATION_INCLINED_Y,
00100 FOUNDATION_STEEP_LOWER,
00101
00102
00103 FOUNDATION_STEEP_BOTH,
00104 FOUNDATION_HALFTILE_W,
00105 FOUNDATION_HALFTILE_S,
00106 FOUNDATION_HALFTILE_E,
00107 FOUNDATION_HALFTILE_N,
00108
00109
00110 FOUNDATION_RAIL_W,
00111 FOUNDATION_RAIL_S,
00112 FOUNDATION_RAIL_E,
00113 FOUNDATION_RAIL_N,
00114
00115 FOUNDATION_INVALID = 0xFF
00116 };
00117
00118 #endif