| 859 | |
| 860 | #define VIS_TABLE_RESOLUTION 6 |
| 861 | void DrawRoomVisPnts(object *obj) { |
| 862 | int roomnum = obj->roomnum; |
| 863 | if ((!ROOMNUM_OUTSIDE(roomnum)) && (roomnum != -1) && (Rooms[roomnum].used)) { |
| 864 | room *rp = &Rooms[roomnum]; |
| 865 | int t; |
| 866 | int j; |
| 867 | for (t = 0; t < rp->num_portals; t++) { |
| 868 | face *src_fp = &rp->faces[rp->portals[t].portal_face]; |
| 869 | float src_width, src_height; |
| 870 | vector src_upper_left, src_center; |
| 871 | matrix src_matrix; |
| 872 | vector src_verts[MAX_VERTS_PER_FACE], *src_vertp[MAX_VERTS_PER_FACE]; |
| 873 | for (j = 0; j < src_fp->num_verts; j++) { |
| 874 | src_verts[j] = rp->verts[src_fp->face_verts[j]]; |
| 875 | src_vertp[j] = &src_verts[j]; |
| 876 | } |
| 877 | vector fvec = -src_fp->normal; |
| 878 | vm_VectorToMatrix(&src_matrix, &fvec, NULL, NULL); |
| 879 | ComputeDebugVisFaceUpperLeft(rp, src_fp, &src_upper_left, &src_width, &src_height, &src_center); |
| 880 | |
| 881 | if (src_width > VIS_TABLE_RESOLUTION) { |
| 882 | float num = src_width / VIS_TABLE_RESOLUTION; |
| 883 | src_width = VIS_TABLE_RESOLUTION; |
| 884 | src_upper_left += (src_matrix.rvec * (num / 2)); |
| 885 | src_matrix.rvec *= num; |
| 886 | } |
| 887 | if (src_height > VIS_TABLE_RESOLUTION) { |
| 888 | float num = src_height / VIS_TABLE_RESOLUTION; |
| 889 | src_height = VIS_TABLE_RESOLUTION; |
| 890 | src_upper_left -= (src_matrix.uvec * (num / 2)); |
| 891 | src_matrix.uvec *= num; |
| 892 | } |
| 893 | vector src_vector, src_ybase; |
| 894 | src_ybase = src_upper_left; |
| 895 | for (int sy = 0; sy < src_height; sy++, src_ybase -= src_matrix.uvec) { |
| 896 | src_vector = src_ybase; |
| 897 | for (int sx = 0; sx < src_width; sx++, src_vector += src_matrix.rvec) { |
| 898 | vector src2 = src_vector; |
| 899 | // vector subvec=src_center-src_vector; |
| 900 | // float mag=vm_GetMagnitudeFast (&subvec); |
| 901 | // subvec/=(mag*4); |
| 902 | // src2+=subvec; |
| 903 | if ((check_point_to_face(&src2, &src_fp->normal, src_fp->num_verts, src_vertp))) { |
| 904 | DrawColoredDisk(&src2, 1.0f, 0.0f, 0.0f, .1f, .7f, 0.25f, 1); |
| 905 | continue; |
| 906 | } |
| 907 | |
| 908 | src2 += 0.1f * rp->faces[rp->portals[t].portal_face].normal; |
| 909 | if (!fvi_QuickRoomCheck(&src2, rp, false) && !fvi_QuickRoomCheck(&src2, rp, true)) { |
| 910 | DrawColoredDisk(&src2, 0.0f, 1.0f, 0.0f, .1f, .7f, 0.25f, 1); |
| 911 | continue; |
| 912 | } |
| 913 | DrawColoredDisk(&src2, 0.0f, 0.0f, 1.0f, .1f, .7f, 0.25f, 1); |
| 914 | } |
| 915 | } |
| 916 | } |
| 917 | } |
| 918 | } |
no test coverage detected