1
0
mirror of https://github.com/zenorogue/hyperrogue.git synced 2024-10-18 06:30:41 +00:00

drawing:: flags now use flagtype

This commit is contained in:
Zeno Rogue 2024-10-05 13:07:21 +02:00
parent 462b835ba8
commit 324b670c29

View File

@ -9,38 +9,38 @@
namespace hr {
#if HDR
static constexpr int POLY_DRAWLINES = 1; // draw the lines
static constexpr int POLY_DRAWAREA = 2; // draw the area
static constexpr int POLY_INVERSE = 4; // draw the inverse -- useful in stereographic projection
static constexpr int POLY_ISSIDE = 8; // never draw in inverse
static constexpr int POLY_BEHIND = 16; // there are points behind the camera
static constexpr int POLY_TOOLARGE = 32; // some coordinates are too large -- best not to draw to avoid glitches
static constexpr int POLY_INFRONT = 64; // on the sphere (orthogonal projection), do not draw without any points in front
static constexpr int POLY_HASWALLS = 128; // floor shapes which have their sidewalls
static constexpr int POLY_PLAIN = 256; // plain floors
static constexpr int POLY_FULL = 512; // full floors
static constexpr int POLY_HASSHADOW = 1024; // floor shapes which have their shadows, or can use shFloorShadow
static constexpr int POLY_GP = 2048; // Goldberg shapes
static constexpr int POLY_VCONVEX = 4096; // Convex shape (vertex)
static constexpr int POLY_CCONVEX = 8192; // Convex shape (central)
static constexpr int POLY_CENTERIN = 16384; // new system of side checking
static constexpr int POLY_FORCEWIDE = (1<<15); // force wide lines
static constexpr int POLY_NOTINFRONT = (1<<16); // points not in front
static constexpr int POLY_NIF_ERROR = (1<<17); // points moved to the outline cross the image, disable
static constexpr int POLY_BADCENTERIN = (1<<18); // new system of side checking
static constexpr int POLY_PRECISE_WIDE = (1<<19); // precise width calculation
static constexpr int POLY_FORCE_INVERTED = (1<<20); // force inverted
static constexpr int POLY_ALWAYS_IN = (1<<21); // always draw this
static constexpr int POLY_TRIANGLES = (1<<22); // made of TRIANGLES, not TRIANGLE_FAN
static constexpr int POLY_INTENSE = (1<<23); // extra intense colors
static constexpr int POLY_DEBUG = (1<<24); // debug this shape
static constexpr int POLY_PRINTABLE = (1<<25); // these walls are printable
static constexpr int POLY_FAT = (1<<26); // fatten this model in WRL export (used for Rug)
static constexpr int POLY_SHADE_TEXTURE = (1<<27); // texture has 'z' coordinate for shading
static constexpr int POLY_ONE_LEVEL = (1<<28); // only one level of the universal cover in SL(2,R)
static constexpr int POLY_APEIROGONAL = (1<<29); // only vertices indexed up to she are drawn as the boundary
static constexpr int POLY_NO_FOG = (1<<30); // disable fog for this
static constexpr int POLY_FORCE_DEPTH = (1<<31); // always depth test
static constexpr flagtype POLY_DRAWLINES = 1; // draw the lines
static constexpr flagtype POLY_DRAWAREA = 2; // draw the area
static constexpr flagtype POLY_INVERSE = 4; // draw the inverse -- useful in stereographic projection
static constexpr flagtype POLY_ISSIDE = 8; // never draw in inverse
static constexpr flagtype POLY_BEHIND = 16; // there are points behind the camera
static constexpr flagtype POLY_TOOLARGE = 32; // some coordinates are too large -- best not to draw to avoid glitches
static constexpr flagtype POLY_INFRONT = 64; // on the sphere (orthogonal projection), do not draw without any points in front
static constexpr flagtype POLY_HASWALLS = 128; // floor shapes which have their sidewalls
static constexpr flagtype POLY_PLAIN = 256; // plain floors
static constexpr flagtype POLY_FULL = 512; // full floors
static constexpr flagtype POLY_HASSHADOW = 1024; // floor shapes which have their shadows, or can use shFloorShadow
static constexpr flagtype POLY_GP = 2048; // Goldberg shapes
static constexpr flagtype POLY_VCONVEX = 4096; // Convex shape (vertex)
static constexpr flagtype POLY_CCONVEX = 8192; // Convex shape (central)
static constexpr flagtype POLY_CENTERIN = 16384; // new system of side checking
static constexpr flagtype POLY_FORCEWIDE = Flag(15); // force wide lines
static constexpr flagtype POLY_NOTINFRONT = Flag(16); // points not in front
static constexpr flagtype POLY_NIF_ERROR = Flag(17); // points moved to the outline cross the image, disable
static constexpr flagtype POLY_BADCENTERIN = Flag(18); // new system of side checking
static constexpr flagtype POLY_PRECISE_WIDE = Flag(19); // precise width calculation
static constexpr flagtype POLY_FORCE_INVERTED = Flag(20); // force inverted
static constexpr flagtype POLY_ALWAYS_IN = Flag(21); // always draw this
static constexpr flagtype POLY_TRIANGLES = Flag(22); // made of TRIANGLES, not TRIANGLE_FAN
static constexpr flagtype POLY_INTENSE = Flag(23); // extra intense colors
static constexpr flagtype POLY_DEBUG = Flag(24); // debug this shape
static constexpr flagtype POLY_PRINTABLE = Flag(25); // these walls are printable
static constexpr flagtype POLY_FAT = Flag(26); // fatten this model in WRL export (used for Rug)
static constexpr flagtype POLY_SHADE_TEXTURE = Flag(27); // texture has 'z' coordinate for shading
static constexpr flagtype POLY_ONE_LEVEL = Flag(28); // only one level of the universal cover in SL(2,R)
static constexpr flagtype POLY_APEIROGONAL = Flag(29); // only vertices indexed up to she are drawn as the boundary
static constexpr flagtype POLY_NO_FOG = Flag(30); // disable fog for this
static constexpr flagtype POLY_FORCE_DEPTH = Flag(31); // always depth test
/** \brief A graphical element that can be drawn. Objects are not drawn immediately but rather queued.
*
@ -83,7 +83,7 @@ struct dqi_poly : drawqueueitem {
/** \brief width of boundary lines */
double linewidth;
/** \brief various flags */
int flags;
flagtype flags;
/** \brief Texture data for textured polygons. Requires POLY_TRIANGLES flag */
struct basic_textureinfo *tinf;
/** \brief used to find the correct side to draw in spherical geometries */
@ -1819,7 +1819,7 @@ void dqi_poly::draw() {
if(flags & POLY_DEBUG) debug_this();
if(debugflags & DF_VERTEX) {
println(hlog, int(prio), ": V=", V, " o=", offset, " c=", cnt, " ot=", offset_texture, " ol=", outline, " lw=", linewidth, " f=", flags, " i=", intester, " c=", cache, " ti=", (cell*) tinf);
println(hlog, int(prio), ": V=", V, " o=", offset, " c=", cnt, " ot=", offset_texture, " ol=", outline, " lw=", linewidth, " f=", (color_t) flags, " i=", intester, " c=", cache, " ti=", (cell*) tinf);
for(int i=0; i<cnt; i++) print(hlog, (*tab)[offset+i]);
println(hlog);
}