]> git.xonotic.org Git - xonotic/darkplaces.git/blobdiff - model_alias.c
Rename src_command to src_local, to clarify its meaning
[xonotic/darkplaces.git] / model_alias.c
index 22863519406f3ccefb25c078597c72db9dd17e04..5aa98c530e5fc55d7da386c33f114c59e64cd9ce 100644 (file)
@@ -786,7 +786,7 @@ static void Mod_MDLMD2MD3_TraceLine(dp_model_t *model, const frameblend_t *frame
        else
                vertex3f = model->surfmesh.data_vertex3f;
        for (i = 0, surface = model->data_surfaces;i < model->num_surfaces;i++, surface++)
-               Collision_TraceLineTriangleMeshFloat(trace, start, end, model->surfmesh.num_triangles, model->surfmesh.data_element3i, vertex3f, 0, NULL, SUPERCONTENTS_SOLID | (surface->texture->basematerialflags & MATERIALFLAGMASK_TRANSLUCENT ? 0 : SUPERCONTENTS_OPAQUE), 0, surface->texture, segmentmins, segmentmaxs);
+               Collision_TraceLineTriangleMeshFloat(trace, start, end, surface->num_triangles, model->surfmesh.data_element3i + 3 * surface->num_firsttriangle, vertex3f, 0, NULL, SUPERCONTENTS_SOLID | (surface->texture->basematerialflags & MATERIALFLAGMASK_TRANSLUCENT ? 0 : SUPERCONTENTS_OPAQUE), 0, surface->texture, segmentmins, segmentmaxs);
        if (freevertex3f)
                Mem_Free(freevertex3f);
 }
@@ -840,7 +840,7 @@ static void Mod_MDLMD2MD3_TraceBox(dp_model_t *model, const frameblend_t *frameb
        Collision_BrushForBox(&thisbrush_end, boxendmins, boxendmaxs, 0, 0, NULL);
        model->AnimateVertices(model, frameblend, skeleton, vertex3f, NULL, NULL, NULL);
        for (i = 0, surface = model->data_surfaces;i < model->num_surfaces;i++, surface++)
-               Collision_TraceBrushTriangleMeshFloat(trace, &thisbrush_start.brush, &thisbrush_end.brush, model->surfmesh.num_triangles, model->surfmesh.data_element3i, vertex3f, 0, NULL, SUPERCONTENTS_SOLID | (surface->texture->basematerialflags & MATERIALFLAGMASK_TRANSLUCENT ? 0 : SUPERCONTENTS_OPAQUE), 0, surface->texture, segmentmins, segmentmaxs);
+               Collision_TraceBrushTriangleMeshFloat(trace, &thisbrush_start.brush, &thisbrush_end.brush, surface->num_triangles, model->surfmesh.data_element3i + 3 * surface->num_firsttriangle, vertex3f, 0, NULL, SUPERCONTENTS_SOLID | (surface->texture->basematerialflags & MATERIALFLAGMASK_TRANSLUCENT ? 0 : SUPERCONTENTS_OPAQUE), 0, surface->texture, segmentmins, segmentmaxs);
        if (vertex3f != vertex3fbuf)
                Mem_Free(vertex3f);
 }
@@ -966,7 +966,7 @@ void Mod_BuildAliasSkinsFromSkinFiles(texture_t *skin, skinfile_t *skinfile, con
                Mod_LoadTextureFromQ3Shader(loadmodel->mempool, loadmodel->name, skin, stripbuf, true, true, (r_mipskins.integer ? TEXF_MIPMAP : 0) | TEXF_ALPHA | TEXF_PICMIP | TEXF_COMPRESS, MATERIALFLAG_WALL);
        }
 }
-
+extern cvar_t r_nolerp_list;
 #define BOUNDI(VALUE,MIN,MAX) if (VALUE < MIN || VALUE >= MAX) Host_Error("model %s has an invalid ##VALUE (%d exceeds %d - %d)", loadmodel->name, VALUE, MIN, MAX);
 #define BOUNDF(VALUE,MIN,MAX) if (VALUE < MIN || VALUE >= MAX) Host_Error("model %s has an invalid ##VALUE (%f exceeds %f - %f)", loadmodel->name, VALUE, MIN, MAX);
 void Mod_IDP0_Load(dp_model_t *mod, void *buffer, void *bufferend)
@@ -1006,13 +1006,13 @@ void Mod_IDP0_Load(dp_model_t *mod, void *buffer, void *bufferend)
        loadmodel->type = mod_alias;
        loadmodel->DrawSky = NULL;
        loadmodel->DrawAddWaterPlanes = NULL;
-       loadmodel->Draw = R_Q1BSP_Draw;
-       loadmodel->DrawDepth = R_Q1BSP_DrawDepth;
-       loadmodel->DrawDebug = R_Q1BSP_DrawDebug;
-       loadmodel->DrawPrepass = R_Q1BSP_DrawPrepass;
-       loadmodel->CompileShadowMap = R_Q1BSP_CompileShadowMap;
-       loadmodel->DrawShadowMap = R_Q1BSP_DrawShadowMap;
-       loadmodel->DrawLight = R_Q1BSP_DrawLight;
+       loadmodel->Draw = R_Mod_Draw;
+       loadmodel->DrawDepth = R_Mod_DrawDepth;
+       loadmodel->DrawDebug = R_Mod_DrawDebug;
+       loadmodel->DrawPrepass = R_Mod_DrawPrepass;
+       loadmodel->CompileShadowMap = R_Mod_CompileShadowMap;
+       loadmodel->DrawShadowMap = R_Mod_DrawShadowMap;
+       loadmodel->DrawLight = R_Mod_DrawLight;
        loadmodel->TraceBox = Mod_MDLMD2MD3_TraceBox;
        loadmodel->TraceLine = Mod_MDLMD2MD3_TraceLine;
        // FIXME add TraceBrush!
@@ -1044,6 +1044,9 @@ void Mod_IDP0_Load(dp_model_t *mod, void *buffer, void *bufferend)
        i = LittleLong (pinmodel->flags);
        loadmodel->effects = ((i & 255) << 24) | (i & 0x00FFFF00);
 
+       if (strstr(r_nolerp_list.string, loadmodel->name))
+               loadmodel->nolerp = true;
+
        for (i = 0;i < 3;i++)
        {
                loadmodel->surfmesh.num_morphmdlframescale[i] = LittleFloat (pinmodel->scale[i]);
@@ -1322,9 +1325,9 @@ void Mod_IDP0_Load(dp_model_t *mod, void *buffer, void *bufferend)
        for (i = 0;i < loadmodel->num_textures;i++)
        {
                if (loadmodel->data_textures[i].basematerialflags & (MATERIALFLAG_SKY))
-                       mod->DrawSky = R_Q1BSP_DrawSky;
+                       mod->DrawSky = R_Mod_DrawSky;
                if (loadmodel->data_textures[i].basematerialflags & (MATERIALFLAG_WATERSHADER | MATERIALFLAG_REFRACTION | MATERIALFLAG_REFLECTION | MATERIALFLAG_CAMERA))
-                       mod->DrawAddWaterPlanes = R_Q1BSP_DrawAddWaterPlanes;
+                       mod->DrawAddWaterPlanes = R_Mod_DrawAddWaterPlanes;
        }
 }
 
@@ -1362,13 +1365,13 @@ void Mod_IDP2_Load(dp_model_t *mod, void *buffer, void *bufferend)
        loadmodel->type = mod_alias;
        loadmodel->DrawSky = NULL;
        loadmodel->DrawAddWaterPlanes = NULL;
-       loadmodel->Draw = R_Q1BSP_Draw;
-       loadmodel->DrawDepth = R_Q1BSP_DrawDepth;
-       loadmodel->DrawDebug = R_Q1BSP_DrawDebug;
-       loadmodel->DrawPrepass = R_Q1BSP_DrawPrepass;
-       loadmodel->CompileShadowMap = R_Q1BSP_CompileShadowMap;
-       loadmodel->DrawShadowMap = R_Q1BSP_DrawShadowMap;
-       loadmodel->DrawLight = R_Q1BSP_DrawLight;
+       loadmodel->Draw = R_Mod_Draw;
+       loadmodel->DrawDepth = R_Mod_DrawDepth;
+       loadmodel->DrawDebug = R_Mod_DrawDebug;
+       loadmodel->DrawPrepass = R_Mod_DrawPrepass;
+       loadmodel->CompileShadowMap = R_Mod_CompileShadowMap;
+       loadmodel->DrawShadowMap = R_Mod_DrawShadowMap;
+       loadmodel->DrawLight = R_Mod_DrawLight;
        loadmodel->TraceBox = Mod_MDLMD2MD3_TraceBox;
        loadmodel->TraceLine = Mod_MDLMD2MD3_TraceLine;
        loadmodel->PointSuperContents = NULL;
@@ -1586,9 +1589,9 @@ void Mod_IDP2_Load(dp_model_t *mod, void *buffer, void *bufferend)
        for (i = 0;i < loadmodel->num_textures;i++)
        {
                if (loadmodel->data_textures[i].basematerialflags & (MATERIALFLAG_SKY))
-                       mod->DrawSky = R_Q1BSP_DrawSky;
+                       mod->DrawSky = R_Mod_DrawSky;
                if (loadmodel->data_textures[i].basematerialflags & (MATERIALFLAG_WATERSHADER | MATERIALFLAG_REFRACTION | MATERIALFLAG_REFLECTION | MATERIALFLAG_CAMERA))
-                       mod->DrawAddWaterPlanes = R_Q1BSP_DrawAddWaterPlanes;
+                       mod->DrawAddWaterPlanes = R_Mod_DrawAddWaterPlanes;
        }
 }
 
@@ -1621,13 +1624,13 @@ void Mod_IDP3_Load(dp_model_t *mod, void *buffer, void *bufferend)
        loadmodel->type = mod_alias;
        loadmodel->DrawSky = NULL;
        loadmodel->DrawAddWaterPlanes = NULL;
-       loadmodel->Draw = R_Q1BSP_Draw;
-       loadmodel->DrawDepth = R_Q1BSP_DrawDepth;
-       loadmodel->DrawDebug = R_Q1BSP_DrawDebug;
-       loadmodel->DrawPrepass = R_Q1BSP_DrawPrepass;
-       loadmodel->CompileShadowMap = R_Q1BSP_CompileShadowMap;
-       loadmodel->DrawShadowMap = R_Q1BSP_DrawShadowMap;
-       loadmodel->DrawLight = R_Q1BSP_DrawLight;
+       loadmodel->Draw = R_Mod_Draw;
+       loadmodel->DrawDepth = R_Mod_DrawDepth;
+       loadmodel->DrawDebug = R_Mod_DrawDebug;
+       loadmodel->DrawPrepass = R_Mod_DrawPrepass;
+       loadmodel->CompileShadowMap = R_Mod_CompileShadowMap;
+       loadmodel->DrawShadowMap = R_Mod_DrawShadowMap;
+       loadmodel->DrawLight = R_Mod_DrawLight;
        loadmodel->TraceBox = Mod_MDLMD2MD3_TraceBox;
        loadmodel->TraceLine = Mod_MDLMD2MD3_TraceLine;
        loadmodel->PointSuperContents = NULL;
@@ -1776,9 +1779,9 @@ void Mod_IDP3_Load(dp_model_t *mod, void *buffer, void *bufferend)
        for (i = 0;i < loadmodel->num_textures;i++)
        {
                if (loadmodel->data_textures[i].basematerialflags & (MATERIALFLAG_SKY))
-                       mod->DrawSky = R_Q1BSP_DrawSky;
+                       mod->DrawSky = R_Mod_DrawSky;
                if (loadmodel->data_textures[i].basematerialflags & (MATERIALFLAG_WATERSHADER | MATERIALFLAG_REFRACTION | MATERIALFLAG_REFLECTION | MATERIALFLAG_CAMERA))
-                       mod->DrawAddWaterPlanes = R_Q1BSP_DrawAddWaterPlanes;
+                       mod->DrawAddWaterPlanes = R_Mod_DrawAddWaterPlanes;
        }
 }
 
@@ -1856,13 +1859,13 @@ void Mod_ZYMOTICMODEL_Load(dp_model_t *mod, void *buffer, void *bufferend)
 
        loadmodel->DrawSky = NULL;
        loadmodel->DrawAddWaterPlanes = NULL;
-       loadmodel->Draw = R_Q1BSP_Draw;
-       loadmodel->DrawDepth = R_Q1BSP_DrawDepth;
-       loadmodel->DrawDebug = R_Q1BSP_DrawDebug;
-       loadmodel->DrawPrepass = R_Q1BSP_DrawPrepass;
-       loadmodel->CompileShadowMap = R_Q1BSP_CompileShadowMap;
-       loadmodel->DrawShadowMap = R_Q1BSP_DrawShadowMap;
-       loadmodel->DrawLight = R_Q1BSP_DrawLight;
+       loadmodel->Draw = R_Mod_Draw;
+       loadmodel->DrawDepth = R_Mod_DrawDepth;
+       loadmodel->DrawDebug = R_Mod_DrawDebug;
+       loadmodel->DrawPrepass = R_Mod_DrawPrepass;
+       loadmodel->CompileShadowMap = R_Mod_CompileShadowMap;
+       loadmodel->DrawShadowMap = R_Mod_DrawShadowMap;
+       loadmodel->DrawLight = R_Mod_DrawLight;
        loadmodel->TraceBox = Mod_MDLMD2MD3_TraceBox;
        loadmodel->TraceLine = Mod_MDLMD2MD3_TraceLine;
        loadmodel->PointSuperContents = NULL;
@@ -2169,9 +2172,9 @@ void Mod_ZYMOTICMODEL_Load(dp_model_t *mod, void *buffer, void *bufferend)
        for (i = 0;i < loadmodel->num_textures;i++)
        {
                if (loadmodel->data_textures[i].basematerialflags & (MATERIALFLAG_SKY))
-                       mod->DrawSky = R_Q1BSP_DrawSky;
+                       mod->DrawSky = R_Mod_DrawSky;
                if (loadmodel->data_textures[i].basematerialflags & (MATERIALFLAG_WATERSHADER | MATERIALFLAG_REFRACTION | MATERIALFLAG_REFLECTION | MATERIALFLAG_CAMERA))
-                       mod->DrawAddWaterPlanes = R_Q1BSP_DrawAddWaterPlanes;
+                       mod->DrawAddWaterPlanes = R_Mod_DrawAddWaterPlanes;
        }
 }
 
@@ -2233,13 +2236,13 @@ void Mod_DARKPLACESMODEL_Load(dp_model_t *mod, void *buffer, void *bufferend)
 
        loadmodel->DrawSky = NULL;
        loadmodel->DrawAddWaterPlanes = NULL;
-       loadmodel->Draw = R_Q1BSP_Draw;
-       loadmodel->DrawDepth = R_Q1BSP_DrawDepth;
-       loadmodel->DrawDebug = R_Q1BSP_DrawDebug;
-       loadmodel->DrawPrepass = R_Q1BSP_DrawPrepass;
-       loadmodel->CompileShadowMap = R_Q1BSP_CompileShadowMap;
-       loadmodel->DrawShadowMap = R_Q1BSP_DrawShadowMap;
-       loadmodel->DrawLight = R_Q1BSP_DrawLight;
+       loadmodel->Draw = R_Mod_Draw;
+       loadmodel->DrawDepth = R_Mod_DrawDepth;
+       loadmodel->DrawDebug = R_Mod_DrawDebug;
+       loadmodel->DrawPrepass = R_Mod_DrawPrepass;
+       loadmodel->CompileShadowMap = R_Mod_CompileShadowMap;
+       loadmodel->DrawShadowMap = R_Mod_DrawShadowMap;
+       loadmodel->DrawLight = R_Mod_DrawLight;
        loadmodel->TraceBox = Mod_MDLMD2MD3_TraceBox;
        loadmodel->TraceLine = Mod_MDLMD2MD3_TraceLine;
        loadmodel->PointSuperContents = NULL;
@@ -2543,9 +2546,9 @@ void Mod_DARKPLACESMODEL_Load(dp_model_t *mod, void *buffer, void *bufferend)
        for (i = 0;i < loadmodel->num_textures;i++)
        {
                if (loadmodel->data_textures[i].basematerialflags & (MATERIALFLAG_SKY))
-                       mod->DrawSky = R_Q1BSP_DrawSky;
+                       mod->DrawSky = R_Mod_DrawSky;
                if (loadmodel->data_textures[i].basematerialflags & (MATERIALFLAG_WATERSHADER | MATERIALFLAG_REFRACTION | MATERIALFLAG_REFLECTION | MATERIALFLAG_CAMERA))
-                       mod->DrawAddWaterPlanes = R_Q1BSP_DrawAddWaterPlanes;
+                       mod->DrawAddWaterPlanes = R_Mod_DrawAddWaterPlanes;
        }
 }
 
@@ -2582,13 +2585,13 @@ void Mod_PSKMODEL_Load(dp_model_t *mod, void *buffer, void *bufferend)
        loadmodel->type = mod_alias;
        loadmodel->DrawSky = NULL;
        loadmodel->DrawAddWaterPlanes = NULL;
-       loadmodel->Draw = R_Q1BSP_Draw;
-       loadmodel->DrawDepth = R_Q1BSP_DrawDepth;
-       loadmodel->DrawDebug = R_Q1BSP_DrawDebug;
-       loadmodel->DrawPrepass = R_Q1BSP_DrawPrepass;
-       loadmodel->CompileShadowMap = R_Q1BSP_CompileShadowMap;
-       loadmodel->DrawShadowMap = R_Q1BSP_DrawShadowMap;
-       loadmodel->DrawLight = R_Q1BSP_DrawLight;
+       loadmodel->Draw = R_Mod_Draw;
+       loadmodel->DrawDepth = R_Mod_DrawDepth;
+       loadmodel->DrawDebug = R_Mod_DrawDebug;
+       loadmodel->DrawPrepass = R_Mod_DrawPrepass;
+       loadmodel->CompileShadowMap = R_Mod_CompileShadowMap;
+       loadmodel->DrawShadowMap = R_Mod_DrawShadowMap;
+       loadmodel->DrawLight = R_Mod_DrawLight;
        loadmodel->TraceBox = Mod_MDLMD2MD3_TraceBox;
        loadmodel->TraceLine = Mod_MDLMD2MD3_TraceLine;
        loadmodel->PointSuperContents = NULL;
@@ -3214,9 +3217,9 @@ void Mod_PSKMODEL_Load(dp_model_t *mod, void *buffer, void *bufferend)
        for (i = 0;i < loadmodel->num_textures;i++)
        {
                if (loadmodel->data_textures[i].basematerialflags & (MATERIALFLAG_SKY))
-                       mod->DrawSky = R_Q1BSP_DrawSky;
+                       mod->DrawSky = R_Mod_DrawSky;
                if (loadmodel->data_textures[i].basematerialflags & (MATERIALFLAG_WATERSHADER | MATERIALFLAG_REFRACTION | MATERIALFLAG_REFLECTION | MATERIALFLAG_CAMERA))
-                       mod->DrawAddWaterPlanes = R_Q1BSP_DrawAddWaterPlanes;
+                       mod->DrawAddWaterPlanes = R_Mod_DrawAddWaterPlanes;
        }
 }
 
@@ -3406,13 +3409,13 @@ void Mod_INTERQUAKEMODEL_Load(dp_model_t *mod, void *buffer, void *bufferend)
 
        loadmodel->DrawSky = NULL;
        loadmodel->DrawAddWaterPlanes = NULL;
-       loadmodel->Draw = R_Q1BSP_Draw;
-       loadmodel->DrawDepth = R_Q1BSP_DrawDepth;
-       loadmodel->DrawDebug = R_Q1BSP_DrawDebug;
-       loadmodel->DrawPrepass = R_Q1BSP_DrawPrepass;
-       loadmodel->CompileShadowMap = R_Q1BSP_CompileShadowMap;
-       loadmodel->DrawShadowMap = R_Q1BSP_DrawShadowMap;
-       loadmodel->DrawLight = R_Q1BSP_DrawLight;
+       loadmodel->Draw = R_Mod_Draw;
+       loadmodel->DrawDepth = R_Mod_DrawDepth;
+       loadmodel->DrawDebug = R_Mod_DrawDebug;
+       loadmodel->DrawPrepass = R_Mod_DrawPrepass;
+       loadmodel->CompileShadowMap = R_Mod_CompileShadowMap;
+       loadmodel->DrawShadowMap = R_Mod_DrawShadowMap;
+       loadmodel->DrawLight = R_Mod_DrawLight;
        loadmodel->TraceBox = Mod_MDLMD2MD3_TraceBox;
        loadmodel->TraceLine = Mod_MDLMD2MD3_TraceLine;
        loadmodel->PointSuperContents = NULL;
@@ -3961,8 +3964,8 @@ void Mod_INTERQUAKEMODEL_Load(dp_model_t *mod, void *buffer, void *bufferend)
        for (i = 0;i < loadmodel->num_textures;i++)
        {
                if (loadmodel->data_textures[i].basematerialflags & (MATERIALFLAG_SKY))
-                       mod->DrawSky = R_Q1BSP_DrawSky;
+                       mod->DrawSky = R_Mod_DrawSky;
                if (loadmodel->data_textures[i].basematerialflags & (MATERIALFLAG_WATERSHADER | MATERIALFLAG_REFRACTION | MATERIALFLAG_REFLECTION | MATERIALFLAG_CAMERA))
-                       mod->DrawAddWaterPlanes = R_Q1BSP_DrawAddWaterPlanes;
+                       mod->DrawAddWaterPlanes = R_Mod_DrawAddWaterPlanes;
        }
 }