Inexor
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
Classes | Macros | Functions | Variables
octa.cpp File Reference
#include <boost/algorithm/clamp.hpp>
#include <limits.h>
#include <stdlib.h>
#include <string.h>
#include <algorithm>
#include <memory>
#include "inexor/engine/lightmap.hpp"
#include "inexor/engine/material.hpp"
#include "inexor/engine/octa.hpp"
#include "inexor/engine/octaedit.hpp"
#include "inexor/engine/octarender.hpp"
#include "inexor/engine/octree.hpp"
#include "inexor/engine/renderbackground.hpp"
#include "inexor/engine/world.hpp"
#include "inexor/fpsgame/client.hpp"
#include "inexor/io/Logging.hpp"
#include "inexor/network/SharedVar.hpp"
#include "inexor/physics/physics.hpp"
#include "inexor/shared/command.hpp"
#include "inexor/shared/cube_hash.hpp"
#include "inexor/shared/cube_loops.hpp"
#include "inexor/shared/cube_sort.hpp"
#include "inexor/shared/cube_tools.hpp"
#include "inexor/shared/cube_types.hpp"
#include "inexor/shared/cube_vector.hpp"
#include "inexor/shared/geom.hpp"
#include "inexor/shared/tools.hpp"
#include "inexor/util/legacy_time.hpp"

Classes

struct  cfkey
 
struct  pvert
 
struct  pedge
 
struct  poly
 
struct  plink
 
struct  cfpolys
 

Macros

#define GENCUBEVERT(n, x, y, z)   ivec(x, y, z),
 
#define GENCUBEVERT(n, x, y, z)
 
#define GENFACEORIENT(o, v0, v1, v2, v3)   case o: v0 v1 v2 v3 break;
 
#define GENFACEVERT(o, n, x, y, z, xv, yv, zv)
 
#define GENFACEORIENT(o, v0, v1, v2, v3)   { v0, v1, v2, v3 },
 
#define GENFACEVERT(o, n, x, y, z, xv, yv, zv)   ivec(x,y,z)
 
#define GENFACEORIENT(orient, v0, v1, v2, v3)
 
#define GENFACEVERT(orient, vert, xv, yv, zv, x, y, z)   { ivec2 &f = fvecs[i]; x ((xv)<<3); y ((yv)<<3); z ((zv)<<3); i++; }
 
#define GENFACEVERT(orient, vert, sx, sy, sz, dx, dy, dz)
 

Functions

cubeextgrowcubeext (cubeext *old, int maxverts)
 
void setcubeext (cube &c, cubeext *ext)
 
cubeextnewcubeext (cube &c, int maxverts, bool init)
 
cubenewcubes (uint face, int mat)
 
int familysize (const cube &c)
 
void freeocta (cube *c)
 
void freecubeext (cube &c)
 
void discardchildren (cube &c, bool fixtex, int depth)
 
void getcubevector (cube &c, int d, int x, int y, int z, ivec &p)
 
void setcubevector (cube &c, int d, int x, int y, int z, const ivec &p)
 
static void getcubevector (cube &c, int i, ivec &p)
 
static void setcubevector (cube &c, int i, const ivec &p)
 
void optiface (uchar *p, cube &c)
 
void printcube ()
 
 COMMAND (printcube,"")
 
bool isvalidcube (const cube &c)
 
void validatec (cube *c, int size)
 
cubelookupcube (const ivec &to, int tsize, ivec &ro, int &rsize)
 
int lookupmaterial (const vec &v)
 
const cubeneighbourcube (const cube &c, int orient, const ivec &co, int size, ivec &ro, int &rsize)
 
int getmippedtexture (const cube &p, int orient)
 
void forcemip (cube &c, bool fixtex)
 
static int midedge (const ivec &a, const ivec &b, int xd, int yd, bool &perfect)
 
static bool crosscenter (const ivec &a, const ivec &b, int xd, int yd)
 
bool subdividecube (cube &c, bool fullcheck, bool brighten)
 
bool crushededge (uchar e, int dc)
 
int visibleorient (const cube &c, int orient)
 
 VAR (mipvis, 0, 0, 1)
 
bool remip (cube &c, const ivec &co, int size)
 
void mpremip (bool local)
 
void remip_ ()
 
 COMMANDN (remip, remip_,"")
 
static int edgeval (cube &c, const ivec &p, int dim, int coord)
 
void genvertp (cube &c, ivec &p1, ivec &p2, ivec &p3, plane &pl, bool solid=false)
 
static bool threeplaneintersect (plane &pl1, plane &pl2, plane &pl3, vec &dest)
 
static void genedgespanvert (ivec &p, cube &c, vec &v)
 
void edgespan2vectorcube (cube &c)
 
template<class T >
static void gencubevert (const cube &c, int i, T &v)
 
void genfaceverts (const cube &c, int orient, ivec v[4])
 
bool flataxisface (const cube &c, int orient)
 
bool collideface (const cube &c, int orient)
 
bool touchingface (const cube &c, int orient)
 
bool notouchingface (const cube &c, int orient)
 
int faceconvexity (const ivec v[4])
 
int faceconvexity (const vertinfo *verts, int numverts, int size)
 
int faceconvexity (const ivec v[4], int &vis)
 
int faceconvexity (const cube &c, int orient)
 
int faceorder (const cube &c, int orient)
 
static void faceedges (const cube &c, int orient, uchar edges[4])
 
uint faceedges (const cube &c, int orient)
 
static int genfacevecs (const cube &cu, int orient, const ivec &pos, int size, bool solid, ivec2 *fvecs, const ivec *v=nullptr)
 
static int clipfacevecy (const ivec2 &o, const ivec2 &dir, int cx, int cy, int size, ivec2 &r)
 
static int clipfacevecx (const ivec2 &o, const ivec2 &dir, int cx, int cy, int size, ivec2 &r)
 
static int clipfacevec (const ivec2 &o, const ivec2 &dir, int cx, int cy, int size, ivec2 *rvecs)
 
static bool insideface (const ivec2 *p, int nump, const ivec2 *o, int numo)
 
static int clipfacevecs (const ivec2 *o, int numo, int cx, int cy, int size, ivec2 *rvecs)
 
bool collapsedface (const cube &c, int orient)
 
static bool occludesface (const cube &c, int orient, const ivec &o, int size, const ivec &vo, int vsize, ushort vmat, ushort nmat, ushort matmask, const ivec2 *vf, int numv)
 
bool visibleface (const cube &c, int orient, const ivec &co, int size, ushort mat, ushort nmat, ushort matmask)
 
int classifyface (const cube &c, int orient, const ivec &co, int size)
 
int visibletris (const cube &c, int orient, const ivec &co, int size, ushort nmat, ushort matmask)
 
void calcvert (const cube &c, const ivec &co, int size, ivec &v, int i, bool solid)
 
void calcvert (const cube &c, const ivec &co, int size, vec &v, int i, bool solid)
 
int genclipplane (const cube &c, int orient, vec *v, plane *clip)
 
void genclipplanes (const cube &c, const ivec &co, int size, clipplanes &p, bool collide)
 
static bool mergefacecmp (const facebounds &x, const facebounds &y)
 
static int mergefacev (int orient, facebounds *m, int sz, facebounds &n)
 
static int mergefaceu (int orient, facebounds &m, facebounds &n)
 
static int mergeface (int orient, facebounds *m, int sz, facebounds &n)
 
int mergefaces (int orient, facebounds *m, int sz)
 
static bool htcmp (const cfkey &x, const cfkey &y)
 
static uint hthash (const cfkey &k)
 
void mincubeface (const cube &cu, int orient, const ivec &o, int size, const facebounds &orig, facebounds &cf, ushort nmat, ushort matmask)
 
bool mincubeface (const cube &cu, int orient, const ivec &co, int size, facebounds &orig)
 
 VAR (maxmerge, 0, 6, 12)
 
 VAR (minface, 0, 4, 12)
 
static uint hthash (const pedge &x)
 
static bool htcmp (const pedge &x, const pedge &y)
 
bool clippoly (poly &p, const facebounds &b)
 
bool genpoly (cube &cu, int orient, const ivec &o, int size, int vis, ivec &n, int &offset, poly &p)
 
bool mergepolys (int orient, hashset< plink > &links, vector< plink * > &queue, int owner, poly &p, poly &q, const pedge &e)
 
void addmerge (cube &cu, int orient, const ivec &co, const ivec &n, int offset, poly &p)
 
static void clearmerge (cube &c, int orient)
 
void addmerges (int orient, const ivec &co, const ivec &n, int offset, vector< poly > &polys)
 
void mergepolys (int orient, const ivec &co, const ivec &n, int offset, vector< poly > &polys)
 
void genmerges (cube *c=worldroot, const ivec &o=ivec(0, 0, 0), int size=worldsize >>1)
 
int calcmergedsize (int orient, const ivec &co, int size, const vertinfo *verts, int numverts)
 
static void invalidatemerges (cube &c)
 
void invalidatemerges (cube &c, const ivec &co, int size, bool msg)
 
void calcmerges ()
 

Variables

cubeworldroot = newcubes(F_SOLID)
 
int allocnodes = 0
 
ivec lu
 lookup integer vector More...
 
int lusize
 lookup size More...
 
const cubeneighbourstack [32]
 
int neighbourdepth = -1
 
static int remipprogress = 0
 
static int remiptotal = 0
 
const ivec cubecoords [8]
 
const ivec facecoords [6][4]
 
const uchar fv [6][4]
 
const uchar fvmasks [64]
 
const uchar faceedgesidx [6][4]
 
static int genmergeprogress = 0
 
static hashtable< cfkey, cfpolyscpolys
 
static int invalidatedmerges = 0
 

Class Documentation

struct cfkey
Class Members
ushort material
ivec n
int offset
uchar orient
ushort tex
struct poly
Class Members
cube * c
bool merged
int numverts
pvert verts[MAXFACEVERTS]
struct cfpolys
Class Members
vector< poly > polys

Macro Definition Documentation

#define GENCUBEVERT (   n,
  x,
  y,
 
)    ivec(x, y, z),
#define GENCUBEVERT (   n,
  x,
  y,
 
)
Value:
case n: \
v = T(edgeget(cubeedge(c, 0, y, z), x), \
edgeget(cubeedge(c, 1, z, x), y), \
edgeget(cubeedge(c, 2, x, y), z)); \
break;
#define cubeedge(c, d, x, y)
Definition: octree.hpp:304
#define edgeget(edge, coord)
Definition: octree.hpp:301
#define GENFACEORIENT (   o,
  v0,
  v1,
  v2,
  v3 
)    case o: v0 v1 v2 v3 break;
#define GENFACEORIENT (   o,
  v0,
  v1,
  v2,
  v3 
)    { v0, v1, v2, v3 },
#define GENFACEORIENT (   orient,
  v0,
  v1,
  v2,
  v3 
)
Value:
case orient: \
{ \
if(dimcoord(orient)) { v0 v1 v2 v3 } else { v3 v2 v1 v0 } \
break; \
}
#define dimcoord(orient)
Definition: octree.hpp:339
if(NOT DEFINED PROJECT_ARCH) message(FATAL_ERROR"You are generating from the wrong folder! \"Where is the Source
Definition: CMakeLists.txt:2
int orient
Definition: octaedit.cpp:164
#define GENFACEVERT (   o,
  n,
  x,
  y,
  z,
  xv,
  yv,
  zv 
)
Value:
v[n] = ivec(edgeget(cubeedge(c, 0, y, z), x), \
edgeget(cubeedge(c, 1, z, x), y), \
edgeget(cubeedge(c, 2, x, y), z));
#define cubeedge(c, d, x, y)
Definition: octree.hpp:304
#define edgeget(edge, coord)
Definition: octree.hpp:301
3-dimensional INTEGER vectors
Definition: geom.hpp:1226
#define GENFACEVERT (   o,
  n,
  x,
  y,
  z,
  xv,
  yv,
  zv 
)    ivec(x,y,z)
#define GENFACEVERT (   orient,
  vert,
  xv,
  yv,
  zv,
  x,
  y,
 
)    { ivec2 &f = fvecs[i]; x ((xv)<<3); y ((yv)<<3); z ((zv)<<3); i++; }
#define GENFACEVERT (   orient,
  vert,
  sx,
  sy,
  sz,
  dx,
  dy,
  dz 
)
Value:
{ \
const ivec &e = v[vert]; \
ivec ef; \
ef.dx = e.sx; ef.dy = e.sy; ef.dz = e.sz; \
if(ef.z == dimcoord(orient)*8) \
{ \
ivec2 &f = fvecs[i]; \
ivec pf; \
pf.dx = pos.sx; pf.dy = pos.sy; pf.dz = pos.sz; \
f = ivec2(ef.x*size + (pf.x<<3), ef.y*size + (pf.y<<3)); \
if(f != prev) { prev = f; i++; } \
} \
}
#define dimcoord(orient)
Definition: octree.hpp:339
ICOMMAND * f(float *a, float *b), floatret(*a **b)
2 dimensional integer vector.
Definition: geom.hpp:1304
if(NOT DEFINED PROJECT_ARCH) message(FATAL_ERROR"You are generating from the wrong folder! \"Where is the Source
Definition: CMakeLists.txt:2
int orient
Definition: octaedit.cpp:164
GLuint GLuint GLintptr GLsizeiptr size
Definition: glexts.hpp:412
3-dimensional INTEGER vectors
Definition: geom.hpp:1226

Function Documentation

void addmerge ( cube cu,
int  orient,
const ivec co,
const ivec n,
int  offset,
poly p 
)
void addmerges ( int  orient,
const ivec co,
const ivec n,
int  offset,
vector< poly > &  polys 
)

References addmerge(), poly::c, clearmerge(), loopv, and poly::merged.

Referenced by mergepolys().

int calcmergedsize ( int  orient,
const ivec co,
int  size,
const vertinfo verts,
int  numverts 
)
void calcmerges ( )

References genmergeprogress, and genmerges().

Referenced by mpremip().

void calcvert ( const cube c,
const ivec co,
int  size,
ivec v,
int  i,
bool  solid 
)
void calcvert ( const cube c,
const ivec co,
int  size,
vec v,
int  i,
bool  solid 
)

References vec::add(), f(), gencubevert(), and vec::mul().

int classifyface ( const cube c,
int  orient,
const ivec co,
int  size 
)
static void clearmerge ( cube c,
int  orient 
)
inlinestatic
static int clipfacevec ( const ivec2 o,
const ivec2 dir,
int  cx,
int  cy,
int  size,
ivec2 rvecs 
)
inlinestatic

References ASSERT, clipfacevecx(), and clipfacevecy().

Referenced by clipfacevecs().

static int clipfacevecs ( const ivec2 o,
int  numo,
int  cx,
int  cy,
int  size,
ivec2 rvecs 
)
inlinestatic

References ASSERT, clipfacevec(), cur, insideface(), and loopi().

Referenced by occludesface().

static int clipfacevecx ( const ivec2 o,
const ivec2 dir,
int  cx,
int  cy,
int  size,
ivec2 r 
)
inlinestatic
static int clipfacevecy ( const ivec2 o,
const ivec2 dir,
int  cx,
int  cy,
int  size,
ivec2 r 
)
inlinestatic
bool clippoly ( poly p,
const facebounds b 
)
bool collapsedface ( const cube c,
int  orient 
)
bool collideface ( const cube c,
int  orient 
)

References faceedgesidx, flataxisface(), and orient.

Referenced by setcubevisibility().

COMMAND ( printcube  ,
""   
)
COMMANDN ( remip  ,
remip_  ,
""   
)
static bool crosscenter ( const ivec a,
const ivec b,
int  xd,
int  yd 
)
inlinestatic

Referenced by subdividecube().

bool crushededge ( uchar  e,
int  dc 
)

Referenced by visibleorient().

void discardchildren ( cube c,
bool  fixtex,
int  depth 
)
void edgespan2vectorcube ( cube c)

References cubeedge, edgeset, genedgespanvert(), isempty, isentirelysolid, and loop.

Referenced by loadc().

static int edgeval ( cube c,
const ivec p,
int  dim,
int  coord 
)
inlinestatic

References C, cubeedge, edgeget, and R.

Referenced by genvertp().

int faceconvexity ( const ivec  v[4])
int faceconvexity ( const vertinfo verts,
int  numverts,
int  size 
)
int faceconvexity ( const ivec  v[4],
int &  vis 
)
int faceconvexity ( const cube c,
int  orient 
)
static void faceedges ( const cube c,
int  orient,
uchar  edges[4] 
)
inlinestatic
uint faceedges ( const cube c,
int  orient 
)

References faceedges().

int faceorder ( const cube c,
int  orient 
)

References faceconvexity().

int familysize ( const cube c)

References cube::children, familysize(), and loopi().

Referenced by familysize(), and undosize().

bool flataxisface ( const cube c,
int  orient 
)
void forcemip ( cube c,
bool  fixtex 
)
void freecubeext ( cube c)

References cube::ext.

Referenced by discardchildren().

void freeocta ( cube c)
int genclipplane ( const cube c,
int  orient,
vec v,
plane clip 
)
void genclipplanes ( const cube c,
const ivec co,
int  size,
clipplanes p,
bool  collide 
)
template<class T >
static void gencubevert ( const cube c,
int  i,
T &  v 
)
inlinestatic

References GENCUBEVERTS.

Referenced by calcvert().

static void genedgespanvert ( ivec p,
cube c,
vec v 
)
static
static int genfacevecs ( const cube cu,
int  orient,
const ivec pos,
int  size,
bool  solid,
ivec2 fvecs,
const ivec v = nullptr 
)
inlinestatic
void genfaceverts ( const cube c,
int  orient,
ivec  v[4] 
)
void genmerges ( cube c = worldroot,
const ivec o = ivec(0, 0, 0),
int  size = worldsize>>1 
)
bool genpoly ( cube cu,
int  orient,
const ivec o,
int  size,
int  vis,
ivec n,
int &  offset,
poly p 
)
void genvertp ( cube c,
ivec p1,
ivec p2,
ivec p3,
plane pl,
bool  solid = false 
)

References edgeval(), and plane::toplane().

Referenced by genedgespanvert().

void getcubevector ( cube c,
int  d,
int  x,
int  y,
int  z,
ivec p 
)

References C, cubeedge, D, edgeget, loopi(), and R.

Referenced by forcemip(), linkedpush(), hmap::pushside(), and subdividecube().

static void getcubevector ( cube c,
int  i,
ivec p 
)
inlinestatic

References C, cubeedge, D, edgeget, and R.

int getmippedtexture ( const cube p,
int  orient 
)
cubeext* growcubeext ( cubeext old,
int  maxverts 
)
static bool htcmp ( const cfkey x,
const cfkey y 
)
inlinestatic
static bool htcmp ( const pedge x,
const pedge y 
)
inlinestatic
static uint hthash ( const cfkey k)
inlinestatic
static uint hthash ( const pedge x)
inlinestatic

References pedge::from, pvert::x, and pvert::y.

static bool insideface ( const ivec2 p,
int  nump,
const ivec2 o,
int  numo 
)
inlinestatic
static void invalidatemerges ( cube c)
static
void invalidatemerges ( cube c,
const ivec co,
int  size,
bool  msg 
)
bool isvalidcube ( const cube c)
cube& lookupcube ( const ivec to,
int  tsize,
ivec ro,
int &  rsize 
)
int lookupmaterial ( const vec v)
static int mergeface ( int  orient,
facebounds m,
int  sz,
facebounds n 
)
static

References mergefaceu(), and mergefacev().

Referenced by mergefaces().

static bool mergefacecmp ( const facebounds x,
const facebounds y 
)
inlinestatic

References facebounds::u1, and facebounds::v2.

Referenced by mergefaces().

int mergefaces ( int  orient,
facebounds m,
int  sz 
)

References loopi(), mergeface(), mergefacecmp(), and quicksort().

Referenced by addskyverts().

static int mergefaceu ( int  orient,
facebounds m,
facebounds n 
)
static
static int mergefacev ( int  orient,
facebounds m,
int  sz,
facebounds n 
)
static

References facebounds::u1, facebounds::u2, and facebounds::v1.

Referenced by mergeface().

bool mergepolys ( int  orient,
hashset< plink > &  links,
vector< plink * > &  queue,
int  owner,
poly p,
poly q,
const pedge e 
)
void mergepolys ( int  orient,
const ivec co,
const ivec n,
int  offset,
vector< poly > &  polys 
)
static int midedge ( const ivec a,
const ivec b,
int  xd,
int  yd,
bool &  perfect 
)
static

References inexor::rpc::max(), and inexor::rpc::min().

Referenced by subdividecube().

void mincubeface ( const cube cu,
int  orient,
const ivec o,
int  size,
const facebounds orig,
facebounds cf,
ushort  nmat,
ushort  matmask 
)
bool mincubeface ( const cube cu,
int  orient,
const ivec co,
int  size,
facebounds orig 
)
void mpremip ( bool  local)
const cube& neighbourcube ( const cube c,
int  orient,
const ivec co,
int  size,
ivec ro,
int &  rsize 
)
cubeext* newcubeext ( cube c,
int  maxverts,
bool  init 
)
cube* newcubes ( uint  face,
int  mat 
)
bool notouchingface ( const cube c,
int  orient 
)
static bool occludesface ( const cube c,
int  orient,
const ivec o,
int  size,
const ivec vo,
int  vsize,
ushort  vmat,
ushort  nmat,
ushort  matmask,
const ivec2 vf,
int  numv 
)
inlinestatic
void optiface ( uchar p,
cube c 
)

References emptyfaces, and f().

Referenced by mpeditface().

void printcube ( )
bool remip ( cube c,
const ivec co,
int  size 
)
void remip_ ( )

References allchanged(), and mpremip().

void setcubeext ( cube c,
cubeext ext 
)

References ext(), and cube::ext.

Referenced by cleanupthreads(), newcubeext(), and setsurface().

void setcubevector ( cube c,
int  d,
int  x,
int  y,
int  z,
const ivec p 
)

References C, cubeedge, D, edgeset, loopi(), and R.

Referenced by forcemip(), and hmap::pushside().

static void setcubevector ( cube c,
int  i,
const ivec p 
)
inlinestatic

References C, cubeedge, D, edgeset, and R.

bool subdividecube ( cube c,
bool  fullcheck,
bool  brighten 
)
static bool threeplaneintersect ( plane pl1,
plane pl2,
plane pl3,
vec dest 
)
static
bool touchingface ( const cube c,
int  orient 
)
void validatec ( cube c,
int  size 
)
VAR ( mipvis  ,
,
,
 
)
VAR ( maxmerge  ,
,
,
12   
)
VAR ( minface  ,
,
,
12   
)
bool visibleface ( const cube c,
int  orient,
const ivec co,
int  size,
ushort  mat,
ushort  nmat,
ushort  matmask 
)
int visibleorient ( const cube c,
int  orient 
)
int visibletris ( const cube c,
int  orient,
const ivec co,
int  size,
ushort  nmat,
ushort  matmask 
)

Variable Documentation

int allocnodes = 0
hashtable<cfkey, cfpolys> cpolys
static
const ivec cubecoords[8]
Initial value:
=
{
#define GENCUBEVERT(n, x, y, z)
}
const ivec facecoords[6][4]
Initial value:
=
{
#define GENFACEORIENT(o, v0, v1, v2, v3)
#define GENFACEVERT(o, n, x,y,z, xv,yv,zv)
}

Referenced by addskyverts(), and convertoldsurfaces().

const uchar faceedgesidx[6][4]
Initial value:
=
{
{ 4, 5, 8, 10 },
{ 6, 7, 9, 11 },
{ 8, 9, 0, 2 },
{ 10, 11, 1, 3 },
{ 0, 1, 4, 6 },
{ 2, 3, 5, 7 },
}

Referenced by collapsedface(), collideface(), faceedges(), mincubeface(), and visibleorient().

const uchar fv[6][4]
Initial value:
=
{
{ 2, 1, 6, 5 },
{ 3, 4, 7, 0 },
{ 4, 5, 6, 7 },
{ 1, 2, 3, 0 },
{ 6, 1, 0, 7 },
{ 5, 4, 3, 2 },
}

Referenced by clampcollide(), genclipplane(), genclipplanes(), and iqm::iqmmeshgroup::loadiqmmeshes().

const uchar fvmasks[64]
Initial value:
=
{
0x00, 0x66, 0x99, 0xFF, 0xF0, 0xF6, 0xF9, 0xFF,
0x0F, 0x6F, 0x9F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xC3, 0xE7, 0xDB, 0xFF, 0xF3, 0xF7, 0xFB, 0xFF,
0xCF, 0xEF, 0xDF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0x3C, 0x7E, 0xBD, 0xFF, 0xFC, 0xFE, 0xFD, 0xFF,
0x3F, 0x7F, 0xBF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
}
int genmergeprogress = 0
static

Referenced by calcmerges(), and genmerges().

int invalidatedmerges = 0
static
ivec lu

lookup integer vector

Referenced by normalizelookupcube(), printcube(), and rendereditcursor().

int lusize
int neighbourdepth = -1
const cube* neighbourstack[32]
int remipprogress = 0
static

Referenced by mpremip(), and remip().

int remiptotal = 0
static

Referenced by mpremip(), and remip().

cube* worldroot = newcubes(F_SOLID)