/*=============================================================================
    Name    : prim3d.h
    Purpose : Definitions for drawing 3D primitives

    Created 7/1/1997 by lmoloney
    Copyright Relic Entertainment, Inc.  All rights reserved.
=============================================================================*/

#ifndef ___PRIM3D_H
#define ___PRIM3D_H

#include "types.h"
#include "vector.h"
#include "color.h"
#include "texreg.h"

#define X_AXIS  0
#define Y_AXIS  1
#define Z_AXIS  2

/*=============================================================================
    Functions:
=============================================================================*/

//draw 3D points with size
void primPoint3(vector *p1, color c);
void primPointSize3(vector *p1, real32 size, color c);
void primPointSize3Fade(vector *p1, real32 size, color c, real32 fade);

//efficient multiple 3D points with size & fade
void primBeginPointSize3Fade(real32 size);
void primNextPointSize3Fade(vector* p1, color c, real32 fade);
void primEndPointSize3Fade(void);

//draw 3D lines
void primLine3(vector *p1, vector *p2, color c);
void primLineThick3(vector *p1, vector *p2, real32 thickness, color c);

//draw 3D 'pizza dish' circle using poly fans
void primCircleSolid3(vector *centre, real32 radius, sdword nSpokes, color c);
void primCircleSolid3Fade(vector *centre, real32 radius, sdword nSpokes, color c, real32 fade);
void primCircleOutline3(vector *centre, real32 radius, sdword nSlices, sdword nSpokes, color c, uword axis);
void primCircleOutlineZ(vector *centre, real32 radius, sdword nSegments, color c);
void primEllipseOutlineZ(vector *centre, real32 rx, real32 ry, sdword nSegments, color c);

void primSolidTexture3(vector *p1, real32 size, color c, trhandle tex);
void primSolidTexture3Fade(vector *p1, real32 size, color c, trhandle tex, real32 fade);

void prim3dStartup(void);
void prim3dShutdown(void);
#endif //___PRIM3D_H

