float lerp1, lerp2, lerp3, lerp4;
const float *vertsbase, *verts1, *verts2, *verts3, *verts4;
// vertex morph
float lerp1, lerp2, lerp3, lerp4;
const float *vertsbase, *verts1, *verts2, *verts3, *verts4;
// vertex morph
vertsbase = mesh->data_morphvertex3f;
vertcount = mesh->num_vertices;
verts1 = vertsbase + frameblend[0].frame * vertcount * 3;
vertsbase = mesh->data_morphvertex3f;
vertcount = mesh->num_vertices;
verts1 = vertsbase + frameblend[0].frame * vertcount * 3;
static void Mod_MDLMD2MD3_TraceBox(model_t *model, int frame, trace_t *trace, const vec3_t boxstartmins, const vec3_t boxstartmaxs, const vec3_t boxendmins, const vec3_t boxendmaxs, int hitsupercontentsmask)
{
static void Mod_MDLMD2MD3_TraceBox(model_t *model, int frame, trace_t *trace, const vec3_t boxstartmins, const vec3_t boxstartmaxs, const vec3_t boxendmins, const vec3_t boxendmaxs, int hitsupercontentsmask)
{
thisbrush_start = Collision_BrushForBox(&startmatrix, boxstartmins, boxstartmaxs);
thisbrush_end = Collision_BrushForBox(&endmatrix, boxendmins, boxendmaxs);
}
thisbrush_start = Collision_BrushForBox(&startmatrix, boxstartmins, boxstartmaxs);
thisbrush_end = Collision_BrushForBox(&endmatrix, boxendmins, boxendmaxs);
}
for (i = 0, surface = model->data_surfaces;i < model->num_surfaces;i++, surface++)
{
mesh = surface->groupmesh;
for (i = 0, surface = model->data_surfaces;i < model->num_surfaces;i++, surface++)
{
mesh = surface->groupmesh;
- framenum = frame;
- if (framenum < 0 || framenum > mesh->num_morphframes)
- framenum = 0;
- if (mesh->data_morphvertex3f)
- vertex3f = mesh->data_morphvertex3f + framenum * mesh->num_vertices * 3;
- else
- {
- vertex3f = varray_vertex3f;
- continue; // FIXME!!! this needs to handle skeletal!
- }
+ Mod_Alias_GetMesh_Vertex3f(model, frameblend, mesh, varray_vertex3f);
- Collision_TraceLineTriangleMeshFloat(trace, boxstartmins, boxendmins, mesh->num_triangles, mesh->data_element3i, vertex3f, SUPERCONTENTS_SOLID, segmentmins, segmentmaxs);
+ Collision_TraceLineTriangleMeshFloat(trace, boxstartmins, boxendmins, mesh->num_triangles, mesh->data_element3i, varray_vertex3f, SUPERCONTENTS_SOLID, segmentmins, segmentmaxs);
- Collision_TraceBrushTriangleMeshFloat(trace, thisbrush_start, thisbrush_end, mesh->num_triangles, mesh->data_element3i, vertex3f, SUPERCONTENTS_SOLID, segmentmins, segmentmaxs);
+ Collision_TraceBrushTriangleMeshFloat(trace, thisbrush_start, thisbrush_end, mesh->num_triangles, mesh->data_element3i, varray_vertex3f, SUPERCONTENTS_SOLID, segmentmins, segmentmaxs);
loadmodel->skinscenes = Mem_Alloc(loadmodel->mempool, loadmodel->numskins * sizeof(animscene_t));
loadmodel->num_textures = loadmodel->num_surfaces;
loadmodel->skinscenes = Mem_Alloc(loadmodel->mempool, loadmodel->numskins * sizeof(animscene_t));
loadmodel->num_textures = loadmodel->num_surfaces;
if (skinfiles)
{
Mod_BuildAliasSkinsFromSkinFiles(loadmodel->data_textures, skinfiles, "default", "");
if (skinfiles)
{
Mod_BuildAliasSkinsFromSkinFiles(loadmodel->data_textures, skinfiles, "default", "");
loadmodel->Draw = R_Q1BSP_Draw;
loadmodel->DrawShadowVolume = R_Q1BSP_DrawShadowVolume;
loadmodel->DrawLight = R_Q1BSP_DrawLight;
loadmodel->Draw = R_Q1BSP_Draw;
loadmodel->DrawShadowVolume = R_Q1BSP_DrawShadowVolume;
loadmodel->DrawLight = R_Q1BSP_DrawLight;
|| (unsigned int)outelements[1] >= (unsigned int)pheader->numverts
|| (unsigned int)outelements[2] >= (unsigned int)pheader->numverts)
Host_Error("%s corrupt renderlist (out of bounds index)\n", loadmodel->name);
|| (unsigned int)outelements[1] >= (unsigned int)pheader->numverts
|| (unsigned int)outelements[2] >= (unsigned int)pheader->numverts)
Host_Error("%s corrupt renderlist (out of bounds index)\n", loadmodel->name);
if (remapvertices[j] >= 0)
mesh->num_vertexboneweights += vertbonecounts[remapvertices[j]];
mesh->data_vertexboneweights = Mem_Alloc(loadmodel->mempool, mesh->num_vertexboneweights * sizeof(surfmeshvertexboneweight_t));
mesh->num_vertexboneweights = 0;
// note this vertexboneweight ordering requires that the remapvertices array is sequential numbers (separated by -1 values for omitted vertices)
l = 0;
if (remapvertices[j] >= 0)
mesh->num_vertexboneweights += vertbonecounts[remapvertices[j]];
mesh->data_vertexboneweights = Mem_Alloc(loadmodel->mempool, mesh->num_vertexboneweights * sizeof(surfmeshvertexboneweight_t));
mesh->num_vertexboneweights = 0;
// note this vertexboneweight ordering requires that the remapvertices array is sequential numbers (separated by -1 values for omitted vertices)
l = 0;
-
- Mod_ValidateElements(mesh->data_element3i, mesh->num_triangles, mesh->num_vertices, __FILE__, __LINE__);
- Mod_BuildTriangleNeighbors(mesh->data_neighbor3i, mesh->data_element3i, mesh->num_triangles);
- Mod_Alias_Mesh_CompileFrameZero(mesh);
-
+ shadername = (char *) (pheader->lump_shaders.start + pbase) + i * 32;
// since zym models do not have named sections, reuse their shader
// name as the section name
// since zym models do not have named sections, reuse their shader
// name as the section name
if (shadername[0])
Mod_BuildAliasSkinsFromSkinFiles(loadmodel->data_textures + i, skinfiles, shadername, shadername);
else
for (j = 0;j < loadmodel->numskins;j++)
Mod_BuildAliasSkinFromSkinFrame(loadmodel->data_textures + i + j * loadmodel->num_surfaces, NULL);
if (shadername[0])
Mod_BuildAliasSkinsFromSkinFiles(loadmodel->data_textures + i, skinfiles, shadername, shadername);
else
for (j = 0;j < loadmodel->numskins;j++)
Mod_BuildAliasSkinFromSkinFrame(loadmodel->data_textures + i + j * loadmodel->num_surfaces, NULL);
+ Mod_ValidateElements(mesh->data_element3i, mesh->num_triangles, mesh->num_vertices, __FILE__, __LINE__);
+ Mod_BuildTriangleNeighbors(mesh->data_neighbor3i, mesh->data_element3i, mesh->num_triangles);
+ Mod_Alias_Mesh_CompileFrameZero(mesh);
+
surface = loadmodel->data_surfaces + i;
surface->groupmesh = mesh;
surface->texture = loadmodel->data_textures + i;
surface = loadmodel->data_surfaces + i;
surface->groupmesh = mesh;
surface->texture = loadmodel->data_textures + i;