X-Git-Url: http://git.xonotic.org/?a=blobdiff_plain;f=model_shared.h;h=c72715c9c4272a341328a500e6d64a5d9fc09fbf;hb=e7057e3c1509c66b71e6a0d0d0d09b0ef636442f;hp=64c3c7d7995f6a22b0a58c9808181099de169c3a;hpb=4158c4e2c293bb8c3ff3c2cd0e3a1e5859e7e196;p=xonotic%2Fdarkplaces.git diff --git a/model_shared.h b/model_shared.h index 64c3c7d7..c72715c9 100644 --- a/model_shared.h +++ b/model_shared.h @@ -70,18 +70,18 @@ typedef struct skinframe_s // are freed unsigned int loadsequence; // indicates whether this texture has transparent pixels - qboolean hasalpha; + qbool hasalpha; // average texture color, if applicable float avgcolor[4]; // for mdl skins, we actually only upload on first use (many are never used, and they are almost never used in both base+pants+shirt and merged modes) unsigned char *qpixels; int qwidth; int qheight; - qboolean qhascolormapping; - qboolean qgeneratebase; - qboolean qgeneratemerged; - qboolean qgeneratenmap; - qboolean qgenerateglow; + qbool qhascolormapping; + qbool qgeneratebase; + qbool qgeneratemerged; + qbool qgeneratenmap; + qbool qgenerateglow; } skinframe_t; @@ -106,10 +106,10 @@ typedef struct r_meshbuffer_s int bufferobject; // OpenGL void *devicebuffer; // Direct3D size_t size; - qboolean isindexbuffer; - qboolean isuniformbuffer; - qboolean isdynamic; - qboolean isindex16; + qbool isindexbuffer; + qbool isuniformbuffer; + qbool isdynamic; + qbool isindex16; char name[MAX_QPATH]; } r_meshbuffer_t; @@ -172,7 +172,7 @@ typedef struct surfmesh_s int num_blends; unsigned short *blends; // set if there is some kind of animation on this model - qboolean isanimated; + qbool isanimated; // dynamic mesh building support (Mod_Mesh_*) int num_vertexhashsize; // always pow2 for simple masking @@ -409,7 +409,7 @@ typedef enum dptransparentsort_category_e TRANSPARENTSORT_HUD, }dptransparentsortcategory_t; -typedef struct q3shaderinfo_s +typedef struct shader_s { char name[Q3PATHLENGTH]; #define Q3SHADERINFO_COMPARE_START surfaceparms @@ -417,9 +417,9 @@ typedef struct q3shaderinfo_s int surfaceflags; int textureflags; int numlayers; - qboolean lighting; - qboolean vertexalpha; - qboolean textureblendalpha; + qbool lighting; + qbool vertexalpha; + qbool textureblendalpha; q3shaderinfo_layer_t layers[Q3SHADER_MAXLAYERS]; char skyboxname[Q3PATHLENGTH]; q3shaderinfo_deform_t deforms[Q3MAXDEFORMS]; @@ -427,15 +427,15 @@ typedef struct q3shaderinfo_s // dp-specific additions: // shadow control - qboolean dpnortlight; - qboolean dpshadow; - qboolean dpnoshadow; + qbool dpnortlight; + qbool dpshadow; + qbool dpnoshadow; // add collisions to all triangles of the surface - qboolean dpmeshcollisions; + qbool dpmeshcollisions; // kill shader based on cvar checks - qboolean dpshaderkill; + qbool dpshaderkill; // fake reflection char dpreflectcube[Q3PATHLENGTH]; @@ -469,11 +469,11 @@ typedef struct q3shaderinfo_s float rtlightambient; #define Q3SHADERINFO_COMPARE_END rtlightambient } -q3shaderinfo_t; +shader_t; typedef struct texture_shaderpass_s { - qboolean alphatest; // FIXME: handle alphafunc properly + qbool alphatest; // FIXME: handle alphafunc properly float framerate; int numframes; skinframe_t *skinframes[TEXTURE_MAXFRAMES]; @@ -487,9 +487,10 @@ texture_shaderpass_t; typedef struct texture_s { - // q1bsp // name - //char name[16]; + char name[64]; + + // q1bsp // size unsigned int width, height; // SURF_ flags @@ -548,7 +549,7 @@ typedef struct texture_s unsigned char startpostshaderpass; // range within shaderpasses[] unsigned char endpostshaderpass; // number of postshaderpasses - qboolean colormapping; + qbool colormapping; rtexture_t *basetexture; // original texture without pants/shirt/glow rtexture_t *pantstexture; // pants only (in greyscale) rtexture_t *shirttexture; // shirt only (in greyscale) @@ -572,7 +573,8 @@ typedef struct texture_s // MATERIALFLAG_MODELLIGHT uses these parameters float render_modellight_ambient[3]; float render_modellight_diffuse[3]; - float render_modellight_lightdir[3]; + float render_modellight_lightdir_world[3]; + float render_modellight_lightdir_local[3]; float render_modellight_specular[3]; // lightmap rendering (not MATERIALFLAG_MODELLIGHT) float render_lightmap_ambient[3]; @@ -590,7 +592,6 @@ typedef struct texture_s int customblendfunc[2]; // q3bsp - char name[64]; int surfaceflags; int supercontents; @@ -632,8 +633,10 @@ typedef struct texture_s // diffuse and ambient float rtlightambient; - // used by Mod_Mesh_GetTexture for drawflag overrides, to disambiguate the same texture with different drawflags - int drawflag; + // used by Mod_Mesh_GetTexture for drawflag and materialflag overrides, to disambiguate the same texture with different hints + int mesh_drawflag; + int mesh_defaulttexflags; + int mesh_defaultmaterialflags; } texture_t; @@ -685,10 +688,6 @@ typedef struct msurface_s struct q3deffect_s *effect; // q3bsp // mesh information for collisions (only used by q3bsp curves) int num_firstcollisiontriangle; - int *deprecatedq3data_collisionelement3i; // q3bsp - float *deprecatedq3data_collisionvertex3f; // q3bsp - float *deprecatedq3data_collisionbbox6f; // collision optimization - contains combined bboxes of every data_collisionstride triangles - float *deprecatedq3data_bbox6f; // collision optimization - contains combined bboxes of every data_collisionstride triangles // surfaces own ranges of vertices and triangles in the model->surfmesh int num_triangles; // number of triangles @@ -699,13 +698,9 @@ typedef struct msurface_s // mesh information for collisions (only used by q3bsp curves) int num_collisiontriangles; // q3bsp int num_collisionvertices; // q3bsp - int deprecatedq3num_collisionbboxstride; - int deprecatedq3num_bboxstride; - // FIXME: collisionmarkframe should be kept in a separate array - int deprecatedq3collisionmarkframe; // q3bsp // don't collide twice in one trace // used by Mod_Mesh_Finalize when building sortedmodelsurfaces - qboolean included; + qbool included; } msurface_t; @@ -737,17 +732,17 @@ model_brush_lightstyleinfo_t; typedef struct model_brush_s { // true if this model is a HalfLife .bsp file - qboolean ishlbsp; + qbool ishlbsp; // true if this model is a BSP2rmqe .bsp file (expanded 32bit bsp format for rmqe) - qboolean isbsp2rmqe; + qbool isbsp2rmqe; // true if this model is a BSP2 .bsp file (expanded 32bit bsp format for DarkPlaces, others?) - qboolean isbsp2; + qbool isbsp2; // true if this model is a Quake2 .bsp file (IBSP38) - qboolean isq2bsp; + qbool isq2bsp; // true if this model is a Quake3 .bsp file (IBSP46) - qboolean isq3bsp; + qbool isq3bsp; // true if this model is a Quake1/Quake2 .bsp file where skymasking capability exists - qboolean skymasking; + qbool skymasking; // string of entity definitions (.map format) char *entities; @@ -816,7 +811,7 @@ typedef struct model_brush_s int (*SuperContentsFromNativeContents)(int nativecontents); int (*NativeContentsFromSuperContents)(int supercontents); unsigned char *(*GetPVS)(struct model_s *model, const vec3_t p); - int (*FatPVS)(struct model_s *model, const vec3_t org, vec_t radius, unsigned char *pvsbuffer, int pvsbufferlength, qboolean merge); + int (*FatPVS)(struct model_s *model, const vec3_t org, vec_t radius, unsigned char *pvsbuffer, int pvsbufferlength, qbool merge); int (*BoxTouchingPVS)(struct model_s *model, const unsigned char *pvs, const vec3_t mins, const vec3_t maxs); int (*BoxTouchingLeafPVS)(struct model_s *model, const unsigned char *pvs, const vec3_t mins, const vec3_t maxs); int (*BoxTouchingVisibleLeafs)(struct model_s *model, const unsigned char *visibleleafs, const vec3_t mins, const vec3_t maxs); @@ -828,14 +823,14 @@ typedef struct model_brush_s void (*AmbientSoundLevelsForPoint)(struct model_s *model, const vec3_t p, unsigned char *out, int outsize); void (*RoundUpToHullSize)(struct model_s *cmodel, const vec3_t inmins, const vec3_t inmaxs, vec3_t outmins, vec3_t outmaxs); // trace a line of sight through this model (returns false if the line if sight is definitely blocked) - qboolean (*TraceLineOfSight)(struct model_s *model, const vec3_t start, const vec3_t end, const vec3_t acceptmins, const vec3_t acceptmaxs); + qbool (*TraceLineOfSight)(struct model_s *model, const vec3_t start, const vec3_t end, const vec3_t acceptmins, const vec3_t acceptmaxs); char skybox[MAX_QPATH]; skinframe_t *solidskyskinframe; skinframe_t *alphaskyskinframe; - qboolean supportwateralpha; + qbool supportwateralpha; // QuakeWorld int qw_md4sum; @@ -877,16 +872,10 @@ typedef struct model_brushq1_s // this contains bytes that are 1 if a surface needs its lightmap rebuilt unsigned char *lightmapupdateflags; - qboolean firstrender; // causes all surface lightmaps to be loaded in first frame + qbool firstrender; // causes all surface lightmaps to be loaded in first frame } model_brushq1_t; -typedef struct model_brushq2_s -{ - int dummy; // MSVC can't handle an empty struct -} -model_brushq2_t; - typedef struct model_brushq3_s { int num_models; @@ -917,7 +906,7 @@ typedef struct model_brushq3_s rtexture_t **data_lightmaps; rtexture_t **data_deluxemaps; - // voxel light data with directional shading + // voxel light data with directional shading - data for cpu sampling of it... int num_lightgrid; q3dlightgrid_t *data_lightgrid; // size of each cell (may vary by map, typically 64 64 128) @@ -930,14 +919,18 @@ typedef struct model_brushq3_s int num_lightgrid_isize[3]; // transform modelspace coordinates to lightgrid index matrix4x4_t num_lightgrid_indexfromworld; + // parameters for fragment shader to sample the texture version of it: + int lightgridtexturesize[3]; // 3 layers tall (ambient, lightcolor, lightdir) + matrix4x4_t lightgridworldtotexturematrix; + rtexture_t *lightgridtexture; // true if this q3bsp file has been detected as using deluxemapping // (lightmap texture pairs, every odd one is never directly refernced, // and contains lighting normals, not colors) - qboolean deluxemapping; + qbool deluxemapping; // true if the detected deluxemaps are the modelspace kind, rather than // the faster tangentspace kind - qboolean deluxemapping_modelspace; + qbool deluxemapping_modelspace; // size of lightmaps (128 by default, but may be another poweroftwo if // external lightmaps are used (q3map2 -lightmapsize) int lightmapsize; @@ -952,9 +945,9 @@ typedef struct model_s // name and path of model, for example "progs/player.mdl" char name[MAX_QPATH]; // model needs to be loaded if this is false - qboolean loaded; + qbool loaded; // set if the model is used in current map, models which are not, are purged - qboolean used; + qbool used; // CRC of the file this model was loaded from, to reload if changed unsigned int crc; // mod_brush, mod_alias, mod_sprite @@ -1012,8 +1005,8 @@ typedef struct model_s int max_textures; // preallocated for expansion (Mod_Mesh_*) int num_texturesperskin; texture_t *data_textures; - qboolean wantnormals; - qboolean wanttangents; + qbool wantnormals; + qbool wanttangents; // surfaces of this model int num_surfaces; int max_surfaces; // preallocated for expansion (Mod_Mesh_*) @@ -1043,7 +1036,7 @@ typedef struct model_s // draw depth into a shadowmap void(*DrawShadowMap)(int side, struct entity_render_s *ent, const vec3_t relativelightorigin, const vec3_t relativelightdirection, float lightradius, int numsurfaces, const int *surfacelist, const unsigned char *surfacesides, const vec3_t lightmins, const vec3_t lightmaxs); // gathers info on which clusters and surfaces are lit by light, as well as calculating a bounding box - void(*GetLightInfo)(struct entity_render_s *ent, vec3_t relativelightorigin, float lightradius, vec3_t outmins, vec3_t outmaxs, int *outleaflist, unsigned char *outleafpvs, int *outnumleafspointer, int *outsurfacelist, unsigned char *outsurfacepvs, int *outnumsurfacespointer, unsigned char *outshadowtrispvs, unsigned char *outlighttrispvs, unsigned char *visitingleafpvs, int numfrustumplanes, const mplane_t *frustumplanes, qboolean noocclusion); + void(*GetLightInfo)(struct entity_render_s *ent, vec3_t relativelightorigin, float lightradius, vec3_t outmins, vec3_t outmaxs, int *outleaflist, unsigned char *outleafpvs, int *outnumleafspointer, int *outsurfacelist, unsigned char *outsurfacepvs, int *outnumsurfacespointer, unsigned char *outshadowtrispvs, unsigned char *outlighttrispvs, unsigned char *visitingleafpvs, int numfrustumplanes, const mplane_t *frustumplanes, qbool noocclusion); // draw the lighting on a model (through stencil) void(*DrawLight)(struct entity_render_s *ent, int numsurfaces, const int *surfacelist, const unsigned char *trispvs); // trace a box against this model @@ -1061,14 +1054,15 @@ typedef struct model_s model_sprite_t sprite; model_brush_t brush; model_brushq1_t brushq1; - model_brushq2_t brushq2; model_brushq3_t brushq3; // flags this model for offseting sounds to the model center (used by brush models) int soundfromcenter; // if set, the model contains light information (lightmap, or vertexlight) - qboolean lit; + qbool lit; float lightmapscale; + + qbool nolerp; } dp_model_t; @@ -1077,6 +1071,15 @@ dp_model_t; // model loading extern dp_model_t *loadmodel; extern unsigned char *mod_base; + +typedef struct modloader_s +{ + const char *extension; + const char *header; + size_t headersize; // The header might not be NULL terminated + void (*Load)(dp_model_t *, void *, void *); +} modloader_t; + // sky/water subdivision //extern cvar_t gl_subdivide_size; // texture fullbrights @@ -1091,12 +1094,15 @@ extern cvar_t mod_q3shader_default_polygonfactor; extern cvar_t mod_q3shader_default_refractive_index; extern cvar_t mod_q3shader_force_addalpha; extern cvar_t mod_q3shader_force_terrain_alphaflag; +extern cvar_t mod_q3bsp_lightgrid_texture; +extern cvar_t mod_q3bsp_lightgrid_world_surfaces; +extern cvar_t mod_q3bsp_lightgrid_bsp_surfaces; void Mod_Init (void); void Mod_Reload (void); -dp_model_t *Mod_LoadModel(dp_model_t *mod, qboolean crash, qboolean checkdisk); +dp_model_t *Mod_LoadModel(dp_model_t *mod, qbool crash, qbool checkdisk); dp_model_t *Mod_FindName (const char *name, const char *parentname); -dp_model_t *Mod_ForName (const char *name, qboolean crash, qboolean checkdisk, const char *parentname); +dp_model_t *Mod_ForName (const char *name, qbool crash, qbool checkdisk, const char *parentname); void Mod_UnloadModel (dp_model_t *mod); void Mod_ClearUsed(void); @@ -1107,11 +1113,11 @@ extern dp_model_t *loadmodel; extern char loadname[32]; // for hunk tags int Mod_BuildVertexRemapTableFromElements(int numelements, const int *elements, int numvertices, int *remapvertices); -void Mod_BuildNormals(int firstvertex, int numvertices, int numtriangles, const float *vertex3f, const int *elements, float *normal3f, qboolean areaweighting); -void Mod_BuildTextureVectorsFromNormals(int firstvertex, int numvertices, int numtriangles, const float *vertex3f, const float *texcoord2f, const float *normal3f, const int *elements, float *svector3f, float *tvector3f, qboolean areaweighting); +void Mod_BuildNormals(int firstvertex, int numvertices, int numtriangles, const float *vertex3f, const int *elements, float *normal3f, qbool areaweighting); +void Mod_BuildTextureVectorsFromNormals(int firstvertex, int numvertices, int numtriangles, const float *vertex3f, const float *texcoord2f, const float *normal3f, const int *elements, float *svector3f, float *tvector3f, qbool areaweighting); -qboolean Mod_ValidateElements(int *element3i, unsigned short *element3s, int numtriangles, int firstvertex, int numvertices, const char *filename, int fileline); -void Mod_AllocSurfMesh(mempool_t *mempool, int numvertices, int numtriangles, qboolean lightmapoffsets, qboolean vertexcolors); +qbool Mod_ValidateElements(int *element3i, unsigned short *element3s, int numtriangles, int firstvertex, int numvertices, const char *filename, int fileline); +void Mod_AllocSurfMesh(mempool_t *mempool, int numvertices, int numtriangles, qbool lightmapoffsets, qbool vertexcolors); void Mod_MakeSortedSurfaces(dp_model_t *mod); // called specially by brush model loaders before generating submodels @@ -1122,7 +1128,7 @@ shadowmesh_t *Mod_ShadowMesh_Alloc(mempool_t *mempool, int maxverts, int maxtria int Mod_ShadowMesh_AddVertex(shadowmesh_t *mesh, const float *vertex3f); void Mod_ShadowMesh_AddMesh(shadowmesh_t *mesh, const float *vertex3f, int numtris, const int *element3i); shadowmesh_t *Mod_ShadowMesh_Begin(mempool_t *mempool, int maxverts, int maxtriangles); -shadowmesh_t *Mod_ShadowMesh_Finish(shadowmesh_t *firstmesh, qboolean createvbo); +shadowmesh_t *Mod_ShadowMesh_Finish(shadowmesh_t *firstmesh, qbool createvbo); void Mod_ShadowMesh_CalcBBox(shadowmesh_t *firstmesh, vec3_t mins, vec3_t maxs, vec3_t center, float *radius); void Mod_ShadowMesh_Free(shadowmesh_t *mesh); @@ -1130,14 +1136,14 @@ void Mod_CreateCollisionMesh(dp_model_t *mod); void Mod_FreeQ3Shaders(void); void Mod_LoadQ3Shaders(void); -q3shaderinfo_t *Mod_LookupQ3Shader(const char *name); -qboolean Mod_LoadTextureFromQ3Shader(mempool_t *mempool, const char *modelname, texture_t *texture, const char *name, qboolean warnmissing, qboolean fallback, int defaulttexflags, int defaultmaterialflags); +shader_t *Mod_LookupQ3Shader(const char *name); +qbool Mod_LoadTextureFromQ3Shader(mempool_t *mempool, const char *modelname, texture_t *texture, const char *name, qbool warnmissing, qbool fallback, int defaulttexflags, int defaultmaterialflags); texture_shaderpass_t *Mod_CreateShaderPass(mempool_t *mempool, skinframe_t *skinframe); texture_shaderpass_t *Mod_CreateShaderPassFromQ3ShaderLayer(mempool_t *mempool, const char *modelname, q3shaderinfo_layer_t *layer, int layerindex, int texflags, const char *texturename); /// Sets up a material to render the provided skinframe. See also R_SkinFrame_LoadInternalBGRA. void Mod_LoadCustomMaterial(mempool_t *mempool, texture_t *texture, const char *name, int supercontents, int materialflags, skinframe_t *skinframe); /// Removes all shaderpasses from material, and optionally deletes the textures in the skinframes. -void Mod_UnloadCustomMaterial(texture_t *texture, qboolean purgeskins); +void Mod_UnloadCustomMaterial(texture_t *texture, qbool purgeskins); extern cvar_t r_mipskins; extern cvar_t r_mipnormalmaps; @@ -1185,7 +1191,7 @@ mod_alloclightmap_state_t; void Mod_AllocLightmap_Init(mod_alloclightmap_state_t *state, mempool_t *mempool, int width, int height); void Mod_AllocLightmap_Free(mod_alloclightmap_state_t *state); void Mod_AllocLightmap_Reset(mod_alloclightmap_state_t *state); -qboolean Mod_AllocLightmap_Block(mod_alloclightmap_state_t *state, int blockwidth, int blockheight, int *outx, int *outy); +qbool Mod_AllocLightmap_Block(mod_alloclightmap_state_t *state, int blockwidth, int blockheight, int *outx, int *outy); // bsp models void Mod_BrushInit(void); @@ -1198,23 +1204,23 @@ int Mod_Q2BSP_NativeContentsFromSuperContents(int supercontents); // a lot of model formats use the Q1BSP code, so here are the prototypes... struct entity_render_s; -void R_Q1BSP_DrawAddWaterPlanes(struct entity_render_s *ent); -void R_Q1BSP_DrawSky(struct entity_render_s *ent); -void R_Q1BSP_Draw(struct entity_render_s *ent); -void R_Q1BSP_DrawDepth(struct entity_render_s *ent); -void R_Q1BSP_DrawDebug(struct entity_render_s *ent); -void R_Q1BSP_DrawPrepass(struct entity_render_s *ent); -void R_Q1BSP_GetLightInfo(struct entity_render_s *ent, vec3_t relativelightorigin, float lightradius, vec3_t outmins, vec3_t outmaxs, int *outleaflist, unsigned char *outleafpvs, int *outnumleafspointer, int *outsurfacelist, unsigned char *outsurfacepvs, int *outnumsurfacespointer, unsigned char *outshadowtrispvs, unsigned char *outlighttrispvs, unsigned char *visitingleafpvs, int numfrustumplanes, const mplane_t *frustumplanes, qboolean noocclusion); -void R_Q1BSP_CompileShadowMap(struct entity_render_s *ent, vec3_t relativelightorigin, vec3_t relativelightdirection, float lightradius, int numsurfaces, const int *surfacelist); -void R_Q1BSP_DrawShadowMap(int side, struct entity_render_s *ent, const vec3_t relativelightorigin, const vec3_t relativelightdirection, float lightradius, int modelnumsurfaces, const int *modelsurfacelist, const unsigned char *surfacesides, const vec3_t lightmins, const vec3_t lightmaxs); -void R_Q1BSP_DrawLight(struct entity_render_s *ent, int numsurfaces, const int *surfacelist, const unsigned char *trispvs); +void R_Mod_DrawAddWaterPlanes(struct entity_render_s *ent); +void R_Mod_DrawSky(struct entity_render_s *ent); +void R_Mod_Draw(struct entity_render_s *ent); +void R_Mod_DrawDepth(struct entity_render_s *ent); +void R_Mod_DrawDebug(struct entity_render_s *ent); +void R_Mod_DrawPrepass(struct entity_render_s *ent); +void R_Mod_GetLightInfo(struct entity_render_s *ent, vec3_t relativelightorigin, float lightradius, vec3_t outmins, vec3_t outmaxs, int *outleaflist, unsigned char *outleafpvs, int *outnumleafspointer, int *outsurfacelist, unsigned char *outsurfacepvs, int *outnumsurfacespointer, unsigned char *outshadowtrispvs, unsigned char *outlighttrispvs, unsigned char *visitingleafpvs, int numfrustumplanes, const mplane_t *frustumplanes, qbool noocclusion); +void R_Mod_CompileShadowMap(struct entity_render_s *ent, vec3_t relativelightorigin, vec3_t relativelightdirection, float lightradius, int numsurfaces, const int *surfacelist); +void R_Mod_DrawShadowMap(int side, struct entity_render_s *ent, const vec3_t relativelightorigin, const vec3_t relativelightdirection, float lightradius, int modelnumsurfaces, const int *modelsurfacelist, const unsigned char *surfacesides, const vec3_t lightmins, const vec3_t lightmaxs); +void R_Mod_DrawLight(struct entity_render_s *ent, int numsurfaces, const int *surfacelist, const unsigned char *trispvs); // dynamic mesh building (every frame) for debugging and other uses void Mod_Mesh_Create(dp_model_t *mod, const char *name); void Mod_Mesh_Destroy(dp_model_t *mod); void Mod_Mesh_Reset(dp_model_t *mod); -texture_t *Mod_Mesh_GetTexture(dp_model_t *mod, const char *name, int defaultdrawflags, int defaulttexflags, int addmaterialflags); -msurface_t *Mod_Mesh_AddSurface(dp_model_t *mod, texture_t *tex, qboolean batchwithprevioussurface); +texture_t *Mod_Mesh_GetTexture(dp_model_t *mod, const char *name, int defaultdrawflags, int defaulttexflags, int defaultmaterialflags); +msurface_t *Mod_Mesh_AddSurface(dp_model_t *mod, texture_t *tex, qbool batchwithprevioussurface); int Mod_Mesh_IndexForVertex(dp_model_t *mod, msurface_t *surf, float x, float y, float z, float nx, float ny, float nz, float s, float t, float u, float v, float r, float g, float b, float a); void Mod_Mesh_AddTriangle(dp_model_t *mod, msurface_t *surf, int e0, int e1, int e2); void Mod_Mesh_Validate(dp_model_t *mod); @@ -1226,10 +1232,10 @@ void Mod_CollisionBIH_TraceLine(dp_model_t *model, const struct frameblend_s *fr void Mod_CollisionBIH_TraceBox(dp_model_t *model, const struct frameblend_s *frameblend, const skeleton_t *skeleton, struct trace_s *trace, const vec3_t start, const vec3_t boxmins, const vec3_t boxmaxs, const vec3_t end, int hitsupercontentsmask, int skipsupercontentsmask, int skipmaterialflagsmask); void Mod_CollisionBIH_TraceBrush(dp_model_t *model, const struct frameblend_s *frameblend, const skeleton_t *skeleton, struct trace_s *trace, struct colbrushf_s *start, struct colbrushf_s *end, int hitsupercontentsmask, int skipsupercontentsmask, int skipmaterialflagsmask); void Mod_CollisionBIH_TracePoint_Mesh(dp_model_t *model, const struct frameblend_s *frameblend, const skeleton_t *skeleton, struct trace_s *trace, const vec3_t start, int hitsupercontentsmask, int skipsupercontentsmask, int skipmaterialflagsmask); -qboolean Mod_CollisionBIH_TraceLineOfSight(struct model_s *model, const vec3_t start, const vec3_t end, const vec3_t acceptmins, const vec3_t acceptmaxs); +qbool Mod_CollisionBIH_TraceLineOfSight(struct model_s *model, const vec3_t start, const vec3_t end, const vec3_t acceptmins, const vec3_t acceptmaxs); int Mod_CollisionBIH_PointSuperContents(struct model_s *model, int frame, const vec3_t point); int Mod_CollisionBIH_PointSuperContents_Mesh(struct model_s *model, int frame, const vec3_t point); -bih_t *Mod_MakeCollisionBIH(dp_model_t *model, qboolean userendersurfaces, bih_t *out); +bih_t *Mod_MakeCollisionBIH(dp_model_t *model, qbool userendersurfaces, bih_t *out); // alias models struct frameblend_s; @@ -1245,6 +1251,9 @@ void Mod_Skeletal_FreeBuffers(void); void Mod_SpriteInit(void); // loaders +void Mod_2PSB_Load(dp_model_t *mod, void *buffer, void *bufferend); +void Mod_BSP2_Load(dp_model_t *mod, void *buffer, void *bufferend); +void Mod_HLBSP_Load(dp_model_t *mod, void *buffer, void *bufferend); void Mod_Q1BSP_Load(dp_model_t *mod, void *buffer, void *bufferend); void Mod_IBSP_Load(dp_model_t *mod, void *buffer, void *bufferend); void Mod_MAP_Load(dp_model_t *mod, void *buffer, void *bufferend);