| 304 | } |
| 305 | |
| 306 | void CollideSubmodel(poly_model *pm, bsp_info *sm, uint32_t f_render_sub) { |
| 307 | // Don't collide with door housings (That is the 'room' portion of the door) |
| 308 | if ((sm->flags & SOF_SHELL) || (sm->flags & SOF_FRONTFACE)) |
| 309 | return; |
| 310 | |
| 311 | StartPolyModelPosInstance(&sm->mod_pos); |
| 312 | vector temp_vec = sm->mod_pos + sm->offset; |
| 313 | newstyle_StartInstanceAngles(&temp_vec, &sm->angs); |
| 314 | |
| 315 | // Check my bit to see if I get collided with. :) |
| 316 | if (f_render_sub & (0x00000001 << (sm - pm->submodel))) |
| 317 | CollideSubmodelFacesUnsorted(pm, sm); |
| 318 | |
| 319 | for (int i = 0; i < sm->num_children; i++) { |
| 320 | CollideSubmodel(pm, &pm->submodel[sm->children[i]], f_render_sub); |
| 321 | } |
| 322 | |
| 323 | newstyle_DoneInstance(); |
| 324 | DonePolyModelPosInstance(); |
| 325 | } |
| 326 | |
| 327 | void CollidePolygonModel(vector *pos, matrix *orient, int model_num, float *normalized_time, uint32_t f_render_sub) { |
| 328 | poly_model *po; |
no test coverage detected