MTS: only used in this file. Hacked for some initial testing
| 3213 | // MTS: only used in this file. |
| 3214 | // Hacked for some initial testing |
| 3215 | bool BBoxPlaneIntersection(bool fast_exit, vector *collision_point, vector *collision_normal, object *obj, |
| 3216 | vector *new_pos, int nv, vector **vertex_ptr_list, vector *face_normal, matrix *orient, |
| 3217 | vector *rotvel, vector *velocity) { |
| 3218 | vector plane_pnt; |
| 3219 | vector verts[12]; |
| 3220 | poly_model *pm = &Poly_models[obj->rtype.pobj_info.model_num]; |
| 3221 | int i; |
| 3222 | vector rel[32]; |
| 3223 | float dot[32]; |
| 3224 | bool collidable[32]; |
| 3225 | |
| 3226 | int num_int_box = 0; |
| 3227 | vector int_points_box[12]; |
| 3228 | |
| 3229 | verts[0] = (orient->rvec * pm->mins.x) + (orient->uvec * pm->maxs.y) + (orient->fvec * pm->mins.z); |
| 3230 | |
| 3231 | verts[1] = (orient->rvec * pm->mins.x) + (orient->uvec * pm->mins.y) + (orient->fvec * pm->mins.z); |
| 3232 | |
| 3233 | verts[2] = (orient->rvec * pm->maxs.x) + (orient->uvec * pm->mins.y) + (orient->fvec * pm->mins.z); |
| 3234 | |
| 3235 | verts[3] = (orient->rvec * pm->maxs.x) + (orient->uvec * pm->maxs.y) + (orient->fvec * pm->mins.z); |
| 3236 | |
| 3237 | verts[4] = (orient->rvec * pm->maxs.x) + (orient->uvec * pm->maxs.y) + (orient->fvec * pm->maxs.z); |
| 3238 | |
| 3239 | verts[5] = (orient->rvec * pm->maxs.x) + (orient->uvec * pm->mins.y) + (orient->fvec * pm->maxs.z); |
| 3240 | |
| 3241 | verts[6] = (orient->rvec * pm->mins.x) + (orient->uvec * pm->mins.y) + (orient->fvec * pm->maxs.z); |
| 3242 | |
| 3243 | verts[7] = (orient->rvec * pm->mins.x) + (orient->uvec * pm->maxs.y) + (orient->fvec * pm->maxs.z); |
| 3244 | |
| 3245 | for (i = 0; i < 8; i++) { |
| 3246 | verts[i] += *new_pos; |
| 3247 | } |
| 3248 | |
| 3249 | vector xxx_normal = Zero_vector; |
| 3250 | xxx_normal.y = 1.0f; |
| 3251 | |
| 3252 | for (i = 0; i < 8; i++) { |
| 3253 | rel[i] = verts[i]; |
| 3254 | dot[i] = rel[i] * (xxx_normal); |
| 3255 | } |
| 3256 | |
| 3257 | for (i = 0; i < 8; i++) { |
| 3258 | collidable[i] = |
| 3259 | true; //(PointSpeed(&Objects[fvi_query_ptr->thisobjnum], &verts[i], orient, rotvel, velocity).y < 0.0); |
| 3260 | } |
| 3261 | |
| 3262 | // Get Ground intersection points |
| 3263 | for (i = 0; i < 12; i++) { |
| 3264 | vector movement; |
| 3265 | bool found; |
| 3266 | float nmovement; |
| 3267 | |
| 3268 | found = false; |
| 3269 | |
| 3270 | if (dot[bbox_edges[i][0]] > 0.0f && dot[bbox_edges[i][1]] < 0.0f && collidable[bbox_edges[i][1]]) { |
| 3271 | movement = verts[bbox_edges[i][1]] - verts[bbox_edges[i][0]]; |
| 3272 |
no test coverage detected