X-Git-Url: http://de.git.xonotic.org/?a=blobdiff_plain;f=model_shared.h;h=0d3914edab8ce4199ad91a9d5c19a54401f4b4b5;hb=3307772b098f1831642177bc53c975b402d57c4f;hp=9ccae5c312094ffb1990b831998448bedd1d5d2f;hpb=4e1f3f76d5fe7befe20034a730630c314d45956b;p=xonotic%2Fdarkplaces.git diff --git a/model_shared.h b/model_shared.h index 9ccae5c3..0d3914ed 100644 --- a/model_shared.h +++ b/model_shared.h @@ -867,8 +867,8 @@ typedef struct model_brush_s shadowmesh_t *collisionmesh; // common functions - int (*SuperContentsFromNativeContents)(struct model_s *model, int nativecontents); - int (*NativeContentsFromSuperContents)(struct model_s *model, int supercontents); + 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 (*BoxTouchingPVS)(struct model_s *model, const unsigned char *pvs, const vec3_t mins, const vec3_t maxs); @@ -1183,11 +1183,13 @@ 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(texture_t *texture, const char *name, qboolean warnmissing, qboolean fallback, int defaulttexflags); -texture_shaderpass_t *Mod_CreateShaderPass(skinframe_t *skinframe); -texture_shaderpass_t *Mod_CreateShaderPassFromQ3ShaderLayer(q3shaderinfo_layer_t *layer, int layerindex, int texflags, const char *texturename); +qboolean Mod_LoadTextureFromQ3Shader(mempool_t *mempool, const char *modelname, texture_t *texture, const char *name, qboolean warnmissing, qboolean fallback, int defaulttexflags); +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(texture_t *texture, const char *name, int supercontents, int materialflags, skinframe_t *skinframe); +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); extern cvar_t r_mipskins; extern cvar_t r_mipnormalmaps; @@ -1240,11 +1242,11 @@ qboolean Mod_AllocLightmap_Block(mod_alloclightmap_state_t *state, int blockwidt // bsp models void Mod_BrushInit(void); // used for talking to the QuakeC mainly -int Mod_Q1BSP_NativeContentsFromSuperContents(struct model_s *model, int supercontents); -int Mod_Q1BSP_SuperContentsFromNativeContents(struct model_s *model, int nativecontents); +int Mod_Q1BSP_NativeContentsFromSuperContents(int supercontents); +int Mod_Q1BSP_SuperContentsFromNativeContents(int nativecontents); // used for loading wal files in Mod_LoadTextureFromQ3Shader -int Mod_Q2BSP_SuperContentsFromNativeContents(dp_model_t *model, int nativecontents); -int Mod_Q2BSP_NativeContentsFromSuperContents(dp_model_t *model, int supercontents); +int Mod_Q2BSP_SuperContentsFromNativeContents(int nativecontents); +int Mod_Q2BSP_NativeContentsFromSuperContents(int supercontents); // a lot of model formats use the Q1BSP code, so here are the prototypes... struct entity_render_s; @@ -1265,8 +1267,8 @@ void R_Q1BSP_DrawLight(struct entity_render_s *ent, int numsurfaces, const int * 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); -msurface_t *Mod_Mesh_AddSurface(dp_model_t *mod, texture_t *tex); +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); 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_Finalize(dp_model_t *mod);