- int i;
- vec3_t point, matrix_x, matrix_y, matrix_z;
- float *av, *avn;
- av = aliasvert;
- avn = aliasvertnorm;
- matrix_x[0] = softwaretransform_x[0] * softwaretransform_scale;
- matrix_x[1] = softwaretransform_y[0] * softwaretransform_scale;
- matrix_x[2] = softwaretransform_z[0] * softwaretransform_scale;
- matrix_y[0] = softwaretransform_x[1] * softwaretransform_scale;
- matrix_y[1] = softwaretransform_y[1] * softwaretransform_scale;
- matrix_y[2] = softwaretransform_z[1] * softwaretransform_scale;
- matrix_z[0] = softwaretransform_x[2] * softwaretransform_scale;
- matrix_z[1] = softwaretransform_y[2] * softwaretransform_scale;
- matrix_z[2] = softwaretransform_z[2] * softwaretransform_scale;
- for (i = 0;i < vertcount;i++)
- {
- // rotate, scale, and translate the vertex locations
- VectorCopy(av, point);
- av[0] = DotProduct(point, matrix_x) + softwaretransform_offset[0];
- av[1] = DotProduct(point, matrix_y) + softwaretransform_offset[1];
- av[2] = DotProduct(point, matrix_z) + softwaretransform_offset[2];
- // rotate the normals
- VectorCopy(avn, point);
- avn[0] = point[0] * softwaretransform_x[0] + point[1] * softwaretransform_y[0] + point[2] * softwaretransform_z[0];
- avn[1] = point[0] * softwaretransform_x[1] + point[1] * softwaretransform_y[1] + point[2] * softwaretransform_z[1];
- avn[2] = point[0] * softwaretransform_x[2] + point[1] * softwaretransform_y[2] + point[2] * softwaretransform_z[2];
- av += 3;
- avn += 3;
- }
-}
-
-void R_AliasLerpVerts(int vertcount,
- float lerp1, trivertx_t *verts1, vec3_t fscale1, vec3_t translate1,
- float lerp2, trivertx_t *verts2, vec3_t fscale2, vec3_t translate2,
- float lerp3, trivertx_t *verts3, vec3_t fscale3, vec3_t translate3,
- float lerp4, trivertx_t *verts4, vec3_t fscale4, vec3_t translate4)
-{
- int i;
- vec3_t scale1, scale2, scale3, scale4, translate;
- float *n1, *n2, *n3, *n4;
- float *av, *avn;
- av = aliasvert;
- avn = aliasvertnorm;
- VectorScale(fscale1, lerp1, scale1);
- if (lerp2)
+ int i, vertcount;
+ float lerp1, lerp2, lerp3, lerp4;
+ const aliasvertex_t *verts1, *verts2, *verts3, *verts4;
+
+ if (vertex3f == NULL)
+ Host_Error("R_Model_Alias_GetMesh_Vertex3f: vertices == NULL.\n");
+ if (svector3f != NULL && (tvector3f == NULL || normal3f == NULL))
+ Host_Error("R_Model_Alias_GetMesh_Vertex3f: svectors requires tvectors and normals.\n");
+ if (tvector3f != NULL && (svector3f == NULL || normal3f == NULL))
+ Host_Error("R_Model_Alias_GetMesh_Vertex3f: tvectors requires svectors and normals.\n");
+
+ vertcount = mesh->num_vertices;
+ verts1 = mesh->data_aliasvertex + ent->frameblend[0].frame * vertcount;
+ lerp1 = ent->frameblend[0].lerp;
+ if (ent->frameblend[1].lerp)