- float ilerp, ilerp127, lerp127, scalex1, scalex2, translatex, scaley1, scaley2, translatey, scalez1, scalez2, translatez;
- ilerp = 1 - lerp;
- ilerp127 = ilerp * (1.0 / 127.0);
- lerp127 = lerp * (1.0 / 127.0);
- // calculate combined interpolation variables
- scalex1 = scale1[0] * ilerp;scalex2 = scale2[0] * lerp;translatex = translate1[0] * ilerp + translate2[0] * lerp;
- scaley1 = scale1[1] * ilerp;scaley2 = scale2[1] * lerp;translatey = translate1[1] * ilerp + translate2[1] * lerp;
- scalez1 = scale1[2] * ilerp;scalez2 = scale2[2] * lerp;translatez = translate1[2] * ilerp + translate2[2] * lerp;
- // generate vertices
- for (i = 0;i < vertcount;i++)
+ VectorScale(fscale2, lerp2, scale2);
+ if (lerp3)
+ {
+ VectorScale(fscale3, lerp3, scale3);
+ if (lerp4)
+ {
+ VectorScale(fscale4, lerp4, scale4);
+ translate[0] = translate1[0] * lerp1 + translate2[0] * lerp2 + translate3[0] * lerp3 + translate4[0] * lerp4;
+ translate[1] = translate1[1] * lerp1 + translate2[1] * lerp2 + translate3[1] * lerp3 + translate4[1] * lerp4;
+ translate[2] = translate1[2] * lerp1 + translate2[2] * lerp2 + translate3[2] * lerp3 + translate4[2] * lerp4;
+ // generate vertices
+ for (i = 0;i < vertcount;i++)
+ {
+ av[0] = verts1->v[0] * scale1[0] + verts2->v[0] * scale2[0] + verts3->v[0] * scale3[0] + verts4->v[0] * scale4[0] + translate[0];
+ av[1] = verts1->v[1] * scale1[1] + verts2->v[1] * scale2[1] + verts3->v[1] * scale3[1] + verts4->v[1] * scale4[1] + translate[1];
+ av[2] = verts1->v[2] * scale1[2] + verts2->v[2] * scale2[2] + verts3->v[2] * scale3[2] + verts4->v[2] * scale4[2] + translate[2];
+ n1 = m_bytenormals[verts1->lightnormalindex];
+ n2 = m_bytenormals[verts2->lightnormalindex];
+ n3 = m_bytenormals[verts3->lightnormalindex];
+ n4 = m_bytenormals[verts4->lightnormalindex];
+ avn[0] = n1[0] * lerp1 + n2[0] * lerp2 + n3[0] * lerp3 + n4[0] * lerp4;
+ avn[1] = n1[1] * lerp1 + n2[1] * lerp2 + n3[1] * lerp3 + n4[1] * lerp4;
+ avn[2] = n1[2] * lerp1 + n2[2] * lerp2 + n3[2] * lerp3 + n4[2] * lerp4;
+ av += 4;
+ avn += 4;
+ verts1++;verts2++;verts3++;verts4++;
+ }
+ }
+ else
+ {
+ translate[0] = translate1[0] * lerp1 + translate2[0] * lerp2 + translate3[0] * lerp3;
+ translate[1] = translate1[1] * lerp1 + translate2[1] * lerp2 + translate3[1] * lerp3;
+ translate[2] = translate1[2] * lerp1 + translate2[2] * lerp2 + translate3[2] * lerp3;
+ // generate vertices
+ for (i = 0;i < vertcount;i++)
+ {
+ av[0] = verts1->v[0] * scale1[0] + verts2->v[0] * scale2[0] + verts3->v[0] * scale3[0] + translate[0];
+ av[1] = verts1->v[1] * scale1[1] + verts2->v[1] * scale2[1] + verts3->v[1] * scale3[1] + translate[1];
+ av[2] = verts1->v[2] * scale1[2] + verts2->v[2] * scale2[2] + verts3->v[2] * scale3[2] + translate[2];
+ n1 = m_bytenormals[verts1->lightnormalindex];
+ n2 = m_bytenormals[verts2->lightnormalindex];
+ n3 = m_bytenormals[verts3->lightnormalindex];
+ avn[0] = n1[0] * lerp1 + n2[0] * lerp2 + n3[0] * lerp3;
+ avn[1] = n1[1] * lerp1 + n2[1] * lerp2 + n3[1] * lerp3;
+ avn[2] = n1[2] * lerp1 + n2[2] * lerp2 + n3[2] * lerp3;
+ av += 4;
+ avn += 4;
+ verts1++;verts2++;verts3++;
+ }
+ }
+ }
+ else