MCPcopy Create free account
hub / github.com/DescentDevelopers/Descent3 / RenderFloatingTrig

Function RenderFloatingTrig

Descent3/render.cpp:1198–1238  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1196#define STEPSIZE .01f
1197#define STEPSIZE_MIN .1f
1198void RenderFloatingTrig(room *rp, face *fp) {
1199 if (!Render_floating_triggers)
1200 return;
1201 vector leftvec, rightvec;
1202 vector left, right;
1203 vector left_step, right_step;
1204 int n_steps, i, j;
1205 g3Point p3;
1206 float stepsize;
1207 left = rp->verts[fp->face_verts[0]];
1208 right = rp->verts[fp->face_verts[1]];
1209 g3_RotatePoint(&p3, &left);
1210 stepsize = STEPSIZE * p3.p3_z;
1211 if (stepsize < STEPSIZE_MIN)
1212 stepsize = STEPSIZE_MIN;
1213 leftvec = rp->verts[fp->face_verts[3]] - rp->verts[fp->face_verts[0]];
1214 rightvec = rp->verts[fp->face_verts[2]] - rp->verts[fp->face_verts[1]];
1215 n_steps = (vm_GetMagnitude(&leftvec) / stepsize + 0.5) + 1;
1216 left_step = leftvec / n_steps;
1217 right_step = rightvec / n_steps;
1218 for (i = 0; i < n_steps; i++) {
1219 vector p;
1220 g3Point p3;
1221 vector crossvec, cross_step;
1222 int n_crosssteps;
1223
1224 crossvec = right - left;
1225 n_crosssteps = (vm_GetMagnitude(&crossvec) / stepsize + 0.5) + 1;
1226 cross_step = crossvec / n_steps;
1227 p = left;
1228 for (j = 0; j < n_crosssteps; j++) {
1229 if (g3_RotatePoint(&p3, &p) == 0) { // on screen
1230 g3_ProjectPoint(&p3);
1231 rend_SetPixel(GR_RGB(255, 100, 100), p3.p3_sx, p3.p3_sy);
1232 }
1233 p += cross_step;
1234 }
1235 left += left_step;
1236 right += right_step;
1237 }
1238}
1239#endif // ifdef EDITOR
1240void RenderSpecularFaces(room *rp) {
1241 ASSERT(Num_specular_faces_to_render > 0);

Callers 1

RenderFaceFunction · 0.85

Calls 5

g3_RotatePointFunction · 0.85
g3_ProjectPointFunction · 0.85
vm_GetMagnitudeFunction · 0.50
rend_SetPixelFunction · 0.50
GR_RGBFunction · 0.50

Tested by

no test coverage detected