Files

68 lines
1.3 KiB
C

#ifdef INTELLISENSE_DIRECTIVES
# pragma once
# include "base_types.h"
#endif
////////////////////////////////
//~ rjf: Basic Types & Spaces
typedef enum MD_Dimension MD_Dimension;
enum MD_Dimension
{
MD_Dimension_X,
MD_Dimension_Y,
MD_Dimension_Z,
MD_Dimension_W,
};
typedef enum MD_Side MD_Side;
enum MD_Side
{
MD_Side_Invalid = -1,
MD_Side_Min,
MD_Side_Max,
MD_Side_COUNT,
};
#define side_flip(s) ((MD_Side)(!(s)))
typedef enum MD_Axis2 MD_Axis2;
enum MD_Axis2
{
MD_Axis2_Invalid = -1,
MD_Axis2_X,
MD_Axis2_Y,
MD_Axis2_COUNT,
};
#define axis2_flip(a) ((MD_Axis2)(!(a)))
typedef enum MD_corner MD_corner;
enum MD_corner
{
MD_Corner_Invalid = -1,
MD_Corner_00,
MD_Corner_01,
MD_Corner_10,
MD_Corner_11,
MD_Corner_COUNT
};
typedef enum MD_Dir2 MD_Dir2;
enum MD_Dir2
{
MD_Dir2_Invalid = -1,
MD_Dir2_Left,
MD_Dir2_Up,
MD_Dir2_Right,
MD_Dir2_Down,
MD_Dir2_COUNT
};
#define md_axis2_from_dir2(d) (((d) & 1) ? MD_Axis2_Y : MD_Axis2_X)
#define md_side_from_dir2(d) (((d) < MD_Dir2_Right) ? MD_Side_Min : MD_Side_Max)
////////////////////////////////
//~ rjf: Enum -> Sign
inline MD_S32 md_sign_from_side_S32(MD_Side side) { return((side == MD_Side_Min) ? -1 : 1 ); }
inline MD_F32 md_sign_from_side_F32(MD_Side side) { return((side == MD_Side_Min) ? -1.f : 1.f); }