#ifndef __ENGINE_H__ #define __ENGINE_H__ #include "cube.hh" #include "world.hh" #include "light.hh" extern dynent *player; extern physent *camera1; // special ent that acts as camera, same object as player1 in FPS mode extern int worldscale, worldsize; extern int xtraverts, xtravertsva; // renderlights extern int calcshadowinfo(const extentity &e, vec &origin, float &radius, vec &spotloc, int &spotangle, float &bias); extern void rendershadowatlas(); extern bool useradiancehints(); extern void renderradiancehints(); extern void clearradiancehintscache(); extern void cleanuplights(); extern void workinoq(); extern int calcbbcsmsplits(const ivec &bbmin, const ivec &bbmax); extern int calcspherecsmsplits(const vec ¢er, float radius); extern int calcbbrsmsplits(const ivec &bbmin, const ivec &bbmax); extern int calcspherersmsplits(const vec ¢er, float radius); extern int transparentlayer; extern int gw, gh, gdepthformat, ghasstencil; extern GLuint gdepthtex, gcolortex, gnormaltex, gglowtex, gdepthrb, gstencilrb; extern int msaasamples, msaalight; extern GLuint msdepthtex, mscolortex, msnormaltex, msglowtex, msdepthrb, msstencilrb; extern vector msaapositions; enum { AA_UNUSED = 0, AA_LUMA, AA_MASKED, AA_SPLIT, AA_SPLIT_LUMA, AA_SPLIT_MASKED }; extern void cleanupgbuffer(); extern void initgbuffer(); extern bool usepacknorm(); extern void maskgbuffer(const char *mask); extern void bindgdepth(); extern void preparegbuffer(bool depthclear = true); extern void rendergbuffer(bool depthclear = true); extern void shadesky(); extern void shadegbuffer(); extern void shademinimap(const vec &color = vec(-1, -1, -1)); extern void shademodelpreview(int x, int y, int w, int h, bool background = true, bool scissor = false); extern void rendertransparent(); extern void renderao(); extern void loadhdrshaders(int aa = AA_UNUSED); extern void processhdr(GLuint outfbo = 0, int aa = AA_UNUSED); extern void copyhdr(int sw, int sh, GLuint fbo, int dw = 0, int dh = 0, bool flipx = false, bool flipy = false, bool swapxy = false); extern void setuplights(); extern void setupgbuffer(); extern GLuint shouldscale(); extern void doscale(GLuint outfbo = 0); extern bool debuglights(); extern void cleanuplights(); extern int avatarmask; extern bool useavatarmask(); extern void enableavatarmask(); extern void disableavatarmask(); // octarender extern ivec worldmin, worldmax, nogimin, nogimax; extern vector tjoints; extern vector varoot, valist; extern ushort encodenormal(const vec &n); extern vec decodenormal(ushort norm); extern void guessnormals(const vec *pos, int numverts, vec *normals); extern void reduceslope(ivec &n); extern void findtjoints(); extern void octarender(); extern void allchanged(bool load = false); extern void clearvas(cube *c); extern void destroyva(vtxarray *va, bool reparent = true); extern void updatevabb(vtxarray *va, bool force = false); extern void updatevabbs(bool force = false); // command extern hashnameset idents; extern int identflags; extern void clearoverrides(); extern void writecfg(const char *name = NULL); extern void checksleep(int millis); extern void clearsleep(bool clearoverrides = true); // console extern float conscale; extern void processkey(int code, bool isdown, int modstate = 0); extern void processtextinput(const char *str, int len); extern float rendercommand(float x, float y, float w); extern float renderfullconsole(float w, float h); extern float renderconsole(float w, float h, float abovehud); extern void conoutf(const char *s, ...) PRINTFARGS(1, 2); extern void conoutf(int type, const char *s, ...) PRINTFARGS(2, 3); extern void resetcomplete(); extern void complete(char *s, int maxlen, const char *cmdprefix); const char *getkeyname(int code); extern const char *addreleaseaction(char *s); extern tagval *addreleaseaction(ident *id, int numargs); extern void writebinds(stream *f); extern void writecompletions(stream *f); #endif